⌈⌋ ⎇ branch:  Bitrhythm


Hex Artifact Content

Artifact 973a39dc6240972cd5ce9af876b8e882b71b7f6116d84f3d24b2dac4e977d81c:


0000: 2f 2a 20 52 69 6f 74 20 76 33 2e 31 33 2e 32 2c  /* Riot v3.13.2,
0010: 20 40 6c 69 63 65 6e 73 65 20 4d 49 54 20 2a 2f   @license MIT */
0020: 0a 28 66 75 6e 63 74 69 6f 6e 20 28 67 6c 6f 62  .(function (glob
0030: 61 6c 2c 20 66 61 63 74 6f 72 79 29 20 7b 0a 20  al, factory) {. 
0040: 20 74 79 70 65 6f 66 20 65 78 70 6f 72 74 73 20   typeof exports 
0050: 3d 3d 3d 20 27 6f 62 6a 65 63 74 27 20 26 26 20  === 'object' && 
0060: 74 79 70 65 6f 66 20 6d 6f 64 75 6c 65 20 21 3d  typeof module !=
0070: 3d 20 27 75 6e 64 65 66 69 6e 65 64 27 20 3f 20  = 'undefined' ? 
0080: 66 61 63 74 6f 72 79 28 65 78 70 6f 72 74 73 29  factory(exports)
0090: 20 3a 0a 20 20 74 79 70 65 6f 66 20 64 65 66 69   :.  typeof defi
00a0: 6e 65 20 3d 3d 3d 20 27 66 75 6e 63 74 69 6f 6e  ne === 'function
00b0: 27 20 26 26 20 64 65 66 69 6e 65 2e 61 6d 64 20  ' && define.amd 
00c0: 3f 20 64 65 66 69 6e 65 28 5b 27 65 78 70 6f 72  ? define(['expor
00d0: 74 73 27 5d 2c 20 66 61 63 74 6f 72 79 29 20 3a  ts'], factory) :
00e0: 0a 20 20 28 66 61 63 74 6f 72 79 28 28 67 6c 6f  .  (factory((glo
00f0: 62 61 6c 2e 72 69 6f 74 20 3d 20 7b 7d 29 29 29  bal.riot = {})))
0100: 3b 0a 7d 28 74 68 69 73 2c 20 28 66 75 6e 63 74  ;.}(this, (funct
0110: 69 6f 6e 20 28 65 78 70 6f 72 74 73 29 20 7b 20  ion (exports) { 
0120: 27 75 73 65 20 73 74 72 69 63 74 27 3b 0a 0a 20  'use strict';.. 
0130: 20 2f 2a 2a 0a 20 20 20 2a 20 53 68 6f 72 74 65   /**.   * Shorte
0140: 72 20 61 6e 64 20 66 61 73 74 20 77 61 79 20 74  r and fast way t
0150: 6f 20 73 65 6c 65 63 74 20 61 20 73 69 6e 67 6c  o select a singl
0160: 65 20 6e 6f 64 65 20 69 6e 20 74 68 65 20 44 4f  e node in the DO
0170: 4d 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20  M.   * @param   
0180: 7b 20 53 74 72 69 6e 67 20 7d 20 73 65 6c 65 63  { String } selec
0190: 74 6f 72 20 2d 20 75 6e 69 71 75 65 20 64 6f 6d  tor - unique dom
01a0: 20 73 65 6c 65 63 74 6f 72 0a 20 20 20 2a 20 40   selector.   * @
01b0: 70 61 72 61 6d 20 20 20 7b 20 4f 62 6a 65 63 74  param   { Object
01c0: 20 7d 20 63 74 78 20 2d 20 44 4f 4d 20 6e 6f 64   } ctx - DOM nod
01d0: 65 20 77 68 65 72 65 20 74 68 65 20 74 61 72 67  e where the targ
01e0: 65 74 20 6f 66 20 6f 75 72 20 73 65 61 72 63 68  et of our search
01f0: 20 77 69 6c 6c 20 69 73 20 6c 6f 63 61 74 65 64   will is located
0200: 0a 20 20 20 2a 20 40 72 65 74 75 72 6e 73 20 7b  .   * @returns {
0210: 20 4f 62 6a 65 63 74 20 7d 20 64 6f 6d 20 6e 6f   Object } dom no
0220: 64 65 20 66 6f 75 6e 64 0a 20 20 20 2a 2f 0a 20  de found.   */. 
0230: 20 66 75 6e 63 74 69 6f 6e 20 24 28 73 65 6c 65   function $(sele
0240: 63 74 6f 72 2c 20 63 74 78 29 20 7b 0a 20 20 20  ctor, ctx) {.   
0250: 20 72 65 74 75 72 6e 20 28 63 74 78 20 7c 7c 20   return (ctx || 
0260: 64 6f 63 75 6d 65 6e 74 29 2e 71 75 65 72 79 53  document).queryS
0270: 65 6c 65 63 74 6f 72 28 73 65 6c 65 63 74 6f 72  elector(selector
0280: 29 0a 20 20 7d 0a 0a 20 20 76 61 72 0a 20 20 20  ).  }..  var.   
0290: 20 2f 2f 20 62 65 20 61 77 61 72 65 2c 20 69 6e   // be aware, in
02a0: 74 65 72 6e 61 6c 20 75 73 61 67 65 0a 20 20 20  ternal usage.   
02b0: 20 2f 2f 20 41 54 54 45 4e 54 49 4f 4e 3a 20 70   // ATTENTION: p
02c0: 72 65 66 69 78 20 74 68 65 20 67 6c 6f 62 61 6c  refix the global
02d0: 20 64 79 6e 61 6d 69 63 20 76 61 72 69 61 62 6c   dynamic variabl
02e0: 65 73 20 77 69 74 68 20 60 5f 5f 60 0a 20 20 20  es with `__`.   
02f0: 20 2f 2f 20 74 61 67 73 20 69 6e 73 74 61 6e 63   // tags instanc
0300: 65 73 20 63 61 63 68 65 0a 20 20 20 20 5f 5f 54  es cache.    __T
0310: 41 47 53 5f 43 41 43 48 45 20 3d 20 5b 5d 2c 0a  AGS_CACHE = [],.
0320: 20 20 20 20 2f 2f 20 74 61 67 73 20 69 6d 70 6c      // tags impl
0330: 65 6d 65 6e 74 61 74 69 6f 6e 20 63 61 63 68 65  ementation cache
0340: 0a 20 20 20 20 5f 5f 54 41 47 5f 49 4d 50 4c 20  .    __TAG_IMPL 
0350: 3d 20 7b 7d 2c 0a 20 20 20 20 59 49 45 4c 44 5f  = {},.    YIELD_
0360: 54 41 47 20 3d 20 27 79 69 65 6c 64 27 2c 0a 0a  TAG = 'yield',..
0370: 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 43      /**.     * C
0380: 6f 6e 73 74 0a 20 20 20 20 20 2a 2f 0a 20 20 20  onst.     */.   
0390: 20 47 4c 4f 42 41 4c 5f 4d 49 58 49 4e 20 3d 20   GLOBAL_MIXIN = 
03a0: 27 5f 5f 67 6c 6f 62 61 6c 5f 6d 69 78 69 6e 27  '__global_mixin'
03b0: 2c 0a 0a 20 20 20 20 2f 2f 20 72 69 6f 74 20 73  ,..    // riot s
03c0: 70 65 63 69 66 69 63 20 70 72 65 66 69 78 65 73  pecific prefixes
03d0: 20 6f 72 20 61 74 74 72 69 62 75 74 65 73 0a 20   or attributes. 
03e0: 20 20 20 41 54 54 52 53 5f 50 52 45 46 49 58 20     ATTRS_PREFIX 
03f0: 3d 20 27 72 69 6f 74 2d 27 2c 0a 0a 20 20 20 20  = 'riot-',..    
0400: 2f 2f 20 52 69 6f 74 20 44 69 72 65 63 74 69 76  // Riot Directiv
0410: 65 73 0a 20 20 20 20 52 45 46 5f 44 49 52 45 43  es.    REF_DIREC
0420: 54 49 56 45 53 20 3d 20 5b 27 72 65 66 27 2c 20  TIVES = ['ref', 
0430: 27 64 61 74 61 2d 72 65 66 27 5d 2c 0a 20 20 20  'data-ref'],.   
0440: 20 49 53 5f 44 49 52 45 43 54 49 56 45 20 3d 20   IS_DIRECTIVE = 
0450: 27 64 61 74 61 2d 69 73 27 2c 0a 20 20 20 20 43  'data-is',.    C
0460: 4f 4e 44 49 54 49 4f 4e 41 4c 5f 44 49 52 45 43  ONDITIONAL_DIREC
0470: 54 49 56 45 20 3d 20 27 69 66 27 2c 0a 20 20 20  TIVE = 'if',.   
0480: 20 4c 4f 4f 50 5f 44 49 52 45 43 54 49 56 45 20   LOOP_DIRECTIVE 
0490: 3d 20 27 65 61 63 68 27 2c 0a 20 20 20 20 4c 4f  = 'each',.    LO
04a0: 4f 50 5f 4e 4f 5f 52 45 4f 52 44 45 52 5f 44 49  OP_NO_REORDER_DI
04b0: 52 45 43 54 49 56 45 20 3d 20 27 6e 6f 2d 72 65  RECTIVE = 'no-re
04c0: 6f 72 64 65 72 27 2c 0a 20 20 20 20 53 48 4f 57  order',.    SHOW
04d0: 5f 44 49 52 45 43 54 49 56 45 20 3d 20 27 73 68  _DIRECTIVE = 'sh
04e0: 6f 77 27 2c 0a 20 20 20 20 48 49 44 45 5f 44 49  ow',.    HIDE_DI
04f0: 52 45 43 54 49 56 45 20 3d 20 27 68 69 64 65 27  RECTIVE = 'hide'
0500: 2c 0a 20 20 20 20 4b 45 59 5f 44 49 52 45 43 54  ,.    KEY_DIRECT
0510: 49 56 45 20 3d 20 27 6b 65 79 27 2c 0a 20 20 20  IVE = 'key',.   
0520: 20 52 49 4f 54 5f 45 56 45 4e 54 53 5f 4b 45 59   RIOT_EVENTS_KEY
0530: 20 3d 20 27 5f 5f 72 69 6f 74 2d 65 76 65 6e 74   = '__riot-event
0540: 73 5f 5f 27 2c 0a 0a 20 20 20 20 2f 2f 20 66 6f  s__',..    // fo
0550: 72 20 74 79 70 65 6f 66 20 3d 3d 20 27 27 20 63  r typeof == '' c
0560: 6f 6d 70 61 72 69 73 6f 6e 73 0a 20 20 20 20 54  omparisons.    T
0570: 5f 53 54 52 49 4e 47 20 3d 20 27 73 74 72 69 6e  _STRING = 'strin
0580: 67 27 2c 0a 20 20 20 20 54 5f 4f 42 4a 45 43 54  g',.    T_OBJECT
0590: 20 3d 20 27 6f 62 6a 65 63 74 27 2c 0a 20 20 20   = 'object',.   
05a0: 20 54 5f 55 4e 44 45 46 20 20 3d 20 27 75 6e 64   T_UNDEF  = 'und
05b0: 65 66 69 6e 65 64 27 2c 0a 20 20 20 20 54 5f 46  efined',.    T_F
05c0: 55 4e 43 54 49 4f 4e 20 3d 20 27 66 75 6e 63 74  UNCTION = 'funct
05d0: 69 6f 6e 27 2c 0a 0a 20 20 20 20 58 4c 49 4e 4b  ion',..    XLINK
05e0: 5f 4e 53 20 3d 20 27 68 74 74 70 3a 2f 2f 77 77  _NS = 'http://ww
05f0: 77 2e 77 33 2e 6f 72 67 2f 31 39 39 39 2f 78 6c  w.w3.org/1999/xl
0600: 69 6e 6b 27 2c 0a 20 20 20 20 53 56 47 5f 4e 53  ink',.    SVG_NS
0610: 20 3d 20 27 68 74 74 70 3a 2f 2f 77 77 77 2e 77   = 'http://www.w
0620: 33 2e 6f 72 67 2f 32 30 30 30 2f 73 76 67 27 2c  3.org/2000/svg',
0630: 0a 20 20 20 20 58 4c 49 4e 4b 5f 52 45 47 45 58  .    XLINK_REGEX
0640: 20 3d 20 2f 5e 78 6c 69 6e 6b 3a 28 5c 77 2b 29   = /^xlink:(\w+)
0650: 2f 2c 0a 0a 20 20 20 20 57 49 4e 20 3d 20 74 79  /,..    WIN = ty
0660: 70 65 6f 66 20 77 69 6e 64 6f 77 20 3d 3d 3d 20  peof window === 
0670: 54 5f 55 4e 44 45 46 20 3f 20 2f 2a 20 69 73 74  T_UNDEF ? /* ist
0680: 61 6e 62 75 6c 20 69 67 6e 6f 72 65 20 6e 65 78  anbul ignore nex
0690: 74 20 2a 2f 20 75 6e 64 65 66 69 6e 65 64 20 3a  t */ undefined :
06a0: 20 77 69 6e 64 6f 77 2c 0a 0a 20 20 20 20 2f 2f   window,..    //
06b0: 20 73 70 65 63 69 61 6c 20 6e 61 74 69 76 65 20   special native 
06c0: 74 61 67 73 20 74 68 61 74 20 63 61 6e 6e 6f 74  tags that cannot
06d0: 20 62 65 20 74 72 65 61 74 65 64 20 6c 69 6b 65   be treated like
06e0: 20 74 68 65 20 6f 74 68 65 72 73 0a 20 20 20 20   the others.    
06f0: 52 45 5f 53 50 45 43 49 41 4c 5f 54 41 47 53 20  RE_SPECIAL_TAGS 
0700: 3d 20 2f 5e 28 3f 3a 74 28 3f 3a 62 6f 64 79 7c  = /^(?:t(?:body|
0710: 68 65 61 64 7c 66 6f 6f 74 7c 5b 72 68 64 5d 29  head|foot|[rhd])
0720: 7c 63 61 70 74 69 6f 6e 7c 63 6f 6c 28 3f 3a 67  |caption|col(?:g
0730: 72 6f 75 70 29 3f 7c 6f 70 74 28 3f 3a 69 6f 6e  roup)?|opt(?:ion
0740: 7c 67 72 6f 75 70 29 29 24 2f 2c 0a 20 20 20 20  |group))$/,.    
0750: 52 45 5f 53 50 45 43 49 41 4c 5f 54 41 47 53 5f  RE_SPECIAL_TAGS_
0760: 4e 4f 5f 4f 50 54 49 4f 4e 20 3d 20 2f 5e 28 3f  NO_OPTION = /^(?
0770: 3a 74 28 3f 3a 62 6f 64 79 7c 68 65 61 64 7c 66  :t(?:body|head|f
0780: 6f 6f 74 7c 5b 72 68 64 5d 29 7c 63 61 70 74 69  oot|[rhd])|capti
0790: 6f 6e 7c 63 6f 6c 28 3f 3a 67 72 6f 75 70 29 3f  on|col(?:group)?
07a0: 29 24 2f 2c 0a 20 20 20 20 52 45 5f 45 56 45 4e  )$/,.    RE_EVEN
07b0: 54 53 5f 50 52 45 46 49 58 20 3d 20 2f 5e 6f 6e  TS_PREFIX = /^on
07c0: 2f 2c 0a 20 20 20 20 52 45 5f 48 54 4d 4c 5f 41  /,.    RE_HTML_A
07d0: 54 54 52 53 20 3d 20 2f 28 5b 2d 5c 77 5d 2b 29  TTRS = /([-\w]+)
07e0: 20 3f 3d 20 3f 28 3f 3a 22 28 5b 5e 22 5d 2a 29   ?= ?(?:"([^"]*)
07f0: 7c 27 28 5b 5e 27 5d 2a 29 7c 28 7b 5b 5e 7d 5d  |'([^']*)|({[^}]
0800: 2a 7d 29 29 2f 67 2c 0a 20 20 20 20 2f 2f 20 73  *}))/g,.    // s
0810: 6f 6d 65 20 44 4f 4d 20 61 74 74 72 69 62 75 74  ome DOM attribut
0820: 65 73 20 6d 75 73 74 20 62 65 20 6e 6f 72 6d 61  es must be norma
0830: 6c 69 7a 65 64 0a 20 20 20 20 43 41 53 45 5f 53  lized.    CASE_S
0840: 45 4e 53 49 54 49 56 45 5f 41 54 54 52 49 42 55  ENSITIVE_ATTRIBU
0850: 54 45 53 20 3d 20 7b 0a 20 20 20 20 20 20 27 76  TES = {.      'v
0860: 69 65 77 62 6f 78 27 3a 20 27 76 69 65 77 42 6f  iewbox': 'viewBo
0870: 78 27 2c 0a 20 20 20 20 20 20 27 70 72 65 73 65  x',.      'prese
0880: 72 76 65 61 73 70 65 63 74 72 61 74 69 6f 27 3a  rveaspectratio':
0890: 20 27 70 72 65 73 65 72 76 65 41 73 70 65 63 74   'preserveAspect
08a0: 52 61 74 69 6f 27 0a 20 20 20 20 7d 2c 0a 20 20  Ratio'.    },.  
08b0: 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 4d 61 74    /**.     * Mat
08c0: 63 68 65 73 20 62 6f 6f 6c 65 61 6e 20 48 54 4d  ches boolean HTM
08d0: 4c 20 61 74 74 72 69 62 75 74 65 73 20 69 6e 20  L attributes in 
08e0: 74 68 65 20 72 69 6f 74 20 74 61 67 20 64 65 66  the riot tag def
08f0: 69 6e 69 74 69 6f 6e 2e 0a 20 20 20 20 20 2a 20  inition..     * 
0900: 57 69 74 68 20 61 20 6c 6f 6e 67 20 6c 69 73 74  With a long list
0910: 20 6c 69 6b 65 20 74 68 69 73 2c 20 61 20 72 65   like this, a re
0920: 67 65 78 20 69 73 20 66 61 73 74 65 72 20 74 68  gex is faster th
0930: 61 6e 20 60 5b 5d 2e 69 6e 64 65 78 4f 66 60 20  an `[].indexOf` 
0940: 69 6e 20 6d 6f 73 74 20 62 72 6f 77 73 65 72 73  in most browsers
0950: 2e 0a 20 20 20 20 20 2a 20 40 63 6f 6e 73 74 20  ..     * @const 
0960: 7b 52 65 67 45 78 70 7d 0a 20 20 20 20 20 2a 20  {RegExp}.     * 
0970: 40 73 65 65 20 5b 61 74 74 72 69 62 75 74 65 73  @see [attributes
0980: 2e 6d 64 5d 28 68 74 74 70 73 3a 2f 2f 67 69 74  .md](https://git
0990: 68 75 62 2e 63 6f 6d 2f 72 69 6f 74 2f 63 6f 6d  hub.com/riot/com
09a0: 70 69 6c 65 72 2f 62 6c 6f 62 2f 64 65 76 2f 64  piler/blob/dev/d
09b0: 6f 63 2f 61 74 74 72 69 62 75 74 65 73 2e 6d 64  oc/attributes.md
09c0: 29 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 52 45  ).     */.    RE
09d0: 5f 42 4f 4f 4c 5f 41 54 54 52 53 20 3d 20 2f 5e  _BOOL_ATTRS = /^
09e0: 28 3f 3a 64 69 73 61 62 6c 65 64 7c 63 68 65 63  (?:disabled|chec
09f0: 6b 65 64 7c 72 65 61 64 6f 6e 6c 79 7c 72 65 71  ked|readonly|req
0a00: 75 69 72 65 64 7c 61 6c 6c 6f 77 66 75 6c 6c 73  uired|allowfulls
0a10: 63 72 65 65 6e 7c 61 75 74 6f 28 3f 3a 66 6f 63  creen|auto(?:foc
0a20: 75 73 7c 70 6c 61 79 29 7c 63 6f 6d 70 61 63 74  us|play)|compact
0a30: 7c 63 6f 6e 74 72 6f 6c 73 7c 64 65 66 61 75 6c  |controls|defaul
0a40: 74 7c 66 6f 72 6d 6e 6f 76 61 6c 69 64 61 74 65  t|formnovalidate
0a50: 7c 68 69 64 64 65 6e 7c 69 73 6d 61 70 7c 69 74  |hidden|ismap|it
0a60: 65 6d 73 63 6f 70 65 7c 6c 6f 6f 70 7c 6d 75 6c  emscope|loop|mul
0a70: 74 69 70 6c 65 7c 6d 75 74 65 64 7c 6e 6f 28 3f  tiple|muted|no(?
0a80: 3a 72 65 73 69 7a 65 7c 73 68 61 64 65 7c 76 61  :resize|shade|va
0a90: 6c 69 64 61 74 65 7c 77 72 61 70 29 3f 7c 6f 70  lidate|wrap)?|op
0aa0: 65 6e 7c 72 65 76 65 72 73 65 64 7c 73 65 61 6d  en|reversed|seam
0ab0: 6c 65 73 73 7c 73 65 6c 65 63 74 65 64 7c 73 6f  less|selected|so
0ac0: 72 74 61 62 6c 65 7c 74 72 75 65 73 70 65 65 64  rtable|truespeed
0ad0: 7c 74 79 70 65 6d 75 73 74 6d 61 74 63 68 29 24  |typemustmatch)$
0ae0: 2f 2c 0a 20 20 20 20 2f 2f 20 76 65 72 73 69 6f  /,.    // versio
0af0: 6e 23 20 66 6f 72 20 49 45 20 38 2d 31 31 2c 20  n# for IE 8-11, 
0b00: 30 20 66 6f 72 20 6f 74 68 65 72 73 0a 20 20 20  0 for others.   
0b10: 20 49 45 5f 56 45 52 53 49 4f 4e 20 3d 20 28 57   IE_VERSION = (W
0b20: 49 4e 20 26 26 20 57 49 4e 2e 64 6f 63 75 6d 65  IN && WIN.docume
0b30: 6e 74 20 7c 7c 20 2f 2a 20 69 73 74 61 6e 62 75  nt || /* istanbu
0b40: 6c 20 69 67 6e 6f 72 65 20 6e 65 78 74 20 2a 2f  l ignore next */
0b50: 20 7b 7d 29 2e 64 6f 63 75 6d 65 6e 74 4d 6f 64   {}).documentMod
0b60: 65 20 7c 20 30 3b 0a 0a 20 20 2f 2a 2a 0a 20 20  e | 0;..  /**.  
0b70: 20 2a 20 43 72 65 61 74 65 20 61 20 67 65 6e 65   * Create a gene
0b80: 72 69 63 20 44 4f 4d 20 6e 6f 64 65 0a 20 20 20  ric DOM node.   
0b90: 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 53 74 72  * @param   { Str
0ba0: 69 6e 67 20 7d 20 6e 61 6d 65 20 2d 20 6e 61 6d  ing } name - nam
0bb0: 65 20 6f 66 20 74 68 65 20 44 4f 4d 20 6e 6f 64  e of the DOM nod
0bc0: 65 20 77 65 20 77 61 6e 74 20 74 6f 20 63 72 65  e we want to cre
0bd0: 61 74 65 0a 20 20 20 2a 20 40 72 65 74 75 72 6e  ate.   * @return
0be0: 73 20 7b 20 4f 62 6a 65 63 74 20 7d 20 44 4f 4d  s { Object } DOM
0bf0: 20 6e 6f 64 65 20 6a 75 73 74 20 63 72 65 61 74   node just creat
0c00: 65 64 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74  ed.   */.  funct
0c10: 69 6f 6e 20 6d 61 6b 65 45 6c 65 6d 65 6e 74 28  ion makeElement(
0c20: 6e 61 6d 65 29 20 7b 0a 20 20 20 20 72 65 74 75  name) {.    retu
0c30: 72 6e 20 6e 61 6d 65 20 3d 3d 3d 20 27 73 76 67  rn name === 'svg
0c40: 27 20 3f 20 64 6f 63 75 6d 65 6e 74 2e 63 72 65  ' ? document.cre
0c50: 61 74 65 45 6c 65 6d 65 6e 74 4e 53 28 53 56 47  ateElementNS(SVG
0c60: 5f 4e 53 2c 20 6e 61 6d 65 29 20 3a 20 64 6f 63  _NS, name) : doc
0c70: 75 6d 65 6e 74 2e 63 72 65 61 74 65 45 6c 65 6d  ument.createElem
0c80: 65 6e 74 28 6e 61 6d 65 29 0a 20 20 7d 0a 0a 20  ent(name).  }.. 
0c90: 20 2f 2a 2a 0a 20 20 20 2a 20 53 65 74 20 61 6e   /**.   * Set an
0ca0: 79 20 44 4f 4d 20 61 74 74 72 69 62 75 74 65 0a  y DOM attribute.
0cb0: 20 20 20 2a 20 40 70 61 72 61 6d 20 7b 20 4f 62     * @param { Ob
0cc0: 6a 65 63 74 20 7d 20 64 6f 6d 20 2d 20 44 4f 4d  ject } dom - DOM
0cd0: 20 6e 6f 64 65 20 77 65 20 77 61 6e 74 20 74 6f   node we want to
0ce0: 20 75 70 64 61 74 65 0a 20 20 20 2a 20 40 70 61   update.   * @pa
0cf0: 72 61 6d 20 7b 20 53 74 72 69 6e 67 20 7d 20 6e  ram { String } n
0d00: 61 6d 65 20 2d 20 6e 61 6d 65 20 6f 66 20 74 68  ame - name of th
0d10: 65 20 70 72 6f 70 65 72 74 79 20 77 65 20 77 61  e property we wa
0d20: 6e 74 20 74 6f 20 73 65 74 0a 20 20 20 2a 20 40  nt to set.   * @
0d30: 70 61 72 61 6d 20 7b 20 53 74 72 69 6e 67 20 7d  param { String }
0d40: 20 76 61 6c 20 2d 20 76 61 6c 75 65 20 6f 66 20   val - value of 
0d50: 74 68 65 20 70 72 6f 70 65 72 74 79 20 77 65 20  the property we 
0d60: 77 61 6e 74 20 74 6f 20 73 65 74 0a 20 20 20 2a  want to set.   *
0d70: 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 73 65 74  /.  function set
0d80: 41 74 74 72 69 62 75 74 65 28 64 6f 6d 2c 20 6e  Attribute(dom, n
0d90: 61 6d 65 2c 20 76 61 6c 29 20 7b 0a 20 20 20 20  ame, val) {.    
0da0: 76 61 72 20 78 6c 69 6e 6b 20 3d 20 58 4c 49 4e  var xlink = XLIN
0db0: 4b 5f 52 45 47 45 58 2e 65 78 65 63 28 6e 61 6d  K_REGEX.exec(nam
0dc0: 65 29 3b 0a 20 20 20 20 69 66 20 28 78 6c 69 6e  e);.    if (xlin
0dd0: 6b 20 26 26 20 78 6c 69 6e 6b 5b 31 5d 29 0a 20  k && xlink[1]). 
0de0: 20 20 20 20 20 7b 20 64 6f 6d 2e 73 65 74 41 74       { dom.setAt
0df0: 74 72 69 62 75 74 65 4e 53 28 58 4c 49 4e 4b 5f  tributeNS(XLINK_
0e00: 4e 53 2c 20 78 6c 69 6e 6b 5b 31 5d 2c 20 76 61  NS, xlink[1], va
0e10: 6c 29 3b 20 7d 0a 20 20 20 20 65 6c 73 65 0a 20  l); }.    else. 
0e20: 20 20 20 20 20 7b 20 64 6f 6d 2e 73 65 74 41 74       { dom.setAt
0e30: 74 72 69 62 75 74 65 28 6e 61 6d 65 2c 20 76 61  tribute(name, va
0e40: 6c 29 3b 20 7d 0a 20 20 7d 0a 0a 20 20 76 61 72  l); }.  }..  var
0e50: 20 73 74 79 6c 65 4e 6f 64 65 3b 0a 20 20 2f 2f   styleNode;.  //
0e60: 20 43 72 65 61 74 65 20 63 61 63 68 65 20 61 6e   Create cache an
0e70: 64 20 73 68 6f 72 74 63 75 74 20 74 6f 20 74 68  d shortcut to th
0e80: 65 20 63 6f 72 72 65 63 74 20 70 72 6f 70 65 72  e correct proper
0e90: 74 79 0a 20 20 76 61 72 20 63 73 73 54 65 78 74  ty.  var cssText
0ea0: 50 72 6f 70 3b 0a 20 20 76 61 72 20 62 79 4e 61  Prop;.  var byNa
0eb0: 6d 65 20 3d 20 7b 7d 3b 0a 20 20 76 61 72 20 6e  me = {};.  var n
0ec0: 65 65 64 73 49 6e 6a 65 63 74 20 3d 20 66 61 6c  eedsInject = fal
0ed0: 73 65 3b 0a 0a 20 20 2f 2f 20 73 6b 69 70 20 74  se;..  // skip t
0ee0: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 63 6f 64  he following cod
0ef0: 65 20 6f 6e 20 74 68 65 20 73 65 72 76 65 72 0a  e on the server.
0f00: 20 20 69 66 20 28 57 49 4e 29 20 7b 0a 20 20 20    if (WIN) {.   
0f10: 20 73 74 79 6c 65 4e 6f 64 65 20 3d 20 28 28 66   styleNode = ((f
0f20: 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20 20  unction () {.   
0f30: 20 20 20 2f 2f 20 63 72 65 61 74 65 20 61 20 6e     // create a n
0f40: 65 77 20 73 74 79 6c 65 20 65 6c 65 6d 65 6e 74  ew style element
0f50: 20 77 69 74 68 20 74 68 65 20 63 6f 72 72 65 63   with the correc
0f60: 74 20 74 79 70 65 0a 20 20 20 20 20 20 76 61 72  t type.      var
0f70: 20 6e 65 77 4e 6f 64 65 20 3d 20 6d 61 6b 65 45   newNode = makeE
0f80: 6c 65 6d 65 6e 74 28 27 73 74 79 6c 65 27 29 3b  lement('style');
0f90: 0a 20 20 20 20 20 20 2f 2f 20 72 65 70 6c 61 63  .      // replac
0fa0: 65 20 61 6e 79 20 75 73 65 72 20 6e 6f 64 65 20  e any user node 
0fb0: 6f 72 20 69 6e 73 65 72 74 20 74 68 65 20 6e 65  or insert the ne
0fc0: 77 20 6f 6e 65 20 69 6e 74 6f 20 74 68 65 20 68  w one into the h
0fd0: 65 61 64 0a 20 20 20 20 20 20 76 61 72 20 75 73  ead.      var us
0fe0: 65 72 4e 6f 64 65 20 3d 20 24 28 27 73 74 79 6c  erNode = $('styl
0ff0: 65 5b 74 79 70 65 3d 72 69 6f 74 5d 27 29 3b 0a  e[type=riot]');.
1000: 0a 20 20 20 20 20 20 73 65 74 41 74 74 72 69 62  .      setAttrib
1010: 75 74 65 28 6e 65 77 4e 6f 64 65 2c 20 27 74 79  ute(newNode, 'ty
1020: 70 65 27 2c 20 27 74 65 78 74 2f 63 73 73 27 29  pe', 'text/css')
1030: 3b 0a 20 20 20 20 20 20 2f 2a 20 69 73 74 61 6e  ;.      /* istan
1040: 62 75 6c 20 69 67 6e 6f 72 65 20 6e 65 78 74 20  bul ignore next 
1050: 2a 2f 0a 20 20 20 20 20 20 69 66 20 28 75 73 65  */.      if (use
1060: 72 4e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20  rNode) {.       
1070: 20 69 66 20 28 75 73 65 72 4e 6f 64 65 2e 69 64   if (userNode.id
1080: 29 20 7b 20 6e 65 77 4e 6f 64 65 2e 69 64 20 3d  ) { newNode.id =
1090: 20 75 73 65 72 4e 6f 64 65 2e 69 64 3b 20 7d 0a   userNode.id; }.
10a0: 20 20 20 20 20 20 20 20 75 73 65 72 4e 6f 64 65          userNode
10b0: 2e 70 61 72 65 6e 74 4e 6f 64 65 2e 72 65 70 6c  .parentNode.repl
10c0: 61 63 65 43 68 69 6c 64 28 6e 65 77 4e 6f 64 65  aceChild(newNode
10d0: 2c 20 75 73 65 72 4e 6f 64 65 29 3b 0a 20 20 20  , userNode);.   
10e0: 20 20 20 7d 20 65 6c 73 65 20 7b 20 64 6f 63 75     } else { docu
10f0: 6d 65 6e 74 2e 68 65 61 64 2e 61 70 70 65 6e 64  ment.head.append
1100: 43 68 69 6c 64 28 6e 65 77 4e 6f 64 65 29 3b 20  Child(newNode); 
1110: 7d 0a 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20  }..      return 
1120: 6e 65 77 4e 6f 64 65 0a 20 20 20 20 7d 29 29 28  newNode.    }))(
1130: 29 3b 0a 20 20 20 20 63 73 73 54 65 78 74 50 72  );.    cssTextPr
1140: 6f 70 20 3d 20 73 74 79 6c 65 4e 6f 64 65 2e 73  op = styleNode.s
1150: 74 79 6c 65 53 68 65 65 74 3b 0a 20 20 7d 0a 0a  tyleSheet;.  }..
1160: 20 20 2f 2a 2a 0a 20 20 20 2a 20 4f 62 6a 65 63    /**.   * Objec
1170: 74 20 74 68 61 74 20 77 69 6c 6c 20 62 65 20 75  t that will be u
1180: 73 65 64 20 74 6f 20 69 6e 6a 65 63 74 20 61 6e  sed to inject an
1190: 64 20 6d 61 6e 61 67 65 20 74 68 65 20 63 73 73  d manage the css
11a0: 20 6f 66 20 65 76 65 72 79 20 74 61 67 20 69 6e   of every tag in
11b0: 73 74 61 6e 63 65 0a 20 20 20 2a 2f 0a 20 20 76  stance.   */.  v
11c0: 61 72 20 73 74 79 6c 65 4d 61 6e 61 67 65 72 20  ar styleManager 
11d0: 3d 20 7b 0a 20 20 20 20 73 74 79 6c 65 4e 6f 64  = {.    styleNod
11e0: 65 3a 20 73 74 79 6c 65 4e 6f 64 65 2c 0a 20 20  e: styleNode,.  
11f0: 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 53 61 76    /**.     * Sav
1200: 65 20 61 20 74 61 67 20 73 74 79 6c 65 20 74 6f  e a tag style to
1210: 20 62 65 20 6c 61 74 65 72 20 69 6e 6a 65 63 74   be later inject
1220: 65 64 20 69 6e 74 6f 20 44 4f 4d 0a 20 20 20 20  ed into DOM.    
1230: 20 2a 20 40 70 61 72 61 6d 20 7b 20 53 74 72 69   * @param { Stri
1240: 6e 67 20 7d 20 63 73 73 20 2d 20 63 73 73 20 73  ng } css - css s
1250: 74 72 69 6e 67 0a 20 20 20 20 20 2a 20 40 70 61  tring.     * @pa
1260: 72 61 6d 20 7b 20 53 74 72 69 6e 67 20 7d 20 6e  ram { String } n
1270: 61 6d 65 20 2d 20 69 66 20 69 74 27 73 20 70 61  ame - if it's pa
1280: 73 73 65 64 20 77 65 20 77 69 6c 6c 20 6d 61 70  ssed we will map
1290: 20 74 68 65 20 63 73 73 20 74 6f 20 61 20 74 61   the css to a ta
12a0: 67 6e 61 6d 65 0a 20 20 20 20 20 2a 2f 0a 20 20  gname.     */.  
12b0: 20 20 61 64 64 3a 20 66 75 6e 63 74 69 6f 6e 20    add: function 
12c0: 61 64 64 28 63 73 73 2c 20 6e 61 6d 65 29 20 7b  add(css, name) {
12d0: 0a 20 20 20 20 20 20 62 79 4e 61 6d 65 5b 6e 61  .      byName[na
12e0: 6d 65 5d 20 3d 20 63 73 73 3b 0a 20 20 20 20 20  me] = css;.     
12f0: 20 6e 65 65 64 73 49 6e 6a 65 63 74 20 3d 20 74   needsInject = t
1300: 72 75 65 3b 0a 20 20 20 20 7d 2c 0a 20 20 20 20  rue;.    },.    
1310: 2f 2a 2a 0a 20 20 20 20 20 2a 20 49 6e 6a 65 63  /**.     * Injec
1320: 74 20 61 6c 6c 20 70 72 65 76 69 6f 75 73 6c 79  t all previously
1330: 20 73 61 76 65 64 20 74 61 67 20 73 74 79 6c 65   saved tag style
1340: 73 20 69 6e 74 6f 20 44 4f 4d 0a 20 20 20 20 20  s into DOM.     
1350: 2a 20 69 6e 6e 65 72 48 54 4d 4c 20 73 65 65 6d  * innerHTML seem
1360: 73 20 73 6c 6f 77 3a 20 68 74 74 70 3a 2f 2f 6a  s slow: http://j
1370: 73 70 65 72 66 2e 63 6f 6d 2f 72 69 6f 74 2d 69  sperf.com/riot-i
1380: 6e 73 65 72 74 2d 73 74 79 6c 65 0a 20 20 20 20  nsert-style.    
1390: 20 2a 2f 0a 20 20 20 20 69 6e 6a 65 63 74 3a 20   */.    inject: 
13a0: 66 75 6e 63 74 69 6f 6e 20 69 6e 6a 65 63 74 28  function inject(
13b0: 29 20 7b 0a 20 20 20 20 20 20 69 66 20 28 21 57  ) {.      if (!W
13c0: 49 4e 20 7c 7c 20 21 6e 65 65 64 73 49 6e 6a 65  IN || !needsInje
13d0: 63 74 29 20 7b 20 72 65 74 75 72 6e 20 7d 0a 20  ct) { return }. 
13e0: 20 20 20 20 20 6e 65 65 64 73 49 6e 6a 65 63 74       needsInject
13f0: 20 3d 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 20   = false;.      
1400: 76 61 72 20 73 74 79 6c 65 20 3d 20 4f 62 6a 65  var style = Obje
1410: 63 74 2e 6b 65 79 73 28 62 79 4e 61 6d 65 29 0a  ct.keys(byName).
1420: 20 20 20 20 20 20 20 20 2e 6d 61 70 28 66 75 6e          .map(fun
1430: 63 74 69 6f 6e 20 28 6b 29 20 7b 20 72 65 74 75  ction (k) { retu
1440: 72 6e 20 62 79 4e 61 6d 65 5b 6b 5d 3b 20 7d 29  rn byName[k]; })
1450: 0a 20 20 20 20 20 20 20 20 2e 6a 6f 69 6e 28 27  .        .join('
1460: 5c 6e 27 29 3b 0a 20 20 20 20 20 20 2f 2a 20 69  \n');.      /* i
1470: 73 74 61 6e 62 75 6c 20 69 67 6e 6f 72 65 20 6e  stanbul ignore n
1480: 65 78 74 20 2a 2f 0a 20 20 20 20 20 20 69 66 20  ext */.      if 
1490: 28 63 73 73 54 65 78 74 50 72 6f 70 29 20 7b 20  (cssTextProp) { 
14a0: 63 73 73 54 65 78 74 50 72 6f 70 2e 63 73 73 54  cssTextProp.cssT
14b0: 65 78 74 20 3d 20 73 74 79 6c 65 3b 20 7d 0a 20  ext = style; }. 
14c0: 20 20 20 20 20 65 6c 73 65 20 7b 20 73 74 79 6c       else { styl
14d0: 65 4e 6f 64 65 2e 69 6e 6e 65 72 48 54 4d 4c 20  eNode.innerHTML 
14e0: 3d 20 73 74 79 6c 65 3b 20 7d 0a 20 20 20 20 7d  = style; }.    }
14f0: 2c 0a 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20  ,..    /**.     
1500: 2a 20 52 65 6d 6f 76 65 20 61 20 74 61 67 20 73  * Remove a tag s
1510: 74 79 6c 65 20 6f 66 20 69 6e 6a 65 63 74 65 64  tyle of injected
1520: 20 44 4f 4d 20 6c 61 74 65 72 2e 0a 20 20 20 20   DOM later..    
1530: 20 2a 20 40 70 61 72 61 6d 20 7b 53 74 72 69 6e   * @param {Strin
1540: 67 7d 20 6e 61 6d 65 20 61 20 72 65 67 69 73 74  g} name a regist
1550: 65 72 65 64 20 74 61 67 6e 61 6d 65 0a 20 20 20  ered tagname.   
1560: 20 20 2a 2f 0a 20 20 20 20 72 65 6d 6f 76 65 3a    */.    remove:
1570: 20 66 75 6e 63 74 69 6f 6e 20 72 65 6d 6f 76 65   function remove
1580: 28 6e 61 6d 65 29 20 7b 0a 20 20 20 20 20 20 64  (name) {.      d
1590: 65 6c 65 74 65 20 62 79 4e 61 6d 65 5b 6e 61 6d  elete byName[nam
15a0: 65 5d 3b 0a 20 20 20 20 20 20 6e 65 65 64 73 49  e];.      needsI
15b0: 6e 6a 65 63 74 20 3d 20 74 72 75 65 3b 0a 20 20  nject = true;.  
15c0: 20 20 7d 0a 20 20 7d 3b 0a 0a 20 20 76 61 72 20    }.  };..  var 
15d0: 63 6f 6d 6d 6f 6e 6a 73 47 6c 6f 62 61 6c 20 3d  commonjsGlobal =
15e0: 20 74 79 70 65 6f 66 20 77 69 6e 64 6f 77 20 21   typeof window !
15f0: 3d 3d 20 27 75 6e 64 65 66 69 6e 65 64 27 20 3f  == 'undefined' ?
1600: 20 77 69 6e 64 6f 77 20 3a 20 74 79 70 65 6f 66   window : typeof
1610: 20 67 6c 6f 62 61 6c 20 21 3d 3d 20 27 75 6e 64   global !== 'und
1620: 65 66 69 6e 65 64 27 20 3f 20 67 6c 6f 62 61 6c  efined' ? global
1630: 20 3a 20 74 79 70 65 6f 66 20 73 65 6c 66 20 21   : typeof self !
1640: 3d 3d 20 27 75 6e 64 65 66 69 6e 65 64 27 20 3f  == 'undefined' ?
1650: 20 73 65 6c 66 20 3a 20 7b 7d 3b 0a 0a 20 20 66   self : {};..  f
1660: 75 6e 63 74 69 6f 6e 20 75 6e 77 72 61 70 45 78  unction unwrapEx
1670: 70 6f 72 74 73 20 28 78 29 20 7b 0a 20 20 09 72  ports (x) {.  .r
1680: 65 74 75 72 6e 20 78 20 26 26 20 78 2e 5f 5f 65  eturn x && x.__e
1690: 73 4d 6f 64 75 6c 65 20 26 26 20 4f 62 6a 65 63  sModule && Objec
16a0: 74 2e 70 72 6f 74 6f 74 79 70 65 2e 68 61 73 4f  t.prototype.hasO
16b0: 77 6e 50 72 6f 70 65 72 74 79 2e 63 61 6c 6c 28  wnProperty.call(
16c0: 78 2c 20 27 64 65 66 61 75 6c 74 27 29 20 3f 20  x, 'default') ? 
16d0: 78 5b 27 64 65 66 61 75 6c 74 27 5d 20 3a 20 78  x['default'] : x
16e0: 3b 0a 20 20 7d 0a 0a 20 20 66 75 6e 63 74 69 6f  ;.  }..  functio
16f0: 6e 20 63 72 65 61 74 65 43 6f 6d 6d 6f 6e 6a 73  n createCommonjs
1700: 4d 6f 64 75 6c 65 28 66 6e 2c 20 6d 6f 64 75 6c  Module(fn, modul
1710: 65 29 20 7b 0a 20 20 09 72 65 74 75 72 6e 20 6d  e) {.  .return m
1720: 6f 64 75 6c 65 20 3d 20 7b 20 65 78 70 6f 72 74  odule = { export
1730: 73 3a 20 7b 7d 20 7d 2c 20 66 6e 28 6d 6f 64 75  s: {} }, fn(modu
1740: 6c 65 2c 20 6d 6f 64 75 6c 65 2e 65 78 70 6f 72  le, module.expor
1750: 74 73 29 2c 20 6d 6f 64 75 6c 65 2e 65 78 70 6f  ts), module.expo
1760: 72 74 73 3b 0a 20 20 7d 0a 0a 20 20 76 61 72 20  rts;.  }..  var 
1770: 63 73 70 5f 74 6d 70 6c 20 3d 20 63 72 65 61 74  csp_tmpl = creat
1780: 65 43 6f 6d 6d 6f 6e 6a 73 4d 6f 64 75 6c 65 28  eCommonjsModule(
1790: 66 75 6e 63 74 69 6f 6e 20 28 6d 6f 64 75 6c 65  function (module
17a0: 2c 20 65 78 70 6f 72 74 73 29 20 7b 0a 20 20 28  , exports) {.  (
17b0: 66 75 6e 63 74 69 6f 6e 20 28 67 6c 6f 62 61 6c  function (global
17c0: 2c 20 66 61 63 74 6f 72 79 29 20 7b 0a 20 20 09  , factory) {.  .
17d0: 66 61 63 74 6f 72 79 28 65 78 70 6f 72 74 73 29  factory(exports)
17e0: 3b 0a 20 20 7d 28 63 6f 6d 6d 6f 6e 6a 73 47 6c  ;.  }(commonjsGl
17f0: 6f 62 61 6c 2c 20 28 66 75 6e 63 74 69 6f 6e 20  obal, (function 
1800: 28 65 78 70 6f 72 74 73 29 20 7b 0a 20 20 66 75  (exports) {.  fu
1810: 6e 63 74 69 6f 6e 20 49 6e 66 69 6e 69 74 65 43  nction InfiniteC
1820: 68 65 63 6b 65 72 20 28 6d 61 78 49 74 65 72 61  hecker (maxItera
1830: 74 69 6f 6e 73 29 20 7b 0a 20 20 20 20 69 66 20  tions) {.    if 
1840: 28 74 68 69 73 20 69 6e 73 74 61 6e 63 65 6f 66  (this instanceof
1850: 20 49 6e 66 69 6e 69 74 65 43 68 65 63 6b 65 72   InfiniteChecker
1860: 29 20 7b 0a 20 20 20 20 20 20 74 68 69 73 2e 6d  ) {.      this.m
1870: 61 78 49 74 65 72 61 74 69 6f 6e 73 20 3d 20 6d  axIterations = m
1880: 61 78 49 74 65 72 61 74 69 6f 6e 73 3b 0a 20 20  axIterations;.  
1890: 20 20 20 20 74 68 69 73 2e 63 6f 75 6e 74 20 3d      this.count =
18a0: 20 30 3b 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b   0;.    } else {
18b0: 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65  .      return ne
18c0: 77 20 49 6e 66 69 6e 69 74 65 43 68 65 63 6b 65  w InfiniteChecke
18d0: 72 28 6d 61 78 49 74 65 72 61 74 69 6f 6e 73 29  r(maxIterations)
18e0: 0a 20 20 20 20 7d 0a 20 20 7d 0a 0a 20 20 49 6e  .    }.  }..  In
18f0: 66 69 6e 69 74 65 43 68 65 63 6b 65 72 2e 70 72  finiteChecker.pr
1900: 6f 74 6f 74 79 70 65 2e 63 68 65 63 6b 20 3d 20  ototype.check = 
1910: 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20  function () {.  
1920: 20 20 74 68 69 73 2e 63 6f 75 6e 74 20 2b 3d 20    this.count += 
1930: 31 3b 0a 20 20 20 20 69 66 20 28 74 68 69 73 2e  1;.    if (this.
1940: 63 6f 75 6e 74 20 3e 20 74 68 69 73 2e 6d 61 78  count > this.max
1950: 49 74 65 72 61 74 69 6f 6e 73 29 20 7b 0a 20 20  Iterations) {.  
1960: 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 45 72      throw new Er
1970: 72 6f 72 28 27 49 6e 66 69 6e 69 74 65 20 6c 6f  ror('Infinite lo
1980: 6f 70 20 64 65 74 65 63 74 65 64 20 2d 20 72 65  op detected - re
1990: 61 63 68 65 64 20 6d 61 78 20 69 74 65 72 61 74  ached max iterat
19a0: 69 6f 6e 73 27 29 0a 20 20 20 20 7d 0a 20 20 7d  ions').    }.  }
19b0: 3b 0a 0a 20 20 66 75 6e 63 74 69 6f 6e 20 67 65  ;..  function ge
19c0: 74 47 6c 6f 62 61 6c 20 28 73 74 72 29 20 7b 0a  tGlobal (str) {.
19d0: 20 20 20 20 76 61 72 20 63 74 78 20 3d 20 28 74      var ctx = (t
19e0: 79 70 65 6f 66 20 77 69 6e 64 6f 77 20 21 3d 3d  ypeof window !==
19f0: 20 27 75 6e 64 65 66 69 6e 65 64 27 20 3f 20 77   'undefined' ? w
1a00: 69 6e 64 6f 77 20 3a 20 74 79 70 65 6f 66 20 63  indow : typeof c
1a10: 6f 6d 6d 6f 6e 6a 73 47 6c 6f 62 61 6c 20 21 3d  ommonjsGlobal !=
1a20: 3d 20 27 75 6e 64 65 66 69 6e 65 64 27 20 3f 20  = 'undefined' ? 
1a30: 63 6f 6d 6d 6f 6e 6a 73 47 6c 6f 62 61 6c 20 3a  commonjsGlobal :
1a40: 20 74 68 69 73 29 3b 0a 20 20 20 20 72 65 74 75   this);.    retu
1a50: 72 6e 20 74 79 70 65 6f 66 20 73 74 72 20 21 3d  rn typeof str !=
1a60: 3d 20 27 75 6e 64 65 66 69 6e 65 64 27 20 3f 20  = 'undefined' ? 
1a70: 63 74 78 5b 73 74 72 5d 20 3a 20 63 74 78 0a 20  ctx[str] : ctx. 
1a80: 20 7d 0a 0a 20 20 76 61 72 20 6e 61 6d 65 73 20   }..  var names 
1a90: 3d 20 5b 27 4f 62 6a 65 63 74 27 2c 20 27 53 74  = ['Object', 'St
1aa0: 72 69 6e 67 27 2c 20 27 42 6f 6f 6c 65 61 6e 27  ring', 'Boolean'
1ab0: 2c 20 27 4e 75 6d 62 65 72 27 2c 20 27 52 65 67  , 'Number', 'Reg
1ac0: 45 78 70 27 2c 20 27 44 61 74 65 27 2c 20 27 41  Exp', 'Date', 'A
1ad0: 72 72 61 79 27 5d 3b 0a 20 20 76 61 72 20 69 6d  rray'];.  var im
1ae0: 6d 75 74 61 62 6c 65 20 3d 20 7b 20 73 74 72 69  mutable = { stri
1af0: 6e 67 3a 20 27 53 74 72 69 6e 67 27 2c 20 62 6f  ng: 'String', bo
1b00: 6f 6c 65 61 6e 3a 20 27 42 6f 6f 6c 65 61 6e 27  olean: 'Boolean'
1b10: 2c 20 6e 75 6d 62 65 72 3a 20 27 4e 75 6d 62 65  , number: 'Numbe
1b20: 72 27 20 7d 3b 0a 0a 20 20 76 61 72 20 70 72 69  r' };..  var pri
1b30: 6d 69 74 69 76 65 73 20 3d 20 6e 61 6d 65 73 2e  mitives = names.
1b40: 6d 61 70 28 67 65 74 47 6c 6f 62 61 6c 29 3b 0a  map(getGlobal);.
1b50: 20 20 76 61 72 20 70 72 6f 74 6f 73 20 3d 20 70    var protos = p
1b60: 72 69 6d 69 74 69 76 65 73 2e 6d 61 70 28 67 65  rimitives.map(ge
1b70: 74 50 72 6f 74 6f 29 3b 0a 0a 20 20 66 75 6e 63  tProto);..  func
1b80: 74 69 6f 6e 20 50 72 69 6d 69 74 69 76 65 73 20  tion Primitives 
1b90: 28 63 6f 6e 74 65 78 74 29 20 7b 0a 20 20 20 20  (context) {.    
1ba0: 76 61 72 20 74 68 69 73 24 31 20 3d 20 74 68 69  var this$1 = thi
1bb0: 73 3b 0a 0a 20 20 20 20 69 66 20 28 74 68 69 73  s;..    if (this
1bc0: 20 69 6e 73 74 61 6e 63 65 6f 66 20 50 72 69 6d   instanceof Prim
1bd0: 69 74 69 76 65 73 29 20 7b 0a 20 20 20 20 20 20  itives) {.      
1be0: 74 68 69 73 2e 63 6f 6e 74 65 78 74 20 3d 20 63  this.context = c
1bf0: 6f 6e 74 65 78 74 3b 0a 20 20 20 20 20 20 66 6f  ontext;.      fo
1c00: 72 20 28 76 61 72 20 69 20 3d 20 30 3b 20 69 20  r (var i = 0; i 
1c10: 3c 20 6e 61 6d 65 73 2e 6c 65 6e 67 74 68 3b 20  < names.length; 
1c20: 69 2b 2b 29 20 7b 0a 20 20 20 20 20 20 20 20 69  i++) {.        i
1c30: 66 20 28 21 74 68 69 73 24 31 2e 63 6f 6e 74 65  f (!this$1.conte
1c40: 78 74 5b 6e 61 6d 65 73 5b 69 5d 5d 29 20 7b 0a  xt[names[i]]) {.
1c50: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 24 31            this$1
1c60: 2e 63 6f 6e 74 65 78 74 5b 6e 61 6d 65 73 5b 69  .context[names[i
1c70: 5d 5d 20 3d 20 77 72 61 70 28 70 72 69 6d 69 74  ]] = wrap(primit
1c80: 69 76 65 73 5b 69 5d 29 3b 0a 20 20 20 20 20 20  ives[i]);.      
1c90: 20 20 7d 0a 20 20 20 20 20 20 7d 0a 20 20 20 20    }.      }.    
1ca0: 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 72  } else {.      r
1cb0: 65 74 75 72 6e 20 6e 65 77 20 50 72 69 6d 69 74  eturn new Primit
1cc0: 69 76 65 73 28 63 6f 6e 74 65 78 74 29 0a 20 20  ives(context).  
1cd0: 20 20 7d 0a 20 20 7d 0a 0a 20 20 50 72 69 6d 69    }.  }..  Primi
1ce0: 74 69 76 65 73 2e 70 72 6f 74 6f 74 79 70 65 2e  tives.prototype.
1cf0: 72 65 70 6c 61 63 65 20 3d 20 66 75 6e 63 74 69  replace = functi
1d00: 6f 6e 20 28 76 61 6c 75 65 29 20 7b 0a 20 20 20  on (value) {.   
1d10: 20 76 61 72 20 70 72 69 6d 49 6e 64 65 78 20 3d   var primIndex =
1d20: 20 70 72 69 6d 69 74 69 76 65 73 2e 69 6e 64 65   primitives.inde
1d30: 78 4f 66 28 76 61 6c 75 65 29 2c 0a 20 20 20 20  xOf(value),.    
1d40: 20 20 70 72 6f 74 6f 49 6e 64 65 78 20 3d 20 70    protoIndex = p
1d50: 72 6f 74 6f 73 2e 69 6e 64 65 78 4f 66 28 76 61  rotos.indexOf(va
1d60: 6c 75 65 29 2c 0a 20 20 20 20 20 20 6e 61 6d 65  lue),.      name
1d70: 3b 0a 0a 20 20 20 20 69 66 20 28 7e 70 72 69 6d  ;..    if (~prim
1d80: 49 6e 64 65 78 29 20 7b 0a 20 20 20 20 20 20 6e  Index) {.      n
1d90: 61 6d 65 20 3d 20 6e 61 6d 65 73 5b 70 72 69 6d  ame = names[prim
1da0: 49 6e 64 65 78 5d 3b 0a 20 20 20 20 20 20 72 65  Index];.      re
1db0: 74 75 72 6e 20 74 68 69 73 2e 63 6f 6e 74 65 78  turn this.contex
1dc0: 74 5b 6e 61 6d 65 5d 0a 20 20 20 20 7d 20 65 6c  t[name].    } el
1dd0: 73 65 20 69 66 20 28 7e 70 72 6f 74 6f 49 6e 64  se if (~protoInd
1de0: 65 78 29 20 7b 0a 20 20 20 20 20 20 6e 61 6d 65  ex) {.      name
1df0: 20 3d 20 6e 61 6d 65 73 5b 70 72 6f 74 6f 49 6e   = names[protoIn
1e00: 64 65 78 5d 3b 0a 20 20 20 20 20 20 72 65 74 75  dex];.      retu
1e10: 72 6e 20 74 68 69 73 2e 63 6f 6e 74 65 78 74 5b  rn this.context[
1e20: 6e 61 6d 65 5d 2e 70 72 6f 74 6f 74 79 70 65 0a  name].prototype.
1e30: 20 20 20 20 7d 0a 0a 20 20 20 20 72 65 74 75 72      }..    retur
1e40: 6e 20 76 61 6c 75 65 0a 20 20 7d 3b 0a 0a 20 20  n value.  };..  
1e50: 50 72 69 6d 69 74 69 76 65 73 2e 70 72 6f 74 6f  Primitives.proto
1e60: 74 79 70 65 2e 67 65 74 50 72 6f 70 65 72 74 79  type.getProperty
1e70: 4f 62 6a 65 63 74 20 3d 20 66 75 6e 63 74 69 6f  Object = functio
1e80: 6e 20 28 6f 62 6a 65 63 74 2c 20 70 72 6f 70 65  n (object, prope
1e90: 72 74 79 29 20 7b 0a 20 20 20 20 69 66 20 28 69  rty) {.    if (i
1ea0: 6d 6d 75 74 61 62 6c 65 5b 74 79 70 65 6f 66 20  mmutable[typeof 
1eb0: 6f 62 6a 65 63 74 5d 29 20 7b 0a 20 20 20 20 20  object]) {.     
1ec0: 20 72 65 74 75 72 6e 20 74 68 69 73 2e 67 65 74   return this.get
1ed0: 50 72 6f 74 6f 74 79 70 65 4f 66 28 6f 62 6a 65  PrototypeOf(obje
1ee0: 63 74 29 0a 20 20 20 20 7d 0a 20 20 20 20 72 65  ct).    }.    re
1ef0: 74 75 72 6e 20 6f 62 6a 65 63 74 0a 20 20 7d 3b  turn object.  };
1f00: 0a 0a 20 20 50 72 69 6d 69 74 69 76 65 73 2e 70  ..  Primitives.p
1f10: 72 6f 74 6f 74 79 70 65 2e 69 73 50 72 69 6d 69  rototype.isPrimi
1f20: 74 69 76 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20  tive = function 
1f30: 28 76 61 6c 75 65 29 20 7b 0a 20 20 20 20 72 65  (value) {.    re
1f40: 74 75 72 6e 20 21 21 7e 70 72 69 6d 69 74 69 76  turn !!~primitiv
1f50: 65 73 2e 69 6e 64 65 78 4f 66 28 76 61 6c 75 65  es.indexOf(value
1f60: 29 20 7c 7c 20 21 21 7e 70 72 6f 74 6f 73 2e 69  ) || !!~protos.i
1f70: 6e 64 65 78 4f 66 28 76 61 6c 75 65 29 0a 20 20  ndexOf(value).  
1f80: 7d 3b 0a 0a 20 20 50 72 69 6d 69 74 69 76 65 73  };..  Primitives
1f90: 2e 70 72 6f 74 6f 74 79 70 65 2e 67 65 74 50 72  .prototype.getPr
1fa0: 6f 74 6f 74 79 70 65 4f 66 20 3d 20 66 75 6e 63  ototypeOf = func
1fb0: 74 69 6f 6e 20 28 76 61 6c 75 65 29 20 7b 0a 20  tion (value) {. 
1fc0: 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20     if (value == 
1fd0: 6e 75 6c 6c 29 20 7b 20 2f 2f 20 68 61 6e 64 6c  null) { // handl
1fe0: 65 20 6e 75 6c 6c 20 61 6e 64 20 75 6e 64 65 66  e null and undef
1ff0: 69 6e 65 64 0a 20 20 20 20 20 20 72 65 74 75 72  ined.      retur
2000: 6e 20 76 61 6c 75 65 0a 20 20 20 20 7d 0a 0a 20  n value.    }.. 
2010: 20 20 20 76 61 72 20 69 6d 6d 75 74 61 62 6c 65     var immutable
2020: 54 79 70 65 20 3d 20 69 6d 6d 75 74 61 62 6c 65  Type = immutable
2030: 5b 74 79 70 65 6f 66 20 76 61 6c 75 65 5d 2c 0a  [typeof value],.
2040: 20 20 20 20 20 20 70 72 6f 74 6f 3b 0a 0a 20 20        proto;..  
2050: 20 20 69 66 20 28 69 6d 6d 75 74 61 62 6c 65 54    if (immutableT
2060: 79 70 65 29 20 7b 0a 20 20 20 20 20 20 70 72 6f  ype) {.      pro
2070: 74 6f 20 3d 20 74 68 69 73 2e 63 6f 6e 74 65 78  to = this.contex
2080: 74 5b 69 6d 6d 75 74 61 62 6c 65 54 79 70 65 5d  t[immutableType]
2090: 2e 70 72 6f 74 6f 74 79 70 65 3b 0a 20 20 20 20  .prototype;.    
20a0: 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 70  } else {.      p
20b0: 72 6f 74 6f 20 3d 20 4f 62 6a 65 63 74 2e 67 65  roto = Object.ge
20c0: 74 50 72 6f 74 6f 74 79 70 65 4f 66 28 76 61 6c  tPrototypeOf(val
20d0: 75 65 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20  ue);.    }..    
20e0: 69 66 20 28 21 70 72 6f 74 6f 20 7c 7c 20 70 72  if (!proto || pr
20f0: 6f 74 6f 20 3d 3d 3d 20 4f 62 6a 65 63 74 2e 70  oto === Object.p
2100: 72 6f 74 6f 74 79 70 65 29 20 7b 0a 20 20 20 20  rototype) {.    
2110: 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 0a 20 20    return null.  
2120: 20 20 7d 0a 0a 20 20 20 20 76 61 72 20 72 65 70    }..    var rep
2130: 6c 61 63 65 6d 65 6e 74 20 3d 20 74 68 69 73 2e  lacement = this.
2140: 72 65 70 6c 61 63 65 28 70 72 6f 74 6f 29 3b 0a  replace(proto);.
2150: 0a 20 20 20 20 69 66 20 28 72 65 70 6c 61 63 65  .    if (replace
2160: 6d 65 6e 74 20 3d 3d 3d 20 76 61 6c 75 65 29 20  ment === value) 
2170: 7b 0a 20 20 20 20 20 20 72 65 70 6c 61 63 65 6d  {.      replacem
2180: 65 6e 74 20 3d 20 74 68 69 73 2e 72 65 70 6c 61  ent = this.repla
2190: 63 65 28 4f 62 6a 65 63 74 2e 70 72 6f 74 6f 74  ce(Object.protot
21a0: 79 70 65 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20  ype);.    }.    
21b0: 72 65 74 75 72 6e 20 72 65 70 6c 61 63 65 6d 65  return replaceme
21c0: 6e 74 0a 0a 20 20 7d 3b 0a 0a 20 20 50 72 69 6d  nt..  };..  Prim
21d0: 69 74 69 76 65 73 2e 70 72 6f 74 6f 74 79 70 65  itives.prototype
21e0: 2e 61 70 70 6c 79 4e 65 77 20 3d 20 66 75 6e 63  .applyNew = func
21f0: 74 69 6f 6e 20 28 66 75 6e 63 2c 20 61 72 67 73  tion (func, args
2200: 29 20 7b 0a 20 20 20 20 69 66 20 28 66 75 6e 63  ) {.    if (func
2210: 2e 77 72 61 70 70 65 64 29 20 7b 0a 20 20 20 20  .wrapped) {.    
2220: 20 20 76 61 72 20 70 72 69 6d 20 3d 20 4f 62 6a    var prim = Obj
2230: 65 63 74 2e 67 65 74 50 72 6f 74 6f 74 79 70 65  ect.getPrototype
2240: 4f 66 28 66 75 6e 63 29 3b 0a 20 20 20 20 20 20  Of(func);.      
2250: 76 61 72 20 69 6e 73 74 61 6e 63 65 20 3d 20 6e  var instance = n
2260: 65 77 20 28 46 75 6e 63 74 69 6f 6e 2e 70 72 6f  ew (Function.pro
2270: 74 6f 74 79 70 65 2e 62 69 6e 64 2e 61 70 70 6c  totype.bind.appl
2280: 79 28 70 72 69 6d 2c 20 61 72 67 75 6d 65 6e 74  y(prim, argument
2290: 73 29 29 3b 0a 0a 20 20 20 20 20 20 73 65 74 50  s));..      setP
22a0: 72 6f 74 6f 28 69 6e 73 74 61 6e 63 65 2c 20 66  roto(instance, f
22b0: 75 6e 63 2e 70 72 6f 74 6f 74 79 70 65 29 3b 0a  unc.prototype);.
22c0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 69 6e 73        return ins
22d0: 74 61 6e 63 65 0a 20 20 20 20 7d 0a 0a 20 20 20  tance.    }..   
22e0: 20 72 65 74 75 72 6e 20 6e 65 77 20 28 46 75 6e   return new (Fun
22f0: 63 74 69 6f 6e 2e 70 72 6f 74 6f 74 79 70 65 2e  ction.prototype.
2300: 62 69 6e 64 2e 61 70 70 6c 79 28 66 75 6e 63 2c  bind.apply(func,
2310: 20 61 72 67 75 6d 65 6e 74 73 29 29 0a 0a 20 20   arguments))..  
2320: 7d 3b 0a 0a 20 20 66 75 6e 63 74 69 6f 6e 20 67  };..  function g
2330: 65 74 50 72 6f 74 6f 20 28 66 75 6e 63 29 20 7b  etProto (func) {
2340: 0a 20 20 20 20 72 65 74 75 72 6e 20 66 75 6e 63  .    return func
2350: 2e 70 72 6f 74 6f 74 79 70 65 0a 20 20 7d 0a 0a  .prototype.  }..
2360: 20 20 66 75 6e 63 74 69 6f 6e 20 73 65 74 50 72    function setPr
2370: 6f 74 6f 20 28 6f 62 6a 2c 20 70 72 6f 74 6f 29  oto (obj, proto)
2380: 20 7b 0a 20 20 20 20 6f 62 6a 2e 5f 5f 70 72 6f   {.    obj.__pro
2390: 74 6f 5f 5f 20 3d 20 70 72 6f 74 6f 3b 20 2f 2f  to__ = proto; //
23a0: 20 65 73 6c 69 6e 74 2d 64 69 73 61 62 6c 65 2d   eslint-disable-
23b0: 6c 69 6e 65 0a 20 20 7d 0a 0a 20 20 66 75 6e 63  line.  }..  func
23c0: 74 69 6f 6e 20 77 72 61 70 20 28 70 72 69 6d 29  tion wrap (prim)
23d0: 20 7b 0a 20 20 20 20 76 61 72 20 70 72 6f 74 6f   {.    var proto
23e0: 20 3d 20 4f 62 6a 65 63 74 2e 63 72 65 61 74 65   = Object.create
23f0: 28 70 72 69 6d 2e 70 72 6f 74 6f 74 79 70 65 29  (prim.prototype)
2400: 3b 0a 0a 20 20 20 20 76 61 72 20 72 65 73 75 6c  ;..    var resul
2410: 74 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20  t = function () 
2420: 7b 0a 20 20 20 20 20 20 69 66 20 28 74 68 69 73  {.      if (this
2430: 20 69 6e 73 74 61 6e 63 65 6f 66 20 72 65 73 75   instanceof resu
2440: 6c 74 29 20 7b 0a 20 20 20 20 20 20 20 20 70 72  lt) {.        pr
2450: 69 6d 2e 61 70 70 6c 79 28 74 68 69 73 2c 20 61  im.apply(this, a
2460: 72 67 75 6d 65 6e 74 73 29 3b 0a 20 20 20 20 20  rguments);.     
2470: 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20   } else {.      
2480: 20 20 76 61 72 20 69 6e 73 74 61 6e 63 65 20 3d    var instance =
2490: 20 70 72 69 6d 2e 61 70 70 6c 79 28 6e 75 6c 6c   prim.apply(null
24a0: 2c 20 61 72 67 75 6d 65 6e 74 73 29 3b 0a 0a 20  , arguments);.. 
24b0: 20 20 20 20 20 20 20 73 65 74 50 72 6f 74 6f 28         setProto(
24c0: 69 6e 73 74 61 6e 63 65 2c 20 70 72 6f 74 6f 29  instance, proto)
24d0: 3b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  ;.        return
24e0: 20 69 6e 73 74 61 6e 63 65 0a 20 20 20 20 20 20   instance.      
24f0: 7d 0a 20 20 20 20 7d 3b 0a 0a 20 20 20 20 73 65  }.    };..    se
2500: 74 50 72 6f 74 6f 28 72 65 73 75 6c 74 2c 20 70  tProto(result, p
2510: 72 69 6d 29 3b 0a 20 20 20 20 72 65 73 75 6c 74  rim);.    result
2520: 2e 70 72 6f 74 6f 74 79 70 65 20 3d 20 70 72 6f  .prototype = pro
2530: 74 6f 3b 0a 20 20 20 20 72 65 73 75 6c 74 2e 77  to;.    result.w
2540: 72 61 70 70 65 64 20 3d 20 74 72 75 65 3b 0a 20  rapped = true;. 
2550: 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74     return result
2560: 0a 20 20 7d 0a 0a 20 20 76 61 72 20 63 6f 6d 6d  .  }..  var comm
2570: 6f 6e 6a 73 47 6c 6f 62 61 6c 24 24 31 20 3d 20  onjsGlobal$$1 = 
2580: 74 79 70 65 6f 66 20 77 69 6e 64 6f 77 20 21 3d  typeof window !=
2590: 3d 20 27 75 6e 64 65 66 69 6e 65 64 27 20 3f 20  = 'undefined' ? 
25a0: 77 69 6e 64 6f 77 20 3a 20 74 79 70 65 6f 66 20  window : typeof 
25b0: 63 6f 6d 6d 6f 6e 6a 73 47 6c 6f 62 61 6c 20 21  commonjsGlobal !
25c0: 3d 3d 20 27 75 6e 64 65 66 69 6e 65 64 27 20 3f  == 'undefined' ?
25d0: 20 63 6f 6d 6d 6f 6e 6a 73 47 6c 6f 62 61 6c 20   commonjsGlobal 
25e0: 3a 20 74 79 70 65 6f 66 20 73 65 6c 66 20 21 3d  : typeof self !=
25f0: 3d 20 27 75 6e 64 65 66 69 6e 65 64 27 20 3f 20  = 'undefined' ? 
2600: 73 65 6c 66 20 3a 20 7b 7d 3b 0a 0a 0a 0a 0a 0a  self : {};......
2610: 20 20 66 75 6e 63 74 69 6f 6e 20 63 72 65 61 74    function creat
2620: 65 43 6f 6d 6d 6f 6e 6a 73 4d 6f 64 75 6c 65 24  eCommonjsModule$
2630: 24 31 28 66 6e 2c 20 6d 6f 64 75 6c 65 29 20 7b  $1(fn, module) {
2640: 0a 20 20 09 72 65 74 75 72 6e 20 6d 6f 64 75 6c  .  .return modul
2650: 65 20 3d 20 7b 20 65 78 70 6f 72 74 73 3a 20 7b  e = { exports: {
2660: 7d 20 7d 2c 20 66 6e 28 6d 6f 64 75 6c 65 2c 20  } }, fn(module, 
2670: 6d 6f 64 75 6c 65 2e 65 78 70 6f 72 74 73 29 2c  module.exports),
2680: 20 6d 6f 64 75 6c 65 2e 65 78 70 6f 72 74 73 3b   module.exports;
2690: 0a 20 20 7d 0a 0a 20 20 76 61 72 20 65 73 70 72  .  }..  var espr
26a0: 69 6d 61 20 3d 20 63 72 65 61 74 65 43 6f 6d 6d  ima = createComm
26b0: 6f 6e 6a 73 4d 6f 64 75 6c 65 24 24 31 28 66 75  onjsModule$$1(fu
26c0: 6e 63 74 69 6f 6e 20 28 6d 6f 64 75 6c 65 2c 20  nction (module, 
26d0: 65 78 70 6f 72 74 73 29 20 7b 0a 20 20 28 66 75  exports) {.  (fu
26e0: 6e 63 74 69 6f 6e 20 77 65 62 70 61 63 6b 55 6e  nction webpackUn
26f0: 69 76 65 72 73 61 6c 4d 6f 64 75 6c 65 44 65 66  iversalModuleDef
2700: 69 6e 69 74 69 6f 6e 28 72 6f 6f 74 2c 20 66 61  inition(root, fa
2710: 63 74 6f 72 79 29 20 7b 0a 20 20 2f 2a 20 69 73  ctory) {.  /* is
2720: 74 61 6e 62 75 6c 20 69 67 6e 6f 72 65 20 6e 65  tanbul ignore ne
2730: 78 74 20 2a 2f 0a 20 20 09 6d 6f 64 75 6c 65 2e  xt */.  .module.
2740: 65 78 70 6f 72 74 73 20 3d 20 66 61 63 74 6f 72  exports = factor
2750: 79 28 29 3b 0a 20 20 7d 29 28 63 6f 6d 6d 6f 6e  y();.  })(common
2760: 6a 73 47 6c 6f 62 61 6c 24 24 31 2c 20 66 75 6e  jsGlobal$$1, fun
2770: 63 74 69 6f 6e 28 29 20 7b 0a 20 20 72 65 74 75  ction() {.  retu
2780: 72 6e 20 2f 2a 2a 2a 2a 2a 2a 2f 20 28 66 75 6e  rn /******/ (fun
2790: 63 74 69 6f 6e 28 6d 6f 64 75 6c 65 73 29 20 7b  ction(modules) {
27a0: 20 2f 2f 20 77 65 62 70 61 63 6b 42 6f 6f 74 73   // webpackBoots
27b0: 74 72 61 70 0a 20 20 2f 2a 2a 2a 2a 2a 2a 2f 20  trap.  /******/ 
27c0: 09 2f 2f 20 54 68 65 20 6d 6f 64 75 6c 65 20 63  .// The module c
27d0: 61 63 68 65 0a 20 20 2f 2a 2a 2a 2a 2a 2a 2f 20  ache.  /******/ 
27e0: 09 76 61 72 20 69 6e 73 74 61 6c 6c 65 64 4d 6f  .var installedMo
27f0: 64 75 6c 65 73 20 3d 20 7b 7d 3b 0a 0a 20 20 2f  dules = {};..  /
2800: 2a 2a 2a 2a 2a 2a 2f 20 09 2f 2f 20 54 68 65 20  ******/ .// The 
2810: 72 65 71 75 69 72 65 20 66 75 6e 63 74 69 6f 6e  require function
2820: 0a 20 20 2f 2a 2a 2a 2a 2a 2a 2f 20 09 66 75 6e  .  /******/ .fun
2830: 63 74 69 6f 6e 20 5f 5f 77 65 62 70 61 63 6b 5f  ction __webpack_
2840: 72 65 71 75 69 72 65 5f 5f 28 6d 6f 64 75 6c 65  require__(module
2850: 49 64 29 20 7b 0a 0a 20 20 2f 2a 2a 2a 2a 2a 2a  Id) {..  /******
2860: 2f 20 09 09 2f 2f 20 43 68 65 63 6b 20 69 66 20  / ..// Check if 
2870: 6d 6f 64 75 6c 65 20 69 73 20 69 6e 20 63 61 63  module is in cac
2880: 68 65 0a 20 20 2f 2a 20 69 73 74 61 6e 62 75 6c  he.  /* istanbul
2890: 20 69 67 6e 6f 72 65 20 69 66 20 2a 2f 0a 20 20   ignore if */.  
28a0: 2f 2a 2a 2a 2a 2a 2a 2f 20 09 09 69 66 28 69 6e  /******/ ..if(in
28b0: 73 74 61 6c 6c 65 64 4d 6f 64 75 6c 65 73 5b 6d  stalledModules[m
28c0: 6f 64 75 6c 65 49 64 5d 29 0a 20 20 2f 2a 2a 2a  oduleId]).  /***
28d0: 2a 2a 2a 2f 20 09 09 09 7b 20 72 65 74 75 72 6e  ***/ ...{ return
28e0: 20 69 6e 73 74 61 6c 6c 65 64 4d 6f 64 75 6c 65   installedModule
28f0: 73 5b 6d 6f 64 75 6c 65 49 64 5d 2e 65 78 70 6f  s[moduleId].expo
2900: 72 74 73 3b 20 7d 0a 0a 20 20 2f 2a 2a 2a 2a 2a  rts; }..  /*****
2910: 2a 2f 20 09 09 2f 2f 20 43 72 65 61 74 65 20 61  */ ..// Create a
2920: 20 6e 65 77 20 6d 6f 64 75 6c 65 20 28 61 6e 64   new module (and
2930: 20 70 75 74 20 69 74 20 69 6e 74 6f 20 74 68 65   put it into the
2940: 20 63 61 63 68 65 29 0a 20 20 2f 2a 2a 2a 2a 2a   cache).  /*****
2950: 2a 2f 20 09 09 76 61 72 20 6d 6f 64 75 6c 65 20  */ ..var module 
2960: 3d 20 69 6e 73 74 61 6c 6c 65 64 4d 6f 64 75 6c  = installedModul
2970: 65 73 5b 6d 6f 64 75 6c 65 49 64 5d 20 3d 20 7b  es[moduleId] = {
2980: 0a 20 20 2f 2a 2a 2a 2a 2a 2a 2f 20 09 09 09 65  .  /******/ ...e
2990: 78 70 6f 72 74 73 3a 20 7b 7d 2c 0a 20 20 2f 2a  xports: {},.  /*
29a0: 2a 2a 2a 2a 2a 2f 20 09 09 09 69 64 3a 20 6d 6f  *****/ ...id: mo
29b0: 64 75 6c 65 49 64 2c 0a 20 20 2f 2a 2a 2a 2a 2a  duleId,.  /*****
29c0: 2a 2f 20 09 09 09 6c 6f 61 64 65 64 3a 20 66 61  */ ...loaded: fa
29d0: 6c 73 65 0a 20 20 2f 2a 2a 2a 2a 2a 2a 2f 20 09  lse.  /******/ .
29e0: 09 7d 3b 0a 0a 20 20 2f 2a 2a 2a 2a 2a 2a 2f 20  .};..  /******/ 
29f0: 09 09 2f 2f 20 45 78 65 63 75 74 65 20 74 68 65  ..// Execute the
2a00: 20 6d 6f 64 75 6c 65 20 66 75 6e 63 74 69 6f 6e   module function
2a10: 0a 20 20 2f 2a 2a 2a 2a 2a 2a 2f 20 09 09 6d 6f  .  /******/ ..mo
2a20: 64 75 6c 65 73 5b 6d 6f 64 75 6c 65 49 64 5d 2e  dules[moduleId].
2a30: 63 61 6c 6c 28 6d 6f 64 75 6c 65 2e 65 78 70 6f  call(module.expo
2a40: 72 74 73 2c 20 6d 6f 64 75 6c 65 2c 20 6d 6f 64  rts, module, mod
2a50: 75 6c 65 2e 65 78 70 6f 72 74 73 2c 20 5f 5f 77  ule.exports, __w
2a60: 65 62 70 61 63 6b 5f 72 65 71 75 69 72 65 5f 5f  ebpack_require__
2a70: 29 3b 0a 0a 20 20 2f 2a 2a 2a 2a 2a 2a 2f 20 09  );..  /******/ .
2a80: 09 2f 2f 20 46 6c 61 67 20 74 68 65 20 6d 6f 64  .// Flag the mod
2a90: 75 6c 65 20 61 73 20 6c 6f 61 64 65 64 0a 20 20  ule as loaded.  
2aa0: 2f 2a 2a 2a 2a 2a 2a 2f 20 09 09 6d 6f 64 75 6c  /******/ ..modul
2ab0: 65 2e 6c 6f 61 64 65 64 20 3d 20 74 72 75 65 3b  e.loaded = true;
2ac0: 0a 0a 20 20 2f 2a 2a 2a 2a 2a 2a 2f 20 09 09 2f  ..  /******/ ../
2ad0: 2f 20 52 65 74 75 72 6e 20 74 68 65 20 65 78 70  / Return the exp
2ae0: 6f 72 74 73 20 6f 66 20 74 68 65 20 6d 6f 64 75  orts of the modu
2af0: 6c 65 0a 20 20 2f 2a 2a 2a 2a 2a 2a 2f 20 09 09  le.  /******/ ..
2b00: 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 65 78  return module.ex
2b10: 70 6f 72 74 73 3b 0a 20 20 2f 2a 2a 2a 2a 2a 2a  ports;.  /******
2b20: 2f 20 09 7d 0a 0a 0a 20 20 2f 2a 2a 2a 2a 2a 2a  / .}...  /******
2b30: 2f 20 09 2f 2f 20 65 78 70 6f 73 65 20 74 68 65  / .// expose the
2b40: 20 6d 6f 64 75 6c 65 73 20 6f 62 6a 65 63 74 20   modules object 
2b50: 28 5f 5f 77 65 62 70 61 63 6b 5f 6d 6f 64 75 6c  (__webpack_modul
2b60: 65 73 5f 5f 29 0a 20 20 2f 2a 2a 2a 2a 2a 2a 2f  es__).  /******/
2b70: 20 09 5f 5f 77 65 62 70 61 63 6b 5f 72 65 71 75   .__webpack_requ
2b80: 69 72 65 5f 5f 2e 6d 20 3d 20 6d 6f 64 75 6c 65  ire__.m = module
2b90: 73 3b 0a 0a 20 20 2f 2a 2a 2a 2a 2a 2a 2f 20 09  s;..  /******/ .
2ba0: 2f 2f 20 65 78 70 6f 73 65 20 74 68 65 20 6d 6f  // expose the mo
2bb0: 64 75 6c 65 20 63 61 63 68 65 0a 20 20 2f 2a 2a  dule cache.  /**
2bc0: 2a 2a 2a 2a 2f 20 09 5f 5f 77 65 62 70 61 63 6b  ****/ .__webpack
2bd0: 5f 72 65 71 75 69 72 65 5f 5f 2e 63 20 3d 20 69  _require__.c = i
2be0: 6e 73 74 61 6c 6c 65 64 4d 6f 64 75 6c 65 73 3b  nstalledModules;
2bf0: 0a 0a 20 20 2f 2a 2a 2a 2a 2a 2a 2f 20 09 2f 2f  ..  /******/ .//
2c00: 20 5f 5f 77 65 62 70 61 63 6b 5f 70 75 62 6c 69   __webpack_publi
2c10: 63 5f 70 61 74 68 5f 5f 0a 20 20 2f 2a 2a 2a 2a  c_path__.  /****
2c20: 2a 2a 2f 20 09 5f 5f 77 65 62 70 61 63 6b 5f 72  **/ .__webpack_r
2c30: 65 71 75 69 72 65 5f 5f 2e 70 20 3d 20 22 22 3b  equire__.p = "";
2c40: 0a 0a 20 20 2f 2a 2a 2a 2a 2a 2a 2f 20 09 2f 2f  ..  /******/ .//
2c50: 20 4c 6f 61 64 20 65 6e 74 72 79 20 6d 6f 64 75   Load entry modu
2c60: 6c 65 20 61 6e 64 20 72 65 74 75 72 6e 20 65 78  le and return ex
2c70: 70 6f 72 74 73 0a 20 20 2f 2a 2a 2a 2a 2a 2a 2f  ports.  /******/
2c80: 20 09 72 65 74 75 72 6e 20 5f 5f 77 65 62 70 61   .return __webpa
2c90: 63 6b 5f 72 65 71 75 69 72 65 5f 5f 28 30 29 3b  ck_require__(0);
2ca0: 0a 20 20 2f 2a 2a 2a 2a 2a 2a 2f 20 7d 29 0a 20  .  /******/ }). 
2cb0: 20 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a   /**************
2cc0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
2cd0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
2ce0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
2cf0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 20 20 2f 2a  **********/.  /*
2d00: 2a 2a 2a 2a 2a 2f 20 28 5b 0a 20 20 2f 2a 20 30  *****/ ([.  /* 0
2d10: 20 2a 2f 0a 20 20 2f 2a 2a 2a 2f 20 66 75 6e 63   */.  /***/ func
2d20: 74 69 6f 6e 28 6d 6f 64 75 6c 65 2c 20 65 78 70  tion(module, exp
2d30: 6f 72 74 73 2c 20 5f 5f 77 65 62 70 61 63 6b 5f  orts, __webpack_
2d40: 72 65 71 75 69 72 65 5f 5f 29 20 7b 0a 20 20 09  require__) {.  .
2d50: 76 61 72 20 63 6f 6d 6d 65 6e 74 5f 68 61 6e 64  var comment_hand
2d60: 6c 65 72 5f 31 20 3d 20 5f 5f 77 65 62 70 61 63  ler_1 = __webpac
2d70: 6b 5f 72 65 71 75 69 72 65 5f 5f 28 31 29 3b 0a  k_require__(1);.
2d80: 20 20 09 76 61 72 20 70 61 72 73 65 72 5f 31 20    .var parser_1 
2d90: 3d 20 5f 5f 77 65 62 70 61 63 6b 5f 72 65 71 75  = __webpack_requ
2da0: 69 72 65 5f 5f 28 33 29 3b 0a 20 20 09 76 61 72  ire__(3);.  .var
2db0: 20 6a 73 78 5f 70 61 72 73 65 72 5f 31 20 3d 20   jsx_parser_1 = 
2dc0: 5f 5f 77 65 62 70 61 63 6b 5f 72 65 71 75 69 72  __webpack_requir
2dd0: 65 5f 5f 28 31 31 29 3b 0a 20 20 09 76 61 72 20  e__(11);.  .var 
2de0: 74 6f 6b 65 6e 69 7a 65 72 5f 31 20 3d 20 5f 5f  tokenizer_1 = __
2df0: 77 65 62 70 61 63 6b 5f 72 65 71 75 69 72 65 5f  webpack_require_
2e00: 5f 28 31 35 29 3b 0a 20 20 09 66 75 6e 63 74 69  _(15);.  .functi
2e10: 6f 6e 20 70 61 72 73 65 28 63 6f 64 65 2c 20 6f  on parse(code, o
2e20: 70 74 69 6f 6e 73 2c 20 64 65 6c 65 67 61 74 65  ptions, delegate
2e30: 29 20 7b 0a 20 20 09 20 20 20 20 76 61 72 20 63  ) {.  .    var c
2e40: 6f 6d 6d 65 6e 74 48 61 6e 64 6c 65 72 20 3d 20  ommentHandler = 
2e50: 6e 75 6c 6c 3b 0a 20 20 09 20 20 20 20 76 61 72  null;.  .    var
2e60: 20 70 72 6f 78 79 44 65 6c 65 67 61 74 65 20 3d   proxyDelegate =
2e70: 20 66 75 6e 63 74 69 6f 6e 20 28 6e 6f 64 65 2c   function (node,
2e80: 20 6d 65 74 61 64 61 74 61 29 20 7b 0a 20 20 09   metadata) {.  .
2e90: 20 20 20 20 20 20 20 20 69 66 20 28 64 65 6c 65          if (dele
2ea0: 67 61 74 65 29 20 7b 0a 20 20 09 20 20 20 20 20  gate) {.  .     
2eb0: 20 20 20 20 20 20 20 64 65 6c 65 67 61 74 65 28         delegate(
2ec0: 6e 6f 64 65 2c 20 6d 65 74 61 64 61 74 61 29 3b  node, metadata);
2ed0: 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a 20 20  .  .        }.  
2ee0: 09 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6d  .        if (com
2ef0: 6d 65 6e 74 48 61 6e 64 6c 65 72 29 20 7b 0a 20  mentHandler) {. 
2f00: 20 09 20 20 20 20 20 20 20 20 20 20 20 20 63 6f   .            co
2f10: 6d 6d 65 6e 74 48 61 6e 64 6c 65 72 2e 76 69 73  mmentHandler.vis
2f20: 69 74 28 6e 6f 64 65 2c 20 6d 65 74 61 64 61 74  it(node, metadat
2f30: 61 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 7d  a);.  .        }
2f40: 0a 20 20 09 20 20 20 20 7d 3b 0a 20 20 09 20 20  .  .    };.  .  
2f50: 20 20 76 61 72 20 70 61 72 73 65 72 44 65 6c 65    var parserDele
2f60: 67 61 74 65 20 3d 20 28 74 79 70 65 6f 66 20 64  gate = (typeof d
2f70: 65 6c 65 67 61 74 65 20 3d 3d 3d 20 27 66 75 6e  elegate === 'fun
2f80: 63 74 69 6f 6e 27 29 20 3f 20 70 72 6f 78 79 44  ction') ? proxyD
2f90: 65 6c 65 67 61 74 65 20 3a 20 6e 75 6c 6c 3b 0a  elegate : null;.
2fa0: 20 20 09 20 20 20 20 76 61 72 20 63 6f 6c 6c 65    .    var colle
2fb0: 63 74 43 6f 6d 6d 65 6e 74 20 3d 20 66 61 6c 73  ctComment = fals
2fc0: 65 3b 0a 20 20 09 20 20 20 20 69 66 20 28 6f 70  e;.  .    if (op
2fd0: 74 69 6f 6e 73 29 20 7b 0a 20 20 09 20 20 20 20  tions) {.  .    
2fe0: 20 20 20 20 63 6f 6c 6c 65 63 74 43 6f 6d 6d 65      collectComme
2ff0: 6e 74 20 3d 20 28 74 79 70 65 6f 66 20 6f 70 74  nt = (typeof opt
3000: 69 6f 6e 73 2e 63 6f 6d 6d 65 6e 74 20 3d 3d 3d  ions.comment ===
3010: 20 27 62 6f 6f 6c 65 61 6e 27 20 26 26 20 6f 70   'boolean' && op
3020: 74 69 6f 6e 73 2e 63 6f 6d 6d 65 6e 74 29 3b 0a  tions.comment);.
3030: 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20 61    .        var a
3040: 74 74 61 63 68 43 6f 6d 6d 65 6e 74 20 3d 20 28  ttachComment = (
3050: 74 79 70 65 6f 66 20 6f 70 74 69 6f 6e 73 2e 61  typeof options.a
3060: 74 74 61 63 68 43 6f 6d 6d 65 6e 74 20 3d 3d 3d  ttachComment ===
3070: 20 27 62 6f 6f 6c 65 61 6e 27 20 26 26 20 6f 70   'boolean' && op
3080: 74 69 6f 6e 73 2e 61 74 74 61 63 68 43 6f 6d 6d  tions.attachComm
3090: 65 6e 74 29 3b 0a 20 20 09 20 20 20 20 20 20 20  ent);.  .       
30a0: 20 69 66 20 28 63 6f 6c 6c 65 63 74 43 6f 6d 6d   if (collectComm
30b0: 65 6e 74 20 7c 7c 20 61 74 74 61 63 68 43 6f 6d  ent || attachCom
30c0: 6d 65 6e 74 29 20 7b 0a 20 20 09 20 20 20 20 20  ment) {.  .     
30d0: 20 20 20 20 20 20 20 63 6f 6d 6d 65 6e 74 48 61         commentHa
30e0: 6e 64 6c 65 72 20 3d 20 6e 65 77 20 63 6f 6d 6d  ndler = new comm
30f0: 65 6e 74 5f 68 61 6e 64 6c 65 72 5f 31 2e 43 6f  ent_handler_1.Co
3100: 6d 6d 65 6e 74 48 61 6e 64 6c 65 72 28 29 3b 0a  mmentHandler();.
3110: 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 63    .            c
3120: 6f 6d 6d 65 6e 74 48 61 6e 64 6c 65 72 2e 61 74  ommentHandler.at
3130: 74 61 63 68 20 3d 20 61 74 74 61 63 68 43 6f 6d  tach = attachCom
3140: 6d 65 6e 74 3b 0a 20 20 09 20 20 20 20 20 20 20  ment;.  .       
3150: 20 20 20 20 20 6f 70 74 69 6f 6e 73 2e 63 6f 6d       options.com
3160: 6d 65 6e 74 20 3d 20 74 72 75 65 3b 0a 20 20 09  ment = true;.  .
3170: 20 20 20 20 20 20 20 20 20 20 20 20 70 61 72 73              pars
3180: 65 72 44 65 6c 65 67 61 74 65 20 3d 20 70 72 6f  erDelegate = pro
3190: 78 79 44 65 6c 65 67 61 74 65 3b 0a 20 20 09 20  xyDelegate;.  . 
31a0: 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20         }.  .    
31b0: 7d 0a 20 20 09 20 20 20 20 76 61 72 20 70 61 72  }.  .    var par
31c0: 73 65 72 3b 0a 20 20 09 20 20 20 20 69 66 20 28  ser;.  .    if (
31d0: 6f 70 74 69 6f 6e 73 20 26 26 20 74 79 70 65 6f  options && typeo
31e0: 66 20 6f 70 74 69 6f 6e 73 2e 6a 73 78 20 3d 3d  f options.jsx ==
31f0: 3d 20 27 62 6f 6f 6c 65 61 6e 27 20 26 26 20 6f  = 'boolean' && o
3200: 70 74 69 6f 6e 73 2e 6a 73 78 29 20 7b 0a 20 20  ptions.jsx) {.  
3210: 09 20 20 20 20 20 20 20 20 70 61 72 73 65 72 20  .        parser 
3220: 3d 20 6e 65 77 20 6a 73 78 5f 70 61 72 73 65 72  = new jsx_parser
3230: 5f 31 2e 4a 53 58 50 61 72 73 65 72 28 63 6f 64  _1.JSXParser(cod
3240: 65 2c 20 6f 70 74 69 6f 6e 73 2c 20 70 61 72 73  e, options, pars
3250: 65 72 44 65 6c 65 67 61 74 65 29 3b 0a 20 20 09  erDelegate);.  .
3260: 20 20 20 20 7d 0a 20 20 09 20 20 20 20 65 6c 73      }.  .    els
3270: 65 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 70  e {.  .        p
3280: 61 72 73 65 72 20 3d 20 6e 65 77 20 70 61 72 73  arser = new pars
3290: 65 72 5f 31 2e 50 61 72 73 65 72 28 63 6f 64 65  er_1.Parser(code
32a0: 2c 20 6f 70 74 69 6f 6e 73 2c 20 70 61 72 73 65  , options, parse
32b0: 72 44 65 6c 65 67 61 74 65 29 3b 0a 20 20 09 20  rDelegate);.  . 
32c0: 20 20 20 7d 0a 20 20 09 20 20 20 20 76 61 72 20     }.  .    var 
32d0: 61 73 74 20 3d 20 28 70 61 72 73 65 72 2e 70 61  ast = (parser.pa
32e0: 72 73 65 50 72 6f 67 72 61 6d 28 29 29 3b 0a 20  rseProgram());. 
32f0: 20 09 20 20 20 20 69 66 20 28 63 6f 6c 6c 65 63   .    if (collec
3300: 74 43 6f 6d 6d 65 6e 74 29 20 7b 0a 20 20 09 20  tComment) {.  . 
3310: 20 20 20 20 20 20 20 61 73 74 2e 63 6f 6d 6d 65         ast.comme
3320: 6e 74 73 20 3d 20 63 6f 6d 6d 65 6e 74 48 61 6e  nts = commentHan
3330: 64 6c 65 72 2e 63 6f 6d 6d 65 6e 74 73 3b 0a 20  dler.comments;. 
3340: 20 09 20 20 20 20 7d 0a 20 20 09 20 20 20 20 69   .    }.  .    i
3350: 66 20 28 70 61 72 73 65 72 2e 63 6f 6e 66 69 67  f (parser.config
3360: 2e 74 6f 6b 65 6e 73 29 20 7b 0a 20 20 09 20 20  .tokens) {.  .  
3370: 20 20 20 20 20 20 61 73 74 2e 74 6f 6b 65 6e 73        ast.tokens
3380: 20 3d 20 70 61 72 73 65 72 2e 74 6f 6b 65 6e 73   = parser.tokens
3390: 3b 0a 20 20 09 20 20 20 20 7d 0a 20 20 09 20 20  ;.  .    }.  .  
33a0: 20 20 69 66 20 28 70 61 72 73 65 72 2e 63 6f 6e    if (parser.con
33b0: 66 69 67 2e 74 6f 6c 65 72 61 6e 74 29 20 7b 0a  fig.tolerant) {.
33c0: 20 20 09 20 20 20 20 20 20 20 20 61 73 74 2e 65    .        ast.e
33d0: 72 72 6f 72 73 20 3d 20 70 61 72 73 65 72 2e 65  rrors = parser.e
33e0: 72 72 6f 72 48 61 6e 64 6c 65 72 2e 65 72 72 6f  rrorHandler.erro
33f0: 72 73 3b 0a 20 20 09 20 20 20 20 7d 0a 20 20 09  rs;.  .    }.  .
3400: 20 20 20 20 72 65 74 75 72 6e 20 61 73 74 3b 0a      return ast;.
3410: 20 20 09 7d 0a 20 20 09 65 78 70 6f 72 74 73 2e    .}.  .exports.
3420: 70 61 72 73 65 20 3d 20 70 61 72 73 65 3b 0a 20  parse = parse;. 
3430: 20 09 66 75 6e 63 74 69 6f 6e 20 74 6f 6b 65 6e   .function token
3440: 69 7a 65 28 63 6f 64 65 2c 20 6f 70 74 69 6f 6e  ize(code, option
3450: 73 2c 20 64 65 6c 65 67 61 74 65 29 20 7b 0a 20  s, delegate) {. 
3460: 20 09 20 20 20 20 76 61 72 20 74 6f 6b 65 6e 69   .    var tokeni
3470: 7a 65 72 20 3d 20 6e 65 77 20 74 6f 6b 65 6e 69  zer = new tokeni
3480: 7a 65 72 5f 31 2e 54 6f 6b 65 6e 69 7a 65 72 28  zer_1.Tokenizer(
3490: 63 6f 64 65 2c 20 6f 70 74 69 6f 6e 73 29 3b 0a  code, options);.
34a0: 20 20 09 20 20 20 20 76 61 72 20 74 6f 6b 65 6e    .    var token
34b0: 73 3b 0a 20 20 09 20 20 20 20 74 6f 6b 65 6e 73  s;.  .    tokens
34c0: 20 3d 20 5b 5d 3b 0a 20 20 09 20 20 20 20 74 72   = [];.  .    tr
34d0: 79 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 77  y {.  .        w
34e0: 68 69 6c 65 20 28 74 72 75 65 29 20 7b 0a 20 20  hile (true) {.  
34f0: 09 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72  .            var
3500: 20 74 6f 6b 65 6e 20 3d 20 74 6f 6b 65 6e 69 7a   token = tokeniz
3510: 65 72 2e 67 65 74 4e 65 78 74 54 6f 6b 65 6e 28  er.getNextToken(
3520: 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  );.  .          
3530: 20 20 69 66 20 28 21 74 6f 6b 65 6e 29 20 7b 0a    if (!token) {.
3540: 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
3550: 20 20 20 62 72 65 61 6b 3b 0a 20 20 09 20 20 20     break;.  .   
3560: 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20           }.  .  
3570: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64 65            if (de
3580: 6c 65 67 61 74 65 29 20 7b 0a 20 20 09 20 20 20  legate) {.  .   
3590: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 6b               tok
35a0: 65 6e 20 3d 20 64 65 6c 65 67 61 74 65 28 74 6f  en = delegate(to
35b0: 6b 65 6e 29 3b 0a 20 20 09 20 20 20 20 20 20 20  ken);.  .       
35c0: 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20       }.  .      
35d0: 20 20 20 20 20 20 74 6f 6b 65 6e 73 2e 70 75 73        tokens.pus
35e0: 68 28 74 6f 6b 65 6e 29 3b 0a 20 20 09 20 20 20  h(token);.  .   
35f0: 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 7d 0a       }.  .    }.
3600: 20 20 09 20 20 20 20 63 61 74 63 68 20 28 65 29    .    catch (e)
3610: 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 74 6f   {.  .        to
3620: 6b 65 6e 69 7a 65 72 2e 65 72 72 6f 72 48 61 6e  kenizer.errorHan
3630: 64 6c 65 72 2e 74 6f 6c 65 72 61 74 65 28 65 29  dler.tolerate(e)
3640: 3b 0a 20 20 09 20 20 20 20 7d 0a 20 20 09 20 20  ;.  .    }.  .  
3650: 20 20 69 66 20 28 74 6f 6b 65 6e 69 7a 65 72 2e    if (tokenizer.
3660: 65 72 72 6f 72 48 61 6e 64 6c 65 72 2e 74 6f 6c  errorHandler.tol
3670: 65 72 61 6e 74 29 20 7b 0a 20 20 09 20 20 20 20  erant) {.  .    
3680: 20 20 20 20 74 6f 6b 65 6e 73 2e 65 72 72 6f 72      tokens.error
3690: 73 20 3d 20 74 6f 6b 65 6e 69 7a 65 72 2e 65 72  s = tokenizer.er
36a0: 72 6f 72 73 28 29 3b 0a 20 20 09 20 20 20 20 7d  rors();.  .    }
36b0: 0a 20 20 09 20 20 20 20 72 65 74 75 72 6e 20 74  .  .    return t
36c0: 6f 6b 65 6e 73 3b 0a 20 20 09 7d 0a 20 20 09 65  okens;.  .}.  .e
36d0: 78 70 6f 72 74 73 2e 74 6f 6b 65 6e 69 7a 65 20  xports.tokenize 
36e0: 3d 20 74 6f 6b 65 6e 69 7a 65 3b 0a 20 20 09 76  = tokenize;.  .v
36f0: 61 72 20 73 79 6e 74 61 78 5f 31 20 3d 20 5f 5f  ar syntax_1 = __
3700: 77 65 62 70 61 63 6b 5f 72 65 71 75 69 72 65 5f  webpack_require_
3710: 5f 28 32 29 3b 0a 20 20 09 65 78 70 6f 72 74 73  _(2);.  .exports
3720: 2e 53 79 6e 74 61 78 20 3d 20 73 79 6e 74 61 78  .Syntax = syntax
3730: 5f 31 2e 53 79 6e 74 61 78 3b 0a 20 20 09 2f 2f  _1.Syntax;.  .//
3740: 20 53 79 6e 63 20 77 69 74 68 20 2a 2e 6a 73 6f   Sync with *.jso
3750: 6e 20 6d 61 6e 69 66 65 73 74 73 2e 0a 20 20 09  n manifests..  .
3760: 65 78 70 6f 72 74 73 2e 76 65 72 73 69 6f 6e 20  exports.version 
3770: 3d 20 27 33 2e 31 2e 33 27 3b 0a 0a 0a 20 20 2f  = '3.1.3';...  /
3780: 2a 2a 2a 2f 20 7d 2c 0a 20 20 2f 2a 20 31 20 2a  ***/ },.  /* 1 *
3790: 2f 0a 20 20 2f 2a 2a 2a 2f 20 66 75 6e 63 74 69  /.  /***/ functi
37a0: 6f 6e 28 6d 6f 64 75 6c 65 2c 20 65 78 70 6f 72  on(module, expor
37b0: 74 73 2c 20 5f 5f 77 65 62 70 61 63 6b 5f 72 65  ts, __webpack_re
37c0: 71 75 69 72 65 5f 5f 29 20 7b 0a 20 20 09 76 61  quire__) {.  .va
37d0: 72 20 73 79 6e 74 61 78 5f 31 20 3d 20 5f 5f 77  r syntax_1 = __w
37e0: 65 62 70 61 63 6b 5f 72 65 71 75 69 72 65 5f 5f  ebpack_require__
37f0: 28 32 29 3b 0a 20 20 09 76 61 72 20 43 6f 6d 6d  (2);.  .var Comm
3800: 65 6e 74 48 61 6e 64 6c 65 72 20 3d 20 28 66 75  entHandler = (fu
3810: 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20 09 20  nction () {.  . 
3820: 20 20 20 66 75 6e 63 74 69 6f 6e 20 43 6f 6d 6d     function Comm
3830: 65 6e 74 48 61 6e 64 6c 65 72 28 29 20 7b 0a 20  entHandler() {. 
3840: 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 61   .        this.a
3850: 74 74 61 63 68 20 3d 20 66 61 6c 73 65 3b 0a 20  ttach = false;. 
3860: 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 63   .        this.c
3870: 6f 6d 6d 65 6e 74 73 20 3d 20 5b 5d 3b 0a 20 20  omments = [];.  
3880: 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 73 74  .        this.st
3890: 61 63 6b 20 3d 20 5b 5d 3b 0a 20 20 09 20 20 20  ack = [];.  .   
38a0: 20 20 20 20 20 74 68 69 73 2e 6c 65 61 64 69 6e       this.leadin
38b0: 67 20 3d 20 5b 5d 3b 0a 20 20 09 20 20 20 20 20  g = [];.  .     
38c0: 20 20 20 74 68 69 73 2e 74 72 61 69 6c 69 6e 67     this.trailing
38d0: 20 3d 20 5b 5d 3b 0a 20 20 09 20 20 20 20 7d 0a   = [];.  .    }.
38e0: 20 20 09 20 20 20 20 43 6f 6d 6d 65 6e 74 48 61    .    CommentHa
38f0: 6e 64 6c 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e  ndler.prototype.
3900: 69 6e 73 65 72 74 49 6e 6e 65 72 43 6f 6d 6d 65  insertInnerComme
3910: 6e 74 73 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28  nts = function (
3920: 6e 6f 64 65 2c 20 6d 65 74 61 64 61 74 61 29 20  node, metadata) 
3930: 7b 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72  {.  .        var
3940: 20 74 68 69 73 24 31 20 3d 20 74 68 69 73 3b 0a   this$1 = this;.
3950: 0a 20 20 09 20 20 20 20 20 20 20 20 2f 2f 20 20  .  .        //  
3960: 69 6e 6e 6e 65 72 43 6f 6d 6d 65 6e 74 73 20 66  innnerComments f
3970: 6f 72 20 70 72 6f 70 65 72 74 69 65 73 20 65 6d  or properties em
3980: 70 74 79 20 62 6c 6f 63 6b 0a 20 20 09 20 20 20  pty block.  .   
3990: 20 20 20 20 20 2f 2f 20 20 60 66 75 6e 63 74 69       //  `functi
39a0: 6f 6e 20 61 28 29 20 7b 2f 2a 2a 20 63 6f 6d 6d  on a() {/** comm
39b0: 65 6e 74 73 20 2a 2a 5c 2f 7d 60 0a 20 20 09 20  ents **\/}`.  . 
39c0: 20 20 20 20 20 20 20 69 66 20 28 6e 6f 64 65 2e         if (node.
39d0: 74 79 70 65 20 3d 3d 3d 20 73 79 6e 74 61 78 5f  type === syntax_
39e0: 31 2e 53 79 6e 74 61 78 2e 42 6c 6f 63 6b 53 74  1.Syntax.BlockSt
39f0: 61 74 65 6d 65 6e 74 20 26 26 20 6e 6f 64 65 2e  atement && node.
3a00: 62 6f 64 79 2e 6c 65 6e 67 74 68 20 3d 3d 3d 20  body.length === 
3a10: 30 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20  0) {.  .        
3a20: 20 20 20 20 76 61 72 20 69 6e 6e 65 72 43 6f 6d      var innerCom
3a30: 6d 65 6e 74 73 20 3d 20 5b 5d 3b 0a 20 20 09 20  ments = [];.  . 
3a40: 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28             for (
3a50: 76 61 72 20 69 20 3d 20 74 68 69 73 2e 6c 65 61  var i = this.lea
3a60: 64 69 6e 67 2e 6c 65 6e 67 74 68 20 2d 20 31 3b  ding.length - 1;
3a70: 20 69 20 3e 3d 20 30 3b 20 2d 2d 69 29 20 7b 0a   i >= 0; --i) {.
3a80: 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
3a90: 20 20 20 76 61 72 20 65 6e 74 72 79 20 3d 20 74     var entry = t
3aa0: 68 69 73 24 31 2e 6c 65 61 64 69 6e 67 5b 69 5d  his$1.leading[i]
3ab0: 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
3ac0: 20 20 20 20 20 69 66 20 28 6d 65 74 61 64 61 74       if (metadat
3ad0: 61 2e 65 6e 64 2e 6f 66 66 73 65 74 20 3e 3d 20  a.end.offset >= 
3ae0: 65 6e 74 72 79 2e 73 74 61 72 74 29 20 7b 0a 20  entry.start) {. 
3af0: 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
3b00: 20 20 20 20 20 20 69 6e 6e 65 72 43 6f 6d 6d 65        innerComme
3b10: 6e 74 73 2e 75 6e 73 68 69 66 74 28 65 6e 74 72  nts.unshift(entr
3b20: 79 2e 63 6f 6d 6d 65 6e 74 29 3b 0a 20 20 09 20  y.comment);.  . 
3b30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3b40: 20 20 20 74 68 69 73 24 31 2e 6c 65 61 64 69 6e     this$1.leadin
3b50: 67 2e 73 70 6c 69 63 65 28 69 2c 20 31 29 3b 0a  g.splice(i, 1);.
3b60: 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
3b70: 20 20 20 20 20 20 20 74 68 69 73 24 31 2e 74 72         this$1.tr
3b80: 61 69 6c 69 6e 67 2e 73 70 6c 69 63 65 28 69 2c  ailing.splice(i,
3b90: 20 31 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20   1);.  .        
3ba0: 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20          }.  .   
3bb0: 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20           }.  .  
3bc0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69 6e            if (in
3bd0: 6e 65 72 43 6f 6d 6d 65 6e 74 73 2e 6c 65 6e 67  nerComments.leng
3be0: 74 68 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20  th) {.  .       
3bf0: 20 20 20 20 20 20 20 20 20 6e 6f 64 65 2e 69 6e           node.in
3c00: 6e 65 72 43 6f 6d 6d 65 6e 74 73 20 3d 20 69 6e  nerComments = in
3c10: 6e 65 72 43 6f 6d 6d 65 6e 74 73 3b 0a 20 20 09  nerComments;.  .
3c20: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20              }.  
3c30: 09 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20  .        }.  .  
3c40: 20 20 7d 3b 0a 20 20 09 20 20 20 20 43 6f 6d 6d    };.  .    Comm
3c50: 65 6e 74 48 61 6e 64 6c 65 72 2e 70 72 6f 74 6f  entHandler.proto
3c60: 74 79 70 65 2e 66 69 6e 64 54 72 61 69 6c 69 6e  type.findTrailin
3c70: 67 43 6f 6d 6d 65 6e 74 73 20 3d 20 66 75 6e 63  gComments = func
3c80: 74 69 6f 6e 20 28 6e 6f 64 65 2c 20 6d 65 74 61  tion (node, meta
3c90: 64 61 74 61 29 20 7b 0a 20 20 09 20 20 20 20 20  data) {.  .     
3ca0: 20 20 20 76 61 72 20 74 68 69 73 24 31 20 3d 20     var this$1 = 
3cb0: 74 68 69 73 3b 0a 0a 20 20 09 20 20 20 20 20 20  this;..  .      
3cc0: 20 20 76 61 72 20 74 72 61 69 6c 69 6e 67 43 6f    var trailingCo
3cd0: 6d 6d 65 6e 74 73 20 3d 20 5b 5d 3b 0a 20 20 09  mments = [];.  .
3ce0: 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73          if (this
3cf0: 2e 74 72 61 69 6c 69 6e 67 2e 6c 65 6e 67 74 68  .trailing.length
3d00: 20 3e 20 30 29 20 7b 0a 20 20 09 20 20 20 20 20   > 0) {.  .     
3d10: 20 20 20 20 20 20 20 66 6f 72 20 28 76 61 72 20         for (var 
3d20: 69 20 3d 20 74 68 69 73 2e 74 72 61 69 6c 69 6e  i = this.trailin
3d30: 67 2e 6c 65 6e 67 74 68 20 2d 20 31 3b 20 69 20  g.length - 1; i 
3d40: 3e 3d 20 30 3b 20 2d 2d 69 29 20 7b 0a 20 20 09  >= 0; --i) {.  .
3d50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3d60: 76 61 72 20 65 6e 74 72 79 5f 31 20 3d 20 74 68  var entry_1 = th
3d70: 69 73 24 31 2e 74 72 61 69 6c 69 6e 67 5b 69 5d  is$1.trailing[i]
3d80: 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
3d90: 20 20 20 20 20 69 66 20 28 65 6e 74 72 79 5f 31       if (entry_1
3da0: 2e 73 74 61 72 74 20 3e 3d 20 6d 65 74 61 64 61  .start >= metada
3db0: 74 61 2e 65 6e 64 2e 6f 66 66 73 65 74 29 20 7b  ta.end.offset) {
3dc0: 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
3dd0: 20 20 20 20 20 20 20 20 74 72 61 69 6c 69 6e 67          trailing
3de0: 43 6f 6d 6d 65 6e 74 73 2e 75 6e 73 68 69 66 74  Comments.unshift
3df0: 28 65 6e 74 72 79 5f 31 2e 63 6f 6d 6d 65 6e 74  (entry_1.comment
3e00: 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  );.  .          
3e10: 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20        }.  .     
3e20: 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20         }.  .    
3e30: 20 20 20 20 20 20 20 20 74 68 69 73 2e 74 72 61          this.tra
3e40: 69 6c 69 6e 67 2e 6c 65 6e 67 74 68 20 3d 20 30  iling.length = 0
3e50: 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
3e60: 20 72 65 74 75 72 6e 20 74 72 61 69 6c 69 6e 67   return trailing
3e70: 43 6f 6d 6d 65 6e 74 73 3b 0a 20 20 09 20 20 20  Comments;.  .   
3e80: 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20       }.  .      
3e90: 20 20 76 61 72 20 65 6e 74 72 79 20 3d 20 74 68    var entry = th
3ea0: 69 73 2e 73 74 61 63 6b 5b 74 68 69 73 2e 73 74  is.stack[this.st
3eb0: 61 63 6b 2e 6c 65 6e 67 74 68 20 2d 20 31 5d 3b  ack.length - 1];
3ec0: 0a 20 20 09 20 20 20 20 20 20 20 20 69 66 20 28  .  .        if (
3ed0: 65 6e 74 72 79 20 26 26 20 65 6e 74 72 79 2e 6e  entry && entry.n
3ee0: 6f 64 65 2e 74 72 61 69 6c 69 6e 67 43 6f 6d 6d  ode.trailingComm
3ef0: 65 6e 74 73 29 20 7b 0a 20 20 09 20 20 20 20 20  ents) {.  .     
3f00: 20 20 20 20 20 20 20 76 61 72 20 66 69 72 73 74         var first
3f10: 43 6f 6d 6d 65 6e 74 20 3d 20 65 6e 74 72 79 2e  Comment = entry.
3f20: 6e 6f 64 65 2e 74 72 61 69 6c 69 6e 67 43 6f 6d  node.trailingCom
3f30: 6d 65 6e 74 73 5b 30 5d 3b 0a 20 20 09 20 20 20  ments[0];.  .   
3f40: 20 20 20 20 20 20 20 20 20 69 66 20 28 66 69 72           if (fir
3f50: 73 74 43 6f 6d 6d 65 6e 74 20 26 26 20 66 69 72  stComment && fir
3f60: 73 74 43 6f 6d 6d 65 6e 74 2e 72 61 6e 67 65 5b  stComment.range[
3f70: 30 5d 20 3e 3d 20 6d 65 74 61 64 61 74 61 2e 65  0] >= metadata.e
3f80: 6e 64 2e 6f 66 66 73 65 74 29 20 7b 0a 20 20 09  nd.offset) {.  .
3f90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3fa0: 74 72 61 69 6c 69 6e 67 43 6f 6d 6d 65 6e 74 73  trailingComments
3fb0: 20 3d 20 65 6e 74 72 79 2e 6e 6f 64 65 2e 74 72   = entry.node.tr
3fc0: 61 69 6c 69 6e 67 43 6f 6d 6d 65 6e 74 73 3b 0a  ailingComments;.
3fd0: 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
3fe0: 20 20 20 64 65 6c 65 74 65 20 65 6e 74 72 79 2e     delete entry.
3ff0: 6e 6f 64 65 2e 74 72 61 69 6c 69 6e 67 43 6f 6d  node.trailingCom
4000: 6d 65 6e 74 73 3b 0a 20 20 09 20 20 20 20 20 20  ments;.  .      
4010: 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20        }.  .     
4020: 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20     }.  .        
4030: 72 65 74 75 72 6e 20 74 72 61 69 6c 69 6e 67 43  return trailingC
4040: 6f 6d 6d 65 6e 74 73 3b 0a 20 20 09 20 20 20 20  omments;.  .    
4050: 7d 3b 0a 20 20 09 20 20 20 20 43 6f 6d 6d 65 6e  };.  .    Commen
4060: 74 48 61 6e 64 6c 65 72 2e 70 72 6f 74 6f 74 79  tHandler.prototy
4070: 70 65 2e 66 69 6e 64 4c 65 61 64 69 6e 67 43 6f  pe.findLeadingCo
4080: 6d 6d 65 6e 74 73 20 3d 20 66 75 6e 63 74 69 6f  mments = functio
4090: 6e 20 28 6e 6f 64 65 2c 20 6d 65 74 61 64 61 74  n (node, metadat
40a0: 61 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20  a) {.  .        
40b0: 76 61 72 20 74 68 69 73 24 31 20 3d 20 74 68 69  var this$1 = thi
40c0: 73 3b 0a 0a 20 20 09 20 20 20 20 20 20 20 20 76  s;..  .        v
40d0: 61 72 20 6c 65 61 64 69 6e 67 43 6f 6d 6d 65 6e  ar leadingCommen
40e0: 74 73 20 3d 20 5b 5d 3b 0a 20 20 09 20 20 20 20  ts = [];.  .    
40f0: 20 20 20 20 76 61 72 20 74 61 72 67 65 74 3b 0a      var target;.
4100: 20 20 09 20 20 20 20 20 20 20 20 77 68 69 6c 65    .        while
4110: 20 28 74 68 69 73 2e 73 74 61 63 6b 2e 6c 65 6e   (this.stack.len
4120: 67 74 68 20 3e 20 30 29 20 7b 0a 20 20 09 20 20  gth > 0) {.  .  
4130: 20 20 20 20 20 20 20 20 20 20 76 61 72 20 65 6e            var en
4140: 74 72 79 20 3d 20 74 68 69 73 24 31 2e 73 74 61  try = this$1.sta
4150: 63 6b 5b 74 68 69 73 24 31 2e 73 74 61 63 6b 2e  ck[this$1.stack.
4160: 6c 65 6e 67 74 68 20 2d 20 31 5d 3b 0a 20 20 09  length - 1];.  .
4170: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
4180: 65 6e 74 72 79 20 26 26 20 65 6e 74 72 79 2e 73  entry && entry.s
4190: 74 61 72 74 20 3e 3d 20 6d 65 74 61 64 61 74 61  tart >= metadata
41a0: 2e 73 74 61 72 74 2e 6f 66 66 73 65 74 29 20 7b  .start.offset) {
41b0: 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
41c0: 20 20 20 20 74 61 72 67 65 74 20 3d 20 74 68 69      target = thi
41d0: 73 24 31 2e 73 74 61 63 6b 2e 70 6f 70 28 29 2e  s$1.stack.pop().
41e0: 6e 6f 64 65 3b 0a 20 20 09 20 20 20 20 20 20 20  node;.  .       
41f0: 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20       }.  .      
4200: 20 20 20 20 20 20 65 6c 73 65 20 7b 0a 20 20 09        else {.  .
4210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4220: 62 72 65 61 6b 3b 0a 20 20 09 20 20 20 20 20 20  break;.  .      
4230: 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20        }.  .     
4240: 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20     }.  .        
4250: 69 66 20 28 74 61 72 67 65 74 29 20 7b 0a 20 20  if (target) {.  
4260: 09 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72  .            var
4270: 20 63 6f 75 6e 74 20 3d 20 74 61 72 67 65 74 2e   count = target.
4280: 6c 65 61 64 69 6e 67 43 6f 6d 6d 65 6e 74 73 20  leadingComments 
4290: 3f 20 74 61 72 67 65 74 2e 6c 65 61 64 69 6e 67  ? target.leading
42a0: 43 6f 6d 6d 65 6e 74 73 2e 6c 65 6e 67 74 68 20  Comments.length 
42b0: 3a 20 30 3b 0a 20 20 09 20 20 20 20 20 20 20 20  : 0;.  .        
42c0: 20 20 20 20 66 6f 72 20 28 76 61 72 20 69 20 3d      for (var i =
42d0: 20 63 6f 75 6e 74 20 2d 20 31 3b 20 69 20 3e 3d   count - 1; i >=
42e0: 20 30 3b 20 2d 2d 69 29 20 7b 0a 20 20 09 20 20   0; --i) {.  .  
42f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61                va
4300: 72 20 63 6f 6d 6d 65 6e 74 20 3d 20 74 61 72 67  r comment = targ
4310: 65 74 2e 6c 65 61 64 69 6e 67 43 6f 6d 6d 65 6e  et.leadingCommen
4320: 74 73 5b 69 5d 3b 0a 20 20 09 20 20 20 20 20 20  ts[i];.  .      
4330: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 6f            if (co
4340: 6d 6d 65 6e 74 2e 72 61 6e 67 65 5b 31 5d 20 3c  mment.range[1] <
4350: 3d 20 6d 65 74 61 64 61 74 61 2e 73 74 61 72 74  = metadata.start
4360: 2e 6f 66 66 73 65 74 29 20 7b 0a 20 20 09 20 20  .offset) {.  .  
4370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4380: 20 20 6c 65 61 64 69 6e 67 43 6f 6d 6d 65 6e 74    leadingComment
4390: 73 2e 75 6e 73 68 69 66 74 28 63 6f 6d 6d 65 6e  s.unshift(commen
43a0: 74 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  t);.  .         
43b0: 20 20 20 20 20 20 20 20 20 20 20 74 61 72 67 65             targe
43c0: 74 2e 6c 65 61 64 69 6e 67 43 6f 6d 6d 65 6e 74  t.leadingComment
43d0: 73 2e 73 70 6c 69 63 65 28 69 2c 20 31 29 3b 0a  s.splice(i, 1);.
43e0: 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
43f0: 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20     }.  .        
4400: 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20      }.  .       
4410: 20 20 20 20 20 69 66 20 28 74 61 72 67 65 74 2e       if (target.
4420: 6c 65 61 64 69 6e 67 43 6f 6d 6d 65 6e 74 73 20  leadingComments 
4430: 26 26 20 74 61 72 67 65 74 2e 6c 65 61 64 69 6e  && target.leadin
4440: 67 43 6f 6d 6d 65 6e 74 73 2e 6c 65 6e 67 74 68  gComments.length
4450: 20 3d 3d 3d 20 30 29 20 7b 0a 20 20 09 20 20 20   === 0) {.  .   
4460: 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 6c               del
4470: 65 74 65 20 74 61 72 67 65 74 2e 6c 65 61 64 69  ete target.leadi
4480: 6e 67 43 6f 6d 6d 65 6e 74 73 3b 0a 20 20 09 20  ngComments;.  . 
4490: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09             }.  .
44a0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
44b0: 72 6e 20 6c 65 61 64 69 6e 67 43 6f 6d 6d 65 6e  rn leadingCommen
44c0: 74 73 3b 0a 20 20 09 20 20 20 20 20 20 20 20 7d  ts;.  .        }
44d0: 0a 20 20 09 20 20 20 20 20 20 20 20 66 6f 72 20  .  .        for 
44e0: 28 76 61 72 20 69 20 3d 20 74 68 69 73 2e 6c 65  (var i = this.le
44f0: 61 64 69 6e 67 2e 6c 65 6e 67 74 68 20 2d 20 31  ading.length - 1
4500: 3b 20 69 20 3e 3d 20 30 3b 20 2d 2d 69 29 20 7b  ; i >= 0; --i) {
4510: 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
4520: 76 61 72 20 65 6e 74 72 79 20 3d 20 74 68 69 73  var entry = this
4530: 24 31 2e 6c 65 61 64 69 6e 67 5b 69 5d 3b 0a 20  $1.leading[i];. 
4540: 20 09 20 20 20 20 20 20 20 20 20 20 20 20 69 66   .            if
4550: 20 28 65 6e 74 72 79 2e 73 74 61 72 74 20 3c 3d   (entry.start <=
4560: 20 6d 65 74 61 64 61 74 61 2e 73 74 61 72 74 2e   metadata.start.
4570: 6f 66 66 73 65 74 29 20 7b 0a 20 20 09 20 20 20  offset) {.  .   
4580: 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 65 61               lea
4590: 64 69 6e 67 43 6f 6d 6d 65 6e 74 73 2e 75 6e 73  dingComments.uns
45a0: 68 69 66 74 28 65 6e 74 72 79 2e 63 6f 6d 6d 65  hift(entry.comme
45b0: 6e 74 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  nt);.  .        
45c0: 20 20 20 20 20 20 20 20 74 68 69 73 24 31 2e 6c          this$1.l
45d0: 65 61 64 69 6e 67 2e 73 70 6c 69 63 65 28 69 2c  eading.splice(i,
45e0: 20 31 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20   1);.  .        
45f0: 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20      }.  .       
4600: 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 72 65   }.  .        re
4610: 74 75 72 6e 20 6c 65 61 64 69 6e 67 43 6f 6d 6d  turn leadingComm
4620: 65 6e 74 73 3b 0a 20 20 09 20 20 20 20 7d 3b 0a  ents;.  .    };.
4630: 20 20 09 20 20 20 20 43 6f 6d 6d 65 6e 74 48 61    .    CommentHa
4640: 6e 64 6c 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e  ndler.prototype.
4650: 76 69 73 69 74 4e 6f 64 65 20 3d 20 66 75 6e 63  visitNode = func
4660: 74 69 6f 6e 20 28 6e 6f 64 65 2c 20 6d 65 74 61  tion (node, meta
4670: 64 61 74 61 29 20 7b 0a 20 20 09 20 20 20 20 20  data) {.  .     
4680: 20 20 20 69 66 20 28 6e 6f 64 65 2e 74 79 70 65     if (node.type
4690: 20 3d 3d 3d 20 73 79 6e 74 61 78 5f 31 2e 53 79   === syntax_1.Sy
46a0: 6e 74 61 78 2e 50 72 6f 67 72 61 6d 20 26 26 20  ntax.Program && 
46b0: 6e 6f 64 65 2e 62 6f 64 79 2e 6c 65 6e 67 74 68  node.body.length
46c0: 20 3e 20 30 29 20 7b 0a 20 20 09 20 20 20 20 20   > 0) {.  .     
46d0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0a 20         return;. 
46e0: 20 09 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20   .        }.  . 
46f0: 20 20 20 20 20 20 20 74 68 69 73 2e 69 6e 73 65         this.inse
4700: 72 74 49 6e 6e 65 72 43 6f 6d 6d 65 6e 74 73 28  rtInnerComments(
4710: 6e 6f 64 65 2c 20 6d 65 74 61 64 61 74 61 29 3b  node, metadata);
4720: 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20  .  .        var 
4730: 74 72 61 69 6c 69 6e 67 43 6f 6d 6d 65 6e 74 73  trailingComments
4740: 20 3d 20 74 68 69 73 2e 66 69 6e 64 54 72 61 69   = this.findTrai
4750: 6c 69 6e 67 43 6f 6d 6d 65 6e 74 73 28 6e 6f 64  lingComments(nod
4760: 65 2c 20 6d 65 74 61 64 61 74 61 29 3b 0a 20 20  e, metadata);.  
4770: 09 20 20 20 20 20 20 20 20 76 61 72 20 6c 65 61  .        var lea
4780: 64 69 6e 67 43 6f 6d 6d 65 6e 74 73 20 3d 20 74  dingComments = t
4790: 68 69 73 2e 66 69 6e 64 4c 65 61 64 69 6e 67 43  his.findLeadingC
47a0: 6f 6d 6d 65 6e 74 73 28 6e 6f 64 65 2c 20 6d 65  omments(node, me
47b0: 74 61 64 61 74 61 29 3b 0a 20 20 09 20 20 20 20  tadata);.  .    
47c0: 20 20 20 20 69 66 20 28 6c 65 61 64 69 6e 67 43      if (leadingC
47d0: 6f 6d 6d 65 6e 74 73 2e 6c 65 6e 67 74 68 20 3e  omments.length >
47e0: 20 30 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20   0) {.  .       
47f0: 20 20 20 20 20 6e 6f 64 65 2e 6c 65 61 64 69 6e       node.leadin
4800: 67 43 6f 6d 6d 65 6e 74 73 20 3d 20 6c 65 61 64  gComments = lead
4810: 69 6e 67 43 6f 6d 6d 65 6e 74 73 3b 0a 20 20 09  ingComments;.  .
4820: 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20          }.  .   
4830: 20 20 20 20 20 69 66 20 28 74 72 61 69 6c 69 6e       if (trailin
4840: 67 43 6f 6d 6d 65 6e 74 73 2e 6c 65 6e 67 74 68  gComments.length
4850: 20 3e 20 30 29 20 7b 0a 20 20 09 20 20 20 20 20   > 0) {.  .     
4860: 20 20 20 20 20 20 20 6e 6f 64 65 2e 74 72 61 69         node.trai
4870: 6c 69 6e 67 43 6f 6d 6d 65 6e 74 73 20 3d 20 74  lingComments = t
4880: 72 61 69 6c 69 6e 67 43 6f 6d 6d 65 6e 74 73 3b  railingComments;
4890: 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a 20 20  .  .        }.  
48a0: 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 73 74  .        this.st
48b0: 61 63 6b 2e 70 75 73 68 28 7b 0a 20 20 09 20 20  ack.push({.  .  
48c0: 20 20 20 20 20 20 20 20 20 20 6e 6f 64 65 3a 20            node: 
48d0: 6e 6f 64 65 2c 0a 20 20 09 20 20 20 20 20 20 20  node,.  .       
48e0: 20 20 20 20 20 73 74 61 72 74 3a 20 6d 65 74 61       start: meta
48f0: 64 61 74 61 2e 73 74 61 72 74 2e 6f 66 66 73 65  data.start.offse
4900: 74 0a 20 20 09 20 20 20 20 20 20 20 20 7d 29 3b  t.  .        });
4910: 0a 20 20 09 20 20 20 20 7d 3b 0a 20 20 09 20 20  .  .    };.  .  
4920: 20 20 43 6f 6d 6d 65 6e 74 48 61 6e 64 6c 65 72    CommentHandler
4930: 2e 70 72 6f 74 6f 74 79 70 65 2e 76 69 73 69 74  .prototype.visit
4940: 43 6f 6d 6d 65 6e 74 20 3d 20 66 75 6e 63 74 69  Comment = functi
4950: 6f 6e 20 28 6e 6f 64 65 2c 20 6d 65 74 61 64 61  on (node, metada
4960: 74 61 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20  ta) {.  .       
4970: 20 76 61 72 20 74 79 70 65 20 3d 20 28 6e 6f 64   var type = (nod
4980: 65 2e 74 79 70 65 5b 30 5d 20 3d 3d 3d 20 27 4c  e.type[0] === 'L
4990: 27 29 20 3f 20 27 4c 69 6e 65 27 20 3a 20 27 42  ') ? 'Line' : 'B
49a0: 6c 6f 63 6b 27 3b 0a 20 20 09 20 20 20 20 20 20  lock';.  .      
49b0: 20 20 76 61 72 20 63 6f 6d 6d 65 6e 74 20 3d 20    var comment = 
49c0: 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  {.  .           
49d0: 20 74 79 70 65 3a 20 74 79 70 65 2c 0a 20 20 09   type: type,.  .
49e0: 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75              valu
49f0: 65 3a 20 6e 6f 64 65 2e 76 61 6c 75 65 0a 20 20  e: node.value.  
4a00: 09 20 20 20 20 20 20 20 20 7d 3b 0a 20 20 09 20  .        };.  . 
4a10: 20 20 20 20 20 20 20 69 66 20 28 6e 6f 64 65 2e         if (node.
4a20: 72 61 6e 67 65 29 20 7b 0a 20 20 09 20 20 20 20  range) {.  .    
4a30: 20 20 20 20 20 20 20 20 63 6f 6d 6d 65 6e 74 2e          comment.
4a40: 72 61 6e 67 65 20 3d 20 6e 6f 64 65 2e 72 61 6e  range = node.ran
4a50: 67 65 3b 0a 20 20 09 20 20 20 20 20 20 20 20 7d  ge;.  .        }
4a60: 0a 20 20 09 20 20 20 20 20 20 20 20 69 66 20 28  .  .        if (
4a70: 6e 6f 64 65 2e 6c 6f 63 29 20 7b 0a 20 20 09 20  node.loc) {.  . 
4a80: 20 20 20 20 20 20 20 20 20 20 20 63 6f 6d 6d 65             comme
4a90: 6e 74 2e 6c 6f 63 20 3d 20 6e 6f 64 65 2e 6c 6f  nt.loc = node.lo
4aa0: 63 3b 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a  c;.  .        }.
4ab0: 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e    .        this.
4ac0: 63 6f 6d 6d 65 6e 74 73 2e 70 75 73 68 28 63 6f  comments.push(co
4ad0: 6d 6d 65 6e 74 29 3b 0a 20 20 09 20 20 20 20 20  mment);.  .     
4ae0: 20 20 20 69 66 20 28 74 68 69 73 2e 61 74 74 61     if (this.atta
4af0: 63 68 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20  ch) {.  .       
4b00: 20 20 20 20 20 76 61 72 20 65 6e 74 72 79 20 3d       var entry =
4b10: 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   {.  .          
4b20: 20 20 20 20 20 20 63 6f 6d 6d 65 6e 74 3a 20 7b        comment: {
4b30: 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
4b40: 20 20 20 20 20 20 20 20 74 79 70 65 3a 20 74 79          type: ty
4b50: 70 65 2c 0a 20 20 09 20 20 20 20 20 20 20 20 20  pe,.  .         
4b60: 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65             value
4b70: 3a 20 6e 6f 64 65 2e 76 61 6c 75 65 2c 0a 20 20  : node.value,.  
4b80: 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4b90: 20 20 20 20 20 72 61 6e 67 65 3a 20 5b 6d 65 74       range: [met
4ba0: 61 64 61 74 61 2e 73 74 61 72 74 2e 6f 66 66 73  adata.start.offs
4bb0: 65 74 2c 20 6d 65 74 61 64 61 74 61 2e 65 6e 64  et, metadata.end
4bc0: 2e 6f 66 66 73 65 74 5d 0a 20 20 09 20 20 20 20  .offset].  .    
4bd0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 2c 0a 20              },. 
4be0: 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
4bf0: 20 20 73 74 61 72 74 3a 20 6d 65 74 61 64 61 74    start: metadat
4c00: 61 2e 73 74 61 72 74 2e 6f 66 66 73 65 74 0a 20  a.start.offset. 
4c10: 20 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 3b   .            };
4c20: 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
4c30: 69 66 20 28 6e 6f 64 65 2e 6c 6f 63 29 20 7b 0a  if (node.loc) {.
4c40: 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
4c50: 20 20 20 65 6e 74 72 79 2e 63 6f 6d 6d 65 6e 74     entry.comment
4c60: 2e 6c 6f 63 20 3d 20 6e 6f 64 65 2e 6c 6f 63 3b  .loc = node.loc;
4c70: 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
4c80: 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  }.  .           
4c90: 20 6e 6f 64 65 2e 74 79 70 65 20 3d 20 74 79 70   node.type = typ
4ca0: 65 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  e;.  .          
4cb0: 20 20 74 68 69 73 2e 6c 65 61 64 69 6e 67 2e 70    this.leading.p
4cc0: 75 73 68 28 65 6e 74 72 79 29 3b 0a 20 20 09 20  ush(entry);.  . 
4cd0: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
4ce0: 74 72 61 69 6c 69 6e 67 2e 70 75 73 68 28 65 6e  trailing.push(en
4cf0: 74 72 79 29 3b 0a 20 20 09 20 20 20 20 20 20 20  try);.  .       
4d00: 20 7d 0a 20 20 09 20 20 20 20 7d 3b 0a 20 20 09   }.  .    };.  .
4d10: 20 20 20 20 43 6f 6d 6d 65 6e 74 48 61 6e 64 6c      CommentHandl
4d20: 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 76 69 73  er.prototype.vis
4d30: 69 74 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 6e  it = function (n
4d40: 6f 64 65 2c 20 6d 65 74 61 64 61 74 61 29 20 7b  ode, metadata) {
4d50: 0a 20 20 09 20 20 20 20 20 20 20 20 69 66 20 28  .  .        if (
4d60: 6e 6f 64 65 2e 74 79 70 65 20 3d 3d 3d 20 27 4c  node.type === 'L
4d70: 69 6e 65 43 6f 6d 6d 65 6e 74 27 29 20 7b 0a 20  ineComment') {. 
4d80: 20 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68   .            th
4d90: 69 73 2e 76 69 73 69 74 43 6f 6d 6d 65 6e 74 28  is.visitComment(
4da0: 6e 6f 64 65 2c 20 6d 65 74 61 64 61 74 61 29 3b  node, metadata);
4db0: 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a 20 20  .  .        }.  
4dc0: 09 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66  .        else if
4dd0: 20 28 6e 6f 64 65 2e 74 79 70 65 20 3d 3d 3d 20   (node.type === 
4de0: 27 42 6c 6f 63 6b 43 6f 6d 6d 65 6e 74 27 29 20  'BlockComment') 
4df0: 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  {.  .           
4e00: 20 74 68 69 73 2e 76 69 73 69 74 43 6f 6d 6d 65   this.visitComme
4e10: 6e 74 28 6e 6f 64 65 2c 20 6d 65 74 61 64 61 74  nt(node, metadat
4e20: 61 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 7d  a);.  .        }
4e30: 0a 20 20 09 20 20 20 20 20 20 20 20 65 6c 73 65  .  .        else
4e40: 20 69 66 20 28 74 68 69 73 2e 61 74 74 61 63 68   if (this.attach
4e50: 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ) {.  .         
4e60: 20 20 20 74 68 69 73 2e 76 69 73 69 74 4e 6f 64     this.visitNod
4e70: 65 28 6e 6f 64 65 2c 20 6d 65 74 61 64 61 74 61  e(node, metadata
4e80: 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a  );.  .        }.
4e90: 20 20 09 20 20 20 20 7d 3b 0a 20 20 09 20 20 20    .    };.  .   
4ea0: 20 72 65 74 75 72 6e 20 43 6f 6d 6d 65 6e 74 48   return CommentH
4eb0: 61 6e 64 6c 65 72 3b 0a 20 20 09 7d 28 29 29 3b  andler;.  .}());
4ec0: 0a 20 20 09 65 78 70 6f 72 74 73 2e 43 6f 6d 6d  .  .exports.Comm
4ed0: 65 6e 74 48 61 6e 64 6c 65 72 20 3d 20 43 6f 6d  entHandler = Com
4ee0: 6d 65 6e 74 48 61 6e 64 6c 65 72 3b 0a 0a 0a 20  mentHandler;... 
4ef0: 20 2f 2a 2a 2a 2f 20 7d 2c 0a 20 20 2f 2a 20 32   /***/ },.  /* 2
4f00: 20 2a 2f 0a 20 20 2f 2a 2a 2a 2f 20 66 75 6e 63   */.  /***/ func
4f10: 74 69 6f 6e 28 6d 6f 64 75 6c 65 2c 20 65 78 70  tion(module, exp
4f20: 6f 72 74 73 29 20 7b 0a 20 20 09 65 78 70 6f 72  orts) {.  .expor
4f30: 74 73 2e 53 79 6e 74 61 78 20 3d 20 7b 0a 20 20  ts.Syntax = {.  
4f40: 09 20 20 20 20 41 73 73 69 67 6e 6d 65 6e 74 45  .    AssignmentE
4f50: 78 70 72 65 73 73 69 6f 6e 3a 20 27 41 73 73 69  xpression: 'Assi
4f60: 67 6e 6d 65 6e 74 45 78 70 72 65 73 73 69 6f 6e  gnmentExpression
4f70: 27 2c 0a 20 20 09 20 20 20 20 41 73 73 69 67 6e  ',.  .    Assign
4f80: 6d 65 6e 74 50 61 74 74 65 72 6e 3a 20 27 41 73  mentPattern: 'As
4f90: 73 69 67 6e 6d 65 6e 74 50 61 74 74 65 72 6e 27  signmentPattern'
4fa0: 2c 0a 20 20 09 20 20 20 20 41 72 72 61 79 45 78  ,.  .    ArrayEx
4fb0: 70 72 65 73 73 69 6f 6e 3a 20 27 41 72 72 61 79  pression: 'Array
4fc0: 45 78 70 72 65 73 73 69 6f 6e 27 2c 0a 20 20 09  Expression',.  .
4fd0: 20 20 20 20 41 72 72 61 79 50 61 74 74 65 72 6e      ArrayPattern
4fe0: 3a 20 27 41 72 72 61 79 50 61 74 74 65 72 6e 27  : 'ArrayPattern'
4ff0: 2c 0a 20 20 09 20 20 20 20 41 72 72 6f 77 46 75  ,.  .    ArrowFu
5000: 6e 63 74 69 6f 6e 45 78 70 72 65 73 73 69 6f 6e  nctionExpression
5010: 3a 20 27 41 72 72 6f 77 46 75 6e 63 74 69 6f 6e  : 'ArrowFunction
5020: 45 78 70 72 65 73 73 69 6f 6e 27 2c 0a 20 20 09  Expression',.  .
5030: 20 20 20 20 42 6c 6f 63 6b 53 74 61 74 65 6d 65      BlockStateme
5040: 6e 74 3a 20 27 42 6c 6f 63 6b 53 74 61 74 65 6d  nt: 'BlockStatem
5050: 65 6e 74 27 2c 0a 20 20 09 20 20 20 20 42 69 6e  ent',.  .    Bin
5060: 61 72 79 45 78 70 72 65 73 73 69 6f 6e 3a 20 27  aryExpression: '
5070: 42 69 6e 61 72 79 45 78 70 72 65 73 73 69 6f 6e  BinaryExpression
5080: 27 2c 0a 20 20 09 20 20 20 20 42 72 65 61 6b 53  ',.  .    BreakS
5090: 74 61 74 65 6d 65 6e 74 3a 20 27 42 72 65 61 6b  tatement: 'Break
50a0: 53 74 61 74 65 6d 65 6e 74 27 2c 0a 20 20 09 20  Statement',.  . 
50b0: 20 20 20 43 61 6c 6c 45 78 70 72 65 73 73 69 6f     CallExpressio
50c0: 6e 3a 20 27 43 61 6c 6c 45 78 70 72 65 73 73 69  n: 'CallExpressi
50d0: 6f 6e 27 2c 0a 20 20 09 20 20 20 20 43 61 74 63  on',.  .    Catc
50e0: 68 43 6c 61 75 73 65 3a 20 27 43 61 74 63 68 43  hClause: 'CatchC
50f0: 6c 61 75 73 65 27 2c 0a 20 20 09 20 20 20 20 43  lause',.  .    C
5100: 6c 61 73 73 42 6f 64 79 3a 20 27 43 6c 61 73 73  lassBody: 'Class
5110: 42 6f 64 79 27 2c 0a 20 20 09 20 20 20 20 43 6c  Body',.  .    Cl
5120: 61 73 73 44 65 63 6c 61 72 61 74 69 6f 6e 3a 20  assDeclaration: 
5130: 27 43 6c 61 73 73 44 65 63 6c 61 72 61 74 69 6f  'ClassDeclaratio
5140: 6e 27 2c 0a 20 20 09 20 20 20 20 43 6c 61 73 73  n',.  .    Class
5150: 45 78 70 72 65 73 73 69 6f 6e 3a 20 27 43 6c 61  Expression: 'Cla
5160: 73 73 45 78 70 72 65 73 73 69 6f 6e 27 2c 0a 20  ssExpression',. 
5170: 20 09 20 20 20 20 43 6f 6e 64 69 74 69 6f 6e 61   .    Conditiona
5180: 6c 45 78 70 72 65 73 73 69 6f 6e 3a 20 27 43 6f  lExpression: 'Co
5190: 6e 64 69 74 69 6f 6e 61 6c 45 78 70 72 65 73 73  nditionalExpress
51a0: 69 6f 6e 27 2c 0a 20 20 09 20 20 20 20 43 6f 6e  ion',.  .    Con
51b0: 74 69 6e 75 65 53 74 61 74 65 6d 65 6e 74 3a 20  tinueStatement: 
51c0: 27 43 6f 6e 74 69 6e 75 65 53 74 61 74 65 6d 65  'ContinueStateme
51d0: 6e 74 27 2c 0a 20 20 09 20 20 20 20 44 6f 57 68  nt',.  .    DoWh
51e0: 69 6c 65 53 74 61 74 65 6d 65 6e 74 3a 20 27 44  ileStatement: 'D
51f0: 6f 57 68 69 6c 65 53 74 61 74 65 6d 65 6e 74 27  oWhileStatement'
5200: 2c 0a 20 20 09 20 20 20 20 44 65 62 75 67 67 65  ,.  .    Debugge
5210: 72 53 74 61 74 65 6d 65 6e 74 3a 20 27 44 65 62  rStatement: 'Deb
5220: 75 67 67 65 72 53 74 61 74 65 6d 65 6e 74 27 2c  uggerStatement',
5230: 0a 20 20 09 20 20 20 20 45 6d 70 74 79 53 74 61  .  .    EmptySta
5240: 74 65 6d 65 6e 74 3a 20 27 45 6d 70 74 79 53 74  tement: 'EmptySt
5250: 61 74 65 6d 65 6e 74 27 2c 0a 20 20 09 20 20 20  atement',.  .   
5260: 20 45 78 70 6f 72 74 41 6c 6c 44 65 63 6c 61 72   ExportAllDeclar
5270: 61 74 69 6f 6e 3a 20 27 45 78 70 6f 72 74 41 6c  ation: 'ExportAl
5280: 6c 44 65 63 6c 61 72 61 74 69 6f 6e 27 2c 0a 20  lDeclaration',. 
5290: 20 09 20 20 20 20 45 78 70 6f 72 74 44 65 66 61   .    ExportDefa
52a0: 75 6c 74 44 65 63 6c 61 72 61 74 69 6f 6e 3a 20  ultDeclaration: 
52b0: 27 45 78 70 6f 72 74 44 65 66 61 75 6c 74 44 65  'ExportDefaultDe
52c0: 63 6c 61 72 61 74 69 6f 6e 27 2c 0a 20 20 09 20  claration',.  . 
52d0: 20 20 20 45 78 70 6f 72 74 4e 61 6d 65 64 44 65     ExportNamedDe
52e0: 63 6c 61 72 61 74 69 6f 6e 3a 20 27 45 78 70 6f  claration: 'Expo
52f0: 72 74 4e 61 6d 65 64 44 65 63 6c 61 72 61 74 69  rtNamedDeclarati
5300: 6f 6e 27 2c 0a 20 20 09 20 20 20 20 45 78 70 6f  on',.  .    Expo
5310: 72 74 53 70 65 63 69 66 69 65 72 3a 20 27 45 78  rtSpecifier: 'Ex
5320: 70 6f 72 74 53 70 65 63 69 66 69 65 72 27 2c 0a  portSpecifier',.
5330: 20 20 09 20 20 20 20 45 78 70 72 65 73 73 69 6f    .    Expressio
5340: 6e 53 74 61 74 65 6d 65 6e 74 3a 20 27 45 78 70  nStatement: 'Exp
5350: 72 65 73 73 69 6f 6e 53 74 61 74 65 6d 65 6e 74  ressionStatement
5360: 27 2c 0a 20 20 09 20 20 20 20 46 6f 72 53 74 61  ',.  .    ForSta
5370: 74 65 6d 65 6e 74 3a 20 27 46 6f 72 53 74 61 74  tement: 'ForStat
5380: 65 6d 65 6e 74 27 2c 0a 20 20 09 20 20 20 20 46  ement',.  .    F
5390: 6f 72 4f 66 53 74 61 74 65 6d 65 6e 74 3a 20 27  orOfStatement: '
53a0: 46 6f 72 4f 66 53 74 61 74 65 6d 65 6e 74 27 2c  ForOfStatement',
53b0: 0a 20 20 09 20 20 20 20 46 6f 72 49 6e 53 74 61  .  .    ForInSta
53c0: 74 65 6d 65 6e 74 3a 20 27 46 6f 72 49 6e 53 74  tement: 'ForInSt
53d0: 61 74 65 6d 65 6e 74 27 2c 0a 20 20 09 20 20 20  atement',.  .   
53e0: 20 46 75 6e 63 74 69 6f 6e 44 65 63 6c 61 72 61   FunctionDeclara
53f0: 74 69 6f 6e 3a 20 27 46 75 6e 63 74 69 6f 6e 44  tion: 'FunctionD
5400: 65 63 6c 61 72 61 74 69 6f 6e 27 2c 0a 20 20 09  eclaration',.  .
5410: 20 20 20 20 46 75 6e 63 74 69 6f 6e 45 78 70 72      FunctionExpr
5420: 65 73 73 69 6f 6e 3a 20 27 46 75 6e 63 74 69 6f  ession: 'Functio
5430: 6e 45 78 70 72 65 73 73 69 6f 6e 27 2c 0a 20 20  nExpression',.  
5440: 09 20 20 20 20 49 64 65 6e 74 69 66 69 65 72 3a  .    Identifier:
5450: 20 27 49 64 65 6e 74 69 66 69 65 72 27 2c 0a 20   'Identifier',. 
5460: 20 09 20 20 20 20 49 66 53 74 61 74 65 6d 65 6e   .    IfStatemen
5470: 74 3a 20 27 49 66 53 74 61 74 65 6d 65 6e 74 27  t: 'IfStatement'
5480: 2c 0a 20 20 09 20 20 20 20 49 6d 70 6f 72 74 44  ,.  .    ImportD
5490: 65 63 6c 61 72 61 74 69 6f 6e 3a 20 27 49 6d 70  eclaration: 'Imp
54a0: 6f 72 74 44 65 63 6c 61 72 61 74 69 6f 6e 27 2c  ortDeclaration',
54b0: 0a 20 20 09 20 20 20 20 49 6d 70 6f 72 74 44 65  .  .    ImportDe
54c0: 66 61 75 6c 74 53 70 65 63 69 66 69 65 72 3a 20  faultSpecifier: 
54d0: 27 49 6d 70 6f 72 74 44 65 66 61 75 6c 74 53 70  'ImportDefaultSp
54e0: 65 63 69 66 69 65 72 27 2c 0a 20 20 09 20 20 20  ecifier',.  .   
54f0: 20 49 6d 70 6f 72 74 4e 61 6d 65 73 70 61 63 65   ImportNamespace
5500: 53 70 65 63 69 66 69 65 72 3a 20 27 49 6d 70 6f  Specifier: 'Impo
5510: 72 74 4e 61 6d 65 73 70 61 63 65 53 70 65 63 69  rtNamespaceSpeci
5520: 66 69 65 72 27 2c 0a 20 20 09 20 20 20 20 49 6d  fier',.  .    Im
5530: 70 6f 72 74 53 70 65 63 69 66 69 65 72 3a 20 27  portSpecifier: '
5540: 49 6d 70 6f 72 74 53 70 65 63 69 66 69 65 72 27  ImportSpecifier'
5550: 2c 0a 20 20 09 20 20 20 20 4c 69 74 65 72 61 6c  ,.  .    Literal
5560: 3a 20 27 4c 69 74 65 72 61 6c 27 2c 0a 20 20 09  : 'Literal',.  .
5570: 20 20 20 20 4c 61 62 65 6c 65 64 53 74 61 74 65      LabeledState
5580: 6d 65 6e 74 3a 20 27 4c 61 62 65 6c 65 64 53 74  ment: 'LabeledSt
5590: 61 74 65 6d 65 6e 74 27 2c 0a 20 20 09 20 20 20  atement',.  .   
55a0: 20 4c 6f 67 69 63 61 6c 45 78 70 72 65 73 73 69   LogicalExpressi
55b0: 6f 6e 3a 20 27 4c 6f 67 69 63 61 6c 45 78 70 72  on: 'LogicalExpr
55c0: 65 73 73 69 6f 6e 27 2c 0a 20 20 09 20 20 20 20  ession',.  .    
55d0: 4d 65 6d 62 65 72 45 78 70 72 65 73 73 69 6f 6e  MemberExpression
55e0: 3a 20 27 4d 65 6d 62 65 72 45 78 70 72 65 73 73  : 'MemberExpress
55f0: 69 6f 6e 27 2c 0a 20 20 09 20 20 20 20 4d 65 74  ion',.  .    Met
5600: 61 50 72 6f 70 65 72 74 79 3a 20 27 4d 65 74 61  aProperty: 'Meta
5610: 50 72 6f 70 65 72 74 79 27 2c 0a 20 20 09 20 20  Property',.  .  
5620: 20 20 4d 65 74 68 6f 64 44 65 66 69 6e 69 74 69    MethodDefiniti
5630: 6f 6e 3a 20 27 4d 65 74 68 6f 64 44 65 66 69 6e  on: 'MethodDefin
5640: 69 74 69 6f 6e 27 2c 0a 20 20 09 20 20 20 20 4e  ition',.  .    N
5650: 65 77 45 78 70 72 65 73 73 69 6f 6e 3a 20 27 4e  ewExpression: 'N
5660: 65 77 45 78 70 72 65 73 73 69 6f 6e 27 2c 0a 20  ewExpression',. 
5670: 20 09 20 20 20 20 4f 62 6a 65 63 74 45 78 70 72   .    ObjectExpr
5680: 65 73 73 69 6f 6e 3a 20 27 4f 62 6a 65 63 74 45  ession: 'ObjectE
5690: 78 70 72 65 73 73 69 6f 6e 27 2c 0a 20 20 09 20  xpression',.  . 
56a0: 20 20 20 4f 62 6a 65 63 74 50 61 74 74 65 72 6e     ObjectPattern
56b0: 3a 20 27 4f 62 6a 65 63 74 50 61 74 74 65 72 6e  : 'ObjectPattern
56c0: 27 2c 0a 20 20 09 20 20 20 20 50 72 6f 67 72 61  ',.  .    Progra
56d0: 6d 3a 20 27 50 72 6f 67 72 61 6d 27 2c 0a 20 20  m: 'Program',.  
56e0: 09 20 20 20 20 50 72 6f 70 65 72 74 79 3a 20 27  .    Property: '
56f0: 50 72 6f 70 65 72 74 79 27 2c 0a 20 20 09 20 20  Property',.  .  
5700: 20 20 52 65 73 74 45 6c 65 6d 65 6e 74 3a 20 27    RestElement: '
5710: 52 65 73 74 45 6c 65 6d 65 6e 74 27 2c 0a 20 20  RestElement',.  
5720: 09 20 20 20 20 52 65 74 75 72 6e 53 74 61 74 65  .    ReturnState
5730: 6d 65 6e 74 3a 20 27 52 65 74 75 72 6e 53 74 61  ment: 'ReturnSta
5740: 74 65 6d 65 6e 74 27 2c 0a 20 20 09 20 20 20 20  tement',.  .    
5750: 53 65 71 75 65 6e 63 65 45 78 70 72 65 73 73 69  SequenceExpressi
5760: 6f 6e 3a 20 27 53 65 71 75 65 6e 63 65 45 78 70  on: 'SequenceExp
5770: 72 65 73 73 69 6f 6e 27 2c 0a 20 20 09 20 20 20  ression',.  .   
5780: 20 53 70 72 65 61 64 45 6c 65 6d 65 6e 74 3a 20   SpreadElement: 
5790: 27 53 70 72 65 61 64 45 6c 65 6d 65 6e 74 27 2c  'SpreadElement',
57a0: 0a 20 20 09 20 20 20 20 53 75 70 65 72 3a 20 27  .  .    Super: '
57b0: 53 75 70 65 72 27 2c 0a 20 20 09 20 20 20 20 53  Super',.  .    S
57c0: 77 69 74 63 68 43 61 73 65 3a 20 27 53 77 69 74  witchCase: 'Swit
57d0: 63 68 43 61 73 65 27 2c 0a 20 20 09 20 20 20 20  chCase',.  .    
57e0: 53 77 69 74 63 68 53 74 61 74 65 6d 65 6e 74 3a  SwitchStatement:
57f0: 20 27 53 77 69 74 63 68 53 74 61 74 65 6d 65 6e   'SwitchStatemen
5800: 74 27 2c 0a 20 20 09 20 20 20 20 54 61 67 67 65  t',.  .    Tagge
5810: 64 54 65 6d 70 6c 61 74 65 45 78 70 72 65 73 73  dTemplateExpress
5820: 69 6f 6e 3a 20 27 54 61 67 67 65 64 54 65 6d 70  ion: 'TaggedTemp
5830: 6c 61 74 65 45 78 70 72 65 73 73 69 6f 6e 27 2c  lateExpression',
5840: 0a 20 20 09 20 20 20 20 54 65 6d 70 6c 61 74 65  .  .    Template
5850: 45 6c 65 6d 65 6e 74 3a 20 27 54 65 6d 70 6c 61  Element: 'Templa
5860: 74 65 45 6c 65 6d 65 6e 74 27 2c 0a 20 20 09 20  teElement',.  . 
5870: 20 20 20 54 65 6d 70 6c 61 74 65 4c 69 74 65 72     TemplateLiter
5880: 61 6c 3a 20 27 54 65 6d 70 6c 61 74 65 4c 69 74  al: 'TemplateLit
5890: 65 72 61 6c 27 2c 0a 20 20 09 20 20 20 20 54 68  eral',.  .    Th
58a0: 69 73 45 78 70 72 65 73 73 69 6f 6e 3a 20 27 54  isExpression: 'T
58b0: 68 69 73 45 78 70 72 65 73 73 69 6f 6e 27 2c 0a  hisExpression',.
58c0: 20 20 09 20 20 20 20 54 68 72 6f 77 53 74 61 74    .    ThrowStat
58d0: 65 6d 65 6e 74 3a 20 27 54 68 72 6f 77 53 74 61  ement: 'ThrowSta
58e0: 74 65 6d 65 6e 74 27 2c 0a 20 20 09 20 20 20 20  tement',.  .    
58f0: 54 72 79 53 74 61 74 65 6d 65 6e 74 3a 20 27 54  TryStatement: 'T
5900: 72 79 53 74 61 74 65 6d 65 6e 74 27 2c 0a 20 20  ryStatement',.  
5910: 09 20 20 20 20 55 6e 61 72 79 45 78 70 72 65 73  .    UnaryExpres
5920: 73 69 6f 6e 3a 20 27 55 6e 61 72 79 45 78 70 72  sion: 'UnaryExpr
5930: 65 73 73 69 6f 6e 27 2c 0a 20 20 09 20 20 20 20  ession',.  .    
5940: 55 70 64 61 74 65 45 78 70 72 65 73 73 69 6f 6e  UpdateExpression
5950: 3a 20 27 55 70 64 61 74 65 45 78 70 72 65 73 73  : 'UpdateExpress
5960: 69 6f 6e 27 2c 0a 20 20 09 20 20 20 20 56 61 72  ion',.  .    Var
5970: 69 61 62 6c 65 44 65 63 6c 61 72 61 74 69 6f 6e  iableDeclaration
5980: 3a 20 27 56 61 72 69 61 62 6c 65 44 65 63 6c 61  : 'VariableDecla
5990: 72 61 74 69 6f 6e 27 2c 0a 20 20 09 20 20 20 20  ration',.  .    
59a0: 56 61 72 69 61 62 6c 65 44 65 63 6c 61 72 61 74  VariableDeclarat
59b0: 6f 72 3a 20 27 56 61 72 69 61 62 6c 65 44 65 63  or: 'VariableDec
59c0: 6c 61 72 61 74 6f 72 27 2c 0a 20 20 09 20 20 20  larator',.  .   
59d0: 20 57 68 69 6c 65 53 74 61 74 65 6d 65 6e 74 3a   WhileStatement:
59e0: 20 27 57 68 69 6c 65 53 74 61 74 65 6d 65 6e 74   'WhileStatement
59f0: 27 2c 0a 20 20 09 20 20 20 20 57 69 74 68 53 74  ',.  .    WithSt
5a00: 61 74 65 6d 65 6e 74 3a 20 27 57 69 74 68 53 74  atement: 'WithSt
5a10: 61 74 65 6d 65 6e 74 27 2c 0a 20 20 09 20 20 20  atement',.  .   
5a20: 20 59 69 65 6c 64 45 78 70 72 65 73 73 69 6f 6e   YieldExpression
5a30: 3a 20 27 59 69 65 6c 64 45 78 70 72 65 73 73 69  : 'YieldExpressi
5a40: 6f 6e 27 0a 20 20 09 7d 3b 0a 0a 0a 20 20 2f 2a  on'.  .};...  /*
5a50: 2a 2a 2f 20 7d 2c 0a 20 20 2f 2a 20 33 20 2a 2f  **/ },.  /* 3 */
5a60: 0a 20 20 2f 2a 2a 2a 2f 20 66 75 6e 63 74 69 6f  .  /***/ functio
5a70: 6e 28 6d 6f 64 75 6c 65 2c 20 65 78 70 6f 72 74  n(module, export
5a80: 73 2c 20 5f 5f 77 65 62 70 61 63 6b 5f 72 65 71  s, __webpack_req
5a90: 75 69 72 65 5f 5f 29 20 7b 0a 20 20 09 76 61 72  uire__) {.  .var
5aa0: 20 61 73 73 65 72 74 5f 31 20 3d 20 5f 5f 77 65   assert_1 = __we
5ab0: 62 70 61 63 6b 5f 72 65 71 75 69 72 65 5f 5f 28  bpack_require__(
5ac0: 34 29 3b 0a 20 20 09 76 61 72 20 6d 65 73 73 61  4);.  .var messa
5ad0: 67 65 73 5f 31 20 3d 20 5f 5f 77 65 62 70 61 63  ges_1 = __webpac
5ae0: 6b 5f 72 65 71 75 69 72 65 5f 5f 28 35 29 3b 0a  k_require__(5);.
5af0: 20 20 09 76 61 72 20 65 72 72 6f 72 5f 68 61 6e    .var error_han
5b00: 64 6c 65 72 5f 31 20 3d 20 5f 5f 77 65 62 70 61  dler_1 = __webpa
5b10: 63 6b 5f 72 65 71 75 69 72 65 5f 5f 28 36 29 3b  ck_require__(6);
5b20: 0a 20 20 09 76 61 72 20 74 6f 6b 65 6e 5f 31 20  .  .var token_1 
5b30: 3d 20 5f 5f 77 65 62 70 61 63 6b 5f 72 65 71 75  = __webpack_requ
5b40: 69 72 65 5f 5f 28 37 29 3b 0a 20 20 09 76 61 72  ire__(7);.  .var
5b50: 20 73 63 61 6e 6e 65 72 5f 31 20 3d 20 5f 5f 77   scanner_1 = __w
5b60: 65 62 70 61 63 6b 5f 72 65 71 75 69 72 65 5f 5f  ebpack_require__
5b70: 28 38 29 3b 0a 20 20 09 76 61 72 20 73 79 6e 74  (8);.  .var synt
5b80: 61 78 5f 31 20 3d 20 5f 5f 77 65 62 70 61 63 6b  ax_1 = __webpack
5b90: 5f 72 65 71 75 69 72 65 5f 5f 28 32 29 3b 0a 20  _require__(2);. 
5ba0: 20 09 76 61 72 20 4e 6f 64 65 20 3d 20 5f 5f 77   .var Node = __w
5bb0: 65 62 70 61 63 6b 5f 72 65 71 75 69 72 65 5f 5f  ebpack_require__
5bc0: 28 31 30 29 3b 0a 20 20 09 76 61 72 20 41 72 72  (10);.  .var Arr
5bd0: 6f 77 50 61 72 61 6d 65 74 65 72 50 6c 61 63 65  owParameterPlace
5be0: 48 6f 6c 64 65 72 20 3d 20 27 41 72 72 6f 77 50  Holder = 'ArrowP
5bf0: 61 72 61 6d 65 74 65 72 50 6c 61 63 65 48 6f 6c  arameterPlaceHol
5c00: 64 65 72 27 3b 0a 20 20 09 76 61 72 20 50 61 72  der';.  .var Par
5c10: 73 65 72 20 3d 20 28 66 75 6e 63 74 69 6f 6e 20  ser = (function 
5c20: 28 29 20 7b 0a 20 20 09 20 20 20 20 66 75 6e 63  () {.  .    func
5c30: 74 69 6f 6e 20 50 61 72 73 65 72 28 63 6f 64 65  tion Parser(code
5c40: 2c 20 6f 70 74 69 6f 6e 73 2c 20 64 65 6c 65 67  , options, deleg
5c50: 61 74 65 29 20 7b 0a 20 20 09 20 20 20 20 20 20  ate) {.  .      
5c60: 20 20 69 66 20 28 6f 70 74 69 6f 6e 73 20 3d 3d    if (options ==
5c70: 3d 20 76 6f 69 64 20 30 29 20 7b 20 6f 70 74 69  = void 0) { opti
5c80: 6f 6e 73 20 3d 20 7b 7d 3b 20 7d 0a 20 20 09 20  ons = {}; }.  . 
5c90: 20 20 20 20 20 20 20 74 68 69 73 2e 63 6f 6e 66         this.conf
5ca0: 69 67 20 3d 20 7b 0a 20 20 09 20 20 20 20 20 20  ig = {.  .      
5cb0: 20 20 20 20 20 20 72 61 6e 67 65 3a 20 28 74 79        range: (ty
5cc0: 70 65 6f 66 20 6f 70 74 69 6f 6e 73 2e 72 61 6e  peof options.ran
5cd0: 67 65 20 3d 3d 3d 20 27 62 6f 6f 6c 65 61 6e 27  ge === 'boolean'
5ce0: 29 20 26 26 20 6f 70 74 69 6f 6e 73 2e 72 61 6e  ) && options.ran
5cf0: 67 65 2c 0a 20 20 09 20 20 20 20 20 20 20 20 20  ge,.  .         
5d00: 20 20 20 6c 6f 63 3a 20 28 74 79 70 65 6f 66 20     loc: (typeof 
5d10: 6f 70 74 69 6f 6e 73 2e 6c 6f 63 20 3d 3d 3d 20  options.loc === 
5d20: 27 62 6f 6f 6c 65 61 6e 27 29 20 26 26 20 6f 70  'boolean') && op
5d30: 74 69 6f 6e 73 2e 6c 6f 63 2c 0a 20 20 09 20 20  tions.loc,.  .  
5d40: 20 20 20 20 20 20 20 20 20 20 73 6f 75 72 63 65            source
5d50: 3a 20 6e 75 6c 6c 2c 0a 20 20 09 20 20 20 20 20  : null,.  .     
5d60: 20 20 20 20 20 20 20 74 6f 6b 65 6e 73 3a 20 28         tokens: (
5d70: 74 79 70 65 6f 66 20 6f 70 74 69 6f 6e 73 2e 74  typeof options.t
5d80: 6f 6b 65 6e 73 20 3d 3d 3d 20 27 62 6f 6f 6c 65  okens === 'boole
5d90: 61 6e 27 29 20 26 26 20 6f 70 74 69 6f 6e 73 2e  an') && options.
5da0: 74 6f 6b 65 6e 73 2c 0a 20 20 09 20 20 20 20 20  tokens,.  .     
5db0: 20 20 20 20 20 20 20 63 6f 6d 6d 65 6e 74 3a 20         comment: 
5dc0: 28 74 79 70 65 6f 66 20 6f 70 74 69 6f 6e 73 2e  (typeof options.
5dd0: 63 6f 6d 6d 65 6e 74 20 3d 3d 3d 20 27 62 6f 6f  comment === 'boo
5de0: 6c 65 61 6e 27 29 20 26 26 20 6f 70 74 69 6f 6e  lean') && option
5df0: 73 2e 63 6f 6d 6d 65 6e 74 2c 0a 20 20 09 20 20  s.comment,.  .  
5e00: 20 20 20 20 20 20 20 20 20 20 74 6f 6c 65 72 61            tolera
5e10: 6e 74 3a 20 28 74 79 70 65 6f 66 20 6f 70 74 69  nt: (typeof opti
5e20: 6f 6e 73 2e 74 6f 6c 65 72 61 6e 74 20 3d 3d 3d  ons.tolerant ===
5e30: 20 27 62 6f 6f 6c 65 61 6e 27 29 20 26 26 20 6f   'boolean') && o
5e40: 70 74 69 6f 6e 73 2e 74 6f 6c 65 72 61 6e 74 0a  ptions.tolerant.
5e50: 20 20 09 20 20 20 20 20 20 20 20 7d 3b 0a 20 20    .        };.  
5e60: 09 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69  .        if (thi
5e70: 73 2e 63 6f 6e 66 69 67 2e 6c 6f 63 20 26 26 20  s.config.loc && 
5e80: 6f 70 74 69 6f 6e 73 2e 73 6f 75 72 63 65 20 26  options.source &
5e90: 26 20 6f 70 74 69 6f 6e 73 2e 73 6f 75 72 63 65  & options.source
5ea0: 20 21 3d 3d 20 6e 75 6c 6c 29 20 7b 0a 20 20 09   !== null) {.  .
5eb0: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
5ec0: 2e 63 6f 6e 66 69 67 2e 73 6f 75 72 63 65 20 3d  .config.source =
5ed0: 20 53 74 72 69 6e 67 28 6f 70 74 69 6f 6e 73 2e   String(options.
5ee0: 73 6f 75 72 63 65 29 3b 0a 20 20 09 20 20 20 20  source);.  .    
5ef0: 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20      }.  .       
5f00: 20 74 68 69 73 2e 64 65 6c 65 67 61 74 65 20 3d   this.delegate =
5f10: 20 64 65 6c 65 67 61 74 65 3b 0a 20 20 09 20 20   delegate;.  .  
5f20: 20 20 20 20 20 20 74 68 69 73 2e 65 72 72 6f 72        this.error
5f30: 48 61 6e 64 6c 65 72 20 3d 20 6e 65 77 20 65 72  Handler = new er
5f40: 72 6f 72 5f 68 61 6e 64 6c 65 72 5f 31 2e 45 72  ror_handler_1.Er
5f50: 72 6f 72 48 61 6e 64 6c 65 72 28 29 3b 0a 20 20  rorHandler();.  
5f60: 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 65 72  .        this.er
5f70: 72 6f 72 48 61 6e 64 6c 65 72 2e 74 6f 6c 65 72  rorHandler.toler
5f80: 61 6e 74 20 3d 20 74 68 69 73 2e 63 6f 6e 66 69  ant = this.confi
5f90: 67 2e 74 6f 6c 65 72 61 6e 74 3b 0a 20 20 09 20  g.tolerant;.  . 
5fa0: 20 20 20 20 20 20 20 74 68 69 73 2e 73 63 61 6e         this.scan
5fb0: 6e 65 72 20 3d 20 6e 65 77 20 73 63 61 6e 6e 65  ner = new scanne
5fc0: 72 5f 31 2e 53 63 61 6e 6e 65 72 28 63 6f 64 65  r_1.Scanner(code
5fd0: 2c 20 74 68 69 73 2e 65 72 72 6f 72 48 61 6e 64  , this.errorHand
5fe0: 6c 65 72 29 3b 0a 20 20 09 20 20 20 20 20 20 20  ler);.  .       
5ff0: 20 74 68 69 73 2e 73 63 61 6e 6e 65 72 2e 74 72   this.scanner.tr
6000: 61 63 6b 43 6f 6d 6d 65 6e 74 20 3d 20 74 68 69  ackComment = thi
6010: 73 2e 63 6f 6e 66 69 67 2e 63 6f 6d 6d 65 6e 74  s.config.comment
6020: 3b 0a 20 20 09 20 20 20 20 20 20 20 20 74 68 69  ;.  .        thi
6030: 73 2e 6f 70 65 72 61 74 6f 72 50 72 65 63 65 64  s.operatorPreced
6040: 65 6e 63 65 20 3d 20 7b 0a 20 20 09 20 20 20 20  ence = {.  .    
6050: 20 20 20 20 20 20 20 20 27 29 27 3a 20 30 2c 0a          ')': 0,.
6060: 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 27    .            '
6070: 3b 27 3a 20 30 2c 0a 20 20 09 20 20 20 20 20 20  ;': 0,.  .      
6080: 20 20 20 20 20 20 27 2c 27 3a 20 30 2c 0a 20 20        ',': 0,.  
6090: 09 20 20 20 20 20 20 20 20 20 20 20 20 27 3d 27  .            '='
60a0: 3a 20 30 2c 0a 20 20 09 20 20 20 20 20 20 20 20  : 0,.  .        
60b0: 20 20 20 20 27 5d 27 3a 20 30 2c 0a 20 20 09 20      ']': 0,.  . 
60c0: 20 20 20 20 20 20 20 20 20 20 20 27 7c 7c 27 3a             '||':
60d0: 20 31 2c 0a 20 20 09 20 20 20 20 20 20 20 20 20   1,.  .         
60e0: 20 20 20 27 26 26 27 3a 20 32 2c 0a 20 20 09 20     '&&': 2,.  . 
60f0: 20 20 20 20 20 20 20 20 20 20 20 27 7c 27 3a 20             '|': 
6100: 33 2c 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  3,.  .          
6110: 20 20 27 5e 27 3a 20 34 2c 0a 20 20 09 20 20 20    '^': 4,.  .   
6120: 20 20 20 20 20 20 20 20 20 27 26 27 3a 20 35 2c           '&': 5,
6130: 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
6140: 27 3d 3d 27 3a 20 36 2c 0a 20 20 09 20 20 20 20  '==': 6,.  .    
6150: 20 20 20 20 20 20 20 20 27 21 3d 27 3a 20 36 2c          '!=': 6,
6160: 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
6170: 27 3d 3d 3d 27 3a 20 36 2c 0a 20 20 09 20 20 20  '===': 6,.  .   
6180: 20 20 20 20 20 20 20 20 20 27 21 3d 3d 27 3a 20           '!==': 
6190: 36 2c 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  6,.  .          
61a0: 20 20 27 3c 27 3a 20 37 2c 0a 20 20 09 20 20 20    '<': 7,.  .   
61b0: 20 20 20 20 20 20 20 20 20 27 3e 27 3a 20 37 2c           '>': 7,
61c0: 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
61d0: 27 3c 3d 27 3a 20 37 2c 0a 20 20 09 20 20 20 20  '<=': 7,.  .    
61e0: 20 20 20 20 20 20 20 20 27 3e 3d 27 3a 20 37 2c          '>=': 7,
61f0: 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
6200: 27 3c 3c 27 3a 20 38 2c 0a 20 20 09 20 20 20 20  '<<': 8,.  .    
6210: 20 20 20 20 20 20 20 20 27 3e 3e 27 3a 20 38 2c          '>>': 8,
6220: 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
6230: 27 3e 3e 3e 27 3a 20 38 2c 0a 20 20 09 20 20 20  '>>>': 8,.  .   
6240: 20 20 20 20 20 20 20 20 20 27 2b 27 3a 20 39 2c           '+': 9,
6250: 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
6260: 27 2d 27 3a 20 39 2c 0a 20 20 09 20 20 20 20 20  '-': 9,.  .     
6270: 20 20 20 20 20 20 20 27 2a 27 3a 20 31 31 2c 0a         '*': 11,.
6280: 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 27    .            '
6290: 2f 27 3a 20 31 31 2c 0a 20 20 09 20 20 20 20 20  /': 11,.  .     
62a0: 20 20 20 20 20 20 20 27 25 27 3a 20 31 31 0a 20         '%': 11. 
62b0: 20 09 20 20 20 20 20 20 20 20 7d 3b 0a 20 20 09   .        };.  .
62c0: 20 20 20 20 20 20 20 20 74 68 69 73 2e 73 6f 75          this.sou
62d0: 72 63 65 54 79 70 65 20 3d 20 28 6f 70 74 69 6f  rceType = (optio
62e0: 6e 73 20 26 26 20 6f 70 74 69 6f 6e 73 2e 73 6f  ns && options.so
62f0: 75 72 63 65 54 79 70 65 20 3d 3d 3d 20 27 6d 6f  urceType === 'mo
6300: 64 75 6c 65 27 29 20 3f 20 27 6d 6f 64 75 6c 65  dule') ? 'module
6310: 27 20 3a 20 27 73 63 72 69 70 74 27 3b 0a 20 20  ' : 'script';.  
6320: 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c 6f  .        this.lo
6330: 6f 6b 61 68 65 61 64 20 3d 20 6e 75 6c 6c 3b 0a  okahead = null;.
6340: 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e    .        this.
6350: 68 61 73 4c 69 6e 65 54 65 72 6d 69 6e 61 74 6f  hasLineTerminato
6360: 72 20 3d 20 66 61 6c 73 65 3b 0a 20 20 09 20 20  r = false;.  .  
6370: 20 20 20 20 20 20 74 68 69 73 2e 63 6f 6e 74 65        this.conte
6380: 78 74 20 3d 20 7b 0a 20 20 09 20 20 20 20 20 20  xt = {.  .      
6390: 20 20 20 20 20 20 61 6c 6c 6f 77 49 6e 3a 20 74        allowIn: t
63a0: 72 75 65 2c 0a 20 20 09 20 20 20 20 20 20 20 20  rue,.  .        
63b0: 20 20 20 20 61 6c 6c 6f 77 59 69 65 6c 64 3a 20      allowYield: 
63c0: 74 72 75 65 2c 0a 20 20 09 20 20 20 20 20 20 20  true,.  .       
63d0: 20 20 20 20 20 66 69 72 73 74 43 6f 76 65 72 49       firstCoverI
63e0: 6e 69 74 69 61 6c 69 7a 65 64 4e 61 6d 65 45 72  nitializedNameEr
63f0: 72 6f 72 3a 20 6e 75 6c 6c 2c 0a 20 20 09 20 20  ror: null,.  .  
6400: 20 20 20 20 20 20 20 20 20 20 69 73 41 73 73 69            isAssi
6410: 67 6e 6d 65 6e 74 54 61 72 67 65 74 3a 20 66 61  gnmentTarget: fa
6420: 6c 73 65 2c 0a 20 20 09 20 20 20 20 20 20 20 20  lse,.  .        
6430: 20 20 20 20 69 73 42 69 6e 64 69 6e 67 45 6c 65      isBindingEle
6440: 6d 65 6e 74 3a 20 66 61 6c 73 65 2c 0a 20 20 09  ment: false,.  .
6450: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 46 75              inFu
6460: 6e 63 74 69 6f 6e 42 6f 64 79 3a 20 66 61 6c 73  nctionBody: fals
6470: 65 2c 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  e,.  .          
6480: 20 20 69 6e 49 74 65 72 61 74 69 6f 6e 3a 20 66    inIteration: f
6490: 61 6c 73 65 2c 0a 20 20 09 20 20 20 20 20 20 20  alse,.  .       
64a0: 20 20 20 20 20 69 6e 53 77 69 74 63 68 3a 20 66       inSwitch: f
64b0: 61 6c 73 65 2c 0a 20 20 09 20 20 20 20 20 20 20  alse,.  .       
64c0: 20 20 20 20 20 6c 61 62 65 6c 53 65 74 3a 20 7b       labelSet: {
64d0: 7d 2c 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  },.  .          
64e0: 20 20 73 74 72 69 63 74 3a 20 28 74 68 69 73 2e    strict: (this.
64f0: 73 6f 75 72 63 65 54 79 70 65 20 3d 3d 3d 20 27  sourceType === '
6500: 6d 6f 64 75 6c 65 27 29 0a 20 20 09 20 20 20 20  module').  .    
6510: 20 20 20 20 7d 3b 0a 20 20 09 20 20 20 20 20 20      };.  .      
6520: 20 20 74 68 69 73 2e 74 6f 6b 65 6e 73 20 3d 20    this.tokens = 
6530: 5b 5d 3b 0a 20 20 09 20 20 20 20 20 20 20 20 74  [];.  .        t
6540: 68 69 73 2e 73 74 61 72 74 4d 61 72 6b 65 72 20  his.startMarker 
6550: 3d 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20  = {.  .         
6560: 20 20 20 69 6e 64 65 78 3a 20 30 2c 0a 20 20 09     index: 0,.  .
6570: 20 20 20 20 20 20 20 20 20 20 20 20 6c 69 6e 65              line
6580: 4e 75 6d 62 65 72 3a 20 74 68 69 73 2e 73 63 61  Number: this.sca
6590: 6e 6e 65 72 2e 6c 69 6e 65 4e 75 6d 62 65 72 2c  nner.lineNumber,
65a0: 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
65b0: 6c 69 6e 65 53 74 61 72 74 3a 20 30 0a 20 20 09  lineStart: 0.  .
65c0: 20 20 20 20 20 20 20 20 7d 3b 0a 20 20 09 20 20          };.  .  
65d0: 20 20 20 20 20 20 74 68 69 73 2e 6c 61 73 74 4d        this.lastM
65e0: 61 72 6b 65 72 20 3d 20 7b 0a 20 20 09 20 20 20  arker = {.  .   
65f0: 20 20 20 20 20 20 20 20 20 69 6e 64 65 78 3a 20           index: 
6600: 30 2c 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  0,.  .          
6610: 20 20 6c 69 6e 65 4e 75 6d 62 65 72 3a 20 74 68    lineNumber: th
6620: 69 73 2e 73 63 61 6e 6e 65 72 2e 6c 69 6e 65 4e  is.scanner.lineN
6630: 75 6d 62 65 72 2c 0a 20 20 09 20 20 20 20 20 20  umber,.  .      
6640: 20 20 20 20 20 20 6c 69 6e 65 53 74 61 72 74 3a        lineStart:
6650: 20 30 0a 20 20 09 20 20 20 20 20 20 20 20 7d 3b   0.  .        };
6660: 0a 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73  .  .        this
6670: 2e 6e 65 78 74 54 6f 6b 65 6e 28 29 3b 0a 20 20  .nextToken();.  
6680: 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c 61  .        this.la
6690: 73 74 4d 61 72 6b 65 72 20 3d 20 7b 0a 20 20 09  stMarker = {.  .
66a0: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 64 65              inde
66b0: 78 3a 20 74 68 69 73 2e 73 63 61 6e 6e 65 72 2e  x: this.scanner.
66c0: 69 6e 64 65 78 2c 0a 20 20 09 20 20 20 20 20 20  index,.  .      
66d0: 20 20 20 20 20 20 6c 69 6e 65 4e 75 6d 62 65 72        lineNumber
66e0: 3a 20 74 68 69 73 2e 73 63 61 6e 6e 65 72 2e 6c  : this.scanner.l
66f0: 69 6e 65 4e 75 6d 62 65 72 2c 0a 20 20 09 20 20  ineNumber,.  .  
6700: 20 20 20 20 20 20 20 20 20 20 6c 69 6e 65 53 74            lineSt
6710: 61 72 74 3a 20 74 68 69 73 2e 73 63 61 6e 6e 65  art: this.scanne
6720: 72 2e 6c 69 6e 65 53 74 61 72 74 0a 20 20 09 20  r.lineStart.  . 
6730: 20 20 20 20 20 20 20 7d 3b 0a 20 20 09 20 20 20         };.  .   
6740: 20 7d 0a 20 20 09 20 20 20 20 50 61 72 73 65 72   }.  .    Parser
6750: 2e 70 72 6f 74 6f 74 79 70 65 2e 74 68 72 6f 77  .prototype.throw
6760: 45 72 72 6f 72 20 3d 20 66 75 6e 63 74 69 6f 6e  Error = function
6770: 20 28 6d 65 73 73 61 67 65 46 6f 72 6d 61 74 29   (messageFormat)
6780: 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 76 61   {.  .        va
6790: 72 20 61 72 67 75 6d 65 6e 74 73 24 31 20 3d 20  r arguments$1 = 
67a0: 61 72 67 75 6d 65 6e 74 73 3b 0a 0a 20 20 09 20  arguments;..  . 
67b0: 20 20 20 20 20 20 20 76 61 72 20 76 61 6c 75 65         var value
67c0: 73 20 3d 20 5b 5d 3b 0a 20 20 09 20 20 20 20 20  s = [];.  .     
67d0: 20 20 20 66 6f 72 20 28 76 61 72 20 5f 69 20 3d     for (var _i =
67e0: 20 31 3b 20 5f 69 20 3c 20 61 72 67 75 6d 65 6e   1; _i < argumen
67f0: 74 73 2e 6c 65 6e 67 74 68 3b 20 5f 69 2b 2b 29  ts.length; _i++)
6800: 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   {.  .          
6810: 20 20 76 61 6c 75 65 73 5b 5f 69 20 2d 20 31 5d    values[_i - 1]
6820: 20 3d 20 61 72 67 75 6d 65 6e 74 73 24 31 5b 5f   = arguments$1[_
6830: 69 5d 3b 0a 20 20 09 20 20 20 20 20 20 20 20 7d  i];.  .        }
6840: 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20  .  .        var 
6850: 61 72 67 73 20 3d 20 41 72 72 61 79 2e 70 72 6f  args = Array.pro
6860: 74 6f 74 79 70 65 2e 73 6c 69 63 65 2e 63 61 6c  totype.slice.cal
6870: 6c 28 61 72 67 75 6d 65 6e 74 73 2c 20 31 29 3b  l(arguments, 1);
6880: 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20  .  .        var 
6890: 6d 73 67 20 3d 20 6d 65 73 73 61 67 65 46 6f 72  msg = messageFor
68a0: 6d 61 74 2e 72 65 70 6c 61 63 65 28 2f 25 28 5c  mat.replace(/%(\
68b0: 64 29 2f 67 2c 20 66 75 6e 63 74 69 6f 6e 20 28  d)/g, function (
68c0: 77 68 6f 6c 65 2c 20 69 64 78 29 20 7b 0a 20 20  whole, idx) {.  
68d0: 09 20 20 20 20 20 20 20 20 20 20 20 20 61 73 73  .            ass
68e0: 65 72 74 5f 31 2e 61 73 73 65 72 74 28 69 64 78  ert_1.assert(idx
68f0: 20 3c 20 61 72 67 73 2e 6c 65 6e 67 74 68 2c 20   < args.length, 
6900: 27 4d 65 73 73 61 67 65 20 72 65 66 65 72 65 6e  'Message referen
6910: 63 65 20 6d 75 73 74 20 62 65 20 69 6e 20 72 61  ce must be in ra
6920: 6e 67 65 27 29 3b 0a 20 20 09 20 20 20 20 20 20  nge');.  .      
6930: 20 20 20 20 20 20 72 65 74 75 72 6e 20 61 72 67        return arg
6940: 73 5b 69 64 78 5d 3b 0a 20 20 09 20 20 20 20 20  s[idx];.  .     
6950: 20 20 20 7d 29 3b 0a 20 20 09 20 20 20 20 20 20     });.  .      
6960: 20 20 76 61 72 20 69 6e 64 65 78 20 3d 20 74 68    var index = th
6970: 69 73 2e 6c 61 73 74 4d 61 72 6b 65 72 2e 69 6e  is.lastMarker.in
6980: 64 65 78 3b 0a 20 20 09 20 20 20 20 20 20 20 20  dex;.  .        
6990: 76 61 72 20 6c 69 6e 65 20 3d 20 74 68 69 73 2e  var line = this.
69a0: 6c 61 73 74 4d 61 72 6b 65 72 2e 6c 69 6e 65 4e  lastMarker.lineN
69b0: 75 6d 62 65 72 3b 0a 20 20 09 20 20 20 20 20 20  umber;.  .      
69c0: 20 20 76 61 72 20 63 6f 6c 75 6d 6e 20 3d 20 74    var column = t
69d0: 68 69 73 2e 6c 61 73 74 4d 61 72 6b 65 72 2e 69  his.lastMarker.i
69e0: 6e 64 65 78 20 2d 20 74 68 69 73 2e 6c 61 73 74  ndex - this.last
69f0: 4d 61 72 6b 65 72 2e 6c 69 6e 65 53 74 61 72 74  Marker.lineStart
6a00: 20 2b 20 31 3b 0a 20 20 09 20 20 20 20 20 20 20   + 1;.  .       
6a10: 20 74 68 72 6f 77 20 74 68 69 73 2e 65 72 72 6f   throw this.erro
6a20: 72 48 61 6e 64 6c 65 72 2e 63 72 65 61 74 65 45  rHandler.createE
6a30: 72 72 6f 72 28 69 6e 64 65 78 2c 20 6c 69 6e 65  rror(index, line
6a40: 2c 20 63 6f 6c 75 6d 6e 2c 20 6d 73 67 29 3b 0a  , column, msg);.
6a50: 20 20 09 20 20 20 20 7d 3b 0a 20 20 09 20 20 20    .    };.  .   
6a60: 20 50 61 72 73 65 72 2e 70 72 6f 74 6f 74 79 70   Parser.prototyp
6a70: 65 2e 74 6f 6c 65 72 61 74 65 45 72 72 6f 72 20  e.tolerateError 
6a80: 3d 20 66 75 6e 63 74 69 6f 6e 20 28 6d 65 73 73  = function (mess
6a90: 61 67 65 46 6f 72 6d 61 74 29 20 7b 0a 20 20 09  ageFormat) {.  .
6aa0: 20 20 20 20 20 20 20 20 76 61 72 20 61 72 67 75          var argu
6ab0: 6d 65 6e 74 73 24 31 20 3d 20 61 72 67 75 6d 65  ments$1 = argume
6ac0: 6e 74 73 3b 0a 0a 20 20 09 20 20 20 20 20 20 20  nts;..  .       
6ad0: 20 76 61 72 20 76 61 6c 75 65 73 20 3d 20 5b 5d   var values = []
6ae0: 3b 0a 20 20 09 20 20 20 20 20 20 20 20 66 6f 72  ;.  .        for
6af0: 20 28 76 61 72 20 5f 69 20 3d 20 31 3b 20 5f 69   (var _i = 1; _i
6b00: 20 3c 20 61 72 67 75 6d 65 6e 74 73 2e 6c 65 6e   < arguments.len
6b10: 67 74 68 3b 20 5f 69 2b 2b 29 20 7b 0a 20 20 09  gth; _i++) {.  .
6b20: 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75              valu
6b30: 65 73 5b 5f 69 20 2d 20 31 5d 20 3d 20 61 72 67  es[_i - 1] = arg
6b40: 75 6d 65 6e 74 73 24 31 5b 5f 69 5d 3b 0a 20 20  uments$1[_i];.  
6b50: 09 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20  .        }.  .  
6b60: 20 20 20 20 20 20 76 61 72 20 61 72 67 73 20 3d        var args =
6b70: 20 41 72 72 61 79 2e 70 72 6f 74 6f 74 79 70 65   Array.prototype
6b80: 2e 73 6c 69 63 65 2e 63 61 6c 6c 28 61 72 67 75  .slice.call(argu
6b90: 6d 65 6e 74 73 2c 20 31 29 3b 0a 20 20 09 20 20  ments, 1);.  .  
6ba0: 20 20 20 20 20 20 76 61 72 20 6d 73 67 20 3d 20        var msg = 
6bb0: 6d 65 73 73 61 67 65 46 6f 72 6d 61 74 2e 72 65  messageFormat.re
6bc0: 70 6c 61 63 65 28 2f 25 28 5c 64 29 2f 67 2c 20  place(/%(\d)/g, 
6bd0: 66 75 6e 63 74 69 6f 6e 20 28 77 68 6f 6c 65 2c  function (whole,
6be0: 20 69 64 78 29 20 7b 0a 20 20 09 20 20 20 20 20   idx) {.  .     
6bf0: 20 20 20 20 20 20 20 61 73 73 65 72 74 5f 31 2e         assert_1.
6c00: 61 73 73 65 72 74 28 69 64 78 20 3c 20 61 72 67  assert(idx < arg
6c10: 73 2e 6c 65 6e 67 74 68 2c 20 27 4d 65 73 73 61  s.length, 'Messa
6c20: 67 65 20 72 65 66 65 72 65 6e 63 65 20 6d 75 73  ge reference mus
6c30: 74 20 62 65 20 69 6e 20 72 61 6e 67 65 27 29 3b  t be in range');
6c40: 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
6c50: 72 65 74 75 72 6e 20 61 72 67 73 5b 69 64 78 5d  return args[idx]
6c60: 3b 0a 20 20 09 20 20 20 20 20 20 20 20 7d 29 3b  ;.  .        });
6c70: 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20  .  .        var 
6c80: 69 6e 64 65 78 20 3d 20 74 68 69 73 2e 6c 61 73  index = this.las
6c90: 74 4d 61 72 6b 65 72 2e 69 6e 64 65 78 3b 0a 20  tMarker.index;. 
6ca0: 20 09 20 20 20 20 20 20 20 20 76 61 72 20 6c 69   .        var li
6cb0: 6e 65 20 3d 20 74 68 69 73 2e 73 63 61 6e 6e 65  ne = this.scanne
6cc0: 72 2e 6c 69 6e 65 4e 75 6d 62 65 72 3b 0a 20 20  r.lineNumber;.  
6cd0: 09 20 20 20 20 20 20 20 20 76 61 72 20 63 6f 6c  .        var col
6ce0: 75 6d 6e 20 3d 20 74 68 69 73 2e 6c 61 73 74 4d  umn = this.lastM
6cf0: 61 72 6b 65 72 2e 69 6e 64 65 78 20 2d 20 74 68  arker.index - th
6d00: 69 73 2e 6c 61 73 74 4d 61 72 6b 65 72 2e 6c 69  is.lastMarker.li
6d10: 6e 65 53 74 61 72 74 20 2b 20 31 3b 0a 20 20 09  neStart + 1;.  .
6d20: 20 20 20 20 20 20 20 20 74 68 69 73 2e 65 72 72          this.err
6d30: 6f 72 48 61 6e 64 6c 65 72 2e 74 6f 6c 65 72 61  orHandler.tolera
6d40: 74 65 45 72 72 6f 72 28 69 6e 64 65 78 2c 20 6c  teError(index, l
6d50: 69 6e 65 2c 20 63 6f 6c 75 6d 6e 2c 20 6d 73 67  ine, column, msg
6d60: 29 3b 0a 20 20 09 20 20 20 20 7d 3b 0a 20 20 09  );.  .    };.  .
6d70: 20 20 20 20 2f 2f 20 54 68 72 6f 77 20 61 6e 20      // Throw an 
6d80: 65 78 63 65 70 74 69 6f 6e 20 62 65 63 61 75 73  exception becaus
6d90: 65 20 6f 66 20 74 68 65 20 74 6f 6b 65 6e 2e 0a  e of the token..
6da0: 20 20 09 20 20 20 20 50 61 72 73 65 72 2e 70 72    .    Parser.pr
6db0: 6f 74 6f 74 79 70 65 2e 75 6e 65 78 70 65 63 74  ototype.unexpect
6dc0: 65 64 54 6f 6b 65 6e 45 72 72 6f 72 20 3d 20 66  edTokenError = f
6dd0: 75 6e 63 74 69 6f 6e 20 28 74 6f 6b 65 6e 2c 20  unction (token, 
6de0: 6d 65 73 73 61 67 65 29 20 7b 0a 20 20 09 20 20  message) {.  .  
6df0: 20 20 20 20 20 20 76 61 72 20 6d 73 67 20 3d 20        var msg = 
6e00: 6d 65 73 73 61 67 65 20 7c 7c 20 6d 65 73 73 61  message || messa
6e10: 67 65 73 5f 31 2e 4d 65 73 73 61 67 65 73 2e 55  ges_1.Messages.U
6e20: 6e 65 78 70 65 63 74 65 64 54 6f 6b 65 6e 3b 0a  nexpectedToken;.
6e30: 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20 76    .        var v
6e40: 61 6c 75 65 3b 0a 20 20 09 20 20 20 20 20 20 20  alue;.  .       
6e50: 20 69 66 20 28 74 6f 6b 65 6e 29 20 7b 0a 20 20   if (token) {.  
6e60: 09 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
6e70: 28 21 6d 65 73 73 61 67 65 29 20 7b 0a 20 20 09  (!message) {.  .
6e80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6e90: 6d 73 67 20 3d 20 28 74 6f 6b 65 6e 2e 74 79 70  msg = (token.typ
6ea0: 65 20 3d 3d 3d 20 74 6f 6b 65 6e 5f 31 2e 54 6f  e === token_1.To
6eb0: 6b 65 6e 2e 45 4f 46 29 20 3f 20 6d 65 73 73 61  ken.EOF) ? messa
6ec0: 67 65 73 5f 31 2e 4d 65 73 73 61 67 65 73 2e 55  ges_1.Messages.U
6ed0: 6e 65 78 70 65 63 74 65 64 45 4f 53 20 3a 0a 20  nexpectedEOS :. 
6ee0: 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
6ef0: 20 20 20 20 20 20 28 74 6f 6b 65 6e 2e 74 79 70        (token.typ
6f00: 65 20 3d 3d 3d 20 74 6f 6b 65 6e 5f 31 2e 54 6f  e === token_1.To
6f10: 6b 65 6e 2e 49 64 65 6e 74 69 66 69 65 72 29 20  ken.Identifier) 
6f20: 3f 20 6d 65 73 73 61 67 65 73 5f 31 2e 4d 65 73  ? messages_1.Mes
6f30: 73 61 67 65 73 2e 55 6e 65 78 70 65 63 74 65 64  sages.Unexpected
6f40: 49 64 65 6e 74 69 66 69 65 72 20 3a 0a 20 20 09  Identifier :.  .
6f50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6f60: 20 20 20 20 20 20 20 20 28 74 6f 6b 65 6e 2e 74          (token.t
6f70: 79 70 65 20 3d 3d 3d 20 74 6f 6b 65 6e 5f 31 2e  ype === token_1.
6f80: 54 6f 6b 65 6e 2e 4e 75 6d 65 72 69 63 4c 69 74  Token.NumericLit
6f90: 65 72 61 6c 29 20 3f 20 6d 65 73 73 61 67 65 73  eral) ? messages
6fa0: 5f 31 2e 4d 65 73 73 61 67 65 73 2e 55 6e 65 78  _1.Messages.Unex
6fb0: 70 65 63 74 65 64 4e 75 6d 62 65 72 20 3a 0a 20  pectedNumber :. 
6fc0: 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
6fd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74                (t
6fe0: 6f 6b 65 6e 2e 74 79 70 65 20 3d 3d 3d 20 74 6f  oken.type === to
6ff0: 6b 65 6e 5f 31 2e 54 6f 6b 65 6e 2e 53 74 72 69  ken_1.Token.Stri
7000: 6e 67 4c 69 74 65 72 61 6c 29 20 3f 20 6d 65 73  ngLiteral) ? mes
7010: 73 61 67 65 73 5f 31 2e 4d 65 73 73 61 67 65 73  sages_1.Messages
7020: 2e 55 6e 65 78 70 65 63 74 65 64 53 74 72 69 6e  .UnexpectedStrin
7030: 67 20 3a 0a 20 20 09 20 20 20 20 20 20 20 20 20  g :.  .         
7040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7050: 20 20 20 20 20 20 20 28 74 6f 6b 65 6e 2e 74 79         (token.ty
7060: 70 65 20 3d 3d 3d 20 74 6f 6b 65 6e 5f 31 2e 54  pe === token_1.T
7070: 6f 6b 65 6e 2e 54 65 6d 70 6c 61 74 65 29 20 3f  oken.Template) ?
7080: 20 6d 65 73 73 61 67 65 73 5f 31 2e 4d 65 73 73   messages_1.Mess
7090: 61 67 65 73 2e 55 6e 65 78 70 65 63 74 65 64 54  ages.UnexpectedT
70a0: 65 6d 70 6c 61 74 65 20 3a 0a 20 20 09 20 20 20  emplate :.  .   
70b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
70c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
70d0: 20 6d 65 73 73 61 67 65 73 5f 31 2e 4d 65 73 73   messages_1.Mess
70e0: 61 67 65 73 2e 55 6e 65 78 70 65 63 74 65 64 54  ages.UnexpectedT
70f0: 6f 6b 65 6e 3b 0a 20 20 09 20 20 20 20 20 20 20  oken;.  .       
7100: 20 20 20 20 20 20 20 20 20 69 66 20 28 74 6f 6b           if (tok
7110: 65 6e 2e 74 79 70 65 20 3d 3d 3d 20 74 6f 6b 65  en.type === toke
7120: 6e 5f 31 2e 54 6f 6b 65 6e 2e 4b 65 79 77 6f 72  n_1.Token.Keywor
7130: 64 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20  d) {.  .        
7140: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
7150: 74 68 69 73 2e 73 63 61 6e 6e 65 72 2e 69 73 46  this.scanner.isF
7160: 75 74 75 72 65 52 65 73 65 72 76 65 64 57 6f 72  utureReservedWor
7170: 64 28 74 6f 6b 65 6e 2e 76 61 6c 75 65 29 29 20  d(token.value)) 
7180: 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  {.  .           
7190: 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 73 67               msg
71a0: 20 3d 20 6d 65 73 73 61 67 65 73 5f 31 2e 4d 65   = messages_1.Me
71b0: 73 73 61 67 65 73 2e 55 6e 65 78 70 65 63 74 65  ssages.Unexpecte
71c0: 64 52 65 73 65 72 76 65 64 3b 0a 20 20 09 20 20  dReserved;.  .  
71d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
71e0: 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20    }.  .         
71f0: 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20             else 
7200: 69 66 20 28 74 68 69 73 2e 63 6f 6e 74 65 78 74  if (this.context
7210: 2e 73 74 72 69 63 74 20 26 26 20 74 68 69 73 2e  .strict && this.
7220: 73 63 61 6e 6e 65 72 2e 69 73 53 74 72 69 63 74  scanner.isStrict
7230: 4d 6f 64 65 52 65 73 65 72 76 65 64 57 6f 72 64  ModeReservedWord
7240: 28 74 6f 6b 65 6e 2e 76 61 6c 75 65 29 29 20 7b  (token.value)) {
7250: 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
7260: 20 20 20 20 20 20 20 20 20 20 20 20 6d 73 67 20              msg 
7270: 3d 20 6d 65 73 73 61 67 65 73 5f 31 2e 4d 65 73  = messages_1.Mes
7280: 73 61 67 65 73 2e 53 74 72 69 63 74 52 65 73 65  sages.StrictRese
7290: 72 76 65 64 57 6f 72 64 3b 0a 20 20 09 20 20 20  rvedWord;.  .   
72a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
72b0: 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   }.  .          
72c0: 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20        }.  .     
72d0: 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20         }.  .    
72e0: 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20          value = 
72f0: 28 74 6f 6b 65 6e 2e 74 79 70 65 20 3d 3d 3d 20  (token.type === 
7300: 74 6f 6b 65 6e 5f 31 2e 54 6f 6b 65 6e 2e 54 65  token_1.Token.Te
7310: 6d 70 6c 61 74 65 29 20 3f 20 74 6f 6b 65 6e 2e  mplate) ? token.
7320: 76 61 6c 75 65 2e 72 61 77 20 3a 20 74 6f 6b 65  value.raw : toke
7330: 6e 2e 76 61 6c 75 65 3b 0a 20 20 09 20 20 20 20  n.value;.  .    
7340: 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20      }.  .       
7350: 20 65 6c 73 65 20 7b 0a 20 20 09 20 20 20 20 20   else {.  .     
7360: 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 27         value = '
7370: 49 4c 4c 45 47 41 4c 27 3b 0a 20 20 09 20 20 20  ILLEGAL';.  .   
7380: 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20       }.  .      
7390: 20 20 6d 73 67 20 3d 20 6d 73 67 2e 72 65 70 6c    msg = msg.repl
73a0: 61 63 65 28 27 25 30 27 2c 20 76 61 6c 75 65 29  ace('%0', value)
73b0: 3b 0a 20 20 09 20 20 20 20 20 20 20 20 69 66 20  ;.  .        if 
73c0: 28 74 6f 6b 65 6e 20 26 26 20 74 79 70 65 6f 66  (token && typeof
73d0: 20 74 6f 6b 65 6e 2e 6c 69 6e 65 4e 75 6d 62 65   token.lineNumbe
73e0: 72 20 3d 3d 3d 20 27 6e 75 6d 62 65 72 27 29 20  r === 'number') 
73f0: 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  {.  .           
7400: 20 76 61 72 20 69 6e 64 65 78 20 3d 20 74 6f 6b   var index = tok
7410: 65 6e 2e 73 74 61 72 74 3b 0a 20 20 09 20 20 20  en.start;.  .   
7420: 20 20 20 20 20 20 20 20 20 76 61 72 20 6c 69 6e           var lin
7430: 65 20 3d 20 74 6f 6b 65 6e 2e 6c 69 6e 65 4e 75  e = token.lineNu
7440: 6d 62 65 72 3b 0a 20 20 09 20 20 20 20 20 20 20  mber;.  .       
7450: 20 20 20 20 20 76 61 72 20 63 6f 6c 75 6d 6e 20       var column 
7460: 3d 20 74 6f 6b 65 6e 2e 73 74 61 72 74 20 2d 20  = token.start - 
7470: 74 68 69 73 2e 6c 61 73 74 4d 61 72 6b 65 72 2e  this.lastMarker.
7480: 6c 69 6e 65 53 74 61 72 74 20 2b 20 31 3b 0a 20  lineStart + 1;. 
7490: 20 09 20 20 20 20 20 20 20 20 20 20 20 20 72 65   .            re
74a0: 74 75 72 6e 20 74 68 69 73 2e 65 72 72 6f 72 48  turn this.errorH
74b0: 61 6e 64 6c 65 72 2e 63 72 65 61 74 65 45 72 72  andler.createErr
74c0: 6f 72 28 69 6e 64 65 78 2c 20 6c 69 6e 65 2c 20  or(index, line, 
74d0: 63 6f 6c 75 6d 6e 2c 20 6d 73 67 29 3b 0a 20 20  column, msg);.  
74e0: 09 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20  .        }.  .  
74f0: 20 20 20 20 20 20 65 6c 73 65 20 7b 0a 20 20 09        else {.  .
7500: 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20              var 
7510: 69 6e 64 65 78 20 3d 20 74 68 69 73 2e 6c 61 73  index = this.las
7520: 74 4d 61 72 6b 65 72 2e 69 6e 64 65 78 3b 0a 20  tMarker.index;. 
7530: 20 09 20 20 20 20 20 20 20 20 20 20 20 20 76 61   .            va
7540: 72 20 6c 69 6e 65 20 3d 20 74 68 69 73 2e 6c 61  r line = this.la
7550: 73 74 4d 61 72 6b 65 72 2e 6c 69 6e 65 4e 75 6d  stMarker.lineNum
7560: 62 65 72 3b 0a 20 20 09 20 20 20 20 20 20 20 20  ber;.  .        
7570: 20 20 20 20 76 61 72 20 63 6f 6c 75 6d 6e 20 3d      var column =
7580: 20 69 6e 64 65 78 20 2d 20 74 68 69 73 2e 6c 61   index - this.la
7590: 73 74 4d 61 72 6b 65 72 2e 6c 69 6e 65 53 74 61  stMarker.lineSta
75a0: 72 74 20 2b 20 31 3b 0a 20 20 09 20 20 20 20 20  rt + 1;.  .     
75b0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68         return th
75c0: 69 73 2e 65 72 72 6f 72 48 61 6e 64 6c 65 72 2e  is.errorHandler.
75d0: 63 72 65 61 74 65 45 72 72 6f 72 28 69 6e 64 65  createError(inde
75e0: 78 2c 20 6c 69 6e 65 2c 20 63 6f 6c 75 6d 6e 2c  x, line, column,
75f0: 20 6d 73 67 29 3b 0a 20 20 09 20 20 20 20 20 20   msg);.  .      
7600: 20 20 7d 0a 20 20 09 20 20 20 20 7d 3b 0a 20 20    }.  .    };.  
7610: 09 20 20 20 20 50 61 72 73 65 72 2e 70 72 6f 74  .    Parser.prot
7620: 6f 74 79 70 65 2e 74 68 72 6f 77 55 6e 65 78 70  otype.throwUnexp
7630: 65 63 74 65 64 54 6f 6b 65 6e 20 3d 20 66 75 6e  ectedToken = fun
7640: 63 74 69 6f 6e 20 28 74 6f 6b 65 6e 2c 20 6d 65  ction (token, me
7650: 73 73 61 67 65 29 20 7b 0a 20 20 09 20 20 20 20  ssage) {.  .    
7660: 20 20 20 20 74 68 72 6f 77 20 74 68 69 73 2e 75      throw this.u
7670: 6e 65 78 70 65 63 74 65 64 54 6f 6b 65 6e 45 72  nexpectedTokenEr
7680: 72 6f 72 28 74 6f 6b 65 6e 2c 20 6d 65 73 73 61  ror(token, messa
7690: 67 65 29 3b 0a 20 20 09 20 20 20 20 7d 3b 0a 20  ge);.  .    };. 
76a0: 20 09 20 20 20 20 50 61 72 73 65 72 2e 70 72 6f   .    Parser.pro
76b0: 74 6f 74 79 70 65 2e 74 6f 6c 65 72 61 74 65 55  totype.tolerateU
76c0: 6e 65 78 70 65 63 74 65 64 54 6f 6b 65 6e 20 3d  nexpectedToken =
76d0: 20 66 75 6e 63 74 69 6f 6e 20 28 74 6f 6b 65 6e   function (token
76e0: 2c 20 6d 65 73 73 61 67 65 29 20 7b 0a 20 20 09  , message) {.  .
76f0: 20 20 20 20 20 20 20 20 74 68 69 73 2e 65 72 72          this.err
7700: 6f 72 48 61 6e 64 6c 65 72 2e 74 6f 6c 65 72 61  orHandler.tolera
7710: 74 65 28 74 68 69 73 2e 75 6e 65 78 70 65 63 74  te(this.unexpect
7720: 65 64 54 6f 6b 65 6e 45 72 72 6f 72 28 74 6f 6b  edTokenError(tok
7730: 65 6e 2c 20 6d 65 73 73 61 67 65 29 29 3b 0a 20  en, message));. 
7740: 20 09 20 20 20 20 7d 3b 0a 20 20 09 20 20 20 20   .    };.  .    
7750: 50 61 72 73 65 72 2e 70 72 6f 74 6f 74 79 70 65  Parser.prototype
7760: 2e 63 6f 6c 6c 65 63 74 43 6f 6d 6d 65 6e 74 73  .collectComments
7770: 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b   = function () {
7780: 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20  .  .        var 
7790: 74 68 69 73 24 31 20 3d 20 74 68 69 73 3b 0a 0a  this$1 = this;..
77a0: 20 20 09 20 20 20 20 20 20 20 20 69 66 20 28 21    .        if (!
77b0: 74 68 69 73 2e 63 6f 6e 66 69 67 2e 63 6f 6d 6d  this.config.comm
77c0: 65 6e 74 29 20 7b 0a 20 20 09 20 20 20 20 20 20  ent) {.  .      
77d0: 20 20 20 20 20 20 74 68 69 73 2e 73 63 61 6e 6e        this.scann
77e0: 65 72 2e 73 63 61 6e 43 6f 6d 6d 65 6e 74 73 28  er.scanComments(
77f0: 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a  );.  .        }.
7800: 20 20 09 20 20 20 20 20 20 20 20 65 6c 73 65 20    .        else 
7810: 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  {.  .           
7820: 20 76 61 72 20 63 6f 6d 6d 65 6e 74 73 20 3d 20   var comments = 
7830: 74 68 69 73 2e 73 63 61 6e 6e 65 72 2e 73 63 61  this.scanner.sca
7840: 6e 43 6f 6d 6d 65 6e 74 73 28 29 3b 0a 20 20 09  nComments();.  .
7850: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
7860: 63 6f 6d 6d 65 6e 74 73 2e 6c 65 6e 67 74 68 20  comments.length 
7870: 3e 20 30 20 26 26 20 74 68 69 73 2e 64 65 6c 65  > 0 && this.dele
7880: 67 61 74 65 29 20 7b 0a 20 20 09 20 20 20 20 20  gate) {.  .     
7890: 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28             for (
78a0: 76 61 72 20 69 20 3d 20 30 3b 20 69 20 3c 20 63  var i = 0; i < c
78b0: 6f 6d 6d 65 6e 74 73 2e 6c 65 6e 67 74 68 3b 20  omments.length; 
78c0: 2b 2b 69 29 20 7b 0a 20 20 09 20 20 20 20 20 20  ++i) {.  .      
78d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61                va
78e0: 72 20 65 20 3d 20 63 6f 6d 6d 65 6e 74 73 5b 69  r e = comments[i
78f0: 5d 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  ];.  .          
7900: 20 20 20 20 20 20 20 20 20 20 76 61 72 20 6e 6f            var no
7910: 64 65 20 3d 20 76 6f 69 64 20 30 3b 0a 20 20 09  de = void 0;.  .
7920: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7930: 20 20 20 20 6e 6f 64 65 20 3d 20 7b 0a 20 20 09      node = {.  .
7940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7950: 20 20 20 20 20 20 20 20 74 79 70 65 3a 20 65 2e          type: e.
7960: 6d 75 6c 74 69 4c 69 6e 65 20 3f 20 27 42 6c 6f  multiLine ? 'Blo
7970: 63 6b 43 6f 6d 6d 65 6e 74 27 20 3a 20 27 4c 69  ckComment' : 'Li
7980: 6e 65 43 6f 6d 6d 65 6e 74 27 2c 0a 20 20 09 20  neComment',.  . 
7990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
79a0: 20 20 20 20 20 20 20 76 61 6c 75 65 3a 20 74 68         value: th
79b0: 69 73 24 31 2e 73 63 61 6e 6e 65 72 2e 73 6f 75  is$1.scanner.sou
79c0: 72 63 65 2e 73 6c 69 63 65 28 65 2e 73 6c 69 63  rce.slice(e.slic
79d0: 65 5b 30 5d 2c 20 65 2e 73 6c 69 63 65 5b 31 5d  e[0], e.slice[1]
79e0: 29 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ).  .           
79f0: 20 20 20 20 20 20 20 20 20 7d 3b 0a 20 20 09 20           };.  . 
7a00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7a10: 20 20 20 69 66 20 28 74 68 69 73 24 31 2e 63 6f     if (this$1.co
7a20: 6e 66 69 67 2e 72 61 6e 67 65 29 20 7b 0a 20 20  nfig.range) {.  
7a30: 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7a40: 20 20 20 20 20 20 20 20 20 6e 6f 64 65 2e 72 61           node.ra
7a50: 6e 67 65 20 3d 20 65 2e 72 61 6e 67 65 3b 0a 20  nge = e.range;. 
7a60: 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
7a70: 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20        }.  .     
7a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
7a90: 66 20 28 74 68 69 73 24 31 2e 63 6f 6e 66 69 67  f (this$1.config
7aa0: 2e 6c 6f 63 29 20 7b 0a 20 20 09 20 20 20 20 20  .loc) {.  .     
7ab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7ac0: 20 20 20 6e 6f 64 65 2e 6c 6f 63 20 3d 20 65 2e     node.loc = e.
7ad0: 6c 6f 63 3b 0a 20 20 09 20 20 20 20 20 20 20 20  loc;.  .        
7ae0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20              }.  
7af0: 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7b00: 20 20 20 20 20 76 61 72 20 6d 65 74 61 64 61 74       var metadat
7b10: 61 20 3d 20 7b 0a 20 20 09 20 20 20 20 20 20 20  a = {.  .       
7b20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7b30: 20 73 74 61 72 74 3a 20 7b 0a 20 20 09 20 20 20   start: {.  .   
7b40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7b50: 20 20 20 20 20 20 20 20 20 6c 69 6e 65 3a 20 65           line: e
7b60: 2e 6c 6f 63 2e 73 74 61 72 74 2e 6c 69 6e 65 2c  .loc.start.line,
7b70: 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
7b80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7b90: 63 6f 6c 75 6d 6e 3a 20 65 2e 6c 6f 63 2e 73 74  column: e.loc.st
7ba0: 61 72 74 2e 63 6f 6c 75 6d 6e 2c 0a 20 20 09 20  art.column,.  . 
7bb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7bc0: 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65             offse
7bd0: 74 3a 20 65 2e 72 61 6e 67 65 5b 30 5d 0a 20 20  t: e.range[0].  
7be0: 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7bf0: 20 20 20 20 20 20 20 20 20 7d 2c 0a 20 20 09 20           },.  . 
7c00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7c10: 20 20 20 20 20 20 20 65 6e 64 3a 20 7b 0a 20 20         end: {.  
7c20: 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7c30: 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 69 6e               lin
7c40: 65 3a 20 65 2e 6c 6f 63 2e 65 6e 64 2e 6c 69 6e  e: e.loc.end.lin
7c50: 65 2c 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  e,.  .          
7c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7c70: 20 20 63 6f 6c 75 6d 6e 3a 20 65 2e 6c 6f 63 2e    column: e.loc.
7c80: 65 6e 64 2e 63 6f 6c 75 6d 6e 2c 0a 20 20 09 20  end.column,.  . 
7c90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7ca0: 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65             offse
7cb0: 74 3a 20 65 2e 72 61 6e 67 65 5b 31 5d 0a 20 20  t: e.range[1].  
7cc0: 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7cd0: 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20           }.  .  
7ce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7cf0: 20 20 7d 3b 0a 20 20 09 20 20 20 20 20 20 20 20    };.  .        
7d00: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
7d10: 24 31 2e 64 65 6c 65 67 61 74 65 28 6e 6f 64 65  $1.delegate(node
7d20: 2c 20 6d 65 74 61 64 61 74 61 29 3b 0a 20 20 09  , metadata);.  .
7d30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7d40: 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  }.  .           
7d50: 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a   }.  .        }.
7d60: 20 20 09 20 20 20 20 7d 3b 0a 20 20 09 20 20 20    .    };.  .   
7d70: 20 2f 2f 20 46 72 6f 6d 20 69 6e 74 65 72 6e 61   // From interna
7d80: 6c 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e  l representation
7d90: 20 74 6f 20 61 6e 20 65 78 74 65 72 6e 61 6c 20   to an external 
7da0: 73 74 72 75 63 74 75 72 65 0a 20 20 09 20 20 20  structure.  .   
7db0: 20 50 61 72 73 65 72 2e 70 72 6f 74 6f 74 79 70   Parser.prototyp
7dc0: 65 2e 67 65 74 54 6f 6b 65 6e 52 61 77 20 3d 20  e.getTokenRaw = 
7dd0: 66 75 6e 63 74 69 6f 6e 20 28 74 6f 6b 65 6e 29  function (token)
7de0: 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 72 65   {.  .        re
7df0: 74 75 72 6e 20 74 68 69 73 2e 73 63 61 6e 6e 65  turn this.scanne
7e00: 72 2e 73 6f 75 72 63 65 2e 73 6c 69 63 65 28 74  r.source.slice(t
7e10: 6f 6b 65 6e 2e 73 74 61 72 74 2c 20 74 6f 6b 65  oken.start, toke
7e20: 6e 2e 65 6e 64 29 3b 0a 20 20 09 20 20 20 20 7d  n.end);.  .    }
7e30: 3b 0a 20 20 09 20 20 20 20 50 61 72 73 65 72 2e  ;.  .    Parser.
7e40: 70 72 6f 74 6f 74 79 70 65 2e 63 6f 6e 76 65 72  prototype.conver
7e50: 74 54 6f 6b 65 6e 20 3d 20 66 75 6e 63 74 69 6f  tToken = functio
7e60: 6e 20 28 74 6f 6b 65 6e 29 20 7b 0a 20 20 09 20  n (token) {.  . 
7e70: 20 20 20 20 20 20 20 76 61 72 20 74 3b 0a 20 20         var t;.  
7e80: 09 20 20 20 20 20 20 20 20 74 20 3d 20 7b 0a 20  .        t = {. 
7e90: 20 09 20 20 20 20 20 20 20 20 20 20 20 20 74 79   .            ty
7ea0: 70 65 3a 20 74 6f 6b 65 6e 5f 31 2e 54 6f 6b 65  pe: token_1.Toke
7eb0: 6e 4e 61 6d 65 5b 74 6f 6b 65 6e 2e 74 79 70 65  nName[token.type
7ec0: 5d 2c 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  ],.  .          
7ed0: 20 20 76 61 6c 75 65 3a 20 74 68 69 73 2e 67 65    value: this.ge
7ee0: 74 54 6f 6b 65 6e 52 61 77 28 74 6f 6b 65 6e 29  tTokenRaw(token)
7ef0: 0a 20 20 09 20 20 20 20 20 20 20 20 7d 3b 0a 20  .  .        };. 
7f00: 20 09 20 20 20 20 20 20 20 20 69 66 20 28 74 68   .        if (th
7f10: 69 73 2e 63 6f 6e 66 69 67 2e 72 61 6e 67 65 29  is.config.range)
7f20: 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   {.  .          
7f30: 20 20 74 2e 72 61 6e 67 65 20 3d 20 5b 74 6f 6b    t.range = [tok
7f40: 65 6e 2e 73 74 61 72 74 2c 20 74 6f 6b 65 6e 2e  en.start, token.
7f50: 65 6e 64 5d 3b 0a 20 20 09 20 20 20 20 20 20 20  end];.  .       
7f60: 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 69 66   }.  .        if
7f70: 20 28 74 68 69 73 2e 63 6f 6e 66 69 67 2e 6c 6f   (this.config.lo
7f80: 63 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20  c) {.  .        
7f90: 20 20 20 20 74 2e 6c 6f 63 20 3d 20 7b 0a 20 20      t.loc = {.  
7fa0: 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7fb0: 20 73 74 61 72 74 3a 20 7b 0a 20 20 09 20 20 20   start: {.  .   
7fc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7fd0: 20 6c 69 6e 65 3a 20 74 68 69 73 2e 73 74 61 72   line: this.star
7fe0: 74 4d 61 72 6b 65 72 2e 6c 69 6e 65 4e 75 6d 62  tMarker.lineNumb
7ff0: 65 72 2c 0a 20 20 09 20 20 20 20 20 20 20 20 20  er,.  .         
8000: 20 20 20 20 20 20 20 20 20 20 20 63 6f 6c 75 6d             colum
8010: 6e 3a 20 74 68 69 73 2e 73 74 61 72 74 4d 61 72  n: this.startMar
8020: 6b 65 72 2e 69 6e 64 65 78 20 2d 20 74 68 69 73  ker.index - this
8030: 2e 73 74 61 72 74 4d 61 72 6b 65 72 2e 6c 69 6e  .startMarker.lin
8040: 65 53 74 61 72 74 0a 20 20 09 20 20 20 20 20 20  eStart.  .      
8050: 20 20 20 20 20 20 20 20 20 20 7d 2c 0a 20 20 09            },.  .
8060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8070: 65 6e 64 3a 20 7b 0a 20 20 09 20 20 20 20 20 20  end: {.  .      
8080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 69                li
8090: 6e 65 3a 20 74 68 69 73 2e 73 63 61 6e 6e 65 72  ne: this.scanner
80a0: 2e 6c 69 6e 65 4e 75 6d 62 65 72 2c 0a 20 20 09  .lineNumber,.  .
80b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
80c0: 20 20 20 20 63 6f 6c 75 6d 6e 3a 20 74 68 69 73      column: this
80d0: 2e 73 63 61 6e 6e 65 72 2e 69 6e 64 65 78 20 2d  .scanner.index -
80e0: 20 74 68 69 73 2e 73 63 61 6e 6e 65 72 2e 6c 69   this.scanner.li
80f0: 6e 65 53 74 61 72 74 0a 20 20 09 20 20 20 20 20  neStart.  .     
8100: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09             }.  .
8110: 20 20 20 20 20 20 20 20 20 20 20 20 7d 3b 0a 20              };. 
8120: 20 09 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20   .        }.  . 
8130: 20 20 20 20 20 20 20 69 66 20 28 74 6f 6b 65 6e         if (token
8140: 2e 72 65 67 65 78 29 20 7b 0a 20 20 09 20 20 20  .regex) {.  .   
8150: 20 20 20 20 20 20 20 20 20 74 2e 72 65 67 65 78           t.regex
8160: 20 3d 20 74 6f 6b 65 6e 2e 72 65 67 65 78 3b 0a   = token.regex;.
8170: 20 20 09 20 20 20 20 20 20 20 20 7d 0a 20 20 09    .        }.  .
8180: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
8190: 3b 0a 20 20 09 20 20 20 20 7d 3b 0a 20 20 09 20  ;.  .    };.  . 
81a0: 20 20 20 50 61 72 73 65 72 2e 70 72 6f 74 6f 74     Parser.protot
81b0: 79 70 65 2e 6e 65 78 74 54 6f 6b 65 6e 20 3d 20  ype.nextToken = 
81c0: 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20  function () {.  
81d0: 09 20 20 20 20 20 20 20 20 76 61 72 20 74 6f 6b  .        var tok
81e0: 65 6e 20 3d 20 74 68 69 73 2e 6c 6f 6f 6b 61 68  en = this.lookah
81f0: 65 61 64 3b 0a 20 20 09 20 20 20 20 20 20 20 20  ead;.  .        
8200: 74 68 69 73 2e 6c 61 73 74 4d 61 72 6b 65 72 2e  this.lastMarker.
8210: 69 6e 64 65 78 20 3d 20 74 68 69 73 2e 73 63 61  index = this.sca
8220: 6e 6e 65 72 2e 69 6e 64 65 78 3b 0a 20 20 09 20  nner.index;.  . 
8230: 20 20 20 20 20 20 20 74 68 69 73 2e 6c 61 73 74         this.last
8240: 4d 61 72 6b 65 72 2e 6c 69 6e 65 4e 75 6d 62 65  Marker.lineNumbe
8250: 72 20 3d 20 74 68 69 73 2e 73 63 61 6e 6e 65 72  r = this.scanner
8260: 2e 6c 69 6e 65 4e 75 6d 62 65 72 3b 0a 20 20 09  .lineNumber;.  .
8270: 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c 61 73          this.las
8280: 74 4d 61 72 6b 65 72 2e 6c 69 6e 65 53 74 61 72  tMarker.lineStar
8290: 74 20 3d 20 74 68 69 73 2e 73 63 61 6e 6e 65 72  t = this.scanner
82a0: 2e 6c 69 6e 65 53 74 61 72 74 3b 0a 20 20 09 20  .lineStart;.  . 
82b0: 20 20 20 20 20 20 20 74 68 69 73 2e 63 6f 6c 6c         this.coll
82c0: 65 63 74 43 6f 6d 6d 65 6e 74 73 28 29 3b 0a 20  ectComments();. 
82d0: 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 73   .        this.s
82e0: 74 61 72 74 4d 61 72 6b 65 72 2e 69 6e 64 65 78  tartMarker.index
82f0: 20 3d 20 74 68 69 73 2e 73 63 61 6e 6e 65 72 2e   = this.scanner.
8300: 69 6e 64 65 78 3b 0a 20 20 09 20 20 20 20 20 20  index;.  .      
8310: 20 20 74 68 69 73 2e 73 74 61 72 74 4d 61 72 6b    this.startMark
8320: 65 72 2e 6c 69 6e 65 4e 75 6d 62 65 72 20 3d 20  er.lineNumber = 
8330: 74 68 69 73 2e 73 63 61 6e 6e 65 72 2e 6c 69 6e  this.scanner.lin
8340: 65 4e 75 6d 62 65 72 3b 0a 20 20 09 20 20 20 20  eNumber;.  .    
8350: 20 20 20 20 74 68 69 73 2e 73 74 61 72 74 4d 61      this.startMa
8360: 72 6b 65 72 2e 6c 69 6e 65 53 74 61 72 74 20 3d  rker.lineStart =
8370: 20 74 68 69 73 2e 73 63 61 6e 6e 65 72 2e 6c 69   this.scanner.li
8380: 6e 65 53 74 61 72 74 3b 0a 20 20 09 20 20 20 20  neStart;.  .    
8390: 20 20 20 20 76 61 72 20 6e 65 78 74 3b 0a 20 20      var next;.  
83a0: 09 20 20 20 20 20 20 20 20 6e 65 78 74 20 3d 20  .        next = 
83b0: 74 68 69 73 2e 73 63 61 6e 6e 65 72 2e 6c 65 78  this.scanner.lex
83c0: 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 74  ();.  .        t
83d0: 68 69 73 2e 68 61 73 4c 69 6e 65 54 65 72 6d 69  his.hasLineTermi
83e0: 6e 61 74 6f 72 20 3d 20 28 74 6f 6b 65 6e 20 26  nator = (token &
83f0: 26 20 6e 65 78 74 29 20 3f 20 28 74 6f 6b 65 6e  & next) ? (token
8400: 2e 6c 69 6e 65 4e 75 6d 62 65 72 20 21 3d 3d 20  .lineNumber !== 
8410: 6e 65 78 74 2e 6c 69 6e 65 4e 75 6d 62 65 72 29  next.lineNumber)
8420: 20 3a 20 66 61 6c 73 65 3b 0a 20 20 09 20 20 20   : false;.  .   
8430: 20 20 20 20 20 69 66 20 28 6e 65 78 74 20 26 26       if (next &&
8440: 20 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e 73 74   this.context.st
8450: 72 69 63 74 20 26 26 20 6e 65 78 74 2e 74 79 70  rict && next.typ
8460: 65 20 3d 3d 3d 20 74 6f 6b 65 6e 5f 31 2e 54 6f  e === token_1.To
8470: 6b 65 6e 2e 49 64 65 6e 74 69 66 69 65 72 29 20  ken.Identifier) 
8480: 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  {.  .           
8490: 20 69 66 20 28 74 68 69 73 2e 73 63 61 6e 6e 65   if (this.scanne
84a0: 72 2e 69 73 53 74 72 69 63 74 4d 6f 64 65 52 65  r.isStrictModeRe
84b0: 73 65 72 76 65 64 57 6f 72 64 28 6e 65 78 74 2e  servedWord(next.
84c0: 76 61 6c 75 65 29 29 20 7b 0a 20 20 09 20 20 20  value)) {.  .   
84d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 78               nex
84e0: 74 2e 74 79 70 65 20 3d 20 74 6f 6b 65 6e 5f 31  t.type = token_1
84f0: 2e 54 6f 6b 65 6e 2e 4b 65 79 77 6f 72 64 3b 0a  .Token.Keyword;.
8500: 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 7d    .            }
8510: 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a 20 20  .  .        }.  
8520: 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c 6f  .        this.lo
8530: 6f 6b 61 68 65 61 64 20 3d 20 6e 65 78 74 3b 0a  okahead = next;.
8540: 20 20 09 20 20 20 20 20 20 20 20 69 66 20 28 74    .        if (t
8550: 68 69 73 2e 63 6f 6e 66 69 67 2e 74 6f 6b 65 6e  his.config.token
8560: 73 20 26 26 20 6e 65 78 74 2e 74 79 70 65 20 21  s && next.type !
8570: 3d 3d 20 74 6f 6b 65 6e 5f 31 2e 54 6f 6b 65 6e  == token_1.Token
8580: 2e 45 4f 46 29 20 7b 0a 20 20 09 20 20 20 20 20  .EOF) {.  .     
8590: 20 20 20 20 20 20 20 74 68 69 73 2e 74 6f 6b 65         this.toke
85a0: 6e 73 2e 70 75 73 68 28 74 68 69 73 2e 63 6f 6e  ns.push(this.con
85b0: 76 65 72 74 54 6f 6b 65 6e 28 6e 65 78 74 29 29  vertToken(next))
85c0: 3b 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a 20  ;.  .        }. 
85d0: 20 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e   .        return
85e0: 20 74 6f 6b 65 6e 3b 0a 20 20 09 20 20 20 20 7d   token;.  .    }
85f0: 3b 0a 20 20 09 20 20 20 20 50 61 72 73 65 72 2e  ;.  .    Parser.
8600: 70 72 6f 74 6f 74 79 70 65 2e 6e 65 78 74 52 65  prototype.nextRe
8610: 67 65 78 54 6f 6b 65 6e 20 3d 20 66 75 6e 63 74  gexToken = funct
8620: 69 6f 6e 20 28 29 20 7b 0a 20 20 09 20 20 20 20  ion () {.  .    
8630: 20 20 20 20 74 68 69 73 2e 63 6f 6c 6c 65 63 74      this.collect
8640: 43 6f 6d 6d 65 6e 74 73 28 29 3b 0a 20 20 09 20  Comments();.  . 
8650: 20 20 20 20 20 20 20 76 61 72 20 74 6f 6b 65 6e         var token
8660: 20 3d 20 74 68 69 73 2e 73 63 61 6e 6e 65 72 2e   = this.scanner.
8670: 73 63 61 6e 52 65 67 45 78 70 28 29 3b 0a 20 20  scanRegExp();.  
8680: 09 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69  .        if (thi
8690: 73 2e 63 6f 6e 66 69 67 2e 74 6f 6b 65 6e 73 29  s.config.tokens)
86a0: 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   {.  .          
86b0: 20 20 2f 2f 20 50 6f 70 20 74 68 65 20 70 72 65    // Pop the pre
86c0: 76 69 6f 75 73 20 74 6f 6b 65 6e 2c 20 27 2f 27  vious token, '/'
86d0: 20 6f 72 20 27 2f 3d 27 0a 20 20 09 20 20 20 20   or '/='.  .    
86e0: 20 20 20 20 20 20 20 20 2f 2f 20 54 68 69 73 20          // This 
86f0: 69 73 20 61 64 64 65 64 20 66 72 6f 6d 20 74 68  is added from th
8700: 65 20 6c 6f 6f 6b 61 68 65 61 64 20 74 6f 6b 65  e lookahead toke
8710: 6e 2e 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  n..  .          
8720: 20 20 74 68 69 73 2e 74 6f 6b 65 6e 73 2e 70 6f    this.tokens.po
8730: 70 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  p();.  .        
8740: 20 20 20 20 74 68 69 73 2e 74 6f 6b 65 6e 73 2e      this.tokens.
8750: 70 75 73 68 28 74 68 69 73 2e 63 6f 6e 76 65 72  push(this.conver
8760: 74 54 6f 6b 65 6e 28 74 6f 6b 65 6e 29 29 3b 0a  tToken(token));.
8770: 20 20 09 20 20 20 20 20 20 20 20 7d 0a 20 20 09    .        }.  .
8780: 20 20 20 20 20 20 20 20 2f 2f 20 50 72 69 6d 65          // Prime
8790: 20 74 68 65 20 6e 65 78 74 20 6c 6f 6f 6b 61 68   the next lookah
87a0: 65 61 64 2e 0a 20 20 09 20 20 20 20 20 20 20 20  ead..  .        
87b0: 74 68 69 73 2e 6c 6f 6f 6b 61 68 65 61 64 20 3d  this.lookahead =
87c0: 20 74 6f 6b 65 6e 3b 0a 20 20 09 20 20 20 20 20   token;.  .     
87d0: 20 20 20 74 68 69 73 2e 6e 65 78 74 54 6f 6b 65     this.nextToke
87e0: 6e 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  n();.  .        
87f0: 72 65 74 75 72 6e 20 74 6f 6b 65 6e 3b 0a 20 20  return token;.  
8800: 09 20 20 20 20 7d 3b 0a 20 20 09 20 20 20 20 50  .    };.  .    P
8810: 61 72 73 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e  arser.prototype.
8820: 63 72 65 61 74 65 4e 6f 64 65 20 3d 20 66 75 6e  createNode = fun
8830: 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20 09 20 20  ction () {.  .  
8840: 20 20 20 20 20 20 72 65 74 75 72 6e 20 7b 0a 20        return {. 
8850: 20 09 20 20 20 20 20 20 20 20 20 20 20 20 69 6e   .            in
8860: 64 65 78 3a 20 74 68 69 73 2e 73 74 61 72 74 4d  dex: this.startM
8870: 61 72 6b 65 72 2e 69 6e 64 65 78 2c 0a 20 20 09  arker.index,.  .
8880: 20 20 20 20 20 20 20 20 20 20 20 20 6c 69 6e 65              line
8890: 3a 20 74 68 69 73 2e 73 74 61 72 74 4d 61 72 6b  : this.startMark
88a0: 65 72 2e 6c 69 6e 65 4e 75 6d 62 65 72 2c 0a 20  er.lineNumber,. 
88b0: 20 09 20 20 20 20 20 20 20 20 20 20 20 20 63 6f   .            co
88c0: 6c 75 6d 6e 3a 20 74 68 69 73 2e 73 74 61 72 74  lumn: this.start
88d0: 4d 61 72 6b 65 72 2e 69 6e 64 65 78 20 2d 20 74  Marker.index - t
88e0: 68 69 73 2e 73 74 61 72 74 4d 61 72 6b 65 72 2e  his.startMarker.
88f0: 6c 69 6e 65 53 74 61 72 74 0a 20 20 09 20 20 20  lineStart.  .   
8900: 20 20 20 20 20 7d 3b 0a 20 20 09 20 20 20 20 7d       };.  .    }
8910: 3b 0a 20 20 09 20 20 20 20 50 61 72 73 65 72 2e  ;.  .    Parser.
8920: 70 72 6f 74 6f 74 79 70 65 2e 73 74 61 72 74 4e  prototype.startN
8930: 6f 64 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28  ode = function (
8940: 74 6f 6b 65 6e 29 20 7b 0a 20 20 09 20 20 20 20  token) {.  .    
8950: 20 20 20 20 72 65 74 75 72 6e 20 7b 0a 20 20 09      return {.  .
8960: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 64 65              inde
8970: 78 3a 20 74 6f 6b 65 6e 2e 73 74 61 72 74 2c 0a  x: token.start,.
8980: 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 6c    .            l
8990: 69 6e 65 3a 20 74 6f 6b 65 6e 2e 6c 69 6e 65 4e  ine: token.lineN
89a0: 75 6d 62 65 72 2c 0a 20 20 09 20 20 20 20 20 20  umber,.  .      
89b0: 20 20 20 20 20 20 63 6f 6c 75 6d 6e 3a 20 74 6f        column: to
89c0: 6b 65 6e 2e 73 74 61 72 74 20 2d 20 74 6f 6b 65  ken.start - toke
89d0: 6e 2e 6c 69 6e 65 53 74 61 72 74 0a 20 20 09 20  n.lineStart.  . 
89e0: 20 20 20 20 20 20 20 7d 3b 0a 20 20 09 20 20 20         };.  .   
89f0: 20 7d 3b 0a 20 20 09 20 20 20 20 50 61 72 73 65   };.  .    Parse
8a00: 72 2e 70 72 6f 74 6f 74 79 70 65 2e 66 69 6e 61  r.prototype.fina
8a10: 6c 69 7a 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20  lize = function 
8a20: 28 6d 65 74 61 2c 20 6e 6f 64 65 29 20 7b 0a 20  (meta, node) {. 
8a30: 20 09 20 20 20 20 20 20 20 20 69 66 20 28 74 68   .        if (th
8a40: 69 73 2e 63 6f 6e 66 69 67 2e 72 61 6e 67 65 29  is.config.range)
8a50: 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   {.  .          
8a60: 20 20 6e 6f 64 65 2e 72 61 6e 67 65 20 3d 20 5b    node.range = [
8a70: 6d 65 74 61 2e 69 6e 64 65 78 2c 20 74 68 69 73  meta.index, this
8a80: 2e 6c 61 73 74 4d 61 72 6b 65 72 2e 69 6e 64 65  .lastMarker.inde
8a90: 78 5d 3b 0a 20 20 09 20 20 20 20 20 20 20 20 7d  x];.  .        }
8aa0: 0a 20 20 09 20 20 20 20 20 20 20 20 69 66 20 28  .  .        if (
8ab0: 74 68 69 73 2e 63 6f 6e 66 69 67 2e 6c 6f 63 29  this.config.loc)
8ac0: 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   {.  .          
8ad0: 20 20 6e 6f 64 65 2e 6c 6f 63 20 3d 20 7b 0a 20    node.loc = {. 
8ae0: 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
8af0: 20 20 73 74 61 72 74 3a 20 7b 0a 20 20 09 20 20    start: {.  .  
8b00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8b10: 20 20 6c 69 6e 65 3a 20 6d 65 74 61 2e 6c 69 6e    line: meta.lin
8b20: 65 2c 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  e,.  .          
8b30: 20 20 20 20 20 20 20 20 20 20 63 6f 6c 75 6d 6e            column
8b40: 3a 20 6d 65 74 61 2e 63 6f 6c 75 6d 6e 0a 20 20  : meta.column.  
8b50: 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8b60: 20 7d 2c 0a 20 20 09 20 20 20 20 20 20 20 20 20   },.  .         
8b70: 20 20 20 20 20 20 20 65 6e 64 3a 20 7b 0a 20 20         end: {.  
8b80: 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8b90: 20 20 20 20 20 6c 69 6e 65 3a 20 74 68 69 73 2e       line: this.
8ba0: 6c 61 73 74 4d 61 72 6b 65 72 2e 6c 69 6e 65 4e  lastMarker.lineN
8bb0: 75 6d 62 65 72 2c 0a 20 20 09 20 20 20 20 20 20  umber,.  .      
8bc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
8bd0: 6c 75 6d 6e 3a 20 74 68 69 73 2e 6c 61 73 74 4d  lumn: this.lastM
8be0: 61 72 6b 65 72 2e 69 6e 64 65 78 20 2d 20 74 68  arker.index - th
8bf0: 69 73 2e 6c 61 73 74 4d 61 72 6b 65 72 2e 6c 69  is.lastMarker.li
8c00: 6e 65 53 74 61 72 74 0a 20 20 09 20 20 20 20 20  neStart.  .     
8c10: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09             }.  .
8c20: 20 20 20 20 20 20 20 20 20 20 20 20 7d 3b 0a 20              };. 
8c30: 20 09 20 20 20 20 20 20 20 20 20 20 20 20 69 66   .            if
8c40: 20 28 74 68 69 73 2e 63 6f 6e 66 69 67 2e 73 6f   (this.config.so
8c50: 75 72 63 65 29 20 7b 0a 20 20 09 20 20 20 20 20  urce) {.  .     
8c60: 20 20 20 20 20 20 20 20 20 20 20 6e 6f 64 65 2e             node.
8c70: 6c 6f 63 2e 73 6f 75 72 63 65 20 3d 20 74 68 69  loc.source = thi
8c80: 73 2e 63 6f 6e 66 69 67 2e 73 6f 75 72 63 65 3b  s.config.source;
8c90: 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
8ca0: 7d 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a 20  }.  .        }. 
8cb0: 20 09 20 20 20 20 20 20 20 20 69 66 20 28 74 68   .        if (th
8cc0: 69 73 2e 64 65 6c 65 67 61 74 65 29 20 7b 0a 20  is.delegate) {. 
8cd0: 20 09 20 20 20 20 20 20 20 20 20 20 20 20 76 61   .            va
8ce0: 72 20 6d 65 74 61 64 61 74 61 20 3d 20 7b 0a 20  r metadata = {. 
8cf0: 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
8d00: 20 20 73 74 61 72 74 3a 20 7b 0a 20 20 09 20 20    start: {.  .  
8d10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8d20: 20 20 6c 69 6e 65 3a 20 6d 65 74 61 2e 6c 69 6e    line: meta.lin
8d30: 65 2c 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  e,.  .          
8d40: 20 20 20 20 20 20 20 20 20 20 63 6f 6c 75 6d 6e            column
8d50: 3a 20 6d 65 74 61 2e 63 6f 6c 75 6d 6e 2c 0a 20  : meta.column,. 
8d60: 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
8d70: 20 20 20 20 20 20 6f 66 66 73 65 74 3a 20 6d 65        offset: me
8d80: 74 61 2e 69 6e 64 65 78 0a 20 20 09 20 20 20 20  ta.index.  .    
8d90: 20 20 20 20 20 20 20 20 20 20 20 20 7d 2c 0a 20              },. 
8da0: 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
8db0: 20 20 65 6e 64 3a 20 7b 0a 20 20 09 20 20 20 20    end: {.  .    
8dc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8dd0: 6c 69 6e 65 3a 20 74 68 69 73 2e 6c 61 73 74 4d  line: this.lastM
8de0: 61 72 6b 65 72 2e 6c 69 6e 65 4e 75 6d 62 65 72  arker.lineNumber
8df0: 2c 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ,.  .           
8e00: 20 20 20 20 20 20 20 20 20 63 6f 6c 75 6d 6e 3a           column:
8e10: 20 74 68 69 73 2e 6c 61 73 74 4d 61 72 6b 65 72   this.lastMarker
8e20: 2e 69 6e 64 65 78 20 2d 20 74 68 69 73 2e 6c 61  .index - this.la
8e30: 73 74 4d 61 72 6b 65 72 2e 6c 69 6e 65 53 74 61  stMarker.lineSta
8e40: 72 74 2c 0a 20 20 09 20 20 20 20 20 20 20 20 20  rt,.  .         
8e50: 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65             offse
8e60: 74 3a 20 74 68 69 73 2e 6c 61 73 74 4d 61 72 6b  t: this.lastMark
8e70: 65 72 2e 69 6e 64 65 78 0a 20 20 09 20 20 20 20  er.index.  .    
8e80: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20              }.  
8e90: 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 3b 0a  .            };.
8ea0: 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 74    .            t
8eb0: 68 69 73 2e 64 65 6c 65 67 61 74 65 28 6e 6f 64  his.delegate(nod
8ec0: 65 2c 20 6d 65 74 61 64 61 74 61 29 3b 0a 20 20  e, metadata);.  
8ed0: 09 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20  .        }.  .  
8ee0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 6f 64        return nod
8ef0: 65 3b 0a 20 20 09 20 20 20 20 7d 3b 0a 20 20 09  e;.  .    };.  .
8f00: 20 20 20 20 2f 2f 20 45 78 70 65 63 74 20 74 68      // Expect th
8f10: 65 20 6e 65 78 74 20 74 6f 6b 65 6e 20 74 6f 20  e next token to 
8f20: 6d 61 74 63 68 20 74 68 65 20 73 70 65 63 69 66  match the specif
8f30: 69 65 64 20 70 75 6e 63 74 75 61 74 6f 72 2e 0a  ied punctuator..
8f40: 20 20 09 20 20 20 20 2f 2f 20 49 66 20 6e 6f 74    .    // If not
8f50: 2c 20 61 6e 20 65 78 63 65 70 74 69 6f 6e 20 77  , an exception w
8f60: 69 6c 6c 20 62 65 20 74 68 72 6f 77 6e 2e 0a 20  ill be thrown.. 
8f70: 20 09 20 20 20 20 50 61 72 73 65 72 2e 70 72 6f   .    Parser.pro
8f80: 74 6f 74 79 70 65 2e 65 78 70 65 63 74 20 3d 20  totype.expect = 
8f90: 66 75 6e 63 74 69 6f 6e 20 28 76 61 6c 75 65 29  function (value)
8fa0: 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 76 61   {.  .        va
8fb0: 72 20 74 6f 6b 65 6e 20 3d 20 74 68 69 73 2e 6e  r token = this.n
8fc0: 65 78 74 54 6f 6b 65 6e 28 29 3b 0a 20 20 09 20  extToken();.  . 
8fd0: 20 20 20 20 20 20 20 69 66 20 28 74 6f 6b 65 6e         if (token
8fe0: 2e 74 79 70 65 20 21 3d 3d 20 74 6f 6b 65 6e 5f  .type !== token_
8ff0: 31 2e 54 6f 6b 65 6e 2e 50 75 6e 63 74 75 61 74  1.Token.Punctuat
9000: 6f 72 20 7c 7c 20 74 6f 6b 65 6e 2e 76 61 6c 75  or || token.valu
9010: 65 20 21 3d 3d 20 76 61 6c 75 65 29 20 7b 0a 20  e !== value) {. 
9020: 20 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68   .            th
9030: 69 73 2e 74 68 72 6f 77 55 6e 65 78 70 65 63 74  is.throwUnexpect
9040: 65 64 54 6f 6b 65 6e 28 74 6f 6b 65 6e 29 3b 0a  edToken(token);.
9050: 20 20 09 20 20 20 20 20 20 20 20 7d 0a 20 20 09    .        }.  .
9060: 20 20 20 20 7d 3b 0a 20 20 09 20 20 20 20 2f 2f      };.  .    //
9070: 20 51 75 69 65 74 6c 79 20 65 78 70 65 63 74 20   Quietly expect 
9080: 61 20 63 6f 6d 6d 61 20 77 68 65 6e 20 69 6e 20  a comma when in 
9090: 74 6f 6c 65 72 61 6e 74 20 6d 6f 64 65 2c 20 6f  tolerant mode, o
90a0: 74 68 65 72 77 69 73 65 20 64 65 6c 65 67 61 74  therwise delegat
90b0: 65 73 20 74 6f 20 65 78 70 65 63 74 28 29 2e 0a  es to expect()..
90c0: 20 20 09 20 20 20 20 50 61 72 73 65 72 2e 70 72    .    Parser.pr
90d0: 6f 74 6f 74 79 70 65 2e 65 78 70 65 63 74 43 6f  ototype.expectCo
90e0: 6d 6d 61 53 65 70 61 72 61 74 6f 72 20 3d 20 66  mmaSeparator = f
90f0: 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20 09  unction () {.  .
9100: 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73          if (this
9110: 2e 63 6f 6e 66 69 67 2e 74 6f 6c 65 72 61 6e 74  .config.tolerant
9120: 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ) {.  .         
9130: 20 20 20 76 61 72 20 74 6f 6b 65 6e 20 3d 20 74     var token = t
9140: 68 69 73 2e 6c 6f 6f 6b 61 68 65 61 64 3b 0a 20  his.lookahead;. 
9150: 20 09 20 20 20 20 20 20 20 20 20 20 20 20 69 66   .            if
9160: 20 28 74 6f 6b 65 6e 2e 74 79 70 65 20 3d 3d 3d   (token.type ===
9170: 20 74 6f 6b 65 6e 5f 31 2e 54 6f 6b 65 6e 2e 50   token_1.Token.P
9180: 75 6e 63 74 75 61 74 6f 72 20 26 26 20 74 6f 6b  unctuator && tok
9190: 65 6e 2e 76 61 6c 75 65 20 3d 3d 3d 20 27 2c 27  en.value === ','
91a0: 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ) {.  .         
91b0: 20 20 20 20 20 20 20 74 68 69 73 2e 6e 65 78 74         this.next
91c0: 54 6f 6b 65 6e 28 29 3b 0a 20 20 09 20 20 20 20  Token();.  .    
91d0: 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20          }.  .   
91e0: 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66           else if
91f0: 20 28 74 6f 6b 65 6e 2e 74 79 70 65 20 3d 3d 3d   (token.type ===
9200: 20 74 6f 6b 65 6e 5f 31 2e 54 6f 6b 65 6e 2e 50   token_1.Token.P
9210: 75 6e 63 74 75 61 74 6f 72 20 26 26 20 74 6f 6b  unctuator && tok
9220: 65 6e 2e 76 61 6c 75 65 20 3d 3d 3d 20 27 3b 27  en.value === ';'
9230: 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ) {.  .         
9240: 20 20 20 20 20 20 20 74 68 69 73 2e 6e 65 78 74         this.next
9250: 54 6f 6b 65 6e 28 29 3b 0a 20 20 09 20 20 20 20  Token();.  .    
9260: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
9270: 2e 74 6f 6c 65 72 61 74 65 55 6e 65 78 70 65 63  .tolerateUnexpec
9280: 74 65 64 54 6f 6b 65 6e 28 74 6f 6b 65 6e 29 3b  tedToken(token);
9290: 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
92a0: 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  }.  .           
92b0: 20 65 6c 73 65 20 7b 0a 20 20 09 20 20 20 20 20   else {.  .     
92c0: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
92d0: 74 6f 6c 65 72 61 74 65 55 6e 65 78 70 65 63 74  tolerateUnexpect
92e0: 65 64 54 6f 6b 65 6e 28 74 6f 6b 65 6e 2c 20 6d  edToken(token, m
92f0: 65 73 73 61 67 65 73 5f 31 2e 4d 65 73 73 61 67  essages_1.Messag
9300: 65 73 2e 55 6e 65 78 70 65 63 74 65 64 54 6f 6b  es.UnexpectedTok
9310: 65 6e 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  en);.  .        
9320: 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20      }.  .       
9330: 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 65 6c   }.  .        el
9340: 73 65 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20  se {.  .        
9350: 20 20 20 20 74 68 69 73 2e 65 78 70 65 63 74 28      this.expect(
9360: 27 2c 27 29 3b 0a 20 20 09 20 20 20 20 20 20 20  ',');.  .       
9370: 20 7d 0a 20 20 09 20 20 20 20 7d 3b 0a 20 20 09   }.  .    };.  .
9380: 20 20 20 20 2f 2f 20 45 78 70 65 63 74 20 74 68      // Expect th
9390: 65 20 6e 65 78 74 20 74 6f 6b 65 6e 20 74 6f 20  e next token to 
93a0: 6d 61 74 63 68 20 74 68 65 20 73 70 65 63 69 66  match the specif
93b0: 69 65 64 20 6b 65 79 77 6f 72 64 2e 0a 20 20 09  ied keyword..  .
93c0: 20 20 20 20 2f 2f 20 49 66 20 6e 6f 74 2c 20 61      // If not, a
93d0: 6e 20 65 78 63 65 70 74 69 6f 6e 20 77 69 6c 6c  n exception will
93e0: 20 62 65 20 74 68 72 6f 77 6e 2e 0a 20 20 09 20   be thrown..  . 
93f0: 20 20 20 50 61 72 73 65 72 2e 70 72 6f 74 6f 74     Parser.protot
9400: 79 70 65 2e 65 78 70 65 63 74 4b 65 79 77 6f 72  ype.expectKeywor
9410: 64 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 6b 65  d = function (ke
9420: 79 77 6f 72 64 29 20 7b 0a 20 20 09 20 20 20 20  yword) {.  .    
9430: 20 20 20 20 76 61 72 20 74 6f 6b 65 6e 20 3d 20      var token = 
9440: 74 68 69 73 2e 6e 65 78 74 54 6f 6b 65 6e 28 29  this.nextToken()
9450: 3b 0a 20 20 09 20 20 20 20 20 20 20 20 69 66 20  ;.  .        if 
9460: 28 74 6f 6b 65 6e 2e 74 79 70 65 20 21 3d 3d 20  (token.type !== 
9470: 74 6f 6b 65 6e 5f 31 2e 54 6f 6b 65 6e 2e 4b 65  token_1.Token.Ke
9480: 79 77 6f 72 64 20 7c 7c 20 74 6f 6b 65 6e 2e 76  yword || token.v
9490: 61 6c 75 65 20 21 3d 3d 20 6b 65 79 77 6f 72 64  alue !== keyword
94a0: 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ) {.  .         
94b0: 20 20 20 74 68 69 73 2e 74 68 72 6f 77 55 6e 65     this.throwUne
94c0: 78 70 65 63 74 65 64 54 6f 6b 65 6e 28 74 6f 6b  xpectedToken(tok
94d0: 65 6e 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  en);.  .        
94e0: 7d 0a 20 20 09 20 20 20 20 7d 3b 0a 20 20 09 20  }.  .    };.  . 
94f0: 20 20 20 2f 2f 20 52 65 74 75 72 6e 20 74 72 75     // Return tru
9500: 65 20 69 66 20 74 68 65 20 6e 65 78 74 20 74 6f  e if the next to
9510: 6b 65 6e 20 6d 61 74 63 68 65 73 20 74 68 65 20  ken matches the 
9520: 73 70 65 63 69 66 69 65 64 20 70 75 6e 63 74 75  specified punctu
9530: 61 74 6f 72 2e 0a 20 20 09 20 20 20 20 50 61 72  ator..  .    Par
9540: 73 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 6d 61  ser.prototype.ma
9550: 74 63 68 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28  tch = function (
9560: 76 61 6c 75 65 29 20 7b 0a 20 20 09 20 20 20 20  value) {.  .    
9570: 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e      return this.
9580: 6c 6f 6f 6b 61 68 65 61 64 2e 74 79 70 65 20 3d  lookahead.type =
9590: 3d 3d 20 74 6f 6b 65 6e 5f 31 2e 54 6f 6b 65 6e  == token_1.Token
95a0: 2e 50 75 6e 63 74 75 61 74 6f 72 20 26 26 20 74  .Punctuator && t
95b0: 68 69 73 2e 6c 6f 6f 6b 61 68 65 61 64 2e 76 61  his.lookahead.va
95c0: 6c 75 65 20 3d 3d 3d 20 76 61 6c 75 65 3b 0a 20  lue === value;. 
95d0: 20 09 20 20 20 20 7d 3b 0a 20 20 09 20 20 20 20   .    };.  .    
95e0: 2f 2f 20 52 65 74 75 72 6e 20 74 72 75 65 20 69  // Return true i
95f0: 66 20 74 68 65 20 6e 65 78 74 20 74 6f 6b 65 6e  f the next token
9600: 20 6d 61 74 63 68 65 73 20 74 68 65 20 73 70 65   matches the spe
9610: 63 69 66 69 65 64 20 6b 65 79 77 6f 72 64 0a 20  cified keyword. 
9620: 20 09 20 20 20 20 50 61 72 73 65 72 2e 70 72 6f   .    Parser.pro
9630: 74 6f 74 79 70 65 2e 6d 61 74 63 68 4b 65 79 77  totype.matchKeyw
9640: 6f 72 64 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28  ord = function (
9650: 6b 65 79 77 6f 72 64 29 20 7b 0a 20 20 09 20 20  keyword) {.  .  
9660: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69        return thi
9670: 73 2e 6c 6f 6f 6b 61 68 65 61 64 2e 74 79 70 65  s.lookahead.type
9680: 20 3d 3d 3d 20 74 6f 6b 65 6e 5f 31 2e 54 6f 6b   === token_1.Tok
9690: 65 6e 2e 4b 65 79 77 6f 72 64 20 26 26 20 74 68  en.Keyword && th
96a0: 69 73 2e 6c 6f 6f 6b 61 68 65 61 64 2e 76 61 6c  is.lookahead.val
96b0: 75 65 20 3d 3d 3d 20 6b 65 79 77 6f 72 64 3b 0a  ue === keyword;.
96c0: 20 20 09 20 20 20 20 7d 3b 0a 20 20 09 20 20 20    .    };.  .   
96d0: 20 2f 2f 20 52 65 74 75 72 6e 20 74 72 75 65 20   // Return true 
96e0: 69 66 20 74 68 65 20 6e 65 78 74 20 74 6f 6b 65  if the next toke
96f0: 6e 20 6d 61 74 63 68 65 73 20 74 68 65 20 73 70  n matches the sp
9700: 65 63 69 66 69 65 64 20 63 6f 6e 74 65 78 74 75  ecified contextu
9710: 61 6c 20 6b 65 79 77 6f 72 64 0a 20 20 09 20 20  al keyword.  .  
9720: 20 20 2f 2f 20 28 77 68 65 72 65 20 61 6e 20 69    // (where an i
9730: 64 65 6e 74 69 66 69 65 72 20 69 73 20 73 6f 6d  dentifier is som
9740: 65 74 69 6d 65 73 20 61 20 6b 65 79 77 6f 72 64  etimes a keyword
9750: 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 74 68   depending on th
9760: 65 20 63 6f 6e 74 65 78 74 29 0a 20 20 09 20 20  e context).  .  
9770: 20 20 50 61 72 73 65 72 2e 70 72 6f 74 6f 74 79    Parser.prototy
9780: 70 65 2e 6d 61 74 63 68 43 6f 6e 74 65 78 74 75  pe.matchContextu
9790: 61 6c 4b 65 79 77 6f 72 64 20 3d 20 66 75 6e 63  alKeyword = func
97a0: 74 69 6f 6e 20 28 6b 65 79 77 6f 72 64 29 20 7b  tion (keyword) {
97b0: 0a 20 20 09 20 20 20 20 20 20 20 20 72 65 74 75  .  .        retu
97c0: 72 6e 20 74 68 69 73 2e 6c 6f 6f 6b 61 68 65 61  rn this.lookahea
97d0: 64 2e 74 79 70 65 20 3d 3d 3d 20 74 6f 6b 65 6e  d.type === token
97e0: 5f 31 2e 54 6f 6b 65 6e 2e 49 64 65 6e 74 69 66  _1.Token.Identif
97f0: 69 65 72 20 26 26 20 74 68 69 73 2e 6c 6f 6f 6b  ier && this.look
9800: 61 68 65 61 64 2e 76 61 6c 75 65 20 3d 3d 3d 20  ahead.value === 
9810: 6b 65 79 77 6f 72 64 3b 0a 20 20 09 20 20 20 20  keyword;.  .    
9820: 7d 3b 0a 20 20 09 20 20 20 20 2f 2f 20 52 65 74  };.  .    // Ret
9830: 75 72 6e 20 74 72 75 65 20 69 66 20 74 68 65 20  urn true if the 
9840: 6e 65 78 74 20 74 6f 6b 65 6e 20 69 73 20 61 6e  next token is an
9850: 20 61 73 73 69 67 6e 6d 65 6e 74 20 6f 70 65 72   assignment oper
9860: 61 74 6f 72 0a 20 20 09 20 20 20 20 50 61 72 73  ator.  .    Pars
9870: 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 6d 61 74  er.prototype.mat
9880: 63 68 41 73 73 69 67 6e 20 3d 20 66 75 6e 63 74  chAssign = funct
9890: 69 6f 6e 20 28 29 20 7b 0a 20 20 09 20 20 20 20  ion () {.  .    
98a0: 20 20 20 20 69 66 20 28 74 68 69 73 2e 6c 6f 6f      if (this.loo
98b0: 6b 61 68 65 61 64 2e 74 79 70 65 20 21 3d 3d 20  kahead.type !== 
98c0: 74 6f 6b 65 6e 5f 31 2e 54 6f 6b 65 6e 2e 50 75  token_1.Token.Pu
98d0: 6e 63 74 75 61 74 6f 72 29 20 7b 0a 20 20 09 20  nctuator) {.  . 
98e0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
98f0: 6e 20 66 61 6c 73 65 3b 0a 20 20 09 20 20 20 20  n false;.  .    
9900: 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20      }.  .       
9910: 20 76 61 72 20 6f 70 20 3d 20 74 68 69 73 2e 6c   var op = this.l
9920: 6f 6f 6b 61 68 65 61 64 2e 76 61 6c 75 65 3b 0a  ookahead.value;.
9930: 20 20 09 20 20 20 20 20 20 20 20 72 65 74 75 72    .        retur
9940: 6e 20 6f 70 20 3d 3d 3d 20 27 3d 27 20 7c 7c 0a  n op === '=' ||.
9950: 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 6f    .            o
9960: 70 20 3d 3d 3d 20 27 2a 3d 27 20 7c 7c 0a 20 20  p === '*=' ||.  
9970: 09 20 20 20 20 20 20 20 20 20 20 20 20 6f 70 20  .            op 
9980: 3d 3d 3d 20 27 2a 2a 3d 27 20 7c 7c 0a 20 20 09  === '**=' ||.  .
9990: 20 20 20 20 20 20 20 20 20 20 20 20 6f 70 20 3d              op =
99a0: 3d 3d 20 27 2f 3d 27 20 7c 7c 0a 20 20 09 20 20  == '/=' ||.  .  
99b0: 20 20 20 20 20 20 20 20 20 20 6f 70 20 3d 3d 3d            op ===
99c0: 20 27 25 3d 27 20 7c 7c 0a 20 20 09 20 20 20 20   '%=' ||.  .    
99d0: 20 20 20 20 20 20 20 20 6f 70 20 3d 3d 3d 20 27          op === '
99e0: 2b 3d 27 20 7c 7c 0a 20 20 09 20 20 20 20 20 20  +=' ||.  .      
99f0: 20 20 20 20 20 20 6f 70 20 3d 3d 3d 20 27 2d 3d        op === '-=
9a00: 27 20 7c 7c 0a 20 20 09 20 20 20 20 20 20 20 20  ' ||.  .        
9a10: 20 20 20 20 6f 70 20 3d 3d 3d 20 27 3c 3c 3d 27      op === '<<='
9a20: 20 7c 7c 0a 20 20 09 20 20 20 20 20 20 20 20 20   ||.  .         
9a30: 20 20 20 6f 70 20 3d 3d 3d 20 27 3e 3e 3d 27 20     op === '>>=' 
9a40: 7c 7c 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  ||.  .          
9a50: 20 20 6f 70 20 3d 3d 3d 20 27 3e 3e 3e 3d 27 20    op === '>>>=' 
9a60: 7c 7c 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  ||.  .          
9a70: 20 20 6f 70 20 3d 3d 3d 20 27 26 3d 27 20 7c 7c    op === '&=' ||
9a80: 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
9a90: 6f 70 20 3d 3d 3d 20 27 5e 3d 27 20 7c 7c 0a 20  op === '^=' ||. 
9aa0: 20 09 20 20 20 20 20 20 20 20 20 20 20 20 6f 70   .            op
9ab0: 20 3d 3d 3d 20 27 7c 3d 27 3b 0a 20 20 09 20 20   === '|=';.  .  
9ac0: 20 20 7d 3b 0a 20 20 09 20 20 20 20 2f 2f 20 43    };.  .    // C
9ad0: 6f 76 65 72 20 67 72 61 6d 6d 61 72 20 73 75 70  over grammar sup
9ae0: 70 6f 72 74 2e 0a 20 20 09 20 20 20 20 2f 2f 0a  port..  .    //.
9af0: 20 20 09 20 20 20 20 2f 2f 20 57 68 65 6e 20 61    .    // When a
9b00: 6e 20 61 73 73 69 67 6e 6d 65 6e 74 20 65 78 70  n assignment exp
9b10: 72 65 73 73 69 6f 6e 20 70 6f 73 69 74 69 6f 6e  ression position
9b20: 20 73 74 61 72 74 73 20 77 69 74 68 20 61 6e 20   starts with an 
9b30: 6c 65 66 74 20 70 61 72 65 6e 74 68 65 73 69 73  left parenthesis
9b40: 2c 20 74 68 65 20 64 65 74 65 72 6d 69 6e 61 74  , the determinat
9b50: 69 6f 6e 20 6f 66 20 74 68 65 20 74 79 70 65 0a  ion of the type.
9b60: 20 20 09 20 20 20 20 2f 2f 20 6f 66 20 74 68 65    .    // of the
9b70: 20 73 79 6e 74 61 78 20 69 73 20 74 6f 20 62 65   syntax is to be
9b80: 20 64 65 66 65 72 72 65 64 20 61 72 62 69 74 72   deferred arbitr
9b90: 61 72 69 6c 79 20 6c 6f 6e 67 20 75 6e 74 69 6c  arily long until
9ba0: 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20   the end of the 
9bb0: 70 61 72 65 6e 74 68 65 73 65 73 20 70 61 69 72  parentheses pair
9bc0: 20 28 70 6c 75 73 20 61 20 6c 6f 6f 6b 61 68 65   (plus a lookahe
9bd0: 61 64 29 0a 20 20 09 20 20 20 20 2f 2f 20 6f 72  ad).  .    // or
9be0: 20 74 68 65 20 66 69 72 73 74 20 63 6f 6d 6d 61   the first comma
9bf0: 2e 20 54 68 69 73 20 73 69 74 75 61 74 69 6f 6e  . This situation
9c00: 20 61 6c 73 6f 20 64 65 66 65 72 73 20 74 68 65   also defers the
9c10: 20 64 65 74 65 72 6d 69 6e 61 74 69 6f 6e 20 6f   determination o
9c20: 66 20 61 6c 6c 20 74 68 65 20 65 78 70 72 65 73  f all the expres
9c30: 73 69 6f 6e 73 20 6e 65 73 74 65 64 20 69 6e 20  sions nested in 
9c40: 74 68 65 20 70 61 69 72 2e 0a 20 20 09 20 20 20  the pair..  .   
9c50: 20 2f 2f 0a 20 20 09 20 20 20 20 2f 2f 20 54 68   //.  .    // Th
9c60: 65 72 65 20 61 72 65 20 74 68 72 65 65 20 70 72  ere are three pr
9c70: 6f 64 75 63 74 69 6f 6e 73 20 74 68 61 74 20 63  oductions that c
9c80: 61 6e 20 62 65 20 70 61 72 73 65 64 20 69 6e 20  an be parsed in 
9c90: 61 20 70 61 72 65 6e 74 68 65 73 65 73 20 70 61  a parentheses pa
9ca0: 69 72 20 74 68 61 74 20 6e 65 65 64 73 20 74 6f  ir that needs to
9cb0: 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 0a 20   be determined. 
9cc0: 20 09 20 20 20 20 2f 2f 20 61 66 74 65 72 20 74   .    // after t
9cd0: 68 65 20 6f 75 74 65 72 6d 6f 73 74 20 70 61 69  he outermost pai
9ce0: 72 20 69 73 20 63 6c 6f 73 65 64 2e 20 54 68 65  r is closed. The
9cf0: 79 20 61 72 65 3a 0a 20 20 09 20 20 20 20 2f 2f  y are:.  .    //
9d00: 0a 20 20 09 20 20 20 20 2f 2f 20 20 20 31 2e 20  .  .    //   1. 
9d10: 41 73 73 69 67 6e 6d 65 6e 74 45 78 70 72 65 73  AssignmentExpres
9d20: 73 69 6f 6e 0a 20 20 09 20 20 20 20 2f 2f 20 20  sion.  .    //  
9d30: 20 32 2e 20 42 69 6e 64 69 6e 67 45 6c 65 6d 65   2. BindingEleme
9d40: 6e 74 73 0a 20 20 09 20 20 20 20 2f 2f 20 20 20  nts.  .    //   
9d50: 33 2e 20 41 73 73 69 67 6e 6d 65 6e 74 54 61 72  3. AssignmentTar
9d60: 67 65 74 73 0a 20 20 09 20 20 20 20 2f 2f 0a 20  gets.  .    //. 
9d70: 20 09 20 20 20 20 2f 2f 20 49 6e 20 6f 72 64 65   .    // In orde
9d80: 72 20 74 6f 20 61 76 6f 69 64 20 65 78 70 6f 6e  r to avoid expon
9d90: 65 6e 74 69 61 6c 20 62 61 63 6b 74 72 61 63 6b  ential backtrack
9da0: 69 6e 67 2c 20 77 65 20 75 73 65 20 74 77 6f 20  ing, we use two 
9db0: 66 6c 61 67 73 20 74 6f 20 64 65 6e 6f 74 65 20  flags to denote 
9dc0: 69 66 20 74 68 65 20 70 72 6f 64 75 63 74 69 6f  if the productio
9dd0: 6e 20 63 61 6e 20 62 65 0a 20 20 09 20 20 20 20  n can be.  .    
9de0: 2f 2f 20 62 69 6e 64 69 6e 67 20 65 6c 65 6d 65  // binding eleme
9df0: 6e 74 20 6f 72 20 61 73 73 69 67 6e 6d 65 6e 74  nt or assignment
9e00: 20 74 61 72 67 65 74 2e 0a 20 20 09 20 20 20 20   target..  .    
9e10: 2f 2f 0a 20 20 09 20 20 20 20 2f 2f 20 54 68 65  //.  .    // The
9e20: 20 74 68 72 65 65 20 70 72 6f 64 75 63 74 69 6f   three productio
9e30: 6e 73 20 68 61 76 65 20 74 68 65 20 72 65 6c 61  ns have the rela
9e40: 74 69 6f 6e 73 68 69 70 3a 0a 20 20 09 20 20 20  tionship:.  .   
9e50: 20 2f 2f 0a 20 20 09 20 20 20 20 2f 2f 20 20 20   //.  .    //   
9e60: 42 69 6e 64 69 6e 67 45 6c 65 6d 65 6e 74 73 20  BindingElements 
9e70: e2 8a 86 20 41 73 73 69 67 6e 6d 65 6e 74 54 61  ... AssignmentTa
9e80: 72 67 65 74 73 20 e2 8a 86 20 41 73 73 69 67 6e  rgets ... Assign
9e90: 6d 65 6e 74 45 78 70 72 65 73 73 69 6f 6e 0a 20  mentExpression. 
9ea0: 20 09 20 20 20 20 2f 2f 0a 20 20 09 20 20 20 20   .    //.  .    
9eb0: 2f 2f 20 77 69 74 68 20 61 20 73 69 6e 67 6c 65  // with a single
9ec0: 20 65 78 63 65 70 74 69 6f 6e 20 74 68 61 74 20   exception that 
9ed0: 43 6f 76 65 72 49 6e 69 74 69 61 6c 69 7a 65 64  CoverInitialized
9ee0: 4e 61 6d 65 20 77 68 65 6e 20 75 73 65 64 20 64  Name when used d
9ef0: 69 72 65 63 74 6c 79 20 69 6e 20 61 6e 20 45 78  irectly in an Ex
9f00: 70 72 65 73 73 69 6f 6e 2c 20 67 65 6e 65 72 61  pression, genera
9f10: 74 65 73 0a 20 20 09 20 20 20 20 2f 2f 20 61 6e  tes.  .    // an
9f20: 20 65 61 72 6c 79 20 65 72 72 6f 72 2e 20 54 68   early error. Th
9f30: 65 72 65 66 6f 72 65 2c 20 77 65 20 6e 65 65 64  erefore, we need
9f40: 20 74 68 65 20 74 68 69 72 64 20 73 74 61 74 65   the third state
9f50: 2c 20 66 69 72 73 74 43 6f 76 65 72 49 6e 69 74  , firstCoverInit
9f60: 69 61 6c 69 7a 65 64 4e 61 6d 65 45 72 72 6f 72  ializedNameError
9f70: 2c 20 74 6f 20 74 72 61 63 6b 20 74 68 65 0a 20  , to track the. 
9f80: 20 09 20 20 20 20 2f 2f 20 66 69 72 73 74 20 75   .    // first u
9f90: 73 61 67 65 20 6f 66 20 43 6f 76 65 72 49 6e 69  sage of CoverIni
9fa0: 74 69 61 6c 69 7a 65 64 4e 61 6d 65 20 61 6e 64  tializedName and
9fb0: 20 72 65 70 6f 72 74 20 69 74 20 77 68 65 6e 20   report it when 
9fc0: 77 65 20 72 65 61 63 68 65 64 20 74 68 65 20 65  we reached the e
9fd0: 6e 64 20 6f 66 20 74 68 65 20 70 61 72 65 6e 74  nd of the parent
9fe0: 68 65 73 65 73 20 70 61 69 72 2e 0a 20 20 09 20  heses pair..  . 
9ff0: 20 20 20 2f 2f 0a 20 20 09 20 20 20 20 2f 2f 20     //.  .    // 
a000: 69 73 6f 6c 61 74 65 43 6f 76 65 72 47 72 61 6d  isolateCoverGram
a010: 6d 61 72 20 66 75 6e 63 74 69 6f 6e 20 72 75 6e  mar function run
a020: 73 20 74 68 65 20 67 69 76 65 6e 20 70 61 72 73  s the given pars
a030: 65 72 20 66 75 6e 63 74 69 6f 6e 20 77 69 74 68  er function with
a040: 20 61 20 6e 65 77 20 63 6f 76 65 72 20 67 72 61   a new cover gra
a050: 6d 6d 61 72 20 63 6f 6e 74 65 78 74 2c 20 61 6e  mmar context, an
a060: 64 20 69 74 20 64 6f 65 73 20 6e 6f 74 0a 20 20  d it does not.  
a070: 09 20 20 20 20 2f 2f 20 65 66 66 65 63 74 20 74  .    // effect t
a080: 68 65 20 63 75 72 72 65 6e 74 20 66 6c 61 67 73  he current flags
a090: 2e 20 54 68 69 73 20 6d 65 61 6e 73 20 74 68 65  . This means the
a0a0: 20 70 72 6f 64 75 63 74 69 6f 6e 20 74 68 65 20   production the 
a0b0: 70 61 72 73 65 72 20 70 61 72 73 65 73 20 69 73  parser parses is
a0c0: 20 6f 6e 6c 79 20 75 73 65 64 20 61 73 20 61 6e   only used as an
a0d0: 20 65 78 70 72 65 73 73 69 6f 6e 2e 20 54 68 65   expression. The
a0e0: 72 65 66 6f 72 65 0a 20 20 09 20 20 20 20 2f 2f  refore.  .    //
a0f0: 20 74 68 65 20 43 6f 76 65 72 49 6e 69 74 69 61   the CoverInitia
a100: 6c 69 7a 65 64 4e 61 6d 65 20 63 68 65 63 6b 20  lizedName check 
a110: 69 73 20 63 6f 6e 64 75 63 74 65 64 2e 0a 20 20  is conducted..  
a120: 09 20 20 20 20 2f 2f 0a 20 20 09 20 20 20 20 2f  .    //.  .    /
a130: 2f 20 69 6e 68 65 72 69 74 43 6f 76 65 72 47 72  / inheritCoverGr
a140: 61 6d 6d 61 72 20 66 75 6e 63 74 69 6f 6e 20 72  ammar function r
a150: 75 6e 73 20 74 68 65 20 67 69 76 65 6e 20 70 61  uns the given pa
a160: 72 73 65 20 66 75 6e 63 74 69 6f 6e 20 77 69 74  rse function wit
a170: 68 20 61 20 6e 65 77 20 63 6f 76 65 72 20 67 72  h a new cover gr
a180: 61 6d 6d 61 72 20 63 6f 6e 74 65 78 74 2c 20 61  ammar context, a
a190: 6e 64 20 69 74 20 70 72 6f 70 61 67 61 74 65 73  nd it propagates
a1a0: 0a 20 20 09 20 20 20 20 2f 2f 20 74 68 65 20 66  .  .    // the f
a1b0: 6c 61 67 73 20 6f 75 74 73 69 64 65 20 6f 66 20  lags outside of 
a1c0: 74 68 65 20 70 61 72 73 65 72 2e 20 54 68 69 73  the parser. This
a1d0: 20 6d 65 61 6e 73 20 74 68 65 20 70 72 6f 64 75   means the produ
a1e0: 63 74 69 6f 6e 20 74 68 65 20 70 61 72 73 65 72  ction the parser
a1f0: 20 70 61 72 73 65 73 20 69 73 20 75 73 65 64 20   parses is used 
a200: 61 73 20 61 20 70 61 72 74 20 6f 66 20 61 20 70  as a part of a p
a210: 6f 74 65 6e 74 69 61 6c 0a 20 20 09 20 20 20 20  otential.  .    
a220: 2f 2f 20 70 61 74 74 65 72 6e 2e 20 54 68 65 20  // pattern. The 
a230: 43 6f 76 65 72 49 6e 69 74 69 61 6c 69 7a 65 64  CoverInitialized
a240: 4e 61 6d 65 20 63 68 65 63 6b 20 69 73 20 64 65  Name check is de
a250: 66 65 72 72 65 64 2e 0a 20 20 09 20 20 20 20 50  ferred..  .    P
a260: 61 72 73 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e  arser.prototype.
a270: 69 73 6f 6c 61 74 65 43 6f 76 65 72 47 72 61 6d  isolateCoverGram
a280: 6d 61 72 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28  mar = function (
a290: 70 61 72 73 65 46 75 6e 63 74 69 6f 6e 29 20 7b  parseFunction) {
a2a0: 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20  .  .        var 
a2b0: 70 72 65 76 69 6f 75 73 49 73 42 69 6e 64 69 6e  previousIsBindin
a2c0: 67 45 6c 65 6d 65 6e 74 20 3d 20 74 68 69 73 2e  gElement = this.
a2d0: 63 6f 6e 74 65 78 74 2e 69 73 42 69 6e 64 69 6e  context.isBindin
a2e0: 67 45 6c 65 6d 65 6e 74 3b 0a 20 20 09 20 20 20  gElement;.  .   
a2f0: 20 20 20 20 20 76 61 72 20 70 72 65 76 69 6f 75       var previou
a300: 73 49 73 41 73 73 69 67 6e 6d 65 6e 74 54 61 72  sIsAssignmentTar
a310: 67 65 74 20 3d 20 74 68 69 73 2e 63 6f 6e 74 65  get = this.conte
a320: 78 74 2e 69 73 41 73 73 69 67 6e 6d 65 6e 74 54  xt.isAssignmentT
a330: 61 72 67 65 74 3b 0a 20 20 09 20 20 20 20 20 20  arget;.  .      
a340: 20 20 76 61 72 20 70 72 65 76 69 6f 75 73 46 69    var previousFi
a350: 72 73 74 43 6f 76 65 72 49 6e 69 74 69 61 6c 69  rstCoverInitiali
a360: 7a 65 64 4e 61 6d 65 45 72 72 6f 72 20 3d 20 74  zedNameError = t
a370: 68 69 73 2e 63 6f 6e 74 65 78 74 2e 66 69 72 73  his.context.firs
a380: 74 43 6f 76 65 72 49 6e 69 74 69 61 6c 69 7a 65  tCoverInitialize
a390: 64 4e 61 6d 65 45 72 72 6f 72 3b 0a 20 20 09 20  dNameError;.  . 
a3a0: 20 20 20 20 20 20 20 74 68 69 73 2e 63 6f 6e 74         this.cont
a3b0: 65 78 74 2e 69 73 42 69 6e 64 69 6e 67 45 6c 65  ext.isBindingEle
a3c0: 6d 65 6e 74 20 3d 20 74 72 75 65 3b 0a 20 20 09  ment = true;.  .
a3d0: 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 6f 6e          this.con
a3e0: 74 65 78 74 2e 69 73 41 73 73 69 67 6e 6d 65 6e  text.isAssignmen
a3f0: 74 54 61 72 67 65 74 20 3d 20 74 72 75 65 3b 0a  tTarget = true;.
a400: 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e    .        this.
a410: 63 6f 6e 74 65 78 74 2e 66 69 72 73 74 43 6f 76  context.firstCov
a420: 65 72 49 6e 69 74 69 61 6c 69 7a 65 64 4e 61 6d  erInitializedNam
a430: 65 45 72 72 6f 72 20 3d 20 6e 75 6c 6c 3b 0a 20  eError = null;. 
a440: 20 09 20 20 20 20 20 20 20 20 76 61 72 20 72 65   .        var re
a450: 73 75 6c 74 20 3d 20 70 61 72 73 65 46 75 6e 63  sult = parseFunc
a460: 74 69 6f 6e 2e 63 61 6c 6c 28 74 68 69 73 29 3b  tion.call(this);
a470: 0a 20 20 09 20 20 20 20 20 20 20 20 69 66 20 28  .  .        if (
a480: 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e 66 69 72  this.context.fir
a490: 73 74 43 6f 76 65 72 49 6e 69 74 69 61 6c 69 7a  stCoverInitializ
a4a0: 65 64 4e 61 6d 65 45 72 72 6f 72 20 21 3d 3d 20  edNameError !== 
a4b0: 6e 75 6c 6c 29 20 7b 0a 20 20 09 20 20 20 20 20  null) {.  .     
a4c0: 20 20 20 20 20 20 20 74 68 69 73 2e 74 68 72 6f         this.thro
a4d0: 77 55 6e 65 78 70 65 63 74 65 64 54 6f 6b 65 6e  wUnexpectedToken
a4e0: 28 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e 66 69  (this.context.fi
a4f0: 72 73 74 43 6f 76 65 72 49 6e 69 74 69 61 6c 69  rstCoverInitiali
a500: 7a 65 64 4e 61 6d 65 45 72 72 6f 72 29 3b 0a 20  zedNameError);. 
a510: 20 09 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20   .        }.  . 
a520: 20 20 20 20 20 20 20 74 68 69 73 2e 63 6f 6e 74         this.cont
a530: 65 78 74 2e 69 73 42 69 6e 64 69 6e 67 45 6c 65  ext.isBindingEle
a540: 6d 65 6e 74 20 3d 20 70 72 65 76 69 6f 75 73 49  ment = previousI
a550: 73 42 69 6e 64 69 6e 67 45 6c 65 6d 65 6e 74 3b  sBindingElement;
a560: 0a 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73  .  .        this
a570: 2e 63 6f 6e 74 65 78 74 2e 69 73 41 73 73 69 67  .context.isAssig
a580: 6e 6d 65 6e 74 54 61 72 67 65 74 20 3d 20 70 72  nmentTarget = pr
a590: 65 76 69 6f 75 73 49 73 41 73 73 69 67 6e 6d 65  eviousIsAssignme
a5a0: 6e 74 54 61 72 67 65 74 3b 0a 20 20 09 20 20 20  ntTarget;.  .   
a5b0: 20 20 20 20 20 74 68 69 73 2e 63 6f 6e 74 65 78       this.contex
a5c0: 74 2e 66 69 72 73 74 43 6f 76 65 72 49 6e 69 74  t.firstCoverInit
a5d0: 69 61 6c 69 7a 65 64 4e 61 6d 65 45 72 72 6f 72  ializedNameError
a5e0: 20 3d 20 70 72 65 76 69 6f 75 73 46 69 72 73 74   = previousFirst
a5f0: 43 6f 76 65 72 49 6e 69 74 69 61 6c 69 7a 65 64  CoverInitialized
a600: 4e 61 6d 65 45 72 72 6f 72 3b 0a 20 20 09 20 20  NameError;.  .  
a610: 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73        return res
a620: 75 6c 74 3b 0a 20 20 09 20 20 20 20 7d 3b 0a 20  ult;.  .    };. 
a630: 20 09 20 20 20 20 50 61 72 73 65 72 2e 70 72 6f   .    Parser.pro
a640: 74 6f 74 79 70 65 2e 69 6e 68 65 72 69 74 43 6f  totype.inheritCo
a650: 76 65 72 47 72 61 6d 6d 61 72 20 3d 20 66 75 6e  verGrammar = fun
a660: 63 74 69 6f 6e 20 28 70 61 72 73 65 46 75 6e 63  ction (parseFunc
a670: 74 69 6f 6e 29 20 7b 0a 20 20 09 20 20 20 20 20  tion) {.  .     
a680: 20 20 20 76 61 72 20 70 72 65 76 69 6f 75 73 49     var previousI
a690: 73 42 69 6e 64 69 6e 67 45 6c 65 6d 65 6e 74 20  sBindingElement 
a6a0: 3d 20 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e 69  = this.context.i
a6b0: 73 42 69 6e 64 69 6e 67 45 6c 65 6d 65 6e 74 3b  sBindingElement;
a6c0: 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20  .  .        var 
a6d0: 70 72 65 76 69 6f 75 73 49 73 41 73 73 69 67 6e  previousIsAssign
a6e0: 6d 65 6e 74 54 61 72 67 65 74 20 3d 20 74 68 69  mentTarget = thi
a6f0: 73 2e 63 6f 6e 74 65 78 74 2e 69 73 41 73 73 69  s.context.isAssi
a700: 67 6e 6d 65 6e 74 54 61 72 67 65 74 3b 0a 20 20  gnmentTarget;.  
a710: 09 20 20 20 20 20 20 20 20 76 61 72 20 70 72 65  .        var pre
a720: 76 69 6f 75 73 46 69 72 73 74 43 6f 76 65 72 49  viousFirstCoverI
a730: 6e 69 74 69 61 6c 69 7a 65 64 4e 61 6d 65 45 72  nitializedNameEr
a740: 72 6f 72 20 3d 20 74 68 69 73 2e 63 6f 6e 74 65  ror = this.conte
a750: 78 74 2e 66 69 72 73 74 43 6f 76 65 72 49 6e 69  xt.firstCoverIni
a760: 74 69 61 6c 69 7a 65 64 4e 61 6d 65 45 72 72 6f  tializedNameErro
a770: 72 3b 0a 20 20 09 20 20 20 20 20 20 20 20 74 68  r;.  .        th
a780: 69 73 2e 63 6f 6e 74 65 78 74 2e 69 73 42 69 6e  is.context.isBin
a790: 64 69 6e 67 45 6c 65 6d 65 6e 74 20 3d 20 74 72  dingElement = tr
a7a0: 75 65 3b 0a 20 20 09 20 20 20 20 20 20 20 20 74  ue;.  .        t
a7b0: 68 69 73 2e 63 6f 6e 74 65 78 74 2e 69 73 41 73  his.context.isAs
a7c0: 73 69 67 6e 6d 65 6e 74 54 61 72 67 65 74 20 3d  signmentTarget =
a7d0: 20 74 72 75 65 3b 0a 20 20 09 20 20 20 20 20 20   true;.  .      
a7e0: 20 20 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e 66    this.context.f
a7f0: 69 72 73 74 43 6f 76 65 72 49 6e 69 74 69 61 6c  irstCoverInitial
a800: 69 7a 65 64 4e 61 6d 65 45 72 72 6f 72 20 3d 20  izedNameError = 
a810: 6e 75 6c 6c 3b 0a 20 20 09 20 20 20 20 20 20 20  null;.  .       
a820: 20 76 61 72 20 72 65 73 75 6c 74 20 3d 20 70 61   var result = pa
a830: 72 73 65 46 75 6e 63 74 69 6f 6e 2e 63 61 6c 6c  rseFunction.call
a840: 28 74 68 69 73 29 3b 0a 20 20 09 20 20 20 20 20  (this);.  .     
a850: 20 20 20 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e     this.context.
a860: 69 73 42 69 6e 64 69 6e 67 45 6c 65 6d 65 6e 74  isBindingElement
a870: 20 3d 20 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e   = this.context.
a880: 69 73 42 69 6e 64 69 6e 67 45 6c 65 6d 65 6e 74  isBindingElement
a890: 20 26 26 20 70 72 65 76 69 6f 75 73 49 73 42 69   && previousIsBi
a8a0: 6e 64 69 6e 67 45 6c 65 6d 65 6e 74 3b 0a 20 20  ndingElement;.  
a8b0: 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 6f  .        this.co
a8c0: 6e 74 65 78 74 2e 69 73 41 73 73 69 67 6e 6d 65  ntext.isAssignme
a8d0: 6e 74 54 61 72 67 65 74 20 3d 20 74 68 69 73 2e  ntTarget = this.
a8e0: 63 6f 6e 74 65 78 74 2e 69 73 41 73 73 69 67 6e  context.isAssign
a8f0: 6d 65 6e 74 54 61 72 67 65 74 20 26 26 20 70 72  mentTarget && pr
a900: 65 76 69 6f 75 73 49 73 41 73 73 69 67 6e 6d 65  eviousIsAssignme
a910: 6e 74 54 61 72 67 65 74 3b 0a 20 20 09 20 20 20  ntTarget;.  .   
a920: 20 20 20 20 20 74 68 69 73 2e 63 6f 6e 74 65 78       this.contex
a930: 74 2e 66 69 72 73 74 43 6f 76 65 72 49 6e 69 74  t.firstCoverInit
a940: 69 61 6c 69 7a 65 64 4e 61 6d 65 45 72 72 6f 72  ializedNameError
a950: 20 3d 20 70 72 65 76 69 6f 75 73 46 69 72 73 74   = previousFirst
a960: 43 6f 76 65 72 49 6e 69 74 69 61 6c 69 7a 65 64  CoverInitialized
a970: 4e 61 6d 65 45 72 72 6f 72 20 7c 7c 20 74 68 69  NameError || thi
a980: 73 2e 63 6f 6e 74 65 78 74 2e 66 69 72 73 74 43  s.context.firstC
a990: 6f 76 65 72 49 6e 69 74 69 61 6c 69 7a 65 64 4e  overInitializedN
a9a0: 61 6d 65 45 72 72 6f 72 3b 0a 20 20 09 20 20 20  ameError;.  .   
a9b0: 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 75       return resu
a9c0: 6c 74 3b 0a 20 20 09 20 20 20 20 7d 3b 0a 20 20  lt;.  .    };.  
a9d0: 09 20 20 20 20 50 61 72 73 65 72 2e 70 72 6f 74  .    Parser.prot
a9e0: 6f 74 79 70 65 2e 63 6f 6e 73 75 6d 65 53 65 6d  otype.consumeSem
a9f0: 69 63 6f 6c 6f 6e 20 3d 20 66 75 6e 63 74 69 6f  icolon = functio
aa00: 6e 20 28 29 20 7b 0a 20 20 09 20 20 20 20 20 20  n () {.  .      
aa10: 20 20 69 66 20 28 74 68 69 73 2e 6d 61 74 63 68    if (this.match
aa20: 28 27 3b 27 29 29 20 7b 0a 20 20 09 20 20 20 20  (';')) {.  .    
aa30: 20 20 20 20 20 20 20 20 74 68 69 73 2e 6e 65 78          this.nex
aa40: 74 54 6f 6b 65 6e 28 29 3b 0a 20 20 09 20 20 20  tToken();.  .   
aa50: 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20       }.  .      
aa60: 20 20 65 6c 73 65 20 69 66 20 28 21 74 68 69 73    else if (!this
aa70: 2e 68 61 73 4c 69 6e 65 54 65 72 6d 69 6e 61 74  .hasLineTerminat
aa80: 6f 72 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20  or) {.  .       
aa90: 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 6c 6f       if (this.lo
aaa0: 6f 6b 61 68 65 61 64 2e 74 79 70 65 20 21 3d 3d  okahead.type !==
aab0: 20 74 6f 6b 65 6e 5f 31 2e 54 6f 6b 65 6e 2e 45   token_1.Token.E
aac0: 4f 46 20 26 26 20 21 74 68 69 73 2e 6d 61 74 63  OF && !this.matc
aad0: 68 28 27 7d 27 29 29 20 7b 0a 20 20 09 20 20 20  h('}')) {.  .   
aae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
aaf0: 73 2e 74 68 72 6f 77 55 6e 65 78 70 65 63 74 65  s.throwUnexpecte
ab00: 64 54 6f 6b 65 6e 28 74 68 69 73 2e 6c 6f 6f 6b  dToken(this.look
ab10: 61 68 65 61 64 29 3b 0a 20 20 09 20 20 20 20 20  ahead);.  .     
ab20: 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20         }.  .    
ab30: 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c 61 73          this.las
ab40: 74 4d 61 72 6b 65 72 2e 69 6e 64 65 78 20 3d 20  tMarker.index = 
ab50: 74 68 69 73 2e 73 74 61 72 74 4d 61 72 6b 65 72  this.startMarker
ab60: 2e 69 6e 64 65 78 3b 0a 20 20 09 20 20 20 20 20  .index;.  .     
ab70: 20 20 20 20 20 20 20 74 68 69 73 2e 6c 61 73 74         this.last
ab80: 4d 61 72 6b 65 72 2e 6c 69 6e 65 4e 75 6d 62 65  Marker.lineNumbe
ab90: 72 20 3d 20 74 68 69 73 2e 73 74 61 72 74 4d 61  r = this.startMa
aba0: 72 6b 65 72 2e 6c 69 6e 65 4e 75 6d 62 65 72 3b  rker.lineNumber;
abb0: 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
abc0: 74 68 69 73 2e 6c 61 73 74 4d 61 72 6b 65 72 2e  this.lastMarker.
abd0: 6c 69 6e 65 53 74 61 72 74 20 3d 20 74 68 69 73  lineStart = this
abe0: 2e 73 74 61 72 74 4d 61 72 6b 65 72 2e 6c 69 6e  .startMarker.lin
abf0: 65 53 74 61 72 74 3b 0a 20 20 09 20 20 20 20 20  eStart;.  .     
ac00: 20 20 20 7d 0a 20 20 09 20 20 20 20 7d 3b 0a 20     }.  .    };. 
ac10: 20 09 20 20 20 20 2f 2f 20 45 43 4d 41 2d 32 36   .    // ECMA-26
ac20: 32 20 31 32 2e 32 20 50 72 69 6d 61 72 79 20 45  2 12.2 Primary E
ac30: 78 70 72 65 73 73 69 6f 6e 73 0a 20 20 09 20 20  xpressions.  .  
ac40: 20 20 50 61 72 73 65 72 2e 70 72 6f 74 6f 74 79    Parser.prototy
ac50: 70 65 2e 70 61 72 73 65 50 72 69 6d 61 72 79 45  pe.parsePrimaryE
ac60: 78 70 72 65 73 73 69 6f 6e 20 3d 20 66 75 6e 63  xpression = func
ac70: 74 69 6f 6e 20 28 29 20 7b 0a 20 20 09 20 20 20  tion () {.  .   
ac80: 20 20 20 20 20 76 61 72 20 6e 6f 64 65 20 3d 20       var node = 
ac90: 74 68 69 73 2e 63 72 65 61 74 65 4e 6f 64 65 28  this.createNode(
aca0: 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 76 61  );.  .        va
acb0: 72 20 65 78 70 72 3b 0a 20 20 09 20 20 20 20 20  r expr;.  .     
acc0: 20 20 20 76 61 72 20 76 61 6c 75 65 2c 20 74 6f     var value, to
acd0: 6b 65 6e 2c 20 72 61 77 3b 0a 20 20 09 20 20 20  ken, raw;.  .   
ace0: 20 20 20 20 20 73 77 69 74 63 68 20 28 74 68 69       switch (thi
acf0: 73 2e 6c 6f 6f 6b 61 68 65 61 64 2e 74 79 70 65  s.lookahead.type
ad00: 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ) {.  .         
ad10: 20 20 20 63 61 73 65 20 74 6f 6b 65 6e 5f 31 2e     case token_1.
ad20: 54 6f 6b 65 6e 2e 49 64 65 6e 74 69 66 69 65 72  Token.Identifier
ad30: 3a 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  :.  .           
ad40: 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 73 6f       if (this.so
ad50: 75 72 63 65 54 79 70 65 20 3d 3d 3d 20 27 6d 6f  urceType === 'mo
ad60: 64 75 6c 65 27 20 26 26 20 74 68 69 73 2e 6c 6f  dule' && this.lo
ad70: 6f 6b 61 68 65 61 64 2e 76 61 6c 75 65 20 3d 3d  okahead.value ==
ad80: 3d 20 27 61 77 61 69 74 27 29 20 7b 0a 20 20 09  = 'await') {.  .
ad90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ada0: 20 20 20 20 74 68 69 73 2e 74 6f 6c 65 72 61 74      this.tolerat
adb0: 65 55 6e 65 78 70 65 63 74 65 64 54 6f 6b 65 6e  eUnexpectedToken
adc0: 28 74 68 69 73 2e 6c 6f 6f 6b 61 68 65 61 64 29  (this.lookahead)
add0: 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
ade0: 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20       }.  .      
adf0: 20 20 20 20 20 20 20 20 20 20 65 78 70 72 20 3d            expr =
ae00: 20 74 68 69 73 2e 66 69 6e 61 6c 69 7a 65 28 6e   this.finalize(n
ae10: 6f 64 65 2c 20 6e 65 77 20 4e 6f 64 65 2e 49 64  ode, new Node.Id
ae20: 65 6e 74 69 66 69 65 72 28 74 68 69 73 2e 6e 65  entifier(this.ne
ae30: 78 74 54 6f 6b 65 6e 28 29 2e 76 61 6c 75 65 29  xtToken().value)
ae40: 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  );.  .          
ae50: 20 20 20 20 20 20 62 72 65 61 6b 3b 0a 20 20 09        break;.  .
ae60: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
ae70: 20 74 6f 6b 65 6e 5f 31 2e 54 6f 6b 65 6e 2e 4e   token_1.Token.N
ae80: 75 6d 65 72 69 63 4c 69 74 65 72 61 6c 3a 0a 20  umericLiteral:. 
ae90: 20 09 20 20 20 20 20 20 20 20 20 20 20 20 63 61   .            ca
aea0: 73 65 20 74 6f 6b 65 6e 5f 31 2e 54 6f 6b 65 6e  se token_1.Token
aeb0: 2e 53 74 72 69 6e 67 4c 69 74 65 72 61 6c 3a 0a  .StringLiteral:.
aec0: 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
aed0: 20 20 20 69 66 20 28 74 68 69 73 2e 63 6f 6e 74     if (this.cont
aee0: 65 78 74 2e 73 74 72 69 63 74 20 26 26 20 74 68  ext.strict && th
aef0: 69 73 2e 6c 6f 6f 6b 61 68 65 61 64 2e 6f 63 74  is.lookahead.oct
af00: 61 6c 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20  al) {.  .       
af10: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
af20: 73 2e 74 6f 6c 65 72 61 74 65 55 6e 65 78 70 65  s.tolerateUnexpe
af30: 63 74 65 64 54 6f 6b 65 6e 28 74 68 69 73 2e 6c  ctedToken(this.l
af40: 6f 6f 6b 61 68 65 61 64 2c 20 6d 65 73 73 61 67  ookahead, messag
af50: 65 73 5f 31 2e 4d 65 73 73 61 67 65 73 2e 53 74  es_1.Messages.St
af60: 72 69 63 74 4f 63 74 61 6c 4c 69 74 65 72 61 6c  rictOctalLiteral
af70: 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  );.  .          
af80: 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20        }.  .     
af90: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
afa0: 63 6f 6e 74 65 78 74 2e 69 73 41 73 73 69 67 6e  context.isAssign
afb0: 6d 65 6e 74 54 61 72 67 65 74 20 3d 20 66 61 6c  mentTarget = fal
afc0: 73 65 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  se;.  .         
afd0: 20 20 20 20 20 20 20 74 68 69 73 2e 63 6f 6e 74         this.cont
afe0: 65 78 74 2e 69 73 42 69 6e 64 69 6e 67 45 6c 65  ext.isBindingEle
aff0: 6d 65 6e 74 20 3d 20 66 61 6c 73 65 3b 0a 20 20  ment = false;.  
b000: 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b010: 20 74 6f 6b 65 6e 20 3d 20 74 68 69 73 2e 6e 65   token = this.ne
b020: 78 74 54 6f 6b 65 6e 28 29 3b 0a 20 20 09 20 20  xtToken();.  .  
b030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 61                ra
b040: 77 20 3d 20 74 68 69 73 2e 67 65 74 54 6f 6b 65  w = this.getToke
b050: 6e 52 61 77 28 74 6f 6b 65 6e 29 3b 0a 20 20 09  nRaw(token);.  .
b060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b070: 65 78 70 72 20 3d 20 74 68 69 73 2e 66 69 6e 61  expr = this.fina
b080: 6c 69 7a 65 28 6e 6f 64 65 2c 20 6e 65 77 20 4e  lize(node, new N
b090: 6f 64 65 2e 4c 69 74 65 72 61 6c 28 74 6f 6b 65  ode.Literal(toke
b0a0: 6e 2e 76 61 6c 75 65 2c 20 72 61 77 29 29 3b 0a  n.value, raw));.
b0b0: 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
b0c0: 20 20 20 62 72 65 61 6b 3b 0a 20 20 09 20 20 20     break;.  .   
b0d0: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 74 6f           case to
b0e0: 6b 65 6e 5f 31 2e 54 6f 6b 65 6e 2e 42 6f 6f 6c  ken_1.Token.Bool
b0f0: 65 61 6e 4c 69 74 65 72 61 6c 3a 0a 20 20 09 20  eanLiteral:.  . 
b100: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
b110: 68 69 73 2e 63 6f 6e 74 65 78 74 2e 69 73 41 73  his.context.isAs
b120: 73 69 67 6e 6d 65 6e 74 54 61 72 67 65 74 20 3d  signmentTarget =
b130: 20 66 61 6c 73 65 3b 0a 20 20 09 20 20 20 20 20   false;.  .     
b140: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
b150: 63 6f 6e 74 65 78 74 2e 69 73 42 69 6e 64 69 6e  context.isBindin
b160: 67 45 6c 65 6d 65 6e 74 20 3d 20 66 61 6c 73 65  gElement = false
b170: 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
b180: 20 20 20 20 20 74 6f 6b 65 6e 20 3d 20 74 68 69       token = thi
b190: 73 2e 6e 65 78 74 54 6f 6b 65 6e 28 29 3b 0a 20  s.nextToken();. 
b1a0: 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
b1b0: 20 20 74 6f 6b 65 6e 2e 76 61 6c 75 65 20 3d 20    token.value = 
b1c0: 28 74 6f 6b 65 6e 2e 76 61 6c 75 65 20 3d 3d 3d  (token.value ===
b1d0: 20 27 74 72 75 65 27 29 3b 0a 20 20 09 20 20 20   'true');.  .   
b1e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 61 77               raw
b1f0: 20 3d 20 74 68 69 73 2e 67 65 74 54 6f 6b 65 6e   = this.getToken
b200: 52 61 77 28 74 6f 6b 65 6e 29 3b 0a 20 20 09 20  Raw(token);.  . 
b210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
b220: 78 70 72 20 3d 20 74 68 69 73 2e 66 69 6e 61 6c  xpr = this.final
b230: 69 7a 65 28 6e 6f 64 65 2c 20 6e 65 77 20 4e 6f  ize(node, new No
b240: 64 65 2e 4c 69 74 65 72 61 6c 28 74 6f 6b 65 6e  de.Literal(token
b250: 2e 76 61 6c 75 65 2c 20 72 61 77 29 29 3b 0a 20  .value, raw));. 
b260: 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
b270: 20 20 62 72 65 61 6b 3b 0a 20 20 09 20 20 20 20    break;.  .    
b280: 20 20 20 20 20 20 20 20 63 61 73 65 20 74 6f 6b          case tok
b290: 65 6e 5f 31 2e 54 6f 6b 65 6e 2e 4e 75 6c 6c 4c  en_1.Token.NullL
b2a0: 69 74 65 72 61 6c 3a 0a 20 20 09 20 20 20 20 20  iteral:.  .     
b2b0: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
b2c0: 63 6f 6e 74 65 78 74 2e 69 73 41 73 73 69 67 6e  context.isAssign
b2d0: 6d 65 6e 74 54 61 72 67 65 74 20 3d 20 66 61 6c  mentTarget = fal
b2e0: 73 65 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  se;.  .         
b2f0: 20 20 20 20 20 20 20 74 68 69 73 2e 63 6f 6e 74         this.cont
b300: 65 78 74 2e 69 73 42 69 6e 64 69 6e 67 45 6c 65  ext.isBindingEle
b310: 6d 65 6e 74 20 3d 20 66 61 6c 73 65 3b 0a 20 20  ment = false;.  
b320: 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b330: 20 74 6f 6b 65 6e 20 3d 20 74 68 69 73 2e 6e 65   token = this.ne
b340: 78 74 54 6f 6b 65 6e 28 29 3b 0a 20 20 09 20 20  xtToken();.  .  
b350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 6f                to
b360: 6b 65 6e 2e 76 61 6c 75 65 20 3d 20 6e 75 6c 6c  ken.value = null
b370: 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
b380: 20 20 20 20 20 72 61 77 20 3d 20 74 68 69 73 2e       raw = this.
b390: 67 65 74 54 6f 6b 65 6e 52 61 77 28 74 6f 6b 65  getTokenRaw(toke
b3a0: 6e 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  n);.  .         
b3b0: 20 20 20 20 20 20 20 65 78 70 72 20 3d 20 74 68         expr = th
b3c0: 69 73 2e 66 69 6e 61 6c 69 7a 65 28 6e 6f 64 65  is.finalize(node
b3d0: 2c 20 6e 65 77 20 4e 6f 64 65 2e 4c 69 74 65 72  , new Node.Liter
b3e0: 61 6c 28 74 6f 6b 65 6e 2e 76 61 6c 75 65 2c 20  al(token.value, 
b3f0: 72 61 77 29 29 3b 0a 20 20 09 20 20 20 20 20 20  raw));.  .      
b400: 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b            break;
b410: 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
b420: 63 61 73 65 20 74 6f 6b 65 6e 5f 31 2e 54 6f 6b  case token_1.Tok
b430: 65 6e 2e 54 65 6d 70 6c 61 74 65 3a 0a 20 20 09  en.Template:.  .
b440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b450: 65 78 70 72 20 3d 20 74 68 69 73 2e 70 61 72 73  expr = this.pars
b460: 65 54 65 6d 70 6c 61 74 65 4c 69 74 65 72 61 6c  eTemplateLiteral
b470: 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ();.  .         
b480: 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0a 20 20         break;.  
b490: 09 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73  .            cas
b4a0: 65 20 74 6f 6b 65 6e 5f 31 2e 54 6f 6b 65 6e 2e  e token_1.Token.
b4b0: 50 75 6e 63 74 75 61 74 6f 72 3a 0a 20 20 09 20  Punctuator:.  . 
b4c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76                 v
b4d0: 61 6c 75 65 20 3d 20 74 68 69 73 2e 6c 6f 6f 6b  alue = this.look
b4e0: 61 68 65 61 64 2e 76 61 6c 75 65 3b 0a 20 20 09  ahead.value;.  .
b4f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b500: 73 77 69 74 63 68 20 28 76 61 6c 75 65 29 20 7b  switch (value) {
b510: 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
b520: 20 20 20 20 20 20 20 20 63 61 73 65 20 27 28 27          case '('
b530: 3a 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  :.  .           
b540: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
b550: 73 2e 63 6f 6e 74 65 78 74 2e 69 73 42 69 6e 64  s.context.isBind
b560: 69 6e 67 45 6c 65 6d 65 6e 74 20 3d 20 66 61 6c  ingElement = fal
b570: 73 65 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  se;.  .         
b580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
b590: 78 70 72 20 3d 20 74 68 69 73 2e 69 6e 68 65 72  xpr = this.inher
b5a0: 69 74 43 6f 76 65 72 47 72 61 6d 6d 61 72 28 74  itCoverGrammar(t
b5b0: 68 69 73 2e 70 61 72 73 65 47 72 6f 75 70 45 78  his.parseGroupEx
b5c0: 70 72 65 73 73 69 6f 6e 29 3b 0a 20 20 09 20 20  pression);.  .  
b5d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b5e0: 20 20 20 20 20 20 62 72 65 61 6b 3b 0a 20 20 09        break;.  .
b5f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b600: 20 20 20 20 63 61 73 65 20 27 5b 27 3a 0a 20 20      case '[':.  
b610: 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b620: 20 20 20 20 20 20 20 20 20 65 78 70 72 20 3d 20           expr = 
b630: 74 68 69 73 2e 69 6e 68 65 72 69 74 43 6f 76 65  this.inheritCove
b640: 72 47 72 61 6d 6d 61 72 28 74 68 69 73 2e 70 61  rGrammar(this.pa
b650: 72 73 65 41 72 72 61 79 49 6e 69 74 69 61 6c 69  rseArrayInitiali
b660: 7a 65 72 29 3b 0a 20 20 09 20 20 20 20 20 20 20  zer);.  .       
b670: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b680: 20 62 72 65 61 6b 3b 0a 20 20 09 20 20 20 20 20   break;.  .     
b690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
b6a0: 61 73 65 20 27 7b 27 3a 0a 20 20 09 20 20 20 20  ase '{':.  .    
b6b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b6c0: 20 20 20 20 65 78 70 72 20 3d 20 74 68 69 73 2e      expr = this.
b6d0: 69 6e 68 65 72 69 74 43 6f 76 65 72 47 72 61 6d  inheritCoverGram
b6e0: 6d 61 72 28 74 68 69 73 2e 70 61 72 73 65 4f 62  mar(this.parseOb
b6f0: 6a 65 63 74 49 6e 69 74 69 61 6c 69 7a 65 72 29  jectInitializer)
b700: 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
b710: 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65               bre
b720: 61 6b 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ak;.  .         
b730: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
b740: 27 2f 27 3a 0a 20 20 09 20 20 20 20 20 20 20 20  '/':.  .        
b750: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
b760: 20 27 2f 3d 27 3a 0a 20 20 09 20 20 20 20 20 20   '/=':.  .      
b770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b780: 20 20 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e 69    this.context.i
b790: 73 41 73 73 69 67 6e 6d 65 6e 74 54 61 72 67 65  sAssignmentTarge
b7a0: 74 20 3d 20 66 61 6c 73 65 3b 0a 20 20 09 20 20  t = false;.  .  
b7b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b7c0: 20 20 20 20 20 20 74 68 69 73 2e 63 6f 6e 74 65        this.conte
b7d0: 78 74 2e 69 73 42 69 6e 64 69 6e 67 45 6c 65 6d  xt.isBindingElem
b7e0: 65 6e 74 20 3d 20 66 61 6c 73 65 3b 0a 20 20 09  ent = false;.  .
b7f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b800: 20 20 20 20 20 20 20 20 74 68 69 73 2e 73 63 61          this.sca
b810: 6e 6e 65 72 2e 69 6e 64 65 78 20 3d 20 74 68 69  nner.index = thi
b820: 73 2e 73 74 61 72 74 4d 61 72 6b 65 72 2e 69 6e  s.startMarker.in
b830: 64 65 78 3b 0a 20 20 09 20 20 20 20 20 20 20 20  dex;.  .        
b840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b850: 74 6f 6b 65 6e 20 3d 20 74 68 69 73 2e 6e 65 78  token = this.nex
b860: 74 52 65 67 65 78 54 6f 6b 65 6e 28 29 3b 0a 20  tRegexToken();. 
b870: 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
b880: 20 20 20 20 20 20 20 20 20 20 72 61 77 20 3d 20            raw = 
b890: 74 68 69 73 2e 67 65 74 54 6f 6b 65 6e 52 61 77  this.getTokenRaw
b8a0: 28 74 6f 6b 65 6e 29 3b 0a 20 20 09 20 20 20 20  (token);.  .    
b8b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b8c0: 20 20 20 20 65 78 70 72 20 3d 20 74 68 69 73 2e      expr = this.
b8d0: 66 69 6e 61 6c 69 7a 65 28 6e 6f 64 65 2c 20 6e  finalize(node, n
b8e0: 65 77 20 4e 6f 64 65 2e 52 65 67 65 78 4c 69 74  ew Node.RegexLit
b8f0: 65 72 61 6c 28 74 6f 6b 65 6e 2e 76 61 6c 75 65  eral(token.value
b900: 2c 20 72 61 77 2c 20 74 6f 6b 65 6e 2e 72 65 67  , raw, token.reg
b910: 65 78 29 29 3b 0a 20 20 09 20 20 20 20 20 20 20  ex));.  .       
b920: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b930: 20 62 72 65 61 6b 3b 0a 20 20 09 20 20 20 20 20   break;.  .     
b940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
b950: 65 66 61 75 6c 74 3a 0a 20 20 09 20 20 20 20 20  efault:.  .     
b960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b970: 20 20 20 74 68 69 73 2e 74 68 72 6f 77 55 6e 65     this.throwUne
b980: 78 70 65 63 74 65 64 54 6f 6b 65 6e 28 74 68 69  xpectedToken(thi
b990: 73 2e 6e 65 78 74 54 6f 6b 65 6e 28 29 29 3b 0a  s.nextToken());.
b9a0: 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
b9b0: 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20     }.  .        
b9c0: 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0a 20          break;. 
b9d0: 20 09 20 20 20 20 20 20 20 20 20 20 20 20 63 61   .            ca
b9e0: 73 65 20 74 6f 6b 65 6e 5f 31 2e 54 6f 6b 65 6e  se token_1.Token
b9f0: 2e 4b 65 79 77 6f 72 64 3a 0a 20 20 09 20 20 20  .Keyword:.  .   
ba00: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
ba10: 28 21 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e 73  (!this.context.s
ba20: 74 72 69 63 74 20 26 26 20 74 68 69 73 2e 63 6f  trict && this.co
ba30: 6e 74 65 78 74 2e 61 6c 6c 6f 77 59 69 65 6c 64  ntext.allowYield
ba40: 20 26 26 20 74 68 69 73 2e 6d 61 74 63 68 4b 65   && this.matchKe
ba50: 79 77 6f 72 64 28 27 79 69 65 6c 64 27 29 29 20  yword('yield')) 
ba60: 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  {.  .           
ba70: 20 20 20 20 20 20 20 20 20 65 78 70 72 20 3d 20           expr = 
ba80: 74 68 69 73 2e 70 61 72 73 65 49 64 65 6e 74 69  this.parseIdenti
ba90: 66 69 65 72 4e 61 6d 65 28 29 3b 0a 20 20 09 20  fierName();.  . 
baa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
bab0: 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
bac0: 20 20 20 20 65 6c 73 65 20 69 66 20 28 21 74 68      else if (!th
bad0: 69 73 2e 63 6f 6e 74 65 78 74 2e 73 74 72 69 63  is.context.stric
bae0: 74 20 26 26 20 74 68 69 73 2e 6d 61 74 63 68 4b  t && this.matchK
baf0: 65 79 77 6f 72 64 28 27 6c 65 74 27 29 29 20 7b  eyword('let')) {
bb00: 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
bb10: 20 20 20 20 20 20 20 20 65 78 70 72 20 3d 20 74          expr = t
bb20: 68 69 73 2e 66 69 6e 61 6c 69 7a 65 28 6e 6f 64  his.finalize(nod
bb30: 65 2c 20 6e 65 77 20 4e 6f 64 65 2e 49 64 65 6e  e, new Node.Iden
bb40: 74 69 66 69 65 72 28 74 68 69 73 2e 6e 65 78 74  tifier(this.next
bb50: 54 6f 6b 65 6e 28 29 2e 76 61 6c 75 65 29 29 3b  Token().value));
bb60: 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
bb70: 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20      }.  .       
bb80: 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 7b 0a           else {.
bb90: 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
bba0: 20 20 20 20 20 20 20 74 68 69 73 2e 63 6f 6e 74         this.cont
bbb0: 65 78 74 2e 69 73 41 73 73 69 67 6e 6d 65 6e 74  ext.isAssignment
bbc0: 54 61 72 67 65 74 20 3d 20 66 61 6c 73 65 3b 0a  Target = false;.
bbd0: 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
bbe0: 20 20 20 20 20 20 20 74 68 69 73 2e 63 6f 6e 74         this.cont
bbf0: 65 78 74 2e 69 73 42 69 6e 64 69 6e 67 45 6c 65  ext.isBindingEle
bc00: 6d 65 6e 74 20 3d 20 66 61 6c 73 65 3b 0a 20 20  ment = false;.  
bc10: 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
bc20: 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 6d 61       if (this.ma
bc30: 74 63 68 4b 65 79 77 6f 72 64 28 27 66 75 6e 63  tchKeyword('func
bc40: 74 69 6f 6e 27 29 29 20 7b 0a 20 20 09 20 20 20  tion')) {.  .   
bc50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bc60: 20 20 20 20 20 65 78 70 72 20 3d 20 74 68 69 73       expr = this
bc70: 2e 70 61 72 73 65 46 75 6e 63 74 69 6f 6e 45 78  .parseFunctionEx
bc80: 70 72 65 73 73 69 6f 6e 28 29 3b 0a 20 20 09 20  pression();.  . 
bc90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bca0: 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20     }.  .        
bcb0: 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
bcc0: 20 69 66 20 28 74 68 69 73 2e 6d 61 74 63 68 4b   if (this.matchK
bcd0: 65 79 77 6f 72 64 28 27 74 68 69 73 27 29 29 20  eyword('this')) 
bce0: 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  {.  .           
bcf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
bd00: 73 2e 6e 65 78 74 54 6f 6b 65 6e 28 29 3b 0a 20  s.nextToken();. 
bd10: 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
bd20: 20 20 20 20 20 20 20 20 20 20 65 78 70 72 20 3d            expr =
bd30: 20 74 68 69 73 2e 66 69 6e 61 6c 69 7a 65 28 6e   this.finalize(n
bd40: 6f 64 65 2c 20 6e 65 77 20 4e 6f 64 65 2e 54 68  ode, new Node.Th
bd50: 69 73 45 78 70 72 65 73 73 69 6f 6e 28 29 29 3b  isExpression());
bd60: 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
bd70: 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20          }.  .   
bd80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bd90: 20 65 6c 73 65 20 69 66 20 28 74 68 69 73 2e 6d   else if (this.m
bda0: 61 74 63 68 4b 65 79 77 6f 72 64 28 27 63 6c 61  atchKeyword('cla
bdb0: 73 73 27 29 29 20 7b 0a 20 20 09 20 20 20 20 20  ss')) {.  .     
bdc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bdd0: 20 20 20 65 78 70 72 20 3d 20 74 68 69 73 2e 70     expr = this.p
bde0: 61 72 73 65 43 6c 61 73 73 45 78 70 72 65 73 73  arseClassExpress
bdf0: 69 6f 6e 28 29 3b 0a 20 20 09 20 20 20 20 20 20  ion();.  .      
be00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a                }.
be10: 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
be20: 20 20 20 20 20 20 20 65 6c 73 65 20 7b 0a 20 20         else {.  
be30: 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
be40: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 74 68           this.th
be50: 72 6f 77 55 6e 65 78 70 65 63 74 65 64 54 6f 6b  rowUnexpectedTok
be60: 65 6e 28 74 68 69 73 2e 6e 65 78 74 54 6f 6b 65  en(this.nextToke
be70: 6e 28 29 29 3b 0a 20 20 09 20 20 20 20 20 20 20  n());.  .       
be80: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20               }. 
be90: 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
bea0: 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20    }.  .         
beb0: 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0a 20 20         break;.  
bec0: 09 20 20 20 20 20 20 20 20 20 20 20 20 64 65 66  .            def
bed0: 61 75 6c 74 3a 0a 20 20 09 20 20 20 20 20 20 20  ault:.  .       
bee0: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 74 68           this.th
bef0: 72 6f 77 55 6e 65 78 70 65 63 74 65 64 54 6f 6b  rowUnexpectedTok
bf00: 65 6e 28 74 68 69 73 2e 6e 65 78 74 54 6f 6b 65  en(this.nextToke
bf10: 6e 28 29 29 3b 0a 20 20 09 20 20 20 20 20 20 20  n());.  .       
bf20: 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 72 65   }.  .        re
bf30: 74 75 72 6e 20 65 78 70 72 3b 0a 20 20 09 20 20  turn expr;.  .  
bf40: 20 20 7d 3b 0a 20 20 09 20 20 20 20 2f 2f 20 45    };.  .    // E
bf50: 43 4d 41 2d 32 36 32 20 31 32 2e 32 2e 35 20 41  CMA-262 12.2.5 A
bf60: 72 72 61 79 20 49 6e 69 74 69 61 6c 69 7a 65 72  rray Initializer
bf70: 0a 20 20 09 20 20 20 20 50 61 72 73 65 72 2e 70  .  .    Parser.p
bf80: 72 6f 74 6f 74 79 70 65 2e 70 61 72 73 65 53 70  rototype.parseSp
bf90: 72 65 61 64 45 6c 65 6d 65 6e 74 20 3d 20 66 75  readElement = fu
bfa0: 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20 09 20  nction () {.  . 
bfb0: 20 20 20 20 20 20 20 76 61 72 20 6e 6f 64 65 20         var node 
bfc0: 3d 20 74 68 69 73 2e 63 72 65 61 74 65 4e 6f 64  = this.createNod
bfd0: 65 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  e();.  .        
bfe0: 74 68 69 73 2e 65 78 70 65 63 74 28 27 2e 2e 2e  this.expect('...
bff0: 27 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 76  ');.  .        v
c000: 61 72 20 61 72 67 20 3d 20 74 68 69 73 2e 69 6e  ar arg = this.in
c010: 68 65 72 69 74 43 6f 76 65 72 47 72 61 6d 6d 61  heritCoverGramma
c020: 72 28 74 68 69 73 2e 70 61 72 73 65 41 73 73 69  r(this.parseAssi
c030: 67 6e 6d 65 6e 74 45 78 70 72 65 73 73 69 6f 6e  gnmentExpression
c040: 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 72 65  );.  .        re
c050: 74 75 72 6e 20 74 68 69 73 2e 66 69 6e 61 6c 69  turn this.finali
c060: 7a 65 28 6e 6f 64 65 2c 20 6e 65 77 20 4e 6f 64  ze(node, new Nod
c070: 65 2e 53 70 72 65 61 64 45 6c 65 6d 65 6e 74 28  e.SpreadElement(
c080: 61 72 67 29 29 3b 0a 20 20 09 20 20 20 20 7d 3b  arg));.  .    };
c090: 0a 20 20 09 20 20 20 20 50 61 72 73 65 72 2e 70  .  .    Parser.p
c0a0: 72 6f 74 6f 74 79 70 65 2e 70 61 72 73 65 41 72  rototype.parseAr
c0b0: 72 61 79 49 6e 69 74 69 61 6c 69 7a 65 72 20 3d  rayInitializer =
c0c0: 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20   function () {. 
c0d0: 20 09 20 20 20 20 20 20 20 20 76 61 72 20 74 68   .        var th
c0e0: 69 73 24 31 20 3d 20 74 68 69 73 3b 0a 0a 20 20  is$1 = this;..  
c0f0: 09 20 20 20 20 20 20 20 20 76 61 72 20 6e 6f 64  .        var nod
c100: 65 20 3d 20 74 68 69 73 2e 63 72 65 61 74 65 4e  e = this.createN
c110: 6f 64 65 28 29 3b 0a 20 20 09 20 20 20 20 20 20  ode();.  .      
c120: 20 20 76 61 72 20 65 6c 65 6d 65 6e 74 73 20 3d    var elements =
c130: 20 5b 5d 3b 0a 20 20 09 20 20 20 20 20 20 20 20   [];.  .        
c140: 74 68 69 73 2e 65 78 70 65 63 74 28 27 5b 27 29  this.expect('[')
c150: 3b 0a 20 20 09 20 20 20 20 20 20 20 20 77 68 69  ;.  .        whi
c160: 6c 65 20 28 21 74 68 69 73 2e 6d 61 74 63 68 28  le (!this.match(
c170: 27 5d 27 29 29 20 7b 0a 20 20 09 20 20 20 20 20  ']')) {.  .     
c180: 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73 24         if (this$
c190: 31 2e 6d 61 74 63 68 28 27 2c 27 29 29 20 7b 0a  1.match(',')) {.
c1a0: 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
c1b0: 20 20 20 74 68 69 73 24 31 2e 6e 65 78 74 54 6f     this$1.nextTo
c1c0: 6b 65 6e 28 29 3b 0a 20 20 09 20 20 20 20 20 20  ken();.  .      
c1d0: 20 20 20 20 20 20 20 20 20 20 65 6c 65 6d 65 6e            elemen
c1e0: 74 73 2e 70 75 73 68 28 6e 75 6c 6c 29 3b 0a 20  ts.push(null);. 
c1f0: 20 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a   .            }.
c200: 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 65    .            e
c210: 6c 73 65 20 69 66 20 28 74 68 69 73 24 31 2e 6d  lse if (this$1.m
c220: 61 74 63 68 28 27 2e 2e 2e 27 29 29 20 7b 0a 20  atch('...')) {. 
c230: 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
c240: 20 20 76 61 72 20 65 6c 65 6d 65 6e 74 20 3d 20    var element = 
c250: 74 68 69 73 24 31 2e 70 61 72 73 65 53 70 72 65  this$1.parseSpre
c260: 61 64 45 6c 65 6d 65 6e 74 28 29 3b 0a 20 20 09  adElement();.  .
c270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c280: 69 66 20 28 21 74 68 69 73 24 31 2e 6d 61 74 63  if (!this$1.matc
c290: 68 28 27 5d 27 29 29 20 7b 0a 20 20 09 20 20 20  h(']')) {.  .   
c2a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c2b0: 20 74 68 69 73 24 31 2e 63 6f 6e 74 65 78 74 2e   this$1.context.
c2c0: 69 73 41 73 73 69 67 6e 6d 65 6e 74 54 61 72 67  isAssignmentTarg
c2d0: 65 74 20 3d 20 66 61 6c 73 65 3b 0a 20 20 09 20  et = false;.  . 
c2e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c2f0: 20 20 20 74 68 69 73 24 31 2e 63 6f 6e 74 65 78     this$1.contex
c300: 74 2e 69 73 42 69 6e 64 69 6e 67 45 6c 65 6d 65  t.isBindingEleme
c310: 6e 74 20 3d 20 66 61 6c 73 65 3b 0a 20 20 09 20  nt = false;.  . 
c320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c330: 20 20 20 74 68 69 73 24 31 2e 65 78 70 65 63 74     this$1.expect
c340: 28 27 2c 27 29 3b 0a 20 20 09 20 20 20 20 20 20  (',');.  .      
c350: 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20            }.  . 
c360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
c370: 6c 65 6d 65 6e 74 73 2e 70 75 73 68 28 65 6c 65  lements.push(ele
c380: 6d 65 6e 74 29 3b 0a 20 20 09 20 20 20 20 20 20  ment);.  .      
c390: 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20        }.  .     
c3a0: 20 20 20 20 20 20 20 65 6c 73 65 20 7b 0a 20 20         else {.  
c3b0: 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c3c0: 20 65 6c 65 6d 65 6e 74 73 2e 70 75 73 68 28 74   elements.push(t
c3d0: 68 69 73 24 31 2e 69 6e 68 65 72 69 74 43 6f 76  his$1.inheritCov
c3e0: 65 72 47 72 61 6d 6d 61 72 28 74 68 69 73 24 31  erGrammar(this$1
c3f0: 2e 70 61 72 73 65 41 73 73 69 67 6e 6d 65 6e 74  .parseAssignment
c400: 45 78 70 72 65 73 73 69 6f 6e 29 29 3b 0a 20 20  Expression));.  
c410: 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c420: 20 69 66 20 28 21 74 68 69 73 24 31 2e 6d 61 74   if (!this$1.mat
c430: 63 68 28 27 5d 27 29 29 20 7b 0a 20 20 09 20 20  ch(']')) {.  .  
c440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c450: 20 20 74 68 69 73 24 31 2e 65 78 70 65 63 74 28    this$1.expect(
c460: 27 2c 27 29 3b 0a 20 20 09 20 20 20 20 20 20 20  ',');.  .       
c470: 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20           }.  .  
c480: 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20            }.  . 
c490: 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20         }.  .    
c4a0: 20 20 20 20 74 68 69 73 2e 65 78 70 65 63 74 28      this.expect(
c4b0: 27 5d 27 29 3b 0a 20 20 09 20 20 20 20 20 20 20  ']');.  .       
c4c0: 20 72 65 74 75 72 6e 20 74 68 69 73 2e 66 69 6e   return this.fin
c4d0: 61 6c 69 7a 65 28 6e 6f 64 65 2c 20 6e 65 77 20  alize(node, new 
c4e0: 4e 6f 64 65 2e 41 72 72 61 79 45 78 70 72 65 73  Node.ArrayExpres
c4f0: 73 69 6f 6e 28 65 6c 65 6d 65 6e 74 73 29 29 3b  sion(elements));
c500: 0a 20 20 09 20 20 20 20 7d 3b 0a 20 20 09 20 20  .  .    };.  .  
c510: 20 20 2f 2f 20 45 43 4d 41 2d 32 36 32 20 31 32    // ECMA-262 12
c520: 2e 32 2e 36 20 4f 62 6a 65 63 74 20 49 6e 69 74  .2.6 Object Init
c530: 69 61 6c 69 7a 65 72 0a 20 20 09 20 20 20 20 50  ializer.  .    P
c540: 61 72 73 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e  arser.prototype.
c550: 70 61 72 73 65 50 72 6f 70 65 72 74 79 4d 65 74  parsePropertyMet
c560: 68 6f 64 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28  hod = function (
c570: 70 61 72 61 6d 73 29 20 7b 0a 20 20 09 20 20 20  params) {.  .   
c580: 20 20 20 20 20 74 68 69 73 2e 63 6f 6e 74 65 78       this.contex
c590: 74 2e 69 73 41 73 73 69 67 6e 6d 65 6e 74 54 61  t.isAssignmentTa
c5a0: 72 67 65 74 20 3d 20 66 61 6c 73 65 3b 0a 20 20  rget = false;.  
c5b0: 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 6f  .        this.co
c5c0: 6e 74 65 78 74 2e 69 73 42 69 6e 64 69 6e 67 45  ntext.isBindingE
c5d0: 6c 65 6d 65 6e 74 20 3d 20 66 61 6c 73 65 3b 0a  lement = false;.
c5e0: 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20 70    .        var p
c5f0: 72 65 76 69 6f 75 73 53 74 72 69 63 74 20 3d 20  reviousStrict = 
c600: 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e 73 74 72  this.context.str
c610: 69 63 74 3b 0a 20 20 09 20 20 20 20 20 20 20 20  ict;.  .        
c620: 76 61 72 20 62 6f 64 79 20 3d 20 74 68 69 73 2e  var body = this.
c630: 69 73 6f 6c 61 74 65 43 6f 76 65 72 47 72 61 6d  isolateCoverGram
c640: 6d 61 72 28 74 68 69 73 2e 70 61 72 73 65 46 75  mar(this.parseFu
c650: 6e 63 74 69 6f 6e 53 6f 75 72 63 65 45 6c 65 6d  nctionSourceElem
c660: 65 6e 74 73 29 3b 0a 20 20 09 20 20 20 20 20 20  ents);.  .      
c670: 20 20 69 66 20 28 74 68 69 73 2e 63 6f 6e 74 65    if (this.conte
c680: 78 74 2e 73 74 72 69 63 74 20 26 26 20 70 61 72  xt.strict && par
c690: 61 6d 73 2e 66 69 72 73 74 52 65 73 74 72 69 63  ams.firstRestric
c6a0: 74 65 64 29 20 7b 0a 20 20 09 20 20 20 20 20 20  ted) {.  .      
c6b0: 20 20 20 20 20 20 74 68 69 73 2e 74 6f 6c 65 72        this.toler
c6c0: 61 74 65 55 6e 65 78 70 65 63 74 65 64 54 6f 6b  ateUnexpectedTok
c6d0: 65 6e 28 70 61 72 61 6d 73 2e 66 69 72 73 74 52  en(params.firstR
c6e0: 65 73 74 72 69 63 74 65 64 2c 20 70 61 72 61 6d  estricted, param
c6f0: 73 2e 6d 65 73 73 61 67 65 29 3b 0a 20 20 09 20  s.message);.  . 
c700: 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20         }.  .    
c710: 20 20 20 20 69 66 20 28 74 68 69 73 2e 63 6f 6e      if (this.con
c720: 74 65 78 74 2e 73 74 72 69 63 74 20 26 26 20 70  text.strict && p
c730: 61 72 61 6d 73 2e 73 74 72 69 63 74 65 64 29 20  arams.stricted) 
c740: 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  {.  .           
c750: 20 74 68 69 73 2e 74 6f 6c 65 72 61 74 65 55 6e   this.tolerateUn
c760: 65 78 70 65 63 74 65 64 54 6f 6b 65 6e 28 70 61  expectedToken(pa
c770: 72 61 6d 73 2e 73 74 72 69 63 74 65 64 2c 20 70  rams.stricted, p
c780: 61 72 61 6d 73 2e 6d 65 73 73 61 67 65 29 3b 0a  arams.message);.
c790: 20 20 09 20 20 20 20 20 20 20 20 7d 0a 20 20 09    .        }.  .
c7a0: 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 6f 6e          this.con
c7b0: 74 65 78 74 2e 73 74 72 69 63 74 20 3d 20 70 72  text.strict = pr
c7c0: 65 76 69 6f 75 73 53 74 72 69 63 74 3b 0a 20 20  eviousStrict;.  
c7d0: 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
c7e0: 62 6f 64 79 3b 0a 20 20 09 20 20 20 20 7d 3b 0a  body;.  .    };.
c7f0: 20 20 09 20 20 20 20 50 61 72 73 65 72 2e 70 72    .    Parser.pr
c800: 6f 74 6f 74 79 70 65 2e 70 61 72 73 65 50 72 6f  ototype.parsePro
c810: 70 65 72 74 79 4d 65 74 68 6f 64 46 75 6e 63 74  pertyMethodFunct
c820: 69 6f 6e 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28  ion = function (
c830: 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 76  ) {.  .        v
c840: 61 72 20 69 73 47 65 6e 65 72 61 74 6f 72 20 3d  ar isGenerator =
c850: 20 66 61 6c 73 65 3b 0a 20 20 09 20 20 20 20 20   false;.  .     
c860: 20 20 20 76 61 72 20 6e 6f 64 65 20 3d 20 74 68     var node = th
c870: 69 73 2e 63 72 65 61 74 65 4e 6f 64 65 28 29 3b  is.createNode();
c880: 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20  .  .        var 
c890: 70 72 65 76 69 6f 75 73 41 6c 6c 6f 77 59 69 65  previousAllowYie
c8a0: 6c 64 20 3d 20 74 68 69 73 2e 63 6f 6e 74 65 78  ld = this.contex
c8b0: 74 2e 61 6c 6c 6f 77 59 69 65 6c 64 3b 0a 20 20  t.allowYield;.  
c8c0: 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 6f  .        this.co
c8d0: 6e 74 65 78 74 2e 61 6c 6c 6f 77 59 69 65 6c 64  ntext.allowYield
c8e0: 20 3d 20 66 61 6c 73 65 3b 0a 20 20 09 20 20 20   = false;.  .   
c8f0: 20 20 20 20 20 76 61 72 20 70 61 72 61 6d 73 20       var params 
c900: 3d 20 74 68 69 73 2e 70 61 72 73 65 46 6f 72 6d  = this.parseForm
c910: 61 6c 50 61 72 61 6d 65 74 65 72 73 28 29 3b 0a  alParameters();.
c920: 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20 6d    .        var m
c930: 65 74 68 6f 64 20 3d 20 74 68 69 73 2e 70 61 72  ethod = this.par
c940: 73 65 50 72 6f 70 65 72 74 79 4d 65 74 68 6f 64  sePropertyMethod
c950: 28 70 61 72 61 6d 73 29 3b 0a 20 20 09 20 20 20  (params);.  .   
c960: 20 20 20 20 20 74 68 69 73 2e 63 6f 6e 74 65 78       this.contex
c970: 74 2e 61 6c 6c 6f 77 59 69 65 6c 64 20 3d 20 70  t.allowYield = p
c980: 72 65 76 69 6f 75 73 41 6c 6c 6f 77 59 69 65 6c  reviousAllowYiel
c990: 64 3b 0a 20 20 09 20 20 20 20 20 20 20 20 72 65  d;.  .        re
c9a0: 74 75 72 6e 20 74 68 69 73 2e 66 69 6e 61 6c 69  turn this.finali
c9b0: 7a 65 28 6e 6f 64 65 2c 20 6e 65 77 20 4e 6f 64  ze(node, new Nod
c9c0: 65 2e 46 75 6e 63 74 69 6f 6e 45 78 70 72 65 73  e.FunctionExpres
c9d0: 73 69 6f 6e 28 6e 75 6c 6c 2c 20 70 61 72 61 6d  sion(null, param
c9e0: 73 2e 70 61 72 61 6d 73 2c 20 6d 65 74 68 6f 64  s.params, method
c9f0: 2c 20 69 73 47 65 6e 65 72 61 74 6f 72 29 29 3b  , isGenerator));
ca00: 0a 20 20 09 20 20 20 20 7d 3b 0a 20 20 09 20 20  .  .    };.  .  
ca10: 20 20 50 61 72 73 65 72 2e 70 72 6f 74 6f 74 79    Parser.prototy
ca20: 70 65 2e 70 61 72 73 65 4f 62 6a 65 63 74 50 72  pe.parseObjectPr
ca30: 6f 70 65 72 74 79 4b 65 79 20 3d 20 66 75 6e 63  opertyKey = func
ca40: 74 69 6f 6e 20 28 29 20 7b 0a 20 20 09 20 20 20  tion () {.  .   
ca50: 20 20 20 20 20 76 61 72 20 6e 6f 64 65 20 3d 20       var node = 
ca60: 74 68 69 73 2e 63 72 65 61 74 65 4e 6f 64 65 28  this.createNode(
ca70: 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 76 61  );.  .        va
ca80: 72 20 74 6f 6b 65 6e 20 3d 20 74 68 69 73 2e 6e  r token = this.n
ca90: 65 78 74 54 6f 6b 65 6e 28 29 3b 0a 20 20 09 20  extToken();.  . 
caa0: 20 20 20 20 20 20 20 76 61 72 20 6b 65 79 20 3d         var key =
cab0: 20 6e 75 6c 6c 3b 0a 20 20 09 20 20 20 20 20 20   null;.  .      
cac0: 20 20 73 77 69 74 63 68 20 28 74 6f 6b 65 6e 2e    switch (token.
cad0: 74 79 70 65 29 20 7b 0a 20 20 09 20 20 20 20 20  type) {.  .     
cae0: 20 20 20 20 20 20 20 63 61 73 65 20 74 6f 6b 65         case toke
caf0: 6e 5f 31 2e 54 6f 6b 65 6e 2e 53 74 72 69 6e 67  n_1.Token.String
cb00: 4c 69 74 65 72 61 6c 3a 0a 20 20 09 20 20 20 20  Literal:.  .    
cb10: 20 20 20 20 20 20 20 20 63 61 73 65 20 74 6f 6b          case tok
cb20: 65 6e 5f 31 2e 54 6f 6b 65 6e 2e 4e 75 6d 65 72  en_1.Token.Numer
cb30: 69 63 4c 69 74 65 72 61 6c 3a 0a 20 20 09 20 20  icLiteral:.  .  
cb40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
cb50: 20 28 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e 73   (this.context.s
cb60: 74 72 69 63 74 20 26 26 20 74 6f 6b 65 6e 2e 6f  trict && token.o
cb70: 63 74 61 6c 29 20 7b 0a 20 20 09 20 20 20 20 20  ctal) {.  .     
cb80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
cb90: 68 69 73 2e 74 6f 6c 65 72 61 74 65 55 6e 65 78  his.tolerateUnex
cba0: 70 65 63 74 65 64 54 6f 6b 65 6e 28 74 6f 6b 65  pectedToken(toke
cbb0: 6e 2c 20 6d 65 73 73 61 67 65 73 5f 31 2e 4d 65  n, messages_1.Me
cbc0: 73 73 61 67 65 73 2e 53 74 72 69 63 74 4f 63 74  ssages.StrictOct
cbd0: 61 6c 4c 69 74 65 72 61 6c 29 3b 0a 20 20 09 20  alLiteral);.  . 
cbe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
cbf0: 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
cc00: 20 20 20 20 76 61 72 20 72 61 77 20 3d 20 74 68      var raw = th
cc10: 69 73 2e 67 65 74 54 6f 6b 65 6e 52 61 77 28 74  is.getTokenRaw(t
cc20: 6f 6b 65 6e 29 3b 0a 20 20 09 20 20 20 20 20 20  oken);.  .      
cc30: 20 20 20 20 20 20 20 20 20 20 6b 65 79 20 3d 20            key = 
cc40: 74 68 69 73 2e 66 69 6e 61 6c 69 7a 65 28 6e 6f  this.finalize(no
cc50: 64 65 2c 20 6e 65 77 20 4e 6f 64 65 2e 4c 69 74  de, new Node.Lit
cc60: 65 72 61 6c 28 74 6f 6b 65 6e 2e 76 61 6c 75 65  eral(token.value
cc70: 2c 20 72 61 77 29 29 3b 0a 20 20 09 20 20 20 20  , raw));.  .    
cc80: 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61              brea
cc90: 6b 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  k;.  .          
cca0: 20 20 63 61 73 65 20 74 6f 6b 65 6e 5f 31 2e 54    case token_1.T
ccb0: 6f 6b 65 6e 2e 49 64 65 6e 74 69 66 69 65 72 3a  oken.Identifier:
ccc0: 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
ccd0: 63 61 73 65 20 74 6f 6b 65 6e 5f 31 2e 54 6f 6b  case token_1.Tok
cce0: 65 6e 2e 42 6f 6f 6c 65 61 6e 4c 69 74 65 72 61  en.BooleanLitera
ccf0: 6c 3a 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  l:.  .          
cd00: 20 20 63 61 73 65 20 74 6f 6b 65 6e 5f 31 2e 54    case token_1.T
cd10: 6f 6b 65 6e 2e 4e 75 6c 6c 4c 69 74 65 72 61 6c  oken.NullLiteral
cd20: 3a 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  :.  .           
cd30: 20 63 61 73 65 20 74 6f 6b 65 6e 5f 31 2e 54 6f   case token_1.To
cd40: 6b 65 6e 2e 4b 65 79 77 6f 72 64 3a 0a 20 20 09  ken.Keyword:.  .
cd50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cd60: 6b 65 79 20 3d 20 74 68 69 73 2e 66 69 6e 61 6c  key = this.final
cd70: 69 7a 65 28 6e 6f 64 65 2c 20 6e 65 77 20 4e 6f  ize(node, new No
cd80: 64 65 2e 49 64 65 6e 74 69 66 69 65 72 28 74 6f  de.Identifier(to
cd90: 6b 65 6e 2e 76 61 6c 75 65 29 29 3b 0a 20 20 09  ken.value));.  .
cda0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cdb0: 62 72 65 61 6b 3b 0a 20 20 09 20 20 20 20 20 20  break;.  .      
cdc0: 20 20 20 20 20 20 63 61 73 65 20 74 6f 6b 65 6e        case token
cdd0: 5f 31 2e 54 6f 6b 65 6e 2e 50 75 6e 63 74 75 61  _1.Token.Punctua
cde0: 74 6f 72 3a 0a 20 20 09 20 20 20 20 20 20 20 20  tor:.  .        
cdf0: 20 20 20 20 20 20 20 20 69 66 20 28 74 6f 6b 65          if (toke
ce00: 6e 2e 76 61 6c 75 65 20 3d 3d 3d 20 27 5b 27 29  n.value === '[')
ce10: 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   {.  .          
ce20: 20 20 20 20 20 20 20 20 20 20 6b 65 79 20 3d 20            key = 
ce30: 74 68 69 73 2e 69 73 6f 6c 61 74 65 43 6f 76 65  this.isolateCove
ce40: 72 47 72 61 6d 6d 61 72 28 74 68 69 73 2e 70 61  rGrammar(this.pa
ce50: 72 73 65 41 73 73 69 67 6e 6d 65 6e 74 45 78 70  rseAssignmentExp
ce60: 72 65 73 73 69 6f 6e 29 3b 0a 20 20 09 20 20 20  ression);.  .   
ce70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ce80: 20 74 68 69 73 2e 65 78 70 65 63 74 28 27 5d 27   this.expect(']'
ce90: 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  );.  .          
cea0: 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20        }.  .     
ceb0: 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20             else 
cec0: 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  {.  .           
ced0: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 74 68           this.th
cee0: 72 6f 77 55 6e 65 78 70 65 63 74 65 64 54 6f 6b  rowUnexpectedTok
cef0: 65 6e 28 74 6f 6b 65 6e 29 3b 0a 20 20 09 20 20  en(token);.  .  
cf00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a                }.
cf10: 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
cf20: 20 20 20 62 72 65 61 6b 3b 0a 20 20 09 20 20 20     break;.  .   
cf30: 20 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74           default
cf40: 3a 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  :.  .           
cf50: 20 20 20 20 20 74 68 69 73 2e 74 68 72 6f 77 55       this.throwU
cf60: 6e 65 78 70 65 63 74 65 64 54 6f 6b 65 6e 28 74  nexpectedToken(t
cf70: 6f 6b 65 6e 29 3b 0a 20 20 09 20 20 20 20 20 20  oken);.  .      
cf80: 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 72    }.  .        r
cf90: 65 74 75 72 6e 20 6b 65 79 3b 0a 20 20 09 20 20  eturn key;.  .  
cfa0: 20 20 7d 3b 0a 20 20 09 20 20 20 20 50 61 72 73    };.  .    Pars
cfb0: 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 69 73 50  er.prototype.isP
cfc0: 72 6f 70 65 72 74 79 4b 65 79 20 3d 20 66 75 6e  ropertyKey = fun
cfd0: 63 74 69 6f 6e 20 28 6b 65 79 2c 20 76 61 6c 75  ction (key, valu
cfe0: 65 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20  e) {.  .        
cff0: 72 65 74 75 72 6e 20 28 6b 65 79 2e 74 79 70 65  return (key.type
d000: 20 3d 3d 3d 20 73 79 6e 74 61 78 5f 31 2e 53 79   === syntax_1.Sy
d010: 6e 74 61 78 2e 49 64 65 6e 74 69 66 69 65 72 20  ntax.Identifier 
d020: 26 26 20 6b 65 79 2e 6e 61 6d 65 20 3d 3d 3d 20  && key.name === 
d030: 76 61 6c 75 65 29 20 7c 7c 0a 20 20 09 20 20 20  value) ||.  .   
d040: 20 20 20 20 20 20 20 20 20 28 6b 65 79 2e 74 79           (key.ty
d050: 70 65 20 3d 3d 3d 20 73 79 6e 74 61 78 5f 31 2e  pe === syntax_1.
d060: 53 79 6e 74 61 78 2e 4c 69 74 65 72 61 6c 20 26  Syntax.Literal &
d070: 26 20 6b 65 79 2e 76 61 6c 75 65 20 3d 3d 3d 20  & key.value === 
d080: 76 61 6c 75 65 29 3b 0a 20 20 09 20 20 20 20 7d  value);.  .    }
d090: 3b 0a 20 20 09 20 20 20 20 50 61 72 73 65 72 2e  ;.  .    Parser.
d0a0: 70 72 6f 74 6f 74 79 70 65 2e 70 61 72 73 65 4f  prototype.parseO
d0b0: 62 6a 65 63 74 50 72 6f 70 65 72 74 79 20 3d 20  bjectProperty = 
d0c0: 66 75 6e 63 74 69 6f 6e 20 28 68 61 73 50 72 6f  function (hasPro
d0d0: 74 6f 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20  to) {.  .       
d0e0: 20 76 61 72 20 6e 6f 64 65 20 3d 20 74 68 69 73   var node = this
d0f0: 2e 63 72 65 61 74 65 4e 6f 64 65 28 29 3b 0a 20  .createNode();. 
d100: 20 09 20 20 20 20 20 20 20 20 76 61 72 20 74 6f   .        var to
d110: 6b 65 6e 20 3d 20 74 68 69 73 2e 6c 6f 6f 6b 61  ken = this.looka
d120: 68 65 61 64 3b 0a 20 20 09 20 20 20 20 20 20 20  head;.  .       
d130: 20 76 61 72 20 6b 69 6e 64 3b 0a 20 20 09 20 20   var kind;.  .  
d140: 20 20 20 20 20 20 76 61 72 20 6b 65 79 3b 0a 20        var key;. 
d150: 20 09 20 20 20 20 20 20 20 20 76 61 72 20 76 61   .        var va
d160: 6c 75 65 3b 0a 20 20 09 20 20 20 20 20 20 20 20  lue;.  .        
d170: 76 61 72 20 63 6f 6d 70 75 74 65 64 20 3d 20 66  var computed = f
d180: 61 6c 73 65 3b 0a 20 20 09 20 20 20 20 20 20 20  alse;.  .       
d190: 20 76 61 72 20 6d 65 74 68 6f 64 20 3d 20 66 61   var method = fa
d1a0: 6c 73 65 3b 0a 20 20 09 20 20 20 20 20 20 20 20  lse;.  .        
d1b0: 76 61 72 20 73 68 6f 72 74 68 61 6e 64 20 3d 20  var shorthand = 
d1c0: 66 61 6c 73 65 3b 0a 20 20 09 20 20 20 20 20 20  false;.  .      
d1d0: 20 20 69 66 20 28 74 6f 6b 65 6e 2e 74 79 70 65    if (token.type
d1e0: 20 3d 3d 3d 20 74 6f 6b 65 6e 5f 31 2e 54 6f 6b   === token_1.Tok
d1f0: 65 6e 2e 49 64 65 6e 74 69 66 69 65 72 29 20 7b  en.Identifier) {
d200: 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
d210: 74 68 69 73 2e 6e 65 78 74 54 6f 6b 65 6e 28 29  this.nextToken()
d220: 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
d230: 20 6b 65 79 20 3d 20 74 68 69 73 2e 66 69 6e 61   key = this.fina
d240: 6c 69 7a 65 28 6e 6f 64 65 2c 20 6e 65 77 20 4e  lize(node, new N
d250: 6f 64 65 2e 49 64 65 6e 74 69 66 69 65 72 28 74  ode.Identifier(t
d260: 6f 6b 65 6e 2e 76 61 6c 75 65 29 29 3b 0a 20 20  oken.value));.  
d270: 09 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20  .        }.  .  
d280: 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 74        else if (t
d290: 68 69 73 2e 6d 61 74 63 68 28 27 2a 27 29 29 20  his.match('*')) 
d2a0: 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  {.  .           
d2b0: 20 74 68 69 73 2e 6e 65 78 74 54 6f 6b 65 6e 28   this.nextToken(
d2c0: 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a  );.  .        }.
d2d0: 20 20 09 20 20 20 20 20 20 20 20 65 6c 73 65 20    .        else 
d2e0: 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  {.  .           
d2f0: 20 63 6f 6d 70 75 74 65 64 20 3d 20 74 68 69 73   computed = this
d300: 2e 6d 61 74 63 68 28 27 5b 27 29 3b 0a 20 20 09  .match('[');.  .
d310: 20 20 20 20 20 20 20 20 20 20 20 20 6b 65 79 20              key 
d320: 3d 20 74 68 69 73 2e 70 61 72 73 65 4f 62 6a 65  = this.parseObje
d330: 63 74 50 72 6f 70 65 72 74 79 4b 65 79 28 29 3b  ctPropertyKey();
d340: 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a 20 20  .  .        }.  
d350: 09 20 20 20 20 20 20 20 20 76 61 72 20 6c 6f 6f  .        var loo
d360: 6b 61 68 65 61 64 50 72 6f 70 65 72 74 79 4b 65  kaheadPropertyKe
d370: 79 20 3d 20 74 68 69 73 2e 71 75 61 6c 69 66 69  y = this.qualifi
d380: 65 64 50 72 6f 70 65 72 74 79 4e 61 6d 65 28 74  edPropertyName(t
d390: 68 69 73 2e 6c 6f 6f 6b 61 68 65 61 64 29 3b 0a  his.lookahead);.
d3a0: 20 20 09 20 20 20 20 20 20 20 20 69 66 20 28 74    .        if (t
d3b0: 6f 6b 65 6e 2e 74 79 70 65 20 3d 3d 3d 20 74 6f  oken.type === to
d3c0: 6b 65 6e 5f 31 2e 54 6f 6b 65 6e 2e 49 64 65 6e  ken_1.Token.Iden
d3d0: 74 69 66 69 65 72 20 26 26 20 74 6f 6b 65 6e 2e  tifier && token.
d3e0: 76 61 6c 75 65 20 3d 3d 3d 20 27 67 65 74 27 20  value === 'get' 
d3f0: 26 26 20 6c 6f 6f 6b 61 68 65 61 64 50 72 6f 70  && lookaheadProp
d400: 65 72 74 79 4b 65 79 29 20 7b 0a 20 20 09 20 20  ertyKey) {.  .  
d410: 20 20 20 20 20 20 20 20 20 20 6b 69 6e 64 20 3d            kind =
d420: 20 27 67 65 74 27 3b 0a 20 20 09 20 20 20 20 20   'get';.  .     
d430: 20 20 20 20 20 20 20 63 6f 6d 70 75 74 65 64 20         computed 
d440: 3d 20 74 68 69 73 2e 6d 61 74 63 68 28 27 5b 27  = this.match('['
d450: 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  );.  .          
d460: 20 20 6b 65 79 20 3d 20 74 68 69 73 2e 70 61 72    key = this.par
d470: 73 65 4f 62 6a 65 63 74 50 72 6f 70 65 72 74 79  seObjectProperty
d480: 4b 65 79 28 29 3b 0a 20 20 09 20 20 20 20 20 20  Key();.  .      
d490: 20 20 20 20 20 20 74 68 69 73 2e 63 6f 6e 74 65        this.conte
d4a0: 78 74 2e 61 6c 6c 6f 77 59 69 65 6c 64 20 3d 20  xt.allowYield = 
d4b0: 66 61 6c 73 65 3b 0a 20 20 09 20 20 20 20 20 20  false;.  .      
d4c0: 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 74 68        value = th
d4d0: 69 73 2e 70 61 72 73 65 47 65 74 74 65 72 4d 65  is.parseGetterMe
d4e0: 74 68 6f 64 28 29 3b 0a 20 20 09 20 20 20 20 20  thod();.  .     
d4f0: 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20     }.  .        
d500: 65 6c 73 65 20 69 66 20 28 74 6f 6b 65 6e 2e 74  else if (token.t
d510: 79 70 65 20 3d 3d 3d 20 74 6f 6b 65 6e 5f 31 2e  ype === token_1.
d520: 54 6f 6b 65 6e 2e 49 64 65 6e 74 69 66 69 65 72  Token.Identifier
d530: 20 26 26 20 74 6f 6b 65 6e 2e 76 61 6c 75 65 20   && token.value 
d540: 3d 3d 3d 20 27 73 65 74 27 20 26 26 20 6c 6f 6f  === 'set' && loo
d550: 6b 61 68 65 61 64 50 72 6f 70 65 72 74 79 4b 65  kaheadPropertyKe
d560: 79 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20  y) {.  .        
d570: 20 20 20 20 6b 69 6e 64 20 3d 20 27 73 65 74 27      kind = 'set'
d580: 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
d590: 20 63 6f 6d 70 75 74 65 64 20 3d 20 74 68 69 73   computed = this
d5a0: 2e 6d 61 74 63 68 28 27 5b 27 29 3b 0a 20 20 09  .match('[');.  .
d5b0: 20 20 20 20 20 20 20 20 20 20 20 20 6b 65 79 20              key 
d5c0: 3d 20 74 68 69 73 2e 70 61 72 73 65 4f 62 6a 65  = this.parseObje
d5d0: 63 74 50 72 6f 70 65 72 74 79 4b 65 79 28 29 3b  ctPropertyKey();
d5e0: 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
d5f0: 76 61 6c 75 65 20 3d 20 74 68 69 73 2e 70 61 72  value = this.par
d600: 73 65 53 65 74 74 65 72 4d 65 74 68 6f 64 28 29  seSetterMethod()
d610: 3b 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a 20  ;.  .        }. 
d620: 20 09 20 20 20 20 20 20 20 20 65 6c 73 65 20 69   .        else i
d630: 66 20 28 74 6f 6b 65 6e 2e 74 79 70 65 20 3d 3d  f (token.type ==
d640: 3d 20 74 6f 6b 65 6e 5f 31 2e 54 6f 6b 65 6e 2e  = token_1.Token.
d650: 50 75 6e 63 74 75 61 74 6f 72 20 26 26 20 74 6f  Punctuator && to
d660: 6b 65 6e 2e 76 61 6c 75 65 20 3d 3d 3d 20 27 2a  ken.value === '*
d670: 27 20 26 26 20 6c 6f 6f 6b 61 68 65 61 64 50 72  ' && lookaheadPr
d680: 6f 70 65 72 74 79 4b 65 79 29 20 7b 0a 20 20 09  opertyKey) {.  .
d690: 20 20 20 20 20 20 20 20 20 20 20 20 6b 69 6e 64              kind
d6a0: 20 3d 20 27 69 6e 69 74 27 3b 0a 20 20 09 20 20   = 'init';.  .  
d6b0: 20 20 20 20 20 20 20 20 20 20 63 6f 6d 70 75 74            comput
d6c0: 65 64 20 3d 20 74 68 69 73 2e 6d 61 74 63 68 28  ed = this.match(
d6d0: 27 5b 27 29 3b 0a 20 20 09 20 20 20 20 20 20 20  '[');.  .       
d6e0: 20 20 20 20 20 6b 65 79 20 3d 20 74 68 69 73 2e       key = this.
d6f0: 70 61 72 73 65 4f 62 6a 65 63 74 50 72 6f 70 65  parseObjectPrope
d700: 72 74 79 4b 65 79 28 29 3b 0a 20 20 09 20 20 20  rtyKey();.  .   
d710: 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d           value =
d720: 20 74 68 69 73 2e 70 61 72 73 65 47 65 6e 65 72   this.parseGener
d730: 61 74 6f 72 4d 65 74 68 6f 64 28 29 3b 0a 20 20  atorMethod();.  
d740: 09 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 74  .            met
d750: 68 6f 64 20 3d 20 74 72 75 65 3b 0a 20 20 09 20  hod = true;.  . 
d760: 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20         }.  .    
d770: 20 20 20 20 65 6c 73 65 20 7b 0a 20 20 09 20 20      else {.  .  
d780: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 6b            if (!k
d790: 65 79 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20  ey) {.  .       
d7a0: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 74 68           this.th
d7b0: 72 6f 77 55 6e 65 78 70 65 63 74 65 64 54 6f 6b  rowUnexpectedTok
d7c0: 65 6e 28 74 68 69 73 2e 6c 6f 6f 6b 61 68 65 61  en(this.lookahea
d7d0: 64 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  d);.  .         
d7e0: 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20     }.  .        
d7f0: 20 20 20 20 6b 69 6e 64 20 3d 20 27 69 6e 69 74      kind = 'init
d800: 27 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  ';.  .          
d810: 20 20 69 66 20 28 74 68 69 73 2e 6d 61 74 63 68    if (this.match
d820: 28 27 3a 27 29 29 20 7b 0a 20 20 09 20 20 20 20  (':')) {.  .    
d830: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
d840: 21 63 6f 6d 70 75 74 65 64 20 26 26 20 74 68 69  !computed && thi
d850: 73 2e 69 73 50 72 6f 70 65 72 74 79 4b 65 79 28  s.isPropertyKey(
d860: 6b 65 79 2c 20 27 5f 5f 70 72 6f 74 6f 5f 5f 27  key, '__proto__'
d870: 29 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20  )) {.  .        
d880: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
d890: 68 61 73 50 72 6f 74 6f 2e 76 61 6c 75 65 29 20  hasProto.value) 
d8a0: 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  {.  .           
d8b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
d8c0: 73 2e 74 6f 6c 65 72 61 74 65 45 72 72 6f 72 28  s.tolerateError(
d8d0: 6d 65 73 73 61 67 65 73 5f 31 2e 4d 65 73 73 61  messages_1.Messa
d8e0: 67 65 73 2e 44 75 70 6c 69 63 61 74 65 50 72 6f  ges.DuplicatePro
d8f0: 74 6f 50 72 6f 70 65 72 74 79 29 3b 0a 20 20 09  toProperty);.  .
d900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d910: 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20      }.  .       
d920: 20 20 20 20 20 20 20 20 20 20 20 20 20 68 61 73               has
d930: 50 72 6f 74 6f 2e 76 61 6c 75 65 20 3d 20 74 72  Proto.value = tr
d940: 75 65 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ue;.  .         
d950: 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20         }.  .    
d960: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
d970: 2e 6e 65 78 74 54 6f 6b 65 6e 28 29 3b 0a 20 20  .nextToken();.  
d980: 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d990: 20 76 61 6c 75 65 20 3d 20 74 68 69 73 2e 69 6e   value = this.in
d9a0: 68 65 72 69 74 43 6f 76 65 72 47 72 61 6d 6d 61  heritCoverGramma
d9b0: 72 28 74 68 69 73 2e 70 61 72 73 65 41 73 73 69  r(this.parseAssi
d9c0: 67 6e 6d 65 6e 74 45 78 70 72 65 73 73 69 6f 6e  gnmentExpression
d9d0: 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  );.  .          
d9e0: 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20    }.  .         
d9f0: 20 20 20 65 6c 73 65 20 69 66 20 28 74 68 69 73     else if (this
da00: 2e 6d 61 74 63 68 28 27 28 27 29 29 20 7b 0a 20  .match('(')) {. 
da10: 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
da20: 20 20 76 61 6c 75 65 20 3d 20 74 68 69 73 2e 70    value = this.p
da30: 61 72 73 65 50 72 6f 70 65 72 74 79 4d 65 74 68  arsePropertyMeth
da40: 6f 64 46 75 6e 63 74 69 6f 6e 28 29 3b 0a 20 20  odFunction();.  
da50: 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
da60: 20 6d 65 74 68 6f 64 20 3d 20 74 72 75 65 3b 0a   method = true;.
da70: 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 7d    .            }
da80: 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
da90: 65 6c 73 65 20 69 66 20 28 74 6f 6b 65 6e 2e 74  else if (token.t
daa0: 79 70 65 20 3d 3d 3d 20 74 6f 6b 65 6e 5f 31 2e  ype === token_1.
dab0: 54 6f 6b 65 6e 2e 49 64 65 6e 74 69 66 69 65 72  Token.Identifier
dac0: 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ) {.  .         
dad0: 20 20 20 20 20 20 20 76 61 72 20 69 64 20 3d 20         var id = 
dae0: 74 68 69 73 2e 66 69 6e 61 6c 69 7a 65 28 6e 6f  this.finalize(no
daf0: 64 65 2c 20 6e 65 77 20 4e 6f 64 65 2e 49 64 65  de, new Node.Ide
db00: 6e 74 69 66 69 65 72 28 74 6f 6b 65 6e 2e 76 61  ntifier(token.va
db10: 6c 75 65 29 29 3b 0a 20 20 09 20 20 20 20 20 20  lue));.  .      
db20: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74 68            if (th
db30: 69 73 2e 6d 61 74 63 68 28 27 3d 27 29 29 20 7b  is.match('=')) {
db40: 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
db50: 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 6f 6e          this.con
db60: 74 65 78 74 2e 66 69 72 73 74 43 6f 76 65 72 49  text.firstCoverI
db70: 6e 69 74 69 61 6c 69 7a 65 64 4e 61 6d 65 45 72  nitializedNameEr
db80: 72 6f 72 20 3d 20 74 68 69 73 2e 6c 6f 6f 6b 61  ror = this.looka
db90: 68 65 61 64 3b 0a 20 20 09 20 20 20 20 20 20 20  head;.  .       
dba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
dbb0: 73 2e 6e 65 78 74 54 6f 6b 65 6e 28 29 3b 0a 20  s.nextToken();. 
dbc0: 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
dbd0: 20 20 20 20 20 20 73 68 6f 72 74 68 61 6e 64 20        shorthand 
dbe0: 3d 20 74 72 75 65 3b 0a 20 20 09 20 20 20 20 20  = true;.  .     
dbf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76                 v
dc00: 61 72 20 69 6e 69 74 20 3d 20 74 68 69 73 2e 69  ar init = this.i
dc10: 73 6f 6c 61 74 65 43 6f 76 65 72 47 72 61 6d 6d  solateCoverGramm
dc20: 61 72 28 74 68 69 73 2e 70 61 72 73 65 41 73 73  ar(this.parseAss
dc30: 69 67 6e 6d 65 6e 74 45 78 70 72 65 73 73 69 6f  ignmentExpressio
dc40: 6e 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  n);.  .         
dc50: 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65             value
dc60: 20 3d 20 74 68 69 73 2e 66 69 6e 61 6c 69 7a 65   = this.finalize
dc70: 28 6e 6f 64 65 2c 20 6e 65 77 20 4e 6f 64 65 2e  (node, new Node.
dc80: 41 73 73 69 67 6e 6d 65 6e 74 50 61 74 74 65 72  AssignmentPatter
dc90: 6e 28 69 64 2c 20 69 6e 69 74 29 29 3b 0a 20 20  n(id, init));.  
dca0: 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
dcb0: 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   }.  .          
dcc0: 20 20 20 20 20 20 65 6c 73 65 20 7b 0a 20 20 09        else {.  .
dcd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dce0: 20 20 20 20 73 68 6f 72 74 68 61 6e 64 20 3d 20      shorthand = 
dcf0: 74 72 75 65 3b 0a 20 20 09 20 20 20 20 20 20 20  true;.  .       
dd00: 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c               val
dd10: 75 65 20 3d 20 69 64 3b 0a 20 20 09 20 20 20 20  ue = id;.  .    
dd20: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20              }.  
dd30: 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20  .            }. 
dd40: 20 09 20 20 20 20 20 20 20 20 20 20 20 20 65 6c   .            el
dd50: 73 65 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20  se {.  .        
dd60: 20 20 20 20 20 20 20 20 74 68 69 73 2e 74 68 72          this.thr
dd70: 6f 77 55 6e 65 78 70 65 63 74 65 64 54 6f 6b 65  owUnexpectedToke
dd80: 6e 28 74 68 69 73 2e 6e 65 78 74 54 6f 6b 65 6e  n(this.nextToken
dd90: 28 29 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  ());.  .        
dda0: 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20      }.  .       
ddb0: 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 72 65   }.  .        re
ddc0: 74 75 72 6e 20 74 68 69 73 2e 66 69 6e 61 6c 69  turn this.finali
ddd0: 7a 65 28 6e 6f 64 65 2c 20 6e 65 77 20 4e 6f 64  ze(node, new Nod
dde0: 65 2e 50 72 6f 70 65 72 74 79 28 6b 69 6e 64 2c  e.Property(kind,
ddf0: 20 6b 65 79 2c 20 63 6f 6d 70 75 74 65 64 2c 20   key, computed, 
de00: 76 61 6c 75 65 2c 20 6d 65 74 68 6f 64 2c 20 73  value, method, s
de10: 68 6f 72 74 68 61 6e 64 29 29 3b 0a 20 20 09 20  horthand));.  . 
de20: 20 20 20 7d 3b 0a 20 20 09 20 20 20 20 50 61 72     };.  .    Par
de30: 73 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 70 61  ser.prototype.pa
de40: 72 73 65 4f 62 6a 65 63 74 49 6e 69 74 69 61 6c  rseObjectInitial
de50: 69 7a 65 72 20 3d 20 66 75 6e 63 74 69 6f 6e 20  izer = function 
de60: 28 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20  () {.  .        
de70: 76 61 72 20 74 68 69 73 24 31 20 3d 20 74 68 69  var this$1 = thi
de80: 73 3b 0a 0a 20 20 09 20 20 20 20 20 20 20 20 76  s;..  .        v
de90: 61 72 20 6e 6f 64 65 20 3d 20 74 68 69 73 2e 63  ar node = this.c
dea0: 72 65 61 74 65 4e 6f 64 65 28 29 3b 0a 20 20 09  reateNode();.  .
deb0: 20 20 20 20 20 20 20 20 74 68 69 73 2e 65 78 70          this.exp
dec0: 65 63 74 28 27 7b 27 29 3b 0a 20 20 09 20 20 20  ect('{');.  .   
ded0: 20 20 20 20 20 76 61 72 20 70 72 6f 70 65 72 74       var propert
dee0: 69 65 73 20 3d 20 5b 5d 3b 0a 20 20 09 20 20 20  ies = [];.  .   
def0: 20 20 20 20 20 76 61 72 20 68 61 73 50 72 6f 74       var hasProt
df00: 6f 20 3d 20 7b 20 76 61 6c 75 65 3a 20 66 61 6c  o = { value: fal
df10: 73 65 20 7d 3b 0a 20 20 09 20 20 20 20 20 20 20  se };.  .       
df20: 20 77 68 69 6c 65 20 28 21 74 68 69 73 2e 6d 61   while (!this.ma
df30: 74 63 68 28 27 7d 27 29 29 20 7b 0a 20 20 09 20  tch('}')) {.  . 
df40: 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 70 65             prope
df50: 72 74 69 65 73 2e 70 75 73 68 28 74 68 69 73 24  rties.push(this$
df60: 31 2e 70 61 72 73 65 4f 62 6a 65 63 74 50 72 6f  1.parseObjectPro
df70: 70 65 72 74 79 28 68 61 73 50 72 6f 74 6f 29 29  perty(hasProto))
df80: 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
df90: 20 69 66 20 28 21 74 68 69 73 24 31 2e 6d 61 74   if (!this$1.mat
dfa0: 63 68 28 27 7d 27 29 29 20 7b 0a 20 20 09 20 20  ch('}')) {.  .  
dfb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
dfc0: 69 73 24 31 2e 65 78 70 65 63 74 43 6f 6d 6d 61  is$1.expectComma
dfd0: 53 65 70 61 72 61 74 6f 72 28 29 3b 0a 20 20 09  Separator();.  .
dfe0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20              }.  
dff0: 09 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20  .        }.  .  
e000: 20 20 20 20 20 20 74 68 69 73 2e 65 78 70 65 63        this.expec
e010: 74 28 27 7d 27 29 3b 0a 20 20 09 20 20 20 20 20  t('}');.  .     
e020: 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e 66     return this.f
e030: 69 6e 61 6c 69 7a 65 28 6e 6f 64 65 2c 20 6e 65  inalize(node, ne
e040: 77 20 4e 6f 64 65 2e 4f 62 6a 65 63 74 45 78 70  w Node.ObjectExp
e050: 72 65 73 73 69 6f 6e 28 70 72 6f 70 65 72 74 69  ression(properti
e060: 65 73 29 29 3b 0a 20 20 09 20 20 20 20 7d 3b 0a  es));.  .    };.
e070: 20 20 09 20 20 20 20 2f 2f 20 45 43 4d 41 2d 32    .    // ECMA-2
e080: 36 32 20 31 32 2e 32 2e 39 20 54 65 6d 70 6c 61  62 12.2.9 Templa
e090: 74 65 20 4c 69 74 65 72 61 6c 73 0a 20 20 09 20  te Literals.  . 
e0a0: 20 20 20 50 61 72 73 65 72 2e 70 72 6f 74 6f 74     Parser.protot
e0b0: 79 70 65 2e 70 61 72 73 65 54 65 6d 70 6c 61 74  ype.parseTemplat
e0c0: 65 48 65 61 64 20 3d 20 66 75 6e 63 74 69 6f 6e  eHead = function
e0d0: 20 28 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20   () {.  .       
e0e0: 20 61 73 73 65 72 74 5f 31 2e 61 73 73 65 72 74   assert_1.assert
e0f0: 28 74 68 69 73 2e 6c 6f 6f 6b 61 68 65 61 64 2e  (this.lookahead.
e100: 68 65 61 64 2c 20 27 54 65 6d 70 6c 61 74 65 20  head, 'Template 
e110: 6c 69 74 65 72 61 6c 20 6d 75 73 74 20 73 74 61  literal must sta
e120: 72 74 20 77 69 74 68 20 61 20 74 65 6d 70 6c 61  rt with a templa
e130: 74 65 20 68 65 61 64 27 29 3b 0a 20 20 09 20 20  te head');.  .  
e140: 20 20 20 20 20 20 76 61 72 20 6e 6f 64 65 20 3d        var node =
e150: 20 74 68 69 73 2e 63 72 65 61 74 65 4e 6f 64 65   this.createNode
e160: 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 76  ();.  .        v
e170: 61 72 20 74 6f 6b 65 6e 20 3d 20 74 68 69 73 2e  ar token = this.
e180: 6e 65 78 74 54 6f 6b 65 6e 28 29 3b 0a 20 20 09  nextToken();.  .
e190: 20 20 20 20 20 20 20 20 76 61 72 20 76 61 6c 75          var valu
e1a0: 65 20 3d 20 7b 0a 20 20 09 20 20 20 20 20 20 20  e = {.  .       
e1b0: 20 20 20 20 20 72 61 77 3a 20 74 6f 6b 65 6e 2e       raw: token.
e1c0: 76 61 6c 75 65 2e 72 61 77 2c 0a 20 20 09 20 20  value.raw,.  .  
e1d0: 20 20 20 20 20 20 20 20 20 20 63 6f 6f 6b 65 64            cooked
e1e0: 3a 20 74 6f 6b 65 6e 2e 76 61 6c 75 65 2e 63 6f  : token.value.co
e1f0: 6f 6b 65 64 0a 20 20 09 20 20 20 20 20 20 20 20  oked.  .        
e200: 7d 3b 0a 20 20 09 20 20 20 20 20 20 20 20 72 65  };.  .        re
e210: 74 75 72 6e 20 74 68 69 73 2e 66 69 6e 61 6c 69  turn this.finali
e220: 7a 65 28 6e 6f 64 65 2c 20 6e 65 77 20 4e 6f 64  ze(node, new Nod
e230: 65 2e 54 65 6d 70 6c 61 74 65 45 6c 65 6d 65 6e  e.TemplateElemen
e240: 74 28 76 61 6c 75 65 2c 20 74 6f 6b 65 6e 2e 74  t(value, token.t
e250: 61 69 6c 29 29 3b 0a 20 20 09 20 20 20 20 7d 3b  ail));.  .    };
e260: 0a 20 20 09 20 20 20 20 50 61 72 73 65 72 2e 70  .  .    Parser.p
e270: 72 6f 74 6f 74 79 70 65 2e 70 61 72 73 65 54 65  rototype.parseTe
e280: 6d 70 6c 61 74 65 45 6c 65 6d 65 6e 74 20 3d 20  mplateElement = 
e290: 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20  function () {.  
e2a0: 09 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69  .        if (thi
e2b0: 73 2e 6c 6f 6f 6b 61 68 65 61 64 2e 74 79 70 65  s.lookahead.type
e2c0: 20 21 3d 3d 20 74 6f 6b 65 6e 5f 31 2e 54 6f 6b   !== token_1.Tok
e2d0: 65 6e 2e 54 65 6d 70 6c 61 74 65 29 20 7b 0a 20  en.Template) {. 
e2e0: 20 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68   .            th
e2f0: 69 73 2e 74 68 72 6f 77 55 6e 65 78 70 65 63 74  is.throwUnexpect
e300: 65 64 54 6f 6b 65 6e 28 29 3b 0a 20 20 09 20 20  edToken();.  .  
e310: 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20        }.  .     
e320: 20 20 20 76 61 72 20 6e 6f 64 65 20 3d 20 74 68     var node = th
e330: 69 73 2e 63 72 65 61 74 65 4e 6f 64 65 28 29 3b  is.createNode();
e340: 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20  .  .        var 
e350: 74 6f 6b 65 6e 20 3d 20 74 68 69 73 2e 6e 65 78  token = this.nex
e360: 74 54 6f 6b 65 6e 28 29 3b 0a 20 20 09 20 20 20  tToken();.  .   
e370: 20 20 20 20 20 76 61 72 20 76 61 6c 75 65 20 3d       var value =
e380: 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   {.  .          
e390: 20 20 72 61 77 3a 20 74 6f 6b 65 6e 2e 76 61 6c    raw: token.val
e3a0: 75 65 2e 72 61 77 2c 0a 20 20 09 20 20 20 20 20  ue.raw,.  .     
e3b0: 20 20 20 20 20 20 20 63 6f 6f 6b 65 64 3a 20 74         cooked: t
e3c0: 6f 6b 65 6e 2e 76 61 6c 75 65 2e 63 6f 6f 6b 65  oken.value.cooke
e3d0: 64 0a 20 20 09 20 20 20 20 20 20 20 20 7d 3b 0a  d.  .        };.
e3e0: 20 20 09 20 20 20 20 20 20 20 20 72 65 74 75 72    .        retur
e3f0: 6e 20 74 68 69 73 2e 66 69 6e 61 6c 69 7a 65 28  n this.finalize(
e400: 6e 6f 64 65 2c 20 6e 65 77 20 4e 6f 64 65 2e 54  node, new Node.T
e410: 65 6d 70 6c 61 74 65 45 6c 65 6d 65 6e 74 28 76  emplateElement(v
e420: 61 6c 75 65 2c 20 74 6f 6b 65 6e 2e 74 61 69 6c  alue, token.tail
e430: 29 29 3b 0a 20 20 09 20 20 20 20 7d 3b 0a 20 20  ));.  .    };.  
e440: 09 20 20 20 20 50 61 72 73 65 72 2e 70 72 6f 74  .    Parser.prot
e450: 6f 74 79 70 65 2e 70 61 72 73 65 54 65 6d 70 6c  otype.parseTempl
e460: 61 74 65 4c 69 74 65 72 61 6c 20 3d 20 66 75 6e  ateLiteral = fun
e470: 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20 09 20 20  ction () {.  .  
e480: 20 20 20 20 20 20 76 61 72 20 74 68 69 73 24 31        var this$1
e490: 20 3d 20 74 68 69 73 3b 0a 0a 20 20 09 20 20 20   = this;..  .   
e4a0: 20 20 20 20 20 76 61 72 20 6e 6f 64 65 20 3d 20       var node = 
e4b0: 74 68 69 73 2e 63 72 65 61 74 65 4e 6f 64 65 28  this.createNode(
e4c0: 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 76 61  );.  .        va
e4d0: 72 20 65 78 70 72 65 73 73 69 6f 6e 73 20 3d 20  r expressions = 
e4e0: 5b 5d 3b 0a 20 20 09 20 20 20 20 20 20 20 20 76  [];.  .        v
e4f0: 61 72 20 71 75 61 73 69 73 20 3d 20 5b 5d 3b 0a  ar quasis = [];.
e500: 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20 71    .        var q
e510: 75 61 73 69 20 3d 20 74 68 69 73 2e 70 61 72 73  uasi = this.pars
e520: 65 54 65 6d 70 6c 61 74 65 48 65 61 64 28 29 3b  eTemplateHead();
e530: 0a 20 20 09 20 20 20 20 20 20 20 20 71 75 61 73  .  .        quas
e540: 69 73 2e 70 75 73 68 28 71 75 61 73 69 29 3b 0a  is.push(quasi);.
e550: 20 20 09 20 20 20 20 20 20 20 20 77 68 69 6c 65    .        while
e560: 20 28 21 71 75 61 73 69 2e 74 61 69 6c 29 20 7b   (!quasi.tail) {
e570: 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
e580: 65 78 70 72 65 73 73 69 6f 6e 73 2e 70 75 73 68  expressions.push
e590: 28 74 68 69 73 24 31 2e 70 61 72 73 65 45 78 70  (this$1.parseExp
e5a0: 72 65 73 73 69 6f 6e 28 29 29 3b 0a 20 20 09 20  ression());.  . 
e5b0: 20 20 20 20 20 20 20 20 20 20 20 71 75 61 73 69             quasi
e5c0: 20 3d 20 74 68 69 73 24 31 2e 70 61 72 73 65 54   = this$1.parseT
e5d0: 65 6d 70 6c 61 74 65 45 6c 65 6d 65 6e 74 28 29  emplateElement()
e5e0: 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
e5f0: 20 71 75 61 73 69 73 2e 70 75 73 68 28 71 75 61   quasis.push(qua
e600: 73 69 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  si);.  .        
e610: 7d 0a 20 20 09 20 20 20 20 20 20 20 20 72 65 74  }.  .        ret
e620: 75 72 6e 20 74 68 69 73 2e 66 69 6e 61 6c 69 7a  urn this.finaliz
e630: 65 28 6e 6f 64 65 2c 20 6e 65 77 20 4e 6f 64 65  e(node, new Node
e640: 2e 54 65 6d 70 6c 61 74 65 4c 69 74 65 72 61 6c  .TemplateLiteral
e650: 28 71 75 61 73 69 73 2c 20 65 78 70 72 65 73 73  (quasis, express
e660: 69 6f 6e 73 29 29 3b 0a 20 20 09 20 20 20 20 7d  ions));.  .    }
e670: 3b 0a 20 20 09 20 20 20 20 2f 2f 20 45 43 4d 41  ;.  .    // ECMA
e680: 2d 32 36 32 20 31 32 2e 32 2e 31 30 20 54 68 65  -262 12.2.10 The
e690: 20 47 72 6f 75 70 69 6e 67 20 4f 70 65 72 61 74   Grouping Operat
e6a0: 6f 72 0a 20 20 09 20 20 20 20 50 61 72 73 65 72  or.  .    Parser
e6b0: 2e 70 72 6f 74 6f 74 79 70 65 2e 72 65 69 6e 74  .prototype.reint
e6c0: 65 72 70 72 65 74 45 78 70 72 65 73 73 69 6f 6e  erpretExpression
e6d0: 41 73 50 61 74 74 65 72 6e 20 3d 20 66 75 6e 63  AsPattern = func
e6e0: 74 69 6f 6e 20 28 65 78 70 72 29 20 7b 0a 20 20  tion (expr) {.  
e6f0: 09 20 20 20 20 20 20 20 20 76 61 72 20 74 68 69  .        var thi
e700: 73 24 31 20 3d 20 74 68 69 73 3b 0a 0a 20 20 09  s$1 = this;..  .
e710: 20 20 20 20 20 20 20 20 73 77 69 74 63 68 20 28          switch (
e720: 65 78 70 72 2e 74 79 70 65 29 20 7b 0a 20 20 09  expr.type) {.  .
e730: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
e740: 20 73 79 6e 74 61 78 5f 31 2e 53 79 6e 74 61 78   syntax_1.Syntax
e750: 2e 49 64 65 6e 74 69 66 69 65 72 3a 0a 20 20 09  .Identifier:.  .
e760: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
e770: 20 73 79 6e 74 61 78 5f 31 2e 53 79 6e 74 61 78   syntax_1.Syntax
e780: 2e 4d 65 6d 62 65 72 45 78 70 72 65 73 73 69 6f  .MemberExpressio
e790: 6e 3a 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  n:.  .          
e7a0: 20 20 63 61 73 65 20 73 79 6e 74 61 78 5f 31 2e    case syntax_1.
e7b0: 53 79 6e 74 61 78 2e 52 65 73 74 45 6c 65 6d 65  Syntax.RestEleme
e7c0: 6e 74 3a 0a 20 20 09 20 20 20 20 20 20 20 20 20  nt:.  .         
e7d0: 20 20 20 63 61 73 65 20 73 79 6e 74 61 78 5f 31     case syntax_1
e7e0: 2e 53 79 6e 74 61 78 2e 41 73 73 69 67 6e 6d 65  .Syntax.Assignme
e7f0: 6e 74 50 61 74 74 65 72 6e 3a 0a 20 20 09 20 20  ntPattern:.  .  
e800: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72                br
e810: 65 61 6b 3b 0a 20 20 09 20 20 20 20 20 20 20 20  eak;.  .        
e820: 20 20 20 20 63 61 73 65 20 73 79 6e 74 61 78 5f      case syntax_
e830: 31 2e 53 79 6e 74 61 78 2e 53 70 72 65 61 64 45  1.Syntax.SpreadE
e840: 6c 65 6d 65 6e 74 3a 0a 20 20 09 20 20 20 20 20  lement:.  .     
e850: 20 20 20 20 20 20 20 20 20 20 20 65 78 70 72 2e             expr.
e860: 74 79 70 65 20 3d 20 73 79 6e 74 61 78 5f 31 2e  type = syntax_1.
e870: 53 79 6e 74 61 78 2e 52 65 73 74 45 6c 65 6d 65  Syntax.RestEleme
e880: 6e 74 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  nt;.  .         
e890: 20 20 20 20 20 20 20 74 68 69 73 2e 72 65 69 6e         this.rein
e8a0: 74 65 72 70 72 65 74 45 78 70 72 65 73 73 69 6f  terpretExpressio
e8b0: 6e 41 73 50 61 74 74 65 72 6e 28 65 78 70 72 2e  nAsPattern(expr.
e8c0: 61 72 67 75 6d 65 6e 74 29 3b 0a 20 20 09 20 20  argument);.  .  
e8d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72                br
e8e0: 65 61 6b 3b 0a 20 20 09 20 20 20 20 20 20 20 20  eak;.  .        
e8f0: 20 20 20 20 63 61 73 65 20 73 79 6e 74 61 78 5f      case syntax_
e900: 31 2e 53 79 6e 74 61 78 2e 41 72 72 61 79 45 78  1.Syntax.ArrayEx
e910: 70 72 65 73 73 69 6f 6e 3a 0a 20 20 09 20 20 20  pression:.  .   
e920: 20 20 20 20 20 20 20 20 20 20 20 20 20 65 78 70               exp
e930: 72 2e 74 79 70 65 20 3d 20 73 79 6e 74 61 78 5f  r.type = syntax_
e940: 31 2e 53 79 6e 74 61 78 2e 41 72 72 61 79 50 61  1.Syntax.ArrayPa
e950: 74 74 65 72 6e 3b 0a 20 20 09 20 20 20 20 20 20  ttern;.  .      
e960: 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 76            for (v
e970: 61 72 20 69 20 3d 20 30 3b 20 69 20 3c 20 65 78  ar i = 0; i < ex
e980: 70 72 2e 65 6c 65 6d 65 6e 74 73 2e 6c 65 6e 67  pr.elements.leng
e990: 74 68 3b 20 69 2b 2b 29 20 7b 0a 20 20 09 20 20  th; i++) {.  .  
e9a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e9b0: 20 20 69 66 20 28 65 78 70 72 2e 65 6c 65 6d 65    if (expr.eleme
e9c0: 6e 74 73 5b 69 5d 20 21 3d 3d 20 6e 75 6c 6c 29  nts[i] !== null)
e9d0: 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   {.  .          
e9e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
e9f0: 69 73 24 31 2e 72 65 69 6e 74 65 72 70 72 65 74  is$1.reinterpret
ea00: 45 78 70 72 65 73 73 69 6f 6e 41 73 50 61 74 74  ExpressionAsPatt
ea10: 65 72 6e 28 65 78 70 72 2e 65 6c 65 6d 65 6e 74  ern(expr.element
ea20: 73 5b 69 5d 29 3b 0a 20 20 09 20 20 20 20 20 20  s[i]);.  .      
ea30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a                }.
ea40: 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
ea50: 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20     }.  .        
ea60: 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0a 20          break;. 
ea70: 20 09 20 20 20 20 20 20 20 20 20 20 20 20 63 61   .            ca
ea80: 73 65 20 73 79 6e 74 61 78 5f 31 2e 53 79 6e 74  se syntax_1.Synt
ea90: 61 78 2e 4f 62 6a 65 63 74 45 78 70 72 65 73 73  ax.ObjectExpress
eaa0: 69 6f 6e 3a 0a 20 20 09 20 20 20 20 20 20 20 20  ion:.  .        
eab0: 20 20 20 20 20 20 20 20 65 78 70 72 2e 74 79 70          expr.typ
eac0: 65 20 3d 20 73 79 6e 74 61 78 5f 31 2e 53 79 6e  e = syntax_1.Syn
ead0: 74 61 78 2e 4f 62 6a 65 63 74 50 61 74 74 65 72  tax.ObjectPatter
eae0: 6e 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  n;.  .          
eaf0: 20 20 20 20 20 20 66 6f 72 20 28 76 61 72 20 69        for (var i
eb00: 20 3d 20 30 3b 20 69 20 3c 20 65 78 70 72 2e 70   = 0; i < expr.p
eb10: 72 6f 70 65 72 74 69 65 73 2e 6c 65 6e 67 74 68  roperties.length
eb20: 3b 20 69 2b 2b 29 20 7b 0a 20 20 09 20 20 20 20  ; i++) {.  .    
eb30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eb40: 74 68 69 73 24 31 2e 72 65 69 6e 74 65 72 70 72  this$1.reinterpr
eb50: 65 74 45 78 70 72 65 73 73 69 6f 6e 41 73 50 61  etExpressionAsPa
eb60: 74 74 65 72 6e 28 65 78 70 72 2e 70 72 6f 70 65  ttern(expr.prope
eb70: 72 74 69 65 73 5b 69 5d 2e 76 61 6c 75 65 29 3b  rties[i].value);
eb80: 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
eb90: 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20      }.  .       
eba0: 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0a           break;.
ebb0: 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 63    .            c
ebc0: 61 73 65 20 73 79 6e 74 61 78 5f 31 2e 53 79 6e  ase syntax_1.Syn
ebd0: 74 61 78 2e 41 73 73 69 67 6e 6d 65 6e 74 45 78  tax.AssignmentEx
ebe0: 70 72 65 73 73 69 6f 6e 3a 0a 20 20 09 20 20 20  pression:.  .   
ebf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 65 78 70               exp
ec00: 72 2e 74 79 70 65 20 3d 20 73 79 6e 74 61 78 5f  r.type = syntax_
ec10: 31 2e 53 79 6e 74 61 78 2e 41 73 73 69 67 6e 6d  1.Syntax.Assignm
ec20: 65 6e 74 50 61 74 74 65 72 6e 3b 0a 20 20 09 20  entPattern;.  . 
ec30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
ec40: 65 6c 65 74 65 20 65 78 70 72 2e 6f 70 65 72 61  elete expr.opera
ec50: 74 6f 72 3b 0a 20 20 09 20 20 20 20 20 20 20 20  tor;.  .        
ec60: 20 20 20 20 20 20 20 20 74 68 69 73 2e 72 65 69          this.rei
ec70: 6e 74 65 72 70 72 65 74 45 78 70 72 65 73 73 69  nterpretExpressi
ec80: 6f 6e 41 73 50 61 74 74 65 72 6e 28 65 78 70 72  onAsPattern(expr
ec90: 2e 6c 65 66 74 29 3b 0a 20 20 09 20 20 20 20 20  .left);.  .     
eca0: 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b             break
ecb0: 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
ecc0: 20 64 65 66 61 75 6c 74 3a 0a 20 20 09 20 20 20   default:.  .   
ecd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
ece0: 41 6c 6c 6f 77 20 6f 74 68 65 72 20 6e 6f 64 65  Allow other node
ecf0: 20 74 79 70 65 20 66 6f 72 20 74 6f 6c 65 72 61   type for tolera
ed00: 6e 74 20 70 61 72 73 69 6e 67 2e 0a 20 20 09 20  nt parsing..  . 
ed10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
ed20: 72 65 61 6b 3b 0a 20 20 09 20 20 20 20 20 20 20  reak;.  .       
ed30: 20 7d 0a 20 20 09 20 20 20 20 7d 3b 0a 20 20 09   }.  .    };.  .
ed40: 20 20 20 20 50 61 72 73 65 72 2e 70 72 6f 74 6f      Parser.proto
ed50: 74 79 70 65 2e 70 61 72 73 65 47 72 6f 75 70 45  type.parseGroupE
ed60: 78 70 72 65 73 73 69 6f 6e 20 3d 20 66 75 6e 63  xpression = func
ed70: 74 69 6f 6e 20 28 29 20 7b 0a 20 20 09 20 20 20  tion () {.  .   
ed80: 20 20 20 20 20 76 61 72 20 74 68 69 73 24 31 20       var this$1 
ed90: 3d 20 74 68 69 73 3b 0a 0a 20 20 09 20 20 20 20  = this;..  .    
eda0: 20 20 20 20 76 61 72 20 65 78 70 72 3b 0a 20 20      var expr;.  
edb0: 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 65 78  .        this.ex
edc0: 70 65 63 74 28 27 28 27 29 3b 0a 20 20 09 20 20  pect('(');.  .  
edd0: 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 6d        if (this.m
ede0: 61 74 63 68 28 27 29 27 29 29 20 7b 0a 20 20 09  atch(')')) {.  .
edf0: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
ee00: 2e 6e 65 78 74 54 6f 6b 65 6e 28 29 3b 0a 20 20  .nextToken();.  
ee10: 09 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
ee20: 28 21 74 68 69 73 2e 6d 61 74 63 68 28 27 3d 3e  (!this.match('=>
ee30: 27 29 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20  ')) {.  .       
ee40: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 65 78           this.ex
ee50: 70 65 63 74 28 27 3d 3e 27 29 3b 0a 20 20 09 20  pect('=>');.  . 
ee60: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09             }.  .
ee70: 20 20 20 20 20 20 20 20 20 20 20 20 65 78 70 72              expr
ee80: 20 3d 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20   = {.  .        
ee90: 20 20 20 20 20 20 20 20 74 79 70 65 3a 20 41 72          type: Ar
eea0: 72 6f 77 50 61 72 61 6d 65 74 65 72 50 6c 61 63  rowParameterPlac
eeb0: 65 48 6f 6c 64 65 72 2c 0a 20 20 09 20 20 20 20  eHolder,.  .    
eec0: 20 20 20 20 20 20 20 20 20 20 20 20 70 61 72 61              para
eed0: 6d 73 3a 20 5b 5d 0a 20 20 09 20 20 20 20 20 20  ms: [].  .      
eee0: 20 20 20 20 20 20 7d 3b 0a 20 20 09 20 20 20 20        };.  .    
eef0: 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20      }.  .       
ef00: 20 65 6c 73 65 20 7b 0a 20 20 09 20 20 20 20 20   else {.  .     
ef10: 20 20 20 20 20 20 20 76 61 72 20 73 74 61 72 74         var start
ef20: 54 6f 6b 65 6e 20 3d 20 74 68 69 73 2e 6c 6f 6f  Token = this.loo
ef30: 6b 61 68 65 61 64 3b 0a 20 20 09 20 20 20 20 20  kahead;.  .     
ef40: 20 20 20 20 20 20 20 76 61 72 20 70 61 72 61 6d         var param
ef50: 73 20 3d 20 5b 5d 3b 0a 20 20 09 20 20 20 20 20  s = [];.  .     
ef60: 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e         if (this.
ef70: 6d 61 74 63 68 28 27 2e 2e 2e 27 29 29 20 7b 0a  match('...')) {.
ef80: 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
ef90: 20 20 20 65 78 70 72 20 3d 20 74 68 69 73 2e 70     expr = this.p
efa0: 61 72 73 65 52 65 73 74 45 6c 65 6d 65 6e 74 28  arseRestElement(
efb0: 70 61 72 61 6d 73 29 3b 0a 20 20 09 20 20 20 20  params);.  .    
efc0: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
efd0: 2e 65 78 70 65 63 74 28 27 29 27 29 3b 0a 20 20  .expect(')');.  
efe0: 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
eff0: 20 69 66 20 28 21 74 68 69 73 2e 6d 61 74 63 68   if (!this.match
f000: 28 27 3d 3e 27 29 29 20 7b 0a 20 20 09 20 20 20  ('=>')) {.  .   
f010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f020: 20 74 68 69 73 2e 65 78 70 65 63 74 28 27 3d 3e   this.expect('=>
f030: 27 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ');.  .         
f040: 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20         }.  .    
f050: 20 20 20 20 20 20 20 20 20 20 20 20 65 78 70 72              expr
f060: 20 3d 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20   = {.  .        
f070: 20 20 20 20 20 20 20 20 20 20 20 20 74 79 70 65              type
f080: 3a 20 41 72 72 6f 77 50 61 72 61 6d 65 74 65 72  : ArrowParameter
f090: 50 6c 61 63 65 48 6f 6c 64 65 72 2c 0a 20 20 09  PlaceHolder,.  .
f0a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f0b0: 20 20 20 20 70 61 72 61 6d 73 3a 20 5b 65 78 70      params: [exp
f0c0: 72 5d 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  r].  .          
f0d0: 20 20 20 20 20 20 7d 3b 0a 20 20 09 20 20 20 20        };.  .    
f0e0: 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20          }.  .   
f0f0: 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 7b 0a           else {.
f100: 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
f110: 20 20 20 76 61 72 20 61 72 72 6f 77 20 3d 20 66     var arrow = f
f120: 61 6c 73 65 3b 0a 20 20 09 20 20 20 20 20 20 20  alse;.  .       
f130: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 6f           this.co
f140: 6e 74 65 78 74 2e 69 73 42 69 6e 64 69 6e 67 45  ntext.isBindingE
f150: 6c 65 6d 65 6e 74 20 3d 20 74 72 75 65 3b 0a 20  lement = true;. 
f160: 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
f170: 20 20 65 78 70 72 20 3d 20 74 68 69 73 2e 69 6e    expr = this.in
f180: 68 65 72 69 74 43 6f 76 65 72 47 72 61 6d 6d 61  heritCoverGramma
f190: 72 28 74 68 69 73 2e 70 61 72 73 65 41 73 73 69  r(this.parseAssi
f1a0: 67 6e 6d 65 6e 74 45 78 70 72 65 73 73 69 6f 6e  gnmentExpression
f1b0: 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  );.  .          
f1c0: 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 6d        if (this.m
f1d0: 61 74 63 68 28 27 2c 27 29 29 20 7b 0a 20 20 09  atch(',')) {.  .
f1e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f1f0: 20 20 20 20 76 61 72 20 65 78 70 72 65 73 73 69      var expressi
f200: 6f 6e 73 20 3d 20 5b 5d 3b 0a 20 20 09 20 20 20  ons = [];.  .   
f210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f220: 20 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e 69 73   this.context.is
f230: 41 73 73 69 67 6e 6d 65 6e 74 54 61 72 67 65 74  AssignmentTarget
f240: 20 3d 20 66 61 6c 73 65 3b 0a 20 20 09 20 20 20   = false;.  .   
f250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f260: 20 65 78 70 72 65 73 73 69 6f 6e 73 2e 70 75 73   expressions.pus
f270: 68 28 65 78 70 72 29 3b 0a 20 20 09 20 20 20 20  h(expr);.  .    
f280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f290: 77 68 69 6c 65 20 28 74 68 69 73 2e 73 74 61 72  while (this.star
f2a0: 74 4d 61 72 6b 65 72 2e 69 6e 64 65 78 20 3c 20  tMarker.index < 
f2b0: 74 68 69 73 2e 73 63 61 6e 6e 65 72 2e 6c 65 6e  this.scanner.len
f2c0: 67 74 68 29 20 7b 0a 20 20 09 20 20 20 20 20 20  gth) {.  .      
f2d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f2e0: 20 20 69 66 20 28 21 74 68 69 73 24 31 2e 6d 61    if (!this$1.ma
f2f0: 74 63 68 28 27 2c 27 29 29 20 7b 0a 20 20 09 20  tch(',')) {.  . 
f300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f310: 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b             break
f320: 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
f330: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20               }. 
f340: 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
f350: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 24 31            this$1
f360: 2e 6e 65 78 74 54 6f 6b 65 6e 28 29 3b 0a 20 20  .nextToken();.  
f370: 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f380: 20 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69           if (thi
f390: 73 24 31 2e 6d 61 74 63 68 28 27 2e 2e 2e 27 29  s$1.match('...')
f3a0: 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ) {.  .         
f3b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f3c0: 20 20 20 69 66 20 28 21 74 68 69 73 24 31 2e 63     if (!this$1.c
f3d0: 6f 6e 74 65 78 74 2e 69 73 42 69 6e 64 69 6e 67  ontext.isBinding
f3e0: 45 6c 65 6d 65 6e 74 29 20 7b 0a 20 20 09 20 20  Element) {.  .  
f3f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f400: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
f410: 69 73 24 31 2e 74 68 72 6f 77 55 6e 65 78 70 65  is$1.throwUnexpe
f420: 63 74 65 64 54 6f 6b 65 6e 28 74 68 69 73 24 31  ctedToken(this$1
f430: 2e 6c 6f 6f 6b 61 68 65 61 64 29 3b 0a 20 20 09  .lookahead);.  .
f440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f450: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20              }.  
f460: 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f470: 20 20 20 20 20 20 20 20 20 20 20 20 20 65 78 70               exp
f480: 72 65 73 73 69 6f 6e 73 2e 70 75 73 68 28 74 68  ressions.push(th
f490: 69 73 24 31 2e 70 61 72 73 65 52 65 73 74 45 6c  is$1.parseRestEl
f4a0: 65 6d 65 6e 74 28 70 61 72 61 6d 73 29 29 3b 0a  ement(params));.
f4b0: 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
f4c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
f4d0: 68 69 73 24 31 2e 65 78 70 65 63 74 28 27 29 27  his$1.expect(')'
f4e0: 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  );.  .          
f4f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f500: 20 20 69 66 20 28 21 74 68 69 73 24 31 2e 6d 61    if (!this$1.ma
f510: 74 63 68 28 27 3d 3e 27 29 29 20 7b 0a 20 20 09  tch('=>')) {.  .
f520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f540: 74 68 69 73 24 31 2e 65 78 70 65 63 74 28 27 3d  this$1.expect('=
f550: 3e 27 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  >');.  .        
f560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f570: 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20      }.  .       
f580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f590: 20 20 20 20 20 74 68 69 73 24 31 2e 63 6f 6e 74       this$1.cont
f5a0: 65 78 74 2e 69 73 42 69 6e 64 69 6e 67 45 6c 65  ext.isBindingEle
f5b0: 6d 65 6e 74 20 3d 20 66 61 6c 73 65 3b 0a 20 20  ment = false;.  
f5c0: 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f5d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72               for
f5e0: 20 28 76 61 72 20 69 20 3d 20 30 3b 20 69 20 3c   (var i = 0; i <
f5f0: 20 65 78 70 72 65 73 73 69 6f 6e 73 2e 6c 65 6e   expressions.len
f600: 67 74 68 3b 20 69 2b 2b 29 20 7b 0a 20 20 09 20  gth; i++) {.  . 
f610: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f620: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
f630: 68 69 73 24 31 2e 72 65 69 6e 74 65 72 70 72 65  his$1.reinterpre
f640: 74 45 78 70 72 65 73 73 69 6f 6e 41 73 50 61 74  tExpressionAsPat
f650: 74 65 72 6e 28 65 78 70 72 65 73 73 69 6f 6e 73  tern(expressions
f660: 5b 69 5d 29 3b 0a 20 20 09 20 20 20 20 20 20 20  [i]);.  .       
f670: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f680: 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20       }.  .      
f690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f6a0: 20 20 20 20 20 20 61 72 72 6f 77 20 3d 20 74 72        arrow = tr
f6b0: 75 65 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ue;.  .         
f6c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f6d0: 20 20 20 65 78 70 72 20 3d 20 7b 0a 20 20 09 20     expr = {.  . 
f6e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f6f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
f700: 79 70 65 3a 20 41 72 72 6f 77 50 61 72 61 6d 65  ype: ArrowParame
f710: 74 65 72 50 6c 61 63 65 48 6f 6c 64 65 72 2c 0a  terPlaceHolder,.
f720: 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
f730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f740: 20 20 20 70 61 72 61 6d 73 3a 20 65 78 70 72 65     params: expre
f750: 73 73 69 6f 6e 73 0a 20 20 09 20 20 20 20 20 20  ssions.  .      
f760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f770: 20 20 20 20 20 20 7d 3b 0a 20 20 09 20 20 20 20        };.  .    
f780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f790: 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20      }.  .       
f7a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f7b0: 20 65 6c 73 65 20 7b 0a 20 20 09 20 20 20 20 20   else {.  .     
f7c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f7d0: 20 20 20 20 20 20 20 65 78 70 72 65 73 73 69 6f         expressio
f7e0: 6e 73 2e 70 75 73 68 28 74 68 69 73 24 31 2e 69  ns.push(this$1.i
f7f0: 6e 68 65 72 69 74 43 6f 76 65 72 47 72 61 6d 6d  nheritCoverGramm
f800: 61 72 28 74 68 69 73 24 31 2e 70 61 72 73 65 41  ar(this$1.parseA
f810: 73 73 69 67 6e 6d 65 6e 74 45 78 70 72 65 73 73  ssignmentExpress
f820: 69 6f 6e 29 29 3b 0a 20 20 09 20 20 20 20 20 20  ion));.  .      
f830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f840: 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20    }.  .         
f850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
f860: 66 20 28 61 72 72 6f 77 29 20 7b 0a 20 20 09 20  f (arrow) {.  . 
f870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f880: 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b             break
f890: 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
f8a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20               }. 
f8b0: 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
f8c0: 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20        }.  .     
f8d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
f8e0: 66 20 28 21 61 72 72 6f 77 29 20 7b 0a 20 20 09  f (!arrow) {.  .
f8f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f900: 20 20 20 20 20 20 20 20 65 78 70 72 20 3d 20 74          expr = t
f910: 68 69 73 2e 66 69 6e 61 6c 69 7a 65 28 74 68 69  his.finalize(thi
f920: 73 2e 73 74 61 72 74 4e 6f 64 65 28 73 74 61 72  s.startNode(star
f930: 74 54 6f 6b 65 6e 29 2c 20 6e 65 77 20 4e 6f 64  tToken), new Nod
f940: 65 2e 53 65 71 75 65 6e 63 65 45 78 70 72 65 73  e.SequenceExpres
f950: 73 69 6f 6e 28 65 78 70 72 65 73 73 69 6f 6e 73  sion(expressions
f960: 29 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ));.  .         
f970: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09             }.  .
f980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f990: 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  }.  .           
f9a0: 20 20 20 20 20 69 66 20 28 21 61 72 72 6f 77 29       if (!arrow)
f9b0: 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   {.  .          
f9c0: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 65            this.e
f9d0: 78 70 65 63 74 28 27 29 27 29 3b 0a 20 20 09 20  xpect(')');.  . 
f9e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f9f0: 20 20 20 69 66 20 28 74 68 69 73 2e 6d 61 74 63     if (this.matc
fa00: 68 28 27 3d 3e 27 29 29 20 7b 0a 20 20 09 20 20  h('=>')) {.  .  
fa10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fa20: 20 20 20 20 20 20 69 66 20 28 65 78 70 72 2e 74        if (expr.t
fa30: 79 70 65 20 3d 3d 3d 20 73 79 6e 74 61 78 5f 31  ype === syntax_1
fa40: 2e 53 79 6e 74 61 78 2e 49 64 65 6e 74 69 66 69  .Syntax.Identifi
fa50: 65 72 20 26 26 20 65 78 70 72 2e 6e 61 6d 65 20  er && expr.name 
fa60: 3d 3d 3d 20 27 79 69 65 6c 64 27 29 20 7b 0a 20  === 'yield') {. 
fa70: 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
fa80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 72                ar
fa90: 72 6f 77 20 3d 20 74 72 75 65 3b 0a 20 20 09 20  row = true;.  . 
faa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fab0: 20 20 20 20 20 20 20 20 20 20 20 65 78 70 72 20             expr 
fac0: 3d 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20  = {.  .         
fad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fae0: 20 20 20 20 20 20 20 74 79 70 65 3a 20 41 72 72         type: Arr
faf0: 6f 77 50 61 72 61 6d 65 74 65 72 50 6c 61 63 65  owParameterPlace
fb00: 48 6f 6c 64 65 72 2c 0a 20 20 09 20 20 20 20 20  Holder,.  .     
fb10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fb20: 20 20 20 20 20 20 20 20 20 20 20 70 61 72 61 6d             param
fb30: 73 3a 20 5b 65 78 70 72 5d 0a 20 20 09 20 20 20  s: [expr].  .   
fb40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fb50: 20 20 20 20 20 20 20 20 20 7d 3b 0a 20 20 09 20           };.  . 
fb60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fb70: 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20         }.  .    
fb80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fb90: 20 20 20 20 69 66 20 28 21 61 72 72 6f 77 29 20      if (!arrow) 
fba0: 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  {.  .           
fbb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fbc0: 20 69 66 20 28 21 74 68 69 73 2e 63 6f 6e 74 65   if (!this.conte
fbd0: 78 74 2e 69 73 42 69 6e 64 69 6e 67 45 6c 65 6d  xt.isBindingElem
fbe0: 65 6e 74 29 20 7b 0a 20 20 09 20 20 20 20 20 20  ent) {.  .      
fbf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fc00: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 74            this.t
fc10: 68 72 6f 77 55 6e 65 78 70 65 63 74 65 64 54 6f  hrowUnexpectedTo
fc20: 6b 65 6e 28 74 68 69 73 2e 6c 6f 6f 6b 61 68 65  ken(this.lookahe
fc30: 61 64 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  ad);.  .        
fc40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fc50: 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20      }.  .       
fc60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fc70: 20 20 20 20 20 69 66 20 28 65 78 70 72 2e 74 79       if (expr.ty
fc80: 70 65 20 3d 3d 3d 20 73 79 6e 74 61 78 5f 31 2e  pe === syntax_1.
fc90: 53 79 6e 74 61 78 2e 53 65 71 75 65 6e 63 65 45  Syntax.SequenceE
fca0: 78 70 72 65 73 73 69 6f 6e 29 20 7b 0a 20 20 09  xpression) {.  .
fcb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fcc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fcd0: 66 6f 72 20 28 76 61 72 20 69 20 3d 20 30 3b 20  for (var i = 0; 
fce0: 69 20 3c 20 65 78 70 72 2e 65 78 70 72 65 73 73  i < expr.express
fcf0: 69 6f 6e 73 2e 6c 65 6e 67 74 68 3b 20 69 2b 2b  ions.length; i++
fd00: 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ) {.  .         
fd10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fd20: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 24             this$
fd30: 31 2e 72 65 69 6e 74 65 72 70 72 65 74 45 78 70  1.reinterpretExp
fd40: 72 65 73 73 69 6f 6e 41 73 50 61 74 74 65 72 6e  ressionAsPattern
fd50: 28 65 78 70 72 2e 65 78 70 72 65 73 73 69 6f 6e  (expr.expression
fd60: 73 5b 69 5d 29 3b 0a 20 20 09 20 20 20 20 20 20  s[i]);.  .      
fd70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fd80: 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20            }.  . 
fd90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fda0: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09             }.  .
fdb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fdc0: 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
fdd0: 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   {.  .          
fde0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fdf0: 20 20 20 20 20 20 74 68 69 73 2e 72 65 69 6e 74        this.reint
fe00: 65 72 70 72 65 74 45 78 70 72 65 73 73 69 6f 6e  erpretExpression
fe10: 41 73 50 61 74 74 65 72 6e 28 65 78 70 72 29 3b  AsPattern(expr);
fe20: 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
fe30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fe40: 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  }.  .           
fe50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fe60: 20 76 61 72 20 70 61 72 61 6d 73 5f 31 20 3d 20   var params_1 = 
fe70: 28 65 78 70 72 2e 74 79 70 65 20 3d 3d 3d 20 73  (expr.type === s
fe80: 79 6e 74 61 78 5f 31 2e 53 79 6e 74 61 78 2e 53  yntax_1.Syntax.S
fe90: 65 71 75 65 6e 63 65 45 78 70 72 65 73 73 69 6f  equenceExpressio
fea0: 6e 20 3f 20 65 78 70 72 2e 65 78 70 72 65 73 73  n ? expr.express
feb0: 69 6f 6e 73 20 3a 20 5b 65 78 70 72 5d 29 3b 0a  ions : [expr]);.
fec0: 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
fed0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
fee0: 78 70 72 20 3d 20 7b 0a 20 20 09 20 20 20 20 20  xpr = {.  .     
fef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ff00: 20 20 20 20 20 20 20 20 20 20 20 74 79 70 65 3a             type:
ff10: 20 41 72 72 6f 77 50 61 72 61 6d 65 74 65 72 50   ArrowParameterP
ff20: 6c 61 63 65 48 6f 6c 64 65 72 2c 0a 20 20 09 20  laceHolder,.  . 
ff30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ff40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
ff50: 61 72 61 6d 73 3a 20 70 61 72 61 6d 73 5f 31 0a  arams: params_1.
ff60: 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
ff70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
ff80: 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
ff90: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20               }. 
ffa0: 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
ffb0: 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20        }.  .     
ffc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
ffd0: 68 69 73 2e 63 6f 6e 74 65 78 74 2e 69 73 42 69  his.context.isBi
ffe0: 6e 64 69 6e 67 45 6c 65 6d 65 6e 74 20 3d 20 66  ndingElement = f
fff0: 61 6c 73 65 3b 0a 20 20 09 20 20 20 20 20 20 20  alse;.  .       
10000 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20           }.  .  
10010 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20            }.  . 
10020 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20         }.  .    
10030 20 20 20 20 72 65 74 75 72 6e 20 65 78 70 72 3b      return expr;
10040 0a 20 20 09 20 20 20 20 7d 3b 0a 20 20 09 20 20  .  .    };.  .  
10050 20 20 2f 2f 20 45 43 4d 41 2d 32 36 32 20 31 32    // ECMA-262 12
10060 2e 33 20 4c 65 66 74 2d 48 61 6e 64 2d 53 69 64  .3 Left-Hand-Sid
10070 65 20 45 78 70 72 65 73 73 69 6f 6e 73 0a 20 20  e Expressions.  
10080 09 20 20 20 20 50 61 72 73 65 72 2e 70 72 6f 74  .    Parser.prot
10090 6f 74 79 70 65 2e 70 61 72 73 65 41 72 67 75 6d  otype.parseArgum
100a0 65 6e 74 73 20 3d 20 66 75 6e 63 74 69 6f 6e 20  ents = function 
100b0 28 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20  () {.  .        
100c0 76 61 72 20 74 68 69 73 24 31 20 3d 20 74 68 69  var this$1 = thi
100d0 73 3b 0a 0a 20 20 09 20 20 20 20 20 20 20 20 74  s;..  .        t
100e0 68 69 73 2e 65 78 70 65 63 74 28 27 28 27 29 3b  his.expect('(');
100f0 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20  .  .        var 
10100 61 72 67 73 20 3d 20 5b 5d 3b 0a 20 20 09 20 20  args = [];.  .  
10110 20 20 20 20 20 20 69 66 20 28 21 74 68 69 73 2e        if (!this.
10120 6d 61 74 63 68 28 27 29 27 29 29 20 7b 0a 20 20  match(')')) {.  
10130 09 20 20 20 20 20 20 20 20 20 20 20 20 77 68 69  .            whi
10140 6c 65 20 28 74 72 75 65 29 20 7b 0a 20 20 09 20  le (true) {.  . 
10150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76                 v
10160 61 72 20 65 78 70 72 20 3d 20 74 68 69 73 24 31  ar expr = this$1
10170 2e 6d 61 74 63 68 28 27 2e 2e 2e 27 29 20 3f 20  .match('...') ? 
10180 74 68 69 73 24 31 2e 70 61 72 73 65 53 70 72 65  this$1.parseSpre
10190 61 64 45 6c 65 6d 65 6e 74 28 29 20 3a 0a 20 20  adElement() :.  
101a0 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
101b0 20 20 20 20 20 74 68 69 73 24 31 2e 69 73 6f 6c       this$1.isol
101c0 61 74 65 43 6f 76 65 72 47 72 61 6d 6d 61 72 28  ateCoverGrammar(
101d0 74 68 69 73 24 31 2e 70 61 72 73 65 41 73 73 69  this$1.parseAssi
101e0 67 6e 6d 65 6e 74 45 78 70 72 65 73 73 69 6f 6e  gnmentExpression
101f0 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  );.  .          
10200 20 20 20 20 20 20 61 72 67 73 2e 70 75 73 68 28        args.push(
10210 65 78 70 72 29 3b 0a 20 20 09 20 20 20 20 20 20  expr);.  .      
10220 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74 68            if (th
10230 69 73 24 31 2e 6d 61 74 63 68 28 27 29 27 29 29  is$1.match(')'))
10240 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   {.  .          
10250 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b            break;
10260 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
10270 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20      }.  .       
10280 20 20 20 20 20 20 20 20 20 74 68 69 73 24 31 2e           this$1.
10290 65 78 70 65 63 74 43 6f 6d 6d 61 53 65 70 61 72  expectCommaSepar
102a0 61 74 6f 72 28 29 3b 0a 20 20 09 20 20 20 20 20  ator();.  .     
102b0 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20         }.  .    
102c0 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20      }.  .       
102d0 20 74 68 69 73 2e 65 78 70 65 63 74 28 27 29 27   this.expect(')'
102e0 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 72 65  );.  .        re
102f0 74 75 72 6e 20 61 72 67 73 3b 0a 20 20 09 20 20  turn args;.  .  
10300 20 20 7d 3b 0a 20 20 09 20 20 20 20 50 61 72 73    };.  .    Pars
10310 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 69 73 49  er.prototype.isI
10320 64 65 6e 74 69 66 69 65 72 4e 61 6d 65 20 3d 20  dentifierName = 
10330 66 75 6e 63 74 69 6f 6e 20 28 74 6f 6b 65 6e 29  function (token)
10340 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 72 65   {.  .        re
10350 74 75 72 6e 20 74 6f 6b 65 6e 2e 74 79 70 65 20  turn token.type 
10360 3d 3d 3d 20 74 6f 6b 65 6e 5f 31 2e 54 6f 6b 65  === token_1.Toke
10370 6e 2e 49 64 65 6e 74 69 66 69 65 72 20 7c 7c 0a  n.Identifier ||.
10380 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 74    .            t
10390 6f 6b 65 6e 2e 74 79 70 65 20 3d 3d 3d 20 74 6f  oken.type === to
103a0 6b 65 6e 5f 31 2e 54 6f 6b 65 6e 2e 4b 65 79 77  ken_1.Token.Keyw
103b0 6f 72 64 20 7c 7c 0a 20 20 09 20 20 20 20 20 20  ord ||.  .      
103c0 20 20 20 20 20 20 74 6f 6b 65 6e 2e 74 79 70 65        token.type
103d0 20 3d 3d 3d 20 74 6f 6b 65 6e 5f 31 2e 54 6f 6b   === token_1.Tok
103e0 65 6e 2e 42 6f 6f 6c 65 61 6e 4c 69 74 65 72 61  en.BooleanLitera
103f0 6c 20 7c 7c 0a 20 20 09 20 20 20 20 20 20 20 20  l ||.  .        
10400 20 20 20 20 74 6f 6b 65 6e 2e 74 79 70 65 20 3d      token.type =
10410 3d 3d 20 74 6f 6b 65 6e 5f 31 2e 54 6f 6b 65 6e  == token_1.Token
10420 2e 4e 75 6c 6c 4c 69 74 65 72 61 6c 3b 0a 20 20  .NullLiteral;.  
10430 09 20 20 20 20 7d 3b 0a 20 20 09 20 20 20 20 50  .    };.  .    P
10440 61 72 73 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e  arser.prototype.
10450 70 61 72 73 65 49 64 65 6e 74 69 66 69 65 72 4e  parseIdentifierN
10460 61 6d 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28  ame = function (
10470 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 76  ) {.  .        v
10480 61 72 20 6e 6f 64 65 20 3d 20 74 68 69 73 2e 63  ar node = this.c
10490 72 65 61 74 65 4e 6f 64 65 28 29 3b 0a 20 20 09  reateNode();.  .
104a0 20 20 20 20 20 20 20 20 76 61 72 20 74 6f 6b 65          var toke
104b0 6e 20 3d 20 74 68 69 73 2e 6e 65 78 74 54 6f 6b  n = this.nextTok
104c0 65 6e 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20  en();.  .       
104d0 20 69 66 20 28 21 74 68 69 73 2e 69 73 49 64 65   if (!this.isIde
104e0 6e 74 69 66 69 65 72 4e 61 6d 65 28 74 6f 6b 65  ntifierName(toke
104f0 6e 29 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20  n)) {.  .       
10500 20 20 20 20 20 74 68 69 73 2e 74 68 72 6f 77 55       this.throwU
10510 6e 65 78 70 65 63 74 65 64 54 6f 6b 65 6e 28 74  nexpectedToken(t
10520 6f 6b 65 6e 29 3b 0a 20 20 09 20 20 20 20 20 20  oken);.  .      
10530 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 72    }.  .        r
10540 65 74 75 72 6e 20 74 68 69 73 2e 66 69 6e 61 6c  eturn this.final
10550 69 7a 65 28 6e 6f 64 65 2c 20 6e 65 77 20 4e 6f  ize(node, new No
10560 64 65 2e 49 64 65 6e 74 69 66 69 65 72 28 74 6f  de.Identifier(to
10570 6b 65 6e 2e 76 61 6c 75 65 29 29 3b 0a 20 20 09  ken.value));.  .
10580 20 20 20 20 7d 3b 0a 20 20 09 20 20 20 20 50 61      };.  .    Pa
10590 72 73 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 70  rser.prototype.p
105a0 61 72 73 65 4e 65 77 45 78 70 72 65 73 73 69 6f  arseNewExpressio
105b0 6e 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20  n = function () 
105c0 7b 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72  {.  .        var
105d0 20 6e 6f 64 65 20 3d 20 74 68 69 73 2e 63 72 65   node = this.cre
105e0 61 74 65 4e 6f 64 65 28 29 3b 0a 20 20 09 20 20  ateNode();.  .  
105f0 20 20 20 20 20 20 76 61 72 20 69 64 20 3d 20 74        var id = t
10600 68 69 73 2e 70 61 72 73 65 49 64 65 6e 74 69 66  his.parseIdentif
10610 69 65 72 4e 61 6d 65 28 29 3b 0a 20 20 09 20 20  ierName();.  .  
10620 20 20 20 20 20 20 61 73 73 65 72 74 5f 31 2e 61        assert_1.a
10630 73 73 65 72 74 28 69 64 2e 6e 61 6d 65 20 3d 3d  ssert(id.name ==
10640 3d 20 27 6e 65 77 27 2c 20 27 4e 65 77 20 65 78  = 'new', 'New ex
10650 70 72 65 73 73 69 6f 6e 20 6d 75 73 74 20 73 74  pression must st
10660 61 72 74 20 77 69 74 68 20 60 6e 65 77 60 27 29  art with `new`')
10670 3b 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72  ;.  .        var
10680 20 65 78 70 72 3b 0a 20 20 09 20 20 20 20 20 20   expr;.  .      
10690 20 20 69 66 20 28 74 68 69 73 2e 6d 61 74 63 68    if (this.match
106a0 28 27 2e 27 29 29 20 7b 0a 20 20 09 20 20 20 20  ('.')) {.  .    
106b0 20 20 20 20 20 20 20 20 74 68 69 73 2e 6e 65 78          this.nex
106c0 74 54 6f 6b 65 6e 28 29 3b 0a 20 20 09 20 20 20  tToken();.  .   
106d0 20 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69           if (thi
106e0 73 2e 6c 6f 6f 6b 61 68 65 61 64 2e 74 79 70 65  s.lookahead.type
106f0 20 3d 3d 3d 20 74 6f 6b 65 6e 5f 31 2e 54 6f 6b   === token_1.Tok
10700 65 6e 2e 49 64 65 6e 74 69 66 69 65 72 20 26 26  en.Identifier &&
10710 20 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e 69 6e   this.context.in
10720 46 75 6e 63 74 69 6f 6e 42 6f 64 79 20 26 26 20  FunctionBody && 
10730 74 68 69 73 2e 6c 6f 6f 6b 61 68 65 61 64 2e 76  this.lookahead.v
10740 61 6c 75 65 20 3d 3d 3d 20 27 74 61 72 67 65 74  alue === 'target
10750 27 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20  ') {.  .        
10760 20 20 20 20 20 20 20 20 76 61 72 20 70 72 6f 70          var prop
10770 65 72 74 79 20 3d 20 74 68 69 73 2e 70 61 72 73  erty = this.pars
10780 65 49 64 65 6e 74 69 66 69 65 72 4e 61 6d 65 28  eIdentifierName(
10790 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  );.  .          
107a0 20 20 20 20 20 20 65 78 70 72 20 3d 20 6e 65 77        expr = new
107b0 20 4e 6f 64 65 2e 4d 65 74 61 50 72 6f 70 65 72   Node.MetaProper
107c0 74 79 28 69 64 2c 20 70 72 6f 70 65 72 74 79 29  ty(id, property)
107d0 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
107e0 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   }.  .          
107f0 20 20 65 6c 73 65 20 7b 0a 20 20 09 20 20 20 20    else {.  .    
10800 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
10810 2e 74 68 72 6f 77 55 6e 65 78 70 65 63 74 65 64  .throwUnexpected
10820 54 6f 6b 65 6e 28 74 68 69 73 2e 6c 6f 6f 6b 61  Token(this.looka
10830 68 65 61 64 29 3b 0a 20 20 09 20 20 20 20 20 20  head);.  .      
10840 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20        }.  .     
10850 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20     }.  .        
10860 65 6c 73 65 20 7b 0a 20 20 09 20 20 20 20 20 20  else {.  .      
10870 20 20 20 20 20 20 76 61 72 20 63 61 6c 6c 65 65        var callee
10880 20 3d 20 74 68 69 73 2e 69 73 6f 6c 61 74 65 43   = this.isolateC
10890 6f 76 65 72 47 72 61 6d 6d 61 72 28 74 68 69 73  overGrammar(this
108a0 2e 70 61 72 73 65 4c 65 66 74 48 61 6e 64 53 69  .parseLeftHandSi
108b0 64 65 45 78 70 72 65 73 73 69 6f 6e 29 3b 0a 20  deExpression);. 
108c0 20 09 20 20 20 20 20 20 20 20 20 20 20 20 76 61   .            va
108d0 72 20 61 72 67 73 20 3d 20 74 68 69 73 2e 6d 61  r args = this.ma
108e0 74 63 68 28 27 28 27 29 20 3f 20 74 68 69 73 2e  tch('(') ? this.
108f0 70 61 72 73 65 41 72 67 75 6d 65 6e 74 73 28 29  parseArguments()
10900 20 3a 20 5b 5d 3b 0a 20 20 09 20 20 20 20 20 20   : [];.  .      
10910 20 20 20 20 20 20 65 78 70 72 20 3d 20 6e 65 77        expr = new
10920 20 4e 6f 64 65 2e 4e 65 77 45 78 70 72 65 73 73   Node.NewExpress
10930 69 6f 6e 28 63 61 6c 6c 65 65 2c 20 61 72 67 73  ion(callee, args
10940 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  );.  .          
10950 20 20 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e 69    this.context.i
10960 73 41 73 73 69 67 6e 6d 65 6e 74 54 61 72 67 65  sAssignmentTarge
10970 74 20 3d 20 66 61 6c 73 65 3b 0a 20 20 09 20 20  t = false;.  .  
10980 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 63            this.c
10990 6f 6e 74 65 78 74 2e 69 73 42 69 6e 64 69 6e 67  ontext.isBinding
109a0 45 6c 65 6d 65 6e 74 20 3d 20 66 61 6c 73 65 3b  Element = false;
109b0 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a 20 20  .  .        }.  
109c0 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
109d0 74 68 69 73 2e 66 69 6e 61 6c 69 7a 65 28 6e 6f  this.finalize(no
109e0 64 65 2c 20 65 78 70 72 29 3b 0a 20 20 09 20 20  de, expr);.  .  
109f0 20 20 7d 3b 0a 20 20 09 20 20 20 20 50 61 72 73    };.  .    Pars
10a00 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 70 61 72  er.prototype.par
10a10 73 65 4c 65 66 74 48 61 6e 64 53 69 64 65 45 78  seLeftHandSideEx
10a20 70 72 65 73 73 69 6f 6e 41 6c 6c 6f 77 43 61 6c  pressionAllowCal
10a30 6c 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20  l = function () 
10a40 7b 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72  {.  .        var
10a50 20 74 68 69 73 24 31 20 3d 20 74 68 69 73 3b 0a   this$1 = this;.
10a60 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20  .  .        var 
10a70 73 74 61 72 74 54 6f 6b 65 6e 20 3d 20 74 68 69  startToken = thi
10a80 73 2e 6c 6f 6f 6b 61 68 65 61 64 3b 0a 20 20 09  s.lookahead;.  .
10a90 20 20 20 20 20 20 20 20 76 61 72 20 70 72 65 76          var prev
10aa0 69 6f 75 73 41 6c 6c 6f 77 49 6e 20 3d 20 74 68  iousAllowIn = th
10ab0 69 73 2e 63 6f 6e 74 65 78 74 2e 61 6c 6c 6f 77  is.context.allow
10ac0 49 6e 3b 0a 20 20 09 20 20 20 20 20 20 20 20 74  In;.  .        t
10ad0 68 69 73 2e 63 6f 6e 74 65 78 74 2e 61 6c 6c 6f  his.context.allo
10ae0 77 49 6e 20 3d 20 74 72 75 65 3b 0a 20 20 09 20  wIn = true;.  . 
10af0 20 20 20 20 20 20 20 76 61 72 20 65 78 70 72 3b         var expr;
10b00 0a 20 20 09 20 20 20 20 20 20 20 20 69 66 20 28  .  .        if (
10b10 74 68 69 73 2e 6d 61 74 63 68 4b 65 79 77 6f 72  this.matchKeywor
10b20 64 28 27 73 75 70 65 72 27 29 20 26 26 20 74 68  d('super') && th
10b30 69 73 2e 63 6f 6e 74 65 78 74 2e 69 6e 46 75 6e  is.context.inFun
10b40 63 74 69 6f 6e 42 6f 64 79 29 20 7b 0a 20 20 09  ctionBody) {.  .
10b50 20 20 20 20 20 20 20 20 20 20 20 20 65 78 70 72              expr
10b60 20 3d 20 74 68 69 73 2e 63 72 65 61 74 65 4e 6f   = this.createNo
10b70 64 65 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20  de();.  .       
10b80 20 20 20 20 20 74 68 69 73 2e 6e 65 78 74 54 6f       this.nextTo
10b90 6b 65 6e 28 29 3b 0a 20 20 09 20 20 20 20 20 20  ken();.  .      
10ba0 20 20 20 20 20 20 65 78 70 72 20 3d 20 74 68 69        expr = thi
10bb0 73 2e 66 69 6e 61 6c 69 7a 65 28 65 78 70 72 2c  s.finalize(expr,
10bc0 20 6e 65 77 20 4e 6f 64 65 2e 53 75 70 65 72 28   new Node.Super(
10bd0 29 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ));.  .         
10be0 20 20 20 69 66 20 28 21 74 68 69 73 2e 6d 61 74     if (!this.mat
10bf0 63 68 28 27 28 27 29 20 26 26 20 21 74 68 69 73  ch('(') && !this
10c00 2e 6d 61 74 63 68 28 27 2e 27 29 20 26 26 20 21  .match('.') && !
10c10 74 68 69 73 2e 6d 61 74 63 68 28 27 5b 27 29 29  this.match('['))
10c20 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   {.  .          
10c30 20 20 20 20 20 20 74 68 69 73 2e 74 68 72 6f 77        this.throw
10c40 55 6e 65 78 70 65 63 74 65 64 54 6f 6b 65 6e 28  UnexpectedToken(
10c50 74 68 69 73 2e 6c 6f 6f 6b 61 68 65 61 64 29 3b  this.lookahead);
10c60 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
10c70 7d 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a 20  }.  .        }. 
10c80 20 09 20 20 20 20 20 20 20 20 65 6c 73 65 20 7b   .        else {
10c90 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
10ca0 65 78 70 72 20 3d 20 74 68 69 73 2e 69 6e 68 65  expr = this.inhe
10cb0 72 69 74 43 6f 76 65 72 47 72 61 6d 6d 61 72 28  ritCoverGrammar(
10cc0 74 68 69 73 2e 6d 61 74 63 68 4b 65 79 77 6f 72  this.matchKeywor
10cd0 64 28 27 6e 65 77 27 29 20 3f 20 74 68 69 73 2e  d('new') ? this.
10ce0 70 61 72 73 65 4e 65 77 45 78 70 72 65 73 73 69  parseNewExpressi
10cf0 6f 6e 20 3a 20 74 68 69 73 2e 70 61 72 73 65 50  on : this.parseP
10d00 72 69 6d 61 72 79 45 78 70 72 65 73 73 69 6f 6e  rimaryExpression
10d10 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a  );.  .        }.
10d20 20 20 09 20 20 20 20 20 20 20 20 77 68 69 6c 65    .        while
10d30 20 28 74 72 75 65 29 20 7b 0a 20 20 09 20 20 20   (true) {.  .   
10d40 20 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69           if (thi
10d50 73 24 31 2e 6d 61 74 63 68 28 27 2e 27 29 29 20  s$1.match('.')) 
10d60 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  {.  .           
10d70 20 20 20 20 20 74 68 69 73 24 31 2e 63 6f 6e 74       this$1.cont
10d80 65 78 74 2e 69 73 42 69 6e 64 69 6e 67 45 6c 65  ext.isBindingEle
10d90 6d 65 6e 74 20 3d 20 66 61 6c 73 65 3b 0a 20 20  ment = false;.  
10da0 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10db0 20 74 68 69 73 24 31 2e 63 6f 6e 74 65 78 74 2e   this$1.context.
10dc0 69 73 41 73 73 69 67 6e 6d 65 6e 74 54 61 72 67  isAssignmentTarg
10dd0 65 74 20 3d 20 74 72 75 65 3b 0a 20 20 09 20 20  et = true;.  .  
10de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
10df0 69 73 24 31 2e 65 78 70 65 63 74 28 27 2e 27 29  is$1.expect('.')
10e00 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
10e10 20 20 20 20 20 76 61 72 20 70 72 6f 70 65 72 74       var propert
10e20 79 20 3d 20 74 68 69 73 24 31 2e 70 61 72 73 65  y = this$1.parse
10e30 49 64 65 6e 74 69 66 69 65 72 4e 61 6d 65 28 29  IdentifierName()
10e40 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
10e50 20 20 20 20 20 65 78 70 72 20 3d 20 74 68 69 73       expr = this
10e60 24 31 2e 66 69 6e 61 6c 69 7a 65 28 74 68 69 73  $1.finalize(this
10e70 24 31 2e 73 74 61 72 74 4e 6f 64 65 28 73 74 61  $1.startNode(sta
10e80 72 74 54 6f 6b 65 6e 29 2c 20 6e 65 77 20 4e 6f  rtToken), new No
10e90 64 65 2e 53 74 61 74 69 63 4d 65 6d 62 65 72 45  de.StaticMemberE
10ea0 78 70 72 65 73 73 69 6f 6e 28 65 78 70 72 2c 20  xpression(expr, 
10eb0 70 72 6f 70 65 72 74 79 29 29 3b 0a 20 20 09 20  property));.  . 
10ec0 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09             }.  .
10ed0 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
10ee0 20 69 66 20 28 74 68 69 73 24 31 2e 6d 61 74 63   if (this$1.matc
10ef0 68 28 27 28 27 29 29 20 7b 0a 20 20 09 20 20 20  h('(')) {.  .   
10f00 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
10f10 73 24 31 2e 63 6f 6e 74 65 78 74 2e 69 73 42 69  s$1.context.isBi
10f20 6e 64 69 6e 67 45 6c 65 6d 65 6e 74 20 3d 20 66  ndingElement = f
10f30 61 6c 73 65 3b 0a 20 20 09 20 20 20 20 20 20 20  alse;.  .       
10f40 20 20 20 20 20 20 20 20 20 74 68 69 73 24 31 2e           this$1.
10f50 63 6f 6e 74 65 78 74 2e 69 73 41 73 73 69 67 6e  context.isAssign
10f60 6d 65 6e 74 54 61 72 67 65 74 20 3d 20 66 61 6c  mentTarget = fal
10f70 73 65 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  se;.  .         
10f80 20 20 20 20 20 20 20 76 61 72 20 61 72 67 73 20         var args 
10f90 3d 20 74 68 69 73 24 31 2e 70 61 72 73 65 41 72  = this$1.parseAr
10fa0 67 75 6d 65 6e 74 73 28 29 3b 0a 20 20 09 20 20  guments();.  .  
10fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 78                ex
10fc0 70 72 20 3d 20 74 68 69 73 24 31 2e 66 69 6e 61  pr = this$1.fina
10fd0 6c 69 7a 65 28 74 68 69 73 24 31 2e 73 74 61 72  lize(this$1.star
10fe0 74 4e 6f 64 65 28 73 74 61 72 74 54 6f 6b 65 6e  tNode(startToken
10ff0 29 2c 20 6e 65 77 20 4e 6f 64 65 2e 43 61 6c 6c  ), new Node.Call
11000 45 78 70 72 65 73 73 69 6f 6e 28 65 78 70 72 2c  Expression(expr,
11010 20 61 72 67 73 29 29 3b 0a 20 20 09 20 20 20 20   args));.  .    
11020 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20          }.  .   
11030 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66           else if
11040 20 28 74 68 69 73 24 31 2e 6d 61 74 63 68 28 27   (this$1.match('
11050 5b 27 29 29 20 7b 0a 20 20 09 20 20 20 20 20 20  [')) {.  .      
11060 20 20 20 20 20 20 20 20 20 20 74 68 69 73 24 31            this$1
11070 2e 63 6f 6e 74 65 78 74 2e 69 73 42 69 6e 64 69  .context.isBindi
11080 6e 67 45 6c 65 6d 65 6e 74 20 3d 20 66 61 6c 73  ngElement = fals
11090 65 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  e;.  .          
110a0 20 20 20 20 20 20 74 68 69 73 24 31 2e 63 6f 6e        this$1.con
110b0 74 65 78 74 2e 69 73 41 73 73 69 67 6e 6d 65 6e  text.isAssignmen
110c0 74 54 61 72 67 65 74 20 3d 20 74 72 75 65 3b 0a  tTarget = true;.
110d0 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
110e0 20 20 20 74 68 69 73 24 31 2e 65 78 70 65 63 74     this$1.expect
110f0 28 27 5b 27 29 3b 0a 20 20 09 20 20 20 20 20 20  ('[');.  .      
11100 20 20 20 20 20 20 20 20 20 20 76 61 72 20 70 72            var pr
11110 6f 70 65 72 74 79 20 3d 20 74 68 69 73 24 31 2e  operty = this$1.
11120 69 73 6f 6c 61 74 65 43 6f 76 65 72 47 72 61 6d  isolateCoverGram
11130 6d 61 72 28 74 68 69 73 24 31 2e 70 61 72 73 65  mar(this$1.parse
11140 45 78 70 72 65 73 73 69 6f 6e 29 3b 0a 20 20 09  Expression);.  .
11150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11160 74 68 69 73 24 31 2e 65 78 70 65 63 74 28 27 5d  this$1.expect(']
11170 27 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ');.  .         
11180 20 20 20 20 20 20 20 65 78 70 72 20 3d 20 74 68         expr = th
11190 69 73 24 31 2e 66 69 6e 61 6c 69 7a 65 28 74 68  is$1.finalize(th
111a0 69 73 24 31 2e 73 74 61 72 74 4e 6f 64 65 28 73  is$1.startNode(s
111b0 74 61 72 74 54 6f 6b 65 6e 29 2c 20 6e 65 77 20  tartToken), new 
111c0 4e 6f 64 65 2e 43 6f 6d 70 75 74 65 64 4d 65 6d  Node.ComputedMem
111d0 62 65 72 45 78 70 72 65 73 73 69 6f 6e 28 65 78  berExpression(ex
111e0 70 72 2c 20 70 72 6f 70 65 72 74 79 29 29 3b 0a  pr, property));.
111f0 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 7d    .            }
11200 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
11210 65 6c 73 65 20 69 66 20 28 74 68 69 73 24 31 2e  else if (this$1.
11220 6c 6f 6f 6b 61 68 65 61 64 2e 74 79 70 65 20 3d  lookahead.type =
11230 3d 3d 20 74 6f 6b 65 6e 5f 31 2e 54 6f 6b 65 6e  == token_1.Token
11240 2e 54 65 6d 70 6c 61 74 65 20 26 26 20 74 68 69  .Template && thi
11250 73 24 31 2e 6c 6f 6f 6b 61 68 65 61 64 2e 68 65  s$1.lookahead.he
11260 61 64 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20  ad) {.  .       
11270 20 20 20 20 20 20 20 20 20 76 61 72 20 71 75 61           var qua
11280 73 69 20 3d 20 74 68 69 73 24 31 2e 70 61 72 73  si = this$1.pars
11290 65 54 65 6d 70 6c 61 74 65 4c 69 74 65 72 61 6c  eTemplateLiteral
112a0 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ();.  .         
112b0 20 20 20 20 20 20 20 65 78 70 72 20 3d 20 74 68         expr = th
112c0 69 73 24 31 2e 66 69 6e 61 6c 69 7a 65 28 74 68  is$1.finalize(th
112d0 69 73 24 31 2e 73 74 61 72 74 4e 6f 64 65 28 73  is$1.startNode(s
112e0 74 61 72 74 54 6f 6b 65 6e 29 2c 20 6e 65 77 20  tartToken), new 
112f0 4e 6f 64 65 2e 54 61 67 67 65 64 54 65 6d 70 6c  Node.TaggedTempl
11300 61 74 65 45 78 70 72 65 73 73 69 6f 6e 28 65 78  ateExpression(ex
11310 70 72 2c 20 71 75 61 73 69 29 29 3b 0a 20 20 09  pr, quasi));.  .
11320 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20              }.  
11330 09 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73  .            els
11340 65 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20  e {.  .         
11350 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0a 20 20         break;.  
11360 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20  .            }. 
11370 20 09 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20   .        }.  . 
11380 20 20 20 20 20 20 20 74 68 69 73 2e 63 6f 6e 74         this.cont
11390 65 78 74 2e 61 6c 6c 6f 77 49 6e 20 3d 20 70 72  ext.allowIn = pr
113a0 65 76 69 6f 75 73 41 6c 6c 6f 77 49 6e 3b 0a 20  eviousAllowIn;. 
113b0 20 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e   .        return
113c0 20 65 78 70 72 3b 0a 20 20 09 20 20 20 20 7d 3b   expr;.  .    };
113d0 0a 20 20 09 20 20 20 20 50 61 72 73 65 72 2e 70  .  .    Parser.p
113e0 72 6f 74 6f 74 79 70 65 2e 70 61 72 73 65 53 75  rototype.parseSu
113f0 70 65 72 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28  per = function (
11400 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 76  ) {.  .        v
11410 61 72 20 6e 6f 64 65 20 3d 20 74 68 69 73 2e 63  ar node = this.c
11420 72 65 61 74 65 4e 6f 64 65 28 29 3b 0a 20 20 09  reateNode();.  .
11430 20 20 20 20 20 20 20 20 74 68 69 73 2e 65 78 70          this.exp
11440 65 63 74 4b 65 79 77 6f 72 64 28 27 73 75 70 65  ectKeyword('supe
11450 72 27 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  r');.  .        
11460 69 66 20 28 21 74 68 69 73 2e 6d 61 74 63 68 28  if (!this.match(
11470 27 5b 27 29 20 26 26 20 21 74 68 69 73 2e 6d 61  '[') && !this.ma
11480 74 63 68 28 27 2e 27 29 29 20 7b 0a 20 20 09 20  tch('.')) {.  . 
11490 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
114a0 74 68 72 6f 77 55 6e 65 78 70 65 63 74 65 64 54  throwUnexpectedT
114b0 6f 6b 65 6e 28 74 68 69 73 2e 6c 6f 6f 6b 61 68  oken(this.lookah
114c0 65 61 64 29 3b 0a 20 20 09 20 20 20 20 20 20 20  ead);.  .       
114d0 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 72 65   }.  .        re
114e0 74 75 72 6e 20 74 68 69 73 2e 66 69 6e 61 6c 69  turn this.finali
114f0 7a 65 28 6e 6f 64 65 2c 20 6e 65 77 20 4e 6f 64  ze(node, new Nod
11500 65 2e 53 75 70 65 72 28 29 29 3b 0a 20 20 09 20  e.Super());.  . 
11510 20 20 20 7d 3b 0a 20 20 09 20 20 20 20 50 61 72     };.  .    Par
11520 73 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 70 61  ser.prototype.pa
11530 72 73 65 4c 65 66 74 48 61 6e 64 53 69 64 65 45  rseLeftHandSideE
11540 78 70 72 65 73 73 69 6f 6e 20 3d 20 66 75 6e 63  xpression = func
11550 74 69 6f 6e 20 28 29 20 7b 0a 20 20 09 20 20 20  tion () {.  .   
11560 20 20 20 20 20 76 61 72 20 74 68 69 73 24 31 20       var this$1 
11570 3d 20 74 68 69 73 3b 0a 0a 20 20 09 20 20 20 20  = this;..  .    
11580 20 20 20 20 61 73 73 65 72 74 5f 31 2e 61 73 73      assert_1.ass
11590 65 72 74 28 74 68 69 73 2e 63 6f 6e 74 65 78 74  ert(this.context
115a0 2e 61 6c 6c 6f 77 49 6e 2c 20 27 63 61 6c 6c 65  .allowIn, 'calle
115b0 65 20 6f 66 20 6e 65 77 20 65 78 70 72 65 73 73  e of new express
115c0 69 6f 6e 20 61 6c 77 61 79 73 20 61 6c 6c 6f 77  ion always allow
115d0 20 69 6e 20 6b 65 79 77 6f 72 64 2e 27 29 3b 0a   in keyword.');.
115e0 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20 6e    .        var n
115f0 6f 64 65 20 3d 20 74 68 69 73 2e 73 74 61 72 74  ode = this.start
11600 4e 6f 64 65 28 74 68 69 73 2e 6c 6f 6f 6b 61 68  Node(this.lookah
11610 65 61 64 29 3b 0a 20 20 09 20 20 20 20 20 20 20  ead);.  .       
11620 20 76 61 72 20 65 78 70 72 20 3d 20 28 74 68 69   var expr = (thi
11630 73 2e 6d 61 74 63 68 4b 65 79 77 6f 72 64 28 27  s.matchKeyword('
11640 73 75 70 65 72 27 29 20 26 26 20 74 68 69 73 2e  super') && this.
11650 63 6f 6e 74 65 78 74 2e 69 6e 46 75 6e 63 74 69  context.inFuncti
11660 6f 6e 42 6f 64 79 29 20 3f 20 74 68 69 73 2e 70  onBody) ? this.p
11670 61 72 73 65 53 75 70 65 72 28 29 20 3a 0a 20 20  arseSuper() :.  
11680 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
11690 73 2e 69 6e 68 65 72 69 74 43 6f 76 65 72 47 72  s.inheritCoverGr
116a0 61 6d 6d 61 72 28 74 68 69 73 2e 6d 61 74 63 68  ammar(this.match
116b0 4b 65 79 77 6f 72 64 28 27 6e 65 77 27 29 20 3f  Keyword('new') ?
116c0 20 74 68 69 73 2e 70 61 72 73 65 4e 65 77 45 78   this.parseNewEx
116d0 70 72 65 73 73 69 6f 6e 20 3a 20 74 68 69 73 2e  pression : this.
116e0 70 61 72 73 65 50 72 69 6d 61 72 79 45 78 70 72  parsePrimaryExpr
116f0 65 73 73 69 6f 6e 29 3b 0a 20 20 09 20 20 20 20  ession);.  .    
11700 20 20 20 20 77 68 69 6c 65 20 28 74 72 75 65 29      while (true)
11710 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   {.  .          
11720 20 20 69 66 20 28 74 68 69 73 24 31 2e 6d 61 74    if (this$1.mat
11730 63 68 28 27 5b 27 29 29 20 7b 0a 20 20 09 20 20  ch('[')) {.  .  
11740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
11750 69 73 24 31 2e 63 6f 6e 74 65 78 74 2e 69 73 42  is$1.context.isB
11760 69 6e 64 69 6e 67 45 6c 65 6d 65 6e 74 20 3d 20  indingElement = 
11770 66 61 6c 73 65 3b 0a 20 20 09 20 20 20 20 20 20  false;.  .      
11780 20 20 20 20 20 20 20 20 20 20 74 68 69 73 24 31            this$1
11790 2e 63 6f 6e 74 65 78 74 2e 69 73 41 73 73 69 67  .context.isAssig
117a0 6e 6d 65 6e 74 54 61 72 67 65 74 20 3d 20 74 72  nmentTarget = tr
117b0 75 65 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ue;.  .         
117c0 20 20 20 20 20 20 20 74 68 69 73 24 31 2e 65 78         this$1.ex
117d0 70 65 63 74 28 27 5b 27 29 3b 0a 20 20 09 20 20  pect('[');.  .  
117e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61                va
117f0 72 20 70 72 6f 70 65 72 74 79 20 3d 20 74 68 69  r property = thi
11800 73 24 31 2e 69 73 6f 6c 61 74 65 43 6f 76 65 72  s$1.isolateCover
11810 47 72 61 6d 6d 61 72 28 74 68 69 73 24 31 2e 70  Grammar(this$1.p
11820 61 72 73 65 45 78 70 72 65 73 73 69 6f 6e 29 3b  arseExpression);
11830 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
11840 20 20 20 20 74 68 69 73 24 31 2e 65 78 70 65 63      this$1.expec
11850 74 28 27 5d 27 29 3b 0a 20 20 09 20 20 20 20 20  t(']');.  .     
11860 20 20 20 20 20 20 20 20 20 20 20 65 78 70 72 20             expr 
11870 3d 20 74 68 69 73 24 31 2e 66 69 6e 61 6c 69 7a  = this$1.finaliz
11880 65 28 6e 6f 64 65 2c 20 6e 65 77 20 4e 6f 64 65  e(node, new Node
11890 2e 43 6f 6d 70 75 74 65 64 4d 65 6d 62 65 72 45  .ComputedMemberE
118a0 78 70 72 65 73 73 69 6f 6e 28 65 78 70 72 2c 20  xpression(expr, 
118b0 70 72 6f 70 65 72 74 79 29 29 3b 0a 20 20 09 20  property));.  . 
118c0 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09             }.  .
118d0 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
118e0 20 69 66 20 28 74 68 69 73 24 31 2e 6d 61 74 63   if (this$1.matc
118f0 68 28 27 2e 27 29 29 20 7b 0a 20 20 09 20 20 20  h('.')) {.  .   
11900 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
11910 73 24 31 2e 63 6f 6e 74 65 78 74 2e 69 73 42 69  s$1.context.isBi
11920 6e 64 69 6e 67 45 6c 65 6d 65 6e 74 20 3d 20 66  ndingElement = f
11930 61 6c 73 65 3b 0a 20 20 09 20 20 20 20 20 20 20  alse;.  .       
11940 20 20 20 20 20 20 20 20 20 74 68 69 73 24 31 2e           this$1.
11950 63 6f 6e 74 65 78 74 2e 69 73 41 73 73 69 67 6e  context.isAssign
11960 6d 65 6e 74 54 61 72 67 65 74 20 3d 20 74 72 75  mentTarget = tru
11970 65 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  e;.  .          
11980 20 20 20 20 20 20 74 68 69 73 24 31 2e 65 78 70        this$1.exp
11990 65 63 74 28 27 2e 27 29 3b 0a 20 20 09 20 20 20  ect('.');.  .   
119a0 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72               var
119b0 20 70 72 6f 70 65 72 74 79 20 3d 20 74 68 69 73   property = this
119c0 24 31 2e 70 61 72 73 65 49 64 65 6e 74 69 66 69  $1.parseIdentifi
119d0 65 72 4e 61 6d 65 28 29 3b 0a 20 20 09 20 20 20  erName();.  .   
119e0 20 20 20 20 20 20 20 20 20 20 20 20 20 65 78 70               exp
119f0 72 20 3d 20 74 68 69 73 24 31 2e 66 69 6e 61 6c  r = this$1.final
11a00 69 7a 65 28 6e 6f 64 65 2c 20 6e 65 77 20 4e 6f  ize(node, new No
11a10 64 65 2e 53 74 61 74 69 63 4d 65 6d 62 65 72 45  de.StaticMemberE
11a20 78 70 72 65 73 73 69 6f 6e 28 65 78 70 72 2c 20  xpression(expr, 
11a30 70 72 6f 70 65 72 74 79 29 29 3b 0a 20 20 09 20  property));.  . 
11a40 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09             }.  .
11a50 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
11a60 20 69 66 20 28 74 68 69 73 24 31 2e 6c 6f 6f 6b   if (this$1.look
11a70 61 68 65 61 64 2e 74 79 70 65 20 3d 3d 3d 20 74  ahead.type === t
11a80 6f 6b 65 6e 5f 31 2e 54 6f 6b 65 6e 2e 54 65 6d  oken_1.Token.Tem
11a90 70 6c 61 74 65 20 26 26 20 74 68 69 73 24 31 2e  plate && this$1.
11aa0 6c 6f 6f 6b 61 68 65 61 64 2e 68 65 61 64 29 20  lookahead.head) 
11ab0 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  {.  .           
11ac0 20 20 20 20 20 76 61 72 20 71 75 61 73 69 20 3d       var quasi =
11ad0 20 74 68 69 73 24 31 2e 70 61 72 73 65 54 65 6d   this$1.parseTem
11ae0 70 6c 61 74 65 4c 69 74 65 72 61 6c 28 29 3b 0a  plateLiteral();.
11af0 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
11b00 20 20 20 65 78 70 72 20 3d 20 74 68 69 73 24 31     expr = this$1
11b10 2e 66 69 6e 61 6c 69 7a 65 28 6e 6f 64 65 2c 20  .finalize(node, 
11b20 6e 65 77 20 4e 6f 64 65 2e 54 61 67 67 65 64 54  new Node.TaggedT
11b30 65 6d 70 6c 61 74 65 45 78 70 72 65 73 73 69 6f  emplateExpressio
11b40 6e 28 65 78 70 72 2c 20 71 75 61 73 69 29 29 3b  n(expr, quasi));
11b50 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
11b60 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  }.  .           
11b70 20 65 6c 73 65 20 7b 0a 20 20 09 20 20 20 20 20   else {.  .     
11b80 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b             break
11b90 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
11ba0 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a   }.  .        }.
11bb0 20 20 09 20 20 20 20 20 20 20 20 72 65 74 75 72    .        retur
11bc0 6e 20 65 78 70 72 3b 0a 20 20 09 20 20 20 20 7d  n expr;.  .    }
11bd0 3b 0a 20 20 09 20 20 20 20 2f 2f 20 45 43 4d 41  ;.  .    // ECMA
11be0 2d 32 36 32 20 31 32 2e 34 20 55 70 64 61 74 65  -262 12.4 Update
11bf0 20 45 78 70 72 65 73 73 69 6f 6e 73 0a 20 20 09   Expressions.  .
11c00 20 20 20 20 50 61 72 73 65 72 2e 70 72 6f 74 6f      Parser.proto
11c10 74 79 70 65 2e 70 61 72 73 65 55 70 64 61 74 65  type.parseUpdate
11c20 45 78 70 72 65 73 73 69 6f 6e 20 3d 20 66 75 6e  Expression = fun
11c30 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20 09 20 20  ction () {.  .  
11c40 20 20 20 20 20 20 76 61 72 20 65 78 70 72 3b 0a        var expr;.
11c50 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20 73    .        var s
11c60 74 61 72 74 54 6f 6b 65 6e 20 3d 20 74 68 69 73  tartToken = this
11c70 2e 6c 6f 6f 6b 61 68 65 61 64 3b 0a 20 20 09 20  .lookahead;.  . 
11c80 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e         if (this.
11c90 6d 61 74 63 68 28 27 2b 2b 27 29 20 7c 7c 20 74  match('++') || t
11ca0 68 69 73 2e 6d 61 74 63 68 28 27 2d 2d 27 29 29  his.match('--'))
11cb0 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   {.  .          
11cc0 20 20 76 61 72 20 6e 6f 64 65 20 3d 20 74 68 69    var node = thi
11cd0 73 2e 73 74 61 72 74 4e 6f 64 65 28 73 74 61 72  s.startNode(star
11ce0 74 54 6f 6b 65 6e 29 3b 0a 20 20 09 20 20 20 20  tToken);.  .    
11cf0 20 20 20 20 20 20 20 20 76 61 72 20 74 6f 6b 65          var toke
11d00 6e 20 3d 20 74 68 69 73 2e 6e 65 78 74 54 6f 6b  n = this.nextTok
11d10 65 6e 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20  en();.  .       
11d20 20 20 20 20 20 65 78 70 72 20 3d 20 74 68 69 73       expr = this
11d30 2e 69 6e 68 65 72 69 74 43 6f 76 65 72 47 72 61  .inheritCoverGra
11d40 6d 6d 61 72 28 74 68 69 73 2e 70 61 72 73 65 55  mmar(this.parseU
11d50 6e 61 72 79 45 78 70 72 65 73 73 69 6f 6e 29 3b  naryExpression);
11d60 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
11d70 69 66 20 28 74 68 69 73 2e 63 6f 6e 74 65 78 74  if (this.context
11d80 2e 73 74 72 69 63 74 20 26 26 20 65 78 70 72 2e  .strict && expr.
11d90 74 79 70 65 20 3d 3d 3d 20 73 79 6e 74 61 78 5f  type === syntax_
11da0 31 2e 53 79 6e 74 61 78 2e 49 64 65 6e 74 69 66  1.Syntax.Identif
11db0 69 65 72 20 26 26 20 74 68 69 73 2e 73 63 61 6e  ier && this.scan
11dc0 6e 65 72 2e 69 73 52 65 73 74 72 69 63 74 65 64  ner.isRestricted
11dd0 57 6f 72 64 28 65 78 70 72 2e 6e 61 6d 65 29 29  Word(expr.name))
11de0 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   {.  .          
11df0 20 20 20 20 20 20 74 68 69 73 2e 74 6f 6c 65 72        this.toler
11e00 61 74 65 45 72 72 6f 72 28 6d 65 73 73 61 67 65  ateError(message
11e10 73 5f 31 2e 4d 65 73 73 61 67 65 73 2e 53 74 72  s_1.Messages.Str
11e20 69 63 74 4c 48 53 50 72 65 66 69 78 29 3b 0a 20  ictLHSPrefix);. 
11e30 20 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a   .            }.
11e40 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 69    .            i
11e50 66 20 28 21 74 68 69 73 2e 63 6f 6e 74 65 78 74  f (!this.context
11e60 2e 69 73 41 73 73 69 67 6e 6d 65 6e 74 54 61 72  .isAssignmentTar
11e70 67 65 74 29 20 7b 0a 20 20 09 20 20 20 20 20 20  get) {.  .      
11e80 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 74            this.t
11e90 6f 6c 65 72 61 74 65 45 72 72 6f 72 28 6d 65 73  olerateError(mes
11ea0 73 61 67 65 73 5f 31 2e 4d 65 73 73 61 67 65 73  sages_1.Messages
11eb0 2e 49 6e 76 61 6c 69 64 4c 48 53 49 6e 41 73 73  .InvalidLHSInAss
11ec0 69 67 6e 6d 65 6e 74 29 3b 0a 20 20 09 20 20 20  ignment);.  .   
11ed0 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20           }.  .  
11ee0 20 20 20 20 20 20 20 20 20 20 76 61 72 20 70 72            var pr
11ef0 65 66 69 78 20 3d 20 74 72 75 65 3b 0a 20 20 09  efix = true;.  .
11f00 20 20 20 20 20 20 20 20 20 20 20 20 65 78 70 72              expr
11f10 20 3d 20 74 68 69 73 2e 66 69 6e 61 6c 69 7a 65   = this.finalize
11f20 28 6e 6f 64 65 2c 20 6e 65 77 20 4e 6f 64 65 2e  (node, new Node.
11f30 55 70 64 61 74 65 45 78 70 72 65 73 73 69 6f 6e  UpdateExpression
11f40 28 74 6f 6b 65 6e 2e 76 61 6c 75 65 2c 20 65 78  (token.value, ex
11f50 70 72 2c 20 70 72 65 66 69 78 29 29 3b 0a 20 20  pr, prefix));.  
11f60 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
11f70 73 2e 63 6f 6e 74 65 78 74 2e 69 73 41 73 73 69  s.context.isAssi
11f80 67 6e 6d 65 6e 74 54 61 72 67 65 74 20 3d 20 66  gnmentTarget = f
11f90 61 6c 73 65 3b 0a 20 20 09 20 20 20 20 20 20 20  alse;.  .       
11fa0 20 20 20 20 20 74 68 69 73 2e 63 6f 6e 74 65 78       this.contex
11fb0 74 2e 69 73 42 69 6e 64 69 6e 67 45 6c 65 6d 65  t.isBindingEleme
11fc0 6e 74 20 3d 20 66 61 6c 73 65 3b 0a 20 20 09 20  nt = false;.  . 
11fd0 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20         }.  .    
11fe0 20 20 20 20 65 6c 73 65 20 7b 0a 20 20 09 20 20      else {.  .  
11ff0 20 20 20 20 20 20 20 20 20 20 65 78 70 72 20 3d            expr =
12000 20 74 68 69 73 2e 69 6e 68 65 72 69 74 43 6f 76   this.inheritCov
12010 65 72 47 72 61 6d 6d 61 72 28 74 68 69 73 2e 70  erGrammar(this.p
12020 61 72 73 65 4c 65 66 74 48 61 6e 64 53 69 64 65  arseLeftHandSide
12030 45 78 70 72 65 73 73 69 6f 6e 41 6c 6c 6f 77 43  ExpressionAllowC
12040 61 6c 6c 29 3b 0a 20 20 09 20 20 20 20 20 20 20  all);.  .       
12050 20 20 20 20 20 69 66 20 28 21 74 68 69 73 2e 68       if (!this.h
12060 61 73 4c 69 6e 65 54 65 72 6d 69 6e 61 74 6f 72  asLineTerminator
12070 20 26 26 20 74 68 69 73 2e 6c 6f 6f 6b 61 68 65   && this.lookahe
12080 61 64 2e 74 79 70 65 20 3d 3d 3d 20 74 6f 6b 65  ad.type === toke
12090 6e 5f 31 2e 54 6f 6b 65 6e 2e 50 75 6e 63 74 75  n_1.Token.Punctu
120a0 61 74 6f 72 29 20 7b 0a 20 20 09 20 20 20 20 20  ator) {.  .     
120b0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74             if (t
120c0 68 69 73 2e 6d 61 74 63 68 28 27 2b 2b 27 29 20  his.match('++') 
120d0 7c 7c 20 74 68 69 73 2e 6d 61 74 63 68 28 27 2d  || this.match('-
120e0 2d 27 29 29 20 7b 0a 20 20 09 20 20 20 20 20 20  -')) {.  .      
120f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
12100 20 28 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e 73   (this.context.s
12110 74 72 69 63 74 20 26 26 20 65 78 70 72 2e 74 79  trict && expr.ty
12120 70 65 20 3d 3d 3d 20 73 79 6e 74 61 78 5f 31 2e  pe === syntax_1.
12130 53 79 6e 74 61 78 2e 49 64 65 6e 74 69 66 69 65  Syntax.Identifie
12140 72 20 26 26 20 74 68 69 73 2e 73 63 61 6e 6e 65  r && this.scanne
12150 72 2e 69 73 52 65 73 74 72 69 63 74 65 64 57 6f  r.isRestrictedWo
12160 72 64 28 65 78 70 72 2e 6e 61 6d 65 29 29 20 7b  rd(expr.name)) {
12170 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
12180 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
12190 2e 74 6f 6c 65 72 61 74 65 45 72 72 6f 72 28 6d  .tolerateError(m
121a0 65 73 73 61 67 65 73 5f 31 2e 4d 65 73 73 61 67  essages_1.Messag
121b0 65 73 2e 53 74 72 69 63 74 4c 48 53 50 6f 73 74  es.StrictLHSPost
121c0 66 69 78 29 3b 0a 20 20 09 20 20 20 20 20 20 20  fix);.  .       
121d0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20               }. 
121e0 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
121f0 20 20 20 20 20 20 69 66 20 28 21 74 68 69 73 2e        if (!this.
12200 63 6f 6e 74 65 78 74 2e 69 73 41 73 73 69 67 6e  context.isAssign
12210 6d 65 6e 74 54 61 72 67 65 74 29 20 7b 0a 20 20  mentTarget) {.  
12220 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12230 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 74 6f           this.to
12240 6c 65 72 61 74 65 45 72 72 6f 72 28 6d 65 73 73  lerateError(mess
12250 61 67 65 73 5f 31 2e 4d 65 73 73 61 67 65 73 2e  ages_1.Messages.
12260 49 6e 76 61 6c 69 64 4c 48 53 49 6e 41 73 73 69  InvalidLHSInAssi
12270 67 6e 6d 65 6e 74 29 3b 0a 20 20 09 20 20 20 20  gnment);.  .    
12280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12290 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  }.  .           
122a0 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 6f           this.co
122b0 6e 74 65 78 74 2e 69 73 41 73 73 69 67 6e 6d 65  ntext.isAssignme
122c0 6e 74 54 61 72 67 65 74 20 3d 20 66 61 6c 73 65  ntTarget = false
122d0 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
122e0 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 6f           this.co
122f0 6e 74 65 78 74 2e 69 73 42 69 6e 64 69 6e 67 45  ntext.isBindingE
12300 6c 65 6d 65 6e 74 20 3d 20 66 61 6c 73 65 3b 0a  lement = false;.
12310 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
12320 20 20 20 20 20 20 20 76 61 72 20 6f 70 65 72 61         var opera
12330 74 6f 72 20 3d 20 74 68 69 73 2e 6e 65 78 74 54  tor = this.nextT
12340 6f 6b 65 6e 28 29 2e 76 61 6c 75 65 3b 0a 20 20  oken().value;.  
12350 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12360 20 20 20 20 20 76 61 72 20 70 72 65 66 69 78 20       var prefix 
12370 3d 20 66 61 6c 73 65 3b 0a 20 20 09 20 20 20 20  = false;.  .    
12380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12390 65 78 70 72 20 3d 20 74 68 69 73 2e 66 69 6e 61  expr = this.fina
123a0 6c 69 7a 65 28 74 68 69 73 2e 73 74 61 72 74 4e  lize(this.startN
123b0 6f 64 65 28 73 74 61 72 74 54 6f 6b 65 6e 29 2c  ode(startToken),
123c0 20 6e 65 77 20 4e 6f 64 65 2e 55 70 64 61 74 65   new Node.Update
123d0 45 78 70 72 65 73 73 69 6f 6e 28 6f 70 65 72 61  Expression(opera
123e0 74 6f 72 2c 20 65 78 70 72 2c 20 70 72 65 66 69  tor, expr, prefi
123f0 78 29 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  x));.  .        
12400 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20          }.  .   
12410 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20           }.  .  
12420 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20        }.  .     
12430 20 20 20 72 65 74 75 72 6e 20 65 78 70 72 3b 0a     return expr;.
12440 20 20 09 20 20 20 20 7d 3b 0a 20 20 09 20 20 20    .    };.  .   
12450 20 2f 2f 20 45 43 4d 41 2d 32 36 32 20 31 32 2e   // ECMA-262 12.
12460 35 20 55 6e 61 72 79 20 4f 70 65 72 61 74 6f 72  5 Unary Operator
12470 73 0a 20 20 09 20 20 20 20 50 61 72 73 65 72 2e  s.  .    Parser.
12480 70 72 6f 74 6f 74 79 70 65 2e 70 61 72 73 65 55  prototype.parseU
12490 6e 61 72 79 45 78 70 72 65 73 73 69 6f 6e 20 3d  naryExpression =
124a0 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20   function () {. 
124b0 20 09 20 20 20 20 20 20 20 20 76 61 72 20 65 78   .        var ex
124c0 70 72 3b 0a 20 20 09 20 20 20 20 20 20 20 20 69  pr;.  .        i
124d0 66 20 28 74 68 69 73 2e 6d 61 74 63 68 28 27 2b  f (this.match('+
124e0 27 29 20 7c 7c 20 74 68 69 73 2e 6d 61 74 63 68  ') || this.match
124f0 28 27 2d 27 29 20 7c 7c 20 74 68 69 73 2e 6d 61  ('-') || this.ma
12500 74 63 68 28 27 7e 27 29 20 7c 7c 20 74 68 69 73  tch('~') || this
12510 2e 6d 61 74 63 68 28 27 21 27 29 20 7c 7c 0a 20  .match('!') ||. 
12520 20 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68   .            th
12530 69 73 2e 6d 61 74 63 68 4b 65 79 77 6f 72 64 28  is.matchKeyword(
12540 27 64 65 6c 65 74 65 27 29 20 7c 7c 20 74 68 69  'delete') || thi
12550 73 2e 6d 61 74 63 68 4b 65 79 77 6f 72 64 28 27  s.matchKeyword('
12560 76 6f 69 64 27 29 20 7c 7c 20 74 68 69 73 2e 6d  void') || this.m
12570 61 74 63 68 4b 65 79 77 6f 72 64 28 27 74 79 70  atchKeyword('typ
12580 65 6f 66 27 29 29 20 7b 0a 20 20 09 20 20 20 20  eof')) {.  .    
12590 20 20 20 20 20 20 20 20 76 61 72 20 6e 6f 64 65          var node
125a0 20 3d 20 74 68 69 73 2e 73 74 61 72 74 4e 6f 64   = this.startNod
125b0 65 28 74 68 69 73 2e 6c 6f 6f 6b 61 68 65 61 64  e(this.lookahead
125c0 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  );.  .          
125d0 20 20 76 61 72 20 74 6f 6b 65 6e 20 3d 20 74 68    var token = th
125e0 69 73 2e 6e 65 78 74 54 6f 6b 65 6e 28 29 3b 0a  is.nextToken();.
125f0 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 65    .            e
12600 78 70 72 20 3d 20 74 68 69 73 2e 69 6e 68 65 72  xpr = this.inher
12610 69 74 43 6f 76 65 72 47 72 61 6d 6d 61 72 28 74  itCoverGrammar(t
12620 68 69 73 2e 70 61 72 73 65 55 6e 61 72 79 45 78  his.parseUnaryEx
12630 70 72 65 73 73 69 6f 6e 29 3b 0a 20 20 09 20 20  pression);.  .  
12640 20 20 20 20 20 20 20 20 20 20 65 78 70 72 20 3d            expr =
12650 20 74 68 69 73 2e 66 69 6e 61 6c 69 7a 65 28 6e   this.finalize(n
12660 6f 64 65 2c 20 6e 65 77 20 4e 6f 64 65 2e 55 6e  ode, new Node.Un
12670 61 72 79 45 78 70 72 65 73 73 69 6f 6e 28 74 6f  aryExpression(to
12680 6b 65 6e 2e 76 61 6c 75 65 2c 20 65 78 70 72 29  ken.value, expr)
12690 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  );.  .          
126a0 20 20 69 66 20 28 74 68 69 73 2e 63 6f 6e 74 65    if (this.conte
126b0 78 74 2e 73 74 72 69 63 74 20 26 26 20 65 78 70  xt.strict && exp
126c0 72 2e 6f 70 65 72 61 74 6f 72 20 3d 3d 3d 20 27  r.operator === '
126d0 64 65 6c 65 74 65 27 20 26 26 20 65 78 70 72 2e  delete' && expr.
126e0 61 72 67 75 6d 65 6e 74 2e 74 79 70 65 20 3d 3d  argument.type ==
126f0 3d 20 73 79 6e 74 61 78 5f 31 2e 53 79 6e 74 61  = syntax_1.Synta
12700 78 2e 49 64 65 6e 74 69 66 69 65 72 29 20 7b 0a  x.Identifier) {.
12710 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
12720 20 20 20 74 68 69 73 2e 74 6f 6c 65 72 61 74 65     this.tolerate
12730 45 72 72 6f 72 28 6d 65 73 73 61 67 65 73 5f 31  Error(messages_1
12740 2e 4d 65 73 73 61 67 65 73 2e 53 74 72 69 63 74  .Messages.Strict
12750 44 65 6c 65 74 65 29 3b 0a 20 20 09 20 20 20 20  Delete);.  .    
12760 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20          }.  .   
12770 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 6f           this.co
12780 6e 74 65 78 74 2e 69 73 41 73 73 69 67 6e 6d 65  ntext.isAssignme
12790 6e 74 54 61 72 67 65 74 20 3d 20 66 61 6c 73 65  ntTarget = false
127a0 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
127b0 20 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e 69 73   this.context.is
127c0 42 69 6e 64 69 6e 67 45 6c 65 6d 65 6e 74 20 3d  BindingElement =
127d0 20 66 61 6c 73 65 3b 0a 20 20 09 20 20 20 20 20   false;.  .     
127e0 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20     }.  .        
127f0 65 6c 73 65 20 7b 0a 20 20 09 20 20 20 20 20 20  else {.  .      
12800 20 20 20 20 20 20 65 78 70 72 20 3d 20 74 68 69        expr = thi
12810 73 2e 70 61 72 73 65 55 70 64 61 74 65 45 78 70  s.parseUpdateExp
12820 72 65 73 73 69 6f 6e 28 29 3b 0a 20 20 09 20 20  ression();.  .  
12830 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20        }.  .     
12840 20 20 20 72 65 74 75 72 6e 20 65 78 70 72 3b 0a     return expr;.
12850 20 20 09 20 20 20 20 7d 3b 0a 20 20 09 20 20 20    .    };.  .   
12860 20 50 61 72 73 65 72 2e 70 72 6f 74 6f 74 79 70   Parser.prototyp
12870 65 2e 70 61 72 73 65 45 78 70 6f 6e 65 6e 74 69  e.parseExponenti
12880 61 74 69 6f 6e 45 78 70 72 65 73 73 69 6f 6e 20  ationExpression 
12890 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a  = function () {.
128a0 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20 73    .        var s
128b0 74 61 72 74 54 6f 6b 65 6e 20 3d 20 74 68 69 73  tartToken = this
128c0 2e 6c 6f 6f 6b 61 68 65 61 64 3b 0a 20 20 09 20  .lookahead;.  . 
128d0 20 20 20 20 20 20 20 76 61 72 20 65 78 70 72 20         var expr 
128e0 3d 20 74 68 69 73 2e 69 6e 68 65 72 69 74 43 6f  = this.inheritCo
128f0 76 65 72 47 72 61 6d 6d 61 72 28 74 68 69 73 2e  verGrammar(this.
12900 70 61 72 73 65 55 6e 61 72 79 45 78 70 72 65 73  parseUnaryExpres
12910 73 69 6f 6e 29 3b 0a 20 20 09 20 20 20 20 20 20  sion);.  .      
12920 20 20 69 66 20 28 65 78 70 72 2e 74 79 70 65 20    if (expr.type 
12930 21 3d 3d 20 73 79 6e 74 61 78 5f 31 2e 53 79 6e  !== syntax_1.Syn
12940 74 61 78 2e 55 6e 61 72 79 45 78 70 72 65 73 73  tax.UnaryExpress
12950 69 6f 6e 20 26 26 20 74 68 69 73 2e 6d 61 74 63  ion && this.matc
12960 68 28 27 2a 2a 27 29 29 20 7b 0a 20 20 09 20 20  h('**')) {.  .  
12970 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6e            this.n
12980 65 78 74 54 6f 6b 65 6e 28 29 3b 0a 20 20 09 20  extToken();.  . 
12990 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
129a0 63 6f 6e 74 65 78 74 2e 69 73 41 73 73 69 67 6e  context.isAssign
129b0 6d 65 6e 74 54 61 72 67 65 74 20 3d 20 66 61 6c  mentTarget = fal
129c0 73 65 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  se;.  .         
129d0 20 20 20 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e     this.context.
129e0 69 73 42 69 6e 64 69 6e 67 45 6c 65 6d 65 6e 74  isBindingElement
129f0 20 3d 20 66 61 6c 73 65 3b 0a 20 20 09 20 20 20   = false;.  .   
12a00 20 20 20 20 20 20 20 20 20 76 61 72 20 6c 65 66           var lef
12a10 74 20 3d 20 65 78 70 72 3b 0a 20 20 09 20 20 20  t = expr;.  .   
12a20 20 20 20 20 20 20 20 20 20 76 61 72 20 72 69 67           var rig
12a30 68 74 20 3d 20 74 68 69 73 2e 69 73 6f 6c 61 74  ht = this.isolat
12a40 65 43 6f 76 65 72 47 72 61 6d 6d 61 72 28 74 68  eCoverGrammar(th
12a50 69 73 2e 70 61 72 73 65 45 78 70 6f 6e 65 6e 74  is.parseExponent
12a60 69 61 74 69 6f 6e 45 78 70 72 65 73 73 69 6f 6e  iationExpression
12a70 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  );.  .          
12a80 20 20 65 78 70 72 20 3d 20 74 68 69 73 2e 66 69    expr = this.fi
12a90 6e 61 6c 69 7a 65 28 74 68 69 73 2e 73 74 61 72  nalize(this.star
12aa0 74 4e 6f 64 65 28 73 74 61 72 74 54 6f 6b 65 6e  tNode(startToken
12ab0 29 2c 20 6e 65 77 20 4e 6f 64 65 2e 42 69 6e 61  ), new Node.Bina
12ac0 72 79 45 78 70 72 65 73 73 69 6f 6e 28 27 2a 2a  ryExpression('**
12ad0 27 2c 20 6c 65 66 74 2c 20 72 69 67 68 74 29 29  ', left, right))
12ae0 3b 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a 20  ;.  .        }. 
12af0 20 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e   .        return
12b00 20 65 78 70 72 3b 0a 20 20 09 20 20 20 20 7d 3b   expr;.  .    };
12b10 0a 20 20 09 20 20 20 20 2f 2f 20 45 43 4d 41 2d  .  .    // ECMA-
12b20 32 36 32 20 31 32 2e 36 20 45 78 70 6f 6e 65 6e  262 12.6 Exponen
12b30 74 69 61 74 69 6f 6e 20 4f 70 65 72 61 74 6f 72  tiation Operator
12b40 73 0a 20 20 09 20 20 20 20 2f 2f 20 45 43 4d 41  s.  .    // ECMA
12b50 2d 32 36 32 20 31 32 2e 37 20 4d 75 6c 74 69 70  -262 12.7 Multip
12b60 6c 69 63 61 74 69 76 65 20 4f 70 65 72 61 74 6f  licative Operato
12b70 72 73 0a 20 20 09 20 20 20 20 2f 2f 20 45 43 4d  rs.  .    // ECM
12b80 41 2d 32 36 32 20 31 32 2e 38 20 41 64 64 69 74  A-262 12.8 Addit
12b90 69 76 65 20 4f 70 65 72 61 74 6f 72 73 0a 20 20  ive Operators.  
12ba0 09 20 20 20 20 2f 2f 20 45 43 4d 41 2d 32 36 32  .    // ECMA-262
12bb0 20 31 32 2e 39 20 42 69 74 77 69 73 65 20 53 68   12.9 Bitwise Sh
12bc0 69 66 74 20 4f 70 65 72 61 74 6f 72 73 0a 20 20  ift Operators.  
12bd0 09 20 20 20 20 2f 2f 20 45 43 4d 41 2d 32 36 32  .    // ECMA-262
12be0 20 31 32 2e 31 30 20 52 65 6c 61 74 69 6f 6e 61   12.10 Relationa
12bf0 6c 20 4f 70 65 72 61 74 6f 72 73 0a 20 20 09 20  l Operators.  . 
12c00 20 20 20 2f 2f 20 45 43 4d 41 2d 32 36 32 20 31     // ECMA-262 1
12c10 32 2e 31 31 20 45 71 75 61 6c 69 74 79 20 4f 70  2.11 Equality Op
12c20 65 72 61 74 6f 72 73 0a 20 20 09 20 20 20 20 2f  erators.  .    /
12c30 2f 20 45 43 4d 41 2d 32 36 32 20 31 32 2e 31 32  / ECMA-262 12.12
12c40 20 42 69 6e 61 72 79 20 42 69 74 77 69 73 65 20   Binary Bitwise 
12c50 4f 70 65 72 61 74 6f 72 73 0a 20 20 09 20 20 20  Operators.  .   
12c60 20 2f 2f 20 45 43 4d 41 2d 32 36 32 20 31 32 2e   // ECMA-262 12.
12c70 31 33 20 42 69 6e 61 72 79 20 4c 6f 67 69 63 61  13 Binary Logica
12c80 6c 20 4f 70 65 72 61 74 6f 72 73 0a 20 20 09 20  l Operators.  . 
12c90 20 20 20 50 61 72 73 65 72 2e 70 72 6f 74 6f 74     Parser.protot
12ca0 79 70 65 2e 62 69 6e 61 72 79 50 72 65 63 65 64  ype.binaryPreced
12cb0 65 6e 63 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20  ence = function 
12cc0 28 74 6f 6b 65 6e 29 20 7b 0a 20 20 09 20 20 20  (token) {.  .   
12cd0 20 20 20 20 20 76 61 72 20 6f 70 20 3d 20 74 6f       var op = to
12ce0 6b 65 6e 2e 76 61 6c 75 65 3b 0a 20 20 09 20 20  ken.value;.  .  
12cf0 20 20 20 20 20 20 76 61 72 20 70 72 65 63 65 64        var preced
12d00 65 6e 63 65 3b 0a 20 20 09 20 20 20 20 20 20 20  ence;.  .       
12d10 20 69 66 20 28 74 6f 6b 65 6e 2e 74 79 70 65 20   if (token.type 
12d20 3d 3d 3d 20 74 6f 6b 65 6e 5f 31 2e 54 6f 6b 65  === token_1.Toke
12d30 6e 2e 50 75 6e 63 74 75 61 74 6f 72 29 20 7b 0a  n.Punctuator) {.
12d40 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 70    .            p
12d50 72 65 63 65 64 65 6e 63 65 20 3d 20 74 68 69 73  recedence = this
12d60 2e 6f 70 65 72 61 74 6f 72 50 72 65 63 65 64 65  .operatorPrecede
12d70 6e 63 65 5b 6f 70 5d 20 7c 7c 20 30 3b 0a 20 20  nce[op] || 0;.  
12d80 09 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20  .        }.  .  
12d90 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 74        else if (t
12da0 6f 6b 65 6e 2e 74 79 70 65 20 3d 3d 3d 20 74 6f  oken.type === to
12db0 6b 65 6e 5f 31 2e 54 6f 6b 65 6e 2e 4b 65 79 77  ken_1.Token.Keyw
12dc0 6f 72 64 29 20 7b 0a 20 20 09 20 20 20 20 20 20  ord) {.  .      
12dd0 20 20 20 20 20 20 70 72 65 63 65 64 65 6e 63 65        precedence
12de0 20 3d 20 28 6f 70 20 3d 3d 3d 20 27 69 6e 73 74   = (op === 'inst
12df0 61 6e 63 65 6f 66 27 20 7c 7c 20 28 74 68 69 73  anceof' || (this
12e00 2e 63 6f 6e 74 65 78 74 2e 61 6c 6c 6f 77 49 6e  .context.allowIn
12e10 20 26 26 20 6f 70 20 3d 3d 3d 20 27 69 6e 27 29   && op === 'in')
12e20 29 20 3f 20 37 20 3a 20 30 3b 0a 20 20 09 20 20  ) ? 7 : 0;.  .  
12e30 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20        }.  .     
12e40 20 20 20 65 6c 73 65 20 7b 0a 20 20 09 20 20 20     else {.  .   
12e50 20 20 20 20 20 20 20 20 20 70 72 65 63 65 64 65           precede
12e60 6e 63 65 20 3d 20 30 3b 0a 20 20 09 20 20 20 20  nce = 0;.  .    
12e70 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20      }.  .       
12e80 20 72 65 74 75 72 6e 20 70 72 65 63 65 64 65 6e   return preceden
12e90 63 65 3b 0a 20 20 09 20 20 20 20 7d 3b 0a 20 20  ce;.  .    };.  
12ea0 09 20 20 20 20 50 61 72 73 65 72 2e 70 72 6f 74  .    Parser.prot
12eb0 6f 74 79 70 65 2e 70 61 72 73 65 42 69 6e 61 72  otype.parseBinar
12ec0 79 45 78 70 72 65 73 73 69 6f 6e 20 3d 20 66 75  yExpression = fu
12ed0 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20 09 20  nction () {.  . 
12ee0 20 20 20 20 20 20 20 76 61 72 20 74 68 69 73 24         var this$
12ef0 31 20 3d 20 74 68 69 73 3b 0a 0a 20 20 09 20 20  1 = this;..  .  
12f00 20 20 20 20 20 20 76 61 72 20 73 74 61 72 74 54        var startT
12f10 6f 6b 65 6e 20 3d 20 74 68 69 73 2e 6c 6f 6f 6b  oken = this.look
12f20 61 68 65 61 64 3b 0a 20 20 09 20 20 20 20 20 20  ahead;.  .      
12f30 20 20 76 61 72 20 65 78 70 72 20 3d 20 74 68 69    var expr = thi
12f40 73 2e 69 6e 68 65 72 69 74 43 6f 76 65 72 47 72  s.inheritCoverGr
12f50 61 6d 6d 61 72 28 74 68 69 73 2e 70 61 72 73 65  ammar(this.parse
12f60 45 78 70 6f 6e 65 6e 74 69 61 74 69 6f 6e 45 78  ExponentiationEx
12f70 70 72 65 73 73 69 6f 6e 29 3b 0a 20 20 09 20 20  pression);.  .  
12f80 20 20 20 20 20 20 76 61 72 20 74 6f 6b 65 6e 20        var token 
12f90 3d 20 74 68 69 73 2e 6c 6f 6f 6b 61 68 65 61 64  = this.lookahead
12fa0 3b 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72  ;.  .        var
12fb0 20 70 72 65 63 20 3d 20 74 68 69 73 2e 62 69 6e   prec = this.bin
12fc0 61 72 79 50 72 65 63 65 64 65 6e 63 65 28 74 6f  aryPrecedence(to
12fd0 6b 65 6e 29 3b 0a 20 20 09 20 20 20 20 20 20 20  ken);.  .       
12fe0 20 69 66 20 28 70 72 65 63 20 3e 20 30 29 20 7b   if (prec > 0) {
12ff0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
13000 74 68 69 73 2e 6e 65 78 74 54 6f 6b 65 6e 28 29  this.nextToken()
13010 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
13020 20 74 6f 6b 65 6e 2e 70 72 65 63 20 3d 20 70 72   token.prec = pr
13030 65 63 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ec;.  .         
13040 20 20 20 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e     this.context.
13050 69 73 41 73 73 69 67 6e 6d 65 6e 74 54 61 72 67  isAssignmentTarg
13060 65 74 20 3d 20 66 61 6c 73 65 3b 0a 20 20 09 20  et = false;.  . 
13070 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
13080 63 6f 6e 74 65 78 74 2e 69 73 42 69 6e 64 69 6e  context.isBindin
13090 67 45 6c 65 6d 65 6e 74 20 3d 20 66 61 6c 73 65  gElement = false
130a0 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
130b0 20 76 61 72 20 6d 61 72 6b 65 72 73 20 3d 20 5b   var markers = [
130c0 73 74 61 72 74 54 6f 6b 65 6e 2c 20 74 68 69 73  startToken, this
130d0 2e 6c 6f 6f 6b 61 68 65 61 64 5d 3b 0a 20 20 09  .lookahead];.  .
130e0 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20              var 
130f0 6c 65 66 74 20 3d 20 65 78 70 72 3b 0a 20 20 09  left = expr;.  .
13100 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20              var 
13110 72 69 67 68 74 20 3d 20 74 68 69 73 2e 69 73 6f  right = this.iso
13120 6c 61 74 65 43 6f 76 65 72 47 72 61 6d 6d 61 72  lateCoverGrammar
13130 28 74 68 69 73 2e 70 61 72 73 65 45 78 70 6f 6e  (this.parseExpon
13140 65 6e 74 69 61 74 69 6f 6e 45 78 70 72 65 73 73  entiationExpress
13150 69 6f 6e 29 3b 0a 20 20 09 20 20 20 20 20 20 20  ion);.  .       
13160 20 20 20 20 20 76 61 72 20 73 74 61 63 6b 20 3d       var stack =
13170 20 5b 6c 65 66 74 2c 20 74 6f 6b 65 6e 2c 20 72   [left, token, r
13180 69 67 68 74 5d 3b 0a 20 20 09 20 20 20 20 20 20  ight];.  .      
13190 20 20 20 20 20 20 77 68 69 6c 65 20 28 74 72 75        while (tru
131a0 65 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20  e) {.  .        
131b0 20 20 20 20 20 20 20 20 70 72 65 63 20 3d 20 74          prec = t
131c0 68 69 73 24 31 2e 62 69 6e 61 72 79 50 72 65 63  his$1.binaryPrec
131d0 65 64 65 6e 63 65 28 74 68 69 73 24 31 2e 6c 6f  edence(this$1.lo
131e0 6f 6b 61 68 65 61 64 29 3b 0a 20 20 09 20 20 20  okahead);.  .   
131f0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
13200 28 70 72 65 63 20 3c 3d 20 30 29 20 7b 0a 20 20  (prec <= 0) {.  
13210 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13220 20 20 20 20 20 62 72 65 61 6b 3b 0a 20 20 09 20       break;.  . 
13230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
13240 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
13250 20 20 20 20 2f 2f 20 52 65 64 75 63 65 3a 20 6d      // Reduce: m
13260 61 6b 65 20 61 20 62 69 6e 61 72 79 20 65 78 70  ake a binary exp
13270 72 65 73 73 69 6f 6e 20 66 72 6f 6d 20 74 68 65  ression from the
13280 20 74 68 72 65 65 20 74 6f 70 6d 6f 73 74 20 65   three topmost e
13290 6e 74 72 69 65 73 2e 0a 20 20 09 20 20 20 20 20  ntries..  .     
132a0 20 20 20 20 20 20 20 20 20 20 20 77 68 69 6c 65             while
132b0 20 28 28 73 74 61 63 6b 2e 6c 65 6e 67 74 68 20   ((stack.length 
132c0 3e 20 32 29 20 26 26 20 28 70 72 65 63 20 3c 3d  > 2) && (prec <=
132d0 20 73 74 61 63 6b 5b 73 74 61 63 6b 2e 6c 65 6e   stack[stack.len
132e0 67 74 68 20 2d 20 32 5d 2e 70 72 65 63 29 29 20  gth - 2].prec)) 
132f0 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  {.  .           
13300 20 20 20 20 20 20 20 20 20 72 69 67 68 74 20 3d           right =
13310 20 73 74 61 63 6b 2e 70 6f 70 28 29 3b 0a 20 20   stack.pop();.  
13320 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13330 20 20 20 20 20 76 61 72 20 6f 70 65 72 61 74 6f       var operato
13340 72 20 3d 20 73 74 61 63 6b 2e 70 6f 70 28 29 2e  r = stack.pop().
13350 76 61 6c 75 65 3b 0a 20 20 09 20 20 20 20 20 20  value;.  .      
13360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 65                le
13370 66 74 20 3d 20 73 74 61 63 6b 2e 70 6f 70 28 29  ft = stack.pop()
13380 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
13390 20 20 20 20 20 20 20 20 20 6d 61 72 6b 65 72 73           markers
133a0 2e 70 6f 70 28 29 3b 0a 20 20 09 20 20 20 20 20  .pop();.  .     
133b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76                 v
133c0 61 72 20 6e 6f 64 65 20 3d 20 74 68 69 73 24 31  ar node = this$1
133d0 2e 73 74 61 72 74 4e 6f 64 65 28 6d 61 72 6b 65  .startNode(marke
133e0 72 73 5b 6d 61 72 6b 65 72 73 2e 6c 65 6e 67 74  rs[markers.lengt
133f0 68 20 2d 20 31 5d 29 3b 0a 20 20 09 20 20 20 20  h - 1]);.  .    
13400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13410 73 74 61 63 6b 2e 70 75 73 68 28 74 68 69 73 24  stack.push(this$
13420 31 2e 66 69 6e 61 6c 69 7a 65 28 6e 6f 64 65 2c  1.finalize(node,
13430 20 6e 65 77 20 4e 6f 64 65 2e 42 69 6e 61 72 79   new Node.Binary
13440 45 78 70 72 65 73 73 69 6f 6e 28 6f 70 65 72 61  Expression(opera
13450 74 6f 72 2c 20 6c 65 66 74 2c 20 72 69 67 68 74  tor, left, right
13460 29 29 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  )));.  .        
13470 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20          }.  .   
13480 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
13490 53 68 69 66 74 2e 0a 20 20 09 20 20 20 20 20 20  Shift..  .      
134a0 20 20 20 20 20 20 20 20 20 20 74 6f 6b 65 6e 20            token 
134b0 3d 20 74 68 69 73 24 31 2e 6e 65 78 74 54 6f 6b  = this$1.nextTok
134c0 65 6e 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20  en();.  .       
134d0 20 20 20 20 20 20 20 20 20 74 6f 6b 65 6e 2e 70           token.p
134e0 72 65 63 20 3d 20 70 72 65 63 3b 0a 20 20 09 20  rec = prec;.  . 
134f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
13500 74 61 63 6b 2e 70 75 73 68 28 74 6f 6b 65 6e 29  tack.push(token)
13510 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
13520 20 20 20 20 20 6d 61 72 6b 65 72 73 2e 70 75 73       markers.pus
13530 68 28 74 68 69 73 24 31 2e 6c 6f 6f 6b 61 68 65  h(this$1.lookahe
13540 61 64 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  ad);.  .        
13550 20 20 20 20 20 20 20 20 73 74 61 63 6b 2e 70 75          stack.pu
13560 73 68 28 74 68 69 73 24 31 2e 69 73 6f 6c 61 74  sh(this$1.isolat
13570 65 43 6f 76 65 72 47 72 61 6d 6d 61 72 28 74 68  eCoverGrammar(th
13580 69 73 24 31 2e 70 61 72 73 65 45 78 70 6f 6e 65  is$1.parseExpone
13590 6e 74 69 61 74 69 6f 6e 45 78 70 72 65 73 73 69  ntiationExpressi
135a0 6f 6e 29 29 3b 0a 20 20 09 20 20 20 20 20 20 20  on));.  .       
135b0 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20       }.  .      
135c0 20 20 20 20 20 20 2f 2f 20 46 69 6e 61 6c 20 72        // Final r
135d0 65 64 75 63 65 20 74 6f 20 63 6c 65 61 6e 2d 75  educe to clean-u
135e0 70 20 74 68 65 20 73 74 61 63 6b 2e 0a 20 20 09  p the stack..  .
135f0 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20              var 
13600 69 20 3d 20 73 74 61 63 6b 2e 6c 65 6e 67 74 68  i = stack.length
13610 20 2d 20 31 3b 0a 20 20 09 20 20 20 20 20 20 20   - 1;.  .       
13620 20 20 20 20 20 65 78 70 72 20 3d 20 73 74 61 63       expr = stac
13630 6b 5b 69 5d 3b 0a 20 20 09 20 20 20 20 20 20 20  k[i];.  .       
13640 20 20 20 20 20 6d 61 72 6b 65 72 73 2e 70 6f 70       markers.pop
13650 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ();.  .         
13660 20 20 20 77 68 69 6c 65 20 28 69 20 3e 20 31 29     while (i > 1)
13670 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   {.  .          
13680 20 20 20 20 20 20 76 61 72 20 6e 6f 64 65 20 3d        var node =
13690 20 74 68 69 73 24 31 2e 73 74 61 72 74 4e 6f 64   this$1.startNod
136a0 65 28 6d 61 72 6b 65 72 73 2e 70 6f 70 28 29 29  e(markers.pop())
136b0 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
136c0 20 20 20 20 20 65 78 70 72 20 3d 20 74 68 69 73       expr = this
136d0 24 31 2e 66 69 6e 61 6c 69 7a 65 28 6e 6f 64 65  $1.finalize(node
136e0 2c 20 6e 65 77 20 4e 6f 64 65 2e 42 69 6e 61 72  , new Node.Binar
136f0 79 45 78 70 72 65 73 73 69 6f 6e 28 73 74 61 63  yExpression(stac
13700 6b 5b 69 20 2d 20 31 5d 2e 76 61 6c 75 65 2c 20  k[i - 1].value, 
13710 73 74 61 63 6b 5b 69 20 2d 20 32 5d 2c 20 65 78  stack[i - 2], ex
13720 70 72 29 29 3b 0a 20 20 09 20 20 20 20 20 20 20  pr));.  .       
13730 20 20 20 20 20 20 20 20 20 69 20 2d 3d 20 32 3b           i -= 2;
13740 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
13750 7d 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a 20  }.  .        }. 
13760 20 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e   .        return
13770 20 65 78 70 72 3b 0a 20 20 09 20 20 20 20 7d 3b   expr;.  .    };
13780 0a 20 20 09 20 20 20 20 2f 2f 20 45 43 4d 41 2d  .  .    // ECMA-
13790 32 36 32 20 31 32 2e 31 34 20 43 6f 6e 64 69 74  262 12.14 Condit
137a0 69 6f 6e 61 6c 20 4f 70 65 72 61 74 6f 72 0a 20  ional Operator. 
137b0 20 09 20 20 20 20 50 61 72 73 65 72 2e 70 72 6f   .    Parser.pro
137c0 74 6f 74 79 70 65 2e 70 61 72 73 65 43 6f 6e 64  totype.parseCond
137d0 69 74 69 6f 6e 61 6c 45 78 70 72 65 73 73 69 6f  itionalExpressio
137e0 6e 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20  n = function () 
137f0 7b 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72  {.  .        var
13800 20 73 74 61 72 74 54 6f 6b 65 6e 20 3d 20 74 68   startToken = th
13810 69 73 2e 6c 6f 6f 6b 61 68 65 61 64 3b 0a 20 20  is.lookahead;.  
13820 09 20 20 20 20 20 20 20 20 76 61 72 20 65 78 70  .        var exp
13830 72 20 3d 20 74 68 69 73 2e 69 6e 68 65 72 69 74  r = this.inherit
13840 43 6f 76 65 72 47 72 61 6d 6d 61 72 28 74 68 69  CoverGrammar(thi
13850 73 2e 70 61 72 73 65 42 69 6e 61 72 79 45 78 70  s.parseBinaryExp
13860 72 65 73 73 69 6f 6e 29 3b 0a 20 20 09 20 20 20  ression);.  .   
13870 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 6d 61       if (this.ma
13880 74 63 68 28 27 3f 27 29 29 20 7b 0a 20 20 09 20  tch('?')) {.  . 
13890 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
138a0 6e 65 78 74 54 6f 6b 65 6e 28 29 3b 0a 20 20 09  nextToken();.  .
138b0 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20              var 
138c0 70 72 65 76 69 6f 75 73 41 6c 6c 6f 77 49 6e 20  previousAllowIn 
138d0 3d 20 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e 61  = this.context.a
138e0 6c 6c 6f 77 49 6e 3b 0a 20 20 09 20 20 20 20 20  llowIn;.  .     
138f0 20 20 20 20 20 20 20 74 68 69 73 2e 63 6f 6e 74         this.cont
13900 65 78 74 2e 61 6c 6c 6f 77 49 6e 20 3d 20 74 72  ext.allowIn = tr
13910 75 65 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ue;.  .         
13920 20 20 20 76 61 72 20 63 6f 6e 73 65 71 75 65 6e     var consequen
13930 74 20 3d 20 74 68 69 73 2e 69 73 6f 6c 61 74 65  t = this.isolate
13940 43 6f 76 65 72 47 72 61 6d 6d 61 72 28 74 68 69  CoverGrammar(thi
13950 73 2e 70 61 72 73 65 41 73 73 69 67 6e 6d 65 6e  s.parseAssignmen
13960 74 45 78 70 72 65 73 73 69 6f 6e 29 3b 0a 20 20  tExpression);.  
13970 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
13980 73 2e 63 6f 6e 74 65 78 74 2e 61 6c 6c 6f 77 49  s.context.allowI
13990 6e 20 3d 20 70 72 65 76 69 6f 75 73 41 6c 6c 6f  n = previousAllo
139a0 77 49 6e 3b 0a 20 20 09 20 20 20 20 20 20 20 20  wIn;.  .        
139b0 20 20 20 20 74 68 69 73 2e 65 78 70 65 63 74 28      this.expect(
139c0 27 3a 27 29 3b 0a 20 20 09 20 20 20 20 20 20 20  ':');.  .       
139d0 20 20 20 20 20 76 61 72 20 61 6c 74 65 72 6e 61       var alterna
139e0 74 65 20 3d 20 74 68 69 73 2e 69 73 6f 6c 61 74  te = this.isolat
139f0 65 43 6f 76 65 72 47 72 61 6d 6d 61 72 28 74 68  eCoverGrammar(th
13a00 69 73 2e 70 61 72 73 65 41 73 73 69 67 6e 6d 65  is.parseAssignme
13a10 6e 74 45 78 70 72 65 73 73 69 6f 6e 29 3b 0a 20  ntExpression);. 
13a20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 65 78   .            ex
13a30 70 72 20 3d 20 74 68 69 73 2e 66 69 6e 61 6c 69  pr = this.finali
13a40 7a 65 28 74 68 69 73 2e 73 74 61 72 74 4e 6f 64  ze(this.startNod
13a50 65 28 73 74 61 72 74 54 6f 6b 65 6e 29 2c 20 6e  e(startToken), n
13a60 65 77 20 4e 6f 64 65 2e 43 6f 6e 64 69 74 69 6f  ew Node.Conditio
13a70 6e 61 6c 45 78 70 72 65 73 73 69 6f 6e 28 65 78  nalExpression(ex
13a80 70 72 2c 20 63 6f 6e 73 65 71 75 65 6e 74 2c 20  pr, consequent, 
13a90 61 6c 74 65 72 6e 61 74 65 29 29 3b 0a 20 20 09  alternate));.  .
13aa0 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
13ab0 2e 63 6f 6e 74 65 78 74 2e 69 73 41 73 73 69 67  .context.isAssig
13ac0 6e 6d 65 6e 74 54 61 72 67 65 74 20 3d 20 66 61  nmentTarget = fa
13ad0 6c 73 65 3b 0a 20 20 09 20 20 20 20 20 20 20 20  lse;.  .        
13ae0 20 20 20 20 74 68 69 73 2e 63 6f 6e 74 65 78 74      this.context
13af0 2e 69 73 42 69 6e 64 69 6e 67 45 6c 65 6d 65 6e  .isBindingElemen
13b00 74 20 3d 20 66 61 6c 73 65 3b 0a 20 20 09 20 20  t = false;.  .  
13b10 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20        }.  .     
13b20 20 20 20 72 65 74 75 72 6e 20 65 78 70 72 3b 0a     return expr;.
13b30 20 20 09 20 20 20 20 7d 3b 0a 20 20 09 20 20 20    .    };.  .   
13b40 20 2f 2f 20 45 43 4d 41 2d 32 36 32 20 31 32 2e   // ECMA-262 12.
13b50 31 35 20 41 73 73 69 67 6e 6d 65 6e 74 20 4f 70  15 Assignment Op
13b60 65 72 61 74 6f 72 73 0a 20 20 09 20 20 20 20 50  erators.  .    P
13b70 61 72 73 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e  arser.prototype.
13b80 63 68 65 63 6b 50 61 74 74 65 72 6e 50 61 72 61  checkPatternPara
13b90 6d 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 6f 70  m = function (op
13ba0 74 69 6f 6e 73 2c 20 70 61 72 61 6d 29 20 7b 0a  tions, param) {.
13bb0 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20 74    .        var t
13bc0 68 69 73 24 31 20 3d 20 74 68 69 73 3b 0a 0a 20  his$1 = this;.. 
13bd0 20 09 20 20 20 20 20 20 20 20 73 77 69 74 63 68   .        switch
13be0 20 28 70 61 72 61 6d 2e 74 79 70 65 29 20 7b 0a   (param.type) {.
13bf0 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 63    .            c
13c00 61 73 65 20 73 79 6e 74 61 78 5f 31 2e 53 79 6e  ase syntax_1.Syn
13c10 74 61 78 2e 49 64 65 6e 74 69 66 69 65 72 3a 0a  tax.Identifier:.
13c20 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
13c30 20 20 20 74 68 69 73 2e 76 61 6c 69 64 61 74 65     this.validate
13c40 50 61 72 61 6d 28 6f 70 74 69 6f 6e 73 2c 20 70  Param(options, p
13c50 61 72 61 6d 2c 20 70 61 72 61 6d 2e 6e 61 6d 65  aram, param.name
13c60 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  );.  .          
13c70 20 20 20 20 20 20 62 72 65 61 6b 3b 0a 20 20 09        break;.  .
13c80 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
13c90 20 73 79 6e 74 61 78 5f 31 2e 53 79 6e 74 61 78   syntax_1.Syntax
13ca0 2e 52 65 73 74 45 6c 65 6d 65 6e 74 3a 0a 20 20  .RestElement:.  
13cb0 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13cc0 20 74 68 69 73 2e 63 68 65 63 6b 50 61 74 74 65   this.checkPatte
13cd0 72 6e 50 61 72 61 6d 28 6f 70 74 69 6f 6e 73 2c  rnParam(options,
13ce0 20 70 61 72 61 6d 2e 61 72 67 75 6d 65 6e 74 29   param.argument)
13cf0 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
13d00 20 20 20 20 20 62 72 65 61 6b 3b 0a 20 20 09 20       break;.  . 
13d10 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
13d20 73 79 6e 74 61 78 5f 31 2e 53 79 6e 74 61 78 2e  syntax_1.Syntax.
13d30 41 73 73 69 67 6e 6d 65 6e 74 50 61 74 74 65 72  AssignmentPatter
13d40 6e 3a 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  n:.  .          
13d50 20 20 20 20 20 20 74 68 69 73 2e 63 68 65 63 6b        this.check
13d60 50 61 74 74 65 72 6e 50 61 72 61 6d 28 6f 70 74  PatternParam(opt
13d70 69 6f 6e 73 2c 20 70 61 72 61 6d 2e 6c 65 66 74  ions, param.left
13d80 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  );.  .          
13d90 20 20 20 20 20 20 62 72 65 61 6b 3b 0a 20 20 09        break;.  .
13da0 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
13db0 20 73 79 6e 74 61 78 5f 31 2e 53 79 6e 74 61 78   syntax_1.Syntax
13dc0 2e 41 72 72 61 79 50 61 74 74 65 72 6e 3a 0a 20  .ArrayPattern:. 
13dd0 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
13de0 20 20 66 6f 72 20 28 76 61 72 20 69 20 3d 20 30    for (var i = 0
13df0 3b 20 69 20 3c 20 70 61 72 61 6d 2e 65 6c 65 6d  ; i < param.elem
13e00 65 6e 74 73 2e 6c 65 6e 67 74 68 3b 20 69 2b 2b  ents.length; i++
13e10 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ) {.  .         
13e20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70             if (p
13e30 61 72 61 6d 2e 65 6c 65 6d 65 6e 74 73 5b 69 5d  aram.elements[i]
13e40 20 21 3d 3d 20 6e 75 6c 6c 29 20 7b 0a 20 20 09   !== null) {.  .
13e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13e60 20 20 20 20 20 20 20 20 74 68 69 73 24 31 2e 63          this$1.c
13e70 68 65 63 6b 50 61 74 74 65 72 6e 50 61 72 61 6d  heckPatternParam
13e80 28 6f 70 74 69 6f 6e 73 2c 20 70 61 72 61 6d 2e  (options, param.
13e90 65 6c 65 6d 65 6e 74 73 5b 69 5d 29 3b 0a 20 20  elements[i]);.  
13ea0 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13eb0 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20       }.  .      
13ec0 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20            }.  . 
13ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
13ee0 72 65 61 6b 3b 0a 20 20 09 20 20 20 20 20 20 20  reak;.  .       
13ef0 20 20 20 20 20 63 61 73 65 20 73 79 6e 74 61 78       case syntax
13f00 5f 31 2e 53 79 6e 74 61 78 2e 59 69 65 6c 64 45  _1.Syntax.YieldE
13f10 78 70 72 65 73 73 69 6f 6e 3a 0a 20 20 09 20 20  xpression:.  .  
13f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72                br
13f30 65 61 6b 3b 0a 20 20 09 20 20 20 20 20 20 20 20  eak;.  .        
13f40 20 20 20 20 64 65 66 61 75 6c 74 3a 0a 20 20 09      default:.  .
13f50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13f60 61 73 73 65 72 74 5f 31 2e 61 73 73 65 72 74 28  assert_1.assert(
13f70 70 61 72 61 6d 2e 74 79 70 65 20 3d 3d 3d 20 73  param.type === s
13f80 79 6e 74 61 78 5f 31 2e 53 79 6e 74 61 78 2e 4f  yntax_1.Syntax.O
13f90 62 6a 65 63 74 50 61 74 74 65 72 6e 2c 20 27 49  bjectPattern, 'I
13fa0 6e 76 61 6c 69 64 20 74 79 70 65 27 29 3b 0a 20  nvalid type');. 
13fb0 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
13fc0 20 20 66 6f 72 20 28 76 61 72 20 69 20 3d 20 30    for (var i = 0
13fd0 3b 20 69 20 3c 20 70 61 72 61 6d 2e 70 72 6f 70  ; i < param.prop
13fe0 65 72 74 69 65 73 2e 6c 65 6e 67 74 68 3b 20 69  erties.length; i
13ff0 2b 2b 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20  ++) {.  .       
14000 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
14010 73 24 31 2e 63 68 65 63 6b 50 61 74 74 65 72 6e  s$1.checkPattern
14020 50 61 72 61 6d 28 6f 70 74 69 6f 6e 73 2c 20 70  Param(options, p
14030 61 72 61 6d 2e 70 72 6f 70 65 72 74 69 65 73 5b  aram.properties[
14040 69 5d 2e 76 61 6c 75 65 29 3b 0a 20 20 09 20 20  i].value);.  .  
14050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a                }.
14060 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
14070 20 20 20 62 72 65 61 6b 3b 0a 20 20 09 20 20 20     break;.  .   
14080 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 7d 3b       }.  .    };
14090 0a 20 20 09 20 20 20 20 50 61 72 73 65 72 2e 70  .  .    Parser.p
140a0 72 6f 74 6f 74 79 70 65 2e 72 65 69 6e 74 65 72  rototype.reinter
140b0 70 72 65 74 41 73 43 6f 76 65 72 46 6f 72 6d 61  pretAsCoverForma
140c0 6c 73 4c 69 73 74 20 3d 20 66 75 6e 63 74 69 6f  lsList = functio
140d0 6e 20 28 65 78 70 72 29 20 7b 0a 20 20 09 20 20  n (expr) {.  .  
140e0 20 20 20 20 20 20 76 61 72 20 74 68 69 73 24 31        var this$1
140f0 20 3d 20 74 68 69 73 3b 0a 0a 20 20 09 20 20 20   = this;..  .   
14100 20 20 20 20 20 76 61 72 20 70 61 72 61 6d 73 20       var params 
14110 3d 20 5b 65 78 70 72 5d 3b 0a 20 20 09 20 20 20  = [expr];.  .   
14120 20 20 20 20 20 76 61 72 20 6f 70 74 69 6f 6e 73       var options
14130 3b 0a 20 20 09 20 20 20 20 20 20 20 20 73 77 69  ;.  .        swi
14140 74 63 68 20 28 65 78 70 72 2e 74 79 70 65 29 20  tch (expr.type) 
14150 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  {.  .           
14160 20 63 61 73 65 20 73 79 6e 74 61 78 5f 31 2e 53   case syntax_1.S
14170 79 6e 74 61 78 2e 49 64 65 6e 74 69 66 69 65 72  yntax.Identifier
14180 3a 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  :.  .           
14190 20 20 20 20 20 62 72 65 61 6b 3b 0a 20 20 09 20       break;.  . 
141a0 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
141b0 41 72 72 6f 77 50 61 72 61 6d 65 74 65 72 50 6c  ArrowParameterPl
141c0 61 63 65 48 6f 6c 64 65 72 3a 0a 20 20 09 20 20  aceHolder:.  .  
141d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 61                pa
141e0 72 61 6d 73 20 3d 20 65 78 70 72 2e 70 61 72 61  rams = expr.para
141f0 6d 73 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ms;.  .         
14200 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0a 20 20         break;.  
14210 09 20 20 20 20 20 20 20 20 20 20 20 20 64 65 66  .            def
14220 61 75 6c 74 3a 0a 20 20 09 20 20 20 20 20 20 20  ault:.  .       
14230 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
14240 6e 75 6c 6c 3b 0a 20 20 09 20 20 20 20 20 20 20  null;.  .       
14250 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 6f 70   }.  .        op
14260 74 69 6f 6e 73 20 3d 20 7b 0a 20 20 09 20 20 20  tions = {.  .   
14270 20 20 20 20 20 20 20 20 20 70 61 72 61 6d 53 65           paramSe
14280 74 3a 20 7b 7d 0a 20 20 09 20 20 20 20 20 20 20  t: {}.  .       
14290 20 7d 3b 0a 20 20 09 20 20 20 20 20 20 20 20 66   };.  .        f
142a0 6f 72 20 28 76 61 72 20 69 20 3d 20 30 3b 20 69  or (var i = 0; i
142b0 20 3c 20 70 61 72 61 6d 73 2e 6c 65 6e 67 74 68   < params.length
142c0 3b 20 2b 2b 69 29 20 7b 0a 20 20 09 20 20 20 20  ; ++i) {.  .    
142d0 20 20 20 20 20 20 20 20 76 61 72 20 70 61 72 61          var para
142e0 6d 20 3d 20 70 61 72 61 6d 73 5b 69 5d 3b 0a 20  m = params[i];. 
142f0 20 09 20 20 20 20 20 20 20 20 20 20 20 20 69 66   .            if
14300 20 28 70 61 72 61 6d 2e 74 79 70 65 20 3d 3d 3d   (param.type ===
14310 20 73 79 6e 74 61 78 5f 31 2e 53 79 6e 74 61 78   syntax_1.Syntax
14320 2e 41 73 73 69 67 6e 6d 65 6e 74 50 61 74 74 65  .AssignmentPatte
14330 72 6e 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20  rn) {.  .       
14340 20 20 20 20 20 20 20 20 20 69 66 20 28 70 61 72           if (par
14350 61 6d 2e 72 69 67 68 74 2e 74 79 70 65 20 3d 3d  am.right.type ==
14360 3d 20 73 79 6e 74 61 78 5f 31 2e 53 79 6e 74 61  = syntax_1.Synta
14370 78 2e 59 69 65 6c 64 45 78 70 72 65 73 73 69 6f  x.YieldExpressio
14380 6e 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20  n) {.  .        
14390 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
143a0 70 61 72 61 6d 2e 72 69 67 68 74 2e 61 72 67 75  param.right.argu
143b0 6d 65 6e 74 29 20 7b 0a 20 20 09 20 20 20 20 20  ment) {.  .     
143c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
143d0 20 20 20 74 68 69 73 24 31 2e 74 68 72 6f 77 55     this$1.throwU
143e0 6e 65 78 70 65 63 74 65 64 54 6f 6b 65 6e 28 74  nexpectedToken(t
143f0 68 69 73 24 31 2e 6c 6f 6f 6b 61 68 65 61 64 29  his$1.lookahead)
14400 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
14410 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20           }.  .  
14420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14430 20 20 70 61 72 61 6d 2e 72 69 67 68 74 2e 74 79    param.right.ty
14440 70 65 20 3d 20 73 79 6e 74 61 78 5f 31 2e 53 79  pe = syntax_1.Sy
14450 6e 74 61 78 2e 49 64 65 6e 74 69 66 69 65 72 3b  ntax.Identifier;
14460 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
14470 20 20 20 20 20 20 20 20 70 61 72 61 6d 2e 72 69          param.ri
14480 67 68 74 2e 6e 61 6d 65 20 3d 20 27 79 69 65 6c  ght.name = 'yiel
14490 64 27 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  d';.  .         
144a0 20 20 20 20 20 20 20 20 20 20 20 64 65 6c 65 74             delet
144b0 65 20 70 61 72 61 6d 2e 72 69 67 68 74 2e 61 72  e param.right.ar
144c0 67 75 6d 65 6e 74 3b 0a 20 20 09 20 20 20 20 20  gument;.  .     
144d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
144e0 65 6c 65 74 65 20 70 61 72 61 6d 2e 72 69 67 68  elete param.righ
144f0 74 2e 64 65 6c 65 67 61 74 65 3b 0a 20 20 09 20  t.delegate;.  . 
14500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
14510 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
14520 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  }.  .           
14530 20 74 68 69 73 24 31 2e 63 68 65 63 6b 50 61 74   this$1.checkPat
14540 74 65 72 6e 50 61 72 61 6d 28 6f 70 74 69 6f 6e  ternParam(option
14550 73 2c 20 70 61 72 61 6d 29 3b 0a 20 20 09 20 20  s, param);.  .  
14560 20 20 20 20 20 20 20 20 20 20 70 61 72 61 6d 73            params
14570 5b 69 5d 20 3d 20 70 61 72 61 6d 3b 0a 20 20 09  [i] = param;.  .
14580 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20          }.  .   
14590 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 63 6f       if (this.co
145a0 6e 74 65 78 74 2e 73 74 72 69 63 74 20 7c 7c 20  ntext.strict || 
145b0 21 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e 61 6c  !this.context.al
145c0 6c 6f 77 59 69 65 6c 64 29 20 7b 0a 20 20 09 20  lowYield) {.  . 
145d0 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28             for (
145e0 76 61 72 20 69 20 3d 20 30 3b 20 69 20 3c 20 70  var i = 0; i < p
145f0 61 72 61 6d 73 2e 6c 65 6e 67 74 68 3b 20 2b 2b  arams.length; ++
14600 69 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20  i) {.  .        
14610 20 20 20 20 20 20 20 20 76 61 72 20 70 61 72 61          var para
14620 6d 20 3d 20 70 61 72 61 6d 73 5b 69 5d 3b 0a 20  m = params[i];. 
14630 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
14640 20 20 69 66 20 28 70 61 72 61 6d 2e 74 79 70 65    if (param.type
14650 20 3d 3d 3d 20 73 79 6e 74 61 78 5f 31 2e 53 79   === syntax_1.Sy
14660 6e 74 61 78 2e 59 69 65 6c 64 45 78 70 72 65 73  ntax.YieldExpres
14670 73 69 6f 6e 29 20 7b 0a 20 20 09 20 20 20 20 20  sion) {.  .     
14680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
14690 68 69 73 24 31 2e 74 68 72 6f 77 55 6e 65 78 70  his$1.throwUnexp
146a0 65 63 74 65 64 54 6f 6b 65 6e 28 74 68 69 73 24  ectedToken(this$
146b0 31 2e 6c 6f 6f 6b 61 68 65 61 64 29 3b 0a 20 20  1.lookahead);.  
146c0 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
146d0 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   }.  .          
146e0 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 7d    }.  .        }
146f0 0a 20 20 09 20 20 20 20 20 20 20 20 69 66 20 28  .  .        if (
14700 6f 70 74 69 6f 6e 73 2e 6d 65 73 73 61 67 65 20  options.message 
14710 3d 3d 3d 20 6d 65 73 73 61 67 65 73 5f 31 2e 4d  === messages_1.M
14720 65 73 73 61 67 65 73 2e 53 74 72 69 63 74 50 61  essages.StrictPa
14730 72 61 6d 44 75 70 65 29 20 7b 0a 20 20 09 20 20  ramDupe) {.  .  
14740 20 20 20 20 20 20 20 20 20 20 76 61 72 20 74 6f            var to
14750 6b 65 6e 20 3d 20 74 68 69 73 2e 63 6f 6e 74 65  ken = this.conte
14760 78 74 2e 73 74 72 69 63 74 20 3f 20 6f 70 74 69  xt.strict ? opti
14770 6f 6e 73 2e 73 74 72 69 63 74 65 64 20 3a 20 6f  ons.stricted : o
14780 70 74 69 6f 6e 73 2e 66 69 72 73 74 52 65 73 74  ptions.firstRest
14790 72 69 63 74 65 64 3b 0a 20 20 09 20 20 20 20 20  ricted;.  .     
147a0 20 20 20 20 20 20 20 74 68 69 73 2e 74 68 72 6f         this.thro
147b0 77 55 6e 65 78 70 65 63 74 65 64 54 6f 6b 65 6e  wUnexpectedToken
147c0 28 74 6f 6b 65 6e 2c 20 6f 70 74 69 6f 6e 73 2e  (token, options.
147d0 6d 65 73 73 61 67 65 29 3b 0a 20 20 09 20 20 20  message);.  .   
147e0 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20       }.  .      
147f0 20 20 72 65 74 75 72 6e 20 7b 0a 20 20 09 20 20    return {.  .  
14800 20 20 20 20 20 20 20 20 20 20 70 61 72 61 6d 73            params
14810 3a 20 70 61 72 61 6d 73 2c 0a 20 20 09 20 20 20  : params,.  .   
14820 20 20 20 20 20 20 20 20 20 73 74 72 69 63 74 65           stricte
14830 64 3a 20 6f 70 74 69 6f 6e 73 2e 73 74 72 69 63  d: options.stric
14840 74 65 64 2c 0a 20 20 09 20 20 20 20 20 20 20 20  ted,.  .        
14850 20 20 20 20 66 69 72 73 74 52 65 73 74 72 69 63      firstRestric
14860 74 65 64 3a 20 6f 70 74 69 6f 6e 73 2e 66 69 72  ted: options.fir
14870 73 74 52 65 73 74 72 69 63 74 65 64 2c 0a 20 20  stRestricted,.  
14880 09 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 73  .            mes
14890 73 61 67 65 3a 20 6f 70 74 69 6f 6e 73 2e 6d 65  sage: options.me
148a0 73 73 61 67 65 0a 20 20 09 20 20 20 20 20 20 20  ssage.  .       
148b0 20 7d 3b 0a 20 20 09 20 20 20 20 7d 3b 0a 20 20   };.  .    };.  
148c0 09 20 20 20 20 50 61 72 73 65 72 2e 70 72 6f 74  .    Parser.prot
148d0 6f 74 79 70 65 2e 70 61 72 73 65 41 73 73 69 67  otype.parseAssig
148e0 6e 6d 65 6e 74 45 78 70 72 65 73 73 69 6f 6e 20  nmentExpression 
148f0 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a  = function () {.
14900 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20 65    .        var e
14910 78 70 72 3b 0a 20 20 09 20 20 20 20 20 20 20 20  xpr;.  .        
14920 69 66 20 28 21 74 68 69 73 2e 63 6f 6e 74 65 78  if (!this.contex
14930 74 2e 61 6c 6c 6f 77 59 69 65 6c 64 20 26 26 20  t.allowYield && 
14940 74 68 69 73 2e 6d 61 74 63 68 4b 65 79 77 6f 72  this.matchKeywor
14950 64 28 27 79 69 65 6c 64 27 29 29 20 7b 0a 20 20  d('yield')) {.  
14960 09 20 20 20 20 20 20 20 20 20 20 20 20 65 78 70  .            exp
14970 72 20 3d 20 74 68 69 73 2e 70 61 72 73 65 59 69  r = this.parseYi
14980 65 6c 64 45 78 70 72 65 73 73 69 6f 6e 28 29 3b  eldExpression();
14990 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a 20 20  .  .        }.  
149a0 09 20 20 20 20 20 20 20 20 65 6c 73 65 20 7b 0a  .        else {.
149b0 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 76    .            v
149c0 61 72 20 73 74 61 72 74 54 6f 6b 65 6e 20 3d 20  ar startToken = 
149d0 74 68 69 73 2e 6c 6f 6f 6b 61 68 65 61 64 3b 0a  this.lookahead;.
149e0 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 76    .            v
149f0 61 72 20 74 6f 6b 65 6e 20 3d 20 73 74 61 72 74  ar token = start
14a00 54 6f 6b 65 6e 3b 0a 20 20 09 20 20 20 20 20 20  Token;.  .      
14a10 20 20 20 20 20 20 65 78 70 72 20 3d 20 74 68 69        expr = thi
14a20 73 2e 70 61 72 73 65 43 6f 6e 64 69 74 69 6f 6e  s.parseCondition
14a30 61 6c 45 78 70 72 65 73 73 69 6f 6e 28 29 3b 0a  alExpression();.
14a40 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 69    .            i
14a50 66 20 28 65 78 70 72 2e 74 79 70 65 20 3d 3d 3d  f (expr.type ===
14a60 20 41 72 72 6f 77 50 61 72 61 6d 65 74 65 72 50   ArrowParameterP
14a70 6c 61 63 65 48 6f 6c 64 65 72 20 7c 7c 20 74 68  laceHolder || th
14a80 69 73 2e 6d 61 74 63 68 28 27 3d 3e 27 29 29 20  is.match('=>')) 
14a90 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  {.  .           
14aa0 20 20 20 20 20 2f 2f 20 45 43 4d 41 2d 32 36 32       // ECMA-262
14ab0 20 31 34 2e 32 20 41 72 72 6f 77 20 46 75 6e 63   14.2 Arrow Func
14ac0 74 69 6f 6e 20 44 65 66 69 6e 69 74 69 6f 6e 73  tion Definitions
14ad0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
14ae0 20 20 20 20 74 68 69 73 2e 63 6f 6e 74 65 78 74      this.context
14af0 2e 69 73 41 73 73 69 67 6e 6d 65 6e 74 54 61 72  .isAssignmentTar
14b00 67 65 74 20 3d 20 66 61 6c 73 65 3b 0a 20 20 09  get = false;.  .
14b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14b20 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e 69 73 42  this.context.isB
14b30 69 6e 64 69 6e 67 45 6c 65 6d 65 6e 74 20 3d 20  indingElement = 
14b40 66 61 6c 73 65 3b 0a 20 20 09 20 20 20 20 20 20  false;.  .      
14b50 20 20 20 20 20 20 20 20 20 20 76 61 72 20 6c 69            var li
14b60 73 74 20 3d 20 74 68 69 73 2e 72 65 69 6e 74 65  st = this.reinte
14b70 72 70 72 65 74 41 73 43 6f 76 65 72 46 6f 72 6d  rpretAsCoverForm
14b80 61 6c 73 4c 69 73 74 28 65 78 70 72 29 3b 0a 20  alsList(expr);. 
14b90 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
14ba0 20 20 69 66 20 28 6c 69 73 74 29 20 7b 0a 20 20    if (list) {.  
14bb0 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14bc0 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 68 61       if (this.ha
14bd0 73 4c 69 6e 65 54 65 72 6d 69 6e 61 74 6f 72 29  sLineTerminator)
14be0 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   {.  .          
14bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
14c00 69 73 2e 74 6f 6c 65 72 61 74 65 55 6e 65 78 70  is.tolerateUnexp
14c10 65 63 74 65 64 54 6f 6b 65 6e 28 74 68 69 73 2e  ectedToken(this.
14c20 6c 6f 6f 6b 61 68 65 61 64 29 3b 0a 20 20 09 20  lookahead);.  . 
14c30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14c40 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20     }.  .        
14c50 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
14c60 2e 63 6f 6e 74 65 78 74 2e 66 69 72 73 74 43 6f  .context.firstCo
14c70 76 65 72 49 6e 69 74 69 61 6c 69 7a 65 64 4e 61  verInitializedNa
14c80 6d 65 45 72 72 6f 72 20 3d 20 6e 75 6c 6c 3b 0a  meError = null;.
14c90 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
14ca0 20 20 20 20 20 20 20 76 61 72 20 70 72 65 76 69         var previ
14cb0 6f 75 73 53 74 72 69 63 74 20 3d 20 74 68 69 73  ousStrict = this
14cc0 2e 63 6f 6e 74 65 78 74 2e 73 74 72 69 63 74 3b  .context.strict;
14cd0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
14ce0 20 20 20 20 20 20 20 20 76 61 72 20 70 72 65 76          var prev
14cf0 69 6f 75 73 41 6c 6c 6f 77 59 69 65 6c 64 20 3d  iousAllowYield =
14d00 20 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e 61 6c   this.context.al
14d10 6c 6f 77 59 69 65 6c 64 3b 0a 20 20 09 20 20 20  lowYield;.  .   
14d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14d30 20 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e 61 6c   this.context.al
14d40 6c 6f 77 59 69 65 6c 64 20 3d 20 74 72 75 65 3b  lowYield = true;
14d50 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
14d60 20 20 20 20 20 20 20 20 76 61 72 20 6e 6f 64 65          var node
14d70 20 3d 20 74 68 69 73 2e 73 74 61 72 74 4e 6f 64   = this.startNod
14d80 65 28 73 74 61 72 74 54 6f 6b 65 6e 29 3b 0a 20  e(startToken);. 
14d90 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
14da0 20 20 20 20 20 20 74 68 69 73 2e 65 78 70 65 63        this.expec
14db0 74 28 27 3d 3e 27 29 3b 0a 20 20 09 20 20 20 20  t('=>');.  .    
14dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14dd0 76 61 72 20 62 6f 64 79 20 3d 20 74 68 69 73 2e  var body = this.
14de0 6d 61 74 63 68 28 27 7b 27 29 20 3f 20 74 68 69  match('{') ? thi
14df0 73 2e 70 61 72 73 65 46 75 6e 63 74 69 6f 6e 53  s.parseFunctionS
14e00 6f 75 72 63 65 45 6c 65 6d 65 6e 74 73 28 29 20  ourceElements() 
14e10 3a 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  :.  .           
14e20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
14e30 73 2e 69 73 6f 6c 61 74 65 43 6f 76 65 72 47 72  s.isolateCoverGr
14e40 61 6d 6d 61 72 28 74 68 69 73 2e 70 61 72 73 65  ammar(this.parse
14e50 41 73 73 69 67 6e 6d 65 6e 74 45 78 70 72 65 73  AssignmentExpres
14e60 73 69 6f 6e 29 3b 0a 20 20 09 20 20 20 20 20 20  sion);.  .      
14e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61                va
14e80 72 20 65 78 70 72 65 73 73 69 6f 6e 20 3d 20 62  r expression = b
14e90 6f 64 79 2e 74 79 70 65 20 21 3d 3d 20 73 79 6e  ody.type !== syn
14ea0 74 61 78 5f 31 2e 53 79 6e 74 61 78 2e 42 6c 6f  tax_1.Syntax.Blo
14eb0 63 6b 53 74 61 74 65 6d 65 6e 74 3b 0a 20 20 09  ckStatement;.  .
14ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14ed0 20 20 20 20 69 66 20 28 74 68 69 73 2e 63 6f 6e      if (this.con
14ee0 74 65 78 74 2e 73 74 72 69 63 74 20 26 26 20 6c  text.strict && l
14ef0 69 73 74 2e 66 69 72 73 74 52 65 73 74 72 69 63  ist.firstRestric
14f00 74 65 64 29 20 7b 0a 20 20 09 20 20 20 20 20 20  ted) {.  .      
14f10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14f20 20 20 74 68 69 73 2e 74 68 72 6f 77 55 6e 65 78    this.throwUnex
14f30 70 65 63 74 65 64 54 6f 6b 65 6e 28 6c 69 73 74  pectedToken(list
14f40 2e 66 69 72 73 74 52 65 73 74 72 69 63 74 65 64  .firstRestricted
14f50 2c 20 6c 69 73 74 2e 6d 65 73 73 61 67 65 29 3b  , list.message);
14f60 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
14f70 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20          }.  .   
14f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14f90 20 69 66 20 28 74 68 69 73 2e 63 6f 6e 74 65 78   if (this.contex
14fa0 74 2e 73 74 72 69 63 74 20 26 26 20 6c 69 73 74  t.strict && list
14fb0 2e 73 74 72 69 63 74 65 64 29 20 7b 0a 20 20 09  .stricted) {.  .
14fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14fd0 20 20 20 20 20 20 20 20 74 68 69 73 2e 74 6f 6c          this.tol
14fe0 65 72 61 74 65 55 6e 65 78 70 65 63 74 65 64 54  erateUnexpectedT
14ff0 6f 6b 65 6e 28 6c 69 73 74 2e 73 74 72 69 63 74  oken(list.strict
15000 65 64 2c 20 6c 69 73 74 2e 6d 65 73 73 61 67 65  ed, list.message
15010 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  );.  .          
15020 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20            }.  . 
15030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15040 20 20 20 65 78 70 72 20 3d 20 74 68 69 73 2e 66     expr = this.f
15050 69 6e 61 6c 69 7a 65 28 6e 6f 64 65 2c 20 6e 65  inalize(node, ne
15060 77 20 4e 6f 64 65 2e 41 72 72 6f 77 46 75 6e 63  w Node.ArrowFunc
15070 74 69 6f 6e 45 78 70 72 65 73 73 69 6f 6e 28 6c  tionExpression(l
15080 69 73 74 2e 70 61 72 61 6d 73 2c 20 62 6f 64 79  ist.params, body
15090 2c 20 65 78 70 72 65 73 73 69 6f 6e 29 29 3b 0a  , expression));.
150a0 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
150b0 20 20 20 20 20 20 20 74 68 69 73 2e 63 6f 6e 74         this.cont
150c0 65 78 74 2e 73 74 72 69 63 74 20 3d 20 70 72 65  ext.strict = pre
150d0 76 69 6f 75 73 53 74 72 69 63 74 3b 0a 20 20 09  viousStrict;.  .
150e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
150f0 20 20 20 20 74 68 69 73 2e 63 6f 6e 74 65 78 74      this.context
15100 2e 61 6c 6c 6f 77 59 69 65 6c 64 20 3d 20 70 72  .allowYield = pr
15110 65 76 69 6f 75 73 41 6c 6c 6f 77 59 69 65 6c 64  eviousAllowYield
15120 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
15130 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20       }.  .      
15140 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20        }.  .     
15150 20 20 20 20 20 20 20 65 6c 73 65 20 7b 0a 20 20         else {.  
15160 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15170 20 69 66 20 28 74 68 69 73 2e 6d 61 74 63 68 41   if (this.matchA
15180 73 73 69 67 6e 28 29 29 20 7b 0a 20 20 09 20 20  ssign()) {.  .  
15190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
151a0 20 20 69 66 20 28 21 74 68 69 73 2e 63 6f 6e 74    if (!this.cont
151b0 65 78 74 2e 69 73 41 73 73 69 67 6e 6d 65 6e 74  ext.isAssignment
151c0 54 61 72 67 65 74 29 20 7b 0a 20 20 09 20 20 20  Target) {.  .   
151d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
151e0 20 20 20 20 20 74 68 69 73 2e 74 6f 6c 65 72 61       this.tolera
151f0 74 65 45 72 72 6f 72 28 6d 65 73 73 61 67 65 73  teError(messages
15200 5f 31 2e 4d 65 73 73 61 67 65 73 2e 49 6e 76 61  _1.Messages.Inva
15210 6c 69 64 4c 48 53 49 6e 41 73 73 69 67 6e 6d 65  lidLHSInAssignme
15220 6e 74 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  nt);.  .        
15230 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20              }.  
15240 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15250 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 63 6f       if (this.co
15260 6e 74 65 78 74 2e 73 74 72 69 63 74 20 26 26 20  ntext.strict && 
15270 65 78 70 72 2e 74 79 70 65 20 3d 3d 3d 20 73 79  expr.type === sy
15280 6e 74 61 78 5f 31 2e 53 79 6e 74 61 78 2e 49 64  ntax_1.Syntax.Id
15290 65 6e 74 69 66 69 65 72 29 20 7b 0a 20 20 09 20  entifier) {.  . 
152a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
152b0 20 20 20 20 20 20 20 76 61 72 20 69 64 20 3d 20         var id = 
152c0 28 65 78 70 72 29 3b 0a 20 20 09 20 20 20 20 20  (expr);.  .     
152d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
152e0 20 20 20 69 66 20 28 74 68 69 73 2e 73 63 61 6e     if (this.scan
152f0 6e 65 72 2e 69 73 52 65 73 74 72 69 63 74 65 64  ner.isRestricted
15300 57 6f 72 64 28 69 64 2e 6e 61 6d 65 29 29 20 7b  Word(id.name)) {
15310 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
15320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15330 74 68 69 73 2e 74 6f 6c 65 72 61 74 65 55 6e 65  this.tolerateUne
15340 78 70 65 63 74 65 64 54 6f 6b 65 6e 28 74 6f 6b  xpectedToken(tok
15350 65 6e 2c 20 6d 65 73 73 61 67 65 73 5f 31 2e 4d  en, messages_1.M
15360 65 73 73 61 67 65 73 2e 53 74 72 69 63 74 4c 48  essages.StrictLH
15370 53 41 73 73 69 67 6e 6d 65 6e 74 29 3b 0a 20 20  SAssignment);.  
15380 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15390 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20           }.  .  
153a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
153b0 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 73        if (this.s
153c0 63 61 6e 6e 65 72 2e 69 73 53 74 72 69 63 74 4d  canner.isStrictM
153d0 6f 64 65 52 65 73 65 72 76 65 64 57 6f 72 64 28  odeReservedWord(
153e0 69 64 2e 6e 61 6d 65 29 29 20 7b 0a 20 20 09 20  id.name)) {.  . 
153f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15400 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
15410 74 6f 6c 65 72 61 74 65 55 6e 65 78 70 65 63 74  tolerateUnexpect
15420 65 64 54 6f 6b 65 6e 28 74 6f 6b 65 6e 2c 20 6d  edToken(token, m
15430 65 73 73 61 67 65 73 5f 31 2e 4d 65 73 73 61 67  essages_1.Messag
15440 65 73 2e 53 74 72 69 63 74 52 65 73 65 72 76 65  es.StrictReserve
15450 64 57 6f 72 64 29 3b 0a 20 20 09 20 20 20 20 20  dWord);.  .     
15460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15470 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20     }.  .        
15480 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20              }.  
15490 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
154a0 20 20 20 20 20 69 66 20 28 21 74 68 69 73 2e 6d       if (!this.m
154b0 61 74 63 68 28 27 3d 27 29 29 20 7b 0a 20 20 09  atch('=')) {.  .
154c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
154d0 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 6f 6e          this.con
154e0 74 65 78 74 2e 69 73 41 73 73 69 67 6e 6d 65 6e  text.isAssignmen
154f0 74 54 61 72 67 65 74 20 3d 20 66 61 6c 73 65 3b  tTarget = false;
15500 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
15510 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
15520 2e 63 6f 6e 74 65 78 74 2e 69 73 42 69 6e 64 69  .context.isBindi
15530 6e 67 45 6c 65 6d 65 6e 74 20 3d 20 66 61 6c 73  ngElement = fals
15540 65 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  e;.  .          
15550 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20            }.  . 
15560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15570 20 20 20 65 6c 73 65 20 7b 0a 20 20 09 20 20 20     else {.  .   
15580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15590 20 20 20 20 20 74 68 69 73 2e 72 65 69 6e 74 65       this.reinte
155a0 72 70 72 65 74 45 78 70 72 65 73 73 69 6f 6e 41  rpretExpressionA
155b0 73 50 61 74 74 65 72 6e 28 65 78 70 72 29 3b 0a  sPattern(expr);.
155c0 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
155d0 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20         }.  .    
155e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
155f0 74 6f 6b 65 6e 20 3d 20 74 68 69 73 2e 6e 65 78  token = this.nex
15600 74 54 6f 6b 65 6e 28 29 3b 0a 20 20 09 20 20 20  tToken();.  .   
15610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15620 20 76 61 72 20 72 69 67 68 74 20 3d 20 74 68 69   var right = thi
15630 73 2e 69 73 6f 6c 61 74 65 43 6f 76 65 72 47 72  s.isolateCoverGr
15640 61 6d 6d 61 72 28 74 68 69 73 2e 70 61 72 73 65  ammar(this.parse
15650 41 73 73 69 67 6e 6d 65 6e 74 45 78 70 72 65 73  AssignmentExpres
15660 73 69 6f 6e 29 3b 0a 20 20 09 20 20 20 20 20 20  sion);.  .      
15670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 78                ex
15680 70 72 20 3d 20 74 68 69 73 2e 66 69 6e 61 6c 69  pr = this.finali
15690 7a 65 28 74 68 69 73 2e 73 74 61 72 74 4e 6f 64  ze(this.startNod
156a0 65 28 73 74 61 72 74 54 6f 6b 65 6e 29 2c 20 6e  e(startToken), n
156b0 65 77 20 4e 6f 64 65 2e 41 73 73 69 67 6e 6d 65  ew Node.Assignme
156c0 6e 74 45 78 70 72 65 73 73 69 6f 6e 28 74 6f 6b  ntExpression(tok
156d0 65 6e 2e 76 61 6c 75 65 2c 20 65 78 70 72 2c 20  en.value, expr, 
156e0 72 69 67 68 74 29 29 3b 0a 20 20 09 20 20 20 20  right));.  .    
156f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15700 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e 66 69 72  this.context.fir
15710 73 74 43 6f 76 65 72 49 6e 69 74 69 61 6c 69 7a  stCoverInitializ
15720 65 64 4e 61 6d 65 45 72 72 6f 72 20 3d 20 6e 75  edNameError = nu
15730 6c 6c 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ll;.  .         
15740 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20         }.  .    
15750 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20          }.  .   
15760 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20       }.  .      
15770 20 20 72 65 74 75 72 6e 20 65 78 70 72 3b 0a 20    return expr;. 
15780 20 09 20 20 20 20 7d 3b 0a 20 20 09 20 20 20 20   .    };.  .    
15790 2f 2f 20 45 43 4d 41 2d 32 36 32 20 31 32 2e 31  // ECMA-262 12.1
157a0 36 20 43 6f 6d 6d 61 20 4f 70 65 72 61 74 6f 72  6 Comma Operator
157b0 0a 20 20 09 20 20 20 20 50 61 72 73 65 72 2e 70  .  .    Parser.p
157c0 72 6f 74 6f 74 79 70 65 2e 70 61 72 73 65 45 78  rototype.parseEx
157d0 70 72 65 73 73 69 6f 6e 20 3d 20 66 75 6e 63 74  pression = funct
157e0 69 6f 6e 20 28 29 20 7b 0a 20 20 09 20 20 20 20  ion () {.  .    
157f0 20 20 20 20 76 61 72 20 74 68 69 73 24 31 20 3d      var this$1 =
15800 20 74 68 69 73 3b 0a 0a 20 20 09 20 20 20 20 20   this;..  .     
15810 20 20 20 76 61 72 20 73 74 61 72 74 54 6f 6b 65     var startToke
15820 6e 20 3d 20 74 68 69 73 2e 6c 6f 6f 6b 61 68 65  n = this.lookahe
15830 61 64 3b 0a 20 20 09 20 20 20 20 20 20 20 20 76  ad;.  .        v
15840 61 72 20 65 78 70 72 20 3d 20 74 68 69 73 2e 69  ar expr = this.i
15850 73 6f 6c 61 74 65 43 6f 76 65 72 47 72 61 6d 6d  solateCoverGramm
15860 61 72 28 74 68 69 73 2e 70 61 72 73 65 41 73 73  ar(this.parseAss
15870 69 67 6e 6d 65 6e 74 45 78 70 72 65 73 73 69 6f  ignmentExpressio
15880 6e 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 69  n);.  .        i
15890 66 20 28 74 68 69 73 2e 6d 61 74 63 68 28 27 2c  f (this.match(',
158a0 27 29 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20  ')) {.  .       
158b0 20 20 20 20 20 76 61 72 20 65 78 70 72 65 73 73       var express
158c0 69 6f 6e 73 20 3d 20 5b 5d 3b 0a 20 20 09 20 20  ions = [];.  .  
158d0 20 20 20 20 20 20 20 20 20 20 65 78 70 72 65 73            expres
158e0 73 69 6f 6e 73 2e 70 75 73 68 28 65 78 70 72 29  sions.push(expr)
158f0 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
15900 20 77 68 69 6c 65 20 28 74 68 69 73 2e 73 74 61   while (this.sta
15910 72 74 4d 61 72 6b 65 72 2e 69 6e 64 65 78 20 3c  rtMarker.index <
15920 20 74 68 69 73 2e 73 63 61 6e 6e 65 72 2e 6c 65   this.scanner.le
15930 6e 67 74 68 29 20 7b 0a 20 20 09 20 20 20 20 20  ngth) {.  .     
15940 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
15950 74 68 69 73 24 31 2e 6d 61 74 63 68 28 27 2c 27  this$1.match(','
15960 29 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20  )) {.  .        
15970 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61              brea
15980 6b 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  k;.  .          
15990 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20        }.  .     
159a0 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 24             this$
159b0 31 2e 6e 65 78 74 54 6f 6b 65 6e 28 29 3b 0a 20  1.nextToken();. 
159c0 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
159d0 20 20 65 78 70 72 65 73 73 69 6f 6e 73 2e 70 75    expressions.pu
159e0 73 68 28 74 68 69 73 24 31 2e 69 73 6f 6c 61 74  sh(this$1.isolat
159f0 65 43 6f 76 65 72 47 72 61 6d 6d 61 72 28 74 68  eCoverGrammar(th
15a00 69 73 24 31 2e 70 61 72 73 65 41 73 73 69 67 6e  is$1.parseAssign
15a10 6d 65 6e 74 45 78 70 72 65 73 73 69 6f 6e 29 29  mentExpression))
15a20 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
15a30 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   }.  .          
15a40 20 20 65 78 70 72 20 3d 20 74 68 69 73 2e 66 69    expr = this.fi
15a50 6e 61 6c 69 7a 65 28 74 68 69 73 2e 73 74 61 72  nalize(this.star
15a60 74 4e 6f 64 65 28 73 74 61 72 74 54 6f 6b 65 6e  tNode(startToken
15a70 29 2c 20 6e 65 77 20 4e 6f 64 65 2e 53 65 71 75  ), new Node.Sequ
15a80 65 6e 63 65 45 78 70 72 65 73 73 69 6f 6e 28 65  enceExpression(e
15a90 78 70 72 65 73 73 69 6f 6e 73 29 29 3b 0a 20 20  xpressions));.  
15aa0 09 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20  .        }.  .  
15ab0 20 20 20 20 20 20 72 65 74 75 72 6e 20 65 78 70        return exp
15ac0 72 3b 0a 20 20 09 20 20 20 20 7d 3b 0a 20 20 09  r;.  .    };.  .
15ad0 20 20 20 20 2f 2f 20 45 43 4d 41 2d 32 36 32 20      // ECMA-262 
15ae0 31 33 2e 32 20 42 6c 6f 63 6b 0a 20 20 09 20 20  13.2 Block.  .  
15af0 20 20 50 61 72 73 65 72 2e 70 72 6f 74 6f 74 79    Parser.prototy
15b00 70 65 2e 70 61 72 73 65 53 74 61 74 65 6d 65 6e  pe.parseStatemen
15b10 74 4c 69 73 74 49 74 65 6d 20 3d 20 66 75 6e 63  tListItem = func
15b20 74 69 6f 6e 20 28 29 20 7b 0a 20 20 09 20 20 20  tion () {.  .   
15b30 20 20 20 20 20 76 61 72 20 73 74 61 74 65 6d 65       var stateme
15b40 6e 74 20 3d 20 6e 75 6c 6c 3b 0a 20 20 09 20 20  nt = null;.  .  
15b50 20 20 20 20 20 20 74 68 69 73 2e 63 6f 6e 74 65        this.conte
15b60 78 74 2e 69 73 41 73 73 69 67 6e 6d 65 6e 74 54  xt.isAssignmentT
15b70 61 72 67 65 74 20 3d 20 74 72 75 65 3b 0a 20 20  arget = true;.  
15b80 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 6f  .        this.co
15b90 6e 74 65 78 74 2e 69 73 42 69 6e 64 69 6e 67 45  ntext.isBindingE
15ba0 6c 65 6d 65 6e 74 20 3d 20 74 72 75 65 3b 0a 20  lement = true;. 
15bb0 20 09 20 20 20 20 20 20 20 20 69 66 20 28 74 68   .        if (th
15bc0 69 73 2e 6c 6f 6f 6b 61 68 65 61 64 2e 74 79 70  is.lookahead.typ
15bd0 65 20 3d 3d 3d 20 74 6f 6b 65 6e 5f 31 2e 54 6f  e === token_1.To
15be0 6b 65 6e 2e 4b 65 79 77 6f 72 64 29 20 7b 0a 20  ken.Keyword) {. 
15bf0 20 09 20 20 20 20 20 20 20 20 20 20 20 20 73 77   .            sw
15c00 69 74 63 68 20 28 74 68 69 73 2e 6c 6f 6f 6b 61  itch (this.looka
15c10 68 65 61 64 2e 76 61 6c 75 65 29 20 7b 0a 20 20  head.value) {.  
15c20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15c30 20 63 61 73 65 20 27 65 78 70 6f 72 74 27 3a 0a   case 'export':.
15c40 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
15c50 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e         if (this.
15c60 73 6f 75 72 63 65 54 79 70 65 20 21 3d 3d 20 27  sourceType !== '
15c70 6d 6f 64 75 6c 65 27 29 20 7b 0a 20 20 09 20 20  module') {.  .  
15c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15c90 20 20 20 20 20 20 74 68 69 73 2e 74 6f 6c 65 72        this.toler
15ca0 61 74 65 55 6e 65 78 70 65 63 74 65 64 54 6f 6b  ateUnexpectedTok
15cb0 65 6e 28 74 68 69 73 2e 6c 6f 6f 6b 61 68 65 61  en(this.lookahea
15cc0 64 2c 20 6d 65 73 73 61 67 65 73 5f 31 2e 4d 65  d, messages_1.Me
15cd0 73 73 61 67 65 73 2e 49 6c 6c 65 67 61 6c 45 78  ssages.IllegalEx
15ce0 70 6f 72 74 44 65 63 6c 61 72 61 74 69 6f 6e 29  portDeclaration)
15cf0 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
15d00 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20           }.  .  
15d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15d20 20 20 73 74 61 74 65 6d 65 6e 74 20 3d 20 74 68    statement = th
15d30 69 73 2e 70 61 72 73 65 45 78 70 6f 72 74 44 65  is.parseExportDe
15d40 63 6c 61 72 61 74 69 6f 6e 28 29 3b 0a 20 20 09  claration();.  .
15d50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15d60 20 20 20 20 62 72 65 61 6b 3b 0a 20 20 09 20 20      break;.  .  
15d70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
15d80 73 65 20 27 69 6d 70 6f 72 74 27 3a 0a 20 20 09  se 'import':.  .
15d90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15da0 20 20 20 20 69 66 20 28 74 68 69 73 2e 73 6f 75      if (this.sou
15db0 72 63 65 54 79 70 65 20 21 3d 3d 20 27 6d 6f 64  rceType !== 'mod
15dc0 75 6c 65 27 29 20 7b 0a 20 20 09 20 20 20 20 20  ule') {.  .     
15dd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15de0 20 20 20 74 68 69 73 2e 74 6f 6c 65 72 61 74 65     this.tolerate
15df0 55 6e 65 78 70 65 63 74 65 64 54 6f 6b 65 6e 28  UnexpectedToken(
15e00 74 68 69 73 2e 6c 6f 6f 6b 61 68 65 61 64 2c 20  this.lookahead, 
15e10 6d 65 73 73 61 67 65 73 5f 31 2e 4d 65 73 73 61  messages_1.Messa
15e20 67 65 73 2e 49 6c 6c 65 67 61 6c 49 6d 70 6f 72  ges.IllegalImpor
15e30 74 44 65 63 6c 61 72 61 74 69 6f 6e 29 3b 0a 20  tDeclaration);. 
15e40 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
15e50 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20        }.  .     
15e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
15e70 74 61 74 65 6d 65 6e 74 20 3d 20 74 68 69 73 2e  tatement = this.
15e80 70 61 72 73 65 49 6d 70 6f 72 74 44 65 63 6c 61  parseImportDecla
15e90 72 61 74 69 6f 6e 28 29 3b 0a 20 20 09 20 20 20  ration();.  .   
15ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15eb0 20 62 72 65 61 6b 3b 0a 20 20 09 20 20 20 20 20   break;.  .     
15ec0 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
15ed0 27 63 6f 6e 73 74 27 3a 0a 20 20 09 20 20 20 20  'const':.  .    
15ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15ef0 73 74 61 74 65 6d 65 6e 74 20 3d 20 74 68 69 73  statement = this
15f00 2e 70 61 72 73 65 4c 65 78 69 63 61 6c 44 65 63  .parseLexicalDec
15f10 6c 61 72 61 74 69 6f 6e 28 7b 20 69 6e 46 6f 72  laration({ inFor
15f20 3a 20 66 61 6c 73 65 20 7d 29 3b 0a 20 20 09 20  : false });.  . 
15f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15f40 20 20 20 62 72 65 61 6b 3b 0a 20 20 09 20 20 20     break;.  .   
15f50 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73               cas
15f60 65 20 27 66 75 6e 63 74 69 6f 6e 27 3a 0a 20 20  e 'function':.  
15f70 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15f80 20 20 20 20 20 73 74 61 74 65 6d 65 6e 74 20 3d       statement =
15f90 20 74 68 69 73 2e 70 61 72 73 65 46 75 6e 63 74   this.parseFunct
15fa0 69 6f 6e 44 65 63 6c 61 72 61 74 69 6f 6e 28 29  ionDeclaration()
15fb0 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
15fc0 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0a           break;.
15fd0 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
15fe0 20 20 20 63 61 73 65 20 27 63 6c 61 73 73 27 3a     case 'class':
15ff0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
16000 20 20 20 20 20 20 20 20 73 74 61 74 65 6d 65 6e          statemen
16010 74 20 3d 20 74 68 69 73 2e 70 61 72 73 65 43 6c  t = this.parseCl
16020 61 73 73 44 65 63 6c 61 72 61 74 69 6f 6e 28 29  assDeclaration()
16030 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
16040 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0a           break;.
16050 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
16060 20 20 20 63 61 73 65 20 27 6c 65 74 27 3a 0a 20     case 'let':. 
16070 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
16080 20 20 20 20 20 20 73 74 61 74 65 6d 65 6e 74 20        statement 
16090 3d 20 74 68 69 73 2e 69 73 4c 65 78 69 63 61 6c  = this.isLexical
160a0 44 65 63 6c 61 72 61 74 69 6f 6e 28 29 20 3f 20  Declaration() ? 
160b0 74 68 69 73 2e 70 61 72 73 65 4c 65 78 69 63 61  this.parseLexica
160c0 6c 44 65 63 6c 61 72 61 74 69 6f 6e 28 7b 20 69  lDeclaration({ i
160d0 6e 46 6f 72 3a 20 66 61 6c 73 65 20 7d 29 20 3a  nFor: false }) :
160e0 20 74 68 69 73 2e 70 61 72 73 65 53 74 61 74 65   this.parseState
160f0 6d 65 6e 74 28 29 3b 0a 20 20 09 20 20 20 20 20  ment();.  .     
16100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
16110 72 65 61 6b 3b 0a 20 20 09 20 20 20 20 20 20 20  reak;.  .       
16120 20 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74           default
16130 3a 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  :.  .           
16140 20 20 20 20 20 20 20 20 20 73 74 61 74 65 6d 65           stateme
16150 6e 74 20 3d 20 74 68 69 73 2e 70 61 72 73 65 53  nt = this.parseS
16160 74 61 74 65 6d 65 6e 74 28 29 3b 0a 20 20 09 20  tatement();.  . 
16170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16180 20 20 20 62 72 65 61 6b 3b 0a 20 20 09 20 20 20     break;.  .   
16190 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20           }.  .  
161a0 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20        }.  .     
161b0 20 20 20 65 6c 73 65 20 7b 0a 20 20 09 20 20 20     else {.  .   
161c0 20 20 20 20 20 20 20 20 20 73 74 61 74 65 6d 65           stateme
161d0 6e 74 20 3d 20 74 68 69 73 2e 70 61 72 73 65 53  nt = this.parseS
161e0 74 61 74 65 6d 65 6e 74 28 29 3b 0a 20 20 09 20  tatement();.  . 
161f0 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20         }.  .    
16200 20 20 20 20 72 65 74 75 72 6e 20 73 74 61 74 65      return state
16210 6d 65 6e 74 3b 0a 20 20 09 20 20 20 20 7d 3b 0a  ment;.  .    };.
16220 20 20 09 20 20 20 20 50 61 72 73 65 72 2e 70 72    .    Parser.pr
16230 6f 74 6f 74 79 70 65 2e 70 61 72 73 65 42 6c 6f  ototype.parseBlo
16240 63 6b 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29  ck = function ()
16250 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 76 61   {.  .        va
16260 72 20 74 68 69 73 24 31 20 3d 20 74 68 69 73 3b  r this$1 = this;
16270 0a 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72  ..  .        var
16280 20 6e 6f 64 65 20 3d 20 74 68 69 73 2e 63 72 65   node = this.cre
16290 61 74 65 4e 6f 64 65 28 29 3b 0a 20 20 09 20 20  ateNode();.  .  
162a0 20 20 20 20 20 20 74 68 69 73 2e 65 78 70 65 63        this.expec
162b0 74 28 27 7b 27 29 3b 0a 20 20 09 20 20 20 20 20  t('{');.  .     
162c0 20 20 20 76 61 72 20 62 6c 6f 63 6b 20 3d 20 5b     var block = [
162d0 5d 3b 0a 20 20 09 20 20 20 20 20 20 20 20 77 68  ];.  .        wh
162e0 69 6c 65 20 28 74 72 75 65 29 20 7b 0a 20 20 09  ile (true) {.  .
162f0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
16300 74 68 69 73 24 31 2e 6d 61 74 63 68 28 27 7d 27  this$1.match('}'
16310 29 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20  )) {.  .        
16320 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0a 20          break;. 
16330 20 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a   .            }.
16340 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 62    .            b
16350 6c 6f 63 6b 2e 70 75 73 68 28 74 68 69 73 24 31  lock.push(this$1
16360 2e 70 61 72 73 65 53 74 61 74 65 6d 65 6e 74 4c  .parseStatementL
16370 69 73 74 49 74 65 6d 28 29 29 3b 0a 20 20 09 20  istItem());.  . 
16380 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20         }.  .    
16390 20 20 20 20 74 68 69 73 2e 65 78 70 65 63 74 28      this.expect(
163a0 27 7d 27 29 3b 0a 20 20 09 20 20 20 20 20 20 20  '}');.  .       
163b0 20 72 65 74 75 72 6e 20 74 68 69 73 2e 66 69 6e   return this.fin
163c0 61 6c 69 7a 65 28 6e 6f 64 65 2c 20 6e 65 77 20  alize(node, new 
163d0 4e 6f 64 65 2e 42 6c 6f 63 6b 53 74 61 74 65 6d  Node.BlockStatem
163e0 65 6e 74 28 62 6c 6f 63 6b 29 29 3b 0a 20 20 09  ent(block));.  .
163f0 20 20 20 20 7d 3b 0a 20 20 09 20 20 20 20 2f 2f      };.  .    //
16400 20 45 43 4d 41 2d 32 36 32 20 31 33 2e 33 2e 31   ECMA-262 13.3.1
16410 20 4c 65 74 20 61 6e 64 20 43 6f 6e 73 74 20 44   Let and Const D
16420 65 63 6c 61 72 61 74 69 6f 6e 73 0a 20 20 09 20  eclarations.  . 
16430 20 20 20 50 61 72 73 65 72 2e 70 72 6f 74 6f 74     Parser.protot
16440 79 70 65 2e 70 61 72 73 65 4c 65 78 69 63 61 6c  ype.parseLexical
16450 42 69 6e 64 69 6e 67 20 3d 20 66 75 6e 63 74 69  Binding = functi
16460 6f 6e 20 28 6b 69 6e 64 2c 20 6f 70 74 69 6f 6e  on (kind, option
16470 73 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20  s) {.  .        
16480 76 61 72 20 6e 6f 64 65 20 3d 20 74 68 69 73 2e  var node = this.
16490 63 72 65 61 74 65 4e 6f 64 65 28 29 3b 0a 20 20  createNode();.  
164a0 09 20 20 20 20 20 20 20 20 76 61 72 20 70 61 72  .        var par
164b0 61 6d 73 20 3d 20 5b 5d 3b 0a 20 20 09 20 20 20  ams = [];.  .   
164c0 20 20 20 20 20 76 61 72 20 69 64 20 3d 20 74 68       var id = th
164d0 69 73 2e 70 61 72 73 65 50 61 74 74 65 72 6e 28  is.parsePattern(
164e0 70 61 72 61 6d 73 2c 20 6b 69 6e 64 29 3b 0a 20  params, kind);. 
164f0 20 09 20 20 20 20 20 20 20 20 2f 2f 20 45 43 4d   .        // ECM
16500 41 2d 32 36 32 20 31 32 2e 32 2e 31 0a 20 20 09  A-262 12.2.1.  .
16510 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73          if (this
16520 2e 63 6f 6e 74 65 78 74 2e 73 74 72 69 63 74 20  .context.strict 
16530 26 26 20 69 64 2e 74 79 70 65 20 3d 3d 3d 20 73  && id.type === s
16540 79 6e 74 61 78 5f 31 2e 53 79 6e 74 61 78 2e 49  yntax_1.Syntax.I
16550 64 65 6e 74 69 66 69 65 72 29 20 7b 0a 20 20 09  dentifier) {.  .
16560 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
16570 74 68 69 73 2e 73 63 61 6e 6e 65 72 2e 69 73 52  this.scanner.isR
16580 65 73 74 72 69 63 74 65 64 57 6f 72 64 28 28 69  estrictedWord((i
16590 64 29 2e 6e 61 6d 65 29 29 20 7b 0a 20 20 09 20  d).name)) {.  . 
165a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
165b0 68 69 73 2e 74 6f 6c 65 72 61 74 65 45 72 72 6f  his.tolerateErro
165c0 72 28 6d 65 73 73 61 67 65 73 5f 31 2e 4d 65 73  r(messages_1.Mes
165d0 73 61 67 65 73 2e 53 74 72 69 63 74 56 61 72 4e  sages.StrictVarN
165e0 61 6d 65 29 3b 0a 20 20 09 20 20 20 20 20 20 20  ame);.  .       
165f0 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20       }.  .      
16600 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 76    }.  .        v
16610 61 72 20 69 6e 69 74 20 3d 20 6e 75 6c 6c 3b 0a  ar init = null;.
16620 20 20 09 20 20 20 20 20 20 20 20 69 66 20 28 6b    .        if (k
16630 69 6e 64 20 3d 3d 3d 20 27 63 6f 6e 73 74 27 29  ind === 'const')
16640 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   {.  .          
16650 20 20 69 66 20 28 21 74 68 69 73 2e 6d 61 74 63    if (!this.matc
16660 68 4b 65 79 77 6f 72 64 28 27 69 6e 27 29 20 26  hKeyword('in') &
16670 26 20 21 74 68 69 73 2e 6d 61 74 63 68 43 6f 6e  & !this.matchCon
16680 74 65 78 74 75 61 6c 4b 65 79 77 6f 72 64 28 27  textualKeyword('
16690 6f 66 27 29 29 20 7b 0a 20 20 09 20 20 20 20 20  of')) {.  .     
166a0 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
166b0 65 78 70 65 63 74 28 27 3d 27 29 3b 0a 20 20 09  expect('=');.  .
166c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
166d0 69 6e 69 74 20 3d 20 74 68 69 73 2e 69 73 6f 6c  init = this.isol
166e0 61 74 65 43 6f 76 65 72 47 72 61 6d 6d 61 72 28  ateCoverGrammar(
166f0 74 68 69 73 2e 70 61 72 73 65 41 73 73 69 67 6e  this.parseAssign
16700 6d 65 6e 74 45 78 70 72 65 73 73 69 6f 6e 29 3b  mentExpression);
16710 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
16720 7d 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a 20  }.  .        }. 
16730 20 09 20 20 20 20 20 20 20 20 65 6c 73 65 20 69   .        else i
16740 66 20 28 28 21 6f 70 74 69 6f 6e 73 2e 69 6e 46  f ((!options.inF
16750 6f 72 20 26 26 20 69 64 2e 74 79 70 65 20 21 3d  or && id.type !=
16760 3d 20 73 79 6e 74 61 78 5f 31 2e 53 79 6e 74 61  = syntax_1.Synta
16770 78 2e 49 64 65 6e 74 69 66 69 65 72 29 20 7c 7c  x.Identifier) ||
16780 20 74 68 69 73 2e 6d 61 74 63 68 28 27 3d 27 29   this.match('=')
16790 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ) {.  .         
167a0 20 20 20 74 68 69 73 2e 65 78 70 65 63 74 28 27     this.expect('
167b0 3d 27 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  =');.  .        
167c0 20 20 20 20 69 6e 69 74 20 3d 20 74 68 69 73 2e      init = this.
167d0 69 73 6f 6c 61 74 65 43 6f 76 65 72 47 72 61 6d  isolateCoverGram
167e0 6d 61 72 28 74 68 69 73 2e 70 61 72 73 65 41 73  mar(this.parseAs
167f0 73 69 67 6e 6d 65 6e 74 45 78 70 72 65 73 73 69  signmentExpressi
16800 6f 6e 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  on);.  .        
16810 7d 0a 20 20 09 20 20 20 20 20 20 20 20 72 65 74  }.  .        ret
16820 75 72 6e 20 74 68 69 73 2e 66 69 6e 61 6c 69 7a  urn this.finaliz
16830 65 28 6e 6f 64 65 2c 20 6e 65 77 20 4e 6f 64 65  e(node, new Node
16840 2e 56 61 72 69 61 62 6c 65 44 65 63 6c 61 72 61  .VariableDeclara
16850 74 6f 72 28 69 64 2c 20 69 6e 69 74 29 29 3b 0a  tor(id, init));.
16860 20 20 09 20 20 20 20 7d 3b 0a 20 20 09 20 20 20    .    };.  .   
16870 20 50 61 72 73 65 72 2e 70 72 6f 74 6f 74 79 70   Parser.prototyp
16880 65 2e 70 61 72 73 65 42 69 6e 64 69 6e 67 4c 69  e.parseBindingLi
16890 73 74 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 6b  st = function (k
168a0 69 6e 64 2c 20 6f 70 74 69 6f 6e 73 29 20 7b 0a  ind, options) {.
168b0 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20 74    .        var t
168c0 68 69 73 24 31 20 3d 20 74 68 69 73 3b 0a 0a 20  his$1 = this;.. 
168d0 20 09 20 20 20 20 20 20 20 20 76 61 72 20 6c 69   .        var li
168e0 73 74 20 3d 20 5b 74 68 69 73 2e 70 61 72 73 65  st = [this.parse
168f0 4c 65 78 69 63 61 6c 42 69 6e 64 69 6e 67 28 6b  LexicalBinding(k
16900 69 6e 64 2c 20 6f 70 74 69 6f 6e 73 29 5d 3b 0a  ind, options)];.
16910 20 20 09 20 20 20 20 20 20 20 20 77 68 69 6c 65    .        while
16920 20 28 74 68 69 73 2e 6d 61 74 63 68 28 27 2c 27   (this.match(','
16930 29 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20  )) {.  .        
16940 20 20 20 20 74 68 69 73 24 31 2e 6e 65 78 74 54      this$1.nextT
16950 6f 6b 65 6e 28 29 3b 0a 20 20 09 20 20 20 20 20  oken();.  .     
16960 20 20 20 20 20 20 20 6c 69 73 74 2e 70 75 73 68         list.push
16970 28 74 68 69 73 24 31 2e 70 61 72 73 65 4c 65 78  (this$1.parseLex
16980 69 63 61 6c 42 69 6e 64 69 6e 67 28 6b 69 6e 64  icalBinding(kind
16990 2c 20 6f 70 74 69 6f 6e 73 29 29 3b 0a 20 20 09  , options));.  .
169a0 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20          }.  .   
169b0 20 20 20 20 20 72 65 74 75 72 6e 20 6c 69 73 74       return list
169c0 3b 0a 20 20 09 20 20 20 20 7d 3b 0a 20 20 09 20  ;.  .    };.  . 
169d0 20 20 20 50 61 72 73 65 72 2e 70 72 6f 74 6f 74     Parser.protot
169e0 79 70 65 2e 69 73 4c 65 78 69 63 61 6c 44 65 63  ype.isLexicalDec
169f0 6c 61 72 61 74 69 6f 6e 20 3d 20 66 75 6e 63 74  laration = funct
16a00 69 6f 6e 20 28 29 20 7b 0a 20 20 09 20 20 20 20  ion () {.  .    
16a10 20 20 20 20 76 61 72 20 70 72 65 76 69 6f 75 73      var previous
16a20 49 6e 64 65 78 20 3d 20 74 68 69 73 2e 73 63 61  Index = this.sca
16a30 6e 6e 65 72 2e 69 6e 64 65 78 3b 0a 20 20 09 20  nner.index;.  . 
16a40 20 20 20 20 20 20 20 76 61 72 20 70 72 65 76 69         var previ
16a50 6f 75 73 4c 69 6e 65 4e 75 6d 62 65 72 20 3d 20  ousLineNumber = 
16a60 74 68 69 73 2e 73 63 61 6e 6e 65 72 2e 6c 69 6e  this.scanner.lin
16a70 65 4e 75 6d 62 65 72 3b 0a 20 20 09 20 20 20 20  eNumber;.  .    
16a80 20 20 20 20 76 61 72 20 70 72 65 76 69 6f 75 73      var previous
16a90 4c 69 6e 65 53 74 61 72 74 20 3d 20 74 68 69 73  LineStart = this
16aa0 2e 73 63 61 6e 6e 65 72 2e 6c 69 6e 65 53 74 61  .scanner.lineSta
16ab0 72 74 3b 0a 20 20 09 20 20 20 20 20 20 20 20 74  rt;.  .        t
16ac0 68 69 73 2e 63 6f 6c 6c 65 63 74 43 6f 6d 6d 65  his.collectComme
16ad0 6e 74 73 28 29 3b 0a 20 20 09 20 20 20 20 20 20  nts();.  .      
16ae0 20 20 76 61 72 20 6e 65 78 74 20 3d 20 74 68 69    var next = thi
16af0 73 2e 73 63 61 6e 6e 65 72 2e 6c 65 78 28 29 3b  s.scanner.lex();
16b00 0a 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73  .  .        this
16b10 2e 73 63 61 6e 6e 65 72 2e 69 6e 64 65 78 20 3d  .scanner.index =
16b20 20 70 72 65 76 69 6f 75 73 49 6e 64 65 78 3b 0a   previousIndex;.
16b30 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e    .        this.
16b40 73 63 61 6e 6e 65 72 2e 6c 69 6e 65 4e 75 6d 62  scanner.lineNumb
16b50 65 72 20 3d 20 70 72 65 76 69 6f 75 73 4c 69 6e  er = previousLin
16b60 65 4e 75 6d 62 65 72 3b 0a 20 20 09 20 20 20 20  eNumber;.  .    
16b70 20 20 20 20 74 68 69 73 2e 73 63 61 6e 6e 65 72      this.scanner
16b80 2e 6c 69 6e 65 53 74 61 72 74 20 3d 20 70 72 65  .lineStart = pre
16b90 76 69 6f 75 73 4c 69 6e 65 53 74 61 72 74 3b 0a  viousLineStart;.
16ba0 20 20 09 20 20 20 20 20 20 20 20 72 65 74 75 72    .        retur
16bb0 6e 20 28 6e 65 78 74 2e 74 79 70 65 20 3d 3d 3d  n (next.type ===
16bc0 20 74 6f 6b 65 6e 5f 31 2e 54 6f 6b 65 6e 2e 49   token_1.Token.I
16bd0 64 65 6e 74 69 66 69 65 72 29 20 7c 7c 0a 20 20  dentifier) ||.  
16be0 09 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 65  .            (ne
16bf0 78 74 2e 74 79 70 65 20 3d 3d 3d 20 74 6f 6b 65  xt.type === toke
16c00 6e 5f 31 2e 54 6f 6b 65 6e 2e 50 75 6e 63 74 75  n_1.Token.Punctu
16c10 61 74 6f 72 20 26 26 20 6e 65 78 74 2e 76 61 6c  ator && next.val
16c20 75 65 20 3d 3d 3d 20 27 5b 27 29 20 7c 7c 0a 20  ue === '[') ||. 
16c30 20 09 20 20 20 20 20 20 20 20 20 20 20 20 28 6e   .            (n
16c40 65 78 74 2e 74 79 70 65 20 3d 3d 3d 20 74 6f 6b  ext.type === tok
16c50 65 6e 5f 31 2e 54 6f 6b 65 6e 2e 50 75 6e 63 74  en_1.Token.Punct
16c60 75 61 74 6f 72 20 26 26 20 6e 65 78 74 2e 76 61  uator && next.va
16c70 6c 75 65 20 3d 3d 3d 20 27 7b 27 29 20 7c 7c 0a  lue === '{') ||.
16c80 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 28    .            (
16c90 6e 65 78 74 2e 74 79 70 65 20 3d 3d 3d 20 74 6f  next.type === to
16ca0 6b 65 6e 5f 31 2e 54 6f 6b 65 6e 2e 4b 65 79 77  ken_1.Token.Keyw
16cb0 6f 72 64 20 26 26 20 6e 65 78 74 2e 76 61 6c 75  ord && next.valu
16cc0 65 20 3d 3d 3d 20 27 6c 65 74 27 29 20 7c 7c 0a  e === 'let') ||.
16cd0 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 28    .            (
16ce0 6e 65 78 74 2e 74 79 70 65 20 3d 3d 3d 20 74 6f  next.type === to
16cf0 6b 65 6e 5f 31 2e 54 6f 6b 65 6e 2e 4b 65 79 77  ken_1.Token.Keyw
16d00 6f 72 64 20 26 26 20 6e 65 78 74 2e 76 61 6c 75  ord && next.valu
16d10 65 20 3d 3d 3d 20 27 79 69 65 6c 64 27 29 3b 0a  e === 'yield');.
16d20 20 20 09 20 20 20 20 7d 3b 0a 20 20 09 20 20 20    .    };.  .   
16d30 20 50 61 72 73 65 72 2e 70 72 6f 74 6f 74 79 70   Parser.prototyp
16d40 65 2e 70 61 72 73 65 4c 65 78 69 63 61 6c 44 65  e.parseLexicalDe
16d50 63 6c 61 72 61 74 69 6f 6e 20 3d 20 66 75 6e 63  claration = func
16d60 74 69 6f 6e 20 28 6f 70 74 69 6f 6e 73 29 20 7b  tion (options) {
16d70 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20  .  .        var 
16d80 6e 6f 64 65 20 3d 20 74 68 69 73 2e 63 72 65 61  node = this.crea
16d90 74 65 4e 6f 64 65 28 29 3b 0a 20 20 09 20 20 20  teNode();.  .   
16da0 20 20 20 20 20 76 61 72 20 6b 69 6e 64 20 3d 20       var kind = 
16db0 74 68 69 73 2e 6e 65 78 74 54 6f 6b 65 6e 28 29  this.nextToken()
16dc0 2e 76 61 6c 75 65 3b 0a 20 20 09 20 20 20 20 20  .value;.  .     
16dd0 20 20 20 61 73 73 65 72 74 5f 31 2e 61 73 73 65     assert_1.asse
16de0 72 74 28 6b 69 6e 64 20 3d 3d 3d 20 27 6c 65 74  rt(kind === 'let
16df0 27 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 27 63  ' || kind === 'c
16e00 6f 6e 73 74 27 2c 20 27 4c 65 78 69 63 61 6c 20  onst', 'Lexical 
16e10 64 65 63 6c 61 72 61 74 69 6f 6e 20 6d 75 73 74  declaration must
16e20 20 62 65 20 65 69 74 68 65 72 20 6c 65 74 20 6f   be either let o
16e30 72 20 63 6f 6e 73 74 27 29 3b 0a 20 20 09 20 20  r const');.  .  
16e40 20 20 20 20 20 20 76 61 72 20 64 65 63 6c 61 72        var declar
16e50 61 74 69 6f 6e 73 20 3d 20 74 68 69 73 2e 70 61  ations = this.pa
16e60 72 73 65 42 69 6e 64 69 6e 67 4c 69 73 74 28 6b  rseBindingList(k
16e70 69 6e 64 2c 20 6f 70 74 69 6f 6e 73 29 3b 0a 20  ind, options);. 
16e80 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 63   .        this.c
16e90 6f 6e 73 75 6d 65 53 65 6d 69 63 6f 6c 6f 6e 28  onsumeSemicolon(
16ea0 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 72 65  );.  .        re
16eb0 74 75 72 6e 20 74 68 69 73 2e 66 69 6e 61 6c 69  turn this.finali
16ec0 7a 65 28 6e 6f 64 65 2c 20 6e 65 77 20 4e 6f 64  ze(node, new Nod
16ed0 65 2e 56 61 72 69 61 62 6c 65 44 65 63 6c 61 72  e.VariableDeclar
16ee0 61 74 69 6f 6e 28 64 65 63 6c 61 72 61 74 69 6f  ation(declaratio
16ef0 6e 73 2c 20 6b 69 6e 64 29 29 3b 0a 20 20 09 20  ns, kind));.  . 
16f00 20 20 20 7d 3b 0a 20 20 09 20 20 20 20 2f 2f 20     };.  .    // 
16f10 45 43 4d 41 2d 32 36 32 20 31 33 2e 33 2e 33 20  ECMA-262 13.3.3 
16f20 44 65 73 74 72 75 63 74 75 72 69 6e 67 20 42 69  Destructuring Bi
16f30 6e 64 69 6e 67 20 50 61 74 74 65 72 6e 73 0a 20  nding Patterns. 
16f40 20 09 20 20 20 20 50 61 72 73 65 72 2e 70 72 6f   .    Parser.pro
16f50 74 6f 74 79 70 65 2e 70 61 72 73 65 42 69 6e 64  totype.parseBind
16f60 69 6e 67 52 65 73 74 45 6c 65 6d 65 6e 74 20 3d  ingRestElement =
16f70 20 66 75 6e 63 74 69 6f 6e 20 28 70 61 72 61 6d   function (param
16f80 73 2c 20 6b 69 6e 64 29 20 7b 0a 20 20 09 20 20  s, kind) {.  .  
16f90 20 20 20 20 20 20 76 61 72 20 6e 6f 64 65 20 3d        var node =
16fa0 20 74 68 69 73 2e 63 72 65 61 74 65 4e 6f 64 65   this.createNode
16fb0 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 74  ();.  .        t
16fc0 68 69 73 2e 65 78 70 65 63 74 28 27 2e 2e 2e 27  his.expect('...'
16fd0 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 76 61  );.  .        va
16fe0 72 20 61 72 67 20 3d 20 74 68 69 73 2e 70 61 72  r arg = this.par
16ff0 73 65 50 61 74 74 65 72 6e 28 70 61 72 61 6d 73  sePattern(params
17000 2c 20 6b 69 6e 64 29 3b 0a 20 20 09 20 20 20 20  , kind);.  .    
17010 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e      return this.
17020 66 69 6e 61 6c 69 7a 65 28 6e 6f 64 65 2c 20 6e  finalize(node, n
17030 65 77 20 4e 6f 64 65 2e 52 65 73 74 45 6c 65 6d  ew Node.RestElem
17040 65 6e 74 28 61 72 67 29 29 3b 0a 20 20 09 20 20  ent(arg));.  .  
17050 20 20 7d 3b 0a 20 20 09 20 20 20 20 50 61 72 73    };.  .    Pars
17060 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 70 61 72  er.prototype.par
17070 73 65 41 72 72 61 79 50 61 74 74 65 72 6e 20 3d  seArrayPattern =
17080 20 66 75 6e 63 74 69 6f 6e 20 28 70 61 72 61 6d   function (param
17090 73 2c 20 6b 69 6e 64 29 20 7b 0a 20 20 09 20 20  s, kind) {.  .  
170a0 20 20 20 20 20 20 76 61 72 20 74 68 69 73 24 31        var this$1
170b0 20 3d 20 74 68 69 73 3b 0a 0a 20 20 09 20 20 20   = this;..  .   
170c0 20 20 20 20 20 76 61 72 20 6e 6f 64 65 20 3d 20       var node = 
170d0 74 68 69 73 2e 63 72 65 61 74 65 4e 6f 64 65 28  this.createNode(
170e0 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 74 68  );.  .        th
170f0 69 73 2e 65 78 70 65 63 74 28 27 5b 27 29 3b 0a  is.expect('[');.
17100 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20 65    .        var e
17110 6c 65 6d 65 6e 74 73 20 3d 20 5b 5d 3b 0a 20 20  lements = [];.  
17120 09 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 28  .        while (
17130 21 74 68 69 73 2e 6d 61 74 63 68 28 27 5d 27 29  !this.match(']')
17140 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ) {.  .         
17150 20 20 20 69 66 20 28 74 68 69 73 24 31 2e 6d 61     if (this$1.ma
17160 74 63 68 28 27 2c 27 29 29 20 7b 0a 20 20 09 20  tch(',')) {.  . 
17170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
17180 68 69 73 24 31 2e 6e 65 78 74 54 6f 6b 65 6e 28  his$1.nextToken(
17190 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  );.  .          
171a0 20 20 20 20 20 20 65 6c 65 6d 65 6e 74 73 2e 70        elements.p
171b0 75 73 68 28 6e 75 6c 6c 29 3b 0a 20 20 09 20 20  ush(null);.  .  
171c0 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20            }.  . 
171d0 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20             else 
171e0 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  {.  .           
171f0 20 20 20 20 20 69 66 20 28 74 68 69 73 24 31 2e       if (this$1.
17200 6d 61 74 63 68 28 27 2e 2e 2e 27 29 29 20 7b 0a  match('...')) {.
17210 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
17220 20 20 20 20 20 20 20 65 6c 65 6d 65 6e 74 73 2e         elements.
17230 70 75 73 68 28 74 68 69 73 24 31 2e 70 61 72 73  push(this$1.pars
17240 65 42 69 6e 64 69 6e 67 52 65 73 74 45 6c 65 6d  eBindingRestElem
17250 65 6e 74 28 70 61 72 61 6d 73 2c 20 6b 69 6e 64  ent(params, kind
17260 29 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ));.  .         
17270 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b             break
17280 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
17290 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20       }.  .      
172a0 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 7b            else {
172b0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
172c0 20 20 20 20 20 20 20 20 65 6c 65 6d 65 6e 74 73          elements
172d0 2e 70 75 73 68 28 74 68 69 73 24 31 2e 70 61 72  .push(this$1.par
172e0 73 65 50 61 74 74 65 72 6e 57 69 74 68 44 65 66  sePatternWithDef
172f0 61 75 6c 74 28 70 61 72 61 6d 73 2c 20 6b 69 6e  ault(params, kin
17300 64 29 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  d));.  .        
17310 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20          }.  .   
17320 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
17330 28 21 74 68 69 73 24 31 2e 6d 61 74 63 68 28 27  (!this$1.match('
17340 5d 27 29 29 20 7b 0a 20 20 09 20 20 20 20 20 20  ]')) {.  .      
17350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
17360 69 73 24 31 2e 65 78 70 65 63 74 28 27 2c 27 29  is$1.expect(',')
17370 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
17380 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20       }.  .      
17390 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20        }.  .     
173a0 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20     }.  .        
173b0 74 68 69 73 2e 65 78 70 65 63 74 28 27 5d 27 29  this.expect(']')
173c0 3b 0a 20 20 09 20 20 20 20 20 20 20 20 72 65 74  ;.  .        ret
173d0 75 72 6e 20 74 68 69 73 2e 66 69 6e 61 6c 69 7a  urn this.finaliz
173e0 65 28 6e 6f 64 65 2c 20 6e 65 77 20 4e 6f 64 65  e(node, new Node
173f0 2e 41 72 72 61 79 50 61 74 74 65 72 6e 28 65 6c  .ArrayPattern(el
17400 65 6d 65 6e 74 73 29 29 3b 0a 20 20 09 20 20 20  ements));.  .   
17410 20 7d 3b 0a 20 20 09 20 20 20 20 50 61 72 73 65   };.  .    Parse
17420 72 2e 70 72 6f 74 6f 74 79 70 65 2e 70 61 72 73  r.prototype.pars
17430 65 50 72 6f 70 65 72 74 79 50 61 74 74 65 72 6e  ePropertyPattern
17440 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 70 61 72   = function (par
17450 61 6d 73 2c 20 6b 69 6e 64 29 20 7b 0a 20 20 09  ams, kind) {.  .
17460 20 20 20 20 20 20 20 20 76 61 72 20 6e 6f 64 65          var node
17470 20 3d 20 74 68 69 73 2e 63 72 65 61 74 65 4e 6f   = this.createNo
17480 64 65 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20  de();.  .       
17490 20 76 61 72 20 63 6f 6d 70 75 74 65 64 20 3d 20   var computed = 
174a0 66 61 6c 73 65 3b 0a 20 20 09 20 20 20 20 20 20  false;.  .      
174b0 20 20 76 61 72 20 73 68 6f 72 74 68 61 6e 64 20    var shorthand 
174c0 3d 20 66 61 6c 73 65 3b 0a 20 20 09 20 20 20 20  = false;.  .    
174d0 20 20 20 20 76 61 72 20 6d 65 74 68 6f 64 20 3d      var method =
174e0 20 66 61 6c 73 65 3b 0a 20 20 09 20 20 20 20 20   false;.  .     
174f0 20 20 20 76 61 72 20 6b 65 79 3b 0a 20 20 09 20     var key;.  . 
17500 20 20 20 20 20 20 20 76 61 72 20 76 61 6c 75 65         var value
17510 3b 0a 20 20 09 20 20 20 20 20 20 20 20 69 66 20  ;.  .        if 
17520 28 74 68 69 73 2e 6c 6f 6f 6b 61 68 65 61 64 2e  (this.lookahead.
17530 74 79 70 65 20 3d 3d 3d 20 74 6f 6b 65 6e 5f 31  type === token_1
17540 2e 54 6f 6b 65 6e 2e 49 64 65 6e 74 69 66 69 65  .Token.Identifie
17550 72 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20  r) {.  .        
17560 20 20 20 20 76 61 72 20 6b 65 79 54 6f 6b 65 6e      var keyToken
17570 20 3d 20 74 68 69 73 2e 6c 6f 6f 6b 61 68 65 61   = this.lookahea
17580 64 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  d;.  .          
17590 20 20 6b 65 79 20 3d 20 74 68 69 73 2e 70 61 72    key = this.par
175a0 73 65 56 61 72 69 61 62 6c 65 49 64 65 6e 74 69  seVariableIdenti
175b0 66 69 65 72 28 29 3b 0a 20 20 09 20 20 20 20 20  fier();.  .     
175c0 20 20 20 20 20 20 20 76 61 72 20 69 6e 69 74 20         var init 
175d0 3d 20 74 68 69 73 2e 66 69 6e 61 6c 69 7a 65 28  = this.finalize(
175e0 6e 6f 64 65 2c 20 6e 65 77 20 4e 6f 64 65 2e 49  node, new Node.I
175f0 64 65 6e 74 69 66 69 65 72 28 6b 65 79 54 6f 6b  dentifier(keyTok
17600 65 6e 2e 76 61 6c 75 65 29 29 3b 0a 20 20 09 20  en.value));.  . 
17610 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74             if (t
17620 68 69 73 2e 6d 61 74 63 68 28 27 3d 27 29 29 20  his.match('=')) 
17630 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  {.  .           
17640 20 20 20 20 20 70 61 72 61 6d 73 2e 70 75 73 68       params.push
17650 28 6b 65 79 54 6f 6b 65 6e 29 3b 0a 20 20 09 20  (keyToken);.  . 
17660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
17670 68 6f 72 74 68 61 6e 64 20 3d 20 74 72 75 65 3b  horthand = true;
17680 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
17690 20 20 20 20 74 68 69 73 2e 6e 65 78 74 54 6f 6b      this.nextTok
176a0 65 6e 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20  en();.  .       
176b0 20 20 20 20 20 20 20 20 20 76 61 72 20 65 78 70           var exp
176c0 72 20 3d 20 74 68 69 73 2e 70 61 72 73 65 41 73  r = this.parseAs
176d0 73 69 67 6e 6d 65 6e 74 45 78 70 72 65 73 73 69  signmentExpressi
176e0 6f 6e 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20  on();.  .       
176f0 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d           value =
17700 20 74 68 69 73 2e 66 69 6e 61 6c 69 7a 65 28 74   this.finalize(t
17710 68 69 73 2e 73 74 61 72 74 4e 6f 64 65 28 6b 65  his.startNode(ke
17720 79 54 6f 6b 65 6e 29 2c 20 6e 65 77 20 4e 6f 64  yToken), new Nod
17730 65 2e 41 73 73 69 67 6e 6d 65 6e 74 50 61 74 74  e.AssignmentPatt
17740 65 72 6e 28 69 6e 69 74 2c 20 65 78 70 72 29 29  ern(init, expr))
17750 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
17760 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   }.  .          
17770 20 20 65 6c 73 65 20 69 66 20 28 21 74 68 69 73    else if (!this
17780 2e 6d 61 74 63 68 28 27 3a 27 29 29 20 7b 0a 20  .match(':')) {. 
17790 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
177a0 20 20 70 61 72 61 6d 73 2e 70 75 73 68 28 6b 65    params.push(ke
177b0 79 54 6f 6b 65 6e 29 3b 0a 20 20 09 20 20 20 20  yToken);.  .    
177c0 20 20 20 20 20 20 20 20 20 20 20 20 73 68 6f 72              shor
177d0 74 68 61 6e 64 20 3d 20 74 72 75 65 3b 0a 20 20  thand = true;.  
177e0 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
177f0 20 76 61 6c 75 65 20 3d 20 69 6e 69 74 3b 0a 20   value = init;. 
17800 20 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a   .            }.
17810 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 65    .            e
17820 6c 73 65 20 7b 0a 20 20 09 20 20 20 20 20 20 20  lse {.  .       
17830 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 65 78           this.ex
17840 70 65 63 74 28 27 3a 27 29 3b 0a 20 20 09 20 20  pect(':');.  .  
17850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61                va
17860 6c 75 65 20 3d 20 74 68 69 73 2e 70 61 72 73 65  lue = this.parse
17870 50 61 74 74 65 72 6e 57 69 74 68 44 65 66 61 75  PatternWithDefau
17880 6c 74 28 70 61 72 61 6d 73 2c 20 6b 69 6e 64 29  lt(params, kind)
17890 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
178a0 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a   }.  .        }.
178b0 20 20 09 20 20 20 20 20 20 20 20 65 6c 73 65 20    .        else 
178c0 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  {.  .           
178d0 20 63 6f 6d 70 75 74 65 64 20 3d 20 74 68 69 73   computed = this
178e0 2e 6d 61 74 63 68 28 27 5b 27 29 3b 0a 20 20 09  .match('[');.  .
178f0 20 20 20 20 20 20 20 20 20 20 20 20 6b 65 79 20              key 
17900 3d 20 74 68 69 73 2e 70 61 72 73 65 4f 62 6a 65  = this.parseObje
17910 63 74 50 72 6f 70 65 72 74 79 4b 65 79 28 29 3b  ctPropertyKey();
17920 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
17930 74 68 69 73 2e 65 78 70 65 63 74 28 27 3a 27 29  this.expect(':')
17940 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
17950 20 76 61 6c 75 65 20 3d 20 74 68 69 73 2e 70 61   value = this.pa
17960 72 73 65 50 61 74 74 65 72 6e 57 69 74 68 44 65  rsePatternWithDe
17970 66 61 75 6c 74 28 70 61 72 61 6d 73 2c 20 6b 69  fault(params, ki
17980 6e 64 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  nd);.  .        
17990 7d 0a 20 20 09 20 20 20 20 20 20 20 20 72 65 74  }.  .        ret
179a0 75 72 6e 20 74 68 69 73 2e 66 69 6e 61 6c 69 7a  urn this.finaliz
179b0 65 28 6e 6f 64 65 2c 20 6e 65 77 20 4e 6f 64 65  e(node, new Node
179c0 2e 50 72 6f 70 65 72 74 79 28 27 69 6e 69 74 27  .Property('init'
179d0 2c 20 6b 65 79 2c 20 63 6f 6d 70 75 74 65 64 2c  , key, computed,
179e0 20 76 61 6c 75 65 2c 20 6d 65 74 68 6f 64 2c 20   value, method, 
179f0 73 68 6f 72 74 68 61 6e 64 29 29 3b 0a 20 20 09  shorthand));.  .
17a00 20 20 20 20 7d 3b 0a 20 20 09 20 20 20 20 50 61      };.  .    Pa
17a10 72 73 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 70  rser.prototype.p
17a20 61 72 73 65 4f 62 6a 65 63 74 50 61 74 74 65 72  arseObjectPatter
17a30 6e 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 70 61  n = function (pa
17a40 72 61 6d 73 2c 20 6b 69 6e 64 29 20 7b 0a 20 20  rams, kind) {.  
17a50 09 20 20 20 20 20 20 20 20 76 61 72 20 74 68 69  .        var thi
17a60 73 24 31 20 3d 20 74 68 69 73 3b 0a 0a 20 20 09  s$1 = this;..  .
17a70 20 20 20 20 20 20 20 20 76 61 72 20 6e 6f 64 65          var node
17a80 20 3d 20 74 68 69 73 2e 63 72 65 61 74 65 4e 6f   = this.createNo
17a90 64 65 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20  de();.  .       
17aa0 20 76 61 72 20 70 72 6f 70 65 72 74 69 65 73 20   var properties 
17ab0 3d 20 5b 5d 3b 0a 20 20 09 20 20 20 20 20 20 20  = [];.  .       
17ac0 20 74 68 69 73 2e 65 78 70 65 63 74 28 27 7b 27   this.expect('{'
17ad0 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 77 68  );.  .        wh
17ae0 69 6c 65 20 28 21 74 68 69 73 2e 6d 61 74 63 68  ile (!this.match
17af0 28 27 7d 27 29 29 20 7b 0a 20 20 09 20 20 20 20  ('}')) {.  .    
17b00 20 20 20 20 20 20 20 20 70 72 6f 70 65 72 74 69          properti
17b10 65 73 2e 70 75 73 68 28 74 68 69 73 24 31 2e 70  es.push(this$1.p
17b20 61 72 73 65 50 72 6f 70 65 72 74 79 50 61 74 74  arsePropertyPatt
17b30 65 72 6e 28 70 61 72 61 6d 73 2c 20 6b 69 6e 64  ern(params, kind
17b40 29 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ));.  .         
17b50 20 20 20 69 66 20 28 21 74 68 69 73 24 31 2e 6d     if (!this$1.m
17b60 61 74 63 68 28 27 7d 27 29 29 20 7b 0a 20 20 09  atch('}')) {.  .
17b70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17b80 74 68 69 73 24 31 2e 65 78 70 65 63 74 28 27 2c  this$1.expect(',
17b90 27 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ');.  .         
17ba0 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20     }.  .        
17bb0 7d 0a 20 20 09 20 20 20 20 20 20 20 20 74 68 69  }.  .        thi
17bc0 73 2e 65 78 70 65 63 74 28 27 7d 27 29 3b 0a 20  s.expect('}');. 
17bd0 20 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e   .        return
17be0 20 74 68 69 73 2e 66 69 6e 61 6c 69 7a 65 28 6e   this.finalize(n
17bf0 6f 64 65 2c 20 6e 65 77 20 4e 6f 64 65 2e 4f 62  ode, new Node.Ob
17c00 6a 65 63 74 50 61 74 74 65 72 6e 28 70 72 6f 70  jectPattern(prop
17c10 65 72 74 69 65 73 29 29 3b 0a 20 20 09 20 20 20  erties));.  .   
17c20 20 7d 3b 0a 20 20 09 20 20 20 20 50 61 72 73 65   };.  .    Parse
17c30 72 2e 70 72 6f 74 6f 74 79 70 65 2e 70 61 72 73  r.prototype.pars
17c40 65 50 61 74 74 65 72 6e 20 3d 20 66 75 6e 63 74  ePattern = funct
17c50 69 6f 6e 20 28 70 61 72 61 6d 73 2c 20 6b 69 6e  ion (params, kin
17c60 64 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20  d) {.  .        
17c70 76 61 72 20 70 61 74 74 65 72 6e 3b 0a 20 20 09  var pattern;.  .
17c80 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73          if (this
17c90 2e 6d 61 74 63 68 28 27 5b 27 29 29 20 7b 0a 20  .match('[')) {. 
17ca0 20 09 20 20 20 20 20 20 20 20 20 20 20 20 70 61   .            pa
17cb0 74 74 65 72 6e 20 3d 20 74 68 69 73 2e 70 61 72  ttern = this.par
17cc0 73 65 41 72 72 61 79 50 61 74 74 65 72 6e 28 70  seArrayPattern(p
17cd0 61 72 61 6d 73 2c 20 6b 69 6e 64 29 3b 0a 20 20  arams, kind);.  
17ce0 09 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20  .        }.  .  
17cf0 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 74        else if (t
17d00 68 69 73 2e 6d 61 74 63 68 28 27 7b 27 29 29 20  his.match('{')) 
17d10 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  {.  .           
17d20 20 70 61 74 74 65 72 6e 20 3d 20 74 68 69 73 2e   pattern = this.
17d30 70 61 72 73 65 4f 62 6a 65 63 74 50 61 74 74 65  parseObjectPatte
17d40 72 6e 28 70 61 72 61 6d 73 2c 20 6b 69 6e 64 29  rn(params, kind)
17d50 3b 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a 20  ;.  .        }. 
17d60 20 09 20 20 20 20 20 20 20 20 65 6c 73 65 20 7b   .        else {
17d70 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
17d80 69 66 20 28 74 68 69 73 2e 6d 61 74 63 68 4b 65  if (this.matchKe
17d90 79 77 6f 72 64 28 27 6c 65 74 27 29 20 26 26 20  yword('let') && 
17da0 28 6b 69 6e 64 20 3d 3d 3d 20 27 63 6f 6e 73 74  (kind === 'const
17db0 27 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 27 6c  ' || kind === 'l
17dc0 65 74 27 29 29 20 7b 0a 20 20 09 20 20 20 20 20  et')) {.  .     
17dd0 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
17de0 74 6f 6c 65 72 61 74 65 55 6e 65 78 70 65 63 74  tolerateUnexpect
17df0 65 64 54 6f 6b 65 6e 28 74 68 69 73 2e 6c 6f 6f  edToken(this.loo
17e00 6b 61 68 65 61 64 2c 20 6d 65 73 73 61 67 65 73  kahead, messages
17e10 5f 31 2e 4d 65 73 73 61 67 65 73 2e 55 6e 65 78  _1.Messages.Unex
17e20 70 65 63 74 65 64 54 6f 6b 65 6e 29 3b 0a 20 20  pectedToken);.  
17e30 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20  .            }. 
17e40 20 09 20 20 20 20 20 20 20 20 20 20 20 20 70 61   .            pa
17e50 72 61 6d 73 2e 70 75 73 68 28 74 68 69 73 2e 6c  rams.push(this.l
17e60 6f 6f 6b 61 68 65 61 64 29 3b 0a 20 20 09 20 20  ookahead);.  .  
17e70 20 20 20 20 20 20 20 20 20 20 70 61 74 74 65 72            patter
17e80 6e 20 3d 20 74 68 69 73 2e 70 61 72 73 65 56 61  n = this.parseVa
17e90 72 69 61 62 6c 65 49 64 65 6e 74 69 66 69 65 72  riableIdentifier
17ea0 28 6b 69 6e 64 29 3b 0a 20 20 09 20 20 20 20 20  (kind);.  .     
17eb0 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20     }.  .        
17ec0 72 65 74 75 72 6e 20 70 61 74 74 65 72 6e 3b 0a  return pattern;.
17ed0 20 20 09 20 20 20 20 7d 3b 0a 20 20 09 20 20 20    .    };.  .   
17ee0 20 50 61 72 73 65 72 2e 70 72 6f 74 6f 74 79 70   Parser.prototyp
17ef0 65 2e 70 61 72 73 65 50 61 74 74 65 72 6e 57 69  e.parsePatternWi
17f00 74 68 44 65 66 61 75 6c 74 20 3d 20 66 75 6e 63  thDefault = func
17f10 74 69 6f 6e 20 28 70 61 72 61 6d 73 2c 20 6b 69  tion (params, ki
17f20 6e 64 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20  nd) {.  .       
17f30 20 76 61 72 20 73 74 61 72 74 54 6f 6b 65 6e 20   var startToken 
17f40 3d 20 74 68 69 73 2e 6c 6f 6f 6b 61 68 65 61 64  = this.lookahead
17f50 3b 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72  ;.  .        var
17f60 20 70 61 74 74 65 72 6e 20 3d 20 74 68 69 73 2e   pattern = this.
17f70 70 61 72 73 65 50 61 74 74 65 72 6e 28 70 61 72  parsePattern(par
17f80 61 6d 73 2c 20 6b 69 6e 64 29 3b 0a 20 20 09 20  ams, kind);.  . 
17f90 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e         if (this.
17fa0 6d 61 74 63 68 28 27 3d 27 29 29 20 7b 0a 20 20  match('=')) {.  
17fb0 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
17fc0 73 2e 6e 65 78 74 54 6f 6b 65 6e 28 29 3b 0a 20  s.nextToken();. 
17fd0 20 09 20 20 20 20 20 20 20 20 20 20 20 20 76 61   .            va
17fe0 72 20 70 72 65 76 69 6f 75 73 41 6c 6c 6f 77 59  r previousAllowY
17ff0 69 65 6c 64 20 3d 20 74 68 69 73 2e 63 6f 6e 74  ield = this.cont
18000 65 78 74 2e 61 6c 6c 6f 77 59 69 65 6c 64 3b 0a  ext.allowYield;.
18010 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 74    .            t
18020 68 69 73 2e 63 6f 6e 74 65 78 74 2e 61 6c 6c 6f  his.context.allo
18030 77 59 69 65 6c 64 20 3d 20 74 72 75 65 3b 0a 20  wYield = true;. 
18040 20 09 20 20 20 20 20 20 20 20 20 20 20 20 76 61   .            va
18050 72 20 72 69 67 68 74 20 3d 20 74 68 69 73 2e 69  r right = this.i
18060 73 6f 6c 61 74 65 43 6f 76 65 72 47 72 61 6d 6d  solateCoverGramm
18070 61 72 28 74 68 69 73 2e 70 61 72 73 65 41 73 73  ar(this.parseAss
18080 69 67 6e 6d 65 6e 74 45 78 70 72 65 73 73 69 6f  ignmentExpressio
18090 6e 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  n);.  .         
180a0 20 20 20 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e     this.context.
180b0 61 6c 6c 6f 77 59 69 65 6c 64 20 3d 20 70 72 65  allowYield = pre
180c0 76 69 6f 75 73 41 6c 6c 6f 77 59 69 65 6c 64 3b  viousAllowYield;
180d0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
180e0 70 61 74 74 65 72 6e 20 3d 20 74 68 69 73 2e 66  pattern = this.f
180f0 69 6e 61 6c 69 7a 65 28 74 68 69 73 2e 73 74 61  inalize(this.sta
18100 72 74 4e 6f 64 65 28 73 74 61 72 74 54 6f 6b 65  rtNode(startToke
18110 6e 29 2c 20 6e 65 77 20 4e 6f 64 65 2e 41 73 73  n), new Node.Ass
18120 69 67 6e 6d 65 6e 74 50 61 74 74 65 72 6e 28 70  ignmentPattern(p
18130 61 74 74 65 72 6e 2c 20 72 69 67 68 74 29 29 3b  attern, right));
18140 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a 20 20  .  .        }.  
18150 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
18160 70 61 74 74 65 72 6e 3b 0a 20 20 09 20 20 20 20  pattern;.  .    
18170 7d 3b 0a 20 20 09 20 20 20 20 2f 2f 20 45 43 4d  };.  .    // ECM
18180 41 2d 32 36 32 20 31 33 2e 33 2e 32 20 56 61 72  A-262 13.3.2 Var
18190 69 61 62 6c 65 20 53 74 61 74 65 6d 65 6e 74 0a  iable Statement.
181a0 20 20 09 20 20 20 20 50 61 72 73 65 72 2e 70 72    .    Parser.pr
181b0 6f 74 6f 74 79 70 65 2e 70 61 72 73 65 56 61 72  ototype.parseVar
181c0 69 61 62 6c 65 49 64 65 6e 74 69 66 69 65 72 20  iableIdentifier 
181d0 3d 20 66 75 6e 63 74 69 6f 6e 20 28 6b 69 6e 64  = function (kind
181e0 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 76  ) {.  .        v
181f0 61 72 20 6e 6f 64 65 20 3d 20 74 68 69 73 2e 63  ar node = this.c
18200 72 65 61 74 65 4e 6f 64 65 28 29 3b 0a 20 20 09  reateNode();.  .
18210 20 20 20 20 20 20 20 20 76 61 72 20 74 6f 6b 65          var toke
18220 6e 20 3d 20 74 68 69 73 2e 6e 65 78 74 54 6f 6b  n = this.nextTok
18230 65 6e 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20  en();.  .       
18240 20 69 66 20 28 74 6f 6b 65 6e 2e 74 79 70 65 20   if (token.type 
18250 3d 3d 3d 20 74 6f 6b 65 6e 5f 31 2e 54 6f 6b 65  === token_1.Toke
18260 6e 2e 4b 65 79 77 6f 72 64 20 26 26 20 74 6f 6b  n.Keyword && tok
18270 65 6e 2e 76 61 6c 75 65 20 3d 3d 3d 20 27 79 69  en.value === 'yi
18280 65 6c 64 27 29 20 7b 0a 20 20 09 20 20 20 20 20  eld') {.  .     
18290 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e         if (this.
182a0 63 6f 6e 74 65 78 74 2e 73 74 72 69 63 74 29 20  context.strict) 
182b0 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  {.  .           
182c0 20 20 20 20 20 74 68 69 73 2e 74 6f 6c 65 72 61       this.tolera
182d0 74 65 55 6e 65 78 70 65 63 74 65 64 54 6f 6b 65  teUnexpectedToke
182e0 6e 28 74 6f 6b 65 6e 2c 20 6d 65 73 73 61 67 65  n(token, message
182f0 73 5f 31 2e 4d 65 73 73 61 67 65 73 2e 53 74 72  s_1.Messages.Str
18300 69 63 74 52 65 73 65 72 76 65 64 57 6f 72 64 29  ictReservedWord)
18310 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
18320 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   }.  .          
18330 20 20 69 66 20 28 21 74 68 69 73 2e 63 6f 6e 74    if (!this.cont
18340 65 78 74 2e 61 6c 6c 6f 77 59 69 65 6c 64 29 20  ext.allowYield) 
18350 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  {.  .           
18360 20 20 20 20 20 74 68 69 73 2e 74 68 72 6f 77 55       this.throwU
18370 6e 65 78 70 65 63 74 65 64 54 6f 6b 65 6e 28 74  nexpectedToken(t
18380 6f 6b 65 6e 29 3b 0a 20 20 09 20 20 20 20 20 20  oken);.  .      
18390 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20        }.  .     
183a0 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20     }.  .        
183b0 65 6c 73 65 20 69 66 20 28 74 6f 6b 65 6e 2e 74  else if (token.t
183c0 79 70 65 20 21 3d 3d 20 74 6f 6b 65 6e 5f 31 2e  ype !== token_1.
183d0 54 6f 6b 65 6e 2e 49 64 65 6e 74 69 66 69 65 72  Token.Identifier
183e0 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ) {.  .         
183f0 20 20 20 69 66 20 28 74 68 69 73 2e 63 6f 6e 74     if (this.cont
18400 65 78 74 2e 73 74 72 69 63 74 20 26 26 20 74 6f  ext.strict && to
18410 6b 65 6e 2e 74 79 70 65 20 3d 3d 3d 20 74 6f 6b  ken.type === tok
18420 65 6e 5f 31 2e 54 6f 6b 65 6e 2e 4b 65 79 77 6f  en_1.Token.Keywo
18430 72 64 20 26 26 20 74 68 69 73 2e 73 63 61 6e 6e  rd && this.scann
18440 65 72 2e 69 73 53 74 72 69 63 74 4d 6f 64 65 52  er.isStrictModeR
18450 65 73 65 72 76 65 64 57 6f 72 64 28 74 6f 6b 65  eservedWord(toke
18460 6e 2e 76 61 6c 75 65 29 29 20 7b 0a 20 20 09 20  n.value)) {.  . 
18470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
18480 68 69 73 2e 74 6f 6c 65 72 61 74 65 55 6e 65 78  his.tolerateUnex
18490 70 65 63 74 65 64 54 6f 6b 65 6e 28 74 6f 6b 65  pectedToken(toke
184a0 6e 2c 20 6d 65 73 73 61 67 65 73 5f 31 2e 4d 65  n, messages_1.Me
184b0 73 73 61 67 65 73 2e 53 74 72 69 63 74 52 65 73  ssages.StrictRes
184c0 65 72 76 65 64 57 6f 72 64 29 3b 0a 20 20 09 20  ervedWord);.  . 
184d0 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09             }.  .
184e0 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
184f0 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   {.  .          
18500 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 63        if (this.c
18510 6f 6e 74 65 78 74 2e 73 74 72 69 63 74 20 7c 7c  ontext.strict ||
18520 20 74 6f 6b 65 6e 2e 76 61 6c 75 65 20 21 3d 3d   token.value !==
18530 20 27 6c 65 74 27 20 7c 7c 20 6b 69 6e 64 20 21   'let' || kind !
18540 3d 3d 20 27 76 61 72 27 29 20 7b 0a 20 20 09 20  == 'var') {.  . 
18550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18560 20 20 20 74 68 69 73 2e 74 68 72 6f 77 55 6e 65     this.throwUne
18570 78 70 65 63 74 65 64 54 6f 6b 65 6e 28 74 6f 6b  xpectedToken(tok
18580 65 6e 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  en);.  .        
18590 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20          }.  .   
185a0 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20           }.  .  
185b0 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20        }.  .     
185c0 20 20 20 65 6c 73 65 20 69 66 20 28 74 68 69 73     else if (this
185d0 2e 73 6f 75 72 63 65 54 79 70 65 20 3d 3d 3d 20  .sourceType === 
185e0 27 6d 6f 64 75 6c 65 27 20 26 26 20 74 6f 6b 65  'module' && toke
185f0 6e 2e 74 79 70 65 20 3d 3d 3d 20 74 6f 6b 65 6e  n.type === token
18600 5f 31 2e 54 6f 6b 65 6e 2e 49 64 65 6e 74 69 66  _1.Token.Identif
18610 69 65 72 20 26 26 20 74 6f 6b 65 6e 2e 76 61 6c  ier && token.val
18620 75 65 20 3d 3d 3d 20 27 61 77 61 69 74 27 29 20  ue === 'await') 
18630 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  {.  .           
18640 20 74 68 69 73 2e 74 6f 6c 65 72 61 74 65 55 6e   this.tolerateUn
18650 65 78 70 65 63 74 65 64 54 6f 6b 65 6e 28 74 6f  expectedToken(to
18660 6b 65 6e 29 3b 0a 20 20 09 20 20 20 20 20 20 20  ken);.  .       
18670 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 72 65   }.  .        re
18680 74 75 72 6e 20 74 68 69 73 2e 66 69 6e 61 6c 69  turn this.finali
18690 7a 65 28 6e 6f 64 65 2c 20 6e 65 77 20 4e 6f 64  ze(node, new Nod
186a0 65 2e 49 64 65 6e 74 69 66 69 65 72 28 74 6f 6b  e.Identifier(tok
186b0 65 6e 2e 76 61 6c 75 65 29 29 3b 0a 20 20 09 20  en.value));.  . 
186c0 20 20 20 7d 3b 0a 20 20 09 20 20 20 20 50 61 72     };.  .    Par
186d0 73 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 70 61  ser.prototype.pa
186e0 72 73 65 56 61 72 69 61 62 6c 65 44 65 63 6c 61  rseVariableDecla
186f0 72 61 74 69 6f 6e 20 3d 20 66 75 6e 63 74 69 6f  ration = functio
18700 6e 20 28 6f 70 74 69 6f 6e 73 29 20 7b 0a 20 20  n (options) {.  
18710 09 20 20 20 20 20 20 20 20 76 61 72 20 6e 6f 64  .        var nod
18720 65 20 3d 20 74 68 69 73 2e 63 72 65 61 74 65 4e  e = this.createN
18730 6f 64 65 28 29 3b 0a 20 20 09 20 20 20 20 20 20  ode();.  .      
18740 20 20 76 61 72 20 70 61 72 61 6d 73 20 3d 20 5b    var params = [
18750 5d 3b 0a 20 20 09 20 20 20 20 20 20 20 20 76 61  ];.  .        va
18760 72 20 69 64 20 3d 20 74 68 69 73 2e 70 61 72 73  r id = this.pars
18770 65 50 61 74 74 65 72 6e 28 70 61 72 61 6d 73 2c  ePattern(params,
18780 20 27 76 61 72 27 29 3b 0a 20 20 09 20 20 20 20   'var');.  .    
18790 20 20 20 20 2f 2f 20 45 43 4d 41 2d 32 36 32 20      // ECMA-262 
187a0 31 32 2e 32 2e 31 0a 20 20 09 20 20 20 20 20 20  12.2.1.  .      
187b0 20 20 69 66 20 28 74 68 69 73 2e 63 6f 6e 74 65    if (this.conte
187c0 78 74 2e 73 74 72 69 63 74 20 26 26 20 69 64 2e  xt.strict && id.
187d0 74 79 70 65 20 3d 3d 3d 20 73 79 6e 74 61 78 5f  type === syntax_
187e0 31 2e 53 79 6e 74 61 78 2e 49 64 65 6e 74 69 66  1.Syntax.Identif
187f0 69 65 72 29 20 7b 0a 20 20 09 20 20 20 20 20 20  ier) {.  .      
18800 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 73        if (this.s
18810 63 61 6e 6e 65 72 2e 69 73 52 65 73 74 72 69 63  canner.isRestric
18820 74 65 64 57 6f 72 64 28 28 69 64 29 2e 6e 61 6d  tedWord((id).nam
18830 65 29 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20  e)) {.  .       
18840 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 74 6f           this.to
18850 6c 65 72 61 74 65 45 72 72 6f 72 28 6d 65 73 73  lerateError(mess
18860 61 67 65 73 5f 31 2e 4d 65 73 73 61 67 65 73 2e  ages_1.Messages.
18870 53 74 72 69 63 74 56 61 72 4e 61 6d 65 29 3b 0a  StrictVarName);.
18880 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 7d    .            }
18890 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a 20 20  .  .        }.  
188a0 09 20 20 20 20 20 20 20 20 76 61 72 20 69 6e 69  .        var ini
188b0 74 20 3d 20 6e 75 6c 6c 3b 0a 20 20 09 20 20 20  t = null;.  .   
188c0 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 6d 61       if (this.ma
188d0 74 63 68 28 27 3d 27 29 29 20 7b 0a 20 20 09 20  tch('=')) {.  . 
188e0 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
188f0 6e 65 78 74 54 6f 6b 65 6e 28 29 3b 0a 20 20 09  nextToken();.  .
18900 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 69 74              init
18910 20 3d 20 74 68 69 73 2e 69 73 6f 6c 61 74 65 43   = this.isolateC
18920 6f 76 65 72 47 72 61 6d 6d 61 72 28 74 68 69 73  overGrammar(this
18930 2e 70 61 72 73 65 41 73 73 69 67 6e 6d 65 6e 74  .parseAssignment
18940 45 78 70 72 65 73 73 69 6f 6e 29 3b 0a 20 20 09  Expression);.  .
18950 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20          }.  .   
18960 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 69 64       else if (id
18970 2e 74 79 70 65 20 21 3d 3d 20 73 79 6e 74 61 78  .type !== syntax
18980 5f 31 2e 53 79 6e 74 61 78 2e 49 64 65 6e 74 69  _1.Syntax.Identi
18990 66 69 65 72 20 26 26 20 21 6f 70 74 69 6f 6e 73  fier && !options
189a0 2e 69 6e 46 6f 72 29 20 7b 0a 20 20 09 20 20 20  .inFor) {.  .   
189b0 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 65 78           this.ex
189c0 70 65 63 74 28 27 3d 27 29 3b 0a 20 20 09 20 20  pect('=');.  .  
189d0 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20        }.  .     
189e0 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e 66     return this.f
189f0 69 6e 61 6c 69 7a 65 28 6e 6f 64 65 2c 20 6e 65  inalize(node, ne
18a00 77 20 4e 6f 64 65 2e 56 61 72 69 61 62 6c 65 44  w Node.VariableD
18a10 65 63 6c 61 72 61 74 6f 72 28 69 64 2c 20 69 6e  eclarator(id, in
18a20 69 74 29 29 3b 0a 20 20 09 20 20 20 20 7d 3b 0a  it));.  .    };.
18a30 20 20 09 20 20 20 20 50 61 72 73 65 72 2e 70 72    .    Parser.pr
18a40 6f 74 6f 74 79 70 65 2e 70 61 72 73 65 56 61 72  ototype.parseVar
18a50 69 61 62 6c 65 44 65 63 6c 61 72 61 74 69 6f 6e  iableDeclaration
18a60 4c 69 73 74 20 3d 20 66 75 6e 63 74 69 6f 6e 20  List = function 
18a70 28 6f 70 74 69 6f 6e 73 29 20 7b 0a 20 20 09 20  (options) {.  . 
18a80 20 20 20 20 20 20 20 76 61 72 20 74 68 69 73 24         var this$
18a90 31 20 3d 20 74 68 69 73 3b 0a 0a 20 20 09 20 20  1 = this;..  .  
18aa0 20 20 20 20 20 20 76 61 72 20 6f 70 74 20 3d 20        var opt = 
18ab0 7b 20 69 6e 46 6f 72 3a 20 6f 70 74 69 6f 6e 73  { inFor: options
18ac0 2e 69 6e 46 6f 72 20 7d 3b 0a 20 20 09 20 20 20  .inFor };.  .   
18ad0 20 20 20 20 20 76 61 72 20 6c 69 73 74 20 3d 20       var list = 
18ae0 5b 5d 3b 0a 20 20 09 20 20 20 20 20 20 20 20 6c  [];.  .        l
18af0 69 73 74 2e 70 75 73 68 28 74 68 69 73 2e 70 61  ist.push(this.pa
18b00 72 73 65 56 61 72 69 61 62 6c 65 44 65 63 6c 61  rseVariableDecla
18b10 72 61 74 69 6f 6e 28 6f 70 74 29 29 3b 0a 20 20  ration(opt));.  
18b20 09 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 28  .        while (
18b30 74 68 69 73 2e 6d 61 74 63 68 28 27 2c 27 29 29  this.match(','))
18b40 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   {.  .          
18b50 20 20 74 68 69 73 24 31 2e 6e 65 78 74 54 6f 6b    this$1.nextTok
18b60 65 6e 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20  en();.  .       
18b70 20 20 20 20 20 6c 69 73 74 2e 70 75 73 68 28 74       list.push(t
18b80 68 69 73 24 31 2e 70 61 72 73 65 56 61 72 69 61  his$1.parseVaria
18b90 62 6c 65 44 65 63 6c 61 72 61 74 69 6f 6e 28 6f  bleDeclaration(o
18ba0 70 74 29 29 3b 0a 20 20 09 20 20 20 20 20 20 20  pt));.  .       
18bb0 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 72 65   }.  .        re
18bc0 74 75 72 6e 20 6c 69 73 74 3b 0a 20 20 09 20 20  turn list;.  .  
18bd0 20 20 7d 3b 0a 20 20 09 20 20 20 20 50 61 72 73    };.  .    Pars
18be0 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 70 61 72  er.prototype.par
18bf0 73 65 56 61 72 69 61 62 6c 65 53 74 61 74 65 6d  seVariableStatem
18c00 65 6e 74 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28  ent = function (
18c10 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 76  ) {.  .        v
18c20 61 72 20 6e 6f 64 65 20 3d 20 74 68 69 73 2e 63  ar node = this.c
18c30 72 65 61 74 65 4e 6f 64 65 28 29 3b 0a 20 20 09  reateNode();.  .
18c40 20 20 20 20 20 20 20 20 74 68 69 73 2e 65 78 70          this.exp
18c50 65 63 74 4b 65 79 77 6f 72 64 28 27 76 61 72 27  ectKeyword('var'
18c60 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 76 61  );.  .        va
18c70 72 20 64 65 63 6c 61 72 61 74 69 6f 6e 73 20 3d  r declarations =
18c80 20 74 68 69 73 2e 70 61 72 73 65 56 61 72 69 61   this.parseVaria
18c90 62 6c 65 44 65 63 6c 61 72 61 74 69 6f 6e 4c 69  bleDeclarationLi
18ca0 73 74 28 7b 20 69 6e 46 6f 72 3a 20 66 61 6c 73  st({ inFor: fals
18cb0 65 20 7d 29 3b 0a 20 20 09 20 20 20 20 20 20 20  e });.  .       
18cc0 20 74 68 69 73 2e 63 6f 6e 73 75 6d 65 53 65 6d   this.consumeSem
18cd0 69 63 6f 6c 6f 6e 28 29 3b 0a 20 20 09 20 20 20  icolon();.  .   
18ce0 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73       return this
18cf0 2e 66 69 6e 61 6c 69 7a 65 28 6e 6f 64 65 2c 20  .finalize(node, 
18d00 6e 65 77 20 4e 6f 64 65 2e 56 61 72 69 61 62 6c  new Node.Variabl
18d10 65 44 65 63 6c 61 72 61 74 69 6f 6e 28 64 65 63  eDeclaration(dec
18d20 6c 61 72 61 74 69 6f 6e 73 2c 20 27 76 61 72 27  larations, 'var'
18d30 29 29 3b 0a 20 20 09 20 20 20 20 7d 3b 0a 20 20  ));.  .    };.  
18d40 09 20 20 20 20 2f 2f 20 45 43 4d 41 2d 32 36 32  .    // ECMA-262
18d50 20 31 33 2e 34 20 45 6d 70 74 79 20 53 74 61 74   13.4 Empty Stat
18d60 65 6d 65 6e 74 0a 20 20 09 20 20 20 20 50 61 72  ement.  .    Par
18d70 73 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 70 61  ser.prototype.pa
18d80 72 73 65 45 6d 70 74 79 53 74 61 74 65 6d 65 6e  rseEmptyStatemen
18d90 74 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20  t = function () 
18da0 7b 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72  {.  .        var
18db0 20 6e 6f 64 65 20 3d 20 74 68 69 73 2e 63 72 65   node = this.cre
18dc0 61 74 65 4e 6f 64 65 28 29 3b 0a 20 20 09 20 20  ateNode();.  .  
18dd0 20 20 20 20 20 20 74 68 69 73 2e 65 78 70 65 63        this.expec
18de0 74 28 27 3b 27 29 3b 0a 20 20 09 20 20 20 20 20  t(';');.  .     
18df0 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e 66     return this.f
18e00 69 6e 61 6c 69 7a 65 28 6e 6f 64 65 2c 20 6e 65  inalize(node, ne
18e10 77 20 4e 6f 64 65 2e 45 6d 70 74 79 53 74 61 74  w Node.EmptyStat
18e20 65 6d 65 6e 74 28 29 29 3b 0a 20 20 09 20 20 20  ement());.  .   
18e30 20 7d 3b 0a 20 20 09 20 20 20 20 2f 2f 20 45 43   };.  .    // EC
18e40 4d 41 2d 32 36 32 20 31 33 2e 35 20 45 78 70 72  MA-262 13.5 Expr
18e50 65 73 73 69 6f 6e 20 53 74 61 74 65 6d 65 6e 74  ession Statement
18e60 0a 20 20 09 20 20 20 20 50 61 72 73 65 72 2e 70  .  .    Parser.p
18e70 72 6f 74 6f 74 79 70 65 2e 70 61 72 73 65 45 78  rototype.parseEx
18e80 70 72 65 73 73 69 6f 6e 53 74 61 74 65 6d 65 6e  pressionStatemen
18e90 74 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20  t = function () 
18ea0 7b 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72  {.  .        var
18eb0 20 6e 6f 64 65 20 3d 20 74 68 69 73 2e 63 72 65   node = this.cre
18ec0 61 74 65 4e 6f 64 65 28 29 3b 0a 20 20 09 20 20  ateNode();.  .  
18ed0 20 20 20 20 20 20 76 61 72 20 65 78 70 72 20 3d        var expr =
18ee0 20 74 68 69 73 2e 70 61 72 73 65 45 78 70 72 65   this.parseExpre
18ef0 73 73 69 6f 6e 28 29 3b 0a 20 20 09 20 20 20 20  ssion();.  .    
18f00 20 20 20 20 74 68 69 73 2e 63 6f 6e 73 75 6d 65      this.consume
18f10 53 65 6d 69 63 6f 6c 6f 6e 28 29 3b 0a 20 20 09  Semicolon();.  .
18f20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
18f30 68 69 73 2e 66 69 6e 61 6c 69 7a 65 28 6e 6f 64  his.finalize(nod
18f40 65 2c 20 6e 65 77 20 4e 6f 64 65 2e 45 78 70 72  e, new Node.Expr
18f50 65 73 73 69 6f 6e 53 74 61 74 65 6d 65 6e 74 28  essionStatement(
18f60 65 78 70 72 29 29 3b 0a 20 20 09 20 20 20 20 7d  expr));.  .    }
18f70 3b 0a 20 20 09 20 20 20 20 2f 2f 20 45 43 4d 41  ;.  .    // ECMA
18f80 2d 32 36 32 20 31 33 2e 36 20 49 66 20 73 74 61  -262 13.6 If sta
18f90 74 65 6d 65 6e 74 0a 20 20 09 20 20 20 20 50 61  tement.  .    Pa
18fa0 72 73 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 70  rser.prototype.p
18fb0 61 72 73 65 49 66 53 74 61 74 65 6d 65 6e 74 20  arseIfStatement 
18fc0 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a  = function () {.
18fd0 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20 6e    .        var n
18fe0 6f 64 65 20 3d 20 74 68 69 73 2e 63 72 65 61 74  ode = this.creat
18ff0 65 4e 6f 64 65 28 29 3b 0a 20 20 09 20 20 20 20  eNode();.  .    
19000 20 20 20 20 76 61 72 20 63 6f 6e 73 65 71 75 65      var conseque
19010 6e 74 3b 0a 20 20 09 20 20 20 20 20 20 20 20 76  nt;.  .        v
19020 61 72 20 61 6c 74 65 72 6e 61 74 65 20 3d 20 6e  ar alternate = n
19030 75 6c 6c 3b 0a 20 20 09 20 20 20 20 20 20 20 20  ull;.  .        
19040 74 68 69 73 2e 65 78 70 65 63 74 4b 65 79 77 6f  this.expectKeywo
19050 72 64 28 27 69 66 27 29 3b 0a 20 20 09 20 20 20  rd('if');.  .   
19060 20 20 20 20 20 74 68 69 73 2e 65 78 70 65 63 74       this.expect
19070 28 27 28 27 29 3b 0a 20 20 09 20 20 20 20 20 20  ('(');.  .      
19080 20 20 76 61 72 20 74 65 73 74 20 3d 20 74 68 69    var test = thi
19090 73 2e 70 61 72 73 65 45 78 70 72 65 73 73 69 6f  s.parseExpressio
190a0 6e 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  n();.  .        
190b0 69 66 20 28 21 74 68 69 73 2e 6d 61 74 63 68 28  if (!this.match(
190c0 27 29 27 29 20 26 26 20 74 68 69 73 2e 63 6f 6e  ')') && this.con
190d0 66 69 67 2e 74 6f 6c 65 72 61 6e 74 29 20 7b 0a  fig.tolerant) {.
190e0 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 74    .            t
190f0 68 69 73 2e 74 6f 6c 65 72 61 74 65 55 6e 65 78  his.tolerateUnex
19100 70 65 63 74 65 64 54 6f 6b 65 6e 28 74 68 69 73  pectedToken(this
19110 2e 6e 65 78 74 54 6f 6b 65 6e 28 29 29 3b 0a 20  .nextToken());. 
19120 20 09 20 20 20 20 20 20 20 20 20 20 20 20 63 6f   .            co
19130 6e 73 65 71 75 65 6e 74 20 3d 20 74 68 69 73 2e  nsequent = this.
19140 66 69 6e 61 6c 69 7a 65 28 74 68 69 73 2e 63 72  finalize(this.cr
19150 65 61 74 65 4e 6f 64 65 28 29 2c 20 6e 65 77 20  eateNode(), new 
19160 4e 6f 64 65 2e 45 6d 70 74 79 53 74 61 74 65 6d  Node.EmptyStatem
19170 65 6e 74 28 29 29 3b 0a 20 20 09 20 20 20 20 20  ent());.  .     
19180 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20     }.  .        
19190 65 6c 73 65 20 7b 0a 20 20 09 20 20 20 20 20 20  else {.  .      
191a0 20 20 20 20 20 20 74 68 69 73 2e 65 78 70 65 63        this.expec
191b0 74 28 27 29 27 29 3b 0a 20 20 09 20 20 20 20 20  t(')');.  .     
191c0 20 20 20 20 20 20 20 63 6f 6e 73 65 71 75 65 6e         consequen
191d0 74 20 3d 20 74 68 69 73 2e 70 61 72 73 65 53 74  t = this.parseSt
191e0 61 74 65 6d 65 6e 74 28 29 3b 0a 20 20 09 20 20  atement();.  .  
191f0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74 68            if (th
19200 69 73 2e 6d 61 74 63 68 4b 65 79 77 6f 72 64 28  is.matchKeyword(
19210 27 65 6c 73 65 27 29 29 20 7b 0a 20 20 09 20 20  'else')) {.  .  
19220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
19230 69 73 2e 6e 65 78 74 54 6f 6b 65 6e 28 29 3b 0a  is.nextToken();.
19240 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
19250 20 20 20 61 6c 74 65 72 6e 61 74 65 20 3d 20 74     alternate = t
19260 68 69 73 2e 70 61 72 73 65 53 74 61 74 65 6d 65  his.parseStateme
19270 6e 74 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20  nt();.  .       
19280 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20       }.  .      
19290 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 72    }.  .        r
192a0 65 74 75 72 6e 20 74 68 69 73 2e 66 69 6e 61 6c  eturn this.final
192b0 69 7a 65 28 6e 6f 64 65 2c 20 6e 65 77 20 4e 6f  ize(node, new No
192c0 64 65 2e 49 66 53 74 61 74 65 6d 65 6e 74 28 74  de.IfStatement(t
192d0 65 73 74 2c 20 63 6f 6e 73 65 71 75 65 6e 74 2c  est, consequent,
192e0 20 61 6c 74 65 72 6e 61 74 65 29 29 3b 0a 20 20   alternate));.  
192f0 09 20 20 20 20 7d 3b 0a 20 20 09 20 20 20 20 2f  .    };.  .    /
19300 2f 20 45 43 4d 41 2d 32 36 32 20 31 33 2e 37 2e  / ECMA-262 13.7.
19310 32 20 54 68 65 20 64 6f 2d 77 68 69 6c 65 20 53  2 The do-while S
19320 74 61 74 65 6d 65 6e 74 0a 20 20 09 20 20 20 20  tatement.  .    
19330 50 61 72 73 65 72 2e 70 72 6f 74 6f 74 79 70 65  Parser.prototype
19340 2e 70 61 72 73 65 44 6f 57 68 69 6c 65 53 74 61  .parseDoWhileSta
19350 74 65 6d 65 6e 74 20 3d 20 66 75 6e 63 74 69 6f  tement = functio
19360 6e 20 28 29 20 7b 0a 20 20 09 20 20 20 20 20 20  n () {.  .      
19370 20 20 76 61 72 20 6e 6f 64 65 20 3d 20 74 68 69    var node = thi
19380 73 2e 63 72 65 61 74 65 4e 6f 64 65 28 29 3b 0a  s.createNode();.
19390 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e    .        this.
193a0 65 78 70 65 63 74 4b 65 79 77 6f 72 64 28 27 64  expectKeyword('d
193b0 6f 27 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  o');.  .        
193c0 76 61 72 20 70 72 65 76 69 6f 75 73 49 6e 49 74  var previousInIt
193d0 65 72 61 74 69 6f 6e 20 3d 20 74 68 69 73 2e 63  eration = this.c
193e0 6f 6e 74 65 78 74 2e 69 6e 49 74 65 72 61 74 69  ontext.inIterati
193f0 6f 6e 3b 0a 20 20 09 20 20 20 20 20 20 20 20 74  on;.  .        t
19400 68 69 73 2e 63 6f 6e 74 65 78 74 2e 69 6e 49 74  his.context.inIt
19410 65 72 61 74 69 6f 6e 20 3d 20 74 72 75 65 3b 0a  eration = true;.
19420 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20 62    .        var b
19430 6f 64 79 20 3d 20 74 68 69 73 2e 70 61 72 73 65  ody = this.parse
19440 53 74 61 74 65 6d 65 6e 74 28 29 3b 0a 20 20 09  Statement();.  .
19450 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 6f 6e          this.con
19460 74 65 78 74 2e 69 6e 49 74 65 72 61 74 69 6f 6e  text.inIteration
19470 20 3d 20 70 72 65 76 69 6f 75 73 49 6e 49 74 65   = previousInIte
19480 72 61 74 69 6f 6e 3b 0a 20 20 09 20 20 20 20 20  ration;.  .     
19490 20 20 20 74 68 69 73 2e 65 78 70 65 63 74 4b 65     this.expectKe
194a0 79 77 6f 72 64 28 27 77 68 69 6c 65 27 29 3b 0a  yword('while');.
194b0 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e    .        this.
194c0 65 78 70 65 63 74 28 27 28 27 29 3b 0a 20 20 09  expect('(');.  .
194d0 20 20 20 20 20 20 20 20 76 61 72 20 74 65 73 74          var test
194e0 20 3d 20 74 68 69 73 2e 70 61 72 73 65 45 78 70   = this.parseExp
194f0 72 65 73 73 69 6f 6e 28 29 3b 0a 20 20 09 20 20  ression();.  .  
19500 20 20 20 20 20 20 74 68 69 73 2e 65 78 70 65 63        this.expec
19510 74 28 27 29 27 29 3b 0a 20 20 09 20 20 20 20 20  t(')');.  .     
19520 20 20 20 69 66 20 28 74 68 69 73 2e 6d 61 74 63     if (this.matc
19530 68 28 27 3b 27 29 29 20 7b 0a 20 20 09 20 20 20  h(';')) {.  .   
19540 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6e 65           this.ne
19550 78 74 54 6f 6b 65 6e 28 29 3b 0a 20 20 09 20 20  xtToken();.  .  
19560 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20        }.  .     
19570 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e 66     return this.f
19580 69 6e 61 6c 69 7a 65 28 6e 6f 64 65 2c 20 6e 65  inalize(node, ne
19590 77 20 4e 6f 64 65 2e 44 6f 57 68 69 6c 65 53 74  w Node.DoWhileSt
195a0 61 74 65 6d 65 6e 74 28 62 6f 64 79 2c 20 74 65  atement(body, te
195b0 73 74 29 29 3b 0a 20 20 09 20 20 20 20 7d 3b 0a  st));.  .    };.
195c0 20 20 09 20 20 20 20 2f 2f 20 45 43 4d 41 2d 32    .    // ECMA-2
195d0 36 32 20 31 33 2e 37 2e 33 20 54 68 65 20 77 68  62 13.7.3 The wh
195e0 69 6c 65 20 53 74 61 74 65 6d 65 6e 74 0a 20 20  ile Statement.  
195f0 09 20 20 20 20 50 61 72 73 65 72 2e 70 72 6f 74  .    Parser.prot
19600 6f 74 79 70 65 2e 70 61 72 73 65 57 68 69 6c 65  otype.parseWhile
19610 53 74 61 74 65 6d 65 6e 74 20 3d 20 66 75 6e 63  Statement = func
19620 74 69 6f 6e 20 28 29 20 7b 0a 20 20 09 20 20 20  tion () {.  .   
19630 20 20 20 20 20 76 61 72 20 6e 6f 64 65 20 3d 20       var node = 
19640 74 68 69 73 2e 63 72 65 61 74 65 4e 6f 64 65 28  this.createNode(
19650 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 76 61  );.  .        va
19660 72 20 62 6f 64 79 3b 0a 20 20 09 20 20 20 20 20  r body;.  .     
19670 20 20 20 74 68 69 73 2e 65 78 70 65 63 74 4b 65     this.expectKe
19680 79 77 6f 72 64 28 27 77 68 69 6c 65 27 29 3b 0a  yword('while');.
19690 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e    .        this.
196a0 65 78 70 65 63 74 28 27 28 27 29 3b 0a 20 20 09  expect('(');.  .
196b0 20 20 20 20 20 20 20 20 76 61 72 20 74 65 73 74          var test
196c0 20 3d 20 74 68 69 73 2e 70 61 72 73 65 45 78 70   = this.parseExp
196d0 72 65 73 73 69 6f 6e 28 29 3b 0a 20 20 09 20 20  ression();.  .  
196e0 20 20 20 20 20 20 69 66 20 28 21 74 68 69 73 2e        if (!this.
196f0 6d 61 74 63 68 28 27 29 27 29 20 26 26 20 74 68  match(')') && th
19700 69 73 2e 63 6f 6e 66 69 67 2e 74 6f 6c 65 72 61  is.config.tolera
19710 6e 74 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20  nt) {.  .       
19720 20 20 20 20 20 74 68 69 73 2e 74 6f 6c 65 72 61       this.tolera
19730 74 65 55 6e 65 78 70 65 63 74 65 64 54 6f 6b 65  teUnexpectedToke
19740 6e 28 74 68 69 73 2e 6e 65 78 74 54 6f 6b 65 6e  n(this.nextToken
19750 28 29 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  ());.  .        
19760 20 20 20 20 62 6f 64 79 20 3d 20 74 68 69 73 2e      body = this.
19770 66 69 6e 61 6c 69 7a 65 28 74 68 69 73 2e 63 72  finalize(this.cr
19780 65 61 74 65 4e 6f 64 65 28 29 2c 20 6e 65 77 20  eateNode(), new 
19790 4e 6f 64 65 2e 45 6d 70 74 79 53 74 61 74 65 6d  Node.EmptyStatem
197a0 65 6e 74 28 29 29 3b 0a 20 20 09 20 20 20 20 20  ent());.  .     
197b0 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20     }.  .        
197c0 65 6c 73 65 20 7b 0a 20 20 09 20 20 20 20 20 20  else {.  .      
197d0 20 20 20 20 20 20 74 68 69 73 2e 65 78 70 65 63        this.expec
197e0 74 28 27 29 27 29 3b 0a 20 20 09 20 20 20 20 20  t(')');.  .     
197f0 20 20 20 20 20 20 20 76 61 72 20 70 72 65 76 69         var previ
19800 6f 75 73 49 6e 49 74 65 72 61 74 69 6f 6e 20 3d  ousInIteration =
19810 20 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e 69 6e   this.context.in
19820 49 74 65 72 61 74 69 6f 6e 3b 0a 20 20 09 20 20  Iteration;.  .  
19830 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 63            this.c
19840 6f 6e 74 65 78 74 2e 69 6e 49 74 65 72 61 74 69  ontext.inIterati
19850 6f 6e 20 3d 20 74 72 75 65 3b 0a 20 20 09 20 20  on = true;.  .  
19860 20 20 20 20 20 20 20 20 20 20 62 6f 64 79 20 3d            body =
19870 20 74 68 69 73 2e 70 61 72 73 65 53 74 61 74 65   this.parseState
19880 6d 65 6e 74 28 29 3b 0a 20 20 09 20 20 20 20 20  ment();.  .     
19890 20 20 20 20 20 20 20 74 68 69 73 2e 63 6f 6e 74         this.cont
198a0 65 78 74 2e 69 6e 49 74 65 72 61 74 69 6f 6e 20  ext.inIteration 
198b0 3d 20 70 72 65 76 69 6f 75 73 49 6e 49 74 65 72  = previousInIter
198c0 61 74 69 6f 6e 3b 0a 20 20 09 20 20 20 20 20 20  ation;.  .      
198d0 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 72    }.  .        r
198e0 65 74 75 72 6e 20 74 68 69 73 2e 66 69 6e 61 6c  eturn this.final
198f0 69 7a 65 28 6e 6f 64 65 2c 20 6e 65 77 20 4e 6f  ize(node, new No
19900 64 65 2e 57 68 69 6c 65 53 74 61 74 65 6d 65 6e  de.WhileStatemen
19910 74 28 74 65 73 74 2c 20 62 6f 64 79 29 29 3b 0a  t(test, body));.
19920 20 20 09 20 20 20 20 7d 3b 0a 20 20 09 20 20 20    .    };.  .   
19930 20 2f 2f 20 45 43 4d 41 2d 32 36 32 20 31 33 2e   // ECMA-262 13.
19940 37 2e 34 20 54 68 65 20 66 6f 72 20 53 74 61 74  7.4 The for Stat
19950 65 6d 65 6e 74 0a 20 20 09 20 20 20 20 2f 2f 20  ement.  .    // 
19960 45 43 4d 41 2d 32 36 32 20 31 33 2e 37 2e 35 20  ECMA-262 13.7.5 
19970 54 68 65 20 66 6f 72 2d 69 6e 20 61 6e 64 20 66  The for-in and f
19980 6f 72 2d 6f 66 20 53 74 61 74 65 6d 65 6e 74 73  or-of Statements
19990 0a 20 20 09 20 20 20 20 50 61 72 73 65 72 2e 70  .  .    Parser.p
199a0 72 6f 74 6f 74 79 70 65 2e 70 61 72 73 65 46 6f  rototype.parseFo
199b0 72 53 74 61 74 65 6d 65 6e 74 20 3d 20 66 75 6e  rStatement = fun
199c0 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20 09 20 20  ction () {.  .  
199d0 20 20 20 20 20 20 76 61 72 20 74 68 69 73 24 31        var this$1
199e0 20 3d 20 74 68 69 73 3b 0a 0a 20 20 09 20 20 20   = this;..  .   
199f0 20 20 20 20 20 76 61 72 20 69 6e 69 74 20 3d 20       var init = 
19a00 6e 75 6c 6c 3b 0a 20 20 09 20 20 20 20 20 20 20  null;.  .       
19a10 20 76 61 72 20 74 65 73 74 20 3d 20 6e 75 6c 6c   var test = null
19a20 3b 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72  ;.  .        var
19a30 20 75 70 64 61 74 65 20 3d 20 6e 75 6c 6c 3b 0a   update = null;.
19a40 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20 66    .        var f
19a50 6f 72 49 6e 20 3d 20 74 72 75 65 3b 0a 20 20 09  orIn = true;.  .
19a60 20 20 20 20 20 20 20 20 76 61 72 20 6c 65 66 74          var left
19a70 2c 20 72 69 67 68 74 3b 0a 20 20 09 20 20 20 20  , right;.  .    
19a80 20 20 20 20 76 61 72 20 6e 6f 64 65 20 3d 20 74      var node = t
19a90 68 69 73 2e 63 72 65 61 74 65 4e 6f 64 65 28 29  his.createNode()
19aa0 3b 0a 20 20 09 20 20 20 20 20 20 20 20 74 68 69  ;.  .        thi
19ab0 73 2e 65 78 70 65 63 74 4b 65 79 77 6f 72 64 28  s.expectKeyword(
19ac0 27 66 6f 72 27 29 3b 0a 20 20 09 20 20 20 20 20  'for');.  .     
19ad0 20 20 20 74 68 69 73 2e 65 78 70 65 63 74 28 27     this.expect('
19ae0 28 27 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  (');.  .        
19af0 69 66 20 28 74 68 69 73 2e 6d 61 74 63 68 28 27  if (this.match('
19b00 3b 27 29 29 20 7b 0a 20 20 09 20 20 20 20 20 20  ;')) {.  .      
19b10 20 20 20 20 20 20 74 68 69 73 2e 6e 65 78 74 54        this.nextT
19b20 6f 6b 65 6e 28 29 3b 0a 20 20 09 20 20 20 20 20  oken();.  .     
19b30 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20     }.  .        
19b40 65 6c 73 65 20 7b 0a 20 20 09 20 20 20 20 20 20  else {.  .      
19b50 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 6d        if (this.m
19b60 61 74 63 68 4b 65 79 77 6f 72 64 28 27 76 61 72  atchKeyword('var
19b70 27 29 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20  ')) {.  .       
19b80 20 20 20 20 20 20 20 20 20 69 6e 69 74 20 3d 20           init = 
19b90 74 68 69 73 2e 63 72 65 61 74 65 4e 6f 64 65 28  this.createNode(
19ba0 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  );.  .          
19bb0 20 20 20 20 20 20 74 68 69 73 2e 6e 65 78 74 54        this.nextT
19bc0 6f 6b 65 6e 28 29 3b 0a 20 20 09 20 20 20 20 20  oken();.  .     
19bd0 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 70             var p
19be0 72 65 76 69 6f 75 73 41 6c 6c 6f 77 49 6e 20 3d  reviousAllowIn =
19bf0 20 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e 61 6c   this.context.al
19c00 6c 6f 77 49 6e 3b 0a 20 20 09 20 20 20 20 20 20  lowIn;.  .      
19c10 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 63            this.c
19c20 6f 6e 74 65 78 74 2e 61 6c 6c 6f 77 49 6e 20 3d  ontext.allowIn =
19c30 20 66 61 6c 73 65 3b 0a 20 20 09 20 20 20 20 20   false;.  .     
19c40 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 64             var d
19c50 65 63 6c 61 72 61 74 69 6f 6e 73 20 3d 20 74 68  eclarations = th
19c60 69 73 2e 70 61 72 73 65 56 61 72 69 61 62 6c 65  is.parseVariable
19c70 44 65 63 6c 61 72 61 74 69 6f 6e 4c 69 73 74 28  DeclarationList(
19c80 7b 20 69 6e 46 6f 72 3a 20 74 72 75 65 20 7d 29  { inFor: true })
19c90 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
19ca0 20 20 20 20 20 74 68 69 73 2e 63 6f 6e 74 65 78       this.contex
19cb0 74 2e 61 6c 6c 6f 77 49 6e 20 3d 20 70 72 65 76  t.allowIn = prev
19cc0 69 6f 75 73 41 6c 6c 6f 77 49 6e 3b 0a 20 20 09  iousAllowIn;.  .
19cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19ce0 69 66 20 28 64 65 63 6c 61 72 61 74 69 6f 6e 73  if (declarations
19cf0 2e 6c 65 6e 67 74 68 20 3d 3d 3d 20 31 20 26 26  .length === 1 &&
19d00 20 74 68 69 73 2e 6d 61 74 63 68 4b 65 79 77 6f   this.matchKeywo
19d10 72 64 28 27 69 6e 27 29 29 20 7b 0a 20 20 09 20  rd('in')) {.  . 
19d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19d30 20 20 20 76 61 72 20 64 65 63 6c 20 3d 20 64 65     var decl = de
19d40 63 6c 61 72 61 74 69 6f 6e 73 5b 30 5d 3b 0a 20  clarations[0];. 
19d50 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
19d60 20 20 20 20 20 20 69 66 20 28 64 65 63 6c 2e 69        if (decl.i
19d70 6e 69 74 20 26 26 20 28 64 65 63 6c 2e 69 64 2e  nit && (decl.id.
19d80 74 79 70 65 20 3d 3d 3d 20 73 79 6e 74 61 78 5f  type === syntax_
19d90 31 2e 53 79 6e 74 61 78 2e 41 72 72 61 79 50 61  1.Syntax.ArrayPa
19da0 74 74 65 72 6e 20 7c 7c 20 64 65 63 6c 2e 69 64  ttern || decl.id
19db0 2e 74 79 70 65 20 3d 3d 3d 20 73 79 6e 74 61 78  .type === syntax
19dc0 5f 31 2e 53 79 6e 74 61 78 2e 4f 62 6a 65 63 74  _1.Syntax.Object
19dd0 50 61 74 74 65 72 6e 20 7c 7c 20 74 68 69 73 2e  Pattern || this.
19de0 63 6f 6e 74 65 78 74 2e 73 74 72 69 63 74 29 29  context.strict))
19df0 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   {.  .          
19e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
19e10 69 73 2e 74 6f 6c 65 72 61 74 65 45 72 72 6f 72  is.tolerateError
19e20 28 6d 65 73 73 61 67 65 73 5f 31 2e 4d 65 73 73  (messages_1.Mess
19e30 61 67 65 73 2e 46 6f 72 49 6e 4f 66 4c 6f 6f 70  ages.ForInOfLoop
19e40 49 6e 69 74 69 61 6c 69 7a 65 72 2c 20 27 66 6f  Initializer, 'fo
19e50 72 2d 69 6e 27 29 3b 0a 20 20 09 20 20 20 20 20  r-in');.  .     
19e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
19e70 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
19e80 20 20 20 20 20 20 20 20 69 6e 69 74 20 3d 20 74          init = t
19e90 68 69 73 2e 66 69 6e 61 6c 69 7a 65 28 69 6e 69  his.finalize(ini
19ea0 74 2c 20 6e 65 77 20 4e 6f 64 65 2e 56 61 72 69  t, new Node.Vari
19eb0 61 62 6c 65 44 65 63 6c 61 72 61 74 69 6f 6e 28  ableDeclaration(
19ec0 64 65 63 6c 61 72 61 74 69 6f 6e 73 2c 20 27 76  declarations, 'v
19ed0 61 72 27 29 29 3b 0a 20 20 09 20 20 20 20 20 20  ar'));.  .      
19ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
19ef0 69 73 2e 6e 65 78 74 54 6f 6b 65 6e 28 29 3b 0a  is.nextToken();.
19f00 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
19f10 20 20 20 20 20 20 20 6c 65 66 74 20 3d 20 69 6e         left = in
19f20 69 74 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  it;.  .         
19f30 20 20 20 20 20 20 20 20 20 20 20 72 69 67 68 74             right
19f40 20 3d 20 74 68 69 73 2e 70 61 72 73 65 45 78 70   = this.parseExp
19f50 72 65 73 73 69 6f 6e 28 29 3b 0a 20 20 09 20 20  ression();.  .  
19f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19f70 20 20 69 6e 69 74 20 3d 20 6e 75 6c 6c 3b 0a 20    init = null;. 
19f80 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
19f90 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20    }.  .         
19fa0 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28         else if (
19fb0 64 65 63 6c 61 72 61 74 69 6f 6e 73 2e 6c 65 6e  declarations.len
19fc0 67 74 68 20 3d 3d 3d 20 31 20 26 26 20 64 65 63  gth === 1 && dec
19fd0 6c 61 72 61 74 69 6f 6e 73 5b 30 5d 2e 69 6e 69  larations[0].ini
19fe0 74 20 3d 3d 3d 20 6e 75 6c 6c 20 26 26 20 74 68  t === null && th
19ff0 69 73 2e 6d 61 74 63 68 43 6f 6e 74 65 78 74 75  is.matchContextu
1a000 61 6c 4b 65 79 77 6f 72 64 28 27 6f 66 27 29 29  alKeyword('of'))
1a010 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   {.  .          
1a020 20 20 20 20 20 20 20 20 20 20 69 6e 69 74 20 3d            init =
1a030 20 74 68 69 73 2e 66 69 6e 61 6c 69 7a 65 28 69   this.finalize(i
1a040 6e 69 74 2c 20 6e 65 77 20 4e 6f 64 65 2e 56 61  nit, new Node.Va
1a050 72 69 61 62 6c 65 44 65 63 6c 61 72 61 74 69 6f  riableDeclaratio
1a060 6e 28 64 65 63 6c 61 72 61 74 69 6f 6e 73 2c 20  n(declarations, 
1a070 27 76 61 72 27 29 29 3b 0a 20 20 09 20 20 20 20  'var'));.  .    
1a080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a090 74 68 69 73 2e 6e 65 78 74 54 6f 6b 65 6e 28 29  this.nextToken()
1a0a0 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
1a0b0 20 20 20 20 20 20 20 20 20 6c 65 66 74 20 3d 20           left = 
1a0c0 69 6e 69 74 3b 0a 20 20 09 20 20 20 20 20 20 20  init;.  .       
1a0d0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 69 67               rig
1a0e0 68 74 20 3d 20 74 68 69 73 2e 70 61 72 73 65 41  ht = this.parseA
1a0f0 73 73 69 67 6e 6d 65 6e 74 45 78 70 72 65 73 73  ssignmentExpress
1a100 69 6f 6e 28 29 3b 0a 20 20 09 20 20 20 20 20 20  ion();.  .      
1a110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e                in
1a120 69 74 20 3d 20 6e 75 6c 6c 3b 0a 20 20 09 20 20  it = null;.  .  
1a130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a140 20 20 66 6f 72 49 6e 20 3d 20 66 61 6c 73 65 3b    forIn = false;
1a150 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
1a160 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20      }.  .       
1a170 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 7b 0a           else {.
1a180 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
1a190 20 20 20 20 20 20 20 69 6e 69 74 20 3d 20 74 68         init = th
1a1a0 69 73 2e 66 69 6e 61 6c 69 7a 65 28 69 6e 69 74  is.finalize(init
1a1b0 2c 20 6e 65 77 20 4e 6f 64 65 2e 56 61 72 69 61  , new Node.Varia
1a1c0 62 6c 65 44 65 63 6c 61 72 61 74 69 6f 6e 28 64  bleDeclaration(d
1a1d0 65 63 6c 61 72 61 74 69 6f 6e 73 2c 20 27 76 61  eclarations, 'va
1a1e0 72 27 29 29 3b 0a 20 20 09 20 20 20 20 20 20 20  r'));.  .       
1a1f0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
1a200 73 2e 65 78 70 65 63 74 28 27 3b 27 29 3b 0a 20  s.expect(';');. 
1a210 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
1a220 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20    }.  .         
1a230 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20     }.  .        
1a240 20 20 20 20 65 6c 73 65 20 69 66 20 28 74 68 69      else if (thi
1a250 73 2e 6d 61 74 63 68 4b 65 79 77 6f 72 64 28 27  s.matchKeyword('
1a260 63 6f 6e 73 74 27 29 20 7c 7c 20 74 68 69 73 2e  const') || this.
1a270 6d 61 74 63 68 4b 65 79 77 6f 72 64 28 27 6c 65  matchKeyword('le
1a280 74 27 29 29 20 7b 0a 20 20 09 20 20 20 20 20 20  t')) {.  .      
1a290 20 20 20 20 20 20 20 20 20 20 69 6e 69 74 20 3d            init =
1a2a0 20 74 68 69 73 2e 63 72 65 61 74 65 4e 6f 64 65   this.createNode
1a2b0 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ();.  .         
1a2c0 20 20 20 20 20 20 20 76 61 72 20 6b 69 6e 64 20         var kind 
1a2d0 3d 20 74 68 69 73 2e 6e 65 78 74 54 6f 6b 65 6e  = this.nextToken
1a2e0 28 29 2e 76 61 6c 75 65 3b 0a 20 20 09 20 20 20  ().value;.  .   
1a2f0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1a300 28 21 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e 73  (!this.context.s
1a310 74 72 69 63 74 20 26 26 20 74 68 69 73 2e 6c 6f  trict && this.lo
1a320 6f 6b 61 68 65 61 64 2e 76 61 6c 75 65 20 3d 3d  okahead.value ==
1a330 3d 20 27 69 6e 27 29 20 7b 0a 20 20 09 20 20 20  = 'in') {.  .   
1a340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a350 20 69 6e 69 74 20 3d 20 74 68 69 73 2e 66 69 6e   init = this.fin
1a360 61 6c 69 7a 65 28 69 6e 69 74 2c 20 6e 65 77 20  alize(init, new 
1a370 4e 6f 64 65 2e 49 64 65 6e 74 69 66 69 65 72 28  Node.Identifier(
1a380 6b 69 6e 64 29 29 3b 0a 20 20 09 20 20 20 20 20  kind));.  .     
1a390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
1a3a0 68 69 73 2e 6e 65 78 74 54 6f 6b 65 6e 28 29 3b  his.nextToken();
1a3b0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
1a3c0 20 20 20 20 20 20 20 20 6c 65 66 74 20 3d 20 69          left = i
1a3d0 6e 69 74 3b 0a 20 20 09 20 20 20 20 20 20 20 20  nit;.  .        
1a3e0 20 20 20 20 20 20 20 20 20 20 20 20 72 69 67 68              righ
1a3f0 74 20 3d 20 74 68 69 73 2e 70 61 72 73 65 45 78  t = this.parseEx
1a400 70 72 65 73 73 69 6f 6e 28 29 3b 0a 20 20 09 20  pression();.  . 
1a410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a420 20 20 20 69 6e 69 74 20 3d 20 6e 75 6c 6c 3b 0a     init = null;.
1a430 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
1a440 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20     }.  .        
1a450 20 20 20 20 20 20 20 20 65 6c 73 65 20 7b 0a 20          else {. 
1a460 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
1a470 20 20 20 20 20 20 76 61 72 20 70 72 65 76 69 6f        var previo
1a480 75 73 41 6c 6c 6f 77 49 6e 20 3d 20 74 68 69 73  usAllowIn = this
1a490 2e 63 6f 6e 74 65 78 74 2e 61 6c 6c 6f 77 49 6e  .context.allowIn
1a4a0 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
1a4b0 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 6f           this.co
1a4c0 6e 74 65 78 74 2e 61 6c 6c 6f 77 49 6e 20 3d 20  ntext.allowIn = 
1a4d0 66 61 6c 73 65 3b 0a 20 20 09 20 20 20 20 20 20  false;.  .      
1a4e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61                va
1a4f0 72 20 64 65 63 6c 61 72 61 74 69 6f 6e 73 20 3d  r declarations =
1a500 20 74 68 69 73 2e 70 61 72 73 65 42 69 6e 64 69   this.parseBindi
1a510 6e 67 4c 69 73 74 28 6b 69 6e 64 2c 20 7b 20 69  ngList(kind, { i
1a520 6e 46 6f 72 3a 20 74 72 75 65 20 7d 29 3b 0a 20  nFor: true });. 
1a530 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
1a540 20 20 20 20 20 20 74 68 69 73 2e 63 6f 6e 74 65        this.conte
1a550 78 74 2e 61 6c 6c 6f 77 49 6e 20 3d 20 70 72 65  xt.allowIn = pre
1a560 76 69 6f 75 73 41 6c 6c 6f 77 49 6e 3b 0a 20 20  viousAllowIn;.  
1a570 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1a580 20 20 20 20 20 69 66 20 28 64 65 63 6c 61 72 61       if (declara
1a590 74 69 6f 6e 73 2e 6c 65 6e 67 74 68 20 3d 3d 3d  tions.length ===
1a5a0 20 31 20 26 26 20 64 65 63 6c 61 72 61 74 69 6f   1 && declaratio
1a5b0 6e 73 5b 30 5d 2e 69 6e 69 74 20 3d 3d 3d 20 6e  ns[0].init === n
1a5c0 75 6c 6c 20 26 26 20 74 68 69 73 2e 6d 61 74 63  ull && this.matc
1a5d0 68 4b 65 79 77 6f 72 64 28 27 69 6e 27 29 29 20  hKeyword('in')) 
1a5e0 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  {.  .           
1a5f0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 69               ini
1a600 74 20 3d 20 74 68 69 73 2e 66 69 6e 61 6c 69 7a  t = this.finaliz
1a610 65 28 69 6e 69 74 2c 20 6e 65 77 20 4e 6f 64 65  e(init, new Node
1a620 2e 56 61 72 69 61 62 6c 65 44 65 63 6c 61 72 61  .VariableDeclara
1a630 74 69 6f 6e 28 64 65 63 6c 61 72 61 74 69 6f 6e  tion(declaration
1a640 73 2c 20 6b 69 6e 64 29 29 3b 0a 20 20 09 20 20  s, kind));.  .  
1a650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a660 20 20 20 20 20 20 74 68 69 73 2e 6e 65 78 74 54        this.nextT
1a670 6f 6b 65 6e 28 29 3b 0a 20 20 09 20 20 20 20 20  oken();.  .     
1a680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a690 20 20 20 6c 65 66 74 20 3d 20 69 6e 69 74 3b 0a     left = init;.
1a6a0 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
1a6b0 20 20 20 20 20 20 20 20 20 20 20 72 69 67 68 74             right
1a6c0 20 3d 20 74 68 69 73 2e 70 61 72 73 65 45 78 70   = this.parseExp
1a6d0 72 65 73 73 69 6f 6e 28 29 3b 0a 20 20 09 20 20  ression();.  .  
1a6e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a6f0 20 20 20 20 20 20 69 6e 69 74 20 3d 20 6e 75 6c        init = nul
1a700 6c 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  l;.  .          
1a710 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20            }.  . 
1a720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a730 20 20 20 65 6c 73 65 20 69 66 20 28 64 65 63 6c     else if (decl
1a740 61 72 61 74 69 6f 6e 73 2e 6c 65 6e 67 74 68 20  arations.length 
1a750 3d 3d 3d 20 31 20 26 26 20 64 65 63 6c 61 72 61  === 1 && declara
1a760 74 69 6f 6e 73 5b 30 5d 2e 69 6e 69 74 20 3d 3d  tions[0].init ==
1a770 3d 20 6e 75 6c 6c 20 26 26 20 74 68 69 73 2e 6d  = null && this.m
1a780 61 74 63 68 43 6f 6e 74 65 78 74 75 61 6c 4b 65  atchContextualKe
1a790 79 77 6f 72 64 28 27 6f 66 27 29 29 20 7b 0a 20  yword('of')) {. 
1a7a0 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
1a7b0 20 20 20 20 20 20 20 20 20 20 69 6e 69 74 20 3d            init =
1a7c0 20 74 68 69 73 2e 66 69 6e 61 6c 69 7a 65 28 69   this.finalize(i
1a7d0 6e 69 74 2c 20 6e 65 77 20 4e 6f 64 65 2e 56 61  nit, new Node.Va
1a7e0 72 69 61 62 6c 65 44 65 63 6c 61 72 61 74 69 6f  riableDeclaratio
1a7f0 6e 28 64 65 63 6c 61 72 61 74 69 6f 6e 73 2c 20  n(declarations, 
1a800 6b 69 6e 64 29 29 3b 0a 20 20 09 20 20 20 20 20  kind));.  .     
1a810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a820 20 20 20 74 68 69 73 2e 6e 65 78 74 54 6f 6b 65     this.nextToke
1a830 6e 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  n();.  .        
1a840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a850 6c 65 66 74 20 3d 20 69 6e 69 74 3b 0a 20 20 09  left = init;.  .
1a860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a870 20 20 20 20 20 20 20 20 72 69 67 68 74 20 3d 20          right = 
1a880 74 68 69 73 2e 70 61 72 73 65 41 73 73 69 67 6e  this.parseAssign
1a890 6d 65 6e 74 45 78 70 72 65 73 73 69 6f 6e 28 29  mentExpression()
1a8a0 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
1a8b0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 69               ini
1a8c0 74 20 3d 20 6e 75 6c 6c 3b 0a 20 20 09 20 20 20  t = null;.  .   
1a8d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a8e0 20 20 20 20 20 66 6f 72 49 6e 20 3d 20 66 61 6c       forIn = fal
1a8f0 73 65 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  se;.  .         
1a900 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09             }.  .
1a910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a920 20 20 20 20 65 6c 73 65 20 7b 0a 20 20 09 20 20      else {.  .  
1a930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a940 20 20 20 20 20 20 74 68 69 73 2e 63 6f 6e 73 75        this.consu
1a950 6d 65 53 65 6d 69 63 6f 6c 6f 6e 28 29 3b 0a 20  meSemicolon();. 
1a960 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
1a970 20 20 20 20 20 20 20 20 20 20 69 6e 69 74 20 3d            init =
1a980 20 74 68 69 73 2e 66 69 6e 61 6c 69 7a 65 28 69   this.finalize(i
1a990 6e 69 74 2c 20 6e 65 77 20 4e 6f 64 65 2e 56 61  nit, new Node.Va
1a9a0 72 69 61 62 6c 65 44 65 63 6c 61 72 61 74 69 6f  riableDeclaratio
1a9b0 6e 28 64 65 63 6c 61 72 61 74 69 6f 6e 73 2c 20  n(declarations, 
1a9c0 6b 69 6e 64 29 29 3b 0a 20 20 09 20 20 20 20 20  kind));.  .     
1a9d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
1a9e0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
1a9f0 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20      }.  .       
1aa00 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20       }.  .      
1aa10 20 20 20 20 20 20 65 6c 73 65 20 7b 0a 20 20 09        else {.  .
1aa20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1aa30 76 61 72 20 69 6e 69 74 53 74 61 72 74 54 6f 6b  var initStartTok
1aa40 65 6e 20 3d 20 74 68 69 73 2e 6c 6f 6f 6b 61 68  en = this.lookah
1aa50 65 61 64 3b 0a 20 20 09 20 20 20 20 20 20 20 20  ead;.  .        
1aa60 20 20 20 20 20 20 20 20 76 61 72 20 70 72 65 76          var prev
1aa70 69 6f 75 73 41 6c 6c 6f 77 49 6e 20 3d 20 74 68  iousAllowIn = th
1aa80 69 73 2e 63 6f 6e 74 65 78 74 2e 61 6c 6c 6f 77  is.context.allow
1aa90 49 6e 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  In;.  .         
1aaa0 20 20 20 20 20 20 20 74 68 69 73 2e 63 6f 6e 74         this.cont
1aab0 65 78 74 2e 61 6c 6c 6f 77 49 6e 20 3d 20 66 61  ext.allowIn = fa
1aac0 6c 73 65 3b 0a 20 20 09 20 20 20 20 20 20 20 20  lse;.  .        
1aad0 20 20 20 20 20 20 20 20 69 6e 69 74 20 3d 20 74          init = t
1aae0 68 69 73 2e 69 6e 68 65 72 69 74 43 6f 76 65 72  his.inheritCover
1aaf0 47 72 61 6d 6d 61 72 28 74 68 69 73 2e 70 61 72  Grammar(this.par
1ab00 73 65 41 73 73 69 67 6e 6d 65 6e 74 45 78 70 72  seAssignmentExpr
1ab10 65 73 73 69 6f 6e 29 3b 0a 20 20 09 20 20 20 20  ession);.  .    
1ab20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
1ab30 2e 63 6f 6e 74 65 78 74 2e 61 6c 6c 6f 77 49 6e  .context.allowIn
1ab40 20 3d 20 70 72 65 76 69 6f 75 73 41 6c 6c 6f 77   = previousAllow
1ab50 49 6e 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  In;.  .         
1ab60 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e         if (this.
1ab70 6d 61 74 63 68 4b 65 79 77 6f 72 64 28 27 69 6e  matchKeyword('in
1ab80 27 29 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20  ')) {.  .       
1ab90 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1aba0 28 21 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e 69  (!this.context.i
1abb0 73 41 73 73 69 67 6e 6d 65 6e 74 54 61 72 67 65  sAssignmentTarge
1abc0 74 20 7c 7c 20 69 6e 69 74 2e 74 79 70 65 20 3d  t || init.type =
1abd0 3d 3d 20 73 79 6e 74 61 78 5f 31 2e 53 79 6e 74  == syntax_1.Synt
1abe0 61 78 2e 41 73 73 69 67 6e 6d 65 6e 74 45 78 70  ax.AssignmentExp
1abf0 72 65 73 73 69 6f 6e 29 20 7b 0a 20 20 09 20 20  ression) {.  .  
1ac00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ac10 20 20 20 20 20 20 74 68 69 73 2e 74 6f 6c 65 72        this.toler
1ac20 61 74 65 45 72 72 6f 72 28 6d 65 73 73 61 67 65  ateError(message
1ac30 73 5f 31 2e 4d 65 73 73 61 67 65 73 2e 49 6e 76  s_1.Messages.Inv
1ac40 61 6c 69 64 4c 48 53 49 6e 46 6f 72 49 6e 29 3b  alidLHSInForIn);
1ac50 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
1ac60 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20          }.  .   
1ac70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ac80 20 74 68 69 73 2e 6e 65 78 74 54 6f 6b 65 6e 28   this.nextToken(
1ac90 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  );.  .          
1aca0 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 72            this.r
1acb0 65 69 6e 74 65 72 70 72 65 74 45 78 70 72 65 73  einterpretExpres
1acc0 73 69 6f 6e 41 73 50 61 74 74 65 72 6e 28 69 6e  sionAsPattern(in
1acd0 69 74 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  it);.  .        
1ace0 20 20 20 20 20 20 20 20 20 20 20 20 6c 65 66 74              left
1acf0 20 3d 20 69 6e 69 74 3b 0a 20 20 09 20 20 20 20   = init;.  .    
1ad00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ad10 72 69 67 68 74 20 3d 20 74 68 69 73 2e 70 61 72  right = this.par
1ad20 73 65 45 78 70 72 65 73 73 69 6f 6e 28 29 3b 0a  seExpression();.
1ad30 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
1ad40 20 20 20 20 20 20 20 69 6e 69 74 20 3d 20 6e 75         init = nu
1ad50 6c 6c 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ll;.  .         
1ad60 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20         }.  .    
1ad70 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
1ad80 20 69 66 20 28 74 68 69 73 2e 6d 61 74 63 68 43   if (this.matchC
1ad90 6f 6e 74 65 78 74 75 61 6c 4b 65 79 77 6f 72 64  ontextualKeyword
1ada0 28 27 6f 66 27 29 29 20 7b 0a 20 20 09 20 20 20  ('of')) {.  .   
1adb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1adc0 20 69 66 20 28 21 74 68 69 73 2e 63 6f 6e 74 65   if (!this.conte
1add0 78 74 2e 69 73 41 73 73 69 67 6e 6d 65 6e 74 54  xt.isAssignmentT
1ade0 61 72 67 65 74 20 7c 7c 20 69 6e 69 74 2e 74 79  arget || init.ty
1adf0 70 65 20 3d 3d 3d 20 73 79 6e 74 61 78 5f 31 2e  pe === syntax_1.
1ae00 53 79 6e 74 61 78 2e 41 73 73 69 67 6e 6d 65 6e  Syntax.Assignmen
1ae10 74 45 78 70 72 65 73 73 69 6f 6e 29 20 7b 0a 20  tExpression) {. 
1ae20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
1ae30 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 74            this.t
1ae40 6f 6c 65 72 61 74 65 45 72 72 6f 72 28 6d 65 73  olerateError(mes
1ae50 73 61 67 65 73 5f 31 2e 4d 65 73 73 61 67 65 73  sages_1.Messages
1ae60 2e 49 6e 76 61 6c 69 64 4c 48 53 49 6e 46 6f 72  .InvalidLHSInFor
1ae70 4c 6f 6f 70 29 3b 0a 20 20 09 20 20 20 20 20 20  Loop);.  .      
1ae80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a                }.
1ae90 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
1aea0 20 20 20 20 20 20 20 74 68 69 73 2e 6e 65 78 74         this.next
1aeb0 54 6f 6b 65 6e 28 29 3b 0a 20 20 09 20 20 20 20  Token();.  .    
1aec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1aed0 74 68 69 73 2e 72 65 69 6e 74 65 72 70 72 65 74  this.reinterpret
1aee0 45 78 70 72 65 73 73 69 6f 6e 41 73 50 61 74 74  ExpressionAsPatt
1aef0 65 72 6e 28 69 6e 69 74 29 3b 0a 20 20 09 20 20  ern(init);.  .  
1af00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1af10 20 20 6c 65 66 74 20 3d 20 69 6e 69 74 3b 0a 20    left = init;. 
1af20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
1af30 20 20 20 20 20 20 72 69 67 68 74 20 3d 20 74 68        right = th
1af40 69 73 2e 70 61 72 73 65 41 73 73 69 67 6e 6d 65  is.parseAssignme
1af50 6e 74 45 78 70 72 65 73 73 69 6f 6e 28 29 3b 0a  ntExpression();.
1af60 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
1af70 20 20 20 20 20 20 20 69 6e 69 74 20 3d 20 6e 75         init = nu
1af80 6c 6c 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ll;.  .         
1af90 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 49 6e             forIn
1afa0 20 3d 20 66 61 6c 73 65 3b 0a 20 20 09 20 20 20   = false;.  .   
1afb0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20               }. 
1afc0 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
1afd0 20 20 65 6c 73 65 20 7b 0a 20 20 09 20 20 20 20    else {.  .    
1afe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1aff0 69 66 20 28 74 68 69 73 2e 6d 61 74 63 68 28 27  if (this.match('
1b000 2c 27 29 29 20 7b 0a 20 20 09 20 20 20 20 20 20  ,')) {.  .      
1b010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b020 20 20 76 61 72 20 69 6e 69 74 53 65 71 20 3d 20    var initSeq = 
1b030 5b 69 6e 69 74 5d 3b 0a 20 20 09 20 20 20 20 20  [init];.  .     
1b040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b050 20 20 20 77 68 69 6c 65 20 28 74 68 69 73 2e 6d     while (this.m
1b060 61 74 63 68 28 27 2c 27 29 29 20 7b 0a 20 20 09  atch(',')) {.  .
1b070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b080 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
1b090 24 31 2e 6e 65 78 74 54 6f 6b 65 6e 28 29 3b 0a  $1.nextToken();.
1b0a0 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
1b0b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
1b0c0 6e 69 74 53 65 71 2e 70 75 73 68 28 74 68 69 73  nitSeq.push(this
1b0d0 24 31 2e 69 73 6f 6c 61 74 65 43 6f 76 65 72 47  $1.isolateCoverG
1b0e0 72 61 6d 6d 61 72 28 74 68 69 73 24 31 2e 70 61  rammar(this$1.pa
1b0f0 72 73 65 41 73 73 69 67 6e 6d 65 6e 74 45 78 70  rseAssignmentExp
1b100 72 65 73 73 69 6f 6e 29 29 3b 0a 20 20 09 20 20  ression));.  .  
1b110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b120 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20        }.  .     
1b130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b140 20 20 20 69 6e 69 74 20 3d 20 74 68 69 73 2e 66     init = this.f
1b150 69 6e 61 6c 69 7a 65 28 74 68 69 73 2e 73 74 61  inalize(this.sta
1b160 72 74 4e 6f 64 65 28 69 6e 69 74 53 74 61 72 74  rtNode(initStart
1b170 54 6f 6b 65 6e 29 2c 20 6e 65 77 20 4e 6f 64 65  Token), new Node
1b180 2e 53 65 71 75 65 6e 63 65 45 78 70 72 65 73 73  .SequenceExpress
1b190 69 6f 6e 28 69 6e 69 74 53 65 71 29 29 3b 0a 20  ion(initSeq));. 
1b1a0 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
1b1b0 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20        }.  .     
1b1c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
1b1d0 68 69 73 2e 65 78 70 65 63 74 28 27 3b 27 29 3b  his.expect(';');
1b1e0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
1b1f0 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20      }.  .       
1b200 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20       }.  .      
1b210 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 69    }.  .        i
1b220 66 20 28 74 79 70 65 6f 66 20 6c 65 66 74 20 3d  f (typeof left =
1b230 3d 3d 20 27 75 6e 64 65 66 69 6e 65 64 27 29 20  == 'undefined') 
1b240 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  {.  .           
1b250 20 69 66 20 28 21 74 68 69 73 2e 6d 61 74 63 68   if (!this.match
1b260 28 27 3b 27 29 29 20 7b 0a 20 20 09 20 20 20 20  (';')) {.  .    
1b270 20 20 20 20 20 20 20 20 20 20 20 20 74 65 73 74              test
1b280 20 3d 20 74 68 69 73 2e 70 61 72 73 65 45 78 70   = this.parseExp
1b290 72 65 73 73 69 6f 6e 28 29 3b 0a 20 20 09 20 20  ression();.  .  
1b2a0 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20            }.  . 
1b2b0 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
1b2c0 65 78 70 65 63 74 28 27 3b 27 29 3b 0a 20 20 09  expect(';');.  .
1b2d0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1b2e0 21 74 68 69 73 2e 6d 61 74 63 68 28 27 29 27 29  !this.match(')')
1b2f0 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ) {.  .         
1b300 20 20 20 20 20 20 20 75 70 64 61 74 65 20 3d 20         update = 
1b310 74 68 69 73 2e 70 61 72 73 65 45 78 70 72 65 73  this.parseExpres
1b320 73 69 6f 6e 28 29 3b 0a 20 20 09 20 20 20 20 20  sion();.  .     
1b330 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20         }.  .    
1b340 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20      }.  .       
1b350 20 76 61 72 20 62 6f 64 79 3b 0a 20 20 09 20 20   var body;.  .  
1b360 20 20 20 20 20 20 69 66 20 28 21 74 68 69 73 2e        if (!this.
1b370 6d 61 74 63 68 28 27 29 27 29 20 26 26 20 74 68  match(')') && th
1b380 69 73 2e 63 6f 6e 66 69 67 2e 74 6f 6c 65 72 61  is.config.tolera
1b390 6e 74 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20  nt) {.  .       
1b3a0 20 20 20 20 20 74 68 69 73 2e 74 6f 6c 65 72 61       this.tolera
1b3b0 74 65 55 6e 65 78 70 65 63 74 65 64 54 6f 6b 65  teUnexpectedToke
1b3c0 6e 28 74 68 69 73 2e 6e 65 78 74 54 6f 6b 65 6e  n(this.nextToken
1b3d0 28 29 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  ());.  .        
1b3e0 20 20 20 20 62 6f 64 79 20 3d 20 74 68 69 73 2e      body = this.
1b3f0 66 69 6e 61 6c 69 7a 65 28 74 68 69 73 2e 63 72  finalize(this.cr
1b400 65 61 74 65 4e 6f 64 65 28 29 2c 20 6e 65 77 20  eateNode(), new 
1b410 4e 6f 64 65 2e 45 6d 70 74 79 53 74 61 74 65 6d  Node.EmptyStatem
1b420 65 6e 74 28 29 29 3b 0a 20 20 09 20 20 20 20 20  ent());.  .     
1b430 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20     }.  .        
1b440 65 6c 73 65 20 7b 0a 20 20 09 20 20 20 20 20 20  else {.  .      
1b450 20 20 20 20 20 20 74 68 69 73 2e 65 78 70 65 63        this.expec
1b460 74 28 27 29 27 29 3b 0a 20 20 09 20 20 20 20 20  t(')');.  .     
1b470 20 20 20 20 20 20 20 76 61 72 20 70 72 65 76 69         var previ
1b480 6f 75 73 49 6e 49 74 65 72 61 74 69 6f 6e 20 3d  ousInIteration =
1b490 20 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e 69 6e   this.context.in
1b4a0 49 74 65 72 61 74 69 6f 6e 3b 0a 20 20 09 20 20  Iteration;.  .  
1b4b0 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 63            this.c
1b4c0 6f 6e 74 65 78 74 2e 69 6e 49 74 65 72 61 74 69  ontext.inIterati
1b4d0 6f 6e 20 3d 20 74 72 75 65 3b 0a 20 20 09 20 20  on = true;.  .  
1b4e0 20 20 20 20 20 20 20 20 20 20 62 6f 64 79 20 3d            body =
1b4f0 20 74 68 69 73 2e 69 73 6f 6c 61 74 65 43 6f 76   this.isolateCov
1b500 65 72 47 72 61 6d 6d 61 72 28 74 68 69 73 2e 70  erGrammar(this.p
1b510 61 72 73 65 53 74 61 74 65 6d 65 6e 74 29 3b 0a  arseStatement);.
1b520 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 74    .            t
1b530 68 69 73 2e 63 6f 6e 74 65 78 74 2e 69 6e 49 74  his.context.inIt
1b540 65 72 61 74 69 6f 6e 20 3d 20 70 72 65 76 69 6f  eration = previo
1b550 75 73 49 6e 49 74 65 72 61 74 69 6f 6e 3b 0a 20  usInIteration;. 
1b560 20 09 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20   .        }.  . 
1b570 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 74         return (t
1b580 79 70 65 6f 66 20 6c 65 66 74 20 3d 3d 3d 20 27  ypeof left === '
1b590 75 6e 64 65 66 69 6e 65 64 27 29 20 3f 0a 20 20  undefined') ?.  
1b5a0 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
1b5b0 73 2e 66 69 6e 61 6c 69 7a 65 28 6e 6f 64 65 2c  s.finalize(node,
1b5c0 20 6e 65 77 20 4e 6f 64 65 2e 46 6f 72 53 74 61   new Node.ForSta
1b5d0 74 65 6d 65 6e 74 28 69 6e 69 74 2c 20 74 65 73  tement(init, tes
1b5e0 74 2c 20 75 70 64 61 74 65 2c 20 62 6f 64 79 29  t, update, body)
1b5f0 29 20 3a 0a 20 20 09 20 20 20 20 20 20 20 20 20  ) :.  .         
1b600 20 20 20 66 6f 72 49 6e 20 3f 20 74 68 69 73 2e     forIn ? this.
1b610 66 69 6e 61 6c 69 7a 65 28 6e 6f 64 65 2c 20 6e  finalize(node, n
1b620 65 77 20 4e 6f 64 65 2e 46 6f 72 49 6e 53 74 61  ew Node.ForInSta
1b630 74 65 6d 65 6e 74 28 6c 65 66 74 2c 20 72 69 67  tement(left, rig
1b640 68 74 2c 20 62 6f 64 79 29 29 20 3a 0a 20 20 09  ht, body)) :.  .
1b650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b660 74 68 69 73 2e 66 69 6e 61 6c 69 7a 65 28 6e 6f  this.finalize(no
1b670 64 65 2c 20 6e 65 77 20 4e 6f 64 65 2e 46 6f 72  de, new Node.For
1b680 4f 66 53 74 61 74 65 6d 65 6e 74 28 6c 65 66 74  OfStatement(left
1b690 2c 20 72 69 67 68 74 2c 20 62 6f 64 79 29 29 3b  , right, body));
1b6a0 0a 20 20 09 20 20 20 20 7d 3b 0a 20 20 09 20 20  .  .    };.  .  
1b6b0 20 20 2f 2f 20 45 43 4d 41 2d 32 36 32 20 31 33    // ECMA-262 13
1b6c0 2e 38 20 54 68 65 20 63 6f 6e 74 69 6e 75 65 20  .8 The continue 
1b6d0 73 74 61 74 65 6d 65 6e 74 0a 20 20 09 20 20 20  statement.  .   
1b6e0 20 50 61 72 73 65 72 2e 70 72 6f 74 6f 74 79 70   Parser.prototyp
1b6f0 65 2e 70 61 72 73 65 43 6f 6e 74 69 6e 75 65 53  e.parseContinueS
1b700 74 61 74 65 6d 65 6e 74 20 3d 20 66 75 6e 63 74  tatement = funct
1b710 69 6f 6e 20 28 29 20 7b 0a 20 20 09 20 20 20 20  ion () {.  .    
1b720 20 20 20 20 76 61 72 20 6e 6f 64 65 20 3d 20 74      var node = t
1b730 68 69 73 2e 63 72 65 61 74 65 4e 6f 64 65 28 29  his.createNode()
1b740 3b 0a 20 20 09 20 20 20 20 20 20 20 20 74 68 69  ;.  .        thi
1b750 73 2e 65 78 70 65 63 74 4b 65 79 77 6f 72 64 28  s.expectKeyword(
1b760 27 63 6f 6e 74 69 6e 75 65 27 29 3b 0a 20 20 09  'continue');.  .
1b770 20 20 20 20 20 20 20 20 76 61 72 20 6c 61 62 65          var labe
1b780 6c 20 3d 20 6e 75 6c 6c 3b 0a 20 20 09 20 20 20  l = null;.  .   
1b790 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 6c 6f       if (this.lo
1b7a0 6f 6b 61 68 65 61 64 2e 74 79 70 65 20 3d 3d 3d  okahead.type ===
1b7b0 20 74 6f 6b 65 6e 5f 31 2e 54 6f 6b 65 6e 2e 49   token_1.Token.I
1b7c0 64 65 6e 74 69 66 69 65 72 20 26 26 20 21 74 68  dentifier && !th
1b7d0 69 73 2e 68 61 73 4c 69 6e 65 54 65 72 6d 69 6e  is.hasLineTermin
1b7e0 61 74 6f 72 29 20 7b 0a 20 20 09 20 20 20 20 20  ator) {.  .     
1b7f0 20 20 20 20 20 20 20 6c 61 62 65 6c 20 3d 20 74         label = t
1b800 68 69 73 2e 70 61 72 73 65 56 61 72 69 61 62 6c  his.parseVariabl
1b810 65 49 64 65 6e 74 69 66 69 65 72 28 29 3b 0a 20  eIdentifier();. 
1b820 20 09 20 20 20 20 20 20 20 20 20 20 20 20 76 61   .            va
1b830 72 20 6b 65 79 20 3d 20 27 24 27 20 2b 20 6c 61  r key = '$' + la
1b840 62 65 6c 2e 6e 61 6d 65 3b 0a 20 20 09 20 20 20  bel.name;.  .   
1b850 20 20 20 20 20 20 20 20 20 69 66 20 28 21 4f 62           if (!Ob
1b860 6a 65 63 74 2e 70 72 6f 74 6f 74 79 70 65 2e 68  ject.prototype.h
1b870 61 73 4f 77 6e 50 72 6f 70 65 72 74 79 2e 63 61  asOwnProperty.ca
1b880 6c 6c 28 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e  ll(this.context.
1b890 6c 61 62 65 6c 53 65 74 2c 20 6b 65 79 29 29 20  labelSet, key)) 
1b8a0 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  {.  .           
1b8b0 20 20 20 20 20 74 68 69 73 2e 74 68 72 6f 77 45       this.throwE
1b8c0 72 72 6f 72 28 6d 65 73 73 61 67 65 73 5f 31 2e  rror(messages_1.
1b8d0 4d 65 73 73 61 67 65 73 2e 55 6e 6b 6e 6f 77 6e  Messages.Unknown
1b8e0 4c 61 62 65 6c 2c 20 6c 61 62 65 6c 2e 6e 61 6d  Label, label.nam
1b8f0 65 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  e);.  .         
1b900 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20     }.  .        
1b910 7d 0a 20 20 09 20 20 20 20 20 20 20 20 74 68 69  }.  .        thi
1b920 73 2e 63 6f 6e 73 75 6d 65 53 65 6d 69 63 6f 6c  s.consumeSemicol
1b930 6f 6e 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20  on();.  .       
1b940 20 69 66 20 28 6c 61 62 65 6c 20 3d 3d 3d 20 6e   if (label === n
1b950 75 6c 6c 20 26 26 20 21 74 68 69 73 2e 63 6f 6e  ull && !this.con
1b960 74 65 78 74 2e 69 6e 49 74 65 72 61 74 69 6f 6e  text.inIteration
1b970 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ) {.  .         
1b980 20 20 20 74 68 69 73 2e 74 68 72 6f 77 45 72 72     this.throwErr
1b990 6f 72 28 6d 65 73 73 61 67 65 73 5f 31 2e 4d 65  or(messages_1.Me
1b9a0 73 73 61 67 65 73 2e 49 6c 6c 65 67 61 6c 43 6f  ssages.IllegalCo
1b9b0 6e 74 69 6e 75 65 29 3b 0a 20 20 09 20 20 20 20  ntinue);.  .    
1b9c0 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20      }.  .       
1b9d0 20 72 65 74 75 72 6e 20 74 68 69 73 2e 66 69 6e   return this.fin
1b9e0 61 6c 69 7a 65 28 6e 6f 64 65 2c 20 6e 65 77 20  alize(node, new 
1b9f0 4e 6f 64 65 2e 43 6f 6e 74 69 6e 75 65 53 74 61  Node.ContinueSta
1ba00 74 65 6d 65 6e 74 28 6c 61 62 65 6c 29 29 3b 0a  tement(label));.
1ba10 20 20 09 20 20 20 20 7d 3b 0a 20 20 09 20 20 20    .    };.  .   
1ba20 20 2f 2f 20 45 43 4d 41 2d 32 36 32 20 31 33 2e   // ECMA-262 13.
1ba30 39 20 54 68 65 20 62 72 65 61 6b 20 73 74 61 74  9 The break stat
1ba40 65 6d 65 6e 74 0a 20 20 09 20 20 20 20 50 61 72  ement.  .    Par
1ba50 73 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 70 61  ser.prototype.pa
1ba60 72 73 65 42 72 65 61 6b 53 74 61 74 65 6d 65 6e  rseBreakStatemen
1ba70 74 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20  t = function () 
1ba80 7b 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72  {.  .        var
1ba90 20 6e 6f 64 65 20 3d 20 74 68 69 73 2e 63 72 65   node = this.cre
1baa0 61 74 65 4e 6f 64 65 28 29 3b 0a 20 20 09 20 20  ateNode();.  .  
1bab0 20 20 20 20 20 20 74 68 69 73 2e 65 78 70 65 63        this.expec
1bac0 74 4b 65 79 77 6f 72 64 28 27 62 72 65 61 6b 27  tKeyword('break'
1bad0 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 76 61  );.  .        va
1bae0 72 20 6c 61 62 65 6c 20 3d 20 6e 75 6c 6c 3b 0a  r label = null;.
1baf0 20 20 09 20 20 20 20 20 20 20 20 69 66 20 28 74    .        if (t
1bb00 68 69 73 2e 6c 6f 6f 6b 61 68 65 61 64 2e 74 79  his.lookahead.ty
1bb10 70 65 20 3d 3d 3d 20 74 6f 6b 65 6e 5f 31 2e 54  pe === token_1.T
1bb20 6f 6b 65 6e 2e 49 64 65 6e 74 69 66 69 65 72 20  oken.Identifier 
1bb30 26 26 20 21 74 68 69 73 2e 68 61 73 4c 69 6e 65  && !this.hasLine
1bb40 54 65 72 6d 69 6e 61 74 6f 72 29 20 7b 0a 20 20  Terminator) {.  
1bb50 09 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 62  .            lab
1bb60 65 6c 20 3d 20 74 68 69 73 2e 70 61 72 73 65 56  el = this.parseV
1bb70 61 72 69 61 62 6c 65 49 64 65 6e 74 69 66 69 65  ariableIdentifie
1bb80 72 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  r();.  .        
1bb90 20 20 20 20 76 61 72 20 6b 65 79 20 3d 20 27 24      var key = '$
1bba0 27 20 2b 20 6c 61 62 65 6c 2e 6e 61 6d 65 3b 0a  ' + label.name;.
1bbb0 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 69    .            i
1bbc0 66 20 28 21 4f 62 6a 65 63 74 2e 70 72 6f 74 6f  f (!Object.proto
1bbd0 74 79 70 65 2e 68 61 73 4f 77 6e 50 72 6f 70 65  type.hasOwnPrope
1bbe0 72 74 79 2e 63 61 6c 6c 28 74 68 69 73 2e 63 6f  rty.call(this.co
1bbf0 6e 74 65 78 74 2e 6c 61 62 65 6c 53 65 74 2c 20  ntext.labelSet, 
1bc00 6b 65 79 29 29 20 7b 0a 20 20 09 20 20 20 20 20  key)) {.  .     
1bc10 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
1bc20 74 68 72 6f 77 45 72 72 6f 72 28 6d 65 73 73 61  throwError(messa
1bc30 67 65 73 5f 31 2e 4d 65 73 73 61 67 65 73 2e 55  ges_1.Messages.U
1bc40 6e 6b 6e 6f 77 6e 4c 61 62 65 6c 2c 20 6c 61 62  nknownLabel, lab
1bc50 65 6c 2e 6e 61 6d 65 29 3b 0a 20 20 09 20 20 20  el.name);.  .   
1bc60 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20           }.  .  
1bc70 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20        }.  .     
1bc80 20 20 20 74 68 69 73 2e 63 6f 6e 73 75 6d 65 53     this.consumeS
1bc90 65 6d 69 63 6f 6c 6f 6e 28 29 3b 0a 20 20 09 20  emicolon();.  . 
1bca0 20 20 20 20 20 20 20 69 66 20 28 6c 61 62 65 6c         if (label
1bcb0 20 3d 3d 3d 20 6e 75 6c 6c 20 26 26 20 21 74 68   === null && !th
1bcc0 69 73 2e 63 6f 6e 74 65 78 74 2e 69 6e 49 74 65  is.context.inIte
1bcd0 72 61 74 69 6f 6e 20 26 26 20 21 74 68 69 73 2e  ration && !this.
1bce0 63 6f 6e 74 65 78 74 2e 69 6e 53 77 69 74 63 68  context.inSwitch
1bcf0 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ) {.  .         
1bd00 20 20 20 74 68 69 73 2e 74 68 72 6f 77 45 72 72     this.throwErr
1bd10 6f 72 28 6d 65 73 73 61 67 65 73 5f 31 2e 4d 65  or(messages_1.Me
1bd20 73 73 61 67 65 73 2e 49 6c 6c 65 67 61 6c 42 72  ssages.IllegalBr
1bd30 65 61 6b 29 3b 0a 20 20 09 20 20 20 20 20 20 20  eak);.  .       
1bd40 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 72 65   }.  .        re
1bd50 74 75 72 6e 20 74 68 69 73 2e 66 69 6e 61 6c 69  turn this.finali
1bd60 7a 65 28 6e 6f 64 65 2c 20 6e 65 77 20 4e 6f 64  ze(node, new Nod
1bd70 65 2e 42 72 65 61 6b 53 74 61 74 65 6d 65 6e 74  e.BreakStatement
1bd80 28 6c 61 62 65 6c 29 29 3b 0a 20 20 09 20 20 20  (label));.  .   
1bd90 20 7d 3b 0a 20 20 09 20 20 20 20 2f 2f 20 45 43   };.  .    // EC
1bda0 4d 41 2d 32 36 32 20 31 33 2e 31 30 20 54 68 65  MA-262 13.10 The
1bdb0 20 72 65 74 75 72 6e 20 73 74 61 74 65 6d 65 6e   return statemen
1bdc0 74 0a 20 20 09 20 20 20 20 50 61 72 73 65 72 2e  t.  .    Parser.
1bdd0 70 72 6f 74 6f 74 79 70 65 2e 70 61 72 73 65 52  prototype.parseR
1bde0 65 74 75 72 6e 53 74 61 74 65 6d 65 6e 74 20 3d  eturnStatement =
1bdf0 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20   function () {. 
1be00 20 09 20 20 20 20 20 20 20 20 69 66 20 28 21 74   .        if (!t
1be10 68 69 73 2e 63 6f 6e 74 65 78 74 2e 69 6e 46 75  his.context.inFu
1be20 6e 63 74 69 6f 6e 42 6f 64 79 29 20 7b 0a 20 20  nctionBody) {.  
1be30 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
1be40 73 2e 74 6f 6c 65 72 61 74 65 45 72 72 6f 72 28  s.tolerateError(
1be50 6d 65 73 73 61 67 65 73 5f 31 2e 4d 65 73 73 61  messages_1.Messa
1be60 67 65 73 2e 49 6c 6c 65 67 61 6c 52 65 74 75 72  ges.IllegalRetur
1be70 6e 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 7d  n);.  .        }
1be80 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20  .  .        var 
1be90 6e 6f 64 65 20 3d 20 74 68 69 73 2e 63 72 65 61  node = this.crea
1bea0 74 65 4e 6f 64 65 28 29 3b 0a 20 20 09 20 20 20  teNode();.  .   
1beb0 20 20 20 20 20 74 68 69 73 2e 65 78 70 65 63 74       this.expect
1bec0 4b 65 79 77 6f 72 64 28 27 72 65 74 75 72 6e 27  Keyword('return'
1bed0 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 76 61  );.  .        va
1bee0 72 20 68 61 73 41 72 67 75 6d 65 6e 74 20 3d 20  r hasArgument = 
1bef0 21 74 68 69 73 2e 6d 61 74 63 68 28 27 3b 27 29  !this.match(';')
1bf00 20 26 26 20 21 74 68 69 73 2e 6d 61 74 63 68 28   && !this.match(
1bf10 27 7d 27 29 20 26 26 0a 20 20 09 20 20 20 20 20  '}') &&.  .     
1bf20 20 20 20 20 20 20 20 21 74 68 69 73 2e 68 61 73         !this.has
1bf30 4c 69 6e 65 54 65 72 6d 69 6e 61 74 6f 72 20 26  LineTerminator &
1bf40 26 20 74 68 69 73 2e 6c 6f 6f 6b 61 68 65 61 64  & this.lookahead
1bf50 2e 74 79 70 65 20 21 3d 3d 20 74 6f 6b 65 6e 5f  .type !== token_
1bf60 31 2e 54 6f 6b 65 6e 2e 45 4f 46 3b 0a 20 20 09  1.Token.EOF;.  .
1bf70 20 20 20 20 20 20 20 20 76 61 72 20 61 72 67 75          var argu
1bf80 6d 65 6e 74 20 3d 20 68 61 73 41 72 67 75 6d 65  ment = hasArgume
1bf90 6e 74 20 3f 20 74 68 69 73 2e 70 61 72 73 65 45  nt ? this.parseE
1bfa0 78 70 72 65 73 73 69 6f 6e 28 29 20 3a 20 6e 75  xpression() : nu
1bfb0 6c 6c 3b 0a 20 20 09 20 20 20 20 20 20 20 20 74  ll;.  .        t
1bfc0 68 69 73 2e 63 6f 6e 73 75 6d 65 53 65 6d 69 63  his.consumeSemic
1bfd0 6f 6c 6f 6e 28 29 3b 0a 20 20 09 20 20 20 20 20  olon();.  .     
1bfe0 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e 66     return this.f
1bff0 69 6e 61 6c 69 7a 65 28 6e 6f 64 65 2c 20 6e 65  inalize(node, ne
1c000 77 20 4e 6f 64 65 2e 52 65 74 75 72 6e 53 74 61  w Node.ReturnSta
1c010 74 65 6d 65 6e 74 28 61 72 67 75 6d 65 6e 74 29  tement(argument)
1c020 29 3b 0a 20 20 09 20 20 20 20 7d 3b 0a 20 20 09  );.  .    };.  .
1c030 20 20 20 20 2f 2f 20 45 43 4d 41 2d 32 36 32 20      // ECMA-262 
1c040 31 33 2e 31 31 20 54 68 65 20 77 69 74 68 20 73  13.11 The with s
1c050 74 61 74 65 6d 65 6e 74 0a 20 20 09 20 20 20 20  tatement.  .    
1c060 50 61 72 73 65 72 2e 70 72 6f 74 6f 74 79 70 65  Parser.prototype
1c070 2e 70 61 72 73 65 57 69 74 68 53 74 61 74 65 6d  .parseWithStatem
1c080 65 6e 74 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28  ent = function (
1c090 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 69  ) {.  .        i
1c0a0 66 20 28 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e  f (this.context.
1c0b0 73 74 72 69 63 74 29 20 7b 0a 20 20 09 20 20 20  strict) {.  .   
1c0c0 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 74 6f           this.to
1c0d0 6c 65 72 61 74 65 45 72 72 6f 72 28 6d 65 73 73  lerateError(mess
1c0e0 61 67 65 73 5f 31 2e 4d 65 73 73 61 67 65 73 2e  ages_1.Messages.
1c0f0 53 74 72 69 63 74 4d 6f 64 65 57 69 74 68 29 3b  StrictModeWith);
1c100 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a 20 20  .  .        }.  
1c110 09 20 20 20 20 20 20 20 20 76 61 72 20 6e 6f 64  .        var nod
1c120 65 20 3d 20 74 68 69 73 2e 63 72 65 61 74 65 4e  e = this.createN
1c130 6f 64 65 28 29 3b 0a 20 20 09 20 20 20 20 20 20  ode();.  .      
1c140 20 20 74 68 69 73 2e 65 78 70 65 63 74 4b 65 79    this.expectKey
1c150 77 6f 72 64 28 27 77 69 74 68 27 29 3b 0a 20 20  word('with');.  
1c160 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 65 78  .        this.ex
1c170 70 65 63 74 28 27 28 27 29 3b 0a 20 20 09 20 20  pect('(');.  .  
1c180 20 20 20 20 20 20 76 61 72 20 6f 62 6a 65 63 74        var object
1c190 20 3d 20 74 68 69 73 2e 70 61 72 73 65 45 78 70   = this.parseExp
1c1a0 72 65 73 73 69 6f 6e 28 29 3b 0a 20 20 09 20 20  ression();.  .  
1c1b0 20 20 20 20 20 20 74 68 69 73 2e 65 78 70 65 63        this.expec
1c1c0 74 28 27 29 27 29 3b 0a 20 20 09 20 20 20 20 20  t(')');.  .     
1c1d0 20 20 20 76 61 72 20 62 6f 64 79 20 3d 20 74 68     var body = th
1c1e0 69 73 2e 70 61 72 73 65 53 74 61 74 65 6d 65 6e  is.parseStatemen
1c1f0 74 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  t();.  .        
1c200 72 65 74 75 72 6e 20 74 68 69 73 2e 66 69 6e 61  return this.fina
1c210 6c 69 7a 65 28 6e 6f 64 65 2c 20 6e 65 77 20 4e  lize(node, new N
1c220 6f 64 65 2e 57 69 74 68 53 74 61 74 65 6d 65 6e  ode.WithStatemen
1c230 74 28 6f 62 6a 65 63 74 2c 20 62 6f 64 79 29 29  t(object, body))
1c240 3b 0a 20 20 09 20 20 20 20 7d 3b 0a 20 20 09 20  ;.  .    };.  . 
1c250 20 20 20 2f 2f 20 45 43 4d 41 2d 32 36 32 20 31     // ECMA-262 1
1c260 33 2e 31 32 20 54 68 65 20 73 77 69 74 63 68 20  3.12 The switch 
1c270 73 74 61 74 65 6d 65 6e 74 0a 20 20 09 20 20 20  statement.  .   
1c280 20 50 61 72 73 65 72 2e 70 72 6f 74 6f 74 79 70   Parser.prototyp
1c290 65 2e 70 61 72 73 65 53 77 69 74 63 68 43 61 73  e.parseSwitchCas
1c2a0 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20  e = function () 
1c2b0 7b 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72  {.  .        var
1c2c0 20 74 68 69 73 24 31 20 3d 20 74 68 69 73 3b 0a   this$1 = this;.
1c2d0 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20  .  .        var 
1c2e0 6e 6f 64 65 20 3d 20 74 68 69 73 2e 63 72 65 61  node = this.crea
1c2f0 74 65 4e 6f 64 65 28 29 3b 0a 20 20 09 20 20 20  teNode();.  .   
1c300 20 20 20 20 20 76 61 72 20 74 65 73 74 3b 0a 20       var test;. 
1c310 20 09 20 20 20 20 20 20 20 20 69 66 20 28 74 68   .        if (th
1c320 69 73 2e 6d 61 74 63 68 4b 65 79 77 6f 72 64 28  is.matchKeyword(
1c330 27 64 65 66 61 75 6c 74 27 29 29 20 7b 0a 20 20  'default')) {.  
1c340 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
1c350 73 2e 6e 65 78 74 54 6f 6b 65 6e 28 29 3b 0a 20  s.nextToken();. 
1c360 20 09 20 20 20 20 20 20 20 20 20 20 20 20 74 65   .            te
1c370 73 74 20 3d 20 6e 75 6c 6c 3b 0a 20 20 09 20 20  st = null;.  .  
1c380 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20        }.  .     
1c390 20 20 20 65 6c 73 65 20 7b 0a 20 20 09 20 20 20     else {.  .   
1c3a0 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 65 78           this.ex
1c3b0 70 65 63 74 4b 65 79 77 6f 72 64 28 27 63 61 73  pectKeyword('cas
1c3c0 65 27 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  e');.  .        
1c3d0 20 20 20 20 74 65 73 74 20 3d 20 74 68 69 73 2e      test = this.
1c3e0 70 61 72 73 65 45 78 70 72 65 73 73 69 6f 6e 28  parseExpression(
1c3f0 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a  );.  .        }.
1c400 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e    .        this.
1c410 65 78 70 65 63 74 28 27 3a 27 29 3b 0a 20 20 09  expect(':');.  .
1c420 20 20 20 20 20 20 20 20 76 61 72 20 63 6f 6e 73          var cons
1c430 65 71 75 65 6e 74 20 3d 20 5b 5d 3b 0a 20 20 09  equent = [];.  .
1c440 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 28 74          while (t
1c450 72 75 65 29 20 7b 0a 20 20 09 20 20 20 20 20 20  rue) {.  .      
1c460 20 20 20 20 20 20 69 66 20 28 74 68 69 73 24 31        if (this$1
1c470 2e 6d 61 74 63 68 28 27 7d 27 29 20 7c 7c 20 74  .match('}') || t
1c480 68 69 73 24 31 2e 6d 61 74 63 68 4b 65 79 77 6f  his$1.matchKeywo
1c490 72 64 28 27 64 65 66 61 75 6c 74 27 29 20 7c 7c  rd('default') ||
1c4a0 20 74 68 69 73 24 31 2e 6d 61 74 63 68 4b 65 79   this$1.matchKey
1c4b0 77 6f 72 64 28 27 63 61 73 65 27 29 29 20 7b 0a  word('case')) {.
1c4c0 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
1c4d0 20 20 20 62 72 65 61 6b 3b 0a 20 20 09 20 20 20     break;.  .   
1c4e0 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20           }.  .  
1c4f0 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73 65 71            conseq
1c500 75 65 6e 74 2e 70 75 73 68 28 74 68 69 73 24 31  uent.push(this$1
1c510 2e 70 61 72 73 65 53 74 61 74 65 6d 65 6e 74 4c  .parseStatementL
1c520 69 73 74 49 74 65 6d 28 29 29 3b 0a 20 20 09 20  istItem());.  . 
1c530 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20         }.  .    
1c540 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e      return this.
1c550 66 69 6e 61 6c 69 7a 65 28 6e 6f 64 65 2c 20 6e  finalize(node, n
1c560 65 77 20 4e 6f 64 65 2e 53 77 69 74 63 68 43 61  ew Node.SwitchCa
1c570 73 65 28 74 65 73 74 2c 20 63 6f 6e 73 65 71 75  se(test, consequ
1c580 65 6e 74 29 29 3b 0a 20 20 09 20 20 20 20 7d 3b  ent));.  .    };
1c590 0a 20 20 09 20 20 20 20 50 61 72 73 65 72 2e 70  .  .    Parser.p
1c5a0 72 6f 74 6f 74 79 70 65 2e 70 61 72 73 65 53 77  rototype.parseSw
1c5b0 69 74 63 68 53 74 61 74 65 6d 65 6e 74 20 3d 20  itchStatement = 
1c5c0 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20  function () {.  
1c5d0 09 20 20 20 20 20 20 20 20 76 61 72 20 74 68 69  .        var thi
1c5e0 73 24 31 20 3d 20 74 68 69 73 3b 0a 0a 20 20 09  s$1 = this;..  .
1c5f0 20 20 20 20 20 20 20 20 76 61 72 20 6e 6f 64 65          var node
1c600 20 3d 20 74 68 69 73 2e 63 72 65 61 74 65 4e 6f   = this.createNo
1c610 64 65 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20  de();.  .       
1c620 20 74 68 69 73 2e 65 78 70 65 63 74 4b 65 79 77   this.expectKeyw
1c630 6f 72 64 28 27 73 77 69 74 63 68 27 29 3b 0a 20  ord('switch');. 
1c640 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 65   .        this.e
1c650 78 70 65 63 74 28 27 28 27 29 3b 0a 20 20 09 20  xpect('(');.  . 
1c660 20 20 20 20 20 20 20 76 61 72 20 64 69 73 63 72         var discr
1c670 69 6d 69 6e 61 6e 74 20 3d 20 74 68 69 73 2e 70  iminant = this.p
1c680 61 72 73 65 45 78 70 72 65 73 73 69 6f 6e 28 29  arseExpression()
1c690 3b 0a 20 20 09 20 20 20 20 20 20 20 20 74 68 69  ;.  .        thi
1c6a0 73 2e 65 78 70 65 63 74 28 27 29 27 29 3b 0a 20  s.expect(')');. 
1c6b0 20 09 20 20 20 20 20 20 20 20 76 61 72 20 70 72   .        var pr
1c6c0 65 76 69 6f 75 73 49 6e 53 77 69 74 63 68 20 3d  eviousInSwitch =
1c6d0 20 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e 69 6e   this.context.in
1c6e0 53 77 69 74 63 68 3b 0a 20 20 09 20 20 20 20 20  Switch;.  .     
1c6f0 20 20 20 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e     this.context.
1c700 69 6e 53 77 69 74 63 68 20 3d 20 74 72 75 65 3b  inSwitch = true;
1c710 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20  .  .        var 
1c720 63 61 73 65 73 20 3d 20 5b 5d 3b 0a 20 20 09 20  cases = [];.  . 
1c730 20 20 20 20 20 20 20 76 61 72 20 64 65 66 61 75         var defau
1c740 6c 74 46 6f 75 6e 64 20 3d 20 66 61 6c 73 65 3b  ltFound = false;
1c750 0a 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73  .  .        this
1c760 2e 65 78 70 65 63 74 28 27 7b 27 29 3b 0a 20 20  .expect('{');.  
1c770 09 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 28  .        while (
1c780 74 72 75 65 29 20 7b 0a 20 20 09 20 20 20 20 20  true) {.  .     
1c790 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73 24         if (this$
1c7a0 31 2e 6d 61 74 63 68 28 27 7d 27 29 29 20 7b 0a  1.match('}')) {.
1c7b0 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
1c7c0 20 20 20 62 72 65 61 6b 3b 0a 20 20 09 20 20 20     break;.  .   
1c7d0 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20           }.  .  
1c7e0 20 20 20 20 20 20 20 20 20 20 76 61 72 20 63 6c            var cl
1c7f0 61 75 73 65 20 3d 20 74 68 69 73 24 31 2e 70 61  ause = this$1.pa
1c800 72 73 65 53 77 69 74 63 68 43 61 73 65 28 29 3b  rseSwitchCase();
1c810 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
1c820 69 66 20 28 63 6c 61 75 73 65 2e 74 65 73 74 20  if (clause.test 
1c830 3d 3d 3d 20 6e 75 6c 6c 29 20 7b 0a 20 20 09 20  === null) {.  . 
1c840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
1c850 66 20 28 64 65 66 61 75 6c 74 46 6f 75 6e 64 29  f (defaultFound)
1c860 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   {.  .          
1c870 20 20 20 20 20 20 20 20 20 20 74 68 69 73 24 31            this$1
1c880 2e 74 68 72 6f 77 45 72 72 6f 72 28 6d 65 73 73  .throwError(mess
1c890 61 67 65 73 5f 31 2e 4d 65 73 73 61 67 65 73 2e  ages_1.Messages.
1c8a0 4d 75 6c 74 69 70 6c 65 44 65 66 61 75 6c 74 73  MultipleDefaults
1c8b0 49 6e 53 77 69 74 63 68 29 3b 0a 20 20 09 20 20  InSwitch);.  .  
1c8c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a                }.
1c8d0 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
1c8e0 20 20 20 64 65 66 61 75 6c 74 46 6f 75 6e 64 20     defaultFound 
1c8f0 3d 20 74 72 75 65 3b 0a 20 20 09 20 20 20 20 20  = true;.  .     
1c900 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20         }.  .    
1c910 20 20 20 20 20 20 20 20 63 61 73 65 73 2e 70 75          cases.pu
1c920 73 68 28 63 6c 61 75 73 65 29 3b 0a 20 20 09 20  sh(clause);.  . 
1c930 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20         }.  .    
1c940 20 20 20 20 74 68 69 73 2e 65 78 70 65 63 74 28      this.expect(
1c950 27 7d 27 29 3b 0a 20 20 09 20 20 20 20 20 20 20  '}');.  .       
1c960 20 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e 69 6e   this.context.in
1c970 53 77 69 74 63 68 20 3d 20 70 72 65 76 69 6f 75  Switch = previou
1c980 73 49 6e 53 77 69 74 63 68 3b 0a 20 20 09 20 20  sInSwitch;.  .  
1c990 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69        return thi
1c9a0 73 2e 66 69 6e 61 6c 69 7a 65 28 6e 6f 64 65 2c  s.finalize(node,
1c9b0 20 6e 65 77 20 4e 6f 64 65 2e 53 77 69 74 63 68   new Node.Switch
1c9c0 53 74 61 74 65 6d 65 6e 74 28 64 69 73 63 72 69  Statement(discri
1c9d0 6d 69 6e 61 6e 74 2c 20 63 61 73 65 73 29 29 3b  minant, cases));
1c9e0 0a 20 20 09 20 20 20 20 7d 3b 0a 20 20 09 20 20  .  .    };.  .  
1c9f0 20 20 2f 2f 20 45 43 4d 41 2d 32 36 32 20 31 33    // ECMA-262 13
1ca00 2e 31 33 20 4c 61 62 65 6c 6c 65 64 20 53 74 61  .13 Labelled Sta
1ca10 74 65 6d 65 6e 74 73 0a 20 20 09 20 20 20 20 50  tements.  .    P
1ca20 61 72 73 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e  arser.prototype.
1ca30 70 61 72 73 65 4c 61 62 65 6c 6c 65 64 53 74 61  parseLabelledSta
1ca40 74 65 6d 65 6e 74 20 3d 20 66 75 6e 63 74 69 6f  tement = functio
1ca50 6e 20 28 29 20 7b 0a 20 20 09 20 20 20 20 20 20  n () {.  .      
1ca60 20 20 76 61 72 20 6e 6f 64 65 20 3d 20 74 68 69    var node = thi
1ca70 73 2e 63 72 65 61 74 65 4e 6f 64 65 28 29 3b 0a  s.createNode();.
1ca80 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20 65    .        var e
1ca90 78 70 72 20 3d 20 74 68 69 73 2e 70 61 72 73 65  xpr = this.parse
1caa0 45 78 70 72 65 73 73 69 6f 6e 28 29 3b 0a 20 20  Expression();.  
1cab0 09 20 20 20 20 20 20 20 20 76 61 72 20 73 74 61  .        var sta
1cac0 74 65 6d 65 6e 74 3b 0a 20 20 09 20 20 20 20 20  tement;.  .     
1cad0 20 20 20 69 66 20 28 28 65 78 70 72 2e 74 79 70     if ((expr.typ
1cae0 65 20 3d 3d 3d 20 73 79 6e 74 61 78 5f 31 2e 53  e === syntax_1.S
1caf0 79 6e 74 61 78 2e 49 64 65 6e 74 69 66 69 65 72  yntax.Identifier
1cb00 29 20 26 26 20 74 68 69 73 2e 6d 61 74 63 68 28  ) && this.match(
1cb10 27 3a 27 29 29 20 7b 0a 20 20 09 20 20 20 20 20  ':')) {.  .     
1cb20 20 20 20 20 20 20 20 74 68 69 73 2e 6e 65 78 74         this.next
1cb30 54 6f 6b 65 6e 28 29 3b 0a 20 20 09 20 20 20 20  Token();.  .    
1cb40 20 20 20 20 20 20 20 20 76 61 72 20 69 64 20 3d          var id =
1cb50 20 28 65 78 70 72 29 3b 0a 20 20 09 20 20 20 20   (expr);.  .    
1cb60 20 20 20 20 20 20 20 20 76 61 72 20 6b 65 79 20          var key 
1cb70 3d 20 27 24 27 20 2b 20 69 64 2e 6e 61 6d 65 3b  = '$' + id.name;
1cb80 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
1cb90 69 66 20 28 4f 62 6a 65 63 74 2e 70 72 6f 74 6f  if (Object.proto
1cba0 74 79 70 65 2e 68 61 73 4f 77 6e 50 72 6f 70 65  type.hasOwnPrope
1cbb0 72 74 79 2e 63 61 6c 6c 28 74 68 69 73 2e 63 6f  rty.call(this.co
1cbc0 6e 74 65 78 74 2e 6c 61 62 65 6c 53 65 74 2c 20  ntext.labelSet, 
1cbd0 6b 65 79 29 29 20 7b 0a 20 20 09 20 20 20 20 20  key)) {.  .     
1cbe0 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
1cbf0 74 68 72 6f 77 45 72 72 6f 72 28 6d 65 73 73 61  throwError(messa
1cc00 67 65 73 5f 31 2e 4d 65 73 73 61 67 65 73 2e 52  ges_1.Messages.R
1cc10 65 64 65 63 6c 61 72 61 74 69 6f 6e 2c 20 27 4c  edeclaration, 'L
1cc20 61 62 65 6c 27 2c 20 69 64 2e 6e 61 6d 65 29 3b  abel', id.name);
1cc30 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
1cc40 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  }.  .           
1cc50 20 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e 6c 61   this.context.la
1cc60 62 65 6c 53 65 74 5b 6b 65 79 5d 20 3d 20 74 72  belSet[key] = tr
1cc70 75 65 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ue;.  .         
1cc80 20 20 20 76 61 72 20 6c 61 62 65 6c 65 64 42 6f     var labeledBo
1cc90 64 79 20 3d 20 74 68 69 73 2e 70 61 72 73 65 53  dy = this.parseS
1cca0 74 61 74 65 6d 65 6e 74 28 29 3b 0a 20 20 09 20  tatement();.  . 
1ccb0 20 20 20 20 20 20 20 20 20 20 20 64 65 6c 65 74             delet
1ccc0 65 20 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e 6c  e this.context.l
1ccd0 61 62 65 6c 53 65 74 5b 6b 65 79 5d 3b 0a 20 20  abelSet[key];.  
1cce0 09 20 20 20 20 20 20 20 20 20 20 20 20 73 74 61  .            sta
1ccf0 74 65 6d 65 6e 74 20 3d 20 6e 65 77 20 4e 6f 64  tement = new Nod
1cd00 65 2e 4c 61 62 65 6c 65 64 53 74 61 74 65 6d 65  e.LabeledStateme
1cd10 6e 74 28 69 64 2c 20 6c 61 62 65 6c 65 64 42 6f  nt(id, labeledBo
1cd20 64 79 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  dy);.  .        
1cd30 7d 0a 20 20 09 20 20 20 20 20 20 20 20 65 6c 73  }.  .        els
1cd40 65 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20  e {.  .         
1cd50 20 20 20 74 68 69 73 2e 63 6f 6e 73 75 6d 65 53     this.consumeS
1cd60 65 6d 69 63 6f 6c 6f 6e 28 29 3b 0a 20 20 09 20  emicolon();.  . 
1cd70 20 20 20 20 20 20 20 20 20 20 20 73 74 61 74 65             state
1cd80 6d 65 6e 74 20 3d 20 6e 65 77 20 4e 6f 64 65 2e  ment = new Node.
1cd90 45 78 70 72 65 73 73 69 6f 6e 53 74 61 74 65 6d  ExpressionStatem
1cda0 65 6e 74 28 65 78 70 72 29 3b 0a 20 20 09 20 20  ent(expr);.  .  
1cdb0 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20        }.  .     
1cdc0 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e 66     return this.f
1cdd0 69 6e 61 6c 69 7a 65 28 6e 6f 64 65 2c 20 73 74  inalize(node, st
1cde0 61 74 65 6d 65 6e 74 29 3b 0a 20 20 09 20 20 20  atement);.  .   
1cdf0 20 7d 3b 0a 20 20 09 20 20 20 20 2f 2f 20 45 43   };.  .    // EC
1ce00 4d 41 2d 32 36 32 20 31 33 2e 31 34 20 54 68 65  MA-262 13.14 The
1ce10 20 74 68 72 6f 77 20 73 74 61 74 65 6d 65 6e 74   throw statement
1ce20 0a 20 20 09 20 20 20 20 50 61 72 73 65 72 2e 70  .  .    Parser.p
1ce30 72 6f 74 6f 74 79 70 65 2e 70 61 72 73 65 54 68  rototype.parseTh
1ce40 72 6f 77 53 74 61 74 65 6d 65 6e 74 20 3d 20 66  rowStatement = f
1ce50 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20 09  unction () {.  .
1ce60 20 20 20 20 20 20 20 20 76 61 72 20 6e 6f 64 65          var node
1ce70 20 3d 20 74 68 69 73 2e 63 72 65 61 74 65 4e 6f   = this.createNo
1ce80 64 65 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20  de();.  .       
1ce90 20 74 68 69 73 2e 65 78 70 65 63 74 4b 65 79 77   this.expectKeyw
1cea0 6f 72 64 28 27 74 68 72 6f 77 27 29 3b 0a 20 20  ord('throw');.  
1ceb0 09 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69  .        if (thi
1cec0 73 2e 68 61 73 4c 69 6e 65 54 65 72 6d 69 6e 61  s.hasLineTermina
1ced0 74 6f 72 29 20 7b 0a 20 20 09 20 20 20 20 20 20  tor) {.  .      
1cee0 20 20 20 20 20 20 74 68 69 73 2e 74 68 72 6f 77        this.throw
1cef0 45 72 72 6f 72 28 6d 65 73 73 61 67 65 73 5f 31  Error(messages_1
1cf00 2e 4d 65 73 73 61 67 65 73 2e 4e 65 77 6c 69 6e  .Messages.Newlin
1cf10 65 41 66 74 65 72 54 68 72 6f 77 29 3b 0a 20 20  eAfterThrow);.  
1cf20 09 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20  .        }.  .  
1cf30 20 20 20 20 20 20 76 61 72 20 61 72 67 75 6d 65        var argume
1cf40 6e 74 20 3d 20 74 68 69 73 2e 70 61 72 73 65 45  nt = this.parseE
1cf50 78 70 72 65 73 73 69 6f 6e 28 29 3b 0a 20 20 09  xpression();.  .
1cf60 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 6f 6e          this.con
1cf70 73 75 6d 65 53 65 6d 69 63 6f 6c 6f 6e 28 29 3b  sumeSemicolon();
1cf80 0a 20 20 09 20 20 20 20 20 20 20 20 72 65 74 75  .  .        retu
1cf90 72 6e 20 74 68 69 73 2e 66 69 6e 61 6c 69 7a 65  rn this.finalize
1cfa0 28 6e 6f 64 65 2c 20 6e 65 77 20 4e 6f 64 65 2e  (node, new Node.
1cfb0 54 68 72 6f 77 53 74 61 74 65 6d 65 6e 74 28 61  ThrowStatement(a
1cfc0 72 67 75 6d 65 6e 74 29 29 3b 0a 20 20 09 20 20  rgument));.  .  
1cfd0 20 20 7d 3b 0a 20 20 09 20 20 20 20 2f 2f 20 45    };.  .    // E
1cfe0 43 4d 41 2d 32 36 32 20 31 33 2e 31 35 20 54 68  CMA-262 13.15 Th
1cff0 65 20 74 72 79 20 73 74 61 74 65 6d 65 6e 74 0a  e try statement.
1d000 20 20 09 20 20 20 20 50 61 72 73 65 72 2e 70 72    .    Parser.pr
1d010 6f 74 6f 74 79 70 65 2e 70 61 72 73 65 43 61 74  ototype.parseCat
1d020 63 68 43 6c 61 75 73 65 20 3d 20 66 75 6e 63 74  chClause = funct
1d030 69 6f 6e 20 28 29 20 7b 0a 20 20 09 20 20 20 20  ion () {.  .    
1d040 20 20 20 20 76 61 72 20 74 68 69 73 24 31 20 3d      var this$1 =
1d050 20 74 68 69 73 3b 0a 0a 20 20 09 20 20 20 20 20   this;..  .     
1d060 20 20 20 76 61 72 20 6e 6f 64 65 20 3d 20 74 68     var node = th
1d070 69 73 2e 63 72 65 61 74 65 4e 6f 64 65 28 29 3b  is.createNode();
1d080 0a 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73  .  .        this
1d090 2e 65 78 70 65 63 74 4b 65 79 77 6f 72 64 28 27  .expectKeyword('
1d0a0 63 61 74 63 68 27 29 3b 0a 20 20 09 20 20 20 20  catch');.  .    
1d0b0 20 20 20 20 74 68 69 73 2e 65 78 70 65 63 74 28      this.expect(
1d0c0 27 28 27 29 3b 0a 20 20 09 20 20 20 20 20 20 20  '(');.  .       
1d0d0 20 69 66 20 28 74 68 69 73 2e 6d 61 74 63 68 28   if (this.match(
1d0e0 27 29 27 29 29 20 7b 0a 20 20 09 20 20 20 20 20  ')')) {.  .     
1d0f0 20 20 20 20 20 20 20 74 68 69 73 2e 74 68 72 6f         this.thro
1d100 77 55 6e 65 78 70 65 63 74 65 64 54 6f 6b 65 6e  wUnexpectedToken
1d110 28 74 68 69 73 2e 6c 6f 6f 6b 61 68 65 61 64 29  (this.lookahead)
1d120 3b 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a 20  ;.  .        }. 
1d130 20 09 20 20 20 20 20 20 20 20 76 61 72 20 70 61   .        var pa
1d140 72 61 6d 73 20 3d 20 5b 5d 3b 0a 20 20 09 20 20  rams = [];.  .  
1d150 20 20 20 20 20 20 76 61 72 20 70 61 72 61 6d 20        var param 
1d160 3d 20 74 68 69 73 2e 70 61 72 73 65 50 61 74 74  = this.parsePatt
1d170 65 72 6e 28 70 61 72 61 6d 73 29 3b 0a 20 20 09  ern(params);.  .
1d180 20 20 20 20 20 20 20 20 76 61 72 20 70 61 72 61          var para
1d190 6d 4d 61 70 20 3d 20 7b 7d 3b 0a 20 20 09 20 20  mMap = {};.  .  
1d1a0 20 20 20 20 20 20 66 6f 72 20 28 76 61 72 20 69        for (var i
1d1b0 20 3d 20 30 3b 20 69 20 3c 20 70 61 72 61 6d 73   = 0; i < params
1d1c0 2e 6c 65 6e 67 74 68 3b 20 69 2b 2b 29 20 7b 0a  .length; i++) {.
1d1d0 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 76    .            v
1d1e0 61 72 20 6b 65 79 20 3d 20 27 24 27 20 2b 20 70  ar key = '$' + p
1d1f0 61 72 61 6d 73 5b 69 5d 2e 76 61 6c 75 65 3b 0a  arams[i].value;.
1d200 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 69    .            i
1d210 66 20 28 4f 62 6a 65 63 74 2e 70 72 6f 74 6f 74  f (Object.protot
1d220 79 70 65 2e 68 61 73 4f 77 6e 50 72 6f 70 65 72  ype.hasOwnProper
1d230 74 79 2e 63 61 6c 6c 28 70 61 72 61 6d 4d 61 70  ty.call(paramMap
1d240 2c 20 6b 65 79 29 29 20 7b 0a 20 20 09 20 20 20  , key)) {.  .   
1d250 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
1d260 73 24 31 2e 74 6f 6c 65 72 61 74 65 45 72 72 6f  s$1.tolerateErro
1d270 72 28 6d 65 73 73 61 67 65 73 5f 31 2e 4d 65 73  r(messages_1.Mes
1d280 73 61 67 65 73 2e 44 75 70 6c 69 63 61 74 65 42  sages.DuplicateB
1d290 69 6e 64 69 6e 67 2c 20 70 61 72 61 6d 73 5b 69  inding, params[i
1d2a0 5d 2e 76 61 6c 75 65 29 3b 0a 20 20 09 20 20 20  ].value);.  .   
1d2b0 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20           }.  .  
1d2c0 20 20 20 20 20 20 20 20 20 20 70 61 72 61 6d 4d            paramM
1d2d0 61 70 5b 6b 65 79 5d 20 3d 20 74 72 75 65 3b 0a  ap[key] = true;.
1d2e0 20 20 09 20 20 20 20 20 20 20 20 7d 0a 20 20 09    .        }.  .
1d2f0 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73          if (this
1d300 2e 63 6f 6e 74 65 78 74 2e 73 74 72 69 63 74 20  .context.strict 
1d310 26 26 20 70 61 72 61 6d 2e 74 79 70 65 20 3d 3d  && param.type ==
1d320 3d 20 73 79 6e 74 61 78 5f 31 2e 53 79 6e 74 61  = syntax_1.Synta
1d330 78 2e 49 64 65 6e 74 69 66 69 65 72 29 20 7b 0a  x.Identifier) {.
1d340 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 69    .            i
1d350 66 20 28 74 68 69 73 2e 73 63 61 6e 6e 65 72 2e  f (this.scanner.
1d360 69 73 52 65 73 74 72 69 63 74 65 64 57 6f 72 64  isRestrictedWord
1d370 28 28 70 61 72 61 6d 29 2e 6e 61 6d 65 29 29 20  ((param).name)) 
1d380 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  {.  .           
1d390 20 20 20 20 20 74 68 69 73 2e 74 6f 6c 65 72 61       this.tolera
1d3a0 74 65 45 72 72 6f 72 28 6d 65 73 73 61 67 65 73  teError(messages
1d3b0 5f 31 2e 4d 65 73 73 61 67 65 73 2e 53 74 72 69  _1.Messages.Stri
1d3c0 63 74 43 61 74 63 68 56 61 72 69 61 62 6c 65 29  ctCatchVariable)
1d3d0 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
1d3e0 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a   }.  .        }.
1d3f0 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e    .        this.
1d400 65 78 70 65 63 74 28 27 29 27 29 3b 0a 20 20 09  expect(')');.  .
1d410 20 20 20 20 20 20 20 20 76 61 72 20 62 6f 64 79          var body
1d420 20 3d 20 74 68 69 73 2e 70 61 72 73 65 42 6c 6f   = this.parseBlo
1d430 63 6b 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20  ck();.  .       
1d440 20 72 65 74 75 72 6e 20 74 68 69 73 2e 66 69 6e   return this.fin
1d450 61 6c 69 7a 65 28 6e 6f 64 65 2c 20 6e 65 77 20  alize(node, new 
1d460 4e 6f 64 65 2e 43 61 74 63 68 43 6c 61 75 73 65  Node.CatchClause
1d470 28 70 61 72 61 6d 2c 20 62 6f 64 79 29 29 3b 0a  (param, body));.
1d480 20 20 09 20 20 20 20 7d 3b 0a 20 20 09 20 20 20    .    };.  .   
1d490 20 50 61 72 73 65 72 2e 70 72 6f 74 6f 74 79 70   Parser.prototyp
1d4a0 65 2e 70 61 72 73 65 46 69 6e 61 6c 6c 79 43 6c  e.parseFinallyCl
1d4b0 61 75 73 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20  ause = function 
1d4c0 28 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20  () {.  .        
1d4d0 74 68 69 73 2e 65 78 70 65 63 74 4b 65 79 77 6f  this.expectKeywo
1d4e0 72 64 28 27 66 69 6e 61 6c 6c 79 27 29 3b 0a 20  rd('finally');. 
1d4f0 20 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e   .        return
1d500 20 74 68 69 73 2e 70 61 72 73 65 42 6c 6f 63 6b   this.parseBlock
1d510 28 29 3b 0a 20 20 09 20 20 20 20 7d 3b 0a 20 20  ();.  .    };.  
1d520 09 20 20 20 20 50 61 72 73 65 72 2e 70 72 6f 74  .    Parser.prot
1d530 6f 74 79 70 65 2e 70 61 72 73 65 54 72 79 53 74  otype.parseTrySt
1d540 61 74 65 6d 65 6e 74 20 3d 20 66 75 6e 63 74 69  atement = functi
1d550 6f 6e 20 28 29 20 7b 0a 20 20 09 20 20 20 20 20  on () {.  .     
1d560 20 20 20 76 61 72 20 6e 6f 64 65 20 3d 20 74 68     var node = th
1d570 69 73 2e 63 72 65 61 74 65 4e 6f 64 65 28 29 3b  is.createNode();
1d580 0a 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73  .  .        this
1d590 2e 65 78 70 65 63 74 4b 65 79 77 6f 72 64 28 27  .expectKeyword('
1d5a0 74 72 79 27 29 3b 0a 20 20 09 20 20 20 20 20 20  try');.  .      
1d5b0 20 20 76 61 72 20 62 6c 6f 63 6b 20 3d 20 74 68    var block = th
1d5c0 69 73 2e 70 61 72 73 65 42 6c 6f 63 6b 28 29 3b  is.parseBlock();
1d5d0 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20  .  .        var 
1d5e0 68 61 6e 64 6c 65 72 20 3d 20 74 68 69 73 2e 6d  handler = this.m
1d5f0 61 74 63 68 4b 65 79 77 6f 72 64 28 27 63 61 74  atchKeyword('cat
1d600 63 68 27 29 20 3f 20 74 68 69 73 2e 70 61 72 73  ch') ? this.pars
1d610 65 43 61 74 63 68 43 6c 61 75 73 65 28 29 20 3a  eCatchClause() :
1d620 20 6e 75 6c 6c 3b 0a 20 20 09 20 20 20 20 20 20   null;.  .      
1d630 20 20 76 61 72 20 66 69 6e 61 6c 69 7a 65 72 20    var finalizer 
1d640 3d 20 74 68 69 73 2e 6d 61 74 63 68 4b 65 79 77  = this.matchKeyw
1d650 6f 72 64 28 27 66 69 6e 61 6c 6c 79 27 29 20 3f  ord('finally') ?
1d660 20 74 68 69 73 2e 70 61 72 73 65 46 69 6e 61 6c   this.parseFinal
1d670 6c 79 43 6c 61 75 73 65 28 29 20 3a 20 6e 75 6c  lyClause() : nul
1d680 6c 3b 0a 20 20 09 20 20 20 20 20 20 20 20 69 66  l;.  .        if
1d690 20 28 21 68 61 6e 64 6c 65 72 20 26 26 20 21 66   (!handler && !f
1d6a0 69 6e 61 6c 69 7a 65 72 29 20 7b 0a 20 20 09 20  inalizer) {.  . 
1d6b0 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
1d6c0 74 68 72 6f 77 45 72 72 6f 72 28 6d 65 73 73 61  throwError(messa
1d6d0 67 65 73 5f 31 2e 4d 65 73 73 61 67 65 73 2e 4e  ges_1.Messages.N
1d6e0 6f 43 61 74 63 68 4f 72 46 69 6e 61 6c 6c 79 29  oCatchOrFinally)
1d6f0 3b 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a 20  ;.  .        }. 
1d700 20 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e   .        return
1d710 20 74 68 69 73 2e 66 69 6e 61 6c 69 7a 65 28 6e   this.finalize(n
1d720 6f 64 65 2c 20 6e 65 77 20 4e 6f 64 65 2e 54 72  ode, new Node.Tr
1d730 79 53 74 61 74 65 6d 65 6e 74 28 62 6c 6f 63 6b  yStatement(block
1d740 2c 20 68 61 6e 64 6c 65 72 2c 20 66 69 6e 61 6c  , handler, final
1d750 69 7a 65 72 29 29 3b 0a 20 20 09 20 20 20 20 7d  izer));.  .    }
1d760 3b 0a 20 20 09 20 20 20 20 2f 2f 20 45 43 4d 41  ;.  .    // ECMA
1d770 2d 32 36 32 20 31 33 2e 31 36 20 54 68 65 20 64  -262 13.16 The d
1d780 65 62 75 67 67 65 72 20 73 74 61 74 65 6d 65 6e  ebugger statemen
1d790 74 0a 20 20 09 20 20 20 20 50 61 72 73 65 72 2e  t.  .    Parser.
1d7a0 70 72 6f 74 6f 74 79 70 65 2e 70 61 72 73 65 44  prototype.parseD
1d7b0 65 62 75 67 67 65 72 53 74 61 74 65 6d 65 6e 74  ebuggerStatement
1d7c0 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b   = function () {
1d7d0 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20  .  .        var 
1d7e0 6e 6f 64 65 20 3d 20 74 68 69 73 2e 63 72 65 61  node = this.crea
1d7f0 74 65 4e 6f 64 65 28 29 3b 0a 20 20 09 20 20 20  teNode();.  .   
1d800 20 20 20 20 20 74 68 69 73 2e 65 78 70 65 63 74       this.expect
1d810 4b 65 79 77 6f 72 64 28 27 64 65 62 75 67 67 65  Keyword('debugge
1d820 72 27 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  r');.  .        
1d830 74 68 69 73 2e 63 6f 6e 73 75 6d 65 53 65 6d 69  this.consumeSemi
1d840 63 6f 6c 6f 6e 28 29 3b 0a 20 20 09 20 20 20 20  colon();.  .    
1d850 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e      return this.
1d860 66 69 6e 61 6c 69 7a 65 28 6e 6f 64 65 2c 20 6e  finalize(node, n
1d870 65 77 20 4e 6f 64 65 2e 44 65 62 75 67 67 65 72  ew Node.Debugger
1d880 53 74 61 74 65 6d 65 6e 74 28 29 29 3b 0a 20 20  Statement());.  
1d890 09 20 20 20 20 7d 3b 0a 20 20 09 20 20 20 20 2f  .    };.  .    /
1d8a0 2f 20 45 43 4d 41 2d 32 36 32 20 31 33 20 53 74  / ECMA-262 13 St
1d8b0 61 74 65 6d 65 6e 74 73 0a 20 20 09 20 20 20 20  atements.  .    
1d8c0 50 61 72 73 65 72 2e 70 72 6f 74 6f 74 79 70 65  Parser.prototype
1d8d0 2e 70 61 72 73 65 53 74 61 74 65 6d 65 6e 74 20  .parseStatement 
1d8e0 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a  = function () {.
1d8f0 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20 73    .        var s
1d900 74 61 74 65 6d 65 6e 74 20 3d 20 6e 75 6c 6c 3b  tatement = null;
1d910 0a 20 20 09 20 20 20 20 20 20 20 20 73 77 69 74  .  .        swit
1d920 63 68 20 28 74 68 69 73 2e 6c 6f 6f 6b 61 68 65  ch (this.lookahe
1d930 61 64 2e 74 79 70 65 29 20 7b 0a 20 20 09 20 20  ad.type) {.  .  
1d940 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 74            case t
1d950 6f 6b 65 6e 5f 31 2e 54 6f 6b 65 6e 2e 42 6f 6f  oken_1.Token.Boo
1d960 6c 65 61 6e 4c 69 74 65 72 61 6c 3a 0a 20 20 09  leanLiteral:.  .
1d970 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
1d980 20 74 6f 6b 65 6e 5f 31 2e 54 6f 6b 65 6e 2e 4e   token_1.Token.N
1d990 75 6c 6c 4c 69 74 65 72 61 6c 3a 0a 20 20 09 20  ullLiteral:.  . 
1d9a0 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
1d9b0 74 6f 6b 65 6e 5f 31 2e 54 6f 6b 65 6e 2e 4e 75  token_1.Token.Nu
1d9c0 6d 65 72 69 63 4c 69 74 65 72 61 6c 3a 0a 20 20  mericLiteral:.  
1d9d0 09 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73  .            cas
1d9e0 65 20 74 6f 6b 65 6e 5f 31 2e 54 6f 6b 65 6e 2e  e token_1.Token.
1d9f0 53 74 72 69 6e 67 4c 69 74 65 72 61 6c 3a 0a 20  StringLiteral:. 
1da00 20 09 20 20 20 20 20 20 20 20 20 20 20 20 63 61   .            ca
1da10 73 65 20 74 6f 6b 65 6e 5f 31 2e 54 6f 6b 65 6e  se token_1.Token
1da20 2e 54 65 6d 70 6c 61 74 65 3a 0a 20 20 09 20 20  .Template:.  .  
1da30 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 74            case t
1da40 6f 6b 65 6e 5f 31 2e 54 6f 6b 65 6e 2e 52 65 67  oken_1.Token.Reg
1da50 75 6c 61 72 45 78 70 72 65 73 73 69 6f 6e 3a 0a  ularExpression:.
1da60 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
1da70 20 20 20 73 74 61 74 65 6d 65 6e 74 20 3d 20 74     statement = t
1da80 68 69 73 2e 70 61 72 73 65 45 78 70 72 65 73 73  his.parseExpress
1da90 69 6f 6e 53 74 61 74 65 6d 65 6e 74 28 29 3b 0a  ionStatement();.
1daa0 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
1dab0 20 20 20 62 72 65 61 6b 3b 0a 20 20 09 20 20 20     break;.  .   
1dac0 20 20 20 20 20 20 20 20 20 63 61 73 65 20 74 6f           case to
1dad0 6b 65 6e 5f 31 2e 54 6f 6b 65 6e 2e 50 75 6e 63  ken_1.Token.Punc
1dae0 74 75 61 74 6f 72 3a 0a 20 20 09 20 20 20 20 20  tuator:.  .     
1daf0 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 76             var v
1db00 61 6c 75 65 20 3d 20 74 68 69 73 2e 6c 6f 6f 6b  alue = this.look
1db10 61 68 65 61 64 2e 76 61 6c 75 65 3b 0a 20 20 09  ahead.value;.  .
1db20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1db30 69 66 20 28 76 61 6c 75 65 20 3d 3d 3d 20 27 7b  if (value === '{
1db40 27 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20  ') {.  .        
1db50 20 20 20 20 20 20 20 20 20 20 20 20 73 74 61 74              stat
1db60 65 6d 65 6e 74 20 3d 20 74 68 69 73 2e 70 61 72  ement = this.par
1db70 73 65 42 6c 6f 63 6b 28 29 3b 0a 20 20 09 20 20  seBlock();.  .  
1db80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a                }.
1db90 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
1dba0 20 20 20 65 6c 73 65 20 69 66 20 28 76 61 6c 75     else if (valu
1dbb0 65 20 3d 3d 3d 20 27 28 27 29 20 7b 0a 20 20 09  e === '(') {.  .
1dbc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dbd0 20 20 20 20 73 74 61 74 65 6d 65 6e 74 20 3d 20      statement = 
1dbe0 74 68 69 73 2e 70 61 72 73 65 45 78 70 72 65 73  this.parseExpres
1dbf0 73 69 6f 6e 53 74 61 74 65 6d 65 6e 74 28 29 3b  sionStatement();
1dc00 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
1dc10 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20      }.  .       
1dc20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66           else if
1dc30 20 28 76 61 6c 75 65 20 3d 3d 3d 20 27 3b 27 29   (value === ';')
1dc40 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   {.  .          
1dc50 20 20 20 20 20 20 20 20 20 20 73 74 61 74 65 6d            statem
1dc60 65 6e 74 20 3d 20 74 68 69 73 2e 70 61 72 73 65  ent = this.parse
1dc70 45 6d 70 74 79 53 74 61 74 65 6d 65 6e 74 28 29  EmptyStatement()
1dc80 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
1dc90 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20       }.  .      
1dca0 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 7b            else {
1dcb0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
1dcc0 20 20 20 20 20 20 20 20 73 74 61 74 65 6d 65 6e          statemen
1dcd0 74 20 3d 20 74 68 69 73 2e 70 61 72 73 65 45 78  t = this.parseEx
1dce0 70 72 65 73 73 69 6f 6e 53 74 61 74 65 6d 65 6e  pressionStatemen
1dcf0 74 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  t();.  .        
1dd00 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20          }.  .   
1dd10 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65               bre
1dd20 61 6b 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ak;.  .         
1dd30 20 20 20 63 61 73 65 20 74 6f 6b 65 6e 5f 31 2e     case token_1.
1dd40 54 6f 6b 65 6e 2e 49 64 65 6e 74 69 66 69 65 72  Token.Identifier
1dd50 3a 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  :.  .           
1dd60 20 20 20 20 20 73 74 61 74 65 6d 65 6e 74 20 3d       statement =
1dd70 20 74 68 69 73 2e 70 61 72 73 65 4c 61 62 65 6c   this.parseLabel
1dd80 6c 65 64 53 74 61 74 65 6d 65 6e 74 28 29 3b 0a  ledStatement();.
1dd90 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
1dda0 20 20 20 62 72 65 61 6b 3b 0a 20 20 09 20 20 20     break;.  .   
1ddb0 20 20 20 20 20 20 20 20 20 63 61 73 65 20 74 6f           case to
1ddc0 6b 65 6e 5f 31 2e 54 6f 6b 65 6e 2e 4b 65 79 77  ken_1.Token.Keyw
1ddd0 6f 72 64 3a 0a 20 20 09 20 20 20 20 20 20 20 20  ord:.  .        
1dde0 20 20 20 20 20 20 20 20 73 77 69 74 63 68 20 28          switch (
1ddf0 74 68 69 73 2e 6c 6f 6f 6b 61 68 65 61 64 2e 76  this.lookahead.v
1de00 61 6c 75 65 29 20 7b 0a 20 20 09 20 20 20 20 20  alue) {.  .     
1de10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
1de20 61 73 65 20 27 62 72 65 61 6b 27 3a 0a 20 20 09  ase 'break':.  .
1de30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1de40 20 20 20 20 20 20 20 20 73 74 61 74 65 6d 65 6e          statemen
1de50 74 20 3d 20 74 68 69 73 2e 70 61 72 73 65 42 72  t = this.parseBr
1de60 65 61 6b 53 74 61 74 65 6d 65 6e 74 28 29 3b 0a  eakStatement();.
1de70 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
1de80 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b             break
1de90 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
1dea0 20 20 20 20 20 20 20 20 20 63 61 73 65 20 27 63           case 'c
1deb0 6f 6e 74 69 6e 75 65 27 3a 0a 20 20 09 20 20 20  ontinue':.  .   
1dec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ded0 20 20 20 20 20 73 74 61 74 65 6d 65 6e 74 20 3d       statement =
1dee0 20 74 68 69 73 2e 70 61 72 73 65 43 6f 6e 74 69   this.parseConti
1def0 6e 75 65 53 74 61 74 65 6d 65 6e 74 28 29 3b 0a  nueStatement();.
1df00 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
1df10 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b             break
1df20 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
1df30 20 20 20 20 20 20 20 20 20 63 61 73 65 20 27 64           case 'd
1df40 65 62 75 67 67 65 72 27 3a 0a 20 20 09 20 20 20  ebugger':.  .   
1df50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1df60 20 20 20 20 20 73 74 61 74 65 6d 65 6e 74 20 3d       statement =
1df70 20 74 68 69 73 2e 70 61 72 73 65 44 65 62 75 67   this.parseDebug
1df80 67 65 72 53 74 61 74 65 6d 65 6e 74 28 29 3b 0a  gerStatement();.
1df90 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
1dfa0 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b             break
1dfb0 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
1dfc0 20 20 20 20 20 20 20 20 20 63 61 73 65 20 27 64           case 'd
1dfd0 6f 27 3a 0a 20 20 09 20 20 20 20 20 20 20 20 20  o':.  .         
1dfe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
1dff0 74 61 74 65 6d 65 6e 74 20 3d 20 74 68 69 73 2e  tatement = this.
1e000 70 61 72 73 65 44 6f 57 68 69 6c 65 53 74 61 74  parseDoWhileStat
1e010 65 6d 65 6e 74 28 29 3b 0a 20 20 09 20 20 20 20  ement();.  .    
1e020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e030 20 20 20 20 62 72 65 61 6b 3b 0a 20 20 09 20 20      break;.  .  
1e040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e050 20 20 63 61 73 65 20 27 66 6f 72 27 3a 0a 20 20    case 'for':.  
1e060 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1e070 20 20 20 20 20 20 20 20 20 73 74 61 74 65 6d 65           stateme
1e080 6e 74 20 3d 20 74 68 69 73 2e 70 61 72 73 65 46  nt = this.parseF
1e090 6f 72 53 74 61 74 65 6d 65 6e 74 28 29 3b 0a 20  orStatement();. 
1e0a0 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
1e0b0 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b            break;
1e0c0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
1e0d0 20 20 20 20 20 20 20 20 63 61 73 65 20 27 66 75          case 'fu
1e0e0 6e 63 74 69 6f 6e 27 3a 0a 20 20 09 20 20 20 20  nction':.  .    
1e0f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e100 20 20 20 20 73 74 61 74 65 6d 65 6e 74 20 3d 20      statement = 
1e110 74 68 69 73 2e 70 61 72 73 65 46 75 6e 63 74 69  this.parseFuncti
1e120 6f 6e 44 65 63 6c 61 72 61 74 69 6f 6e 28 29 3b  onDeclaration();
1e130 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
1e140 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61              brea
1e150 6b 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  k;.  .          
1e160 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 27            case '
1e170 69 66 27 3a 0a 20 20 09 20 20 20 20 20 20 20 20  if':.  .        
1e180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e190 73 74 61 74 65 6d 65 6e 74 20 3d 20 74 68 69 73  statement = this
1e1a0 2e 70 61 72 73 65 49 66 53 74 61 74 65 6d 65 6e  .parseIfStatemen
1e1b0 74 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  t();.  .        
1e1c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e1d0 62 72 65 61 6b 3b 0a 20 20 09 20 20 20 20 20 20  break;.  .      
1e1e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
1e1f0 73 65 20 27 72 65 74 75 72 6e 27 3a 0a 20 20 09  se 'return':.  .
1e200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e210 20 20 20 20 20 20 20 20 73 74 61 74 65 6d 65 6e          statemen
1e220 74 20 3d 20 74 68 69 73 2e 70 61 72 73 65 52 65  t = this.parseRe
1e230 74 75 72 6e 53 74 61 74 65 6d 65 6e 74 28 29 3b  turnStatement();
1e240 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
1e250 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61              brea
1e260 6b 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  k;.  .          
1e270 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 27            case '
1e280 73 77 69 74 63 68 27 3a 0a 20 20 09 20 20 20 20  switch':.  .    
1e290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e2a0 20 20 20 20 73 74 61 74 65 6d 65 6e 74 20 3d 20      statement = 
1e2b0 74 68 69 73 2e 70 61 72 73 65 53 77 69 74 63 68  this.parseSwitch
1e2c0 53 74 61 74 65 6d 65 6e 74 28 29 3b 0a 20 20 09  Statement();.  .
1e2d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e2e0 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0a 20          break;. 
1e2f0 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
1e300 20 20 20 20 20 20 63 61 73 65 20 27 74 68 72 6f        case 'thro
1e310 77 27 3a 0a 20 20 09 20 20 20 20 20 20 20 20 20  w':.  .         
1e320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
1e330 74 61 74 65 6d 65 6e 74 20 3d 20 74 68 69 73 2e  tatement = this.
1e340 70 61 72 73 65 54 68 72 6f 77 53 74 61 74 65 6d  parseThrowStatem
1e350 65 6e 74 28 29 3b 0a 20 20 09 20 20 20 20 20 20  ent();.  .      
1e360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e370 20 20 62 72 65 61 6b 3b 0a 20 20 09 20 20 20 20    break;.  .    
1e380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e390 63 61 73 65 20 27 74 72 79 27 3a 0a 20 20 09 20  case 'try':.  . 
1e3a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e3b0 20 20 20 20 20 20 20 73 74 61 74 65 6d 65 6e 74         statement
1e3c0 20 3d 20 74 68 69 73 2e 70 61 72 73 65 54 72 79   = this.parseTry
1e3d0 53 74 61 74 65 6d 65 6e 74 28 29 3b 0a 20 20 09  Statement();.  .
1e3e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e3f0 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0a 20          break;. 
1e400 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
1e410 20 20 20 20 20 20 63 61 73 65 20 27 76 61 72 27        case 'var'
1e420 3a 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  :.  .           
1e430 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 61               sta
1e440 74 65 6d 65 6e 74 20 3d 20 74 68 69 73 2e 70 61  tement = this.pa
1e450 72 73 65 56 61 72 69 61 62 6c 65 53 74 61 74 65  rseVariableState
1e460 6d 65 6e 74 28 29 3b 0a 20 20 09 20 20 20 20 20  ment();.  .     
1e470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e480 20 20 20 62 72 65 61 6b 3b 0a 20 20 09 20 20 20     break;.  .   
1e490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e4a0 20 63 61 73 65 20 27 77 68 69 6c 65 27 3a 0a 20   case 'while':. 
1e4b0 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
1e4c0 20 20 20 20 20 20 20 20 20 20 73 74 61 74 65 6d            statem
1e4d0 65 6e 74 20 3d 20 74 68 69 73 2e 70 61 72 73 65  ent = this.parse
1e4e0 57 68 69 6c 65 53 74 61 74 65 6d 65 6e 74 28 29  WhileStatement()
1e4f0 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
1e500 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65               bre
1e510 61 6b 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ak;.  .         
1e520 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
1e530 27 77 69 74 68 27 3a 0a 20 20 09 20 20 20 20 20  'with':.  .     
1e540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e550 20 20 20 73 74 61 74 65 6d 65 6e 74 20 3d 20 74     statement = t
1e560 68 69 73 2e 70 61 72 73 65 57 69 74 68 53 74 61  his.parseWithSta
1e570 74 65 6d 65 6e 74 28 29 3b 0a 20 20 09 20 20 20  tement();.  .   
1e580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e590 20 20 20 20 20 62 72 65 61 6b 3b 0a 20 20 09 20       break;.  . 
1e5a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e5b0 20 20 20 64 65 66 61 75 6c 74 3a 0a 20 20 09 20     default:.  . 
1e5c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e5d0 20 20 20 20 20 20 20 73 74 61 74 65 6d 65 6e 74         statement
1e5e0 20 3d 20 74 68 69 73 2e 70 61 72 73 65 45 78 70   = this.parseExp
1e5f0 72 65 73 73 69 6f 6e 53 74 61 74 65 6d 65 6e 74  ressionStatement
1e600 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ();.  .         
1e610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
1e620 72 65 61 6b 3b 0a 20 20 09 20 20 20 20 20 20 20  reak;.  .       
1e630 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20           }.  .  
1e640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72                br
1e650 65 61 6b 3b 0a 20 20 09 20 20 20 20 20 20 20 20  eak;.  .        
1e660 20 20 20 20 64 65 66 61 75 6c 74 3a 0a 20 20 09      default:.  .
1e670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e680 74 68 69 73 2e 74 68 72 6f 77 55 6e 65 78 70 65  this.throwUnexpe
1e690 63 74 65 64 54 6f 6b 65 6e 28 74 68 69 73 2e 6c  ctedToken(this.l
1e6a0 6f 6f 6b 61 68 65 61 64 29 3b 0a 20 20 09 20 20  ookahead);.  .  
1e6b0 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20        }.  .     
1e6c0 20 20 20 72 65 74 75 72 6e 20 73 74 61 74 65 6d     return statem
1e6d0 65 6e 74 3b 0a 20 20 09 20 20 20 20 7d 3b 0a 20  ent;.  .    };. 
1e6e0 20 09 20 20 20 20 2f 2f 20 45 43 4d 41 2d 32 36   .    // ECMA-26
1e6f0 32 20 31 34 2e 31 20 46 75 6e 63 74 69 6f 6e 20  2 14.1 Function 
1e700 44 65 66 69 6e 69 74 69 6f 6e 0a 20 20 09 20 20  Definition.  .  
1e710 20 20 50 61 72 73 65 72 2e 70 72 6f 74 6f 74 79    Parser.prototy
1e720 70 65 2e 70 61 72 73 65 46 75 6e 63 74 69 6f 6e  pe.parseFunction
1e730 53 6f 75 72 63 65 45 6c 65 6d 65 6e 74 73 20 3d  SourceElements =
1e740 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20   function () {. 
1e750 20 09 20 20 20 20 20 20 20 20 76 61 72 20 74 68   .        var th
1e760 69 73 24 31 20 3d 20 74 68 69 73 3b 0a 0a 20 20  is$1 = this;..  
1e770 09 20 20 20 20 20 20 20 20 76 61 72 20 6e 6f 64  .        var nod
1e780 65 20 3d 20 74 68 69 73 2e 63 72 65 61 74 65 4e  e = this.createN
1e790 6f 64 65 28 29 3b 0a 20 20 09 20 20 20 20 20 20  ode();.  .      
1e7a0 20 20 74 68 69 73 2e 65 78 70 65 63 74 28 27 7b    this.expect('{
1e7b0 27 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 76  ');.  .        v
1e7c0 61 72 20 62 6f 64 79 20 3d 20 74 68 69 73 2e 70  ar body = this.p
1e7d0 61 72 73 65 44 69 72 65 63 74 69 76 65 50 72 6f  arseDirectivePro
1e7e0 6c 6f 67 75 65 73 28 29 3b 0a 20 20 09 20 20 20  logues();.  .   
1e7f0 20 20 20 20 20 76 61 72 20 70 72 65 76 69 6f 75       var previou
1e800 73 4c 61 62 65 6c 53 65 74 20 3d 20 74 68 69 73  sLabelSet = this
1e810 2e 63 6f 6e 74 65 78 74 2e 6c 61 62 65 6c 53 65  .context.labelSe
1e820 74 3b 0a 20 20 09 20 20 20 20 20 20 20 20 76 61  t;.  .        va
1e830 72 20 70 72 65 76 69 6f 75 73 49 6e 49 74 65 72  r previousInIter
1e840 61 74 69 6f 6e 20 3d 20 74 68 69 73 2e 63 6f 6e  ation = this.con
1e850 74 65 78 74 2e 69 6e 49 74 65 72 61 74 69 6f 6e  text.inIteration
1e860 3b 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72  ;.  .        var
1e870 20 70 72 65 76 69 6f 75 73 49 6e 53 77 69 74 63   previousInSwitc
1e880 68 20 3d 20 74 68 69 73 2e 63 6f 6e 74 65 78 74  h = this.context
1e890 2e 69 6e 53 77 69 74 63 68 3b 0a 20 20 09 20 20  .inSwitch;.  .  
1e8a0 20 20 20 20 20 20 76 61 72 20 70 72 65 76 69 6f        var previo
1e8b0 75 73 49 6e 46 75 6e 63 74 69 6f 6e 42 6f 64 79  usInFunctionBody
1e8c0 20 3d 20 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e   = this.context.
1e8d0 69 6e 46 75 6e 63 74 69 6f 6e 42 6f 64 79 3b 0a  inFunctionBody;.
1e8e0 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e    .        this.
1e8f0 63 6f 6e 74 65 78 74 2e 6c 61 62 65 6c 53 65 74  context.labelSet
1e900 20 3d 20 7b 7d 3b 0a 20 20 09 20 20 20 20 20 20   = {};.  .      
1e910 20 20 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e 69    this.context.i
1e920 6e 49 74 65 72 61 74 69 6f 6e 20 3d 20 66 61 6c  nIteration = fal
1e930 73 65 3b 0a 20 20 09 20 20 20 20 20 20 20 20 74  se;.  .        t
1e940 68 69 73 2e 63 6f 6e 74 65 78 74 2e 69 6e 53 77  his.context.inSw
1e950 69 74 63 68 20 3d 20 66 61 6c 73 65 3b 0a 20 20  itch = false;.  
1e960 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 6f  .        this.co
1e970 6e 74 65 78 74 2e 69 6e 46 75 6e 63 74 69 6f 6e  ntext.inFunction
1e980 42 6f 64 79 20 3d 20 74 72 75 65 3b 0a 20 20 09  Body = true;.  .
1e990 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 28 74          while (t
1e9a0 68 69 73 2e 73 74 61 72 74 4d 61 72 6b 65 72 2e  his.startMarker.
1e9b0 69 6e 64 65 78 20 3c 20 74 68 69 73 2e 73 63 61  index < this.sca
1e9c0 6e 6e 65 72 2e 6c 65 6e 67 74 68 29 20 7b 0a 20  nner.length) {. 
1e9d0 20 09 20 20 20 20 20 20 20 20 20 20 20 20 69 66   .            if
1e9e0 20 28 74 68 69 73 24 31 2e 6d 61 74 63 68 28 27   (this$1.match('
1e9f0 7d 27 29 29 20 7b 0a 20 20 09 20 20 20 20 20 20  }')) {.  .      
1ea00 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b            break;
1ea10 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
1ea20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  }.  .           
1ea30 20 62 6f 64 79 2e 70 75 73 68 28 74 68 69 73 24   body.push(this$
1ea40 31 2e 70 61 72 73 65 53 74 61 74 65 6d 65 6e 74  1.parseStatement
1ea50 4c 69 73 74 49 74 65 6d 28 29 29 3b 0a 20 20 09  ListItem());.  .
1ea60 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20          }.  .   
1ea70 20 20 20 20 20 74 68 69 73 2e 65 78 70 65 63 74       this.expect
1ea80 28 27 7d 27 29 3b 0a 20 20 09 20 20 20 20 20 20  ('}');.  .      
1ea90 20 20 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e 6c    this.context.l
1eaa0 61 62 65 6c 53 65 74 20 3d 20 70 72 65 76 69 6f  abelSet = previo
1eab0 75 73 4c 61 62 65 6c 53 65 74 3b 0a 20 20 09 20  usLabelSet;.  . 
1eac0 20 20 20 20 20 20 20 74 68 69 73 2e 63 6f 6e 74         this.cont
1ead0 65 78 74 2e 69 6e 49 74 65 72 61 74 69 6f 6e 20  ext.inIteration 
1eae0 3d 20 70 72 65 76 69 6f 75 73 49 6e 49 74 65 72  = previousInIter
1eaf0 61 74 69 6f 6e 3b 0a 20 20 09 20 20 20 20 20 20  ation;.  .      
1eb00 20 20 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e 69    this.context.i
1eb10 6e 53 77 69 74 63 68 20 3d 20 70 72 65 76 69 6f  nSwitch = previo
1eb20 75 73 49 6e 53 77 69 74 63 68 3b 0a 20 20 09 20  usInSwitch;.  . 
1eb30 20 20 20 20 20 20 20 74 68 69 73 2e 63 6f 6e 74         this.cont
1eb40 65 78 74 2e 69 6e 46 75 6e 63 74 69 6f 6e 42 6f  ext.inFunctionBo
1eb50 64 79 20 3d 20 70 72 65 76 69 6f 75 73 49 6e 46  dy = previousInF
1eb60 75 6e 63 74 69 6f 6e 42 6f 64 79 3b 0a 20 20 09  unctionBody;.  .
1eb70 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
1eb80 68 69 73 2e 66 69 6e 61 6c 69 7a 65 28 6e 6f 64  his.finalize(nod
1eb90 65 2c 20 6e 65 77 20 4e 6f 64 65 2e 42 6c 6f 63  e, new Node.Bloc
1eba0 6b 53 74 61 74 65 6d 65 6e 74 28 62 6f 64 79 29  kStatement(body)
1ebb0 29 3b 0a 20 20 09 20 20 20 20 7d 3b 0a 20 20 09  );.  .    };.  .
1ebc0 20 20 20 20 50 61 72 73 65 72 2e 70 72 6f 74 6f      Parser.proto
1ebd0 74 79 70 65 2e 76 61 6c 69 64 61 74 65 50 61 72  type.validatePar
1ebe0 61 6d 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 6f  am = function (o
1ebf0 70 74 69 6f 6e 73 2c 20 70 61 72 61 6d 2c 20 6e  ptions, param, n
1ec00 61 6d 65 29 20 7b 0a 20 20 09 20 20 20 20 20 20  ame) {.  .      
1ec10 20 20 76 61 72 20 6b 65 79 20 3d 20 27 24 27 20    var key = '$' 
1ec20 2b 20 6e 61 6d 65 3b 0a 20 20 09 20 20 20 20 20  + name;.  .     
1ec30 20 20 20 69 66 20 28 74 68 69 73 2e 63 6f 6e 74     if (this.cont
1ec40 65 78 74 2e 73 74 72 69 63 74 29 20 7b 0a 20 20  ext.strict) {.  
1ec50 09 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
1ec60 28 74 68 69 73 2e 73 63 61 6e 6e 65 72 2e 69 73  (this.scanner.is
1ec70 52 65 73 74 72 69 63 74 65 64 57 6f 72 64 28 6e  RestrictedWord(n
1ec80 61 6d 65 29 29 20 7b 0a 20 20 09 20 20 20 20 20  ame)) {.  .     
1ec90 20 20 20 20 20 20 20 20 20 20 20 6f 70 74 69 6f             optio
1eca0 6e 73 2e 73 74 72 69 63 74 65 64 20 3d 20 70 61  ns.stricted = pa
1ecb0 72 61 6d 3b 0a 20 20 09 20 20 20 20 20 20 20 20  ram;.  .        
1ecc0 20 20 20 20 20 20 20 20 6f 70 74 69 6f 6e 73 2e          options.
1ecd0 6d 65 73 73 61 67 65 20 3d 20 6d 65 73 73 61 67  message = messag
1ece0 65 73 5f 31 2e 4d 65 73 73 61 67 65 73 2e 53 74  es_1.Messages.St
1ecf0 72 69 63 74 50 61 72 61 6d 4e 61 6d 65 3b 0a 20  rictParamName;. 
1ed00 20 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a   .            }.
1ed10 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 69    .            i
1ed20 66 20 28 4f 62 6a 65 63 74 2e 70 72 6f 74 6f 74  f (Object.protot
1ed30 79 70 65 2e 68 61 73 4f 77 6e 50 72 6f 70 65 72  ype.hasOwnProper
1ed40 74 79 2e 63 61 6c 6c 28 6f 70 74 69 6f 6e 73 2e  ty.call(options.
1ed50 70 61 72 61 6d 53 65 74 2c 20 6b 65 79 29 29 20  paramSet, key)) 
1ed60 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  {.  .           
1ed70 20 20 20 20 20 6f 70 74 69 6f 6e 73 2e 73 74 72       options.str
1ed80 69 63 74 65 64 20 3d 20 70 61 72 61 6d 3b 0a 20  icted = param;. 
1ed90 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
1eda0 20 20 6f 70 74 69 6f 6e 73 2e 6d 65 73 73 61 67    options.messag
1edb0 65 20 3d 20 6d 65 73 73 61 67 65 73 5f 31 2e 4d  e = messages_1.M
1edc0 65 73 73 61 67 65 73 2e 53 74 72 69 63 74 50 61  essages.StrictPa
1edd0 72 61 6d 44 75 70 65 3b 0a 20 20 09 20 20 20 20  ramDupe;.  .    
1ede0 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20          }.  .   
1edf0 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20       }.  .      
1ee00 20 20 65 6c 73 65 20 69 66 20 28 21 6f 70 74 69    else if (!opti
1ee10 6f 6e 73 2e 66 69 72 73 74 52 65 73 74 72 69 63  ons.firstRestric
1ee20 74 65 64 29 20 7b 0a 20 20 09 20 20 20 20 20 20  ted) {.  .      
1ee30 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 73        if (this.s
1ee40 63 61 6e 6e 65 72 2e 69 73 52 65 73 74 72 69 63  canner.isRestric
1ee50 74 65 64 57 6f 72 64 28 6e 61 6d 65 29 29 20 7b  tedWord(name)) {
1ee60 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
1ee70 20 20 20 20 6f 70 74 69 6f 6e 73 2e 66 69 72 73      options.firs
1ee80 74 52 65 73 74 72 69 63 74 65 64 20 3d 20 70 61  tRestricted = pa
1ee90 72 61 6d 3b 0a 20 20 09 20 20 20 20 20 20 20 20  ram;.  .        
1eea0 20 20 20 20 20 20 20 20 6f 70 74 69 6f 6e 73 2e          options.
1eeb0 6d 65 73 73 61 67 65 20 3d 20 6d 65 73 73 61 67  message = messag
1eec0 65 73 5f 31 2e 4d 65 73 73 61 67 65 73 2e 53 74  es_1.Messages.St
1eed0 72 69 63 74 50 61 72 61 6d 4e 61 6d 65 3b 0a 20  rictParamName;. 
1eee0 20 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a   .            }.
1eef0 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 65    .            e
1ef00 6c 73 65 20 69 66 20 28 74 68 69 73 2e 73 63 61  lse if (this.sca
1ef10 6e 6e 65 72 2e 69 73 53 74 72 69 63 74 4d 6f 64  nner.isStrictMod
1ef20 65 52 65 73 65 72 76 65 64 57 6f 72 64 28 6e 61  eReservedWord(na
1ef30 6d 65 29 29 20 7b 0a 20 20 09 20 20 20 20 20 20  me)) {.  .      
1ef40 20 20 20 20 20 20 20 20 20 20 6f 70 74 69 6f 6e            option
1ef50 73 2e 66 69 72 73 74 52 65 73 74 72 69 63 74 65  s.firstRestricte
1ef60 64 20 3d 20 70 61 72 61 6d 3b 0a 20 20 09 20 20  d = param;.  .  
1ef70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 70                op
1ef80 74 69 6f 6e 73 2e 6d 65 73 73 61 67 65 20 3d 20  tions.message = 
1ef90 6d 65 73 73 61 67 65 73 5f 31 2e 4d 65 73 73 61  messages_1.Messa
1efa0 67 65 73 2e 53 74 72 69 63 74 52 65 73 65 72 76  ges.StrictReserv
1efb0 65 64 57 6f 72 64 3b 0a 20 20 09 20 20 20 20 20  edWord;.  .     
1efc0 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20         }.  .    
1efd0 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20          else if 
1efe0 28 4f 62 6a 65 63 74 2e 70 72 6f 74 6f 74 79 70  (Object.prototyp
1eff0 65 2e 68 61 73 4f 77 6e 50 72 6f 70 65 72 74 79  e.hasOwnProperty
1f000 2e 63 61 6c 6c 28 6f 70 74 69 6f 6e 73 2e 70 61  .call(options.pa
1f010 72 61 6d 53 65 74 2c 20 6b 65 79 29 29 20 7b 0a  ramSet, key)) {.
1f020 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
1f030 20 20 20 6f 70 74 69 6f 6e 73 2e 73 74 72 69 63     options.stric
1f040 74 65 64 20 3d 20 70 61 72 61 6d 3b 0a 20 20 09  ted = param;.  .
1f050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f060 6f 70 74 69 6f 6e 73 2e 6d 65 73 73 61 67 65 20  options.message 
1f070 3d 20 6d 65 73 73 61 67 65 73 5f 31 2e 4d 65 73  = messages_1.Mes
1f080 73 61 67 65 73 2e 53 74 72 69 63 74 50 61 72 61  sages.StrictPara
1f090 6d 44 75 70 65 3b 0a 20 20 09 20 20 20 20 20 20  mDupe;.  .      
1f0a0 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20        }.  .     
1f0b0 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20     }.  .        
1f0c0 2f 2a 20 69 73 74 61 6e 62 75 6c 20 69 67 6e 6f  /* istanbul igno
1f0d0 72 65 20 6e 65 78 74 20 2a 2f 0a 20 20 09 20 20  re next */.  .  
1f0e0 20 20 20 20 20 20 69 66 20 28 74 79 70 65 6f 66        if (typeof
1f0f0 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 72   Object.definePr
1f100 6f 70 65 72 74 79 20 3d 3d 3d 20 27 66 75 6e 63  operty === 'func
1f110 74 69 6f 6e 27 29 20 7b 0a 20 20 09 20 20 20 20  tion') {.  .    
1f120 20 20 20 20 20 20 20 20 4f 62 6a 65 63 74 2e 64          Object.d
1f130 65 66 69 6e 65 50 72 6f 70 65 72 74 79 28 6f 70  efineProperty(op
1f140 74 69 6f 6e 73 2e 70 61 72 61 6d 53 65 74 2c 20  tions.paramSet, 
1f150 6b 65 79 2c 20 7b 20 76 61 6c 75 65 3a 20 74 72  key, { value: tr
1f160 75 65 2c 20 65 6e 75 6d 65 72 61 62 6c 65 3a 20  ue, enumerable: 
1f170 74 72 75 65 2c 20 77 72 69 74 61 62 6c 65 3a 20  true, writable: 
1f180 74 72 75 65 2c 20 63 6f 6e 66 69 67 75 72 61 62  true, configurab
1f190 6c 65 3a 20 74 72 75 65 20 7d 29 3b 0a 20 20 09  le: true });.  .
1f1a0 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20          }.  .   
1f1b0 20 20 20 20 20 65 6c 73 65 20 7b 0a 20 20 09 20       else {.  . 
1f1c0 20 20 20 20 20 20 20 20 20 20 20 6f 70 74 69 6f             optio
1f1d0 6e 73 2e 70 61 72 61 6d 53 65 74 5b 6b 65 79 5d  ns.paramSet[key]
1f1e0 20 3d 20 74 72 75 65 3b 0a 20 20 09 20 20 20 20   = true;.  .    
1f1f0 20 20 20 20 7d 0a 20 20 09 20 20 20 20 7d 3b 0a      }.  .    };.
1f200 20 20 09 20 20 20 20 50 61 72 73 65 72 2e 70 72    .    Parser.pr
1f210 6f 74 6f 74 79 70 65 2e 70 61 72 73 65 52 65 73  ototype.parseRes
1f220 74 45 6c 65 6d 65 6e 74 20 3d 20 66 75 6e 63 74  tElement = funct
1f230 69 6f 6e 20 28 70 61 72 61 6d 73 29 20 7b 0a 20  ion (params) {. 
1f240 20 09 20 20 20 20 20 20 20 20 76 61 72 20 6e 6f   .        var no
1f250 64 65 20 3d 20 74 68 69 73 2e 63 72 65 61 74 65  de = this.create
1f260 4e 6f 64 65 28 29 3b 0a 20 20 09 20 20 20 20 20  Node();.  .     
1f270 20 20 20 74 68 69 73 2e 65 78 70 65 63 74 28 27     this.expect('
1f280 2e 2e 2e 27 29 3b 0a 20 20 09 20 20 20 20 20 20  ...');.  .      
1f290 20 20 76 61 72 20 61 72 67 20 3d 20 74 68 69 73    var arg = this
1f2a0 2e 70 61 72 73 65 50 61 74 74 65 72 6e 28 70 61  .parsePattern(pa
1f2b0 72 61 6d 73 29 3b 0a 20 20 09 20 20 20 20 20 20  rams);.  .      
1f2c0 20 20 69 66 20 28 74 68 69 73 2e 6d 61 74 63 68    if (this.match
1f2d0 28 27 3d 27 29 29 20 7b 0a 20 20 09 20 20 20 20  ('=')) {.  .    
1f2e0 20 20 20 20 20 20 20 20 74 68 69 73 2e 74 68 72          this.thr
1f2f0 6f 77 45 72 72 6f 72 28 6d 65 73 73 61 67 65 73  owError(messages
1f300 5f 31 2e 4d 65 73 73 61 67 65 73 2e 44 65 66 61  _1.Messages.Defa
1f310 75 6c 74 52 65 73 74 50 61 72 61 6d 65 74 65 72  ultRestParameter
1f320 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a  );.  .        }.
1f330 20 20 09 20 20 20 20 20 20 20 20 69 66 20 28 21    .        if (!
1f340 74 68 69 73 2e 6d 61 74 63 68 28 27 29 27 29 29  this.match(')'))
1f350 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   {.  .          
1f360 20 20 74 68 69 73 2e 74 68 72 6f 77 45 72 72 6f    this.throwErro
1f370 72 28 6d 65 73 73 61 67 65 73 5f 31 2e 4d 65 73  r(messages_1.Mes
1f380 73 61 67 65 73 2e 50 61 72 61 6d 65 74 65 72 41  sages.ParameterA
1f390 66 74 65 72 52 65 73 74 50 61 72 61 6d 65 74 65  fterRestParamete
1f3a0 72 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 7d  r);.  .        }
1f3b0 0a 20 20 09 20 20 20 20 20 20 20 20 72 65 74 75  .  .        retu
1f3c0 72 6e 20 74 68 69 73 2e 66 69 6e 61 6c 69 7a 65  rn this.finalize
1f3d0 28 6e 6f 64 65 2c 20 6e 65 77 20 4e 6f 64 65 2e  (node, new Node.
1f3e0 52 65 73 74 45 6c 65 6d 65 6e 74 28 61 72 67 29  RestElement(arg)
1f3f0 29 3b 0a 20 20 09 20 20 20 20 7d 3b 0a 20 20 09  );.  .    };.  .
1f400 20 20 20 20 50 61 72 73 65 72 2e 70 72 6f 74 6f      Parser.proto
1f410 74 79 70 65 2e 70 61 72 73 65 46 6f 72 6d 61 6c  type.parseFormal
1f420 50 61 72 61 6d 65 74 65 72 20 3d 20 66 75 6e 63  Parameter = func
1f430 74 69 6f 6e 20 28 6f 70 74 69 6f 6e 73 29 20 7b  tion (options) {
1f440 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20  .  .        var 
1f450 74 68 69 73 24 31 20 3d 20 74 68 69 73 3b 0a 0a  this$1 = this;..
1f460 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20 70    .        var p
1f470 61 72 61 6d 73 20 3d 20 5b 5d 3b 0a 20 20 09 20  arams = [];.  . 
1f480 20 20 20 20 20 20 20 76 61 72 20 70 61 72 61 6d         var param
1f490 20 3d 20 74 68 69 73 2e 6d 61 74 63 68 28 27 2e   = this.match('.
1f4a0 2e 2e 27 29 20 3f 20 74 68 69 73 2e 70 61 72 73  ..') ? this.pars
1f4b0 65 52 65 73 74 45 6c 65 6d 65 6e 74 28 70 61 72  eRestElement(par
1f4c0 61 6d 73 29 20 3a 20 74 68 69 73 2e 70 61 72 73  ams) : this.pars
1f4d0 65 50 61 74 74 65 72 6e 57 69 74 68 44 65 66 61  ePatternWithDefa
1f4e0 75 6c 74 28 70 61 72 61 6d 73 29 3b 0a 20 20 09  ult(params);.  .
1f4f0 20 20 20 20 20 20 20 20 66 6f 72 20 28 76 61 72          for (var
1f500 20 69 20 3d 20 30 3b 20 69 20 3c 20 70 61 72 61   i = 0; i < para
1f510 6d 73 2e 6c 65 6e 67 74 68 3b 20 69 2b 2b 29 20  ms.length; i++) 
1f520 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  {.  .           
1f530 20 74 68 69 73 24 31 2e 76 61 6c 69 64 61 74 65   this$1.validate
1f540 50 61 72 61 6d 28 6f 70 74 69 6f 6e 73 2c 20 70  Param(options, p
1f550 61 72 61 6d 73 5b 69 5d 2c 20 70 61 72 61 6d 73  arams[i], params
1f560 5b 69 5d 2e 76 61 6c 75 65 29 3b 0a 20 20 09 20  [i].value);.  . 
1f570 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20         }.  .    
1f580 20 20 20 20 6f 70 74 69 6f 6e 73 2e 70 61 72 61      options.para
1f590 6d 73 2e 70 75 73 68 28 70 61 72 61 6d 29 3b 0a  ms.push(param);.
1f5a0 20 20 09 20 20 20 20 20 20 20 20 72 65 74 75 72    .        retur
1f5b0 6e 20 21 74 68 69 73 2e 6d 61 74 63 68 28 27 29  n !this.match(')
1f5c0 27 29 3b 0a 20 20 09 20 20 20 20 7d 3b 0a 20 20  ');.  .    };.  
1f5d0 09 20 20 20 20 50 61 72 73 65 72 2e 70 72 6f 74  .    Parser.prot
1f5e0 6f 74 79 70 65 2e 70 61 72 73 65 46 6f 72 6d 61  otype.parseForma
1f5f0 6c 50 61 72 61 6d 65 74 65 72 73 20 3d 20 66 75  lParameters = fu
1f600 6e 63 74 69 6f 6e 20 28 66 69 72 73 74 52 65 73  nction (firstRes
1f610 74 72 69 63 74 65 64 29 20 7b 0a 20 20 09 20 20  tricted) {.  .  
1f620 20 20 20 20 20 20 76 61 72 20 74 68 69 73 24 31        var this$1
1f630 20 3d 20 74 68 69 73 3b 0a 0a 20 20 09 20 20 20   = this;..  .   
1f640 20 20 20 20 20 76 61 72 20 6f 70 74 69 6f 6e 73       var options
1f650 3b 0a 20 20 09 20 20 20 20 20 20 20 20 6f 70 74  ;.  .        opt
1f660 69 6f 6e 73 20 3d 20 7b 0a 20 20 09 20 20 20 20  ions = {.  .    
1f670 20 20 20 20 20 20 20 20 70 61 72 61 6d 73 3a 20          params: 
1f680 5b 5d 2c 0a 20 20 09 20 20 20 20 20 20 20 20 20  [],.  .         
1f690 20 20 20 66 69 72 73 74 52 65 73 74 72 69 63 74     firstRestrict
1f6a0 65 64 3a 20 66 69 72 73 74 52 65 73 74 72 69 63  ed: firstRestric
1f6b0 74 65 64 0a 20 20 09 20 20 20 20 20 20 20 20 7d  ted.  .        }
1f6c0 3b 0a 20 20 09 20 20 20 20 20 20 20 20 74 68 69  ;.  .        thi
1f6d0 73 2e 65 78 70 65 63 74 28 27 28 27 29 3b 0a 20  s.expect('(');. 
1f6e0 20 09 20 20 20 20 20 20 20 20 69 66 20 28 21 74   .        if (!t
1f6f0 68 69 73 2e 6d 61 74 63 68 28 27 29 27 29 29 20  his.match(')')) 
1f700 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  {.  .           
1f710 20 6f 70 74 69 6f 6e 73 2e 70 61 72 61 6d 53 65   options.paramSe
1f720 74 20 3d 20 7b 7d 3b 0a 20 20 09 20 20 20 20 20  t = {};.  .     
1f730 20 20 20 20 20 20 20 77 68 69 6c 65 20 28 74 68         while (th
1f740 69 73 2e 73 74 61 72 74 4d 61 72 6b 65 72 2e 69  is.startMarker.i
1f750 6e 64 65 78 20 3c 20 74 68 69 73 2e 73 63 61 6e  ndex < this.scan
1f760 6e 65 72 2e 6c 65 6e 67 74 68 29 20 7b 0a 20 20  ner.length) {.  
1f770 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1f780 20 69 66 20 28 21 74 68 69 73 24 31 2e 70 61 72   if (!this$1.par
1f790 73 65 46 6f 72 6d 61 6c 50 61 72 61 6d 65 74 65  seFormalParamete
1f7a0 72 28 6f 70 74 69 6f 6e 73 29 29 20 7b 0a 20 20  r(options)) {.  
1f7b0 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1f7c0 20 20 20 20 20 62 72 65 61 6b 3b 0a 20 20 09 20       break;.  . 
1f7d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
1f7e0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
1f7f0 20 20 20 20 74 68 69 73 24 31 2e 65 78 70 65 63      this$1.expec
1f800 74 28 27 2c 27 29 3b 0a 20 20 09 20 20 20 20 20  t(',');.  .     
1f810 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20         }.  .    
1f820 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20      }.  .       
1f830 20 74 68 69 73 2e 65 78 70 65 63 74 28 27 29 27   this.expect(')'
1f840 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 72 65  );.  .        re
1f850 74 75 72 6e 20 7b 0a 20 20 09 20 20 20 20 20 20  turn {.  .      
1f860 20 20 20 20 20 20 70 61 72 61 6d 73 3a 20 6f 70        params: op
1f870 74 69 6f 6e 73 2e 70 61 72 61 6d 73 2c 0a 20 20  tions.params,.  
1f880 09 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72  .            str
1f890 69 63 74 65 64 3a 20 6f 70 74 69 6f 6e 73 2e 73  icted: options.s
1f8a0 74 72 69 63 74 65 64 2c 0a 20 20 09 20 20 20 20  tricted,.  .    
1f8b0 20 20 20 20 20 20 20 20 66 69 72 73 74 52 65 73          firstRes
1f8c0 74 72 69 63 74 65 64 3a 20 6f 70 74 69 6f 6e 73  tricted: options
1f8d0 2e 66 69 72 73 74 52 65 73 74 72 69 63 74 65 64  .firstRestricted
1f8e0 2c 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ,.  .           
1f8f0 20 6d 65 73 73 61 67 65 3a 20 6f 70 74 69 6f 6e   message: option
1f900 73 2e 6d 65 73 73 61 67 65 0a 20 20 09 20 20 20  s.message.  .   
1f910 20 20 20 20 20 7d 3b 0a 20 20 09 20 20 20 20 7d       };.  .    }
1f920 3b 0a 20 20 09 20 20 20 20 50 61 72 73 65 72 2e  ;.  .    Parser.
1f930 70 72 6f 74 6f 74 79 70 65 2e 70 61 72 73 65 46  prototype.parseF
1f940 75 6e 63 74 69 6f 6e 44 65 63 6c 61 72 61 74 69  unctionDeclarati
1f950 6f 6e 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 69  on = function (i
1f960 64 65 6e 74 69 66 69 65 72 49 73 4f 70 74 69 6f  dentifierIsOptio
1f970 6e 61 6c 29 20 7b 0a 20 20 09 20 20 20 20 20 20  nal) {.  .      
1f980 20 20 76 61 72 20 6e 6f 64 65 20 3d 20 74 68 69    var node = thi
1f990 73 2e 63 72 65 61 74 65 4e 6f 64 65 28 29 3b 0a  s.createNode();.
1f9a0 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e    .        this.
1f9b0 65 78 70 65 63 74 4b 65 79 77 6f 72 64 28 27 66  expectKeyword('f
1f9c0 75 6e 63 74 69 6f 6e 27 29 3b 0a 20 20 09 20 20  unction');.  .  
1f9d0 20 20 20 20 20 20 76 61 72 20 69 73 47 65 6e 65        var isGene
1f9e0 72 61 74 6f 72 20 3d 20 74 68 69 73 2e 6d 61 74  rator = this.mat
1f9f0 63 68 28 27 2a 27 29 3b 0a 20 20 09 20 20 20 20  ch('*');.  .    
1fa00 20 20 20 20 69 66 20 28 69 73 47 65 6e 65 72 61      if (isGenera
1fa10 74 6f 72 29 20 7b 0a 20 20 09 20 20 20 20 20 20  tor) {.  .      
1fa20 20 20 20 20 20 20 74 68 69 73 2e 6e 65 78 74 54        this.nextT
1fa30 6f 6b 65 6e 28 29 3b 0a 20 20 09 20 20 20 20 20  oken();.  .     
1fa40 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20     }.  .        
1fa50 76 61 72 20 6d 65 73 73 61 67 65 3b 0a 20 20 09  var message;.  .
1fa60 20 20 20 20 20 20 20 20 76 61 72 20 69 64 20 3d          var id =
1fa70 20 6e 75 6c 6c 3b 0a 20 20 09 20 20 20 20 20 20   null;.  .      
1fa80 20 20 76 61 72 20 66 69 72 73 74 52 65 73 74 72    var firstRestr
1fa90 69 63 74 65 64 20 3d 20 6e 75 6c 6c 3b 0a 20 20  icted = null;.  
1faa0 09 20 20 20 20 20 20 20 20 69 66 20 28 21 69 64  .        if (!id
1fab0 65 6e 74 69 66 69 65 72 49 73 4f 70 74 69 6f 6e  entifierIsOption
1fac0 61 6c 20 7c 7c 20 21 74 68 69 73 2e 6d 61 74 63  al || !this.matc
1fad0 68 28 27 28 27 29 29 20 7b 0a 20 20 09 20 20 20  h('(')) {.  .   
1fae0 20 20 20 20 20 20 20 20 20 76 61 72 20 74 6f 6b           var tok
1faf0 65 6e 20 3d 20 74 68 69 73 2e 6c 6f 6f 6b 61 68  en = this.lookah
1fb00 65 61 64 3b 0a 20 20 09 20 20 20 20 20 20 20 20  ead;.  .        
1fb10 20 20 20 20 69 64 20 3d 20 74 68 69 73 2e 70 61      id = this.pa
1fb20 72 73 65 56 61 72 69 61 62 6c 65 49 64 65 6e 74  rseVariableIdent
1fb30 69 66 69 65 72 28 29 3b 0a 20 20 09 20 20 20 20  ifier();.  .    
1fb40 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73          if (this
1fb50 2e 63 6f 6e 74 65 78 74 2e 73 74 72 69 63 74 29  .context.strict)
1fb60 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   {.  .          
1fb70 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 73        if (this.s
1fb80 63 61 6e 6e 65 72 2e 69 73 52 65 73 74 72 69 63  canner.isRestric
1fb90 74 65 64 57 6f 72 64 28 74 6f 6b 65 6e 2e 76 61  tedWord(token.va
1fba0 6c 75 65 29 29 20 7b 0a 20 20 09 20 20 20 20 20  lue)) {.  .     
1fbb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
1fbc0 68 69 73 2e 74 6f 6c 65 72 61 74 65 55 6e 65 78  his.tolerateUnex
1fbd0 70 65 63 74 65 64 54 6f 6b 65 6e 28 74 6f 6b 65  pectedToken(toke
1fbe0 6e 2c 20 6d 65 73 73 61 67 65 73 5f 31 2e 4d 65  n, messages_1.Me
1fbf0 73 73 61 67 65 73 2e 53 74 72 69 63 74 46 75 6e  ssages.StrictFun
1fc00 63 74 69 6f 6e 4e 61 6d 65 29 3b 0a 20 20 09 20  ctionName);.  . 
1fc10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
1fc20 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
1fc30 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  }.  .           
1fc40 20 65 6c 73 65 20 7b 0a 20 20 09 20 20 20 20 20   else {.  .     
1fc50 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74             if (t
1fc60 68 69 73 2e 73 63 61 6e 6e 65 72 2e 69 73 52 65  his.scanner.isRe
1fc70 73 74 72 69 63 74 65 64 57 6f 72 64 28 74 6f 6b  strictedWord(tok
1fc80 65 6e 2e 76 61 6c 75 65 29 29 20 7b 0a 20 20 09  en.value)) {.  .
1fc90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fca0 20 20 20 20 66 69 72 73 74 52 65 73 74 72 69 63      firstRestric
1fcb0 74 65 64 20 3d 20 74 6f 6b 65 6e 3b 0a 20 20 09  ted = token;.  .
1fcc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fcd0 20 20 20 20 6d 65 73 73 61 67 65 20 3d 20 6d 65      message = me
1fce0 73 73 61 67 65 73 5f 31 2e 4d 65 73 73 61 67 65  ssages_1.Message
1fcf0 73 2e 53 74 72 69 63 74 46 75 6e 63 74 69 6f 6e  s.StrictFunction
1fd00 4e 61 6d 65 3b 0a 20 20 09 20 20 20 20 20 20 20  Name;.  .       
1fd10 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20           }.  .  
1fd20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
1fd30 73 65 20 69 66 20 28 74 68 69 73 2e 73 63 61 6e  se if (this.scan
1fd40 6e 65 72 2e 69 73 53 74 72 69 63 74 4d 6f 64 65  ner.isStrictMode
1fd50 52 65 73 65 72 76 65 64 57 6f 72 64 28 74 6f 6b  ReservedWord(tok
1fd60 65 6e 2e 76 61 6c 75 65 29 29 20 7b 0a 20 20 09  en.value)) {.  .
1fd70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fd80 20 20 20 20 66 69 72 73 74 52 65 73 74 72 69 63      firstRestric
1fd90 74 65 64 20 3d 20 74 6f 6b 65 6e 3b 0a 20 20 09  ted = token;.  .
1fda0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fdb0 20 20 20 20 6d 65 73 73 61 67 65 20 3d 20 6d 65      message = me
1fdc0 73 73 61 67 65 73 5f 31 2e 4d 65 73 73 61 67 65  ssages_1.Message
1fdd0 73 2e 53 74 72 69 63 74 52 65 73 65 72 76 65 64  s.StrictReserved
1fde0 57 6f 72 64 3b 0a 20 20 09 20 20 20 20 20 20 20  Word;.  .       
1fdf0 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20           }.  .  
1fe00 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20            }.  . 
1fe10 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20         }.  .    
1fe20 20 20 20 20 76 61 72 20 70 72 65 76 69 6f 75 73      var previous
1fe30 41 6c 6c 6f 77 59 69 65 6c 64 20 3d 20 74 68 69  AllowYield = thi
1fe40 73 2e 63 6f 6e 74 65 78 74 2e 61 6c 6c 6f 77 59  s.context.allowY
1fe50 69 65 6c 64 3b 0a 20 20 09 20 20 20 20 20 20 20  ield;.  .       
1fe60 20 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e 61 6c   this.context.al
1fe70 6c 6f 77 59 69 65 6c 64 20 3d 20 21 69 73 47 65  lowYield = !isGe
1fe80 6e 65 72 61 74 6f 72 3b 0a 20 20 09 20 20 20 20  nerator;.  .    
1fe90 20 20 20 20 76 61 72 20 66 6f 72 6d 61 6c 50 61      var formalPa
1fea0 72 61 6d 65 74 65 72 73 20 3d 20 74 68 69 73 2e  rameters = this.
1feb0 70 61 72 73 65 46 6f 72 6d 61 6c 50 61 72 61 6d  parseFormalParam
1fec0 65 74 65 72 73 28 66 69 72 73 74 52 65 73 74 72  eters(firstRestr
1fed0 69 63 74 65 64 29 3b 0a 20 20 09 20 20 20 20 20  icted);.  .     
1fee0 20 20 20 76 61 72 20 70 61 72 61 6d 73 20 3d 20     var params = 
1fef0 66 6f 72 6d 61 6c 50 61 72 61 6d 65 74 65 72 73  formalParameters
1ff00 2e 70 61 72 61 6d 73 3b 0a 20 20 09 20 20 20 20  .params;.  .    
1ff10 20 20 20 20 76 61 72 20 73 74 72 69 63 74 65 64      var stricted
1ff20 20 3d 20 66 6f 72 6d 61 6c 50 61 72 61 6d 65 74   = formalParamet
1ff30 65 72 73 2e 73 74 72 69 63 74 65 64 3b 0a 20 20  ers.stricted;.  
1ff40 09 20 20 20 20 20 20 20 20 66 69 72 73 74 52 65  .        firstRe
1ff50 73 74 72 69 63 74 65 64 20 3d 20 66 6f 72 6d 61  stricted = forma
1ff60 6c 50 61 72 61 6d 65 74 65 72 73 2e 66 69 72 73  lParameters.firs
1ff70 74 52 65 73 74 72 69 63 74 65 64 3b 0a 20 20 09  tRestricted;.  .
1ff80 20 20 20 20 20 20 20 20 69 66 20 28 66 6f 72 6d          if (form
1ff90 61 6c 50 61 72 61 6d 65 74 65 72 73 2e 6d 65 73  alParameters.mes
1ffa0 73 61 67 65 29 20 7b 0a 20 20 09 20 20 20 20 20  sage) {.  .     
1ffb0 20 20 20 20 20 20 20 6d 65 73 73 61 67 65 20 3d         message =
1ffc0 20 66 6f 72 6d 61 6c 50 61 72 61 6d 65 74 65 72   formalParameter
1ffd0 73 2e 6d 65 73 73 61 67 65 3b 0a 20 20 09 20 20  s.message;.  .  
1ffe0 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20        }.  .     
1fff0 20 20 20 76 61 72 20 70 72 65 76 69 6f 75 73 53     var previousS
20000 74 72 69 63 74 20 3d 20 74 68 69 73 2e 63 6f 6e  trict = this.con
20010 74 65 78 74 2e 73 74 72 69 63 74 3b 0a 20 20 09  text.strict;.  .
20020 20 20 20 20 20 20 20 20 76 61 72 20 62 6f 64 79          var body
20030 20 3d 20 74 68 69 73 2e 70 61 72 73 65 46 75 6e   = this.parseFun
20040 63 74 69 6f 6e 53 6f 75 72 63 65 45 6c 65 6d 65  ctionSourceEleme
20050 6e 74 73 28 29 3b 0a 20 20 09 20 20 20 20 20 20  nts();.  .      
20060 20 20 69 66 20 28 74 68 69 73 2e 63 6f 6e 74 65    if (this.conte
20070 78 74 2e 73 74 72 69 63 74 20 26 26 20 66 69 72  xt.strict && fir
20080 73 74 52 65 73 74 72 69 63 74 65 64 29 20 7b 0a  stRestricted) {.
20090 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 74    .            t
200a0 68 69 73 2e 74 68 72 6f 77 55 6e 65 78 70 65 63  his.throwUnexpec
200b0 74 65 64 54 6f 6b 65 6e 28 66 69 72 73 74 52 65  tedToken(firstRe
200c0 73 74 72 69 63 74 65 64 2c 20 6d 65 73 73 61 67  stricted, messag
200d0 65 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 7d  e);.  .        }
200e0 0a 20 20 09 20 20 20 20 20 20 20 20 69 66 20 28  .  .        if (
200f0 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e 73 74 72  this.context.str
20100 69 63 74 20 26 26 20 73 74 72 69 63 74 65 64 29  ict && stricted)
20110 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   {.  .          
20120 20 20 74 68 69 73 2e 74 6f 6c 65 72 61 74 65 55    this.tolerateU
20130 6e 65 78 70 65 63 74 65 64 54 6f 6b 65 6e 28 73  nexpectedToken(s
20140 74 72 69 63 74 65 64 2c 20 6d 65 73 73 61 67 65  tricted, message
20150 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a  );.  .        }.
20160 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e    .        this.
20170 63 6f 6e 74 65 78 74 2e 73 74 72 69 63 74 20 3d  context.strict =
20180 20 70 72 65 76 69 6f 75 73 53 74 72 69 63 74 3b   previousStrict;
20190 0a 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73  .  .        this
201a0 2e 63 6f 6e 74 65 78 74 2e 61 6c 6c 6f 77 59 69  .context.allowYi
201b0 65 6c 64 20 3d 20 70 72 65 76 69 6f 75 73 41 6c  eld = previousAl
201c0 6c 6f 77 59 69 65 6c 64 3b 0a 20 20 09 20 20 20  lowYield;.  .   
201d0 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73       return this
201e0 2e 66 69 6e 61 6c 69 7a 65 28 6e 6f 64 65 2c 20  .finalize(node, 
201f0 6e 65 77 20 4e 6f 64 65 2e 46 75 6e 63 74 69 6f  new Node.Functio
20200 6e 44 65 63 6c 61 72 61 74 69 6f 6e 28 69 64 2c  nDeclaration(id,
20210 20 70 61 72 61 6d 73 2c 20 62 6f 64 79 2c 20 69   params, body, i
20220 73 47 65 6e 65 72 61 74 6f 72 29 29 3b 0a 20 20  sGenerator));.  
20230 09 20 20 20 20 7d 3b 0a 20 20 09 20 20 20 20 50  .    };.  .    P
20240 61 72 73 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e  arser.prototype.
20250 70 61 72 73 65 46 75 6e 63 74 69 6f 6e 45 78 70  parseFunctionExp
20260 72 65 73 73 69 6f 6e 20 3d 20 66 75 6e 63 74 69  ression = functi
20270 6f 6e 20 28 29 20 7b 0a 20 20 09 20 20 20 20 20  on () {.  .     
20280 20 20 20 76 61 72 20 6e 6f 64 65 20 3d 20 74 68     var node = th
20290 69 73 2e 63 72 65 61 74 65 4e 6f 64 65 28 29 3b  is.createNode();
202a0 0a 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73  .  .        this
202b0 2e 65 78 70 65 63 74 4b 65 79 77 6f 72 64 28 27  .expectKeyword('
202c0 66 75 6e 63 74 69 6f 6e 27 29 3b 0a 20 20 09 20  function');.  . 
202d0 20 20 20 20 20 20 20 76 61 72 20 69 73 47 65 6e         var isGen
202e0 65 72 61 74 6f 72 20 3d 20 74 68 69 73 2e 6d 61  erator = this.ma
202f0 74 63 68 28 27 2a 27 29 3b 0a 20 20 09 20 20 20  tch('*');.  .   
20300 20 20 20 20 20 69 66 20 28 69 73 47 65 6e 65 72       if (isGener
20310 61 74 6f 72 29 20 7b 0a 20 20 09 20 20 20 20 20  ator) {.  .     
20320 20 20 20 20 20 20 20 74 68 69 73 2e 6e 65 78 74         this.next
20330 54 6f 6b 65 6e 28 29 3b 0a 20 20 09 20 20 20 20  Token();.  .    
20340 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20      }.  .       
20350 20 76 61 72 20 6d 65 73 73 61 67 65 3b 0a 20 20   var message;.  
20360 09 20 20 20 20 20 20 20 20 76 61 72 20 69 64 20  .        var id 
20370 3d 20 6e 75 6c 6c 3b 0a 20 20 09 20 20 20 20 20  = null;.  .     
20380 20 20 20 76 61 72 20 66 69 72 73 74 52 65 73 74     var firstRest
20390 72 69 63 74 65 64 3b 0a 20 20 09 20 20 20 20 20  ricted;.  .     
203a0 20 20 20 76 61 72 20 70 72 65 76 69 6f 75 73 41     var previousA
203b0 6c 6c 6f 77 59 69 65 6c 64 20 3d 20 74 68 69 73  llowYield = this
203c0 2e 63 6f 6e 74 65 78 74 2e 61 6c 6c 6f 77 59 69  .context.allowYi
203d0 65 6c 64 3b 0a 20 20 09 20 20 20 20 20 20 20 20  eld;.  .        
203e0 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e 61 6c 6c  this.context.all
203f0 6f 77 59 69 65 6c 64 20 3d 20 21 69 73 47 65 6e  owYield = !isGen
20400 65 72 61 74 6f 72 3b 0a 20 20 09 20 20 20 20 20  erator;.  .     
20410 20 20 20 69 66 20 28 21 74 68 69 73 2e 6d 61 74     if (!this.mat
20420 63 68 28 27 28 27 29 29 20 7b 0a 20 20 09 20 20  ch('(')) {.  .  
20430 20 20 20 20 20 20 20 20 20 20 76 61 72 20 74 6f            var to
20440 6b 65 6e 20 3d 20 74 68 69 73 2e 6c 6f 6f 6b 61  ken = this.looka
20450 68 65 61 64 3b 0a 20 20 09 20 20 20 20 20 20 20  head;.  .       
20460 20 20 20 20 20 69 64 20 3d 20 28 21 74 68 69 73       id = (!this
20470 2e 63 6f 6e 74 65 78 74 2e 73 74 72 69 63 74 20  .context.strict 
20480 26 26 20 21 69 73 47 65 6e 65 72 61 74 6f 72 20  && !isGenerator 
20490 26 26 20 74 68 69 73 2e 6d 61 74 63 68 4b 65 79  && this.matchKey
204a0 77 6f 72 64 28 27 79 69 65 6c 64 27 29 29 20 3f  word('yield')) ?
204b0 20 74 68 69 73 2e 70 61 72 73 65 49 64 65 6e 74   this.parseIdent
204c0 69 66 69 65 72 4e 61 6d 65 28 29 20 3a 20 74 68  ifierName() : th
204d0 69 73 2e 70 61 72 73 65 56 61 72 69 61 62 6c 65  is.parseVariable
204e0 49 64 65 6e 74 69 66 69 65 72 28 29 3b 0a 20 20  Identifier();.  
204f0 09 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
20500 28 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e 73 74  (this.context.st
20510 72 69 63 74 29 20 7b 0a 20 20 09 20 20 20 20 20  rict) {.  .     
20520 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74             if (t
20530 68 69 73 2e 73 63 61 6e 6e 65 72 2e 69 73 52 65  his.scanner.isRe
20540 73 74 72 69 63 74 65 64 57 6f 72 64 28 74 6f 6b  strictedWord(tok
20550 65 6e 2e 76 61 6c 75 65 29 29 20 7b 0a 20 20 09  en.value)) {.  .
20560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20570 20 20 20 20 74 68 69 73 2e 74 6f 6c 65 72 61 74      this.tolerat
20580 65 55 6e 65 78 70 65 63 74 65 64 54 6f 6b 65 6e  eUnexpectedToken
20590 28 74 6f 6b 65 6e 2c 20 6d 65 73 73 61 67 65 73  (token, messages
205a0 5f 31 2e 4d 65 73 73 61 67 65 73 2e 53 74 72 69  _1.Messages.Stri
205b0 63 74 46 75 6e 63 74 69 6f 6e 4e 61 6d 65 29 3b  ctFunctionName);
205c0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
205d0 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20      }.  .       
205e0 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20       }.  .      
205f0 20 20 20 20 20 20 65 6c 73 65 20 7b 0a 20 20 09        else {.  .
20600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20610 69 66 20 28 74 68 69 73 2e 73 63 61 6e 6e 65 72  if (this.scanner
20620 2e 69 73 52 65 73 74 72 69 63 74 65 64 57 6f 72  .isRestrictedWor
20630 64 28 74 6f 6b 65 6e 2e 76 61 6c 75 65 29 29 20  d(token.value)) 
20640 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  {.  .           
20650 20 20 20 20 20 20 20 20 20 66 69 72 73 74 52 65           firstRe
20660 73 74 72 69 63 74 65 64 20 3d 20 74 6f 6b 65 6e  stricted = token
20670 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
20680 20 20 20 20 20 20 20 20 20 6d 65 73 73 61 67 65           message
20690 20 3d 20 6d 65 73 73 61 67 65 73 5f 31 2e 4d 65   = messages_1.Me
206a0 73 73 61 67 65 73 2e 53 74 72 69 63 74 46 75 6e  ssages.StrictFun
206b0 63 74 69 6f 6e 4e 61 6d 65 3b 0a 20 20 09 20 20  ctionName;.  .  
206c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a                }.
206d0 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
206e0 20 20 20 65 6c 73 65 20 69 66 20 28 74 68 69 73     else if (this
206f0 2e 73 63 61 6e 6e 65 72 2e 69 73 53 74 72 69 63  .scanner.isStric
20700 74 4d 6f 64 65 52 65 73 65 72 76 65 64 57 6f 72  tModeReservedWor
20710 64 28 74 6f 6b 65 6e 2e 76 61 6c 75 65 29 29 20  d(token.value)) 
20720 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  {.  .           
20730 20 20 20 20 20 20 20 20 20 66 69 72 73 74 52 65           firstRe
20740 73 74 72 69 63 74 65 64 20 3d 20 74 6f 6b 65 6e  stricted = token
20750 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
20760 20 20 20 20 20 20 20 20 20 6d 65 73 73 61 67 65           message
20770 20 3d 20 6d 65 73 73 61 67 65 73 5f 31 2e 4d 65   = messages_1.Me
20780 73 73 61 67 65 73 2e 53 74 72 69 63 74 52 65 73  ssages.StrictRes
20790 65 72 76 65 64 57 6f 72 64 3b 0a 20 20 09 20 20  ervedWord;.  .  
207a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a                }.
207b0 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 7d    .            }
207c0 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a 20 20  .  .        }.  
207d0 09 20 20 20 20 20 20 20 20 76 61 72 20 66 6f 72  .        var for
207e0 6d 61 6c 50 61 72 61 6d 65 74 65 72 73 20 3d 20  malParameters = 
207f0 74 68 69 73 2e 70 61 72 73 65 46 6f 72 6d 61 6c  this.parseFormal
20800 50 61 72 61 6d 65 74 65 72 73 28 66 69 72 73 74  Parameters(first
20810 52 65 73 74 72 69 63 74 65 64 29 3b 0a 20 20 09  Restricted);.  .
20820 20 20 20 20 20 20 20 20 76 61 72 20 70 61 72 61          var para
20830 6d 73 20 3d 20 66 6f 72 6d 61 6c 50 61 72 61 6d  ms = formalParam
20840 65 74 65 72 73 2e 70 61 72 61 6d 73 3b 0a 20 20  eters.params;.  
20850 09 20 20 20 20 20 20 20 20 76 61 72 20 73 74 72  .        var str
20860 69 63 74 65 64 20 3d 20 66 6f 72 6d 61 6c 50 61  icted = formalPa
20870 72 61 6d 65 74 65 72 73 2e 73 74 72 69 63 74 65  rameters.stricte
20880 64 3b 0a 20 20 09 20 20 20 20 20 20 20 20 66 69  d;.  .        fi
20890 72 73 74 52 65 73 74 72 69 63 74 65 64 20 3d 20  rstRestricted = 
208a0 66 6f 72 6d 61 6c 50 61 72 61 6d 65 74 65 72 73  formalParameters
208b0 2e 66 69 72 73 74 52 65 73 74 72 69 63 74 65 64  .firstRestricted
208c0 3b 0a 20 20 09 20 20 20 20 20 20 20 20 69 66 20  ;.  .        if 
208d0 28 66 6f 72 6d 61 6c 50 61 72 61 6d 65 74 65 72  (formalParameter
208e0 73 2e 6d 65 73 73 61 67 65 29 20 7b 0a 20 20 09  s.message) {.  .
208f0 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 73 73              mess
20900 61 67 65 20 3d 20 66 6f 72 6d 61 6c 50 61 72 61  age = formalPara
20910 6d 65 74 65 72 73 2e 6d 65 73 73 61 67 65 3b 0a  meters.message;.
20920 20 20 09 20 20 20 20 20 20 20 20 7d 0a 20 20 09    .        }.  .
20930 20 20 20 20 20 20 20 20 76 61 72 20 70 72 65 76          var prev
20940 69 6f 75 73 53 74 72 69 63 74 20 3d 20 74 68 69  iousStrict = thi
20950 73 2e 63 6f 6e 74 65 78 74 2e 73 74 72 69 63 74  s.context.strict
20960 3b 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72  ;.  .        var
20970 20 62 6f 64 79 20 3d 20 74 68 69 73 2e 70 61 72   body = this.par
20980 73 65 46 75 6e 63 74 69 6f 6e 53 6f 75 72 63 65  seFunctionSource
20990 45 6c 65 6d 65 6e 74 73 28 29 3b 0a 20 20 09 20  Elements();.  . 
209a0 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e         if (this.
209b0 63 6f 6e 74 65 78 74 2e 73 74 72 69 63 74 20 26  context.strict &
209c0 26 20 66 69 72 73 74 52 65 73 74 72 69 63 74 65  & firstRestricte
209d0 64 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20  d) {.  .        
209e0 20 20 20 20 74 68 69 73 2e 74 68 72 6f 77 55 6e      this.throwUn
209f0 65 78 70 65 63 74 65 64 54 6f 6b 65 6e 28 66 69  expectedToken(fi
20a00 72 73 74 52 65 73 74 72 69 63 74 65 64 2c 20 6d  rstRestricted, m
20a10 65 73 73 61 67 65 29 3b 0a 20 20 09 20 20 20 20  essage);.  .    
20a20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20      }.  .       
20a30 20 69 66 20 28 74 68 69 73 2e 63 6f 6e 74 65 78   if (this.contex
20a40 74 2e 73 74 72 69 63 74 20 26 26 20 73 74 72 69  t.strict && stri
20a50 63 74 65 64 29 20 7b 0a 20 20 09 20 20 20 20 20  cted) {.  .     
20a60 20 20 20 20 20 20 20 74 68 69 73 2e 74 6f 6c 65         this.tole
20a70 72 61 74 65 55 6e 65 78 70 65 63 74 65 64 54 6f  rateUnexpectedTo
20a80 6b 65 6e 28 73 74 72 69 63 74 65 64 2c 20 6d 65  ken(stricted, me
20a90 73 73 61 67 65 29 3b 0a 20 20 09 20 20 20 20 20  ssage);.  .     
20aa0 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20     }.  .        
20ab0 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e 73 74 72  this.context.str
20ac0 69 63 74 20 3d 20 70 72 65 76 69 6f 75 73 53 74  ict = previousSt
20ad0 72 69 63 74 3b 0a 20 20 09 20 20 20 20 20 20 20  rict;.  .       
20ae0 20 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e 61 6c   this.context.al
20af0 6c 6f 77 59 69 65 6c 64 20 3d 20 70 72 65 76 69  lowYield = previ
20b00 6f 75 73 41 6c 6c 6f 77 59 69 65 6c 64 3b 0a 20  ousAllowYield;. 
20b10 20 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e   .        return
20b20 20 74 68 69 73 2e 66 69 6e 61 6c 69 7a 65 28 6e   this.finalize(n
20b30 6f 64 65 2c 20 6e 65 77 20 4e 6f 64 65 2e 46 75  ode, new Node.Fu
20b40 6e 63 74 69 6f 6e 45 78 70 72 65 73 73 69 6f 6e  nctionExpression
20b50 28 69 64 2c 20 70 61 72 61 6d 73 2c 20 62 6f 64  (id, params, bod
20b60 79 2c 20 69 73 47 65 6e 65 72 61 74 6f 72 29 29  y, isGenerator))
20b70 3b 0a 20 20 09 20 20 20 20 7d 3b 0a 20 20 09 20  ;.  .    };.  . 
20b80 20 20 20 2f 2f 20 45 43 4d 41 2d 32 36 32 20 31     // ECMA-262 1
20b90 34 2e 31 2e 31 20 44 69 72 65 63 74 69 76 65 20  4.1.1 Directive 
20ba0 50 72 6f 6c 6f 67 75 65 73 0a 20 20 09 20 20 20  Prologues.  .   
20bb0 20 50 61 72 73 65 72 2e 70 72 6f 74 6f 74 79 70   Parser.prototyp
20bc0 65 2e 70 61 72 73 65 44 69 72 65 63 74 69 76 65  e.parseDirective
20bd0 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b   = function () {
20be0 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20  .  .        var 
20bf0 74 6f 6b 65 6e 20 3d 20 74 68 69 73 2e 6c 6f 6f  token = this.loo
20c00 6b 61 68 65 61 64 3b 0a 20 20 09 20 20 20 20 20  kahead;.  .     
20c10 20 20 20 76 61 72 20 64 69 72 65 63 74 69 76 65     var directive
20c20 20 3d 20 6e 75 6c 6c 3b 0a 20 20 09 20 20 20 20   = null;.  .    
20c30 20 20 20 20 76 61 72 20 6e 6f 64 65 20 3d 20 74      var node = t
20c40 68 69 73 2e 63 72 65 61 74 65 4e 6f 64 65 28 29  his.createNode()
20c50 3b 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72  ;.  .        var
20c60 20 65 78 70 72 20 3d 20 74 68 69 73 2e 70 61 72   expr = this.par
20c70 73 65 45 78 70 72 65 73 73 69 6f 6e 28 29 3b 0a  seExpression();.
20c80 20 20 09 20 20 20 20 20 20 20 20 69 66 20 28 65    .        if (e
20c90 78 70 72 2e 74 79 70 65 20 3d 3d 3d 20 73 79 6e  xpr.type === syn
20ca0 74 61 78 5f 31 2e 53 79 6e 74 61 78 2e 4c 69 74  tax_1.Syntax.Lit
20cb0 65 72 61 6c 29 20 7b 0a 20 20 09 20 20 20 20 20  eral) {.  .     
20cc0 20 20 20 20 20 20 20 64 69 72 65 63 74 69 76 65         directive
20cd0 20 3d 20 74 68 69 73 2e 67 65 74 54 6f 6b 65 6e   = this.getToken
20ce0 52 61 77 28 74 6f 6b 65 6e 29 2e 73 6c 69 63 65  Raw(token).slice
20cf0 28 31 2c 20 2d 31 29 3b 0a 20 20 09 20 20 20 20  (1, -1);.  .    
20d00 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20      }.  .       
20d10 20 74 68 69 73 2e 63 6f 6e 73 75 6d 65 53 65 6d   this.consumeSem
20d20 69 63 6f 6c 6f 6e 28 29 3b 0a 20 20 09 20 20 20  icolon();.  .   
20d30 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73       return this
20d40 2e 66 69 6e 61 6c 69 7a 65 28 6e 6f 64 65 2c 20  .finalize(node, 
20d50 64 69 72 65 63 74 69 76 65 20 3f 20 6e 65 77 20  directive ? new 
20d60 4e 6f 64 65 2e 44 69 72 65 63 74 69 76 65 28 65  Node.Directive(e
20d70 78 70 72 2c 20 64 69 72 65 63 74 69 76 65 29 20  xpr, directive) 
20d80 3a 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  :.  .           
20d90 20 6e 65 77 20 4e 6f 64 65 2e 45 78 70 72 65 73   new Node.Expres
20da0 73 69 6f 6e 53 74 61 74 65 6d 65 6e 74 28 65 78  sionStatement(ex
20db0 70 72 29 29 3b 0a 20 20 09 20 20 20 20 7d 3b 0a  pr));.  .    };.
20dc0 20 20 09 20 20 20 20 50 61 72 73 65 72 2e 70 72    .    Parser.pr
20dd0 6f 74 6f 74 79 70 65 2e 70 61 72 73 65 44 69 72  ototype.parseDir
20de0 65 63 74 69 76 65 50 72 6f 6c 6f 67 75 65 73 20  ectivePrologues 
20df0 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a  = function () {.
20e00 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20 74    .        var t
20e10 68 69 73 24 31 20 3d 20 74 68 69 73 3b 0a 0a 20  his$1 = this;.. 
20e20 20 09 20 20 20 20 20 20 20 20 76 61 72 20 66 69   .        var fi
20e30 72 73 74 52 65 73 74 72 69 63 74 65 64 20 3d 20  rstRestricted = 
20e40 6e 75 6c 6c 3b 0a 20 20 09 20 20 20 20 20 20 20  null;.  .       
20e50 20 76 61 72 20 62 6f 64 79 20 3d 20 5b 5d 3b 0a   var body = [];.
20e60 20 20 09 20 20 20 20 20 20 20 20 77 68 69 6c 65    .        while
20e70 20 28 74 72 75 65 29 20 7b 0a 20 20 09 20 20 20   (true) {.  .   
20e80 20 20 20 20 20 20 20 20 20 76 61 72 20 74 6f 6b           var tok
20e90 65 6e 20 3d 20 74 68 69 73 24 31 2e 6c 6f 6f 6b  en = this$1.look
20ea0 61 68 65 61 64 3b 0a 20 20 09 20 20 20 20 20 20  ahead;.  .      
20eb0 20 20 20 20 20 20 69 66 20 28 74 6f 6b 65 6e 2e        if (token.
20ec0 74 79 70 65 20 21 3d 3d 20 74 6f 6b 65 6e 5f 31  type !== token_1
20ed0 2e 54 6f 6b 65 6e 2e 53 74 72 69 6e 67 4c 69 74  .Token.StringLit
20ee0 65 72 61 6c 29 20 7b 0a 20 20 09 20 20 20 20 20  eral) {.  .     
20ef0 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b             break
20f00 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
20f10 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   }.  .          
20f20 20 20 76 61 72 20 73 74 61 74 65 6d 65 6e 74 20    var statement 
20f30 3d 20 74 68 69 73 24 31 2e 70 61 72 73 65 44 69  = this$1.parseDi
20f40 72 65 63 74 69 76 65 28 29 3b 0a 20 20 09 20 20  rective();.  .  
20f50 20 20 20 20 20 20 20 20 20 20 62 6f 64 79 2e 70            body.p
20f60 75 73 68 28 73 74 61 74 65 6d 65 6e 74 29 3b 0a  ush(statement);.
20f70 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 76    .            v
20f80 61 72 20 64 69 72 65 63 74 69 76 65 20 3d 20 73  ar directive = s
20f90 74 61 74 65 6d 65 6e 74 2e 64 69 72 65 63 74 69  tatement.directi
20fa0 76 65 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ve;.  .         
20fb0 20 20 20 69 66 20 28 74 79 70 65 6f 66 20 64 69     if (typeof di
20fc0 72 65 63 74 69 76 65 20 21 3d 3d 20 27 73 74 72  rective !== 'str
20fd0 69 6e 67 27 29 20 7b 0a 20 20 09 20 20 20 20 20  ing') {.  .     
20fe0 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b             break
20ff0 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
21000 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   }.  .          
21010 20 20 69 66 20 28 64 69 72 65 63 74 69 76 65 20    if (directive 
21020 3d 3d 3d 20 27 75 73 65 20 73 74 72 69 63 74 27  === 'use strict'
21030 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ) {.  .         
21040 20 20 20 20 20 20 20 74 68 69 73 24 31 2e 63 6f         this$1.co
21050 6e 74 65 78 74 2e 73 74 72 69 63 74 20 3d 20 74  ntext.strict = t
21060 72 75 65 3b 0a 20 20 09 20 20 20 20 20 20 20 20  rue;.  .        
21070 20 20 20 20 20 20 20 20 69 66 20 28 66 69 72 73          if (firs
21080 74 52 65 73 74 72 69 63 74 65 64 29 20 7b 0a 20  tRestricted) {. 
21090 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
210a0 20 20 20 20 20 20 74 68 69 73 24 31 2e 74 6f 6c        this$1.tol
210b0 65 72 61 74 65 55 6e 65 78 70 65 63 74 65 64 54  erateUnexpectedT
210c0 6f 6b 65 6e 28 66 69 72 73 74 52 65 73 74 72 69  oken(firstRestri
210d0 63 74 65 64 2c 20 6d 65 73 73 61 67 65 73 5f 31  cted, messages_1
210e0 2e 4d 65 73 73 61 67 65 73 2e 53 74 72 69 63 74  .Messages.Strict
210f0 4f 63 74 61 6c 4c 69 74 65 72 61 6c 29 3b 0a 20  OctalLiteral);. 
21100 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
21110 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20    }.  .         
21120 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20     }.  .        
21130 20 20 20 20 65 6c 73 65 20 7b 0a 20 20 09 20 20      else {.  .  
21140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
21150 20 28 21 66 69 72 73 74 52 65 73 74 72 69 63 74   (!firstRestrict
21160 65 64 20 26 26 20 74 6f 6b 65 6e 2e 6f 63 74 61  ed && token.octa
21170 6c 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20  l) {.  .        
21180 20 20 20 20 20 20 20 20 20 20 20 20 66 69 72 73              firs
21190 74 52 65 73 74 72 69 63 74 65 64 20 3d 20 74 6f  tRestricted = to
211a0 6b 65 6e 3b 0a 20 20 09 20 20 20 20 20 20 20 20  ken;.  .        
211b0 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20          }.  .   
211c0 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20           }.  .  
211d0 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20        }.  .     
211e0 20 20 20 72 65 74 75 72 6e 20 62 6f 64 79 3b 0a     return body;.
211f0 20 20 09 20 20 20 20 7d 3b 0a 20 20 09 20 20 20    .    };.  .   
21200 20 2f 2f 20 45 43 4d 41 2d 32 36 32 20 31 34 2e   // ECMA-262 14.
21210 33 20 4d 65 74 68 6f 64 20 44 65 66 69 6e 69 74  3 Method Definit
21220 69 6f 6e 73 0a 20 20 09 20 20 20 20 50 61 72 73  ions.  .    Pars
21230 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 71 75 61  er.prototype.qua
21240 6c 69 66 69 65 64 50 72 6f 70 65 72 74 79 4e 61  lifiedPropertyNa
21250 6d 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 74  me = function (t
21260 6f 6b 65 6e 29 20 7b 0a 20 20 09 20 20 20 20 20  oken) {.  .     
21270 20 20 20 73 77 69 74 63 68 20 28 74 6f 6b 65 6e     switch (token
21280 2e 74 79 70 65 29 20 7b 0a 20 20 09 20 20 20 20  .type) {.  .    
21290 20 20 20 20 20 20 20 20 63 61 73 65 20 74 6f 6b          case tok
212a0 65 6e 5f 31 2e 54 6f 6b 65 6e 2e 49 64 65 6e 74  en_1.Token.Ident
212b0 69 66 69 65 72 3a 0a 20 20 09 20 20 20 20 20 20  ifier:.  .      
212c0 20 20 20 20 20 20 63 61 73 65 20 74 6f 6b 65 6e        case token
212d0 5f 31 2e 54 6f 6b 65 6e 2e 53 74 72 69 6e 67 4c  _1.Token.StringL
212e0 69 74 65 72 61 6c 3a 0a 20 20 09 20 20 20 20 20  iteral:.  .     
212f0 20 20 20 20 20 20 20 63 61 73 65 20 74 6f 6b 65         case toke
21300 6e 5f 31 2e 54 6f 6b 65 6e 2e 42 6f 6f 6c 65 61  n_1.Token.Boolea
21310 6e 4c 69 74 65 72 61 6c 3a 0a 20 20 09 20 20 20  nLiteral:.  .   
21320 20 20 20 20 20 20 20 20 20 63 61 73 65 20 74 6f           case to
21330 6b 65 6e 5f 31 2e 54 6f 6b 65 6e 2e 4e 75 6c 6c  ken_1.Token.Null
21340 4c 69 74 65 72 61 6c 3a 0a 20 20 09 20 20 20 20  Literal:.  .    
21350 20 20 20 20 20 20 20 20 63 61 73 65 20 74 6f 6b          case tok
21360 65 6e 5f 31 2e 54 6f 6b 65 6e 2e 4e 75 6d 65 72  en_1.Token.Numer
21370 69 63 4c 69 74 65 72 61 6c 3a 0a 20 20 09 20 20  icLiteral:.  .  
21380 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 74            case t
21390 6f 6b 65 6e 5f 31 2e 54 6f 6b 65 6e 2e 4b 65 79  oken_1.Token.Key
213a0 77 6f 72 64 3a 0a 20 20 09 20 20 20 20 20 20 20  word:.  .       
213b0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
213c0 74 72 75 65 3b 0a 20 20 09 20 20 20 20 20 20 20  true;.  .       
213d0 20 20 20 20 20 63 61 73 65 20 74 6f 6b 65 6e 5f       case token_
213e0 31 2e 54 6f 6b 65 6e 2e 50 75 6e 63 74 75 61 74  1.Token.Punctuat
213f0 6f 72 3a 0a 20 20 09 20 20 20 20 20 20 20 20 20  or:.  .         
21400 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 6f         return to
21410 6b 65 6e 2e 76 61 6c 75 65 20 3d 3d 3d 20 27 5b  ken.value === '[
21420 27 3b 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a  ';.  .        }.
21430 20 20 09 20 20 20 20 20 20 20 20 72 65 74 75 72    .        retur
21440 6e 20 66 61 6c 73 65 3b 0a 20 20 09 20 20 20 20  n false;.  .    
21450 7d 3b 0a 20 20 09 20 20 20 20 50 61 72 73 65 72  };.  .    Parser
21460 2e 70 72 6f 74 6f 74 79 70 65 2e 70 61 72 73 65  .prototype.parse
21470 47 65 74 74 65 72 4d 65 74 68 6f 64 20 3d 20 66  GetterMethod = f
21480 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20 09  unction () {.  .
21490 20 20 20 20 20 20 20 20 76 61 72 20 6e 6f 64 65          var node
214a0 20 3d 20 74 68 69 73 2e 63 72 65 61 74 65 4e 6f   = this.createNo
214b0 64 65 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20  de();.  .       
214c0 20 74 68 69 73 2e 65 78 70 65 63 74 28 27 28 27   this.expect('('
214d0 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 74 68  );.  .        th
214e0 69 73 2e 65 78 70 65 63 74 28 27 29 27 29 3b 0a  is.expect(')');.
214f0 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20 69    .        var i
21500 73 47 65 6e 65 72 61 74 6f 72 20 3d 20 66 61 6c  sGenerator = fal
21510 73 65 3b 0a 20 20 09 20 20 20 20 20 20 20 20 76  se;.  .        v
21520 61 72 20 70 61 72 61 6d 73 20 3d 20 7b 0a 20 20  ar params = {.  
21530 09 20 20 20 20 20 20 20 20 20 20 20 20 70 61 72  .            par
21540 61 6d 73 3a 20 5b 5d 2c 0a 20 20 09 20 20 20 20  ams: [],.  .    
21550 20 20 20 20 20 20 20 20 73 74 72 69 63 74 65 64          stricted
21560 3a 20 6e 75 6c 6c 2c 0a 20 20 09 20 20 20 20 20  : null,.  .     
21570 20 20 20 20 20 20 20 66 69 72 73 74 52 65 73 74         firstRest
21580 72 69 63 74 65 64 3a 20 6e 75 6c 6c 2c 0a 20 20  ricted: null,.  
21590 09 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 73  .            mes
215a0 73 61 67 65 3a 20 6e 75 6c 6c 0a 20 20 09 20 20  sage: null.  .  
215b0 20 20 20 20 20 20 7d 3b 0a 20 20 09 20 20 20 20        };.  .    
215c0 20 20 20 20 76 61 72 20 70 72 65 76 69 6f 75 73      var previous
215d0 41 6c 6c 6f 77 59 69 65 6c 64 20 3d 20 74 68 69  AllowYield = thi
215e0 73 2e 63 6f 6e 74 65 78 74 2e 61 6c 6c 6f 77 59  s.context.allowY
215f0 69 65 6c 64 3b 0a 20 20 09 20 20 20 20 20 20 20  ield;.  .       
21600 20 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e 61 6c   this.context.al
21610 6c 6f 77 59 69 65 6c 64 20 3d 20 66 61 6c 73 65  lowYield = false
21620 3b 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72  ;.  .        var
21630 20 6d 65 74 68 6f 64 20 3d 20 74 68 69 73 2e 70   method = this.p
21640 61 72 73 65 50 72 6f 70 65 72 74 79 4d 65 74 68  arsePropertyMeth
21650 6f 64 28 70 61 72 61 6d 73 29 3b 0a 20 20 09 20  od(params);.  . 
21660 20 20 20 20 20 20 20 74 68 69 73 2e 63 6f 6e 74         this.cont
21670 65 78 74 2e 61 6c 6c 6f 77 59 69 65 6c 64 20 3d  ext.allowYield =
21680 20 70 72 65 76 69 6f 75 73 41 6c 6c 6f 77 59 69   previousAllowYi
21690 65 6c 64 3b 0a 20 20 09 20 20 20 20 20 20 20 20  eld;.  .        
216a0 72 65 74 75 72 6e 20 74 68 69 73 2e 66 69 6e 61  return this.fina
216b0 6c 69 7a 65 28 6e 6f 64 65 2c 20 6e 65 77 20 4e  lize(node, new N
216c0 6f 64 65 2e 46 75 6e 63 74 69 6f 6e 45 78 70 72  ode.FunctionExpr
216d0 65 73 73 69 6f 6e 28 6e 75 6c 6c 2c 20 70 61 72  ession(null, par
216e0 61 6d 73 2e 70 61 72 61 6d 73 2c 20 6d 65 74 68  ams.params, meth
216f0 6f 64 2c 20 69 73 47 65 6e 65 72 61 74 6f 72 29  od, isGenerator)
21700 29 3b 0a 20 20 09 20 20 20 20 7d 3b 0a 20 20 09  );.  .    };.  .
21710 20 20 20 20 50 61 72 73 65 72 2e 70 72 6f 74 6f      Parser.proto
21720 74 79 70 65 2e 70 61 72 73 65 53 65 74 74 65 72  type.parseSetter
21730 4d 65 74 68 6f 64 20 3d 20 66 75 6e 63 74 69 6f  Method = functio
21740 6e 20 28 29 20 7b 0a 20 20 09 20 20 20 20 20 20  n () {.  .      
21750 20 20 76 61 72 20 6e 6f 64 65 20 3d 20 74 68 69    var node = thi
21760 73 2e 63 72 65 61 74 65 4e 6f 64 65 28 29 3b 0a  s.createNode();.
21770 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20 6f    .        var o
21780 70 74 69 6f 6e 73 20 3d 20 7b 0a 20 20 09 20 20  ptions = {.  .  
21790 20 20 20 20 20 20 20 20 20 20 70 61 72 61 6d 73            params
217a0 3a 20 5b 5d 2c 0a 20 20 09 20 20 20 20 20 20 20  : [],.  .       
217b0 20 20 20 20 20 66 69 72 73 74 52 65 73 74 72 69       firstRestri
217c0 63 74 65 64 3a 20 6e 75 6c 6c 2c 0a 20 20 09 20  cted: null,.  . 
217d0 20 20 20 20 20 20 20 20 20 20 20 70 61 72 61 6d             param
217e0 53 65 74 3a 20 7b 7d 0a 20 20 09 20 20 20 20 20  Set: {}.  .     
217f0 20 20 20 7d 3b 0a 20 20 09 20 20 20 20 20 20 20     };.  .       
21800 20 76 61 72 20 69 73 47 65 6e 65 72 61 74 6f 72   var isGenerator
21810 20 3d 20 66 61 6c 73 65 3b 0a 20 20 09 20 20 20   = false;.  .   
21820 20 20 20 20 20 76 61 72 20 70 72 65 76 69 6f 75       var previou
21830 73 41 6c 6c 6f 77 59 69 65 6c 64 20 3d 20 74 68  sAllowYield = th
21840 69 73 2e 63 6f 6e 74 65 78 74 2e 61 6c 6c 6f 77  is.context.allow
21850 59 69 65 6c 64 3b 0a 20 20 09 20 20 20 20 20 20  Yield;.  .      
21860 20 20 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e 61    this.context.a
21870 6c 6c 6f 77 59 69 65 6c 64 20 3d 20 66 61 6c 73  llowYield = fals
21880 65 3b 0a 20 20 09 20 20 20 20 20 20 20 20 74 68  e;.  .        th
21890 69 73 2e 65 78 70 65 63 74 28 27 28 27 29 3b 0a  is.expect('(');.
218a0 20 20 09 20 20 20 20 20 20 20 20 69 66 20 28 74    .        if (t
218b0 68 69 73 2e 6d 61 74 63 68 28 27 29 27 29 29 20  his.match(')')) 
218c0 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  {.  .           
218d0 20 74 68 69 73 2e 74 6f 6c 65 72 61 74 65 55 6e   this.tolerateUn
218e0 65 78 70 65 63 74 65 64 54 6f 6b 65 6e 28 74 68  expectedToken(th
218f0 69 73 2e 6c 6f 6f 6b 61 68 65 61 64 29 3b 0a 20  is.lookahead);. 
21900 20 09 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20   .        }.  . 
21910 20 20 20 20 20 20 20 65 6c 73 65 20 7b 0a 20 20         else {.  
21920 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
21930 73 2e 70 61 72 73 65 46 6f 72 6d 61 6c 50 61 72  s.parseFormalPar
21940 61 6d 65 74 65 72 28 6f 70 74 69 6f 6e 73 29 3b  ameter(options);
21950 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a 20 20  .  .        }.  
21960 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 65 78  .        this.ex
21970 70 65 63 74 28 27 29 27 29 3b 0a 20 20 09 20 20  pect(')');.  .  
21980 20 20 20 20 20 20 76 61 72 20 6d 65 74 68 6f 64        var method
21990 20 3d 20 74 68 69 73 2e 70 61 72 73 65 50 72 6f   = this.parsePro
219a0 70 65 72 74 79 4d 65 74 68 6f 64 28 6f 70 74 69  pertyMethod(opti
219b0 6f 6e 73 29 3b 0a 20 20 09 20 20 20 20 20 20 20  ons);.  .       
219c0 20 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e 61 6c   this.context.al
219d0 6c 6f 77 59 69 65 6c 64 20 3d 20 70 72 65 76 69  lowYield = previ
219e0 6f 75 73 41 6c 6c 6f 77 59 69 65 6c 64 3b 0a 20  ousAllowYield;. 
219f0 20 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e   .        return
21a00 20 74 68 69 73 2e 66 69 6e 61 6c 69 7a 65 28 6e   this.finalize(n
21a10 6f 64 65 2c 20 6e 65 77 20 4e 6f 64 65 2e 46 75  ode, new Node.Fu
21a20 6e 63 74 69 6f 6e 45 78 70 72 65 73 73 69 6f 6e  nctionExpression
21a30 28 6e 75 6c 6c 2c 20 6f 70 74 69 6f 6e 73 2e 70  (null, options.p
21a40 61 72 61 6d 73 2c 20 6d 65 74 68 6f 64 2c 20 69  arams, method, i
21a50 73 47 65 6e 65 72 61 74 6f 72 29 29 3b 0a 20 20  sGenerator));.  
21a60 09 20 20 20 20 7d 3b 0a 20 20 09 20 20 20 20 50  .    };.  .    P
21a70 61 72 73 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e  arser.prototype.
21a80 70 61 72 73 65 47 65 6e 65 72 61 74 6f 72 4d 65  parseGeneratorMe
21a90 74 68 6f 64 20 3d 20 66 75 6e 63 74 69 6f 6e 20  thod = function 
21aa0 28 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20  () {.  .        
21ab0 76 61 72 20 6e 6f 64 65 20 3d 20 74 68 69 73 2e  var node = this.
21ac0 63 72 65 61 74 65 4e 6f 64 65 28 29 3b 0a 20 20  createNode();.  
21ad0 09 20 20 20 20 20 20 20 20 76 61 72 20 69 73 47  .        var isG
21ae0 65 6e 65 72 61 74 6f 72 20 3d 20 74 72 75 65 3b  enerator = true;
21af0 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20  .  .        var 
21b00 70 72 65 76 69 6f 75 73 41 6c 6c 6f 77 59 69 65  previousAllowYie
21b10 6c 64 20 3d 20 74 68 69 73 2e 63 6f 6e 74 65 78  ld = this.contex
21b20 74 2e 61 6c 6c 6f 77 59 69 65 6c 64 3b 0a 20 20  t.allowYield;.  
21b30 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 6f  .        this.co
21b40 6e 74 65 78 74 2e 61 6c 6c 6f 77 59 69 65 6c 64  ntext.allowYield
21b50 20 3d 20 74 72 75 65 3b 0a 20 20 09 20 20 20 20   = true;.  .    
21b60 20 20 20 20 76 61 72 20 70 61 72 61 6d 73 20 3d      var params =
21b70 20 74 68 69 73 2e 70 61 72 73 65 46 6f 72 6d 61   this.parseForma
21b80 6c 50 61 72 61 6d 65 74 65 72 73 28 29 3b 0a 20  lParameters();. 
21b90 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 63   .        this.c
21ba0 6f 6e 74 65 78 74 2e 61 6c 6c 6f 77 59 69 65 6c  ontext.allowYiel
21bb0 64 20 3d 20 66 61 6c 73 65 3b 0a 20 20 09 20 20  d = false;.  .  
21bc0 20 20 20 20 20 20 76 61 72 20 6d 65 74 68 6f 64        var method
21bd0 20 3d 20 74 68 69 73 2e 70 61 72 73 65 50 72 6f   = this.parsePro
21be0 70 65 72 74 79 4d 65 74 68 6f 64 28 70 61 72 61  pertyMethod(para
21bf0 6d 73 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  ms);.  .        
21c00 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e 61 6c 6c  this.context.all
21c10 6f 77 59 69 65 6c 64 20 3d 20 70 72 65 76 69 6f  owYield = previo
21c20 75 73 41 6c 6c 6f 77 59 69 65 6c 64 3b 0a 20 20  usAllowYield;.  
21c30 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
21c40 74 68 69 73 2e 66 69 6e 61 6c 69 7a 65 28 6e 6f  this.finalize(no
21c50 64 65 2c 20 6e 65 77 20 4e 6f 64 65 2e 46 75 6e  de, new Node.Fun
21c60 63 74 69 6f 6e 45 78 70 72 65 73 73 69 6f 6e 28  ctionExpression(
21c70 6e 75 6c 6c 2c 20 70 61 72 61 6d 73 2e 70 61 72  null, params.par
21c80 61 6d 73 2c 20 6d 65 74 68 6f 64 2c 20 69 73 47  ams, method, isG
21c90 65 6e 65 72 61 74 6f 72 29 29 3b 0a 20 20 09 20  enerator));.  . 
21ca0 20 20 20 7d 3b 0a 20 20 09 20 20 20 20 2f 2f 20     };.  .    // 
21cb0 45 43 4d 41 2d 32 36 32 20 31 34 2e 34 20 47 65  ECMA-262 14.4 Ge
21cc0 6e 65 72 61 74 6f 72 20 46 75 6e 63 74 69 6f 6e  nerator Function
21cd0 20 44 65 66 69 6e 69 74 69 6f 6e 73 0a 20 20 09   Definitions.  .
21ce0 20 20 20 20 50 61 72 73 65 72 2e 70 72 6f 74 6f      Parser.proto
21cf0 74 79 70 65 2e 69 73 53 74 61 72 74 4f 66 45 78  type.isStartOfEx
21d00 70 72 65 73 73 69 6f 6e 20 3d 20 66 75 6e 63 74  pression = funct
21d10 69 6f 6e 20 28 29 20 7b 0a 20 20 09 20 20 20 20  ion () {.  .    
21d20 20 20 20 20 76 61 72 20 73 74 61 72 74 20 3d 20      var start = 
21d30 74 72 75 65 3b 0a 20 20 09 20 20 20 20 20 20 20  true;.  .       
21d40 20 76 61 72 20 76 61 6c 75 65 20 3d 20 74 68 69   var value = thi
21d50 73 2e 6c 6f 6f 6b 61 68 65 61 64 2e 76 61 6c 75  s.lookahead.valu
21d60 65 3b 0a 20 20 09 20 20 20 20 20 20 20 20 73 77  e;.  .        sw
21d70 69 74 63 68 20 28 74 68 69 73 2e 6c 6f 6f 6b 61  itch (this.looka
21d80 68 65 61 64 2e 74 79 70 65 29 20 7b 0a 20 20 09  head.type) {.  .
21d90 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
21da0 20 74 6f 6b 65 6e 5f 31 2e 54 6f 6b 65 6e 2e 50   token_1.Token.P
21db0 75 6e 63 74 75 61 74 6f 72 3a 0a 20 20 09 20 20  unctuator:.  .  
21dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
21dd0 61 72 74 20 3d 20 28 76 61 6c 75 65 20 3d 3d 3d  art = (value ===
21de0 20 27 5b 27 29 20 7c 7c 20 28 76 61 6c 75 65 20   '[') || (value 
21df0 3d 3d 3d 20 27 28 27 29 20 7c 7c 20 28 76 61 6c  === '(') || (val
21e00 75 65 20 3d 3d 3d 20 27 7b 27 29 20 7c 7c 0a 20  ue === '{') ||. 
21e10 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
21e20 20 20 20 20 20 20 28 76 61 6c 75 65 20 3d 3d 3d        (value ===
21e30 20 27 2b 27 29 20 7c 7c 20 28 76 61 6c 75 65 20   '+') || (value 
21e40 3d 3d 3d 20 27 2d 27 29 20 7c 7c 0a 20 20 09 20  === '-') ||.  . 
21e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21e60 20 20 20 28 76 61 6c 75 65 20 3d 3d 3d 20 27 21     (value === '!
21e70 27 29 20 7c 7c 20 28 76 61 6c 75 65 20 3d 3d 3d  ') || (value ===
21e80 20 27 7e 27 29 20 7c 7c 0a 20 20 09 20 20 20 20   '~') ||.  .    
21e90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21ea0 28 76 61 6c 75 65 20 3d 3d 3d 20 27 2b 2b 27 29  (value === '++')
21eb0 20 7c 7c 20 28 76 61 6c 75 65 20 3d 3d 3d 20 27   || (value === '
21ec0 2d 2d 27 29 20 7c 7c 0a 20 20 09 20 20 20 20 20  --') ||.  .     
21ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
21ee0 76 61 6c 75 65 20 3d 3d 3d 20 27 2f 27 29 20 7c  value === '/') |
21ef0 7c 20 28 76 61 6c 75 65 20 3d 3d 3d 20 27 2f 3d  | (value === '/=
21f00 27 29 3b 20 2f 2f 20 72 65 67 75 6c 61 72 20 65  '); // regular e
21f10 78 70 72 65 73 73 69 6f 6e 20 6c 69 74 65 72 61  xpression litera
21f20 6c 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  l.  .           
21f30 20 20 20 20 20 62 72 65 61 6b 3b 0a 20 20 09 20       break;.  . 
21f40 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
21f50 74 6f 6b 65 6e 5f 31 2e 54 6f 6b 65 6e 2e 4b 65  token_1.Token.Ke
21f60 79 77 6f 72 64 3a 0a 20 20 09 20 20 20 20 20 20  yword:.  .      
21f70 20 20 20 20 20 20 20 20 20 20 73 74 61 72 74 20            start 
21f80 3d 20 28 76 61 6c 75 65 20 3d 3d 3d 20 27 63 6c  = (value === 'cl
21f90 61 73 73 27 29 20 7c 7c 20 28 76 61 6c 75 65 20  ass') || (value 
21fa0 3d 3d 3d 20 27 64 65 6c 65 74 65 27 29 20 7c 7c  === 'delete') ||
21fb0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
21fc0 20 20 20 20 20 20 20 20 28 76 61 6c 75 65 20 3d          (value =
21fd0 3d 3d 20 27 66 75 6e 63 74 69 6f 6e 27 29 20 7c  == 'function') |
21fe0 7c 20 28 76 61 6c 75 65 20 3d 3d 3d 20 27 6c 65  | (value === 'le
21ff0 74 27 29 20 7c 7c 20 28 76 61 6c 75 65 20 3d 3d  t') || (value ==
22000 3d 20 27 6e 65 77 27 29 20 7c 7c 0a 20 20 09 20  = 'new') ||.  . 
22010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22020 20 20 20 28 76 61 6c 75 65 20 3d 3d 3d 20 27 73     (value === 's
22030 75 70 65 72 27 29 20 7c 7c 20 28 76 61 6c 75 65  uper') || (value
22040 20 3d 3d 3d 20 27 74 68 69 73 27 29 20 7c 7c 20   === 'this') || 
22050 28 76 61 6c 75 65 20 3d 3d 3d 20 27 74 79 70 65  (value === 'type
22060 6f 66 27 29 20 7c 7c 0a 20 20 09 20 20 20 20 20  of') ||.  .     
22070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
22080 76 61 6c 75 65 20 3d 3d 3d 20 27 76 6f 69 64 27  value === 'void'
22090 29 20 7c 7c 20 28 76 61 6c 75 65 20 3d 3d 3d 20  ) || (value === 
220a0 27 79 69 65 6c 64 27 29 3b 0a 20 20 09 20 20 20  'yield');.  .   
220b0 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65               bre
220c0 61 6b 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ak;.  .         
220d0 20 20 20 64 65 66 61 75 6c 74 3a 0a 20 20 09 20     default:.  . 
220e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
220f0 72 65 61 6b 3b 0a 20 20 09 20 20 20 20 20 20 20  reak;.  .       
22100 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 72 65   }.  .        re
22110 74 75 72 6e 20 73 74 61 72 74 3b 0a 20 20 09 20  turn start;.  . 
22120 20 20 20 7d 3b 0a 20 20 09 20 20 20 20 50 61 72     };.  .    Par
22130 73 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 70 61  ser.prototype.pa
22140 72 73 65 59 69 65 6c 64 45 78 70 72 65 73 73 69  rseYieldExpressi
22150 6f 6e 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29  on = function ()
22160 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 76 61   {.  .        va
22170 72 20 6e 6f 64 65 20 3d 20 74 68 69 73 2e 63 72  r node = this.cr
22180 65 61 74 65 4e 6f 64 65 28 29 3b 0a 20 20 09 20  eateNode();.  . 
22190 20 20 20 20 20 20 20 74 68 69 73 2e 65 78 70 65         this.expe
221a0 63 74 4b 65 79 77 6f 72 64 28 27 79 69 65 6c 64  ctKeyword('yield
221b0 27 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 76  ');.  .        v
221c0 61 72 20 61 72 67 75 6d 65 6e 74 20 3d 20 6e 75  ar argument = nu
221d0 6c 6c 3b 0a 20 20 09 20 20 20 20 20 20 20 20 76  ll;.  .        v
221e0 61 72 20 64 65 6c 65 67 61 74 65 20 3d 20 66 61  ar delegate = fa
221f0 6c 73 65 3b 0a 20 20 09 20 20 20 20 20 20 20 20  lse;.  .        
22200 69 66 20 28 21 74 68 69 73 2e 68 61 73 4c 69 6e  if (!this.hasLin
22210 65 54 65 72 6d 69 6e 61 74 6f 72 29 20 7b 0a 20  eTerminator) {. 
22220 20 09 20 20 20 20 20 20 20 20 20 20 20 20 76 61   .            va
22230 72 20 70 72 65 76 69 6f 75 73 41 6c 6c 6f 77 59  r previousAllowY
22240 69 65 6c 64 20 3d 20 74 68 69 73 2e 63 6f 6e 74  ield = this.cont
22250 65 78 74 2e 61 6c 6c 6f 77 59 69 65 6c 64 3b 0a  ext.allowYield;.
22260 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 74    .            t
22270 68 69 73 2e 63 6f 6e 74 65 78 74 2e 61 6c 6c 6f  his.context.allo
22280 77 59 69 65 6c 64 20 3d 20 66 61 6c 73 65 3b 0a  wYield = false;.
22290 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 64    .            d
222a0 65 6c 65 67 61 74 65 20 3d 20 74 68 69 73 2e 6d  elegate = this.m
222b0 61 74 63 68 28 27 2a 27 29 3b 0a 20 20 09 20 20  atch('*');.  .  
222c0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64 65            if (de
222d0 6c 65 67 61 74 65 29 20 7b 0a 20 20 09 20 20 20  legate) {.  .   
222e0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
222f0 73 2e 6e 65 78 74 54 6f 6b 65 6e 28 29 3b 0a 20  s.nextToken();. 
22300 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
22310 20 20 61 72 67 75 6d 65 6e 74 20 3d 20 74 68 69    argument = thi
22320 73 2e 70 61 72 73 65 41 73 73 69 67 6e 6d 65 6e  s.parseAssignmen
22330 74 45 78 70 72 65 73 73 69 6f 6e 28 29 3b 0a 20  tExpression();. 
22340 20 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a   .            }.
22350 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 65    .            e
22360 6c 73 65 20 69 66 20 28 74 68 69 73 2e 69 73 53  lse if (this.isS
22370 74 61 72 74 4f 66 45 78 70 72 65 73 73 69 6f 6e  tartOfExpression
22380 28 29 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20  ()) {.  .       
22390 20 20 20 20 20 20 20 20 20 61 72 67 75 6d 65 6e           argumen
223a0 74 20 3d 20 74 68 69 73 2e 70 61 72 73 65 41 73  t = this.parseAs
223b0 73 69 67 6e 6d 65 6e 74 45 78 70 72 65 73 73 69  signmentExpressi
223c0 6f 6e 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20  on();.  .       
223d0 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20       }.  .      
223e0 20 20 20 20 20 20 74 68 69 73 2e 63 6f 6e 74 65        this.conte
223f0 78 74 2e 61 6c 6c 6f 77 59 69 65 6c 64 20 3d 20  xt.allowYield = 
22400 70 72 65 76 69 6f 75 73 41 6c 6c 6f 77 59 69 65  previousAllowYie
22410 6c 64 3b 0a 20 20 09 20 20 20 20 20 20 20 20 7d  ld;.  .        }
22420 0a 20 20 09 20 20 20 20 20 20 20 20 72 65 74 75  .  .        retu
22430 72 6e 20 74 68 69 73 2e 66 69 6e 61 6c 69 7a 65  rn this.finalize
22440 28 6e 6f 64 65 2c 20 6e 65 77 20 4e 6f 64 65 2e  (node, new Node.
22450 59 69 65 6c 64 45 78 70 72 65 73 73 69 6f 6e 28  YieldExpression(
22460 61 72 67 75 6d 65 6e 74 2c 20 64 65 6c 65 67 61  argument, delega
22470 74 65 29 29 3b 0a 20 20 09 20 20 20 20 7d 3b 0a  te));.  .    };.
22480 20 20 09 20 20 20 20 2f 2f 20 45 43 4d 41 2d 32    .    // ECMA-2
22490 36 32 20 31 34 2e 35 20 43 6c 61 73 73 20 44 65  62 14.5 Class De
224a0 66 69 6e 69 74 69 6f 6e 73 0a 20 20 09 20 20 20  finitions.  .   
224b0 20 50 61 72 73 65 72 2e 70 72 6f 74 6f 74 79 70   Parser.prototyp
224c0 65 2e 70 61 72 73 65 43 6c 61 73 73 45 6c 65 6d  e.parseClassElem
224d0 65 6e 74 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28  ent = function (
224e0 68 61 73 43 6f 6e 73 74 72 75 63 74 6f 72 29 20  hasConstructor) 
224f0 7b 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72  {.  .        var
22500 20 74 6f 6b 65 6e 20 3d 20 74 68 69 73 2e 6c 6f   token = this.lo
22510 6f 6b 61 68 65 61 64 3b 0a 20 20 09 20 20 20 20  okahead;.  .    
22520 20 20 20 20 76 61 72 20 6e 6f 64 65 20 3d 20 74      var node = t
22530 68 69 73 2e 63 72 65 61 74 65 4e 6f 64 65 28 29  his.createNode()
22540 3b 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72  ;.  .        var
22550 20 6b 69 6e 64 3b 0a 20 20 09 20 20 20 20 20 20   kind;.  .      
22560 20 20 76 61 72 20 6b 65 79 3b 0a 20 20 09 20 20    var key;.  .  
22570 20 20 20 20 20 20 76 61 72 20 76 61 6c 75 65 3b        var value;
22580 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20  .  .        var 
22590 63 6f 6d 70 75 74 65 64 20 3d 20 66 61 6c 73 65  computed = false
225a0 3b 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72  ;.  .        var
225b0 20 6d 65 74 68 6f 64 20 3d 20 66 61 6c 73 65 3b   method = false;
225c0 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20  .  .        var 
225d0 69 73 53 74 61 74 69 63 20 3d 20 66 61 6c 73 65  isStatic = false
225e0 3b 0a 20 20 09 20 20 20 20 20 20 20 20 69 66 20  ;.  .        if 
225f0 28 74 68 69 73 2e 6d 61 74 63 68 28 27 2a 27 29  (this.match('*')
22600 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ) {.  .         
22610 20 20 20 74 68 69 73 2e 6e 65 78 74 54 6f 6b 65     this.nextToke
22620 6e 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  n();.  .        
22630 7d 0a 20 20 09 20 20 20 20 20 20 20 20 65 6c 73  }.  .        els
22640 65 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20  e {.  .         
22650 20 20 20 63 6f 6d 70 75 74 65 64 20 3d 20 74 68     computed = th
22660 69 73 2e 6d 61 74 63 68 28 27 5b 27 29 3b 0a 20  is.match('[');. 
22670 20 09 20 20 20 20 20 20 20 20 20 20 20 20 6b 65   .            ke
22680 79 20 3d 20 74 68 69 73 2e 70 61 72 73 65 4f 62  y = this.parseOb
22690 6a 65 63 74 50 72 6f 70 65 72 74 79 4b 65 79 28  jectPropertyKey(
226a0 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  );.  .          
226b0 20 20 76 61 72 20 69 64 20 3d 20 6b 65 79 3b 0a    var id = key;.
226c0 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 69    .            i
226d0 66 20 28 69 64 2e 6e 61 6d 65 20 3d 3d 3d 20 27  f (id.name === '
226e0 73 74 61 74 69 63 27 20 26 26 20 28 74 68 69 73  static' && (this
226f0 2e 71 75 61 6c 69 66 69 65 64 50 72 6f 70 65 72  .qualifiedProper
22700 74 79 4e 61 6d 65 28 74 68 69 73 2e 6c 6f 6f 6b  tyName(this.look
22710 61 68 65 61 64 29 20 7c 7c 20 74 68 69 73 2e 6d  ahead) || this.m
22720 61 74 63 68 28 27 2a 27 29 29 29 20 7b 0a 20 20  atch('*'))) {.  
22730 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
22740 20 74 6f 6b 65 6e 20 3d 20 74 68 69 73 2e 6c 6f   token = this.lo
22750 6f 6b 61 68 65 61 64 3b 0a 20 20 09 20 20 20 20  okahead;.  .    
22760 20 20 20 20 20 20 20 20 20 20 20 20 69 73 53 74              isSt
22770 61 74 69 63 20 3d 20 74 72 75 65 3b 0a 20 20 09  atic = true;.  .
22780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22790 63 6f 6d 70 75 74 65 64 20 3d 20 74 68 69 73 2e  computed = this.
227a0 6d 61 74 63 68 28 27 5b 27 29 3b 0a 20 20 09 20  match('[');.  . 
227b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
227c0 66 20 28 74 68 69 73 2e 6d 61 74 63 68 28 27 2a  f (this.match('*
227d0 27 29 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20  ')) {.  .       
227e0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
227f0 73 2e 6e 65 78 74 54 6f 6b 65 6e 28 29 3b 0a 20  s.nextToken();. 
22800 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
22810 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20    }.  .         
22820 20 20 20 20 20 20 20 65 6c 73 65 20 7b 0a 20 20         else {.  
22830 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
22840 20 20 20 20 20 6b 65 79 20 3d 20 74 68 69 73 2e       key = this.
22850 70 61 72 73 65 4f 62 6a 65 63 74 50 72 6f 70 65  parseObjectPrope
22860 72 74 79 4b 65 79 28 29 3b 0a 20 20 09 20 20 20  rtyKey();.  .   
22870 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20               }. 
22880 20 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a   .            }.
22890 20 20 09 20 20 20 20 20 20 20 20 7d 0a 20 20 09    .        }.  .
228a0 20 20 20 20 20 20 20 20 76 61 72 20 6c 6f 6f 6b          var look
228b0 61 68 65 61 64 50 72 6f 70 65 72 74 79 4b 65 79  aheadPropertyKey
228c0 20 3d 20 74 68 69 73 2e 71 75 61 6c 69 66 69 65   = this.qualifie
228d0 64 50 72 6f 70 65 72 74 79 4e 61 6d 65 28 74 68  dPropertyName(th
228e0 69 73 2e 6c 6f 6f 6b 61 68 65 61 64 29 3b 0a 20  is.lookahead);. 
228f0 20 09 20 20 20 20 20 20 20 20 69 66 20 28 74 6f   .        if (to
22900 6b 65 6e 2e 74 79 70 65 20 3d 3d 3d 20 74 6f 6b  ken.type === tok
22910 65 6e 5f 31 2e 54 6f 6b 65 6e 2e 49 64 65 6e 74  en_1.Token.Ident
22920 69 66 69 65 72 29 20 7b 0a 20 20 09 20 20 20 20  ifier) {.  .    
22930 20 20 20 20 20 20 20 20 69 66 20 28 74 6f 6b 65          if (toke
22940 6e 2e 76 61 6c 75 65 20 3d 3d 3d 20 27 67 65 74  n.value === 'get
22950 27 20 26 26 20 6c 6f 6f 6b 61 68 65 61 64 50 72  ' && lookaheadPr
22960 6f 70 65 72 74 79 4b 65 79 29 20 7b 0a 20 20 09  opertyKey) {.  .
22970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22980 6b 69 6e 64 20 3d 20 27 67 65 74 27 3b 0a 20 20  kind = 'get';.  
22990 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
229a0 20 63 6f 6d 70 75 74 65 64 20 3d 20 74 68 69 73   computed = this
229b0 2e 6d 61 74 63 68 28 27 5b 27 29 3b 0a 20 20 09  .match('[');.  .
229c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
229d0 6b 65 79 20 3d 20 74 68 69 73 2e 70 61 72 73 65  key = this.parse
229e0 4f 62 6a 65 63 74 50 72 6f 70 65 72 74 79 4b 65  ObjectPropertyKe
229f0 79 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  y();.  .        
22a00 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 6f 6e          this.con
22a10 74 65 78 74 2e 61 6c 6c 6f 77 59 69 65 6c 64 20  text.allowYield 
22a20 3d 20 66 61 6c 73 65 3b 0a 20 20 09 20 20 20 20  = false;.  .    
22a30 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75              valu
22a40 65 20 3d 20 74 68 69 73 2e 70 61 72 73 65 47 65  e = this.parseGe
22a50 74 74 65 72 4d 65 74 68 6f 64 28 29 3b 0a 20 20  tterMethod();.  
22a60 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20  .            }. 
22a70 20 09 20 20 20 20 20 20 20 20 20 20 20 20 65 6c   .            el
22a80 73 65 20 69 66 20 28 74 6f 6b 65 6e 2e 76 61 6c  se if (token.val
22a90 75 65 20 3d 3d 3d 20 27 73 65 74 27 20 26 26 20  ue === 'set' && 
22aa0 6c 6f 6f 6b 61 68 65 61 64 50 72 6f 70 65 72 74  lookaheadPropert
22ab0 79 4b 65 79 29 20 7b 0a 20 20 09 20 20 20 20 20  yKey) {.  .     
22ac0 20 20 20 20 20 20 20 20 20 20 20 6b 69 6e 64 20             kind 
22ad0 3d 20 27 73 65 74 27 3b 0a 20 20 09 20 20 20 20  = 'set';.  .    
22ae0 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6d 70              comp
22af0 75 74 65 64 20 3d 20 74 68 69 73 2e 6d 61 74 63  uted = this.matc
22b00 68 28 27 5b 27 29 3b 0a 20 20 09 20 20 20 20 20  h('[');.  .     
22b10 20 20 20 20 20 20 20 20 20 20 20 6b 65 79 20 3d             key =
22b20 20 74 68 69 73 2e 70 61 72 73 65 4f 62 6a 65 63   this.parseObjec
22b30 74 50 72 6f 70 65 72 74 79 4b 65 79 28 29 3b 0a  tPropertyKey();.
22b40 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
22b50 20 20 20 76 61 6c 75 65 20 3d 20 74 68 69 73 2e     value = this.
22b60 70 61 72 73 65 53 65 74 74 65 72 4d 65 74 68 6f  parseSetterMetho
22b70 64 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  d();.  .        
22b80 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20      }.  .       
22b90 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 65 6c   }.  .        el
22ba0 73 65 20 69 66 20 28 74 6f 6b 65 6e 2e 74 79 70  se if (token.typ
22bb0 65 20 3d 3d 3d 20 74 6f 6b 65 6e 5f 31 2e 54 6f  e === token_1.To
22bc0 6b 65 6e 2e 50 75 6e 63 74 75 61 74 6f 72 20 26  ken.Punctuator &
22bd0 26 20 74 6f 6b 65 6e 2e 76 61 6c 75 65 20 3d 3d  & token.value ==
22be0 3d 20 27 2a 27 20 26 26 20 6c 6f 6f 6b 61 68 65  = '*' && lookahe
22bf0 61 64 50 72 6f 70 65 72 74 79 4b 65 79 29 20 7b  adPropertyKey) {
22c00 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
22c10 6b 69 6e 64 20 3d 20 27 69 6e 69 74 27 3b 0a 20  kind = 'init';. 
22c20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 63 6f   .            co
22c30 6d 70 75 74 65 64 20 3d 20 74 68 69 73 2e 6d 61  mputed = this.ma
22c40 74 63 68 28 27 5b 27 29 3b 0a 20 20 09 20 20 20  tch('[');.  .   
22c50 20 20 20 20 20 20 20 20 20 6b 65 79 20 3d 20 74           key = t
22c60 68 69 73 2e 70 61 72 73 65 4f 62 6a 65 63 74 50  his.parseObjectP
22c70 72 6f 70 65 72 74 79 4b 65 79 28 29 3b 0a 20 20  ropertyKey();.  
22c80 09 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c  .            val
22c90 75 65 20 3d 20 74 68 69 73 2e 70 61 72 73 65 47  ue = this.parseG
22ca0 65 6e 65 72 61 74 6f 72 4d 65 74 68 6f 64 28 29  eneratorMethod()
22cb0 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
22cc0 20 6d 65 74 68 6f 64 20 3d 20 74 72 75 65 3b 0a   method = true;.
22cd0 20 20 09 20 20 20 20 20 20 20 20 7d 0a 20 20 09    .        }.  .
22ce0 20 20 20 20 20 20 20 20 69 66 20 28 21 6b 69 6e          if (!kin
22cf0 64 20 26 26 20 6b 65 79 20 26 26 20 74 68 69 73  d && key && this
22d00 2e 6d 61 74 63 68 28 27 28 27 29 29 20 7b 0a 20  .match('(')) {. 
22d10 20 09 20 20 20 20 20 20 20 20 20 20 20 20 6b 69   .            ki
22d20 6e 64 20 3d 20 27 69 6e 69 74 27 3b 0a 20 20 09  nd = 'init';.  .
22d30 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75              valu
22d40 65 20 3d 20 74 68 69 73 2e 70 61 72 73 65 50 72  e = this.parsePr
22d50 6f 70 65 72 74 79 4d 65 74 68 6f 64 46 75 6e 63  opertyMethodFunc
22d60 74 69 6f 6e 28 29 3b 0a 20 20 09 20 20 20 20 20  tion();.  .     
22d70 20 20 20 20 20 20 20 6d 65 74 68 6f 64 20 3d 20         method = 
22d80 74 72 75 65 3b 0a 20 20 09 20 20 20 20 20 20 20  true;.  .       
22d90 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 69 66   }.  .        if
22da0 20 28 21 6b 69 6e 64 29 20 7b 0a 20 20 09 20 20   (!kind) {.  .  
22db0 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 74            this.t
22dc0 68 72 6f 77 55 6e 65 78 70 65 63 74 65 64 54 6f  hrowUnexpectedTo
22dd0 6b 65 6e 28 74 68 69 73 2e 6c 6f 6f 6b 61 68 65  ken(this.lookahe
22de0 61 64 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  ad);.  .        
22df0 7d 0a 20 20 09 20 20 20 20 20 20 20 20 69 66 20  }.  .        if 
22e00 28 6b 69 6e 64 20 3d 3d 3d 20 27 69 6e 69 74 27  (kind === 'init'
22e10 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ) {.  .         
22e20 20 20 20 6b 69 6e 64 20 3d 20 27 6d 65 74 68 6f     kind = 'metho
22e30 64 27 3b 0a 20 20 09 20 20 20 20 20 20 20 20 7d  d';.  .        }
22e40 0a 20 20 09 20 20 20 20 20 20 20 20 69 66 20 28  .  .        if (
22e50 21 63 6f 6d 70 75 74 65 64 29 20 7b 0a 20 20 09  !computed) {.  .
22e60 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
22e70 69 73 53 74 61 74 69 63 20 26 26 20 74 68 69 73  isStatic && this
22e80 2e 69 73 50 72 6f 70 65 72 74 79 4b 65 79 28 6b  .isPropertyKey(k
22e90 65 79 2c 20 27 70 72 6f 74 6f 74 79 70 65 27 29  ey, 'prototype')
22ea0 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ) {.  .         
22eb0 20 20 20 20 20 20 20 74 68 69 73 2e 74 68 72 6f         this.thro
22ec0 77 55 6e 65 78 70 65 63 74 65 64 54 6f 6b 65 6e  wUnexpectedToken
22ed0 28 74 6f 6b 65 6e 2c 20 6d 65 73 73 61 67 65 73  (token, messages
22ee0 5f 31 2e 4d 65 73 73 61 67 65 73 2e 53 74 61 74  _1.Messages.Stat
22ef0 69 63 50 72 6f 74 6f 74 79 70 65 29 3b 0a 20 20  icPrototype);.  
22f00 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20  .            }. 
22f10 20 09 20 20 20 20 20 20 20 20 20 20 20 20 69 66   .            if
22f20 20 28 21 69 73 53 74 61 74 69 63 20 26 26 20 74   (!isStatic && t
22f30 68 69 73 2e 69 73 50 72 6f 70 65 72 74 79 4b 65  his.isPropertyKe
22f40 79 28 6b 65 79 2c 20 27 63 6f 6e 73 74 72 75 63  y(key, 'construc
22f50 74 6f 72 27 29 29 20 7b 0a 20 20 09 20 20 20 20  tor')) {.  .    
22f60 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
22f70 6b 69 6e 64 20 21 3d 3d 20 27 6d 65 74 68 6f 64  kind !== 'method
22f80 27 20 7c 7c 20 21 6d 65 74 68 6f 64 20 7c 7c 20  ' || !method || 
22f90 76 61 6c 75 65 2e 67 65 6e 65 72 61 74 6f 72 29  value.generator)
22fa0 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   {.  .          
22fb0 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 74            this.t
22fc0 68 72 6f 77 55 6e 65 78 70 65 63 74 65 64 54 6f  hrowUnexpectedTo
22fd0 6b 65 6e 28 74 6f 6b 65 6e 2c 20 6d 65 73 73 61  ken(token, messa
22fe0 67 65 73 5f 31 2e 4d 65 73 73 61 67 65 73 2e 43  ges_1.Messages.C
22ff0 6f 6e 73 74 72 75 63 74 6f 72 53 70 65 63 69 61  onstructorSpecia
23000 6c 4d 65 74 68 6f 64 29 3b 0a 20 20 09 20 20 20  lMethod);.  .   
23010 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20               }. 
23020 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
23030 20 20 69 66 20 28 68 61 73 43 6f 6e 73 74 72 75    if (hasConstru
23040 63 74 6f 72 2e 76 61 6c 75 65 29 20 7b 0a 20 20  ctor.value) {.  
23050 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
23060 20 20 20 20 20 74 68 69 73 2e 74 68 72 6f 77 55       this.throwU
23070 6e 65 78 70 65 63 74 65 64 54 6f 6b 65 6e 28 74  nexpectedToken(t
23080 6f 6b 65 6e 2c 20 6d 65 73 73 61 67 65 73 5f 31  oken, messages_1
23090 2e 4d 65 73 73 61 67 65 73 2e 44 75 70 6c 69 63  .Messages.Duplic
230a0 61 74 65 43 6f 6e 73 74 72 75 63 74 6f 72 29 3b  ateConstructor);
230b0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
230c0 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20      }.  .       
230d0 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 7b 0a           else {.
230e0 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
230f0 20 20 20 20 20 20 20 68 61 73 43 6f 6e 73 74 72         hasConstr
23100 75 63 74 6f 72 2e 76 61 6c 75 65 20 3d 20 74 72  uctor.value = tr
23110 75 65 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ue;.  .         
23120 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20         }.  .    
23130 20 20 20 20 20 20 20 20 20 20 20 20 6b 69 6e 64              kind
23140 20 3d 20 27 63 6f 6e 73 74 72 75 63 74 6f 72 27   = 'constructor'
23150 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
23160 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a   }.  .        }.
23170 20 20 09 20 20 20 20 20 20 20 20 72 65 74 75 72    .        retur
23180 6e 20 74 68 69 73 2e 66 69 6e 61 6c 69 7a 65 28  n this.finalize(
23190 6e 6f 64 65 2c 20 6e 65 77 20 4e 6f 64 65 2e 4d  node, new Node.M
231a0 65 74 68 6f 64 44 65 66 69 6e 69 74 69 6f 6e 28  ethodDefinition(
231b0 6b 65 79 2c 20 63 6f 6d 70 75 74 65 64 2c 20 76  key, computed, v
231c0 61 6c 75 65 2c 20 6b 69 6e 64 2c 20 69 73 53 74  alue, kind, isSt
231d0 61 74 69 63 29 29 3b 0a 20 20 09 20 20 20 20 7d  atic));.  .    }
231e0 3b 0a 20 20 09 20 20 20 20 50 61 72 73 65 72 2e  ;.  .    Parser.
231f0 70 72 6f 74 6f 74 79 70 65 2e 70 61 72 73 65 43  prototype.parseC
23200 6c 61 73 73 45 6c 65 6d 65 6e 74 4c 69 73 74 20  lassElementList 
23210 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a  = function () {.
23220 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20 74    .        var t
23230 68 69 73 24 31 20 3d 20 74 68 69 73 3b 0a 0a 20  his$1 = this;.. 
23240 20 09 20 20 20 20 20 20 20 20 76 61 72 20 62 6f   .        var bo
23250 64 79 20 3d 20 5b 5d 3b 0a 20 20 09 20 20 20 20  dy = [];.  .    
23260 20 20 20 20 76 61 72 20 68 61 73 43 6f 6e 73 74      var hasConst
23270 72 75 63 74 6f 72 20 3d 20 7b 20 76 61 6c 75 65  ructor = { value
23280 3a 20 66 61 6c 73 65 20 7d 3b 0a 20 20 09 20 20  : false };.  .  
23290 20 20 20 20 20 20 74 68 69 73 2e 65 78 70 65 63        this.expec
232a0 74 28 27 7b 27 29 3b 0a 20 20 09 20 20 20 20 20  t('{');.  .     
232b0 20 20 20 77 68 69 6c 65 20 28 21 74 68 69 73 2e     while (!this.
232c0 6d 61 74 63 68 28 27 7d 27 29 29 20 7b 0a 20 20  match('}')) {.  
232d0 09 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
232e0 28 74 68 69 73 24 31 2e 6d 61 74 63 68 28 27 3b  (this$1.match(';
232f0 27 29 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20  ')) {.  .       
23300 20 20 20 20 20 20 20 20 20 74 68 69 73 24 31 2e           this$1.
23310 6e 65 78 74 54 6f 6b 65 6e 28 29 3b 0a 20 20 09  nextToken();.  .
23320 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20              }.  
23330 09 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73  .            els
23340 65 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20  e {.  .         
23350 20 20 20 20 20 20 20 62 6f 64 79 2e 70 75 73 68         body.push
23360 28 74 68 69 73 24 31 2e 70 61 72 73 65 43 6c 61  (this$1.parseCla
23370 73 73 45 6c 65 6d 65 6e 74 28 68 61 73 43 6f 6e  ssElement(hasCon
23380 73 74 72 75 63 74 6f 72 29 29 3b 0a 20 20 09 20  structor));.  . 
23390 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09             }.  .
233a0 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20          }.  .   
233b0 20 20 20 20 20 74 68 69 73 2e 65 78 70 65 63 74       this.expect
233c0 28 27 7d 27 29 3b 0a 20 20 09 20 20 20 20 20 20  ('}');.  .      
233d0 20 20 72 65 74 75 72 6e 20 62 6f 64 79 3b 0a 20    return body;. 
233e0 20 09 20 20 20 20 7d 3b 0a 20 20 09 20 20 20 20   .    };.  .    
233f0 50 61 72 73 65 72 2e 70 72 6f 74 6f 74 79 70 65  Parser.prototype
23400 2e 70 61 72 73 65 43 6c 61 73 73 42 6f 64 79 20  .parseClassBody 
23410 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a  = function () {.
23420 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20 6e    .        var n
23430 6f 64 65 20 3d 20 74 68 69 73 2e 63 72 65 61 74  ode = this.creat
23440 65 4e 6f 64 65 28 29 3b 0a 20 20 09 20 20 20 20  eNode();.  .    
23450 20 20 20 20 76 61 72 20 65 6c 65 6d 65 6e 74 4c      var elementL
23460 69 73 74 20 3d 20 74 68 69 73 2e 70 61 72 73 65  ist = this.parse
23470 43 6c 61 73 73 45 6c 65 6d 65 6e 74 4c 69 73 74  ClassElementList
23480 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 72  ();.  .        r
23490 65 74 75 72 6e 20 74 68 69 73 2e 66 69 6e 61 6c  eturn this.final
234a0 69 7a 65 28 6e 6f 64 65 2c 20 6e 65 77 20 4e 6f  ize(node, new No
234b0 64 65 2e 43 6c 61 73 73 42 6f 64 79 28 65 6c 65  de.ClassBody(ele
234c0 6d 65 6e 74 4c 69 73 74 29 29 3b 0a 20 20 09 20  mentList));.  . 
234d0 20 20 20 7d 3b 0a 20 20 09 20 20 20 20 50 61 72     };.  .    Par
234e0 73 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 70 61  ser.prototype.pa
234f0 72 73 65 43 6c 61 73 73 44 65 63 6c 61 72 61 74  rseClassDeclarat
23500 69 6f 6e 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28  ion = function (
23510 69 64 65 6e 74 69 66 69 65 72 49 73 4f 70 74 69  identifierIsOpti
23520 6f 6e 61 6c 29 20 7b 0a 20 20 09 20 20 20 20 20  onal) {.  .     
23530 20 20 20 76 61 72 20 6e 6f 64 65 20 3d 20 74 68     var node = th
23540 69 73 2e 63 72 65 61 74 65 4e 6f 64 65 28 29 3b  is.createNode();
23550 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20  .  .        var 
23560 70 72 65 76 69 6f 75 73 53 74 72 69 63 74 20 3d  previousStrict =
23570 20 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e 73 74   this.context.st
23580 72 69 63 74 3b 0a 20 20 09 20 20 20 20 20 20 20  rict;.  .       
23590 20 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e 73 74   this.context.st
235a0 72 69 63 74 20 3d 20 74 72 75 65 3b 0a 20 20 09  rict = true;.  .
235b0 20 20 20 20 20 20 20 20 74 68 69 73 2e 65 78 70          this.exp
235c0 65 63 74 4b 65 79 77 6f 72 64 28 27 63 6c 61 73  ectKeyword('clas
235d0 73 27 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  s');.  .        
235e0 76 61 72 20 69 64 20 3d 20 28 69 64 65 6e 74 69  var id = (identi
235f0 66 69 65 72 49 73 4f 70 74 69 6f 6e 61 6c 20 26  fierIsOptional &
23600 26 20 28 74 68 69 73 2e 6c 6f 6f 6b 61 68 65 61  & (this.lookahea
23610 64 2e 74 79 70 65 20 21 3d 3d 20 74 6f 6b 65 6e  d.type !== token
23620 5f 31 2e 54 6f 6b 65 6e 2e 49 64 65 6e 74 69 66  _1.Token.Identif
23630 69 65 72 29 29 20 3f 20 6e 75 6c 6c 20 3a 20 74  ier)) ? null : t
23640 68 69 73 2e 70 61 72 73 65 56 61 72 69 61 62 6c  his.parseVariabl
23650 65 49 64 65 6e 74 69 66 69 65 72 28 29 3b 0a 20  eIdentifier();. 
23660 20 09 20 20 20 20 20 20 20 20 76 61 72 20 73 75   .        var su
23670 70 65 72 43 6c 61 73 73 20 3d 20 6e 75 6c 6c 3b  perClass = null;
23680 0a 20 20 09 20 20 20 20 20 20 20 20 69 66 20 28  .  .        if (
23690 74 68 69 73 2e 6d 61 74 63 68 4b 65 79 77 6f 72  this.matchKeywor
236a0 64 28 27 65 78 74 65 6e 64 73 27 29 29 20 7b 0a  d('extends')) {.
236b0 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 74    .            t
236c0 68 69 73 2e 6e 65 78 74 54 6f 6b 65 6e 28 29 3b  his.nextToken();
236d0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
236e0 73 75 70 65 72 43 6c 61 73 73 20 3d 20 74 68 69  superClass = thi
236f0 73 2e 69 73 6f 6c 61 74 65 43 6f 76 65 72 47 72  s.isolateCoverGr
23700 61 6d 6d 61 72 28 74 68 69 73 2e 70 61 72 73 65  ammar(this.parse
23710 4c 65 66 74 48 61 6e 64 53 69 64 65 45 78 70 72  LeftHandSideExpr
23720 65 73 73 69 6f 6e 41 6c 6c 6f 77 43 61 6c 6c 29  essionAllowCall)
23730 3b 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a 20  ;.  .        }. 
23740 20 09 20 20 20 20 20 20 20 20 76 61 72 20 63 6c   .        var cl
23750 61 73 73 42 6f 64 79 20 3d 20 74 68 69 73 2e 70  assBody = this.p
23760 61 72 73 65 43 6c 61 73 73 42 6f 64 79 28 29 3b  arseClassBody();
23770 0a 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73  .  .        this
23780 2e 63 6f 6e 74 65 78 74 2e 73 74 72 69 63 74 20  .context.strict 
23790 3d 20 70 72 65 76 69 6f 75 73 53 74 72 69 63 74  = previousStrict
237a0 3b 0a 20 20 09 20 20 20 20 20 20 20 20 72 65 74  ;.  .        ret
237b0 75 72 6e 20 74 68 69 73 2e 66 69 6e 61 6c 69 7a  urn this.finaliz
237c0 65 28 6e 6f 64 65 2c 20 6e 65 77 20 4e 6f 64 65  e(node, new Node
237d0 2e 43 6c 61 73 73 44 65 63 6c 61 72 61 74 69 6f  .ClassDeclaratio
237e0 6e 28 69 64 2c 20 73 75 70 65 72 43 6c 61 73 73  n(id, superClass
237f0 2c 20 63 6c 61 73 73 42 6f 64 79 29 29 3b 0a 20  , classBody));. 
23800 20 09 20 20 20 20 7d 3b 0a 20 20 09 20 20 20 20   .    };.  .    
23810 50 61 72 73 65 72 2e 70 72 6f 74 6f 74 79 70 65  Parser.prototype
23820 2e 70 61 72 73 65 43 6c 61 73 73 45 78 70 72 65  .parseClassExpre
23830 73 73 69 6f 6e 20 3d 20 66 75 6e 63 74 69 6f 6e  ssion = function
23840 20 28 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20   () {.  .       
23850 20 76 61 72 20 6e 6f 64 65 20 3d 20 74 68 69 73   var node = this
23860 2e 63 72 65 61 74 65 4e 6f 64 65 28 29 3b 0a 20  .createNode();. 
23870 20 09 20 20 20 20 20 20 20 20 76 61 72 20 70 72   .        var pr
23880 65 76 69 6f 75 73 53 74 72 69 63 74 20 3d 20 74  eviousStrict = t
23890 68 69 73 2e 63 6f 6e 74 65 78 74 2e 73 74 72 69  his.context.stri
238a0 63 74 3b 0a 20 20 09 20 20 20 20 20 20 20 20 74  ct;.  .        t
238b0 68 69 73 2e 63 6f 6e 74 65 78 74 2e 73 74 72 69  his.context.stri
238c0 63 74 20 3d 20 74 72 75 65 3b 0a 20 20 09 20 20  ct = true;.  .  
238d0 20 20 20 20 20 20 74 68 69 73 2e 65 78 70 65 63        this.expec
238e0 74 4b 65 79 77 6f 72 64 28 27 63 6c 61 73 73 27  tKeyword('class'
238f0 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 76 61  );.  .        va
23900 72 20 69 64 20 3d 20 28 74 68 69 73 2e 6c 6f 6f  r id = (this.loo
23910 6b 61 68 65 61 64 2e 74 79 70 65 20 3d 3d 3d 20  kahead.type === 
23920 74 6f 6b 65 6e 5f 31 2e 54 6f 6b 65 6e 2e 49 64  token_1.Token.Id
23930 65 6e 74 69 66 69 65 72 29 20 3f 20 74 68 69 73  entifier) ? this
23940 2e 70 61 72 73 65 56 61 72 69 61 62 6c 65 49 64  .parseVariableId
23950 65 6e 74 69 66 69 65 72 28 29 20 3a 20 6e 75 6c  entifier() : nul
23960 6c 3b 0a 20 20 09 20 20 20 20 20 20 20 20 76 61  l;.  .        va
23970 72 20 73 75 70 65 72 43 6c 61 73 73 20 3d 20 6e  r superClass = n
23980 75 6c 6c 3b 0a 20 20 09 20 20 20 20 20 20 20 20  ull;.  .        
23990 69 66 20 28 74 68 69 73 2e 6d 61 74 63 68 4b 65  if (this.matchKe
239a0 79 77 6f 72 64 28 27 65 78 74 65 6e 64 73 27 29  yword('extends')
239b0 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ) {.  .         
239c0 20 20 20 74 68 69 73 2e 6e 65 78 74 54 6f 6b 65     this.nextToke
239d0 6e 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  n();.  .        
239e0 20 20 20 20 73 75 70 65 72 43 6c 61 73 73 20 3d      superClass =
239f0 20 74 68 69 73 2e 69 73 6f 6c 61 74 65 43 6f 76   this.isolateCov
23a00 65 72 47 72 61 6d 6d 61 72 28 74 68 69 73 2e 70  erGrammar(this.p
23a10 61 72 73 65 4c 65 66 74 48 61 6e 64 53 69 64 65  arseLeftHandSide
23a20 45 78 70 72 65 73 73 69 6f 6e 41 6c 6c 6f 77 43  ExpressionAllowC
23a30 61 6c 6c 29 3b 0a 20 20 09 20 20 20 20 20 20 20  all);.  .       
23a40 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 76 61   }.  .        va
23a50 72 20 63 6c 61 73 73 42 6f 64 79 20 3d 20 74 68  r classBody = th
23a60 69 73 2e 70 61 72 73 65 43 6c 61 73 73 42 6f 64  is.parseClassBod
23a70 79 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  y();.  .        
23a80 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e 73 74 72  this.context.str
23a90 69 63 74 20 3d 20 70 72 65 76 69 6f 75 73 53 74  ict = previousSt
23aa0 72 69 63 74 3b 0a 20 20 09 20 20 20 20 20 20 20  rict;.  .       
23ab0 20 72 65 74 75 72 6e 20 74 68 69 73 2e 66 69 6e   return this.fin
23ac0 61 6c 69 7a 65 28 6e 6f 64 65 2c 20 6e 65 77 20  alize(node, new 
23ad0 4e 6f 64 65 2e 43 6c 61 73 73 45 78 70 72 65 73  Node.ClassExpres
23ae0 73 69 6f 6e 28 69 64 2c 20 73 75 70 65 72 43 6c  sion(id, superCl
23af0 61 73 73 2c 20 63 6c 61 73 73 42 6f 64 79 29 29  ass, classBody))
23b00 3b 0a 20 20 09 20 20 20 20 7d 3b 0a 20 20 09 20  ;.  .    };.  . 
23b10 20 20 20 2f 2f 20 45 43 4d 41 2d 32 36 32 20 31     // ECMA-262 1
23b20 35 2e 31 20 53 63 72 69 70 74 73 0a 20 20 09 20  5.1 Scripts.  . 
23b30 20 20 20 2f 2f 20 45 43 4d 41 2d 32 36 32 20 31     // ECMA-262 1
23b40 35 2e 32 20 4d 6f 64 75 6c 65 73 0a 20 20 09 20  5.2 Modules.  . 
23b50 20 20 20 50 61 72 73 65 72 2e 70 72 6f 74 6f 74     Parser.protot
23b60 79 70 65 2e 70 61 72 73 65 50 72 6f 67 72 61 6d  ype.parseProgram
23b70 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b   = function () {
23b80 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20  .  .        var 
23b90 74 68 69 73 24 31 20 3d 20 74 68 69 73 3b 0a 0a  this$1 = this;..
23ba0 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20 6e    .        var n
23bb0 6f 64 65 20 3d 20 74 68 69 73 2e 63 72 65 61 74  ode = this.creat
23bc0 65 4e 6f 64 65 28 29 3b 0a 20 20 09 20 20 20 20  eNode();.  .    
23bd0 20 20 20 20 76 61 72 20 62 6f 64 79 20 3d 20 74      var body = t
23be0 68 69 73 2e 70 61 72 73 65 44 69 72 65 63 74 69  his.parseDirecti
23bf0 76 65 50 72 6f 6c 6f 67 75 65 73 28 29 3b 0a 20  vePrologues();. 
23c00 20 09 20 20 20 20 20 20 20 20 77 68 69 6c 65 20   .        while 
23c10 28 74 68 69 73 2e 73 74 61 72 74 4d 61 72 6b 65  (this.startMarke
23c20 72 2e 69 6e 64 65 78 20 3c 20 74 68 69 73 2e 73  r.index < this.s
23c30 63 61 6e 6e 65 72 2e 6c 65 6e 67 74 68 29 20 7b  canner.length) {
23c40 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
23c50 62 6f 64 79 2e 70 75 73 68 28 74 68 69 73 24 31  body.push(this$1
23c60 2e 70 61 72 73 65 53 74 61 74 65 6d 65 6e 74 4c  .parseStatementL
23c70 69 73 74 49 74 65 6d 28 29 29 3b 0a 20 20 09 20  istItem());.  . 
23c80 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20         }.  .    
23c90 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e      return this.
23ca0 66 69 6e 61 6c 69 7a 65 28 6e 6f 64 65 2c 20 6e  finalize(node, n
23cb0 65 77 20 4e 6f 64 65 2e 50 72 6f 67 72 61 6d 28  ew Node.Program(
23cc0 62 6f 64 79 2c 20 74 68 69 73 2e 73 6f 75 72 63  body, this.sourc
23cd0 65 54 79 70 65 29 29 3b 0a 20 20 09 20 20 20 20  eType));.  .    
23ce0 7d 3b 0a 20 20 09 20 20 20 20 2f 2f 20 45 43 4d  };.  .    // ECM
23cf0 41 2d 32 36 32 20 31 35 2e 32 2e 32 20 49 6d 70  A-262 15.2.2 Imp
23d00 6f 72 74 73 0a 20 20 09 20 20 20 20 50 61 72 73  orts.  .    Pars
23d10 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 70 61 72  er.prototype.par
23d20 73 65 4d 6f 64 75 6c 65 53 70 65 63 69 66 69 65  seModuleSpecifie
23d30 72 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20  r = function () 
23d40 7b 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72  {.  .        var
23d50 20 6e 6f 64 65 20 3d 20 74 68 69 73 2e 63 72 65   node = this.cre
23d60 61 74 65 4e 6f 64 65 28 29 3b 0a 20 20 09 20 20  ateNode();.  .  
23d70 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 6c        if (this.l
23d80 6f 6f 6b 61 68 65 61 64 2e 74 79 70 65 20 21 3d  ookahead.type !=
23d90 3d 20 74 6f 6b 65 6e 5f 31 2e 54 6f 6b 65 6e 2e  = token_1.Token.
23da0 53 74 72 69 6e 67 4c 69 74 65 72 61 6c 29 20 7b  StringLiteral) {
23db0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
23dc0 74 68 69 73 2e 74 68 72 6f 77 45 72 72 6f 72 28  this.throwError(
23dd0 6d 65 73 73 61 67 65 73 5f 31 2e 4d 65 73 73 61  messages_1.Messa
23de0 67 65 73 2e 49 6e 76 61 6c 69 64 4d 6f 64 75 6c  ges.InvalidModul
23df0 65 53 70 65 63 69 66 69 65 72 29 3b 0a 20 20 09  eSpecifier);.  .
23e00 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20          }.  .   
23e10 20 20 20 20 20 76 61 72 20 74 6f 6b 65 6e 20 3d       var token =
23e20 20 74 68 69 73 2e 6e 65 78 74 54 6f 6b 65 6e 28   this.nextToken(
23e30 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 76 61  );.  .        va
23e40 72 20 72 61 77 20 3d 20 74 68 69 73 2e 67 65 74  r raw = this.get
23e50 54 6f 6b 65 6e 52 61 77 28 74 6f 6b 65 6e 29 3b  TokenRaw(token);
23e60 0a 20 20 09 20 20 20 20 20 20 20 20 72 65 74 75  .  .        retu
23e70 72 6e 20 74 68 69 73 2e 66 69 6e 61 6c 69 7a 65  rn this.finalize
23e80 28 6e 6f 64 65 2c 20 6e 65 77 20 4e 6f 64 65 2e  (node, new Node.
23e90 4c 69 74 65 72 61 6c 28 74 6f 6b 65 6e 2e 76 61  Literal(token.va
23ea0 6c 75 65 2c 20 72 61 77 29 29 3b 0a 20 20 09 20  lue, raw));.  . 
23eb0 20 20 20 7d 3b 0a 20 20 09 20 20 20 20 2f 2f 20     };.  .    // 
23ec0 69 6d 70 6f 72 74 20 7b 3c 66 6f 6f 20 61 73 20  import {<foo as 
23ed0 62 61 72 3e 7d 20 2e 2e 2e 3b 0a 20 20 09 20 20  bar>} ...;.  .  
23ee0 20 20 50 61 72 73 65 72 2e 70 72 6f 74 6f 74 79    Parser.prototy
23ef0 70 65 2e 70 61 72 73 65 49 6d 70 6f 72 74 53 70  pe.parseImportSp
23f00 65 63 69 66 69 65 72 20 3d 20 66 75 6e 63 74 69  ecifier = functi
23f10 6f 6e 20 28 29 20 7b 0a 20 20 09 20 20 20 20 20  on () {.  .     
23f20 20 20 20 76 61 72 20 6e 6f 64 65 20 3d 20 74 68     var node = th
23f30 69 73 2e 63 72 65 61 74 65 4e 6f 64 65 28 29 3b  is.createNode();
23f40 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20  .  .        var 
23f50 69 6d 70 6f 72 74 65 64 3b 0a 20 20 09 20 20 20  imported;.  .   
23f60 20 20 20 20 20 76 61 72 20 6c 6f 63 61 6c 3b 0a       var local;.
23f70 20 20 09 20 20 20 20 20 20 20 20 69 66 20 28 74    .        if (t
23f80 68 69 73 2e 6c 6f 6f 6b 61 68 65 61 64 2e 74 79  his.lookahead.ty
23f90 70 65 20 3d 3d 3d 20 74 6f 6b 65 6e 5f 31 2e 54  pe === token_1.T
23fa0 6f 6b 65 6e 2e 49 64 65 6e 74 69 66 69 65 72 29  oken.Identifier)
23fb0 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   {.  .          
23fc0 20 20 69 6d 70 6f 72 74 65 64 20 3d 20 74 68 69    imported = thi
23fd0 73 2e 70 61 72 73 65 56 61 72 69 61 62 6c 65 49  s.parseVariableI
23fe0 64 65 6e 74 69 66 69 65 72 28 29 3b 0a 20 20 09  dentifier();.  .
23ff0 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 61              loca
24000 6c 20 3d 20 69 6d 70 6f 72 74 65 64 3b 0a 20 20  l = imported;.  
24010 09 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
24020 28 74 68 69 73 2e 6d 61 74 63 68 43 6f 6e 74 65  (this.matchConte
24030 78 74 75 61 6c 4b 65 79 77 6f 72 64 28 27 61 73  xtualKeyword('as
24040 27 29 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20  ')) {.  .       
24050 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6e 65           this.ne
24060 78 74 54 6f 6b 65 6e 28 29 3b 0a 20 20 09 20 20  xtToken();.  .  
24070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
24080 63 61 6c 20 3d 20 74 68 69 73 2e 70 61 72 73 65  cal = this.parse
24090 56 61 72 69 61 62 6c 65 49 64 65 6e 74 69 66 69  VariableIdentifi
240a0 65 72 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20  er();.  .       
240b0 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20       }.  .      
240c0 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 65    }.  .        e
240d0 6c 73 65 20 7b 0a 20 20 09 20 20 20 20 20 20 20  lse {.  .       
240e0 20 20 20 20 20 69 6d 70 6f 72 74 65 64 20 3d 20       imported = 
240f0 74 68 69 73 2e 70 61 72 73 65 49 64 65 6e 74 69  this.parseIdenti
24100 66 69 65 72 4e 61 6d 65 28 29 3b 0a 20 20 09 20  fierName();.  . 
24110 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 61 6c             local
24120 20 3d 20 69 6d 70 6f 72 74 65 64 3b 0a 20 20 09   = imported;.  .
24130 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
24140 74 68 69 73 2e 6d 61 74 63 68 43 6f 6e 74 65 78  this.matchContex
24150 74 75 61 6c 4b 65 79 77 6f 72 64 28 27 61 73 27  tualKeyword('as'
24160 29 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20  )) {.  .        
24170 20 20 20 20 20 20 20 20 74 68 69 73 2e 6e 65 78          this.nex
24180 74 54 6f 6b 65 6e 28 29 3b 0a 20 20 09 20 20 20  tToken();.  .   
24190 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
241a0 61 6c 20 3d 20 74 68 69 73 2e 70 61 72 73 65 56  al = this.parseV
241b0 61 72 69 61 62 6c 65 49 64 65 6e 74 69 66 69 65  ariableIdentifie
241c0 72 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  r();.  .        
241d0 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20      }.  .       
241e0 20 20 20 20 20 65 6c 73 65 20 7b 0a 20 20 09 20       else {.  . 
241f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
24200 68 69 73 2e 74 68 72 6f 77 55 6e 65 78 70 65 63  his.throwUnexpec
24210 74 65 64 54 6f 6b 65 6e 28 74 68 69 73 2e 6e 65  tedToken(this.ne
24220 78 74 54 6f 6b 65 6e 28 29 29 3b 0a 20 20 09 20  xtToken());.  . 
24230 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09             }.  .
24240 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20          }.  .   
24250 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73       return this
24260 2e 66 69 6e 61 6c 69 7a 65 28 6e 6f 64 65 2c 20  .finalize(node, 
24270 6e 65 77 20 4e 6f 64 65 2e 49 6d 70 6f 72 74 53  new Node.ImportS
24280 70 65 63 69 66 69 65 72 28 6c 6f 63 61 6c 2c 20  pecifier(local, 
24290 69 6d 70 6f 72 74 65 64 29 29 3b 0a 20 20 09 20  imported));.  . 
242a0 20 20 20 7d 3b 0a 20 20 09 20 20 20 20 2f 2f 20     };.  .    // 
242b0 7b 66 6f 6f 2c 20 62 61 72 20 61 73 20 62 61 73  {foo, bar as bas
242c0 7d 0a 20 20 09 20 20 20 20 50 61 72 73 65 72 2e  }.  .    Parser.
242d0 70 72 6f 74 6f 74 79 70 65 2e 70 61 72 73 65 4e  prototype.parseN
242e0 61 6d 65 64 49 6d 70 6f 72 74 73 20 3d 20 66 75  amedImports = fu
242f0 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20 09 20  nction () {.  . 
24300 20 20 20 20 20 20 20 76 61 72 20 74 68 69 73 24         var this$
24310 31 20 3d 20 74 68 69 73 3b 0a 0a 20 20 09 20 20  1 = this;..  .  
24320 20 20 20 20 20 20 74 68 69 73 2e 65 78 70 65 63        this.expec
24330 74 28 27 7b 27 29 3b 0a 20 20 09 20 20 20 20 20  t('{');.  .     
24340 20 20 20 76 61 72 20 73 70 65 63 69 66 69 65 72     var specifier
24350 73 20 3d 20 5b 5d 3b 0a 20 20 09 20 20 20 20 20  s = [];.  .     
24360 20 20 20 77 68 69 6c 65 20 28 21 74 68 69 73 2e     while (!this.
24370 6d 61 74 63 68 28 27 7d 27 29 29 20 7b 0a 20 20  match('}')) {.  
24380 09 20 20 20 20 20 20 20 20 20 20 20 20 73 70 65  .            spe
24390 63 69 66 69 65 72 73 2e 70 75 73 68 28 74 68 69  cifiers.push(thi
243a0 73 24 31 2e 70 61 72 73 65 49 6d 70 6f 72 74 53  s$1.parseImportS
243b0 70 65 63 69 66 69 65 72 28 29 29 3b 0a 20 20 09  pecifier());.  .
243c0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
243d0 21 74 68 69 73 24 31 2e 6d 61 74 63 68 28 27 7d  !this$1.match('}
243e0 27 29 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20  ')) {.  .       
243f0 20 20 20 20 20 20 20 20 20 74 68 69 73 24 31 2e           this$1.
24400 65 78 70 65 63 74 28 27 2c 27 29 3b 0a 20 20 09  expect(',');.  .
24410 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20              }.  
24420 09 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20  .        }.  .  
24430 20 20 20 20 20 20 74 68 69 73 2e 65 78 70 65 63        this.expec
24440 74 28 27 7d 27 29 3b 0a 20 20 09 20 20 20 20 20  t('}');.  .     
24450 20 20 20 72 65 74 75 72 6e 20 73 70 65 63 69 66     return specif
24460 69 65 72 73 3b 0a 20 20 09 20 20 20 20 7d 3b 0a  iers;.  .    };.
24470 20 20 09 20 20 20 20 2f 2f 20 69 6d 70 6f 72 74    .    // import
24480 20 3c 66 6f 6f 3e 20 2e 2e 2e 3b 0a 20 20 09 20   <foo> ...;.  . 
24490 20 20 20 50 61 72 73 65 72 2e 70 72 6f 74 6f 74     Parser.protot
244a0 79 70 65 2e 70 61 72 73 65 49 6d 70 6f 72 74 44  ype.parseImportD
244b0 65 66 61 75 6c 74 53 70 65 63 69 66 69 65 72 20  efaultSpecifier 
244c0 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a  = function () {.
244d0 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20 6e    .        var n
244e0 6f 64 65 20 3d 20 74 68 69 73 2e 63 72 65 61 74  ode = this.creat
244f0 65 4e 6f 64 65 28 29 3b 0a 20 20 09 20 20 20 20  eNode();.  .    
24500 20 20 20 20 76 61 72 20 6c 6f 63 61 6c 20 3d 20      var local = 
24510 74 68 69 73 2e 70 61 72 73 65 49 64 65 6e 74 69  this.parseIdenti
24520 66 69 65 72 4e 61 6d 65 28 29 3b 0a 20 20 09 20  fierName();.  . 
24530 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68         return th
24540 69 73 2e 66 69 6e 61 6c 69 7a 65 28 6e 6f 64 65  is.finalize(node
24550 2c 20 6e 65 77 20 4e 6f 64 65 2e 49 6d 70 6f 72  , new Node.Impor
24560 74 44 65 66 61 75 6c 74 53 70 65 63 69 66 69 65  tDefaultSpecifie
24570 72 28 6c 6f 63 61 6c 29 29 3b 0a 20 20 09 20 20  r(local));.  .  
24580 20 20 7d 3b 0a 20 20 09 20 20 20 20 2f 2f 20 69    };.  .    // i
24590 6d 70 6f 72 74 20 3c 2a 20 61 73 20 66 6f 6f 3e  mport <* as foo>
245a0 20 2e 2e 2e 3b 0a 20 20 09 20 20 20 20 50 61 72   ...;.  .    Par
245b0 73 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 70 61  ser.prototype.pa
245c0 72 73 65 49 6d 70 6f 72 74 4e 61 6d 65 73 70 61  rseImportNamespa
245d0 63 65 53 70 65 63 69 66 69 65 72 20 3d 20 66 75  ceSpecifier = fu
245e0 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20 09 20  nction () {.  . 
245f0 20 20 20 20 20 20 20 76 61 72 20 6e 6f 64 65 20         var node 
24600 3d 20 74 68 69 73 2e 63 72 65 61 74 65 4e 6f 64  = this.createNod
24610 65 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  e();.  .        
24620 74 68 69 73 2e 65 78 70 65 63 74 28 27 2a 27 29  this.expect('*')
24630 3b 0a 20 20 09 20 20 20 20 20 20 20 20 69 66 20  ;.  .        if 
24640 28 21 74 68 69 73 2e 6d 61 74 63 68 43 6f 6e 74  (!this.matchCont
24650 65 78 74 75 61 6c 4b 65 79 77 6f 72 64 28 27 61  extualKeyword('a
24660 73 27 29 29 20 7b 0a 20 20 09 20 20 20 20 20 20  s')) {.  .      
24670 20 20 20 20 20 20 74 68 69 73 2e 74 68 72 6f 77        this.throw
24680 45 72 72 6f 72 28 6d 65 73 73 61 67 65 73 5f 31  Error(messages_1
24690 2e 4d 65 73 73 61 67 65 73 2e 4e 6f 41 73 41 66  .Messages.NoAsAf
246a0 74 65 72 49 6d 70 6f 72 74 4e 61 6d 65 73 70 61  terImportNamespa
246b0 63 65 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  ce);.  .        
246c0 7d 0a 20 20 09 20 20 20 20 20 20 20 20 74 68 69  }.  .        thi
246d0 73 2e 6e 65 78 74 54 6f 6b 65 6e 28 29 3b 0a 20  s.nextToken();. 
246e0 20 09 20 20 20 20 20 20 20 20 76 61 72 20 6c 6f   .        var lo
246f0 63 61 6c 20 3d 20 74 68 69 73 2e 70 61 72 73 65  cal = this.parse
24700 49 64 65 6e 74 69 66 69 65 72 4e 61 6d 65 28 29  IdentifierName()
24710 3b 0a 20 20 09 20 20 20 20 20 20 20 20 72 65 74  ;.  .        ret
24720 75 72 6e 20 74 68 69 73 2e 66 69 6e 61 6c 69 7a  urn this.finaliz
24730 65 28 6e 6f 64 65 2c 20 6e 65 77 20 4e 6f 64 65  e(node, new Node
24740 2e 49 6d 70 6f 72 74 4e 61 6d 65 73 70 61 63 65  .ImportNamespace
24750 53 70 65 63 69 66 69 65 72 28 6c 6f 63 61 6c 29  Specifier(local)
24760 29 3b 0a 20 20 09 20 20 20 20 7d 3b 0a 20 20 09  );.  .    };.  .
24770 20 20 20 20 50 61 72 73 65 72 2e 70 72 6f 74 6f      Parser.proto
24780 74 79 70 65 2e 70 61 72 73 65 49 6d 70 6f 72 74  type.parseImport
24790 44 65 63 6c 61 72 61 74 69 6f 6e 20 3d 20 66 75  Declaration = fu
247a0 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20 09 20  nction () {.  . 
247b0 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e         if (this.
247c0 63 6f 6e 74 65 78 74 2e 69 6e 46 75 6e 63 74 69  context.inFuncti
247d0 6f 6e 42 6f 64 79 29 20 7b 0a 20 20 09 20 20 20  onBody) {.  .   
247e0 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 74 68           this.th
247f0 72 6f 77 45 72 72 6f 72 28 6d 65 73 73 61 67 65  rowError(message
24800 73 5f 31 2e 4d 65 73 73 61 67 65 73 2e 49 6c 6c  s_1.Messages.Ill
24810 65 67 61 6c 49 6d 70 6f 72 74 44 65 63 6c 61 72  egalImportDeclar
24820 61 74 69 6f 6e 29 3b 0a 20 20 09 20 20 20 20 20  ation);.  .     
24830 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20     }.  .        
24840 76 61 72 20 6e 6f 64 65 20 3d 20 74 68 69 73 2e  var node = this.
24850 63 72 65 61 74 65 4e 6f 64 65 28 29 3b 0a 20 20  createNode();.  
24860 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 65 78  .        this.ex
24870 70 65 63 74 4b 65 79 77 6f 72 64 28 27 69 6d 70  pectKeyword('imp
24880 6f 72 74 27 29 3b 0a 20 20 09 20 20 20 20 20 20  ort');.  .      
24890 20 20 76 61 72 20 73 72 63 3b 0a 20 20 09 20 20    var src;.  .  
248a0 20 20 20 20 20 20 76 61 72 20 73 70 65 63 69 66        var specif
248b0 69 65 72 73 20 3d 20 5b 5d 3b 0a 20 20 09 20 20  iers = [];.  .  
248c0 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 6c        if (this.l
248d0 6f 6f 6b 61 68 65 61 64 2e 74 79 70 65 20 3d 3d  ookahead.type ==
248e0 3d 20 74 6f 6b 65 6e 5f 31 2e 54 6f 6b 65 6e 2e  = token_1.Token.
248f0 53 74 72 69 6e 67 4c 69 74 65 72 61 6c 29 20 7b  StringLiteral) {
24900 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
24910 2f 2f 20 69 6d 70 6f 72 74 20 27 66 6f 6f 27 3b  // import 'foo';
24920 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
24930 73 72 63 20 3d 20 74 68 69 73 2e 70 61 72 73 65  src = this.parse
24940 4d 6f 64 75 6c 65 53 70 65 63 69 66 69 65 72 28  ModuleSpecifier(
24950 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a  );.  .        }.
24960 20 20 09 20 20 20 20 20 20 20 20 65 6c 73 65 20    .        else 
24970 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  {.  .           
24980 20 69 66 20 28 74 68 69 73 2e 6d 61 74 63 68 28   if (this.match(
24990 27 7b 27 29 29 20 7b 0a 20 20 09 20 20 20 20 20  '{')) {.  .     
249a0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 69 6d             // im
249b0 70 6f 72 74 20 7b 62 61 72 7d 0a 20 20 09 20 20  port {bar}.  .  
249c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 70                sp
249d0 65 63 69 66 69 65 72 73 20 3d 20 73 70 65 63 69  ecifiers = speci
249e0 66 69 65 72 73 2e 63 6f 6e 63 61 74 28 74 68 69  fiers.concat(thi
249f0 73 2e 70 61 72 73 65 4e 61 6d 65 64 49 6d 70 6f  s.parseNamedImpo
24a00 72 74 73 28 29 29 3b 0a 20 20 09 20 20 20 20 20  rts());.  .     
24a10 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20         }.  .    
24a20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20          else if 
24a30 28 74 68 69 73 2e 6d 61 74 63 68 28 27 2a 27 29  (this.match('*')
24a40 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ) {.  .         
24a50 20 20 20 20 20 20 20 2f 2f 20 69 6d 70 6f 72 74         // import
24a60 20 2a 20 61 73 20 66 6f 6f 0a 20 20 09 20 20 20   * as foo.  .   
24a70 20 20 20 20 20 20 20 20 20 20 20 20 20 73 70 65               spe
24a80 63 69 66 69 65 72 73 2e 70 75 73 68 28 74 68 69  cifiers.push(thi
24a90 73 2e 70 61 72 73 65 49 6d 70 6f 72 74 4e 61 6d  s.parseImportNam
24aa0 65 73 70 61 63 65 53 70 65 63 69 66 69 65 72 28  espaceSpecifier(
24ab0 29 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ));.  .         
24ac0 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20     }.  .        
24ad0 20 20 20 20 65 6c 73 65 20 69 66 20 28 74 68 69      else if (thi
24ae0 73 2e 69 73 49 64 65 6e 74 69 66 69 65 72 4e 61  s.isIdentifierNa
24af0 6d 65 28 74 68 69 73 2e 6c 6f 6f 6b 61 68 65 61  me(this.lookahea
24b00 64 29 20 26 26 20 21 74 68 69 73 2e 6d 61 74 63  d) && !this.matc
24b10 68 4b 65 79 77 6f 72 64 28 27 64 65 66 61 75 6c  hKeyword('defaul
24b20 74 27 29 29 20 7b 0a 20 20 09 20 20 20 20 20 20  t')) {.  .      
24b30 20 20 20 20 20 20 20 20 20 20 2f 2f 20 69 6d 70            // imp
24b40 6f 72 74 20 66 6f 6f 0a 20 20 09 20 20 20 20 20  ort foo.  .     
24b50 20 20 20 20 20 20 20 20 20 20 20 73 70 65 63 69             speci
24b60 66 69 65 72 73 2e 70 75 73 68 28 74 68 69 73 2e  fiers.push(this.
24b70 70 61 72 73 65 49 6d 70 6f 72 74 44 65 66 61 75  parseImportDefau
24b80 6c 74 53 70 65 63 69 66 69 65 72 28 29 29 3b 0a  ltSpecifier());.
24b90 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
24ba0 20 20 20 69 66 20 28 74 68 69 73 2e 6d 61 74 63     if (this.matc
24bb0 68 28 27 2c 27 29 29 20 7b 0a 20 20 09 20 20 20  h(',')) {.  .   
24bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24bd0 20 74 68 69 73 2e 6e 65 78 74 54 6f 6b 65 6e 28   this.nextToken(
24be0 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  );.  .          
24bf0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74 68            if (th
24c00 69 73 2e 6d 61 74 63 68 28 27 2a 27 29 29 20 7b  is.match('*')) {
24c10 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
24c20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 69              // i
24c30 6d 70 6f 72 74 20 66 6f 6f 2c 20 2a 20 61 73 20  mport foo, * as 
24c40 66 6f 6f 0a 20 20 09 20 20 20 20 20 20 20 20 20  foo.  .         
24c50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
24c60 70 65 63 69 66 69 65 72 73 2e 70 75 73 68 28 74  pecifiers.push(t
24c70 68 69 73 2e 70 61 72 73 65 49 6d 70 6f 72 74 4e  his.parseImportN
24c80 61 6d 65 73 70 61 63 65 53 70 65 63 69 66 69 65  amespaceSpecifie
24c90 72 28 29 29 3b 0a 20 20 09 20 20 20 20 20 20 20  r());.  .       
24ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20               }. 
24cb0 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
24cc0 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 74        else if (t
24cd0 68 69 73 2e 6d 61 74 63 68 28 27 7b 27 29 29 20  his.match('{')) 
24ce0 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  {.  .           
24cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
24d00 69 6d 70 6f 72 74 20 66 6f 6f 2c 20 7b 62 61 72  import foo, {bar
24d10 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  }.  .           
24d20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 70 65               spe
24d30 63 69 66 69 65 72 73 20 3d 20 73 70 65 63 69 66  cifiers = specif
24d40 69 65 72 73 2e 63 6f 6e 63 61 74 28 74 68 69 73  iers.concat(this
24d50 2e 70 61 72 73 65 4e 61 6d 65 64 49 6d 70 6f 72  .parseNamedImpor
24d60 74 73 28 29 29 3b 0a 20 20 09 20 20 20 20 20 20  ts());.  .      
24d70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a                }.
24d80 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
24d90 20 20 20 20 20 20 20 65 6c 73 65 20 7b 0a 20 20         else {.  
24da0 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
24db0 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 74 68           this.th
24dc0 72 6f 77 55 6e 65 78 70 65 63 74 65 64 54 6f 6b  rowUnexpectedTok
24dd0 65 6e 28 74 68 69 73 2e 6c 6f 6f 6b 61 68 65 61  en(this.lookahea
24de0 64 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  d);.  .         
24df0 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09             }.  .
24e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24e10 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  }.  .           
24e20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   }.  .          
24e30 20 20 65 6c 73 65 20 7b 0a 20 20 09 20 20 20 20    else {.  .    
24e40 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
24e50 2e 74 68 72 6f 77 55 6e 65 78 70 65 63 74 65 64  .throwUnexpected
24e60 54 6f 6b 65 6e 28 74 68 69 73 2e 6e 65 78 74 54  Token(this.nextT
24e70 6f 6b 65 6e 28 29 29 3b 0a 20 20 09 20 20 20 20  oken());.  .    
24e80 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20          }.  .   
24e90 20 20 20 20 20 20 20 20 20 69 66 20 28 21 74 68           if (!th
24ea0 69 73 2e 6d 61 74 63 68 43 6f 6e 74 65 78 74 75  is.matchContextu
24eb0 61 6c 4b 65 79 77 6f 72 64 28 27 66 72 6f 6d 27  alKeyword('from'
24ec0 29 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20  )) {.  .        
24ed0 20 20 20 20 20 20 20 20 76 61 72 20 6d 65 73 73          var mess
24ee0 61 67 65 20 3d 20 74 68 69 73 2e 6c 6f 6f 6b 61  age = this.looka
24ef0 68 65 61 64 2e 76 61 6c 75 65 20 3f 20 6d 65 73  head.value ? mes
24f00 73 61 67 65 73 5f 31 2e 4d 65 73 73 61 67 65 73  sages_1.Messages
24f10 2e 55 6e 65 78 70 65 63 74 65 64 54 6f 6b 65 6e  .UnexpectedToken
24f20 20 3a 20 6d 65 73 73 61 67 65 73 5f 31 2e 4d 65   : messages_1.Me
24f30 73 73 61 67 65 73 2e 4d 69 73 73 69 6e 67 46 72  ssages.MissingFr
24f40 6f 6d 43 6c 61 75 73 65 3b 0a 20 20 09 20 20 20  omClause;.  .   
24f50 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
24f60 73 2e 74 68 72 6f 77 45 72 72 6f 72 28 6d 65 73  s.throwError(mes
24f70 73 61 67 65 2c 20 74 68 69 73 2e 6c 6f 6f 6b 61  sage, this.looka
24f80 68 65 61 64 2e 76 61 6c 75 65 29 3b 0a 20 20 09  head.value);.  .
24f90 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20              }.  
24fa0 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
24fb0 73 2e 6e 65 78 74 54 6f 6b 65 6e 28 29 3b 0a 20  s.nextToken();. 
24fc0 20 09 20 20 20 20 20 20 20 20 20 20 20 20 73 72   .            sr
24fd0 63 20 3d 20 74 68 69 73 2e 70 61 72 73 65 4d 6f  c = this.parseMo
24fe0 64 75 6c 65 53 70 65 63 69 66 69 65 72 28 29 3b  duleSpecifier();
24ff0 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a 20 20  .  .        }.  
25000 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 6f  .        this.co
25010 6e 73 75 6d 65 53 65 6d 69 63 6f 6c 6f 6e 28 29  nsumeSemicolon()
25020 3b 0a 20 20 09 20 20 20 20 20 20 20 20 72 65 74  ;.  .        ret
25030 75 72 6e 20 74 68 69 73 2e 66 69 6e 61 6c 69 7a  urn this.finaliz
25040 65 28 6e 6f 64 65 2c 20 6e 65 77 20 4e 6f 64 65  e(node, new Node
25050 2e 49 6d 70 6f 72 74 44 65 63 6c 61 72 61 74 69  .ImportDeclarati
25060 6f 6e 28 73 70 65 63 69 66 69 65 72 73 2c 20 73  on(specifiers, s
25070 72 63 29 29 3b 0a 20 20 09 20 20 20 20 7d 3b 0a  rc));.  .    };.
25080 20 20 09 20 20 20 20 2f 2f 20 45 43 4d 41 2d 32    .    // ECMA-2
25090 36 32 20 31 35 2e 32 2e 33 20 45 78 70 6f 72 74  62 15.2.3 Export
250a0 73 0a 20 20 09 20 20 20 20 50 61 72 73 65 72 2e  s.  .    Parser.
250b0 70 72 6f 74 6f 74 79 70 65 2e 70 61 72 73 65 45  prototype.parseE
250c0 78 70 6f 72 74 53 70 65 63 69 66 69 65 72 20 3d  xportSpecifier =
250d0 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20   function () {. 
250e0 20 09 20 20 20 20 20 20 20 20 76 61 72 20 6e 6f   .        var no
250f0 64 65 20 3d 20 74 68 69 73 2e 63 72 65 61 74 65  de = this.create
25100 4e 6f 64 65 28 29 3b 0a 20 20 09 20 20 20 20 20  Node();.  .     
25110 20 20 20 76 61 72 20 6c 6f 63 61 6c 20 3d 20 74     var local = t
25120 68 69 73 2e 70 61 72 73 65 49 64 65 6e 74 69 66  his.parseIdentif
25130 69 65 72 4e 61 6d 65 28 29 3b 0a 20 20 09 20 20  ierName();.  .  
25140 20 20 20 20 20 20 76 61 72 20 65 78 70 6f 72 74        var export
25150 65 64 20 3d 20 6c 6f 63 61 6c 3b 0a 20 20 09 20  ed = local;.  . 
25160 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e         if (this.
25170 6d 61 74 63 68 43 6f 6e 74 65 78 74 75 61 6c 4b  matchContextualK
25180 65 79 77 6f 72 64 28 27 61 73 27 29 29 20 7b 0a  eyword('as')) {.
25190 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 74    .            t
251a0 68 69 73 2e 6e 65 78 74 54 6f 6b 65 6e 28 29 3b  his.nextToken();
251b0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
251c0 65 78 70 6f 72 74 65 64 20 3d 20 74 68 69 73 2e  exported = this.
251d0 70 61 72 73 65 49 64 65 6e 74 69 66 69 65 72 4e  parseIdentifierN
251e0 61 6d 65 28 29 3b 0a 20 20 09 20 20 20 20 20 20  ame();.  .      
251f0 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 72    }.  .        r
25200 65 74 75 72 6e 20 74 68 69 73 2e 66 69 6e 61 6c  eturn this.final
25210 69 7a 65 28 6e 6f 64 65 2c 20 6e 65 77 20 4e 6f  ize(node, new No
25220 64 65 2e 45 78 70 6f 72 74 53 70 65 63 69 66 69  de.ExportSpecifi
25230 65 72 28 6c 6f 63 61 6c 2c 20 65 78 70 6f 72 74  er(local, export
25240 65 64 29 29 3b 0a 20 20 09 20 20 20 20 7d 3b 0a  ed));.  .    };.
25250 20 20 09 20 20 20 20 50 61 72 73 65 72 2e 70 72    .    Parser.pr
25260 6f 74 6f 74 79 70 65 2e 70 61 72 73 65 45 78 70  ototype.parseExp
25270 6f 72 74 44 65 63 6c 61 72 61 74 69 6f 6e 20 3d  ortDeclaration =
25280 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20   function () {. 
25290 20 09 20 20 20 20 20 20 20 20 76 61 72 20 74 68   .        var th
252a0 69 73 24 31 20 3d 20 74 68 69 73 3b 0a 0a 20 20  is$1 = this;..  
252b0 09 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69  .        if (thi
252c0 73 2e 63 6f 6e 74 65 78 74 2e 69 6e 46 75 6e 63  s.context.inFunc
252d0 74 69 6f 6e 42 6f 64 79 29 20 7b 0a 20 20 09 20  tionBody) {.  . 
252e0 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
252f0 74 68 72 6f 77 45 72 72 6f 72 28 6d 65 73 73 61  throwError(messa
25300 67 65 73 5f 31 2e 4d 65 73 73 61 67 65 73 2e 49  ges_1.Messages.I
25310 6c 6c 65 67 61 6c 45 78 70 6f 72 74 44 65 63 6c  llegalExportDecl
25320 61 72 61 74 69 6f 6e 29 3b 0a 20 20 09 20 20 20  aration);.  .   
25330 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20       }.  .      
25340 20 20 76 61 72 20 6e 6f 64 65 20 3d 20 74 68 69    var node = thi
25350 73 2e 63 72 65 61 74 65 4e 6f 64 65 28 29 3b 0a  s.createNode();.
25360 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e    .        this.
25370 65 78 70 65 63 74 4b 65 79 77 6f 72 64 28 27 65  expectKeyword('e
25380 78 70 6f 72 74 27 29 3b 0a 20 20 09 20 20 20 20  xport');.  .    
25390 20 20 20 20 76 61 72 20 65 78 70 6f 72 74 44 65      var exportDe
253a0 63 6c 61 72 61 74 69 6f 6e 3b 0a 20 20 09 20 20  claration;.  .  
253b0 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 6d        if (this.m
253c0 61 74 63 68 4b 65 79 77 6f 72 64 28 27 64 65 66  atchKeyword('def
253d0 61 75 6c 74 27 29 29 20 7b 0a 20 20 09 20 20 20  ault')) {.  .   
253e0 20 20 20 20 20 20 20 20 20 2f 2f 20 65 78 70 6f           // expo
253f0 72 74 20 64 65 66 61 75 6c 74 20 2e 2e 2e 0a 20  rt default .... 
25400 20 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68   .            th
25410 69 73 2e 6e 65 78 74 54 6f 6b 65 6e 28 29 3b 0a  is.nextToken();.
25420 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 69    .            i
25430 66 20 28 74 68 69 73 2e 6d 61 74 63 68 4b 65 79  f (this.matchKey
25440 77 6f 72 64 28 27 66 75 6e 63 74 69 6f 6e 27 29  word('function')
25450 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ) {.  .         
25460 20 20 20 20 20 20 20 2f 2f 20 65 78 70 6f 72 74         // export
25470 20 64 65 66 61 75 6c 74 20 66 75 6e 63 74 69 6f   default functio
25480 6e 20 66 6f 6f 20 28 29 20 7b 7d 0a 20 20 09 20  n foo () {}.  . 
25490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
254a0 2f 20 65 78 70 6f 72 74 20 64 65 66 61 75 6c 74  / export default
254b0 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 7d 0a   function () {}.
254c0 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
254d0 20 20 20 76 61 72 20 64 65 63 6c 61 72 61 74 69     var declarati
254e0 6f 6e 20 3d 20 74 68 69 73 2e 70 61 72 73 65 46  on = this.parseF
254f0 75 6e 63 74 69 6f 6e 44 65 63 6c 61 72 61 74 69  unctionDeclarati
25500 6f 6e 28 74 72 75 65 29 3b 0a 20 20 09 20 20 20  on(true);.  .   
25510 20 20 20 20 20 20 20 20 20 20 20 20 20 65 78 70               exp
25520 6f 72 74 44 65 63 6c 61 72 61 74 69 6f 6e 20 3d  ortDeclaration =
25530 20 74 68 69 73 2e 66 69 6e 61 6c 69 7a 65 28 6e   this.finalize(n
25540 6f 64 65 2c 20 6e 65 77 20 4e 6f 64 65 2e 45 78  ode, new Node.Ex
25550 70 6f 72 74 44 65 66 61 75 6c 74 44 65 63 6c 61  portDefaultDecla
25560 72 61 74 69 6f 6e 28 64 65 63 6c 61 72 61 74 69  ration(declarati
25570 6f 6e 29 29 3b 0a 20 20 09 20 20 20 20 20 20 20  on));.  .       
25580 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20       }.  .      
25590 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 74        else if (t
255a0 68 69 73 2e 6d 61 74 63 68 4b 65 79 77 6f 72 64  his.matchKeyword
255b0 28 27 63 6c 61 73 73 27 29 29 20 7b 0a 20 20 09  ('class')) {.  .
255c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
255d0 2f 2f 20 65 78 70 6f 72 74 20 64 65 66 61 75 6c  // export defaul
255e0 74 20 63 6c 61 73 73 20 66 6f 6f 20 7b 7d 0a 20  t class foo {}. 
255f0 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
25600 20 20 76 61 72 20 64 65 63 6c 61 72 61 74 69 6f    var declaratio
25610 6e 20 3d 20 74 68 69 73 2e 70 61 72 73 65 43 6c  n = this.parseCl
25620 61 73 73 44 65 63 6c 61 72 61 74 69 6f 6e 28 74  assDeclaration(t
25630 72 75 65 29 3b 0a 20 20 09 20 20 20 20 20 20 20  rue);.  .       
25640 20 20 20 20 20 20 20 20 20 65 78 70 6f 72 74 44           exportD
25650 65 63 6c 61 72 61 74 69 6f 6e 20 3d 20 74 68 69  eclaration = thi
25660 73 2e 66 69 6e 61 6c 69 7a 65 28 6e 6f 64 65 2c  s.finalize(node,
25670 20 6e 65 77 20 4e 6f 64 65 2e 45 78 70 6f 72 74   new Node.Export
25680 44 65 66 61 75 6c 74 44 65 63 6c 61 72 61 74 69  DefaultDeclarati
25690 6f 6e 28 64 65 63 6c 61 72 61 74 69 6f 6e 29 29  on(declaration))
256a0 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
256b0 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   }.  .          
256c0 20 20 65 6c 73 65 20 7b 0a 20 20 09 20 20 20 20    else {.  .    
256d0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
256e0 74 68 69 73 2e 6d 61 74 63 68 43 6f 6e 74 65 78  this.matchContex
256f0 74 75 61 6c 4b 65 79 77 6f 72 64 28 27 66 72 6f  tualKeyword('fro
25700 6d 27 29 29 20 7b 0a 20 20 09 20 20 20 20 20 20  m')) {.  .      
25710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
25720 69 73 2e 74 68 72 6f 77 45 72 72 6f 72 28 6d 65  is.throwError(me
25730 73 73 61 67 65 73 5f 31 2e 4d 65 73 73 61 67 65  ssages_1.Message
25740 73 2e 55 6e 65 78 70 65 63 74 65 64 54 6f 6b 65  s.UnexpectedToke
25750 6e 2c 20 74 68 69 73 2e 6c 6f 6f 6b 61 68 65 61  n, this.lookahea
25760 64 2e 76 61 6c 75 65 29 3b 0a 20 20 09 20 20 20  d.value);.  .   
25770 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20               }. 
25780 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
25790 20 20 2f 2f 20 65 78 70 6f 72 74 20 64 65 66 61    // export defa
257a0 75 6c 74 20 7b 7d 3b 0a 20 20 09 20 20 20 20 20  ult {};.  .     
257b0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 65 78             // ex
257c0 70 6f 72 74 20 64 65 66 61 75 6c 74 20 5b 5d 3b  port default [];
257d0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
257e0 20 20 20 20 2f 2f 20 65 78 70 6f 72 74 20 64 65      // export de
257f0 66 61 75 6c 74 20 28 31 20 2b 20 32 29 3b 0a 20  fault (1 + 2);. 
25800 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
25810 20 20 76 61 72 20 64 65 63 6c 61 72 61 74 69 6f    var declaratio
25820 6e 20 3d 20 74 68 69 73 2e 6d 61 74 63 68 28 27  n = this.match('
25830 7b 27 29 20 3f 20 74 68 69 73 2e 70 61 72 73 65  {') ? this.parse
25840 4f 62 6a 65 63 74 49 6e 69 74 69 61 6c 69 7a 65  ObjectInitialize
25850 72 28 29 20 3a 0a 20 20 09 20 20 20 20 20 20 20  r() :.  .       
25860 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
25870 73 2e 6d 61 74 63 68 28 27 5b 27 29 20 3f 20 74  s.match('[') ? t
25880 68 69 73 2e 70 61 72 73 65 41 72 72 61 79 49 6e  his.parseArrayIn
25890 69 74 69 61 6c 69 7a 65 72 28 29 20 3a 20 74 68  itializer() : th
258a0 69 73 2e 70 61 72 73 65 41 73 73 69 67 6e 6d 65  is.parseAssignme
258b0 6e 74 45 78 70 72 65 73 73 69 6f 6e 28 29 3b 0a  ntExpression();.
258c0 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
258d0 20 20 20 74 68 69 73 2e 63 6f 6e 73 75 6d 65 53     this.consumeS
258e0 65 6d 69 63 6f 6c 6f 6e 28 29 3b 0a 20 20 09 20  emicolon();.  . 
258f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
25900 78 70 6f 72 74 44 65 63 6c 61 72 61 74 69 6f 6e  xportDeclaration
25910 20 3d 20 74 68 69 73 2e 66 69 6e 61 6c 69 7a 65   = this.finalize
25920 28 6e 6f 64 65 2c 20 6e 65 77 20 4e 6f 64 65 2e  (node, new Node.
25930 45 78 70 6f 72 74 44 65 66 61 75 6c 74 44 65 63  ExportDefaultDec
25940 6c 61 72 61 74 69 6f 6e 28 64 65 63 6c 61 72 61  laration(declara
25950 74 69 6f 6e 29 29 3b 0a 20 20 09 20 20 20 20 20  tion));.  .     
25960 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20         }.  .    
25970 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20      }.  .       
25980 20 65 6c 73 65 20 69 66 20 28 74 68 69 73 2e 6d   else if (this.m
25990 61 74 63 68 28 27 2a 27 29 29 20 7b 0a 20 20 09  atch('*')) {.  .
259a0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 65              // e
259b0 78 70 6f 72 74 20 2a 20 66 72 6f 6d 20 27 66 6f  xport * from 'fo
259c0 6f 27 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  o';.  .         
259d0 20 20 20 74 68 69 73 2e 6e 65 78 74 54 6f 6b 65     this.nextToke
259e0 6e 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  n();.  .        
259f0 20 20 20 20 69 66 20 28 21 74 68 69 73 2e 6d 61      if (!this.ma
25a00 74 63 68 43 6f 6e 74 65 78 74 75 61 6c 4b 65 79  tchContextualKey
25a10 77 6f 72 64 28 27 66 72 6f 6d 27 29 29 20 7b 0a  word('from')) {.
25a20 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
25a30 20 20 20 76 61 72 20 6d 65 73 73 61 67 65 20 3d     var message =
25a40 20 74 68 69 73 2e 6c 6f 6f 6b 61 68 65 61 64 2e   this.lookahead.
25a50 76 61 6c 75 65 20 3f 20 6d 65 73 73 61 67 65 73  value ? messages
25a60 5f 31 2e 4d 65 73 73 61 67 65 73 2e 55 6e 65 78  _1.Messages.Unex
25a70 70 65 63 74 65 64 54 6f 6b 65 6e 20 3a 20 6d 65  pectedToken : me
25a80 73 73 61 67 65 73 5f 31 2e 4d 65 73 73 61 67 65  ssages_1.Message
25a90 73 2e 4d 69 73 73 69 6e 67 46 72 6f 6d 43 6c 61  s.MissingFromCla
25aa0 75 73 65 3b 0a 20 20 09 20 20 20 20 20 20 20 20  use;.  .        
25ab0 20 20 20 20 20 20 20 20 74 68 69 73 2e 74 68 72          this.thr
25ac0 6f 77 45 72 72 6f 72 28 6d 65 73 73 61 67 65 2c  owError(message,
25ad0 20 74 68 69 73 2e 6c 6f 6f 6b 61 68 65 61 64 2e   this.lookahead.
25ae0 76 61 6c 75 65 29 3b 0a 20 20 09 20 20 20 20 20  value);.  .     
25af0 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20         }.  .    
25b00 20 20 20 20 20 20 20 20 74 68 69 73 2e 6e 65 78          this.nex
25b10 74 54 6f 6b 65 6e 28 29 3b 0a 20 20 09 20 20 20  tToken();.  .   
25b20 20 20 20 20 20 20 20 20 20 76 61 72 20 73 72 63           var src
25b30 20 3d 20 74 68 69 73 2e 70 61 72 73 65 4d 6f 64   = this.parseMod
25b40 75 6c 65 53 70 65 63 69 66 69 65 72 28 29 3b 0a  uleSpecifier();.
25b50 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 74    .            t
25b60 68 69 73 2e 63 6f 6e 73 75 6d 65 53 65 6d 69 63  his.consumeSemic
25b70 6f 6c 6f 6e 28 29 3b 0a 20 20 09 20 20 20 20 20  olon();.  .     
25b80 20 20 20 20 20 20 20 65 78 70 6f 72 74 44 65 63         exportDec
25b90 6c 61 72 61 74 69 6f 6e 20 3d 20 74 68 69 73 2e  laration = this.
25ba0 66 69 6e 61 6c 69 7a 65 28 6e 6f 64 65 2c 20 6e  finalize(node, n
25bb0 65 77 20 4e 6f 64 65 2e 45 78 70 6f 72 74 41 6c  ew Node.ExportAl
25bc0 6c 44 65 63 6c 61 72 61 74 69 6f 6e 28 73 72 63  lDeclaration(src
25bd0 29 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 7d  ));.  .        }
25be0 0a 20 20 09 20 20 20 20 20 20 20 20 65 6c 73 65  .  .        else
25bf0 20 69 66 20 28 74 68 69 73 2e 6c 6f 6f 6b 61 68   if (this.lookah
25c00 65 61 64 2e 74 79 70 65 20 3d 3d 3d 20 74 6f 6b  ead.type === tok
25c10 65 6e 5f 31 2e 54 6f 6b 65 6e 2e 4b 65 79 77 6f  en_1.Token.Keywo
25c20 72 64 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20  rd) {.  .       
25c30 20 20 20 20 20 2f 2f 20 65 78 70 6f 72 74 20 76       // export v
25c40 61 72 20 66 20 3d 20 31 3b 0a 20 20 09 20 20 20  ar f = 1;.  .   
25c50 20 20 20 20 20 20 20 20 20 76 61 72 20 64 65 63           var dec
25c60 6c 61 72 61 74 69 6f 6e 20 3d 20 76 6f 69 64 20  laration = void 
25c70 30 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  0;.  .          
25c80 20 20 73 77 69 74 63 68 20 28 74 68 69 73 2e 6c    switch (this.l
25c90 6f 6f 6b 61 68 65 61 64 2e 76 61 6c 75 65 29 20  ookahead.value) 
25ca0 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  {.  .           
25cb0 20 20 20 20 20 63 61 73 65 20 27 6c 65 74 27 3a       case 'let':
25cc0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
25cd0 20 20 20 20 63 61 73 65 20 27 63 6f 6e 73 74 27      case 'const'
25ce0 3a 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  :.  .           
25cf0 20 20 20 20 20 20 20 20 20 64 65 63 6c 61 72 61           declara
25d00 74 69 6f 6e 20 3d 20 74 68 69 73 2e 70 61 72 73  tion = this.pars
25d10 65 4c 65 78 69 63 61 6c 44 65 63 6c 61 72 61 74  eLexicalDeclarat
25d20 69 6f 6e 28 7b 20 69 6e 46 6f 72 3a 20 66 61 6c  ion({ inFor: fal
25d30 73 65 20 7d 29 3b 0a 20 20 09 20 20 20 20 20 20  se });.  .      
25d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72                br
25d50 65 61 6b 3b 0a 20 20 09 20 20 20 20 20 20 20 20  eak;.  .        
25d60 20 20 20 20 20 20 20 20 63 61 73 65 20 27 76 61          case 'va
25d70 72 27 3a 0a 20 20 09 20 20 20 20 20 20 20 20 20  r':.  .         
25d80 20 20 20 20 20 20 20 63 61 73 65 20 27 63 6c 61         case 'cla
25d90 73 73 27 3a 0a 20 20 09 20 20 20 20 20 20 20 20  ss':.  .        
25da0 20 20 20 20 20 20 20 20 63 61 73 65 20 27 66 75          case 'fu
25db0 6e 63 74 69 6f 6e 27 3a 0a 20 20 09 20 20 20 20  nction':.  .    
25dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25dd0 64 65 63 6c 61 72 61 74 69 6f 6e 20 3d 20 74 68  declaration = th
25de0 69 73 2e 70 61 72 73 65 53 74 61 74 65 6d 65 6e  is.parseStatemen
25df0 74 4c 69 73 74 49 74 65 6d 28 29 3b 0a 20 20 09  tListItem();.  .
25e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25e10 20 20 20 20 62 72 65 61 6b 3b 0a 20 20 09 20 20      break;.  .  
25e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65                de
25e30 66 61 75 6c 74 3a 0a 20 20 09 20 20 20 20 20 20  fault:.  .      
25e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
25e50 69 73 2e 74 68 72 6f 77 55 6e 65 78 70 65 63 74  is.throwUnexpect
25e60 65 64 54 6f 6b 65 6e 28 74 68 69 73 2e 6c 6f 6f  edToken(this.loo
25e70 6b 61 68 65 61 64 29 3b 0a 20 20 09 20 20 20 20  kahead);.  .    
25e80 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20          }.  .   
25e90 20 20 20 20 20 20 20 20 20 65 78 70 6f 72 74 44           exportD
25ea0 65 63 6c 61 72 61 74 69 6f 6e 20 3d 20 74 68 69  eclaration = thi
25eb0 73 2e 66 69 6e 61 6c 69 7a 65 28 6e 6f 64 65 2c  s.finalize(node,
25ec0 20 6e 65 77 20 4e 6f 64 65 2e 45 78 70 6f 72 74   new Node.Export
25ed0 4e 61 6d 65 64 44 65 63 6c 61 72 61 74 69 6f 6e  NamedDeclaration
25ee0 28 64 65 63 6c 61 72 61 74 69 6f 6e 2c 20 5b 5d  (declaration, []
25ef0 2c 20 6e 75 6c 6c 29 29 3b 0a 20 20 09 20 20 20  , null));.  .   
25f00 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20       }.  .      
25f10 20 20 65 6c 73 65 20 7b 0a 20 20 09 20 20 20 20    else {.  .    
25f20 20 20 20 20 20 20 20 20 76 61 72 20 73 70 65 63          var spec
25f30 69 66 69 65 72 73 20 3d 20 5b 5d 3b 0a 20 20 09  ifiers = [];.  .
25f40 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20              var 
25f50 73 6f 75 72 63 65 20 3d 20 6e 75 6c 6c 3b 0a 20  source = null;. 
25f60 20 09 20 20 20 20 20 20 20 20 20 20 20 20 76 61   .            va
25f70 72 20 69 73 45 78 70 6f 72 74 46 72 6f 6d 49 64  r isExportFromId
25f80 65 6e 74 69 66 69 65 72 20 3d 20 66 61 6c 73 65  entifier = false
25f90 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
25fa0 20 74 68 69 73 2e 65 78 70 65 63 74 28 27 7b 27   this.expect('{'
25fb0 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  );.  .          
25fc0 20 20 77 68 69 6c 65 20 28 21 74 68 69 73 2e 6d    while (!this.m
25fd0 61 74 63 68 28 27 7d 27 29 29 20 7b 0a 20 20 09  atch('}')) {.  .
25fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25ff0 69 73 45 78 70 6f 72 74 46 72 6f 6d 49 64 65 6e  isExportFromIden
26000 74 69 66 69 65 72 20 3d 20 69 73 45 78 70 6f 72  tifier = isExpor
26010 74 46 72 6f 6d 49 64 65 6e 74 69 66 69 65 72 20  tFromIdentifier 
26020 7c 7c 20 74 68 69 73 24 31 2e 6d 61 74 63 68 4b  || this$1.matchK
26030 65 79 77 6f 72 64 28 27 64 65 66 61 75 6c 74 27  eyword('default'
26040 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  );.  .          
26050 20 20 20 20 20 20 73 70 65 63 69 66 69 65 72 73        specifiers
26060 2e 70 75 73 68 28 74 68 69 73 24 31 2e 70 61 72  .push(this$1.par
26070 73 65 45 78 70 6f 72 74 53 70 65 63 69 66 69 65  seExportSpecifie
26080 72 28 29 29 3b 0a 20 20 09 20 20 20 20 20 20 20  r());.  .       
26090 20 20 20 20 20 20 20 20 20 69 66 20 28 21 74 68           if (!th
260a0 69 73 24 31 2e 6d 61 74 63 68 28 27 7d 27 29 29  is$1.match('}'))
260b0 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   {.  .          
260c0 20 20 20 20 20 20 20 20 20 20 74 68 69 73 24 31            this$1
260d0 2e 65 78 70 65 63 74 28 27 2c 27 29 3b 0a 20 20  .expect(',');.  
260e0 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
260f0 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   }.  .          
26100 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20    }.  .         
26110 20 20 20 74 68 69 73 2e 65 78 70 65 63 74 28 27     this.expect('
26120 7d 27 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  }');.  .        
26130 20 20 20 20 69 66 20 28 74 68 69 73 2e 6d 61 74      if (this.mat
26140 63 68 43 6f 6e 74 65 78 74 75 61 6c 4b 65 79 77  chContextualKeyw
26150 6f 72 64 28 27 66 72 6f 6d 27 29 29 20 7b 0a 20  ord('from')) {. 
26160 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
26170 20 20 2f 2f 20 65 78 70 6f 72 74 20 7b 64 65 66    // export {def
26180 61 75 6c 74 7d 20 66 72 6f 6d 20 27 66 6f 6f 27  ault} from 'foo'
26190 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
261a0 20 20 20 20 20 2f 2f 20 65 78 70 6f 72 74 20 7b       // export {
261b0 66 6f 6f 7d 20 66 72 6f 6d 20 27 66 6f 6f 27 3b  foo} from 'foo';
261c0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
261d0 20 20 20 20 74 68 69 73 2e 6e 65 78 74 54 6f 6b      this.nextTok
261e0 65 6e 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20  en();.  .       
261f0 20 20 20 20 20 20 20 20 20 73 6f 75 72 63 65 20           source 
26200 3d 20 74 68 69 73 2e 70 61 72 73 65 4d 6f 64 75  = this.parseModu
26210 6c 65 53 70 65 63 69 66 69 65 72 28 29 3b 0a 20  leSpecifier();. 
26220 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
26230 20 20 74 68 69 73 2e 63 6f 6e 73 75 6d 65 53 65    this.consumeSe
26240 6d 69 63 6f 6c 6f 6e 28 29 3b 0a 20 20 09 20 20  micolon();.  .  
26250 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20            }.  . 
26260 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20             else 
26270 69 66 20 28 69 73 45 78 70 6f 72 74 46 72 6f 6d  if (isExportFrom
26280 49 64 65 6e 74 69 66 69 65 72 29 20 7b 0a 20 20  Identifier) {.  
26290 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
262a0 20 2f 2f 20 65 78 70 6f 72 74 20 7b 64 65 66 61   // export {defa
262b0 75 6c 74 7d 3b 20 2f 2f 20 6d 69 73 73 69 6e 67  ult}; // missing
262c0 20 66 72 6f 6d 43 6c 61 75 73 65 0a 20 20 09 20   fromClause.  . 
262d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76                 v
262e0 61 72 20 6d 65 73 73 61 67 65 20 3d 20 74 68 69  ar message = thi
262f0 73 2e 6c 6f 6f 6b 61 68 65 61 64 2e 76 61 6c 75  s.lookahead.valu
26300 65 20 3f 20 6d 65 73 73 61 67 65 73 5f 31 2e 4d  e ? messages_1.M
26310 65 73 73 61 67 65 73 2e 55 6e 65 78 70 65 63 74  essages.Unexpect
26320 65 64 54 6f 6b 65 6e 20 3a 20 6d 65 73 73 61 67  edToken : messag
26330 65 73 5f 31 2e 4d 65 73 73 61 67 65 73 2e 4d 69  es_1.Messages.Mi
26340 73 73 69 6e 67 46 72 6f 6d 43 6c 61 75 73 65 3b  ssingFromClause;
26350 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
26360 20 20 20 20 74 68 69 73 2e 74 68 72 6f 77 45 72      this.throwEr
26370 72 6f 72 28 6d 65 73 73 61 67 65 2c 20 74 68 69  ror(message, thi
26380 73 2e 6c 6f 6f 6b 61 68 65 61 64 2e 76 61 6c 75  s.lookahead.valu
26390 65 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  e);.  .         
263a0 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20     }.  .        
263b0 20 20 20 20 65 6c 73 65 20 7b 0a 20 20 09 20 20      else {.  .  
263c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
263d0 20 65 78 70 6f 72 74 20 7b 66 6f 6f 7d 3b 0a 20   export {foo};. 
263e0 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
263f0 20 20 74 68 69 73 2e 63 6f 6e 73 75 6d 65 53 65    this.consumeSe
26400 6d 69 63 6f 6c 6f 6e 28 29 3b 0a 20 20 09 20 20  micolon();.  .  
26410 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20            }.  . 
26420 20 20 20 20 20 20 20 20 20 20 20 65 78 70 6f 72             expor
26430 74 44 65 63 6c 61 72 61 74 69 6f 6e 20 3d 20 74  tDeclaration = t
26440 68 69 73 2e 66 69 6e 61 6c 69 7a 65 28 6e 6f 64  his.finalize(nod
26450 65 2c 20 6e 65 77 20 4e 6f 64 65 2e 45 78 70 6f  e, new Node.Expo
26460 72 74 4e 61 6d 65 64 44 65 63 6c 61 72 61 74 69  rtNamedDeclarati
26470 6f 6e 28 6e 75 6c 6c 2c 20 73 70 65 63 69 66 69  on(null, specifi
26480 65 72 73 2c 20 73 6f 75 72 63 65 29 29 3b 0a 20  ers, source));. 
26490 20 09 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20   .        }.  . 
264a0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 65 78         return ex
264b0 70 6f 72 74 44 65 63 6c 61 72 61 74 69 6f 6e 3b  portDeclaration;
264c0 0a 20 20 09 20 20 20 20 7d 3b 0a 20 20 09 20 20  .  .    };.  .  
264d0 20 20 72 65 74 75 72 6e 20 50 61 72 73 65 72 3b    return Parser;
264e0 0a 20 20 09 7d 28 29 29 3b 0a 20 20 09 65 78 70  .  .}());.  .exp
264f0 6f 72 74 73 2e 50 61 72 73 65 72 20 3d 20 50 61  orts.Parser = Pa
26500 72 73 65 72 3b 0a 0a 0a 20 20 2f 2a 2a 2a 2f 20  rser;...  /***/ 
26510 7d 2c 0a 20 20 2f 2a 20 34 20 2a 2f 0a 20 20 2f  },.  /* 4 */.  /
26520 2a 2a 2a 2f 20 66 75 6e 63 74 69 6f 6e 28 6d 6f  ***/ function(mo
26530 64 75 6c 65 2c 20 65 78 70 6f 72 74 73 29 20 7b  dule, exports) {
26540 0a 20 20 09 66 75 6e 63 74 69 6f 6e 20 61 73 73  .  .function ass
26550 65 72 74 28 63 6f 6e 64 69 74 69 6f 6e 2c 20 6d  ert(condition, m
26560 65 73 73 61 67 65 29 20 7b 0a 20 20 09 20 20 20  essage) {.  .   
26570 20 2f 2a 20 69 73 74 61 6e 62 75 6c 20 69 67 6e   /* istanbul ign
26580 6f 72 65 20 69 66 20 2a 2f 0a 20 20 09 20 20 20  ore if */.  .   
26590 20 69 66 20 28 21 63 6f 6e 64 69 74 69 6f 6e 29   if (!condition)
265a0 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 74 68   {.  .        th
265b0 72 6f 77 20 6e 65 77 20 45 72 72 6f 72 28 27 41  row new Error('A
265c0 53 53 45 52 54 3a 20 27 20 2b 20 6d 65 73 73 61  SSERT: ' + messa
265d0 67 65 29 3b 0a 20 20 09 20 20 20 20 7d 0a 20 20  ge);.  .    }.  
265e0 09 7d 0a 20 20 09 65 78 70 6f 72 74 73 2e 61 73  .}.  .exports.as
265f0 73 65 72 74 20 3d 20 61 73 73 65 72 74 3b 0a 0a  sert = assert;..
26600 0a 20 20 2f 2a 2a 2a 2f 20 7d 2c 0a 20 20 2f 2a  .  /***/ },.  /*
26610 20 35 20 2a 2f 0a 20 20 2f 2a 2a 2a 2f 20 66 75   5 */.  /***/ fu
26620 6e 63 74 69 6f 6e 28 6d 6f 64 75 6c 65 2c 20 65  nction(module, e
26630 78 70 6f 72 74 73 29 20 7b 0a 20 20 09 2f 2f 20  xports) {.  .// 
26640 45 72 72 6f 72 20 6d 65 73 73 61 67 65 73 20 73  Error messages s
26650 68 6f 75 6c 64 20 62 65 20 69 64 65 6e 74 69 63  hould be identic
26660 61 6c 20 74 6f 20 56 38 2e 0a 20 20 09 65 78 70  al to V8..  .exp
26670 6f 72 74 73 2e 4d 65 73 73 61 67 65 73 20 3d 20  orts.Messages = 
26680 7b 0a 20 20 09 20 20 20 20 55 6e 65 78 70 65 63  {.  .    Unexpec
26690 74 65 64 54 6f 6b 65 6e 3a 20 27 55 6e 65 78 70  tedToken: 'Unexp
266a0 65 63 74 65 64 20 74 6f 6b 65 6e 20 25 30 27 2c  ected token %0',
266b0 0a 20 20 09 20 20 20 20 55 6e 65 78 70 65 63 74  .  .    Unexpect
266c0 65 64 54 6f 6b 65 6e 49 6c 6c 65 67 61 6c 3a 20  edTokenIllegal: 
266d0 27 55 6e 65 78 70 65 63 74 65 64 20 74 6f 6b 65  'Unexpected toke
266e0 6e 20 49 4c 4c 45 47 41 4c 27 2c 0a 20 20 09 20  n ILLEGAL',.  . 
266f0 20 20 20 55 6e 65 78 70 65 63 74 65 64 4e 75 6d     UnexpectedNum
26700 62 65 72 3a 20 27 55 6e 65 78 70 65 63 74 65 64  ber: 'Unexpected
26710 20 6e 75 6d 62 65 72 27 2c 0a 20 20 09 20 20 20   number',.  .   
26720 20 55 6e 65 78 70 65 63 74 65 64 53 74 72 69 6e   UnexpectedStrin
26730 67 3a 20 27 55 6e 65 78 70 65 63 74 65 64 20 73  g: 'Unexpected s
26740 74 72 69 6e 67 27 2c 0a 20 20 09 20 20 20 20 55  tring',.  .    U
26750 6e 65 78 70 65 63 74 65 64 49 64 65 6e 74 69 66  nexpectedIdentif
26760 69 65 72 3a 20 27 55 6e 65 78 70 65 63 74 65 64  ier: 'Unexpected
26770 20 69 64 65 6e 74 69 66 69 65 72 27 2c 0a 20 20   identifier',.  
26780 09 20 20 20 20 55 6e 65 78 70 65 63 74 65 64 52  .    UnexpectedR
26790 65 73 65 72 76 65 64 3a 20 27 55 6e 65 78 70 65  eserved: 'Unexpe
267a0 63 74 65 64 20 72 65 73 65 72 76 65 64 20 77 6f  cted reserved wo
267b0 72 64 27 2c 0a 20 20 09 20 20 20 20 55 6e 65 78  rd',.  .    Unex
267c0 70 65 63 74 65 64 54 65 6d 70 6c 61 74 65 3a 20  pectedTemplate: 
267d0 27 55 6e 65 78 70 65 63 74 65 64 20 71 75 61 73  'Unexpected quas
267e0 69 20 25 30 27 2c 0a 20 20 09 20 20 20 20 55 6e  i %0',.  .    Un
267f0 65 78 70 65 63 74 65 64 45 4f 53 3a 20 27 55 6e  expectedEOS: 'Un
26800 65 78 70 65 63 74 65 64 20 65 6e 64 20 6f 66 20  expected end of 
26810 69 6e 70 75 74 27 2c 0a 20 20 09 20 20 20 20 4e  input',.  .    N
26820 65 77 6c 69 6e 65 41 66 74 65 72 54 68 72 6f 77  ewlineAfterThrow
26830 3a 20 27 49 6c 6c 65 67 61 6c 20 6e 65 77 6c 69  : 'Illegal newli
26840 6e 65 20 61 66 74 65 72 20 74 68 72 6f 77 27 2c  ne after throw',
26850 0a 20 20 09 20 20 20 20 49 6e 76 61 6c 69 64 52  .  .    InvalidR
26860 65 67 45 78 70 3a 20 27 49 6e 76 61 6c 69 64 20  egExp: 'Invalid 
26870 72 65 67 75 6c 61 72 20 65 78 70 72 65 73 73 69  regular expressi
26880 6f 6e 27 2c 0a 20 20 09 20 20 20 20 55 6e 74 65  on',.  .    Unte
26890 72 6d 69 6e 61 74 65 64 52 65 67 45 78 70 3a 20  rminatedRegExp: 
268a0 27 49 6e 76 61 6c 69 64 20 72 65 67 75 6c 61 72  'Invalid regular
268b0 20 65 78 70 72 65 73 73 69 6f 6e 3a 20 6d 69 73   expression: mis
268c0 73 69 6e 67 20 2f 27 2c 0a 20 20 09 20 20 20 20  sing /',.  .    
268d0 49 6e 76 61 6c 69 64 4c 48 53 49 6e 41 73 73 69  InvalidLHSInAssi
268e0 67 6e 6d 65 6e 74 3a 20 27 49 6e 76 61 6c 69 64  gnment: 'Invalid
268f0 20 6c 65 66 74 2d 68 61 6e 64 20 73 69 64 65 20   left-hand side 
26900 69 6e 20 61 73 73 69 67 6e 6d 65 6e 74 27 2c 0a  in assignment',.
26910 20 20 09 20 20 20 20 49 6e 76 61 6c 69 64 4c 48    .    InvalidLH
26920 53 49 6e 46 6f 72 49 6e 3a 20 27 49 6e 76 61 6c  SInForIn: 'Inval
26930 69 64 20 6c 65 66 74 2d 68 61 6e 64 20 73 69 64  id left-hand sid
26940 65 20 69 6e 20 66 6f 72 2d 69 6e 27 2c 0a 20 20  e in for-in',.  
26950 09 20 20 20 20 49 6e 76 61 6c 69 64 4c 48 53 49  .    InvalidLHSI
26960 6e 46 6f 72 4c 6f 6f 70 3a 20 27 49 6e 76 61 6c  nForLoop: 'Inval
26970 69 64 20 6c 65 66 74 2d 68 61 6e 64 20 73 69 64  id left-hand sid
26980 65 20 69 6e 20 66 6f 72 2d 6c 6f 6f 70 27 2c 0a  e in for-loop',.
26990 20 20 09 20 20 20 20 4d 75 6c 74 69 70 6c 65 44    .    MultipleD
269a0 65 66 61 75 6c 74 73 49 6e 53 77 69 74 63 68 3a  efaultsInSwitch:
269b0 20 27 4d 6f 72 65 20 74 68 61 6e 20 6f 6e 65 20   'More than one 
269c0 64 65 66 61 75 6c 74 20 63 6c 61 75 73 65 20 69  default clause i
269d0 6e 20 73 77 69 74 63 68 20 73 74 61 74 65 6d 65  n switch stateme
269e0 6e 74 27 2c 0a 20 20 09 20 20 20 20 4e 6f 43 61  nt',.  .    NoCa
269f0 74 63 68 4f 72 46 69 6e 61 6c 6c 79 3a 20 27 4d  tchOrFinally: 'M
26a00 69 73 73 69 6e 67 20 63 61 74 63 68 20 6f 72 20  issing catch or 
26a10 66 69 6e 61 6c 6c 79 20 61 66 74 65 72 20 74 72  finally after tr
26a20 79 27 2c 0a 20 20 09 20 20 20 20 55 6e 6b 6e 6f  y',.  .    Unkno
26a30 77 6e 4c 61 62 65 6c 3a 20 27 55 6e 64 65 66 69  wnLabel: 'Undefi
26a40 6e 65 64 20 6c 61 62 65 6c 20 5c 27 25 30 5c 27  ned label \'%0\'
26a50 27 2c 0a 20 20 09 20 20 20 20 52 65 64 65 63 6c  ',.  .    Redecl
26a60 61 72 61 74 69 6f 6e 3a 20 27 25 30 20 5c 27 25  aration: '%0 \'%
26a70 31 5c 27 20 68 61 73 20 61 6c 72 65 61 64 79 20  1\' has already 
26a80 62 65 65 6e 20 64 65 63 6c 61 72 65 64 27 2c 0a  been declared',.
26a90 20 20 09 20 20 20 20 49 6c 6c 65 67 61 6c 43 6f    .    IllegalCo
26aa0 6e 74 69 6e 75 65 3a 20 27 49 6c 6c 65 67 61 6c  ntinue: 'Illegal
26ab0 20 63 6f 6e 74 69 6e 75 65 20 73 74 61 74 65 6d   continue statem
26ac0 65 6e 74 27 2c 0a 20 20 09 20 20 20 20 49 6c 6c  ent',.  .    Ill
26ad0 65 67 61 6c 42 72 65 61 6b 3a 20 27 49 6c 6c 65  egalBreak: 'Ille
26ae0 67 61 6c 20 62 72 65 61 6b 20 73 74 61 74 65 6d  gal break statem
26af0 65 6e 74 27 2c 0a 20 20 09 20 20 20 20 49 6c 6c  ent',.  .    Ill
26b00 65 67 61 6c 52 65 74 75 72 6e 3a 20 27 49 6c 6c  egalReturn: 'Ill
26b10 65 67 61 6c 20 72 65 74 75 72 6e 20 73 74 61 74  egal return stat
26b20 65 6d 65 6e 74 27 2c 0a 20 20 09 20 20 20 20 53  ement',.  .    S
26b30 74 72 69 63 74 4d 6f 64 65 57 69 74 68 3a 20 27  trictModeWith: '
26b40 53 74 72 69 63 74 20 6d 6f 64 65 20 63 6f 64 65  Strict mode code
26b50 20 6d 61 79 20 6e 6f 74 20 69 6e 63 6c 75 64 65   may not include
26b60 20 61 20 77 69 74 68 20 73 74 61 74 65 6d 65 6e   a with statemen
26b70 74 27 2c 0a 20 20 09 20 20 20 20 53 74 72 69 63  t',.  .    Stric
26b80 74 43 61 74 63 68 56 61 72 69 61 62 6c 65 3a 20  tCatchVariable: 
26b90 27 43 61 74 63 68 20 76 61 72 69 61 62 6c 65 20  'Catch variable 
26ba0 6d 61 79 20 6e 6f 74 20 62 65 20 65 76 61 6c 20  may not be eval 
26bb0 6f 72 20 61 72 67 75 6d 65 6e 74 73 20 69 6e 20  or arguments in 
26bc0 73 74 72 69 63 74 20 6d 6f 64 65 27 2c 0a 20 20  strict mode',.  
26bd0 09 20 20 20 20 53 74 72 69 63 74 56 61 72 4e 61  .    StrictVarNa
26be0 6d 65 3a 20 27 56 61 72 69 61 62 6c 65 20 6e 61  me: 'Variable na
26bf0 6d 65 20 6d 61 79 20 6e 6f 74 20 62 65 20 65 76  me may not be ev
26c00 61 6c 20 6f 72 20 61 72 67 75 6d 65 6e 74 73 20  al or arguments 
26c10 69 6e 20 73 74 72 69 63 74 20 6d 6f 64 65 27 2c  in strict mode',
26c20 0a 20 20 09 20 20 20 20 53 74 72 69 63 74 50 61  .  .    StrictPa
26c30 72 61 6d 4e 61 6d 65 3a 20 27 50 61 72 61 6d 65  ramName: 'Parame
26c40 74 65 72 20 6e 61 6d 65 20 65 76 61 6c 20 6f 72  ter name eval or
26c50 20 61 72 67 75 6d 65 6e 74 73 20 69 73 20 6e 6f   arguments is no
26c60 74 20 61 6c 6c 6f 77 65 64 20 69 6e 20 73 74 72  t allowed in str
26c70 69 63 74 20 6d 6f 64 65 27 2c 0a 20 20 09 20 20  ict mode',.  .  
26c80 20 20 53 74 72 69 63 74 50 61 72 61 6d 44 75 70    StrictParamDup
26c90 65 3a 20 27 53 74 72 69 63 74 20 6d 6f 64 65 20  e: 'Strict mode 
26ca0 66 75 6e 63 74 69 6f 6e 20 6d 61 79 20 6e 6f 74  function may not
26cb0 20 68 61 76 65 20 64 75 70 6c 69 63 61 74 65 20   have duplicate 
26cc0 70 61 72 61 6d 65 74 65 72 20 6e 61 6d 65 73 27  parameter names'
26cd0 2c 0a 20 20 09 20 20 20 20 53 74 72 69 63 74 46  ,.  .    StrictF
26ce0 75 6e 63 74 69 6f 6e 4e 61 6d 65 3a 20 27 46 75  unctionName: 'Fu
26cf0 6e 63 74 69 6f 6e 20 6e 61 6d 65 20 6d 61 79 20  nction name may 
26d00 6e 6f 74 20 62 65 20 65 76 61 6c 20 6f 72 20 61  not be eval or a
26d10 72 67 75 6d 65 6e 74 73 20 69 6e 20 73 74 72 69  rguments in stri
26d20 63 74 20 6d 6f 64 65 27 2c 0a 20 20 09 20 20 20  ct mode',.  .   
26d30 20 53 74 72 69 63 74 4f 63 74 61 6c 4c 69 74 65   StrictOctalLite
26d40 72 61 6c 3a 20 27 4f 63 74 61 6c 20 6c 69 74 65  ral: 'Octal lite
26d50 72 61 6c 73 20 61 72 65 20 6e 6f 74 20 61 6c 6c  rals are not all
26d60 6f 77 65 64 20 69 6e 20 73 74 72 69 63 74 20 6d  owed in strict m
26d70 6f 64 65 2e 27 2c 0a 20 20 09 20 20 20 20 53 74  ode.',.  .    St
26d80 72 69 63 74 44 65 6c 65 74 65 3a 20 27 44 65 6c  rictDelete: 'Del
26d90 65 74 65 20 6f 66 20 61 6e 20 75 6e 71 75 61 6c  ete of an unqual
26da0 69 66 69 65 64 20 69 64 65 6e 74 69 66 69 65 72  ified identifier
26db0 20 69 6e 20 73 74 72 69 63 74 20 6d 6f 64 65 2e   in strict mode.
26dc0 27 2c 0a 20 20 09 20 20 20 20 53 74 72 69 63 74  ',.  .    Strict
26dd0 4c 48 53 41 73 73 69 67 6e 6d 65 6e 74 3a 20 27  LHSAssignment: '
26de0 41 73 73 69 67 6e 6d 65 6e 74 20 74 6f 20 65 76  Assignment to ev
26df0 61 6c 20 6f 72 20 61 72 67 75 6d 65 6e 74 73 20  al or arguments 
26e00 69 73 20 6e 6f 74 20 61 6c 6c 6f 77 65 64 20 69  is not allowed i
26e10 6e 20 73 74 72 69 63 74 20 6d 6f 64 65 27 2c 0a  n strict mode',.
26e20 20 20 09 20 20 20 20 53 74 72 69 63 74 4c 48 53    .    StrictLHS
26e30 50 6f 73 74 66 69 78 3a 20 27 50 6f 73 74 66 69  Postfix: 'Postfi
26e40 78 20 69 6e 63 72 65 6d 65 6e 74 2f 64 65 63 72  x increment/decr
26e50 65 6d 65 6e 74 20 6d 61 79 20 6e 6f 74 20 68 61  ement may not ha
26e60 76 65 20 65 76 61 6c 20 6f 72 20 61 72 67 75 6d  ve eval or argum
26e70 65 6e 74 73 20 6f 70 65 72 61 6e 64 20 69 6e 20  ents operand in 
26e80 73 74 72 69 63 74 20 6d 6f 64 65 27 2c 0a 20 20  strict mode',.  
26e90 09 20 20 20 20 53 74 72 69 63 74 4c 48 53 50 72  .    StrictLHSPr
26ea0 65 66 69 78 3a 20 27 50 72 65 66 69 78 20 69 6e  efix: 'Prefix in
26eb0 63 72 65 6d 65 6e 74 2f 64 65 63 72 65 6d 65 6e  crement/decremen
26ec0 74 20 6d 61 79 20 6e 6f 74 20 68 61 76 65 20 65  t may not have e
26ed0 76 61 6c 20 6f 72 20 61 72 67 75 6d 65 6e 74 73  val or arguments
26ee0 20 6f 70 65 72 61 6e 64 20 69 6e 20 73 74 72 69   operand in stri
26ef0 63 74 20 6d 6f 64 65 27 2c 0a 20 20 09 20 20 20  ct mode',.  .   
26f00 20 53 74 72 69 63 74 52 65 73 65 72 76 65 64 57   StrictReservedW
26f10 6f 72 64 3a 20 27 55 73 65 20 6f 66 20 66 75 74  ord: 'Use of fut
26f20 75 72 65 20 72 65 73 65 72 76 65 64 20 77 6f 72  ure reserved wor
26f30 64 20 69 6e 20 73 74 72 69 63 74 20 6d 6f 64 65  d in strict mode
26f40 27 2c 0a 20 20 09 20 20 20 20 54 65 6d 70 6c 61  ',.  .    Templa
26f50 74 65 4f 63 74 61 6c 4c 69 74 65 72 61 6c 3a 20  teOctalLiteral: 
26f60 27 4f 63 74 61 6c 20 6c 69 74 65 72 61 6c 73 20  'Octal literals 
26f70 61 72 65 20 6e 6f 74 20 61 6c 6c 6f 77 65 64 20  are not allowed 
26f80 69 6e 20 74 65 6d 70 6c 61 74 65 20 73 74 72 69  in template stri
26f90 6e 67 73 2e 27 2c 0a 20 20 09 20 20 20 20 50 61  ngs.',.  .    Pa
26fa0 72 61 6d 65 74 65 72 41 66 74 65 72 52 65 73 74  rameterAfterRest
26fb0 50 61 72 61 6d 65 74 65 72 3a 20 27 52 65 73 74  Parameter: 'Rest
26fc0 20 70 61 72 61 6d 65 74 65 72 20 6d 75 73 74 20   parameter must 
26fd0 62 65 20 6c 61 73 74 20 66 6f 72 6d 61 6c 20 70  be last formal p
26fe0 61 72 61 6d 65 74 65 72 27 2c 0a 20 20 09 20 20  arameter',.  .  
26ff0 20 20 44 65 66 61 75 6c 74 52 65 73 74 50 61 72    DefaultRestPar
27000 61 6d 65 74 65 72 3a 20 27 55 6e 65 78 70 65 63  ameter: 'Unexpec
27010 74 65 64 20 74 6f 6b 65 6e 20 3d 27 2c 0a 20 20  ted token =',.  
27020 09 20 20 20 20 44 75 70 6c 69 63 61 74 65 50 72  .    DuplicatePr
27030 6f 74 6f 50 72 6f 70 65 72 74 79 3a 20 27 44 75  otoProperty: 'Du
27040 70 6c 69 63 61 74 65 20 5f 5f 70 72 6f 74 6f 5f  plicate __proto_
27050 5f 20 66 69 65 6c 64 73 20 61 72 65 20 6e 6f 74  _ fields are not
27060 20 61 6c 6c 6f 77 65 64 20 69 6e 20 6f 62 6a 65   allowed in obje
27070 63 74 20 6c 69 74 65 72 61 6c 73 27 2c 0a 20 20  ct literals',.  
27080 09 20 20 20 20 43 6f 6e 73 74 72 75 63 74 6f 72  .    Constructor
27090 53 70 65 63 69 61 6c 4d 65 74 68 6f 64 3a 20 27  SpecialMethod: '
270a0 43 6c 61 73 73 20 63 6f 6e 73 74 72 75 63 74 6f  Class constructo
270b0 72 20 6d 61 79 20 6e 6f 74 20 62 65 20 61 6e 20  r may not be an 
270c0 61 63 63 65 73 73 6f 72 27 2c 0a 20 20 09 20 20  accessor',.  .  
270d0 20 20 44 75 70 6c 69 63 61 74 65 43 6f 6e 73 74    DuplicateConst
270e0 72 75 63 74 6f 72 3a 20 27 41 20 63 6c 61 73 73  ructor: 'A class
270f0 20 6d 61 79 20 6f 6e 6c 79 20 68 61 76 65 20 6f   may only have o
27100 6e 65 20 63 6f 6e 73 74 72 75 63 74 6f 72 27 2c  ne constructor',
27110 0a 20 20 09 20 20 20 20 53 74 61 74 69 63 50 72  .  .    StaticPr
27120 6f 74 6f 74 79 70 65 3a 20 27 43 6c 61 73 73 65  ototype: 'Classe
27130 73 20 6d 61 79 20 6e 6f 74 20 68 61 76 65 20 73  s may not have s
27140 74 61 74 69 63 20 70 72 6f 70 65 72 74 79 20 6e  tatic property n
27150 61 6d 65 64 20 70 72 6f 74 6f 74 79 70 65 27 2c  amed prototype',
27160 0a 20 20 09 20 20 20 20 4d 69 73 73 69 6e 67 46  .  .    MissingF
27170 72 6f 6d 43 6c 61 75 73 65 3a 20 27 55 6e 65 78  romClause: 'Unex
27180 70 65 63 74 65 64 20 74 6f 6b 65 6e 27 2c 0a 20  pected token',. 
27190 20 09 20 20 20 20 4e 6f 41 73 41 66 74 65 72 49   .    NoAsAfterI
271a0 6d 70 6f 72 74 4e 61 6d 65 73 70 61 63 65 3a 20  mportNamespace: 
271b0 27 55 6e 65 78 70 65 63 74 65 64 20 74 6f 6b 65  'Unexpected toke
271c0 6e 27 2c 0a 20 20 09 20 20 20 20 49 6e 76 61 6c  n',.  .    Inval
271d0 69 64 4d 6f 64 75 6c 65 53 70 65 63 69 66 69 65  idModuleSpecifie
271e0 72 3a 20 27 55 6e 65 78 70 65 63 74 65 64 20 74  r: 'Unexpected t
271f0 6f 6b 65 6e 27 2c 0a 20 20 09 20 20 20 20 49 6c  oken',.  .    Il
27200 6c 65 67 61 6c 49 6d 70 6f 72 74 44 65 63 6c 61  legalImportDecla
27210 72 61 74 69 6f 6e 3a 20 27 55 6e 65 78 70 65 63  ration: 'Unexpec
27220 74 65 64 20 74 6f 6b 65 6e 27 2c 0a 20 20 09 20  ted token',.  . 
27230 20 20 20 49 6c 6c 65 67 61 6c 45 78 70 6f 72 74     IllegalExport
27240 44 65 63 6c 61 72 61 74 69 6f 6e 3a 20 27 55 6e  Declaration: 'Un
27250 65 78 70 65 63 74 65 64 20 74 6f 6b 65 6e 27 2c  expected token',
27260 0a 20 20 09 20 20 20 20 44 75 70 6c 69 63 61 74  .  .    Duplicat
27270 65 42 69 6e 64 69 6e 67 3a 20 27 44 75 70 6c 69  eBinding: 'Dupli
27280 63 61 74 65 20 62 69 6e 64 69 6e 67 20 25 30 27  cate binding %0'
27290 2c 0a 20 20 09 20 20 20 20 46 6f 72 49 6e 4f 66  ,.  .    ForInOf
272a0 4c 6f 6f 70 49 6e 69 74 69 61 6c 69 7a 65 72 3a  LoopInitializer:
272b0 20 27 25 30 20 6c 6f 6f 70 20 76 61 72 69 61 62   '%0 loop variab
272c0 6c 65 20 64 65 63 6c 61 72 61 74 69 6f 6e 20 6d  le declaration m
272d0 61 79 20 6e 6f 74 20 68 61 76 65 20 61 6e 20 69  ay not have an i
272e0 6e 69 74 69 61 6c 69 7a 65 72 27 0a 20 20 09 7d  nitializer'.  .}
272f0 3b 0a 0a 0a 20 20 2f 2a 2a 2a 2f 20 7d 2c 0a 20  ;...  /***/ },. 
27300 20 2f 2a 20 36 20 2a 2f 0a 20 20 2f 2a 2a 2a 2f   /* 6 */.  /***/
27310 20 66 75 6e 63 74 69 6f 6e 28 6d 6f 64 75 6c 65   function(module
27320 2c 20 65 78 70 6f 72 74 73 29 20 7b 0a 20 20 09  , exports) {.  .
27330 76 61 72 20 45 72 72 6f 72 48 61 6e 64 6c 65 72  var ErrorHandler
27340 20 3d 20 28 66 75 6e 63 74 69 6f 6e 20 28 29 20   = (function () 
27350 7b 0a 20 20 09 20 20 20 20 66 75 6e 63 74 69 6f  {.  .    functio
27360 6e 20 45 72 72 6f 72 48 61 6e 64 6c 65 72 28 29  n ErrorHandler()
27370 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 74 68   {.  .        th
27380 69 73 2e 65 72 72 6f 72 73 20 3d 20 5b 5d 3b 0a  is.errors = [];.
27390 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e    .        this.
273a0 74 6f 6c 65 72 61 6e 74 20 3d 20 66 61 6c 73 65  tolerant = false
273b0 3b 0a 20 20 09 20 20 20 20 7d 0a 20 20 09 20 20  ;.  .    }.  .  
273c0 20 20 0a 20 20 09 20 20 20 20 45 72 72 6f 72 48    .  .    ErrorH
273d0 61 6e 64 6c 65 72 2e 70 72 6f 74 6f 74 79 70 65  andler.prototype
273e0 2e 72 65 63 6f 72 64 45 72 72 6f 72 20 3d 20 66  .recordError = f
273f0 75 6e 63 74 69 6f 6e 20 28 65 72 72 6f 72 29 20  unction (error) 
27400 7b 0a 20 20 09 20 20 20 20 20 20 20 20 74 68 69  {.  .        thi
27410 73 2e 65 72 72 6f 72 73 2e 70 75 73 68 28 65 72  s.errors.push(er
27420 72 6f 72 29 3b 0a 20 20 09 20 20 20 20 7d 3b 0a  ror);.  .    };.
27430 20 20 09 20 20 20 20 0a 20 20 09 20 20 20 20 45    .    .  .    E
27440 72 72 6f 72 48 61 6e 64 6c 65 72 2e 70 72 6f 74  rrorHandler.prot
27450 6f 74 79 70 65 2e 74 6f 6c 65 72 61 74 65 20 3d  otype.tolerate =
27460 20 66 75 6e 63 74 69 6f 6e 20 28 65 72 72 6f 72   function (error
27470 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 69  ) {.  .        i
27480 66 20 28 74 68 69 73 2e 74 6f 6c 65 72 61 6e 74  f (this.tolerant
27490 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ) {.  .         
274a0 20 20 20 74 68 69 73 2e 72 65 63 6f 72 64 45 72     this.recordEr
274b0 72 6f 72 28 65 72 72 6f 72 29 3b 0a 20 20 09 20  ror(error);.  . 
274c0 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20         }.  .    
274d0 20 20 20 20 65 6c 73 65 20 7b 0a 20 20 09 20 20      else {.  .  
274e0 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
274f0 65 72 72 6f 72 3b 0a 20 20 09 20 20 20 20 20 20  error;.  .      
27500 20 20 7d 0a 20 20 09 20 20 20 20 7d 3b 0a 20 20    }.  .    };.  
27510 09 20 20 20 20 0a 20 20 09 20 20 20 20 45 72 72  .    .  .    Err
27520 6f 72 48 61 6e 64 6c 65 72 2e 70 72 6f 74 6f 74  orHandler.protot
27530 79 70 65 2e 63 6f 6e 73 74 72 75 63 74 45 72 72  ype.constructErr
27540 6f 72 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 6d  or = function (m
27550 73 67 2c 20 63 6f 6c 75 6d 6e 29 20 7b 0a 20 20  sg, column) {.  
27560 09 20 20 20 20 20 20 20 20 76 61 72 20 65 72 72  .        var err
27570 6f 72 20 3d 20 6e 65 77 20 45 72 72 6f 72 28 6d  or = new Error(m
27580 73 67 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  sg);.  .        
27590 74 72 79 20 7b 0a 20 20 09 20 20 20 20 20 20 20  try {.  .       
275a0 20 20 20 20 20 74 68 72 6f 77 20 65 72 72 6f 72       throw error
275b0 3b 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a 20  ;.  .        }. 
275c0 20 09 20 20 20 20 20 20 20 20 63 61 74 63 68 20   .        catch 
275d0 28 62 61 73 65 29 20 7b 0a 20 20 09 20 20 20 20  (base) {.  .    
275e0 20 20 20 20 20 20 20 20 2f 2a 20 69 73 74 61 6e          /* istan
275f0 62 75 6c 20 69 67 6e 6f 72 65 20 65 6c 73 65 20  bul ignore else 
27600 2a 2f 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  */.  .          
27610 20 20 69 66 20 28 4f 62 6a 65 63 74 2e 63 72 65    if (Object.cre
27620 61 74 65 20 26 26 20 4f 62 6a 65 63 74 2e 64 65  ate && Object.de
27630 66 69 6e 65 50 72 6f 70 65 72 74 79 29 20 7b 0a  fineProperty) {.
27640 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
27650 20 20 20 65 72 72 6f 72 20 3d 20 4f 62 6a 65 63     error = Objec
27660 74 2e 63 72 65 61 74 65 28 62 61 73 65 29 3b 0a  t.create(base);.
27670 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
27680 20 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65     Object.define
27690 50 72 6f 70 65 72 74 79 28 65 72 72 6f 72 2c 20  Property(error, 
276a0 27 63 6f 6c 75 6d 6e 27 2c 20 7b 20 76 61 6c 75  'column', { valu
276b0 65 3a 20 63 6f 6c 75 6d 6e 20 7d 29 3b 0a 20 20  e: column });.  
276c0 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20  .            }. 
276d0 20 09 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20   .        }.  . 
276e0 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 20 7b         finally {
276f0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
27700 72 65 74 75 72 6e 20 65 72 72 6f 72 3b 0a 20 20  return error;.  
27710 09 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20  .        }.  .  
27720 20 20 7d 3b 0a 20 20 09 20 20 20 20 0a 20 20 09    };.  .    .  .
27730 20 20 20 20 45 72 72 6f 72 48 61 6e 64 6c 65 72      ErrorHandler
27740 2e 70 72 6f 74 6f 74 79 70 65 2e 63 72 65 61 74  .prototype.creat
27750 65 45 72 72 6f 72 20 3d 20 66 75 6e 63 74 69 6f  eError = functio
27760 6e 20 28 69 6e 64 65 78 2c 20 6c 69 6e 65 2c 20  n (index, line, 
27770 63 6f 6c 2c 20 64 65 73 63 72 69 70 74 69 6f 6e  col, description
27780 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 76  ) {.  .        v
27790 61 72 20 6d 73 67 20 3d 20 27 4c 69 6e 65 20 27  ar msg = 'Line '
277a0 20 2b 20 6c 69 6e 65 20 2b 20 27 3a 20 27 20 2b   + line + ': ' +
277b0 20 64 65 73 63 72 69 70 74 69 6f 6e 3b 0a 20 20   description;.  
277c0 09 20 20 20 20 20 20 20 20 76 61 72 20 65 72 72  .        var err
277d0 6f 72 20 3d 20 74 68 69 73 2e 63 6f 6e 73 74 72  or = this.constr
277e0 75 63 74 45 72 72 6f 72 28 6d 73 67 2c 20 63 6f  uctError(msg, co
277f0 6c 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 65  l);.  .        e
27800 72 72 6f 72 2e 69 6e 64 65 78 20 3d 20 69 6e 64  rror.index = ind
27810 65 78 3b 0a 20 20 09 20 20 20 20 20 20 20 20 65  ex;.  .        e
27820 72 72 6f 72 2e 6c 69 6e 65 4e 75 6d 62 65 72 20  rror.lineNumber 
27830 3d 20 6c 69 6e 65 3b 0a 20 20 09 20 20 20 20 20  = line;.  .     
27840 20 20 20 65 72 72 6f 72 2e 64 65 73 63 72 69 70     error.descrip
27850 74 69 6f 6e 20 3d 20 64 65 73 63 72 69 70 74 69  tion = descripti
27860 6f 6e 3b 0a 20 20 09 20 20 20 20 20 20 20 20 72  on;.  .        r
27870 65 74 75 72 6e 20 65 72 72 6f 72 3b 0a 20 20 09  eturn error;.  .
27880 20 20 20 20 7d 3b 0a 20 20 09 20 20 20 20 0a 20      };.  .    . 
27890 20 09 20 20 20 20 45 72 72 6f 72 48 61 6e 64 6c   .    ErrorHandl
278a0 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 74 68 72  er.prototype.thr
278b0 6f 77 45 72 72 6f 72 20 3d 20 66 75 6e 63 74 69  owError = functi
278c0 6f 6e 20 28 69 6e 64 65 78 2c 20 6c 69 6e 65 2c  on (index, line,
278d0 20 63 6f 6c 2c 20 64 65 73 63 72 69 70 74 69 6f   col, descriptio
278e0 6e 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20  n) {.  .        
278f0 74 68 72 6f 77 20 74 68 69 73 2e 63 72 65 61 74  throw this.creat
27900 65 45 72 72 6f 72 28 69 6e 64 65 78 2c 20 6c 69  eError(index, li
27910 6e 65 2c 20 63 6f 6c 2c 20 64 65 73 63 72 69 70  ne, col, descrip
27920 74 69 6f 6e 29 3b 0a 20 20 09 20 20 20 20 7d 3b  tion);.  .    };
27930 0a 20 20 09 20 20 20 20 0a 20 20 09 20 20 20 20  .  .    .  .    
27940 45 72 72 6f 72 48 61 6e 64 6c 65 72 2e 70 72 6f  ErrorHandler.pro
27950 74 6f 74 79 70 65 2e 74 6f 6c 65 72 61 74 65 45  totype.tolerateE
27960 72 72 6f 72 20 3d 20 66 75 6e 63 74 69 6f 6e 20  rror = function 
27970 28 69 6e 64 65 78 2c 20 6c 69 6e 65 2c 20 63 6f  (index, line, co
27980 6c 2c 20 64 65 73 63 72 69 70 74 69 6f 6e 29 20  l, description) 
27990 7b 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72  {.  .        var
279a0 20 65 72 72 6f 72 20 3d 20 74 68 69 73 2e 63 72   error = this.cr
279b0 65 61 74 65 45 72 72 6f 72 28 69 6e 64 65 78 2c  eateError(index,
279c0 20 6c 69 6e 65 2c 20 63 6f 6c 2c 20 64 65 73 63   line, col, desc
279d0 72 69 70 74 69 6f 6e 29 3b 0a 20 20 09 20 20 20  ription);.  .   
279e0 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 74 6f       if (this.to
279f0 6c 65 72 61 6e 74 29 20 7b 0a 20 20 09 20 20 20  lerant) {.  .   
27a00 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 72 65           this.re
27a10 63 6f 72 64 45 72 72 6f 72 28 65 72 72 6f 72 29  cordError(error)
27a20 3b 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a 20  ;.  .        }. 
27a30 20 09 20 20 20 20 20 20 20 20 65 6c 73 65 20 7b   .        else {
27a40 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
27a50 74 68 72 6f 77 20 65 72 72 6f 72 3b 0a 20 20 09  throw error;.  .
27a60 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20          }.  .   
27a70 20 7d 3b 0a 20 20 09 20 20 20 20 0a 20 20 09 20   };.  .    .  . 
27a80 20 20 20 72 65 74 75 72 6e 20 45 72 72 6f 72 48     return ErrorH
27a90 61 6e 64 6c 65 72 3b 0a 20 20 09 7d 28 29 29 3b  andler;.  .}());
27aa0 0a 20 20 09 65 78 70 6f 72 74 73 2e 45 72 72 6f  .  .exports.Erro
27ab0 72 48 61 6e 64 6c 65 72 20 3d 20 45 72 72 6f 72  rHandler = Error
27ac0 48 61 6e 64 6c 65 72 3b 0a 0a 0a 20 20 2f 2a 2a  Handler;...  /**
27ad0 2a 2f 20 7d 2c 0a 20 20 2f 2a 20 37 20 2a 2f 0a  */ },.  /* 7 */.
27ae0 20 20 2f 2a 2a 2a 2f 20 66 75 6e 63 74 69 6f 6e    /***/ function
27af0 28 6d 6f 64 75 6c 65 2c 20 65 78 70 6f 72 74 73  (module, exports
27b00 29 20 7b 0a 20 20 09 28 66 75 6e 63 74 69 6f 6e  ) {.  .(function
27b10 20 28 54 6f 6b 65 6e 29 20 7b 0a 20 20 09 20 20   (Token) {.  .  
27b20 20 20 54 6f 6b 65 6e 5b 54 6f 6b 65 6e 5b 22 42    Token[Token["B
27b30 6f 6f 6c 65 61 6e 4c 69 74 65 72 61 6c 22 5d 20  ooleanLiteral"] 
27b40 3d 20 31 5d 20 3d 20 22 42 6f 6f 6c 65 61 6e 4c  = 1] = "BooleanL
27b50 69 74 65 72 61 6c 22 3b 0a 20 20 09 20 20 20 20  iteral";.  .    
27b60 54 6f 6b 65 6e 5b 54 6f 6b 65 6e 5b 22 45 4f 46  Token[Token["EOF
27b70 22 5d 20 3d 20 32 5d 20 3d 20 22 45 4f 46 22 3b  "] = 2] = "EOF";
27b80 0a 20 20 09 20 20 20 20 54 6f 6b 65 6e 5b 54 6f  .  .    Token[To
27b90 6b 65 6e 5b 22 49 64 65 6e 74 69 66 69 65 72 22  ken["Identifier"
27ba0 5d 20 3d 20 33 5d 20 3d 20 22 49 64 65 6e 74 69  ] = 3] = "Identi
27bb0 66 69 65 72 22 3b 0a 20 20 09 20 20 20 20 54 6f  fier";.  .    To
27bc0 6b 65 6e 5b 54 6f 6b 65 6e 5b 22 4b 65 79 77 6f  ken[Token["Keywo
27bd0 72 64 22 5d 20 3d 20 34 5d 20 3d 20 22 4b 65 79  rd"] = 4] = "Key
27be0 77 6f 72 64 22 3b 0a 20 20 09 20 20 20 20 54 6f  word";.  .    To
27bf0 6b 65 6e 5b 54 6f 6b 65 6e 5b 22 4e 75 6c 6c 4c  ken[Token["NullL
27c00 69 74 65 72 61 6c 22 5d 20 3d 20 35 5d 20 3d 20  iteral"] = 5] = 
27c10 22 4e 75 6c 6c 4c 69 74 65 72 61 6c 22 3b 0a 20  "NullLiteral";. 
27c20 20 09 20 20 20 20 54 6f 6b 65 6e 5b 54 6f 6b 65   .    Token[Toke
27c30 6e 5b 22 4e 75 6d 65 72 69 63 4c 69 74 65 72 61  n["NumericLitera
27c40 6c 22 5d 20 3d 20 36 5d 20 3d 20 22 4e 75 6d 65  l"] = 6] = "Nume
27c50 72 69 63 4c 69 74 65 72 61 6c 22 3b 0a 20 20 09  ricLiteral";.  .
27c60 20 20 20 20 54 6f 6b 65 6e 5b 54 6f 6b 65 6e 5b      Token[Token[
27c70 22 50 75 6e 63 74 75 61 74 6f 72 22 5d 20 3d 20  "Punctuator"] = 
27c80 37 5d 20 3d 20 22 50 75 6e 63 74 75 61 74 6f 72  7] = "Punctuator
27c90 22 3b 0a 20 20 09 20 20 20 20 54 6f 6b 65 6e 5b  ";.  .    Token[
27ca0 54 6f 6b 65 6e 5b 22 53 74 72 69 6e 67 4c 69 74  Token["StringLit
27cb0 65 72 61 6c 22 5d 20 3d 20 38 5d 20 3d 20 22 53  eral"] = 8] = "S
27cc0 74 72 69 6e 67 4c 69 74 65 72 61 6c 22 3b 0a 20  tringLiteral";. 
27cd0 20 09 20 20 20 20 54 6f 6b 65 6e 5b 54 6f 6b 65   .    Token[Toke
27ce0 6e 5b 22 52 65 67 75 6c 61 72 45 78 70 72 65 73  n["RegularExpres
27cf0 73 69 6f 6e 22 5d 20 3d 20 39 5d 20 3d 20 22 52  sion"] = 9] = "R
27d00 65 67 75 6c 61 72 45 78 70 72 65 73 73 69 6f 6e  egularExpression
27d10 22 3b 0a 20 20 09 20 20 20 20 54 6f 6b 65 6e 5b  ";.  .    Token[
27d20 54 6f 6b 65 6e 5b 22 54 65 6d 70 6c 61 74 65 22  Token["Template"
27d30 5d 20 3d 20 31 30 5d 20 3d 20 22 54 65 6d 70 6c  ] = 10] = "Templ
27d40 61 74 65 22 3b 0a 20 20 09 7d 29 28 65 78 70 6f  ate";.  .})(expo
27d50 72 74 73 2e 54 6f 6b 65 6e 20 7c 7c 20 28 65 78  rts.Token || (ex
27d60 70 6f 72 74 73 2e 54 6f 6b 65 6e 20 3d 20 7b 7d  ports.Token = {}
27d70 29 29 3b 0a 20 20 09 76 61 72 20 54 6f 6b 65 6e  ));.  .var Token
27d80 20 3d 20 65 78 70 6f 72 74 73 2e 54 6f 6b 65 6e   = exports.Token
27d90 3b 0a 20 20 09 0a 20 20 09 65 78 70 6f 72 74 73  ;.  ..  .exports
27da0 2e 54 6f 6b 65 6e 4e 61 6d 65 20 3d 20 7b 7d 3b  .TokenName = {};
27db0 0a 20 20 09 65 78 70 6f 72 74 73 2e 54 6f 6b 65  .  .exports.Toke
27dc0 6e 4e 61 6d 65 5b 54 6f 6b 65 6e 2e 42 6f 6f 6c  nName[Token.Bool
27dd0 65 61 6e 4c 69 74 65 72 61 6c 5d 20 3d 20 27 42  eanLiteral] = 'B
27de0 6f 6f 6c 65 61 6e 27 3b 0a 20 20 09 65 78 70 6f  oolean';.  .expo
27df0 72 74 73 2e 54 6f 6b 65 6e 4e 61 6d 65 5b 54 6f  rts.TokenName[To
27e00 6b 65 6e 2e 45 4f 46 5d 20 3d 20 27 3c 65 6e 64  ken.EOF] = '<end
27e10 3e 27 3b 0a 20 20 09 65 78 70 6f 72 74 73 2e 54  >';.  .exports.T
27e20 6f 6b 65 6e 4e 61 6d 65 5b 54 6f 6b 65 6e 2e 49  okenName[Token.I
27e30 64 65 6e 74 69 66 69 65 72 5d 20 3d 20 27 49 64  dentifier] = 'Id
27e40 65 6e 74 69 66 69 65 72 27 3b 0a 20 20 09 65 78  entifier';.  .ex
27e50 70 6f 72 74 73 2e 54 6f 6b 65 6e 4e 61 6d 65 5b  ports.TokenName[
27e60 54 6f 6b 65 6e 2e 4b 65 79 77 6f 72 64 5d 20 3d  Token.Keyword] =
27e70 20 27 4b 65 79 77 6f 72 64 27 3b 0a 20 20 09 65   'Keyword';.  .e
27e80 78 70 6f 72 74 73 2e 54 6f 6b 65 6e 4e 61 6d 65  xports.TokenName
27e90 5b 54 6f 6b 65 6e 2e 4e 75 6c 6c 4c 69 74 65 72  [Token.NullLiter
27ea0 61 6c 5d 20 3d 20 27 4e 75 6c 6c 27 3b 0a 20 20  al] = 'Null';.  
27eb0 09 65 78 70 6f 72 74 73 2e 54 6f 6b 65 6e 4e 61  .exports.TokenNa
27ec0 6d 65 5b 54 6f 6b 65 6e 2e 4e 75 6d 65 72 69 63  me[Token.Numeric
27ed0 4c 69 74 65 72 61 6c 5d 20 3d 20 27 4e 75 6d 65  Literal] = 'Nume
27ee0 72 69 63 27 3b 0a 20 20 09 65 78 70 6f 72 74 73  ric';.  .exports
27ef0 2e 54 6f 6b 65 6e 4e 61 6d 65 5b 54 6f 6b 65 6e  .TokenName[Token
27f00 2e 50 75 6e 63 74 75 61 74 6f 72 5d 20 3d 20 27  .Punctuator] = '
27f10 50 75 6e 63 74 75 61 74 6f 72 27 3b 0a 20 20 09  Punctuator';.  .
27f20 65 78 70 6f 72 74 73 2e 54 6f 6b 65 6e 4e 61 6d  exports.TokenNam
27f30 65 5b 54 6f 6b 65 6e 2e 53 74 72 69 6e 67 4c 69  e[Token.StringLi
27f40 74 65 72 61 6c 5d 20 3d 20 27 53 74 72 69 6e 67  teral] = 'String
27f50 27 3b 0a 20 20 09 65 78 70 6f 72 74 73 2e 54 6f  ';.  .exports.To
27f60 6b 65 6e 4e 61 6d 65 5b 54 6f 6b 65 6e 2e 52 65  kenName[Token.Re
27f70 67 75 6c 61 72 45 78 70 72 65 73 73 69 6f 6e 5d  gularExpression]
27f80 20 3d 20 27 52 65 67 75 6c 61 72 45 78 70 72 65   = 'RegularExpre
27f90 73 73 69 6f 6e 27 3b 0a 20 20 09 65 78 70 6f 72  ssion';.  .expor
27fa0 74 73 2e 54 6f 6b 65 6e 4e 61 6d 65 5b 54 6f 6b  ts.TokenName[Tok
27fb0 65 6e 2e 54 65 6d 70 6c 61 74 65 5d 20 3d 20 27  en.Template] = '
27fc0 54 65 6d 70 6c 61 74 65 27 3b 0a 0a 0a 20 20 2f  Template';...  /
27fd0 2a 2a 2a 2f 20 7d 2c 0a 20 20 2f 2a 20 38 20 2a  ***/ },.  /* 8 *
27fe0 2f 0a 20 20 2f 2a 2a 2a 2f 20 66 75 6e 63 74 69  /.  /***/ functi
27ff0 6f 6e 28 6d 6f 64 75 6c 65 2c 20 65 78 70 6f 72  on(module, expor
28000 74 73 2c 20 5f 5f 77 65 62 70 61 63 6b 5f 72 65  ts, __webpack_re
28010 71 75 69 72 65 5f 5f 29 20 7b 0a 20 20 09 76 61  quire__) {.  .va
28020 72 20 61 73 73 65 72 74 5f 31 20 3d 20 5f 5f 77  r assert_1 = __w
28030 65 62 70 61 63 6b 5f 72 65 71 75 69 72 65 5f 5f  ebpack_require__
28040 28 34 29 3b 0a 20 20 09 76 61 72 20 6d 65 73 73  (4);.  .var mess
28050 61 67 65 73 5f 31 20 3d 20 5f 5f 77 65 62 70 61  ages_1 = __webpa
28060 63 6b 5f 72 65 71 75 69 72 65 5f 5f 28 35 29 3b  ck_require__(5);
28070 0a 20 20 09 76 61 72 20 63 68 61 72 61 63 74 65  .  .var characte
28080 72 5f 31 20 3d 20 5f 5f 77 65 62 70 61 63 6b 5f  r_1 = __webpack_
28090 72 65 71 75 69 72 65 5f 5f 28 39 29 3b 0a 20 20  require__(9);.  
280a0 09 76 61 72 20 74 6f 6b 65 6e 5f 31 20 3d 20 5f  .var token_1 = _
280b0 5f 77 65 62 70 61 63 6b 5f 72 65 71 75 69 72 65  _webpack_require
280c0 5f 5f 28 37 29 3b 0a 20 20 09 66 75 6e 63 74 69  __(7);.  .functi
280d0 6f 6e 20 68 65 78 56 61 6c 75 65 28 63 68 29 20  on hexValue(ch) 
280e0 7b 0a 20 20 09 20 20 20 20 72 65 74 75 72 6e 20  {.  .    return 
280f0 27 30 31 32 33 34 35 36 37 38 39 61 62 63 64 65  '0123456789abcde
28100 66 27 2e 69 6e 64 65 78 4f 66 28 63 68 2e 74 6f  f'.indexOf(ch.to
28110 4c 6f 77 65 72 43 61 73 65 28 29 29 3b 0a 20 20  LowerCase());.  
28120 09 7d 0a 20 20 09 66 75 6e 63 74 69 6f 6e 20 6f  .}.  .function o
28130 63 74 61 6c 56 61 6c 75 65 28 63 68 29 20 7b 0a  ctalValue(ch) {.
28140 20 20 09 20 20 20 20 72 65 74 75 72 6e 20 27 30    .    return '0
28150 31 32 33 34 35 36 37 27 2e 69 6e 64 65 78 4f 66  1234567'.indexOf
28160 28 63 68 29 3b 0a 20 20 09 7d 0a 20 20 09 76 61  (ch);.  .}.  .va
28170 72 20 53 63 61 6e 6e 65 72 20 3d 20 28 66 75 6e  r Scanner = (fun
28180 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20 09 20 20  ction () {.  .  
28190 20 20 66 75 6e 63 74 69 6f 6e 20 53 63 61 6e 6e    function Scann
281a0 65 72 28 63 6f 64 65 2c 20 68 61 6e 64 6c 65 72  er(code, handler
281b0 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 74  ) {.  .        t
281c0 68 69 73 2e 73 6f 75 72 63 65 20 3d 20 63 6f 64  his.source = cod
281d0 65 3b 0a 20 20 09 20 20 20 20 20 20 20 20 74 68  e;.  .        th
281e0 69 73 2e 65 72 72 6f 72 48 61 6e 64 6c 65 72 20  is.errorHandler 
281f0 3d 20 68 61 6e 64 6c 65 72 3b 0a 20 20 09 20 20  = handler;.  .  
28200 20 20 20 20 20 20 74 68 69 73 2e 74 72 61 63 6b        this.track
28210 43 6f 6d 6d 65 6e 74 20 3d 20 66 61 6c 73 65 3b  Comment = false;
28220 0a 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73  .  .        this
28230 2e 6c 65 6e 67 74 68 20 3d 20 63 6f 64 65 2e 6c  .length = code.l
28240 65 6e 67 74 68 3b 0a 20 20 09 20 20 20 20 20 20  ength;.  .      
28250 20 20 74 68 69 73 2e 69 6e 64 65 78 20 3d 20 30    this.index = 0
28260 3b 0a 20 20 09 20 20 20 20 20 20 20 20 74 68 69  ;.  .        thi
28270 73 2e 6c 69 6e 65 4e 75 6d 62 65 72 20 3d 20 28  s.lineNumber = (
28280 63 6f 64 65 2e 6c 65 6e 67 74 68 20 3e 20 30 29  code.length > 0)
28290 20 3f 20 31 20 3a 20 30 3b 0a 20 20 09 20 20 20   ? 1 : 0;.  .   
282a0 20 20 20 20 20 74 68 69 73 2e 6c 69 6e 65 53 74       this.lineSt
282b0 61 72 74 20 3d 20 30 3b 0a 20 20 09 20 20 20 20  art = 0;.  .    
282c0 20 20 20 20 74 68 69 73 2e 63 75 72 6c 79 53 74      this.curlySt
282d0 61 63 6b 20 3d 20 5b 5d 3b 0a 20 20 09 20 20 20  ack = [];.  .   
282e0 20 7d 0a 20 20 09 20 20 20 20 0a 20 20 09 20 20   }.  .    .  .  
282f0 20 20 53 63 61 6e 6e 65 72 2e 70 72 6f 74 6f 74    Scanner.protot
28300 79 70 65 2e 65 6f 66 20 3d 20 66 75 6e 63 74 69  ype.eof = functi
28310 6f 6e 20 28 29 20 7b 0a 20 20 09 20 20 20 20 20  on () {.  .     
28320 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e 69     return this.i
28330 6e 64 65 78 20 3e 3d 20 74 68 69 73 2e 6c 65 6e  ndex >= this.len
28340 67 74 68 3b 0a 20 20 09 20 20 20 20 7d 3b 0a 20  gth;.  .    };. 
28350 20 09 20 20 20 20 0a 20 20 09 20 20 20 20 53 63   .    .  .    Sc
28360 61 6e 6e 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e  anner.prototype.
28370 74 68 72 6f 77 55 6e 65 78 70 65 63 74 65 64 54  throwUnexpectedT
28380 6f 6b 65 6e 20 3d 20 66 75 6e 63 74 69 6f 6e 20  oken = function 
28390 28 6d 65 73 73 61 67 65 29 20 7b 0a 20 20 09 20  (message) {.  . 
283a0 20 20 20 20 20 20 20 69 66 20 28 6d 65 73 73 61         if (messa
283b0 67 65 20 3d 3d 3d 20 76 6f 69 64 20 30 29 20 7b  ge === void 0) {
283c0 20 6d 65 73 73 61 67 65 20 3d 20 6d 65 73 73 61   message = messa
283d0 67 65 73 5f 31 2e 4d 65 73 73 61 67 65 73 2e 55  ges_1.Messages.U
283e0 6e 65 78 70 65 63 74 65 64 54 6f 6b 65 6e 49 6c  nexpectedTokenIl
283f0 6c 65 67 61 6c 3b 20 7d 0a 20 20 09 20 20 20 20  legal; }.  .    
28400 20 20 20 20 74 68 69 73 2e 65 72 72 6f 72 48 61      this.errorHa
28410 6e 64 6c 65 72 2e 74 68 72 6f 77 45 72 72 6f 72  ndler.throwError
28420 28 74 68 69 73 2e 69 6e 64 65 78 2c 20 74 68 69  (this.index, thi
28430 73 2e 6c 69 6e 65 4e 75 6d 62 65 72 2c 20 74 68  s.lineNumber, th
28440 69 73 2e 69 6e 64 65 78 20 2d 20 74 68 69 73 2e  is.index - this.
28450 6c 69 6e 65 53 74 61 72 74 20 2b 20 31 2c 20 6d  lineStart + 1, m
28460 65 73 73 61 67 65 29 3b 0a 20 20 09 20 20 20 20  essage);.  .    
28470 7d 3b 0a 20 20 09 20 20 20 20 0a 20 20 09 20 20  };.  .    .  .  
28480 20 20 53 63 61 6e 6e 65 72 2e 70 72 6f 74 6f 74    Scanner.protot
28490 79 70 65 2e 74 6f 6c 65 72 61 74 65 55 6e 65 78  ype.tolerateUnex
284a0 70 65 63 74 65 64 54 6f 6b 65 6e 20 3d 20 66 75  pectedToken = fu
284b0 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20 09 20  nction () {.  . 
284c0 20 20 20 20 20 20 20 74 68 69 73 2e 65 72 72 6f         this.erro
284d0 72 48 61 6e 64 6c 65 72 2e 74 6f 6c 65 72 61 74  rHandler.tolerat
284e0 65 45 72 72 6f 72 28 74 68 69 73 2e 69 6e 64 65  eError(this.inde
284f0 78 2c 20 74 68 69 73 2e 6c 69 6e 65 4e 75 6d 62  x, this.lineNumb
28500 65 72 2c 20 74 68 69 73 2e 69 6e 64 65 78 20 2d  er, this.index -
28510 20 74 68 69 73 2e 6c 69 6e 65 53 74 61 72 74 20   this.lineStart 
28520 2b 20 31 2c 20 6d 65 73 73 61 67 65 73 5f 31 2e  + 1, messages_1.
28530 4d 65 73 73 61 67 65 73 2e 55 6e 65 78 70 65 63  Messages.Unexpec
28540 74 65 64 54 6f 6b 65 6e 49 6c 6c 65 67 61 6c 29  tedTokenIllegal)
28550 3b 0a 20 20 09 20 20 20 20 7d 3b 0a 20 20 09 20  ;.  .    };.  . 
28560 20 20 20 0a 20 20 09 20 20 20 20 2f 2f 20 45 43     .  .    // EC
28570 4d 41 2d 32 36 32 20 31 31 2e 34 20 43 6f 6d 6d  MA-262 11.4 Comm
28580 65 6e 74 73 0a 20 20 09 20 20 20 20 53 63 61 6e  ents.  .    Scan
28590 6e 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 73 6b  ner.prototype.sk
285a0 69 70 53 69 6e 67 6c 65 4c 69 6e 65 43 6f 6d 6d  ipSingleLineComm
285b0 65 6e 74 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28  ent = function (
285c0 6f 66 66 73 65 74 29 20 7b 0a 20 20 09 20 20 20  offset) {.  .   
285d0 20 20 20 20 20 76 61 72 20 74 68 69 73 24 31 20       var this$1 
285e0 3d 20 74 68 69 73 3b 0a 0a 20 20 09 20 20 20 20  = this;..  .    
285f0 20 20 20 20 76 61 72 20 63 6f 6d 6d 65 6e 74 73      var comments
28600 3b 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72  ;.  .        var
28610 20 73 74 61 72 74 2c 20 6c 6f 63 3b 0a 20 20 09   start, loc;.  .
28620 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73          if (this
28630 2e 74 72 61 63 6b 43 6f 6d 6d 65 6e 74 29 20 7b  .trackComment) {
28640 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
28650 63 6f 6d 6d 65 6e 74 73 20 3d 20 5b 5d 3b 0a 20  comments = [];. 
28660 20 09 20 20 20 20 20 20 20 20 20 20 20 20 73 74   .            st
28670 61 72 74 20 3d 20 74 68 69 73 2e 69 6e 64 65 78  art = this.index
28680 20 2d 20 6f 66 66 73 65 74 3b 0a 20 20 09 20 20   - offset;.  .  
28690 20 20 20 20 20 20 20 20 20 20 6c 6f 63 20 3d 20            loc = 
286a0 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  {.  .           
286b0 20 20 20 20 20 73 74 61 72 74 3a 20 7b 0a 20 20       start: {.  
286c0 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
286d0 20 20 20 20 20 6c 69 6e 65 3a 20 74 68 69 73 2e       line: this.
286e0 6c 69 6e 65 4e 75 6d 62 65 72 2c 0a 20 20 09 20  lineNumber,.  . 
286f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28700 20 20 20 63 6f 6c 75 6d 6e 3a 20 74 68 69 73 2e     column: this.
28710 69 6e 64 65 78 20 2d 20 74 68 69 73 2e 6c 69 6e  index - this.lin
28720 65 53 74 61 72 74 20 2d 20 6f 66 66 73 65 74 0a  eStart - offset.
28730 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
28740 20 20 20 7d 2c 0a 20 20 09 20 20 20 20 20 20 20     },.  .       
28750 20 20 20 20 20 20 20 20 20 65 6e 64 3a 20 7b 7d           end: {}
28760 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
28770 7d 3b 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a  };.  .        }.
28780 20 20 09 20 20 20 20 20 20 20 20 77 68 69 6c 65    .        while
28790 20 28 21 74 68 69 73 2e 65 6f 66 28 29 29 20 7b   (!this.eof()) {
287a0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
287b0 76 61 72 20 63 68 20 3d 20 74 68 69 73 24 31 2e  var ch = this$1.
287c0 73 6f 75 72 63 65 2e 63 68 61 72 43 6f 64 65 41  source.charCodeA
287d0 74 28 74 68 69 73 24 31 2e 69 6e 64 65 78 29 3b  t(this$1.index);
287e0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
287f0 2b 2b 74 68 69 73 24 31 2e 69 6e 64 65 78 3b 0a  ++this$1.index;.
28800 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 69    .            i
28810 66 20 28 63 68 61 72 61 63 74 65 72 5f 31 2e 43  f (character_1.C
28820 68 61 72 61 63 74 65 72 2e 69 73 4c 69 6e 65 54  haracter.isLineT
28830 65 72 6d 69 6e 61 74 6f 72 28 63 68 29 29 20 7b  erminator(ch)) {
28840 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
28850 20 20 20 20 69 66 20 28 74 68 69 73 24 31 2e 74      if (this$1.t
28860 72 61 63 6b 43 6f 6d 6d 65 6e 74 29 20 7b 0a 20  rackComment) {. 
28870 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
28880 20 20 20 20 20 20 6c 6f 63 2e 65 6e 64 20 3d 20        loc.end = 
28890 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  {.  .           
288a0 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 69 6e               lin
288b0 65 3a 20 74 68 69 73 24 31 2e 6c 69 6e 65 4e 75  e: this$1.lineNu
288c0 6d 62 65 72 2c 0a 20 20 09 20 20 20 20 20 20 20  mber,.  .       
288d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
288e0 20 63 6f 6c 75 6d 6e 3a 20 74 68 69 73 24 31 2e   column: this$1.
288f0 69 6e 64 65 78 20 2d 20 74 68 69 73 24 31 2e 6c  index - this$1.l
28900 69 6e 65 53 74 61 72 74 20 2d 20 31 0a 20 20 09  ineStart - 1.  .
28910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28920 20 20 20 20 7d 3b 0a 20 20 09 20 20 20 20 20 20      };.  .      
28930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61                va
28940 72 20 65 6e 74 72 79 20 3d 20 7b 0a 20 20 09 20  r entry = {.  . 
28950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28960 20 20 20 20 20 20 20 6d 75 6c 74 69 4c 69 6e 65         multiLine
28970 3a 20 66 61 6c 73 65 2c 0a 20 20 09 20 20 20 20  : false,.  .    
28980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28990 20 20 20 20 73 6c 69 63 65 3a 20 5b 73 74 61 72      slice: [star
289a0 74 20 2b 20 6f 66 66 73 65 74 2c 20 74 68 69 73  t + offset, this
289b0 24 31 2e 69 6e 64 65 78 20 2d 20 31 5d 2c 0a 20  $1.index - 1],. 
289c0 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
289d0 20 20 20 20 20 20 20 20 20 20 72 61 6e 67 65 3a            range:
289e0 20 5b 73 74 61 72 74 2c 20 74 68 69 73 24 31 2e   [start, this$1.
289f0 69 6e 64 65 78 20 2d 20 31 5d 2c 0a 20 20 09 20  index - 1],.  . 
28a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28a10 20 20 20 20 20 20 20 6c 6f 63 3a 20 6c 6f 63 0a         loc: loc.
28a20 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
28a30 20 20 20 20 20 20 20 7d 3b 0a 20 20 09 20 20 20         };.  .   
28a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28a50 20 63 6f 6d 6d 65 6e 74 73 2e 70 75 73 68 28 65   comments.push(e
28a60 6e 74 72 79 29 3b 0a 20 20 09 20 20 20 20 20 20  ntry);.  .      
28a70 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20            }.  . 
28a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
28a90 66 20 28 63 68 20 3d 3d 3d 20 31 33 20 26 26 20  f (ch === 13 && 
28aa0 74 68 69 73 24 31 2e 73 6f 75 72 63 65 2e 63 68  this$1.source.ch
28ab0 61 72 43 6f 64 65 41 74 28 74 68 69 73 24 31 2e  arCodeAt(this$1.
28ac0 69 6e 64 65 78 29 20 3d 3d 3d 20 31 30 29 20 7b  index) === 10) {
28ad0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
28ae0 20 20 20 20 20 20 20 20 2b 2b 74 68 69 73 24 31          ++this$1
28af0 2e 69 6e 64 65 78 3b 0a 20 20 09 20 20 20 20 20  .index;.  .     
28b00 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09             }.  .
28b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28b20 2b 2b 74 68 69 73 24 31 2e 6c 69 6e 65 4e 75 6d  ++this$1.lineNum
28b30 62 65 72 3b 0a 20 20 09 20 20 20 20 20 20 20 20  ber;.  .        
28b40 20 20 20 20 20 20 20 20 74 68 69 73 24 31 2e 6c          this$1.l
28b50 69 6e 65 53 74 61 72 74 20 3d 20 74 68 69 73 24  ineStart = this$
28b60 31 2e 69 6e 64 65 78 3b 0a 20 20 09 20 20 20 20  1.index;.  .    
28b70 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
28b80 72 6e 20 63 6f 6d 6d 65 6e 74 73 3b 0a 20 20 09  rn comments;.  .
28b90 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20              }.  
28ba0 09 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20  .        }.  .  
28bb0 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 74        if (this.t
28bc0 72 61 63 6b 43 6f 6d 6d 65 6e 74 29 20 7b 0a 20  rackComment) {. 
28bd0 20 09 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f   .            lo
28be0 63 2e 65 6e 64 20 3d 20 7b 0a 20 20 09 20 20 20  c.end = {.  .   
28bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 69 6e               lin
28c00 65 3a 20 74 68 69 73 2e 6c 69 6e 65 4e 75 6d 62  e: this.lineNumb
28c10 65 72 2c 0a 20 20 09 20 20 20 20 20 20 20 20 20  er,.  .         
28c20 20 20 20 20 20 20 20 63 6f 6c 75 6d 6e 3a 20 74         column: t
28c30 68 69 73 2e 69 6e 64 65 78 20 2d 20 74 68 69 73  his.index - this
28c40 2e 6c 69 6e 65 53 74 61 72 74 0a 20 20 09 20 20  .lineStart.  .  
28c50 20 20 20 20 20 20 20 20 20 20 7d 3b 0a 20 20 09            };.  .
28c60 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20              var 
28c70 65 6e 74 72 79 20 3d 20 7b 0a 20 20 09 20 20 20  entry = {.  .   
28c80 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 75 6c               mul
28c90 74 69 4c 69 6e 65 3a 20 66 61 6c 73 65 2c 0a 20  tiLine: false,. 
28ca0 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
28cb0 20 20 73 6c 69 63 65 3a 20 5b 73 74 61 72 74 20    slice: [start 
28cc0 2b 20 6f 66 66 73 65 74 2c 20 74 68 69 73 2e 69  + offset, this.i
28cd0 6e 64 65 78 5d 2c 0a 20 20 09 20 20 20 20 20 20  ndex],.  .      
28ce0 20 20 20 20 20 20 20 20 20 20 72 61 6e 67 65 3a            range:
28cf0 20 5b 73 74 61 72 74 2c 20 74 68 69 73 2e 69 6e   [start, this.in
28d00 64 65 78 5d 2c 0a 20 20 09 20 20 20 20 20 20 20  dex],.  .       
28d10 20 20 20 20 20 20 20 20 20 6c 6f 63 3a 20 6c 6f           loc: lo
28d20 63 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  c.  .           
28d30 20 7d 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20   };.  .         
28d40 20 20 20 63 6f 6d 6d 65 6e 74 73 2e 70 75 73 68     comments.push
28d50 28 65 6e 74 72 79 29 3b 0a 20 20 09 20 20 20 20  (entry);.  .    
28d60 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20      }.  .       
28d70 20 72 65 74 75 72 6e 20 63 6f 6d 6d 65 6e 74 73   return comments
28d80 3b 0a 20 20 09 20 20 20 20 7d 3b 0a 20 20 09 20  ;.  .    };.  . 
28d90 20 20 20 0a 20 20 09 20 20 20 20 53 63 61 6e 6e     .  .    Scann
28da0 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 73 6b 69  er.prototype.ski
28db0 70 4d 75 6c 74 69 4c 69 6e 65 43 6f 6d 6d 65 6e  pMultiLineCommen
28dc0 74 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20  t = function () 
28dd0 7b 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72  {.  .        var
28de0 20 74 68 69 73 24 31 20 3d 20 74 68 69 73 3b 0a   this$1 = this;.
28df0 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20  .  .        var 
28e00 63 6f 6d 6d 65 6e 74 73 3b 0a 20 20 09 20 20 20  comments;.  .   
28e10 20 20 20 20 20 76 61 72 20 73 74 61 72 74 2c 20       var start, 
28e20 6c 6f 63 3b 0a 20 20 09 20 20 20 20 20 20 20 20  loc;.  .        
28e30 69 66 20 28 74 68 69 73 2e 74 72 61 63 6b 43 6f  if (this.trackCo
28e40 6d 6d 65 6e 74 29 20 7b 0a 20 20 09 20 20 20 20  mment) {.  .    
28e50 20 20 20 20 20 20 20 20 63 6f 6d 6d 65 6e 74 73          comments
28e60 20 3d 20 5b 5d 3b 0a 20 20 09 20 20 20 20 20 20   = [];.  .      
28e70 20 20 20 20 20 20 73 74 61 72 74 20 3d 20 74 68        start = th
28e80 69 73 2e 69 6e 64 65 78 20 2d 20 32 3b 0a 20 20  is.index - 2;.  
28e90 09 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63  .            loc
28ea0 20 3d 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20   = {.  .        
28eb0 20 20 20 20 20 20 20 20 73 74 61 72 74 3a 20 7b          start: {
28ec0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
28ed0 20 20 20 20 20 20 20 20 6c 69 6e 65 3a 20 74 68          line: th
28ee0 69 73 2e 6c 69 6e 65 4e 75 6d 62 65 72 2c 0a 20  is.lineNumber,. 
28ef0 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
28f00 20 20 20 20 20 20 63 6f 6c 75 6d 6e 3a 20 74 68        column: th
28f10 69 73 2e 69 6e 64 65 78 20 2d 20 74 68 69 73 2e  is.index - this.
28f20 6c 69 6e 65 53 74 61 72 74 20 2d 20 32 0a 20 20  lineStart - 2.  
28f30 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28f40 20 7d 2c 0a 20 20 09 20 20 20 20 20 20 20 20 20   },.  .         
28f50 20 20 20 20 20 20 20 65 6e 64 3a 20 7b 7d 0a 20         end: {}. 
28f60 20 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 3b   .            };
28f70 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a 20 20  .  .        }.  
28f80 09 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 28  .        while (
28f90 21 74 68 69 73 2e 65 6f 66 28 29 29 20 7b 0a 20  !this.eof()) {. 
28fa0 20 09 20 20 20 20 20 20 20 20 20 20 20 20 76 61   .            va
28fb0 72 20 63 68 20 3d 20 74 68 69 73 24 31 2e 73 6f  r ch = this$1.so
28fc0 75 72 63 65 2e 63 68 61 72 43 6f 64 65 41 74 28  urce.charCodeAt(
28fd0 74 68 69 73 24 31 2e 69 6e 64 65 78 29 3b 0a 20  this$1.index);. 
28fe0 20 09 20 20 20 20 20 20 20 20 20 20 20 20 69 66   .            if
28ff0 20 28 63 68 61 72 61 63 74 65 72 5f 31 2e 43 68   (character_1.Ch
29000 61 72 61 63 74 65 72 2e 69 73 4c 69 6e 65 54 65  aracter.isLineTe
29010 72 6d 69 6e 61 74 6f 72 28 63 68 29 29 20 7b 0a  rminator(ch)) {.
29020 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
29030 20 20 20 69 66 20 28 63 68 20 3d 3d 3d 20 30 78     if (ch === 0x
29040 30 44 20 26 26 20 74 68 69 73 24 31 2e 73 6f 75  0D && this$1.sou
29050 72 63 65 2e 63 68 61 72 43 6f 64 65 41 74 28 74  rce.charCodeAt(t
29060 68 69 73 24 31 2e 69 6e 64 65 78 20 2b 20 31 29  his$1.index + 1)
29070 20 3d 3d 3d 20 30 78 30 41 29 20 7b 0a 20 20 09   === 0x0A) {.  .
29080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29090 20 20 20 20 2b 2b 74 68 69 73 24 31 2e 69 6e 64      ++this$1.ind
290a0 65 78 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ex;.  .         
290b0 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20         }.  .    
290c0 20 20 20 20 20 20 20 20 20 20 20 20 2b 2b 74 68              ++th
290d0 69 73 24 31 2e 6c 69 6e 65 4e 75 6d 62 65 72 3b  is$1.lineNumber;
290e0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
290f0 20 20 20 20 2b 2b 74 68 69 73 24 31 2e 69 6e 64      ++this$1.ind
29100 65 78 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ex;.  .         
29110 20 20 20 20 20 20 20 74 68 69 73 24 31 2e 6c 69         this$1.li
29120 6e 65 53 74 61 72 74 20 3d 20 74 68 69 73 24 31  neStart = this$1
29130 2e 69 6e 64 65 78 3b 0a 20 20 09 20 20 20 20 20  .index;.  .     
29140 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20         }.  .    
29150 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20          else if 
29160 28 63 68 20 3d 3d 3d 20 30 78 32 41 29 20 7b 0a  (ch === 0x2A) {.
29170 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
29180 20 20 20 2f 2f 20 42 6c 6f 63 6b 20 63 6f 6d 6d     // Block comm
29190 65 6e 74 20 65 6e 64 73 20 77 69 74 68 20 27 2a  ent ends with '*
291a0 2f 27 2e 0a 20 20 09 20 20 20 20 20 20 20 20 20  /'..  .         
291b0 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73 24         if (this$
291c0 31 2e 73 6f 75 72 63 65 2e 63 68 61 72 43 6f 64  1.source.charCod
291d0 65 41 74 28 74 68 69 73 24 31 2e 69 6e 64 65 78  eAt(this$1.index
291e0 20 2b 20 31 29 20 3d 3d 3d 20 30 78 32 46 29 20   + 1) === 0x2F) 
291f0 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  {.  .           
29200 20 20 20 20 20 20 20 20 20 74 68 69 73 24 31 2e           this$1.
29210 69 6e 64 65 78 20 2b 3d 20 32 3b 0a 20 20 09 20  index += 2;.  . 
29220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29230 20 20 20 69 66 20 28 74 68 69 73 24 31 2e 74 72     if (this$1.tr
29240 61 63 6b 43 6f 6d 6d 65 6e 74 29 20 7b 0a 20 20  ackComment) {.  
29250 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29260 20 20 20 20 20 20 20 20 20 6c 6f 63 2e 65 6e 64           loc.end
29270 20 3d 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20   = {.  .        
29280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29290 20 20 20 20 6c 69 6e 65 3a 20 74 68 69 73 24 31      line: this$1
292a0 2e 6c 69 6e 65 4e 75 6d 62 65 72 2c 0a 20 20 09  .lineNumber,.  .
292b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
292c0 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6c 75              colu
292d0 6d 6e 3a 20 74 68 69 73 24 31 2e 69 6e 64 65 78  mn: this$1.index
292e0 20 2d 20 74 68 69 73 24 31 2e 6c 69 6e 65 53 74   - this$1.lineSt
292f0 61 72 74 0a 20 20 09 20 20 20 20 20 20 20 20 20  art.  .         
29300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
29310 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
29320 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72               var
29330 20 65 6e 74 72 79 20 3d 20 7b 0a 20 20 09 20 20   entry = {.  .  
29340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29350 20 20 20 20 20 20 20 20 20 20 6d 75 6c 74 69 4c            multiL
29360 69 6e 65 3a 20 74 72 75 65 2c 0a 20 20 09 20 20  ine: true,.  .  
29370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29380 20 20 20 20 20 20 20 20 20 20 73 6c 69 63 65 3a            slice:
29390 20 5b 73 74 61 72 74 20 2b 20 32 2c 20 74 68 69   [start + 2, thi
293a0 73 24 31 2e 69 6e 64 65 78 20 2d 20 32 5d 2c 0a  s$1.index - 2],.
293b0 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
293c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
293d0 61 6e 67 65 3a 20 5b 73 74 61 72 74 2c 20 74 68  ange: [start, th
293e0 69 73 24 31 2e 69 6e 64 65 78 5d 2c 0a 20 20 09  is$1.index],.  .
293f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29400 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 3a              loc:
29410 20 6c 6f 63 0a 20 20 09 20 20 20 20 20 20 20 20   loc.  .        
29420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29430 7d 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  };.  .          
29440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
29450 6d 6d 65 6e 74 73 2e 70 75 73 68 28 65 6e 74 72  mments.push(entr
29460 79 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  y);.  .         
29470 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09             }.  .
29480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29490 20 20 20 20 72 65 74 75 72 6e 20 63 6f 6d 6d 65      return comme
294a0 6e 74 73 3b 0a 20 20 09 20 20 20 20 20 20 20 20  nts;.  .        
294b0 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20          }.  .   
294c0 20 20 20 20 20 20 20 20 20 20 20 20 20 2b 2b 74               ++t
294d0 68 69 73 24 31 2e 69 6e 64 65 78 3b 0a 20 20 09  his$1.index;.  .
294e0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20              }.  
294f0 09 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73  .            els
29500 65 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20  e {.  .         
29510 20 20 20 20 20 20 20 2b 2b 74 68 69 73 24 31 2e         ++this$1.
29520 69 6e 64 65 78 3b 0a 20 20 09 20 20 20 20 20 20  index;.  .      
29530 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20        }.  .     
29540 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20     }.  .        
29550 2f 2f 20 52 61 6e 20 6f 66 66 20 74 68 65 20 65  // Ran off the e
29560 6e 64 20 6f 66 20 74 68 65 20 66 69 6c 65 20 2d  nd of the file -
29570 20 74 68 65 20 77 68 6f 6c 65 20 74 68 69 6e 67   the whole thing
29580 20 69 73 20 61 20 63 6f 6d 6d 65 6e 74 0a 20 20   is a comment.  
29590 09 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69  .        if (thi
295a0 73 2e 74 72 61 63 6b 43 6f 6d 6d 65 6e 74 29 20  s.trackComment) 
295b0 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  {.  .           
295c0 20 6c 6f 63 2e 65 6e 64 20 3d 20 7b 0a 20 20 09   loc.end = {.  .
295d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
295e0 6c 69 6e 65 3a 20 74 68 69 73 2e 6c 69 6e 65 4e  line: this.lineN
295f0 75 6d 62 65 72 2c 0a 20 20 09 20 20 20 20 20 20  umber,.  .      
29600 20 20 20 20 20 20 20 20 20 20 63 6f 6c 75 6d 6e            column
29610 3a 20 74 68 69 73 2e 69 6e 64 65 78 20 2d 20 74  : this.index - t
29620 68 69 73 2e 6c 69 6e 65 53 74 61 72 74 0a 20 20  his.lineStart.  
29630 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 3b 0a  .            };.
29640 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 76    .            v
29650 61 72 20 65 6e 74 72 79 20 3d 20 7b 0a 20 20 09  ar entry = {.  .
29660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29670 6d 75 6c 74 69 4c 69 6e 65 3a 20 74 72 75 65 2c  multiLine: true,
29680 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
29690 20 20 20 20 73 6c 69 63 65 3a 20 5b 73 74 61 72      slice: [star
296a0 74 20 2b 20 32 2c 20 74 68 69 73 2e 69 6e 64 65  t + 2, this.inde
296b0 78 5d 2c 0a 20 20 09 20 20 20 20 20 20 20 20 20  x],.  .         
296c0 20 20 20 20 20 20 20 72 61 6e 67 65 3a 20 5b 73         range: [s
296d0 74 61 72 74 2c 20 74 68 69 73 2e 69 6e 64 65 78  tart, this.index
296e0 5d 2c 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  ],.  .          
296f0 20 20 20 20 20 20 6c 6f 63 3a 20 6c 6f 63 0a 20        loc: loc. 
29700 20 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 3b   .            };
29710 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
29720 63 6f 6d 6d 65 6e 74 73 2e 70 75 73 68 28 65 6e  comments.push(en
29730 74 72 79 29 3b 0a 20 20 09 20 20 20 20 20 20 20  try);.  .       
29740 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 74 68   }.  .        th
29750 69 73 2e 74 6f 6c 65 72 61 74 65 55 6e 65 78 70  is.tolerateUnexp
29760 65 63 74 65 64 54 6f 6b 65 6e 28 29 3b 0a 20 20  ectedToken();.  
29770 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
29780 63 6f 6d 6d 65 6e 74 73 3b 0a 20 20 09 20 20 20  comments;.  .   
29790 20 7d 3b 0a 20 20 09 20 20 20 20 0a 20 20 09 20   };.  .    .  . 
297a0 20 20 20 53 63 61 6e 6e 65 72 2e 70 72 6f 74 6f     Scanner.proto
297b0 74 79 70 65 2e 73 63 61 6e 43 6f 6d 6d 65 6e 74  type.scanComment
297c0 73 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20  s = function () 
297d0 7b 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72  {.  .        var
297e0 20 74 68 69 73 24 31 20 3d 20 74 68 69 73 3b 0a   this$1 = this;.
297f0 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20  .  .        var 
29800 63 6f 6d 6d 65 6e 74 73 3b 0a 20 20 09 20 20 20  comments;.  .   
29810 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 74 72       if (this.tr
29820 61 63 6b 43 6f 6d 6d 65 6e 74 29 20 7b 0a 20 20  ackComment) {.  
29830 09 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6d  .            com
29840 6d 65 6e 74 73 20 3d 20 5b 5d 3b 0a 20 20 09 20  ments = [];.  . 
29850 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20         }.  .    
29860 20 20 20 20 76 61 72 20 73 74 61 72 74 20 3d 20      var start = 
29870 28 74 68 69 73 2e 69 6e 64 65 78 20 3d 3d 3d 20  (this.index === 
29880 30 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 77  0);.  .        w
29890 68 69 6c 65 20 28 21 74 68 69 73 2e 65 6f 66 28  hile (!this.eof(
298a0 29 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20  )) {.  .        
298b0 20 20 20 20 76 61 72 20 63 68 20 3d 20 74 68 69      var ch = thi
298c0 73 24 31 2e 73 6f 75 72 63 65 2e 63 68 61 72 43  s$1.source.charC
298d0 6f 64 65 41 74 28 74 68 69 73 24 31 2e 69 6e 64  odeAt(this$1.ind
298e0 65 78 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  ex);.  .        
298f0 20 20 20 20 69 66 20 28 63 68 61 72 61 63 74 65      if (characte
29900 72 5f 31 2e 43 68 61 72 61 63 74 65 72 2e 69 73  r_1.Character.is
29910 57 68 69 74 65 53 70 61 63 65 28 63 68 29 29 20  WhiteSpace(ch)) 
29920 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  {.  .           
29930 20 20 20 20 20 2b 2b 74 68 69 73 24 31 2e 69 6e       ++this$1.in
29940 64 65 78 3b 0a 20 20 09 20 20 20 20 20 20 20 20  dex;.  .        
29950 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20      }.  .       
29960 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 63 68       else if (ch
29970 61 72 61 63 74 65 72 5f 31 2e 43 68 61 72 61 63  aracter_1.Charac
29980 74 65 72 2e 69 73 4c 69 6e 65 54 65 72 6d 69 6e  ter.isLineTermin
29990 61 74 6f 72 28 63 68 29 29 20 7b 0a 20 20 09 20  ator(ch)) {.  . 
299a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2b                 +
299b0 2b 74 68 69 73 24 31 2e 69 6e 64 65 78 3b 0a 20  +this$1.index;. 
299c0 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
299d0 20 20 69 66 20 28 63 68 20 3d 3d 3d 20 30 78 30    if (ch === 0x0
299e0 44 20 26 26 20 74 68 69 73 24 31 2e 73 6f 75 72  D && this$1.sour
299f0 63 65 2e 63 68 61 72 43 6f 64 65 41 74 28 74 68  ce.charCodeAt(th
29a00 69 73 24 31 2e 69 6e 64 65 78 29 20 3d 3d 3d 20  is$1.index) === 
29a10 30 78 30 41 29 20 7b 0a 20 20 09 20 20 20 20 20  0x0A) {.  .     
29a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2b                 +
29a30 2b 74 68 69 73 24 31 2e 69 6e 64 65 78 3b 0a 20  +this$1.index;. 
29a40 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
29a50 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20    }.  .         
29a60 20 20 20 20 20 20 20 2b 2b 74 68 69 73 24 31 2e         ++this$1.
29a70 6c 69 6e 65 4e 75 6d 62 65 72 3b 0a 20 20 09 20  lineNumber;.  . 
29a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
29a90 68 69 73 24 31 2e 6c 69 6e 65 53 74 61 72 74 20  his$1.lineStart 
29aa0 3d 20 74 68 69 73 24 31 2e 69 6e 64 65 78 3b 0a  = this$1.index;.
29ab0 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
29ac0 20 20 20 73 74 61 72 74 20 3d 20 74 72 75 65 3b     start = true;
29ad0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
29ae0 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  }.  .           
29af0 20 65 6c 73 65 20 69 66 20 28 63 68 20 3d 3d 3d   else if (ch ===
29b00 20 30 78 32 46 29 20 7b 0a 20 20 09 20 20 20 20   0x2F) {.  .    
29b10 20 20 20 20 20 20 20 20 20 20 20 20 63 68 20 3d              ch =
29b20 20 74 68 69 73 24 31 2e 73 6f 75 72 63 65 2e 63   this$1.source.c
29b30 68 61 72 43 6f 64 65 41 74 28 74 68 69 73 24 31  harCodeAt(this$1
29b40 2e 69 6e 64 65 78 20 2b 20 31 29 3b 0a 20 20 09  .index + 1);.  .
29b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29b60 69 66 20 28 63 68 20 3d 3d 3d 20 30 78 32 46 29  if (ch === 0x2F)
29b70 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   {.  .          
29b80 20 20 20 20 20 20 20 20 20 20 74 68 69 73 24 31            this$1
29b90 2e 69 6e 64 65 78 20 2b 3d 20 32 3b 0a 20 20 09  .index += 2;.  .
29ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29bb0 20 20 20 20 76 61 72 20 63 6f 6d 6d 65 6e 74 20      var comment 
29bc0 3d 20 74 68 69 73 24 31 2e 73 6b 69 70 53 69 6e  = this$1.skipSin
29bd0 67 6c 65 4c 69 6e 65 43 6f 6d 6d 65 6e 74 28 32  gleLineComment(2
29be0 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  );.  .          
29bf0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74 68            if (th
29c00 69 73 24 31 2e 74 72 61 63 6b 43 6f 6d 6d 65 6e  is$1.trackCommen
29c10 74 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20  t) {.  .        
29c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29c30 63 6f 6d 6d 65 6e 74 73 20 3d 20 63 6f 6d 6d 65  comments = comme
29c40 6e 74 73 2e 63 6f 6e 63 61 74 28 63 6f 6d 6d 65  nts.concat(comme
29c50 6e 74 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  nt);.  .        
29c60 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20              }.  
29c70 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29c80 20 20 20 20 20 73 74 61 72 74 20 3d 20 74 72 75       start = tru
29c90 65 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  e;.  .          
29ca0 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20        }.  .     
29cb0 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20             else 
29cc0 69 66 20 28 63 68 20 3d 3d 3d 20 30 78 32 41 29  if (ch === 0x2A)
29cd0 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   {.  .          
29ce0 20 20 20 20 20 20 20 20 20 20 74 68 69 73 24 31            this$1
29cf0 2e 69 6e 64 65 78 20 2b 3d 20 32 3b 0a 20 20 09  .index += 2;.  .
29d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29d10 20 20 20 20 76 61 72 20 63 6f 6d 6d 65 6e 74 20      var comment 
29d20 3d 20 74 68 69 73 24 31 2e 73 6b 69 70 4d 75 6c  = this$1.skipMul
29d30 74 69 4c 69 6e 65 43 6f 6d 6d 65 6e 74 28 29 3b  tiLineComment();
29d40 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
29d50 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73          if (this
29d60 24 31 2e 74 72 61 63 6b 43 6f 6d 6d 65 6e 74 29  $1.trackComment)
29d70 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   {.  .          
29d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
29d90 6d 6d 65 6e 74 73 20 3d 20 63 6f 6d 6d 65 6e 74  mments = comment
29da0 73 2e 63 6f 6e 63 61 74 28 63 6f 6d 6d 65 6e 74  s.concat(comment
29db0 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  );.  .          
29dc0 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20            }.  . 
29dd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
29de0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
29df0 20 20 20 20 65 6c 73 65 20 7b 0a 20 20 09 20 20      else {.  .  
29e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29e10 20 20 62 72 65 61 6b 3b 0a 20 20 09 20 20 20 20    break;.  .    
29e20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20              }.  
29e30 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20  .            }. 
29e40 20 09 20 20 20 20 20 20 20 20 20 20 20 20 65 6c   .            el
29e50 73 65 20 69 66 20 28 73 74 61 72 74 20 26 26 20  se if (start && 
29e60 63 68 20 3d 3d 3d 20 30 78 32 44 29 20 7b 0a 20  ch === 0x2D) {. 
29e70 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
29e80 20 20 2f 2f 20 55 2b 30 30 33 45 20 69 73 20 27    // U+003E is '
29e90 3e 27 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  >'.  .          
29ea0 20 20 20 20 20 20 69 66 20 28 28 74 68 69 73 24        if ((this$
29eb0 31 2e 73 6f 75 72 63 65 2e 63 68 61 72 43 6f 64  1.source.charCod
29ec0 65 41 74 28 74 68 69 73 24 31 2e 69 6e 64 65 78  eAt(this$1.index
29ed0 20 2b 20 31 29 20 3d 3d 3d 20 30 78 32 44 29 20   + 1) === 0x2D) 
29ee0 26 26 20 28 74 68 69 73 24 31 2e 73 6f 75 72 63  && (this$1.sourc
29ef0 65 2e 63 68 61 72 43 6f 64 65 41 74 28 74 68 69  e.charCodeAt(thi
29f00 73 24 31 2e 69 6e 64 65 78 20 2b 20 32 29 20 3d  s$1.index + 2) =
29f10 3d 3d 20 30 78 33 45 29 29 20 7b 0a 20 20 09 20  == 0x3E)) {.  . 
29f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29f30 20 20 20 2f 2f 20 27 2d 2d 3e 27 20 69 73 20 61     // '-->' is a
29f40 20 73 69 6e 67 6c 65 2d 6c 69 6e 65 20 63 6f 6d   single-line com
29f50 6d 65 6e 74 0a 20 20 09 20 20 20 20 20 20 20 20  ment.  .        
29f60 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
29f70 24 31 2e 69 6e 64 65 78 20 2b 3d 20 33 3b 0a 20  $1.index += 3;. 
29f80 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
29f90 20 20 20 20 20 20 76 61 72 20 63 6f 6d 6d 65 6e        var commen
29fa0 74 20 3d 20 74 68 69 73 24 31 2e 73 6b 69 70 53  t = this$1.skipS
29fb0 69 6e 67 6c 65 4c 69 6e 65 43 6f 6d 6d 65 6e 74  ingleLineComment
29fc0 28 33 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  (3);.  .        
29fd0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
29fe0 74 68 69 73 24 31 2e 74 72 61 63 6b 43 6f 6d 6d  this$1.trackComm
29ff0 65 6e 74 29 20 7b 0a 20 20 09 20 20 20 20 20 20  ent) {.  .      
2a000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a010 20 20 63 6f 6d 6d 65 6e 74 73 20 3d 20 63 6f 6d    comments = com
2a020 6d 65 6e 74 73 2e 63 6f 6e 63 61 74 28 63 6f 6d  ments.concat(com
2a030 6d 65 6e 74 29 3b 0a 20 20 09 20 20 20 20 20 20  ment);.  .      
2a040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a                }.
2a050 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
2a060 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20     }.  .        
2a070 20 20 20 20 20 20 20 20 65 6c 73 65 20 7b 0a 20          else {. 
2a080 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
2a090 20 20 20 20 20 20 62 72 65 61 6b 3b 0a 20 20 09        break;.  .
2a0a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a0b0 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  }.  .           
2a0c0 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   }.  .          
2a0d0 20 20 65 6c 73 65 20 69 66 20 28 63 68 20 3d 3d    else if (ch ==
2a0e0 3d 20 30 78 33 43 29 20 7b 0a 20 20 09 20 20 20  = 0x3C) {.  .   
2a0f0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
2a100 28 74 68 69 73 24 31 2e 73 6f 75 72 63 65 2e 73  (this$1.source.s
2a110 6c 69 63 65 28 74 68 69 73 24 31 2e 69 6e 64 65  lice(this$1.inde
2a120 78 20 2b 20 31 2c 20 74 68 69 73 24 31 2e 69 6e  x + 1, this$1.in
2a130 64 65 78 20 2b 20 34 29 20 3d 3d 3d 20 27 21 2d  dex + 4) === '!-
2a140 2d 27 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20  -') {.  .       
2a150 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
2a160 73 24 31 2e 69 6e 64 65 78 20 2b 3d 20 34 3b 20  s$1.index += 4; 
2a170 2f 2f 20 60 3c 21 2d 2d 60 0a 20 20 09 20 20 20  // `<!--`.  .   
2a180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a190 20 76 61 72 20 63 6f 6d 6d 65 6e 74 20 3d 20 74   var comment = t
2a1a0 68 69 73 24 31 2e 73 6b 69 70 53 69 6e 67 6c 65  his$1.skipSingle
2a1b0 4c 69 6e 65 43 6f 6d 6d 65 6e 74 28 34 29 3b 0a  LineComment(4);.
2a1c0 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
2a1d0 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73 24         if (this$
2a1e0 31 2e 74 72 61 63 6b 43 6f 6d 6d 65 6e 74 29 20  1.trackComment) 
2a1f0 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  {.  .           
2a200 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6d               com
2a210 6d 65 6e 74 73 20 3d 20 63 6f 6d 6d 65 6e 74 73  ments = comments
2a220 2e 63 6f 6e 63 61 74 28 63 6f 6d 6d 65 6e 74 29  .concat(comment)
2a230 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
2a240 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20           }.  .  
2a250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a                }.
2a260 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
2a270 20 20 20 65 6c 73 65 20 7b 0a 20 20 09 20 20 20     else {.  .   
2a280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a290 20 62 72 65 61 6b 3b 0a 20 20 09 20 20 20 20 20   break;.  .     
2a2a0 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09             }.  .
2a2b0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20              }.  
2a2c0 09 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73  .            els
2a2d0 65 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20  e {.  .         
2a2e0 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0a 20 20         break;.  
2a2f0 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20  .            }. 
2a300 20 09 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20   .        }.  . 
2a310 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 63 6f         return co
2a320 6d 6d 65 6e 74 73 3b 0a 20 20 09 20 20 20 20 7d  mments;.  .    }
2a330 3b 0a 20 20 09 20 20 20 20 0a 20 20 09 20 20 20  ;.  .    .  .   
2a340 20 2f 2f 20 45 43 4d 41 2d 32 36 32 20 31 31 2e   // ECMA-262 11.
2a350 36 2e 32 2e 32 20 46 75 74 75 72 65 20 52 65 73  6.2.2 Future Res
2a360 65 72 76 65 64 20 57 6f 72 64 73 0a 20 20 09 20  erved Words.  . 
2a370 20 20 20 53 63 61 6e 6e 65 72 2e 70 72 6f 74 6f     Scanner.proto
2a380 74 79 70 65 2e 69 73 46 75 74 75 72 65 52 65 73  type.isFutureRes
2a390 65 72 76 65 64 57 6f 72 64 20 3d 20 66 75 6e 63  ervedWord = func
2a3a0 74 69 6f 6e 20 28 69 64 29 20 7b 0a 20 20 09 20  tion (id) {.  . 
2a3b0 20 20 20 20 20 20 20 73 77 69 74 63 68 20 28 69         switch (i
2a3c0 64 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20  d) {.  .        
2a3d0 20 20 20 20 63 61 73 65 20 27 65 6e 75 6d 27 3a      case 'enum':
2a3e0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
2a3f0 63 61 73 65 20 27 65 78 70 6f 72 74 27 3a 0a 20  case 'export':. 
2a400 20 09 20 20 20 20 20 20 20 20 20 20 20 20 63 61   .            ca
2a410 73 65 20 27 69 6d 70 6f 72 74 27 3a 0a 20 20 09  se 'import':.  .
2a420 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
2a430 20 27 73 75 70 65 72 27 3a 0a 20 20 09 20 20 20   'super':.  .   
2a440 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
2a450 75 72 6e 20 74 72 75 65 3b 0a 20 20 09 20 20 20  urn true;.  .   
2a460 20 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74           default
2a470 3a 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  :.  .           
2a480 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
2a490 65 3b 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a  e;.  .        }.
2a4a0 20 20 09 20 20 20 20 7d 3b 0a 20 20 09 20 20 20    .    };.  .   
2a4b0 20 0a 20 20 09 20 20 20 20 53 63 61 6e 6e 65 72   .  .    Scanner
2a4c0 2e 70 72 6f 74 6f 74 79 70 65 2e 69 73 53 74 72  .prototype.isStr
2a4d0 69 63 74 4d 6f 64 65 52 65 73 65 72 76 65 64 57  ictModeReservedW
2a4e0 6f 72 64 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28  ord = function (
2a4f0 69 64 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20  id) {.  .       
2a500 20 73 77 69 74 63 68 20 28 69 64 29 20 7b 0a 20   switch (id) {. 
2a510 20 09 20 20 20 20 20 20 20 20 20 20 20 20 63 61   .            ca
2a520 73 65 20 27 69 6d 70 6c 65 6d 65 6e 74 73 27 3a  se 'implements':
2a530 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
2a540 63 61 73 65 20 27 69 6e 74 65 72 66 61 63 65 27  case 'interface'
2a550 3a 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  :.  .           
2a560 20 63 61 73 65 20 27 70 61 63 6b 61 67 65 27 3a   case 'package':
2a570 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
2a580 63 61 73 65 20 27 70 72 69 76 61 74 65 27 3a 0a  case 'private':.
2a590 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 63    .            c
2a5a0 61 73 65 20 27 70 72 6f 74 65 63 74 65 64 27 3a  ase 'protected':
2a5b0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
2a5c0 63 61 73 65 20 27 70 75 62 6c 69 63 27 3a 0a 20  case 'public':. 
2a5d0 20 09 20 20 20 20 20 20 20 20 20 20 20 20 63 61   .            ca
2a5e0 73 65 20 27 73 74 61 74 69 63 27 3a 0a 20 20 09  se 'static':.  .
2a5f0 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
2a600 20 27 79 69 65 6c 64 27 3a 0a 20 20 09 20 20 20   'yield':.  .   
2a610 20 20 20 20 20 20 20 20 20 63 61 73 65 20 27 6c           case 'l
2a620 65 74 27 3a 0a 20 20 09 20 20 20 20 20 20 20 20  et':.  .        
2a630 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
2a640 72 75 65 3b 0a 20 20 09 20 20 20 20 20 20 20 20  rue;.  .        
2a650 20 20 20 20 64 65 66 61 75 6c 74 3a 0a 20 20 09      default:.  .
2a660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a670 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20  return false;.  
2a680 09 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20  .        }.  .  
2a690 20 20 7d 3b 0a 20 20 09 20 20 20 20 0a 20 20 09    };.  .    .  .
2a6a0 20 20 20 20 53 63 61 6e 6e 65 72 2e 70 72 6f 74      Scanner.prot
2a6b0 6f 74 79 70 65 2e 69 73 52 65 73 74 72 69 63 74  otype.isRestrict
2a6c0 65 64 57 6f 72 64 20 3d 20 66 75 6e 63 74 69 6f  edWord = functio
2a6d0 6e 20 28 69 64 29 20 7b 0a 20 20 09 20 20 20 20  n (id) {.  .    
2a6e0 20 20 20 20 72 65 74 75 72 6e 20 69 64 20 3d 3d      return id ==
2a6f0 3d 20 27 65 76 61 6c 27 20 7c 7c 20 69 64 20 3d  = 'eval' || id =
2a700 3d 3d 20 27 61 72 67 75 6d 65 6e 74 73 27 3b 0a  == 'arguments';.
2a710 20 20 09 20 20 20 20 7d 3b 0a 20 20 09 20 20 20    .    };.  .   
2a720 20 0a 20 20 09 20 20 20 20 2f 2f 20 45 43 4d 41   .  .    // ECMA
2a730 2d 32 36 32 20 31 31 2e 36 2e 32 2e 31 20 4b 65  -262 11.6.2.1 Ke
2a740 79 77 6f 72 64 73 0a 20 20 09 20 20 20 20 53 63  ywords.  .    Sc
2a750 61 6e 6e 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e  anner.prototype.
2a760 69 73 4b 65 79 77 6f 72 64 20 3d 20 66 75 6e 63  isKeyword = func
2a770 74 69 6f 6e 20 28 69 64 29 20 7b 0a 20 20 09 20  tion (id) {.  . 
2a780 20 20 20 20 20 20 20 73 77 69 74 63 68 20 28 69         switch (i
2a790 64 2e 6c 65 6e 67 74 68 29 20 7b 0a 20 20 09 20  d.length) {.  . 
2a7a0 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
2a7b0 32 3a 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  2:.  .          
2a7c0 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 69 64        return (id
2a7d0 20 3d 3d 3d 20 27 69 66 27 29 20 7c 7c 20 28 69   === 'if') || (i
2a7e0 64 20 3d 3d 3d 20 27 69 6e 27 29 20 7c 7c 20 28  d === 'in') || (
2a7f0 69 64 20 3d 3d 3d 20 27 64 6f 27 29 3b 0a 20 20  id === 'do');.  
2a800 09 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73  .            cas
2a810 65 20 33 3a 0a 20 20 09 20 20 20 20 20 20 20 20  e 3:.  .        
2a820 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
2a830 69 64 20 3d 3d 3d 20 27 76 61 72 27 29 20 7c 7c  id === 'var') ||
2a840 20 28 69 64 20 3d 3d 3d 20 27 66 6f 72 27 29 20   (id === 'for') 
2a850 7c 7c 20 28 69 64 20 3d 3d 3d 20 27 6e 65 77 27  || (id === 'new'
2a860 29 20 7c 7c 0a 20 20 09 20 20 20 20 20 20 20 20  ) ||.  .        
2a870 20 20 20 20 20 20 20 20 20 20 20 20 28 69 64 20              (id 
2a880 3d 3d 3d 20 27 74 72 79 27 29 20 7c 7c 20 28 69  === 'try') || (i
2a890 64 20 3d 3d 3d 20 27 6c 65 74 27 29 3b 0a 20 20  d === 'let');.  
2a8a0 09 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73  .            cas
2a8b0 65 20 34 3a 0a 20 20 09 20 20 20 20 20 20 20 20  e 4:.  .        
2a8c0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
2a8d0 69 64 20 3d 3d 3d 20 27 74 68 69 73 27 29 20 7c  id === 'this') |
2a8e0 7c 20 28 69 64 20 3d 3d 3d 20 27 65 6c 73 65 27  | (id === 'else'
2a8f0 29 20 7c 7c 20 28 69 64 20 3d 3d 3d 20 27 63 61  ) || (id === 'ca
2a900 73 65 27 29 20 7c 7c 0a 20 20 09 20 20 20 20 20  se') ||.  .     
2a910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
2a920 69 64 20 3d 3d 3d 20 27 76 6f 69 64 27 29 20 7c  id === 'void') |
2a930 7c 20 28 69 64 20 3d 3d 3d 20 27 77 69 74 68 27  | (id === 'with'
2a940 29 20 7c 7c 20 28 69 64 20 3d 3d 3d 20 27 65 6e  ) || (id === 'en
2a950 75 6d 27 29 3b 0a 20 20 09 20 20 20 20 20 20 20  um');.  .       
2a960 20 20 20 20 20 63 61 73 65 20 35 3a 0a 20 20 09       case 5:.  .
2a970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a980 72 65 74 75 72 6e 20 28 69 64 20 3d 3d 3d 20 27  return (id === '
2a990 77 68 69 6c 65 27 29 20 7c 7c 20 28 69 64 20 3d  while') || (id =
2a9a0 3d 3d 20 27 62 72 65 61 6b 27 29 20 7c 7c 20 28  == 'break') || (
2a9b0 69 64 20 3d 3d 3d 20 27 63 61 74 63 68 27 29 20  id === 'catch') 
2a9c0 7c 7c 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  ||.  .          
2a9d0 20 20 20 20 20 20 20 20 20 20 28 69 64 20 3d 3d            (id ==
2a9e0 3d 20 27 74 68 72 6f 77 27 29 20 7c 7c 20 28 69  = 'throw') || (i
2a9f0 64 20 3d 3d 3d 20 27 63 6f 6e 73 74 27 29 20 7c  d === 'const') |
2aa00 7c 20 28 69 64 20 3d 3d 3d 20 27 79 69 65 6c 64  | (id === 'yield
2aa10 27 29 20 7c 7c 0a 20 20 09 20 20 20 20 20 20 20  ') ||.  .       
2aa20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 64               (id
2aa30 20 3d 3d 3d 20 27 63 6c 61 73 73 27 29 20 7c 7c   === 'class') ||
2aa40 20 28 69 64 20 3d 3d 3d 20 27 73 75 70 65 72 27   (id === 'super'
2aa50 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  );.  .          
2aa60 20 20 63 61 73 65 20 36 3a 0a 20 20 09 20 20 20    case 6:.  .   
2aa70 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
2aa80 75 72 6e 20 28 69 64 20 3d 3d 3d 20 27 72 65 74  urn (id === 'ret
2aa90 75 72 6e 27 29 20 7c 7c 20 28 69 64 20 3d 3d 3d  urn') || (id ===
2aaa0 20 27 74 79 70 65 6f 66 27 29 20 7c 7c 20 28 69   'typeof') || (i
2aab0 64 20 3d 3d 3d 20 27 64 65 6c 65 74 65 27 29 20  d === 'delete') 
2aac0 7c 7c 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  ||.  .          
2aad0 20 20 20 20 20 20 20 20 20 20 28 69 64 20 3d 3d            (id ==
2aae0 3d 20 27 73 77 69 74 63 68 27 29 20 7c 7c 20 28  = 'switch') || (
2aaf0 69 64 20 3d 3d 3d 20 27 65 78 70 6f 72 74 27 29  id === 'export')
2ab00 20 7c 7c 20 28 69 64 20 3d 3d 3d 20 27 69 6d 70   || (id === 'imp
2ab10 6f 72 74 27 29 3b 0a 20 20 09 20 20 20 20 20 20  ort');.  .      
2ab20 20 20 20 20 20 20 63 61 73 65 20 37 3a 0a 20 20        case 7:.  
2ab30 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ab40 20 72 65 74 75 72 6e 20 28 69 64 20 3d 3d 3d 20   return (id === 
2ab50 27 64 65 66 61 75 6c 74 27 29 20 7c 7c 20 28 69  'default') || (i
2ab60 64 20 3d 3d 3d 20 27 66 69 6e 61 6c 6c 79 27 29  d === 'finally')
2ab70 20 7c 7c 20 28 69 64 20 3d 3d 3d 20 27 65 78 74   || (id === 'ext
2ab80 65 6e 64 73 27 29 3b 0a 20 20 09 20 20 20 20 20  ends');.  .     
2ab90 20 20 20 20 20 20 20 63 61 73 65 20 38 3a 0a 20         case 8:. 
2aba0 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
2abb0 20 20 72 65 74 75 72 6e 20 28 69 64 20 3d 3d 3d    return (id ===
2abc0 20 27 66 75 6e 63 74 69 6f 6e 27 29 20 7c 7c 20   'function') || 
2abd0 28 69 64 20 3d 3d 3d 20 27 63 6f 6e 74 69 6e 75  (id === 'continu
2abe0 65 27 29 20 7c 7c 20 28 69 64 20 3d 3d 3d 20 27  e') || (id === '
2abf0 64 65 62 75 67 67 65 72 27 29 3b 0a 20 20 09 20  debugger');.  . 
2ac00 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
2ac10 31 30 3a 0a 20 20 09 20 20 20 20 20 20 20 20 20  10:.  .         
2ac20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 69         return (i
2ac30 64 20 3d 3d 3d 20 27 69 6e 73 74 61 6e 63 65 6f  d === 'instanceo
2ac40 66 27 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  f');.  .        
2ac50 20 20 20 20 64 65 66 61 75 6c 74 3a 0a 20 20 09      default:.  .
2ac60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ac70 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20  return false;.  
2ac80 09 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20  .        }.  .  
2ac90 20 20 7d 3b 0a 20 20 09 20 20 20 20 0a 20 20 09    };.  .    .  .
2aca0 20 20 20 20 53 63 61 6e 6e 65 72 2e 70 72 6f 74      Scanner.prot
2acb0 6f 74 79 70 65 2e 63 6f 64 65 50 6f 69 6e 74 41  otype.codePointA
2acc0 74 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 69 29  t = function (i)
2acd0 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 76 61   {.  .        va
2ace0 72 20 63 70 20 3d 20 74 68 69 73 2e 73 6f 75 72  r cp = this.sour
2acf0 63 65 2e 63 68 61 72 43 6f 64 65 41 74 28 69 29  ce.charCodeAt(i)
2ad00 3b 0a 20 20 09 20 20 20 20 20 20 20 20 69 66 20  ;.  .        if 
2ad10 28 63 70 20 3e 3d 20 30 78 44 38 30 30 20 26 26  (cp >= 0xD800 &&
2ad20 20 63 70 20 3c 3d 20 30 78 44 42 46 46 29 20 7b   cp <= 0xDBFF) {
2ad30 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
2ad40 76 61 72 20 73 65 63 6f 6e 64 20 3d 20 74 68 69  var second = thi
2ad50 73 2e 73 6f 75 72 63 65 2e 63 68 61 72 43 6f 64  s.source.charCod
2ad60 65 41 74 28 69 20 2b 20 31 29 3b 0a 20 20 09 20  eAt(i + 1);.  . 
2ad70 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73             if (s
2ad80 65 63 6f 6e 64 20 3e 3d 20 30 78 44 43 30 30 20  econd >= 0xDC00 
2ad90 26 26 20 73 65 63 6f 6e 64 20 3c 3d 20 30 78 44  && second <= 0xD
2ada0 46 46 46 29 20 7b 0a 20 20 09 20 20 20 20 20 20  FFF) {.  .      
2adb0 20 20 20 20 20 20 20 20 20 20 76 61 72 20 66 69            var fi
2adc0 72 73 74 20 3d 20 63 70 3b 0a 20 20 09 20 20 20  rst = cp;.  .   
2add0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 70 20               cp 
2ade0 3d 20 28 66 69 72 73 74 20 2d 20 30 78 44 38 30  = (first - 0xD80
2adf0 30 29 20 2a 20 30 78 34 30 30 20 2b 20 73 65 63  0) * 0x400 + sec
2ae00 6f 6e 64 20 2d 20 30 78 44 43 30 30 20 2b 20 30  ond - 0xDC00 + 0
2ae10 78 31 30 30 30 30 3b 0a 20 20 09 20 20 20 20 20  x10000;.  .     
2ae20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20         }.  .    
2ae30 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20      }.  .       
2ae40 20 72 65 74 75 72 6e 20 63 70 3b 0a 20 20 09 20   return cp;.  . 
2ae50 20 20 20 7d 3b 0a 20 20 09 20 20 20 20 0a 20 20     };.  .    .  
2ae60 09 20 20 20 20 53 63 61 6e 6e 65 72 2e 70 72 6f  .    Scanner.pro
2ae70 74 6f 74 79 70 65 2e 73 63 61 6e 48 65 78 45 73  totype.scanHexEs
2ae80 63 61 70 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20  cape = function 
2ae90 28 70 72 65 66 69 78 29 20 7b 0a 20 20 09 20 20  (prefix) {.  .  
2aea0 20 20 20 20 20 20 76 61 72 20 74 68 69 73 24 31        var this$1
2aeb0 20 3d 20 74 68 69 73 3b 0a 0a 20 20 09 20 20 20   = this;..  .   
2aec0 20 20 20 20 20 76 61 72 20 6c 65 6e 20 3d 20 28       var len = (
2aed0 70 72 65 66 69 78 20 3d 3d 3d 20 27 75 27 29 20  prefix === 'u') 
2aee0 3f 20 34 20 3a 20 32 3b 0a 20 20 09 20 20 20 20  ? 4 : 2;.  .    
2aef0 20 20 20 20 76 61 72 20 63 6f 64 65 20 3d 20 30      var code = 0
2af00 3b 0a 20 20 09 20 20 20 20 20 20 20 20 66 6f 72  ;.  .        for
2af10 20 28 76 61 72 20 69 20 3d 20 30 3b 20 69 20 3c   (var i = 0; i <
2af20 20 6c 65 6e 3b 20 2b 2b 69 29 20 7b 0a 20 20 09   len; ++i) {.  .
2af30 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
2af40 21 74 68 69 73 24 31 2e 65 6f 66 28 29 20 26 26  !this$1.eof() &&
2af50 20 63 68 61 72 61 63 74 65 72 5f 31 2e 43 68 61   character_1.Cha
2af60 72 61 63 74 65 72 2e 69 73 48 65 78 44 69 67 69  racter.isHexDigi
2af70 74 28 74 68 69 73 24 31 2e 73 6f 75 72 63 65 2e  t(this$1.source.
2af80 63 68 61 72 43 6f 64 65 41 74 28 74 68 69 73 24  charCodeAt(this$
2af90 31 2e 69 6e 64 65 78 29 29 29 20 7b 0a 20 20 09  1.index))) {.  .
2afa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2afb0 63 6f 64 65 20 3d 20 63 6f 64 65 20 2a 20 31 36  code = code * 16
2afc0 20 2b 20 68 65 78 56 61 6c 75 65 28 74 68 69 73   + hexValue(this
2afd0 24 31 2e 73 6f 75 72 63 65 5b 74 68 69 73 24 31  $1.source[this$1
2afe0 2e 69 6e 64 65 78 2b 2b 5d 29 3b 0a 20 20 09 20  .index++]);.  . 
2aff0 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09             }.  .
2b000 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
2b010 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   {.  .          
2b020 20 20 20 20 20 20 72 65 74 75 72 6e 20 27 27 3b        return '';
2b030 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
2b040 7d 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a 20  }.  .        }. 
2b050 20 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e   .        return
2b060 20 53 74 72 69 6e 67 2e 66 72 6f 6d 43 68 61 72   String.fromChar
2b070 43 6f 64 65 28 63 6f 64 65 29 3b 0a 20 20 09 20  Code(code);.  . 
2b080 20 20 20 7d 3b 0a 20 20 09 20 20 20 20 0a 20 20     };.  .    .  
2b090 09 20 20 20 20 53 63 61 6e 6e 65 72 2e 70 72 6f  .    Scanner.pro
2b0a0 74 6f 74 79 70 65 2e 73 63 61 6e 55 6e 69 63 6f  totype.scanUnico
2b0b0 64 65 43 6f 64 65 50 6f 69 6e 74 45 73 63 61 70  deCodePointEscap
2b0c0 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20  e = function () 
2b0d0 7b 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72  {.  .        var
2b0e0 20 74 68 69 73 24 31 20 3d 20 74 68 69 73 3b 0a   this$1 = this;.
2b0f0 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20  .  .        var 
2b100 63 68 20 3d 20 74 68 69 73 2e 73 6f 75 72 63 65  ch = this.source
2b110 5b 74 68 69 73 2e 69 6e 64 65 78 5d 3b 0a 20 20  [this.index];.  
2b120 09 20 20 20 20 20 20 20 20 76 61 72 20 63 6f 64  .        var cod
2b130 65 20 3d 20 30 3b 0a 20 20 09 20 20 20 20 20 20  e = 0;.  .      
2b140 20 20 2f 2f 20 41 74 20 6c 65 61 73 74 2c 20 6f    // At least, o
2b150 6e 65 20 68 65 78 20 64 69 67 69 74 20 69 73 20  ne hex digit is 
2b160 72 65 71 75 69 72 65 64 2e 0a 20 20 09 20 20 20  required..  .   
2b170 20 20 20 20 20 69 66 20 28 63 68 20 3d 3d 3d 20       if (ch === 
2b180 27 7d 27 29 20 7b 0a 20 20 09 20 20 20 20 20 20  '}') {.  .      
2b190 20 20 20 20 20 20 74 68 69 73 2e 74 68 72 6f 77        this.throw
2b1a0 55 6e 65 78 70 65 63 74 65 64 54 6f 6b 65 6e 28  UnexpectedToken(
2b1b0 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a  );.  .        }.
2b1c0 20 20 09 20 20 20 20 20 20 20 20 77 68 69 6c 65    .        while
2b1d0 20 28 21 74 68 69 73 2e 65 6f 66 28 29 29 20 7b   (!this.eof()) {
2b1e0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
2b1f0 63 68 20 3d 20 74 68 69 73 24 31 2e 73 6f 75 72  ch = this$1.sour
2b200 63 65 5b 74 68 69 73 24 31 2e 69 6e 64 65 78 2b  ce[this$1.index+
2b210 2b 5d 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  +];.  .         
2b220 20 20 20 69 66 20 28 21 63 68 61 72 61 63 74 65     if (!characte
2b230 72 5f 31 2e 43 68 61 72 61 63 74 65 72 2e 69 73  r_1.Character.is
2b240 48 65 78 44 69 67 69 74 28 63 68 2e 63 68 61 72  HexDigit(ch.char
2b250 43 6f 64 65 41 74 28 30 29 29 29 20 7b 0a 20 20  CodeAt(0))) {.  
2b260 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2b270 20 62 72 65 61 6b 3b 0a 20 20 09 20 20 20 20 20   break;.  .     
2b280 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20         }.  .    
2b290 20 20 20 20 20 20 20 20 63 6f 64 65 20 3d 20 63          code = c
2b2a0 6f 64 65 20 2a 20 31 36 20 2b 20 68 65 78 56 61  ode * 16 + hexVa
2b2b0 6c 75 65 28 63 68 29 3b 0a 20 20 09 20 20 20 20  lue(ch);.  .    
2b2c0 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20      }.  .       
2b2d0 20 69 66 20 28 63 6f 64 65 20 3e 20 30 78 31 30   if (code > 0x10
2b2e0 46 46 46 46 20 7c 7c 20 63 68 20 21 3d 3d 20 27  FFFF || ch !== '
2b2f0 7d 27 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20  }') {.  .       
2b300 20 20 20 20 20 74 68 69 73 2e 74 68 72 6f 77 55       this.throwU
2b310 6e 65 78 70 65 63 74 65 64 54 6f 6b 65 6e 28 29  nexpectedToken()
2b320 3b 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a 20  ;.  .        }. 
2b330 20 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e   .        return
2b340 20 63 68 61 72 61 63 74 65 72 5f 31 2e 43 68 61   character_1.Cha
2b350 72 61 63 74 65 72 2e 66 72 6f 6d 43 6f 64 65 50  racter.fromCodeP
2b360 6f 69 6e 74 28 63 6f 64 65 29 3b 0a 20 20 09 20  oint(code);.  . 
2b370 20 20 20 7d 3b 0a 20 20 09 20 20 20 20 0a 20 20     };.  .    .  
2b380 09 20 20 20 20 53 63 61 6e 6e 65 72 2e 70 72 6f  .    Scanner.pro
2b390 74 6f 74 79 70 65 2e 67 65 74 49 64 65 6e 74 69  totype.getIdenti
2b3a0 66 69 65 72 20 3d 20 66 75 6e 63 74 69 6f 6e 20  fier = function 
2b3b0 28 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20  () {.  .        
2b3c0 76 61 72 20 74 68 69 73 24 31 20 3d 20 74 68 69  var this$1 = thi
2b3d0 73 3b 0a 0a 20 20 09 20 20 20 20 20 20 20 20 76  s;..  .        v
2b3e0 61 72 20 73 74 61 72 74 20 3d 20 74 68 69 73 2e  ar start = this.
2b3f0 69 6e 64 65 78 2b 2b 3b 0a 20 20 09 20 20 20 20  index++;.  .    
2b400 20 20 20 20 77 68 69 6c 65 20 28 21 74 68 69 73      while (!this
2b410 2e 65 6f 66 28 29 29 20 7b 0a 20 20 09 20 20 20  .eof()) {.  .   
2b420 20 20 20 20 20 20 20 20 20 76 61 72 20 63 68 20           var ch 
2b430 3d 20 74 68 69 73 24 31 2e 73 6f 75 72 63 65 2e  = this$1.source.
2b440 63 68 61 72 43 6f 64 65 41 74 28 74 68 69 73 24  charCodeAt(this$
2b450 31 2e 69 6e 64 65 78 29 3b 0a 20 20 09 20 20 20  1.index);.  .   
2b460 20 20 20 20 20 20 20 20 20 69 66 20 28 63 68 20           if (ch 
2b470 3d 3d 3d 20 30 78 35 43 29 20 7b 0a 20 20 09 20  === 0x5C) {.  . 
2b480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2b490 2f 20 42 6c 61 63 6b 73 6c 61 73 68 20 28 55 2b  / Blackslash (U+
2b4a0 30 30 35 43 29 20 6d 61 72 6b 73 20 55 6e 69 63  005C) marks Unic
2b4b0 6f 64 65 20 65 73 63 61 70 65 20 73 65 71 75 65  ode escape seque
2b4c0 6e 63 65 2e 0a 20 20 09 20 20 20 20 20 20 20 20  nce..  .        
2b4d0 20 20 20 20 20 20 20 20 74 68 69 73 24 31 2e 69          this$1.i
2b4e0 6e 64 65 78 20 3d 20 73 74 61 72 74 3b 0a 20 20  ndex = start;.  
2b4f0 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2b500 20 72 65 74 75 72 6e 20 74 68 69 73 24 31 2e 67   return this$1.g
2b510 65 74 43 6f 6d 70 6c 65 78 49 64 65 6e 74 69 66  etComplexIdentif
2b520 69 65 72 28 29 3b 0a 20 20 09 20 20 20 20 20 20  ier();.  .      
2b530 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20        }.  .     
2b540 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28         else if (
2b550 63 68 20 3e 3d 20 30 78 44 38 30 30 20 26 26 20  ch >= 0xD800 && 
2b560 63 68 20 3c 20 30 78 44 46 46 46 29 20 7b 0a 20  ch < 0xDFFF) {. 
2b570 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
2b580 20 20 2f 2f 20 4e 65 65 64 20 74 6f 20 68 61 6e    // Need to han
2b590 64 6c 65 20 73 75 72 72 6f 67 61 74 65 20 70 61  dle surrogate pa
2b5a0 69 72 73 2e 0a 20 20 09 20 20 20 20 20 20 20 20  irs..  .        
2b5b0 20 20 20 20 20 20 20 20 74 68 69 73 24 31 2e 69          this$1.i
2b5c0 6e 64 65 78 20 3d 20 73 74 61 72 74 3b 0a 20 20  ndex = start;.  
2b5d0 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2b5e0 20 72 65 74 75 72 6e 20 74 68 69 73 24 31 2e 67   return this$1.g
2b5f0 65 74 43 6f 6d 70 6c 65 78 49 64 65 6e 74 69 66  etComplexIdentif
2b600 69 65 72 28 29 3b 0a 20 20 09 20 20 20 20 20 20  ier();.  .      
2b610 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20        }.  .     
2b620 20 20 20 20 20 20 20 69 66 20 28 63 68 61 72 61         if (chara
2b630 63 74 65 72 5f 31 2e 43 68 61 72 61 63 74 65 72  cter_1.Character
2b640 2e 69 73 49 64 65 6e 74 69 66 69 65 72 50 61 72  .isIdentifierPar
2b650 74 28 63 68 29 29 20 7b 0a 20 20 09 20 20 20 20  t(ch)) {.  .    
2b660 20 20 20 20 20 20 20 20 20 20 20 20 2b 2b 74 68              ++th
2b670 69 73 24 31 2e 69 6e 64 65 78 3b 0a 20 20 09 20  is$1.index;.  . 
2b680 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09             }.  .
2b690 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
2b6a0 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   {.  .          
2b6b0 20 20 20 20 20 20 62 72 65 61 6b 3b 0a 20 20 09        break;.  .
2b6c0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20              }.  
2b6d0 09 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20  .        }.  .  
2b6e0 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69        return thi
2b6f0 73 2e 73 6f 75 72 63 65 2e 73 6c 69 63 65 28 73  s.source.slice(s
2b700 74 61 72 74 2c 20 74 68 69 73 2e 69 6e 64 65 78  tart, this.index
2b710 29 3b 0a 20 20 09 20 20 20 20 7d 3b 0a 20 20 09  );.  .    };.  .
2b720 20 20 20 20 0a 20 20 09 20 20 20 20 53 63 61 6e      .  .    Scan
2b730 6e 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 67 65  ner.prototype.ge
2b740 74 43 6f 6d 70 6c 65 78 49 64 65 6e 74 69 66 69  tComplexIdentifi
2b750 65 72 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29  er = function ()
2b760 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 76 61   {.  .        va
2b770 72 20 74 68 69 73 24 31 20 3d 20 74 68 69 73 3b  r this$1 = this;
2b780 0a 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72  ..  .        var
2b790 20 63 70 20 3d 20 74 68 69 73 2e 63 6f 64 65 50   cp = this.codeP
2b7a0 6f 69 6e 74 41 74 28 74 68 69 73 2e 69 6e 64 65  ointAt(this.inde
2b7b0 78 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 76  x);.  .        v
2b7c0 61 72 20 69 64 20 3d 20 63 68 61 72 61 63 74 65  ar id = characte
2b7d0 72 5f 31 2e 43 68 61 72 61 63 74 65 72 2e 66 72  r_1.Character.fr
2b7e0 6f 6d 43 6f 64 65 50 6f 69 6e 74 28 63 70 29 3b  omCodePoint(cp);
2b7f0 0a 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73  .  .        this
2b800 2e 69 6e 64 65 78 20 2b 3d 20 69 64 2e 6c 65 6e  .index += id.len
2b810 67 74 68 3b 0a 20 20 09 20 20 20 20 20 20 20 20  gth;.  .        
2b820 2f 2f 20 27 5c 75 27 20 28 55 2b 30 30 35 43 2c  // '\u' (U+005C,
2b830 20 55 2b 30 30 37 35 29 20 64 65 6e 6f 74 65 73   U+0075) denotes
2b840 20 61 6e 20 65 73 63 61 70 65 64 20 63 68 61 72   an escaped char
2b850 61 63 74 65 72 2e 0a 20 20 09 20 20 20 20 20 20  acter..  .      
2b860 20 20 76 61 72 20 63 68 3b 0a 20 20 09 20 20 20    var ch;.  .   
2b870 20 20 20 20 20 69 66 20 28 63 70 20 3d 3d 3d 20       if (cp === 
2b880 30 78 35 43 29 20 7b 0a 20 20 09 20 20 20 20 20  0x5C) {.  .     
2b890 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e         if (this.
2b8a0 73 6f 75 72 63 65 2e 63 68 61 72 43 6f 64 65 41  source.charCodeA
2b8b0 74 28 74 68 69 73 2e 69 6e 64 65 78 29 20 21 3d  t(this.index) !=
2b8c0 3d 20 30 78 37 35 29 20 7b 0a 20 20 09 20 20 20  = 0x75) {.  .   
2b8d0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
2b8e0 73 2e 74 68 72 6f 77 55 6e 65 78 70 65 63 74 65  s.throwUnexpecte
2b8f0 64 54 6f 6b 65 6e 28 29 3b 0a 20 20 09 20 20 20  dToken();.  .   
2b900 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20           }.  .  
2b910 20 20 20 20 20 20 20 20 20 20 2b 2b 74 68 69 73            ++this
2b920 2e 69 6e 64 65 78 3b 0a 20 20 09 20 20 20 20 20  .index;.  .     
2b930 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e         if (this.
2b940 73 6f 75 72 63 65 5b 74 68 69 73 2e 69 6e 64 65  source[this.inde
2b950 78 5d 20 3d 3d 3d 20 27 7b 27 29 20 7b 0a 20 20  x] === '{') {.  
2b960 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2b970 20 2b 2b 74 68 69 73 2e 69 6e 64 65 78 3b 0a 20   ++this.index;. 
2b980 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
2b990 20 20 63 68 20 3d 20 74 68 69 73 2e 73 63 61 6e    ch = this.scan
2b9a0 55 6e 69 63 6f 64 65 43 6f 64 65 50 6f 69 6e 74  UnicodeCodePoint
2b9b0 45 73 63 61 70 65 28 29 3b 0a 20 20 09 20 20 20  Escape();.  .   
2b9c0 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20           }.  .  
2b9d0 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 7b            else {
2b9e0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
2b9f0 20 20 20 20 63 68 20 3d 20 74 68 69 73 2e 73 63      ch = this.sc
2ba00 61 6e 48 65 78 45 73 63 61 70 65 28 27 75 27 29  anHexEscape('u')
2ba10 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
2ba20 20 20 20 20 20 63 70 20 3d 20 63 68 2e 63 68 61       cp = ch.cha
2ba30 72 43 6f 64 65 41 74 28 30 29 3b 0a 20 20 09 20  rCodeAt(0);.  . 
2ba40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
2ba50 66 20 28 21 63 68 20 7c 7c 20 63 68 20 3d 3d 3d  f (!ch || ch ===
2ba60 20 27 5c 5c 27 20 7c 7c 20 21 63 68 61 72 61 63   '\\' || !charac
2ba70 74 65 72 5f 31 2e 43 68 61 72 61 63 74 65 72 2e  ter_1.Character.
2ba80 69 73 49 64 65 6e 74 69 66 69 65 72 53 74 61 72  isIdentifierStar
2ba90 74 28 63 70 29 29 20 7b 0a 20 20 09 20 20 20 20  t(cp)) {.  .    
2baa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bab0 74 68 69 73 2e 74 68 72 6f 77 55 6e 65 78 70 65  this.throwUnexpe
2bac0 63 74 65 64 54 6f 6b 65 6e 28 29 3b 0a 20 20 09  ctedToken();.  .
2bad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bae0 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  }.  .           
2baf0 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   }.  .          
2bb00 20 20 69 64 20 3d 20 63 68 3b 0a 20 20 09 20 20    id = ch;.  .  
2bb10 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20        }.  .     
2bb20 20 20 20 77 68 69 6c 65 20 28 21 74 68 69 73 2e     while (!this.
2bb30 65 6f 66 28 29 29 20 7b 0a 20 20 09 20 20 20 20  eof()) {.  .    
2bb40 20 20 20 20 20 20 20 20 63 70 20 3d 20 74 68 69          cp = thi
2bb50 73 24 31 2e 63 6f 64 65 50 6f 69 6e 74 41 74 28  s$1.codePointAt(
2bb60 74 68 69 73 24 31 2e 69 6e 64 65 78 29 3b 0a 20  this$1.index);. 
2bb70 20 09 20 20 20 20 20 20 20 20 20 20 20 20 69 66   .            if
2bb80 20 28 21 63 68 61 72 61 63 74 65 72 5f 31 2e 43   (!character_1.C
2bb90 68 61 72 61 63 74 65 72 2e 69 73 49 64 65 6e 74  haracter.isIdent
2bba0 69 66 69 65 72 50 61 72 74 28 63 70 29 29 20 7b  ifierPart(cp)) {
2bbb0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
2bbc0 20 20 20 20 62 72 65 61 6b 3b 0a 20 20 09 20 20      break;.  .  
2bbd0 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20            }.  . 
2bbe0 20 20 20 20 20 20 20 20 20 20 20 63 68 20 3d 20             ch = 
2bbf0 63 68 61 72 61 63 74 65 72 5f 31 2e 43 68 61 72  character_1.Char
2bc00 61 63 74 65 72 2e 66 72 6f 6d 43 6f 64 65 50 6f  acter.fromCodePo
2bc10 69 6e 74 28 63 70 29 3b 0a 20 20 09 20 20 20 20  int(cp);.  .    
2bc20 20 20 20 20 20 20 20 20 69 64 20 2b 3d 20 63 68          id += ch
2bc30 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
2bc40 20 74 68 69 73 24 31 2e 69 6e 64 65 78 20 2b 3d   this$1.index +=
2bc50 20 63 68 2e 6c 65 6e 67 74 68 3b 0a 20 20 09 20   ch.length;.  . 
2bc60 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 27 5c             // '\
2bc70 75 27 20 28 55 2b 30 30 35 43 2c 20 55 2b 30 30  u' (U+005C, U+00
2bc80 37 35 29 20 64 65 6e 6f 74 65 73 20 61 6e 20 65  75) denotes an e
2bc90 73 63 61 70 65 64 20 63 68 61 72 61 63 74 65 72  scaped character
2bca0 2e 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ..  .           
2bcb0 20 69 66 20 28 63 70 20 3d 3d 3d 20 30 78 35 43   if (cp === 0x5C
2bcc0 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ) {.  .         
2bcd0 20 20 20 20 20 20 20 69 64 20 3d 20 69 64 2e 73         id = id.s
2bce0 75 62 73 74 72 28 30 2c 20 69 64 2e 6c 65 6e 67  ubstr(0, id.leng
2bcf0 74 68 20 2d 20 31 29 3b 0a 20 20 09 20 20 20 20  th - 1);.  .    
2bd00 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
2bd10 74 68 69 73 24 31 2e 73 6f 75 72 63 65 2e 63 68  this$1.source.ch
2bd20 61 72 43 6f 64 65 41 74 28 74 68 69 73 24 31 2e  arCodeAt(this$1.
2bd30 69 6e 64 65 78 29 20 21 3d 3d 20 30 78 37 35 29  index) !== 0x75)
2bd40 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   {.  .          
2bd50 20 20 20 20 20 20 20 20 20 20 74 68 69 73 24 31            this$1
2bd60 2e 74 68 72 6f 77 55 6e 65 78 70 65 63 74 65 64  .throwUnexpected
2bd70 54 6f 6b 65 6e 28 29 3b 0a 20 20 09 20 20 20 20  Token();.  .    
2bd80 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20              }.  
2bd90 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2bda0 20 2b 2b 74 68 69 73 24 31 2e 69 6e 64 65 78 3b   ++this$1.index;
2bdb0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
2bdc0 20 20 20 20 69 66 20 28 74 68 69 73 24 31 2e 73      if (this$1.s
2bdd0 6f 75 72 63 65 5b 74 68 69 73 24 31 2e 69 6e 64  ource[this$1.ind
2bde0 65 78 5d 20 3d 3d 3d 20 27 7b 27 29 20 7b 0a 20  ex] === '{') {. 
2bdf0 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
2be00 20 20 20 20 20 20 2b 2b 74 68 69 73 24 31 2e 69        ++this$1.i
2be10 6e 64 65 78 3b 0a 20 20 09 20 20 20 20 20 20 20  ndex;.  .       
2be20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 68 20               ch 
2be30 3d 20 74 68 69 73 24 31 2e 73 63 61 6e 55 6e 69  = this$1.scanUni
2be40 63 6f 64 65 43 6f 64 65 50 6f 69 6e 74 45 73 63  codeCodePointEsc
2be50 61 70 65 28 29 3b 0a 20 20 09 20 20 20 20 20 20  ape();.  .      
2be60 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20            }.  . 
2be70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
2be80 6c 73 65 20 7b 0a 20 20 09 20 20 20 20 20 20 20  lse {.  .       
2be90 20 20 20 20 20 20 20 20 20 20 20 20 20 63 68 20               ch 
2bea0 3d 20 74 68 69 73 24 31 2e 73 63 61 6e 48 65 78  = this$1.scanHex
2beb0 45 73 63 61 70 65 28 27 75 27 29 3b 0a 20 20 09  Escape('u');.  .
2bec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bed0 20 20 20 20 63 70 20 3d 20 63 68 2e 63 68 61 72      cp = ch.char
2bee0 43 6f 64 65 41 74 28 30 29 3b 0a 20 20 09 20 20  CodeAt(0);.  .  
2bef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bf00 20 20 69 66 20 28 21 63 68 20 7c 7c 20 63 68 20    if (!ch || ch 
2bf10 3d 3d 3d 20 27 5c 5c 27 20 7c 7c 20 21 63 68 61  === '\\' || !cha
2bf20 72 61 63 74 65 72 5f 31 2e 43 68 61 72 61 63 74  racter_1.Charact
2bf30 65 72 2e 69 73 49 64 65 6e 74 69 66 69 65 72 50  er.isIdentifierP
2bf40 61 72 74 28 63 70 29 29 20 7b 0a 20 20 09 20 20  art(cp)) {.  .  
2bf50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bf60 20 20 20 20 20 20 74 68 69 73 24 31 2e 74 68 72        this$1.thr
2bf70 6f 77 55 6e 65 78 70 65 63 74 65 64 54 6f 6b 65  owUnexpectedToke
2bf80 6e 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  n();.  .        
2bf90 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20              }.  
2bfa0 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2bfb0 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   }.  .          
2bfc0 20 20 20 20 20 20 69 64 20 2b 3d 20 63 68 3b 0a        id += ch;.
2bfd0 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 7d    .            }
2bfe0 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a 20 20  .  .        }.  
2bff0 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
2c000 69 64 3b 0a 20 20 09 20 20 20 20 7d 3b 0a 20 20  id;.  .    };.  
2c010 09 20 20 20 20 0a 20 20 09 20 20 20 20 53 63 61  .    .  .    Sca
2c020 6e 6e 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 6f  nner.prototype.o
2c030 63 74 61 6c 54 6f 44 65 63 69 6d 61 6c 20 3d 20  ctalToDecimal = 
2c040 66 75 6e 63 74 69 6f 6e 20 28 63 68 29 20 7b 0a  function (ch) {.
2c050 20 20 09 20 20 20 20 20 20 20 20 2f 2f 20 5c 30    .        // \0
2c060 20 69 73 20 6e 6f 74 20 6f 63 74 61 6c 20 65 73   is not octal es
2c070 63 61 70 65 20 73 65 71 75 65 6e 63 65 0a 20 20  cape sequence.  
2c080 09 20 20 20 20 20 20 20 20 76 61 72 20 6f 63 74  .        var oct
2c090 61 6c 20 3d 20 28 63 68 20 21 3d 3d 20 27 30 27  al = (ch !== '0'
2c0a0 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 76 61  );.  .        va
2c0b0 72 20 63 6f 64 65 20 3d 20 6f 63 74 61 6c 56 61  r code = octalVa
2c0c0 6c 75 65 28 63 68 29 3b 0a 20 20 09 20 20 20 20  lue(ch);.  .    
2c0d0 20 20 20 20 69 66 20 28 21 74 68 69 73 2e 65 6f      if (!this.eo
2c0e0 66 28 29 20 26 26 20 63 68 61 72 61 63 74 65 72  f() && character
2c0f0 5f 31 2e 43 68 61 72 61 63 74 65 72 2e 69 73 4f  _1.Character.isO
2c100 63 74 61 6c 44 69 67 69 74 28 74 68 69 73 2e 73  ctalDigit(this.s
2c110 6f 75 72 63 65 2e 63 68 61 72 43 6f 64 65 41 74  ource.charCodeAt
2c120 28 74 68 69 73 2e 69 6e 64 65 78 29 29 29 20 7b  (this.index))) {
2c130 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
2c140 6f 63 74 61 6c 20 3d 20 74 72 75 65 3b 0a 20 20  octal = true;.  
2c150 09 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 64  .            cod
2c160 65 20 3d 20 63 6f 64 65 20 2a 20 38 20 2b 20 6f  e = code * 8 + o
2c170 63 74 61 6c 56 61 6c 75 65 28 74 68 69 73 2e 73  ctalValue(this.s
2c180 6f 75 72 63 65 5b 74 68 69 73 2e 69 6e 64 65 78  ource[this.index
2c190 2b 2b 5d 29 3b 0a 20 20 09 20 20 20 20 20 20 20  ++]);.  .       
2c1a0 20 20 20 20 20 2f 2f 20 33 20 64 69 67 69 74 73       // 3 digits
2c1b0 20 61 72 65 20 6f 6e 6c 79 20 61 6c 6c 6f 77 65   are only allowe
2c1c0 64 20 77 68 65 6e 20 73 74 72 69 6e 67 20 73 74  d when string st
2c1d0 61 72 74 73 0a 20 20 09 20 20 20 20 20 20 20 20  arts.  .        
2c1e0 20 20 20 20 2f 2f 20 77 69 74 68 20 30 2c 20 31      // with 0, 1
2c1f0 2c 20 32 2c 20 33 0a 20 20 09 20 20 20 20 20 20  , 2, 3.  .      
2c200 20 20 20 20 20 20 69 66 20 28 27 30 31 32 33 27        if ('0123'
2c210 2e 69 6e 64 65 78 4f 66 28 63 68 29 20 3e 3d 20  .indexOf(ch) >= 
2c220 30 20 26 26 20 21 74 68 69 73 2e 65 6f 66 28 29  0 && !this.eof()
2c230 20 26 26 20 63 68 61 72 61 63 74 65 72 5f 31 2e   && character_1.
2c240 43 68 61 72 61 63 74 65 72 2e 69 73 4f 63 74 61  Character.isOcta
2c250 6c 44 69 67 69 74 28 74 68 69 73 2e 73 6f 75 72  lDigit(this.sour
2c260 63 65 2e 63 68 61 72 43 6f 64 65 41 74 28 74 68  ce.charCodeAt(th
2c270 69 73 2e 69 6e 64 65 78 29 29 29 20 7b 0a 20 20  is.index))) {.  
2c280 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2c290 20 63 6f 64 65 20 3d 20 63 6f 64 65 20 2a 20 38   code = code * 8
2c2a0 20 2b 20 6f 63 74 61 6c 56 61 6c 75 65 28 74 68   + octalValue(th
2c2b0 69 73 2e 73 6f 75 72 63 65 5b 74 68 69 73 2e 69  is.source[this.i
2c2c0 6e 64 65 78 2b 2b 5d 29 3b 0a 20 20 09 20 20 20  ndex++]);.  .   
2c2d0 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20           }.  .  
2c2e0 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20        }.  .     
2c2f0 20 20 20 72 65 74 75 72 6e 20 7b 0a 20 20 09 20     return {.  . 
2c300 20 20 20 20 20 20 20 20 20 20 20 63 6f 64 65 3a             code:
2c310 20 63 6f 64 65 2c 0a 20 20 09 20 20 20 20 20 20   code,.  .      
2c320 20 20 20 20 20 20 6f 63 74 61 6c 3a 20 6f 63 74        octal: oct
2c330 61 6c 0a 20 20 09 20 20 20 20 20 20 20 20 7d 3b  al.  .        };
2c340 0a 20 20 09 20 20 20 20 7d 3b 0a 20 20 09 20 20  .  .    };.  .  
2c350 20 20 0a 20 20 09 20 20 20 20 2f 2f 20 45 43 4d    .  .    // ECM
2c360 41 2d 32 36 32 20 31 31 2e 36 20 4e 61 6d 65 73  A-262 11.6 Names
2c370 20 61 6e 64 20 4b 65 79 77 6f 72 64 73 0a 20 20   and Keywords.  
2c380 09 20 20 20 20 53 63 61 6e 6e 65 72 2e 70 72 6f  .    Scanner.pro
2c390 74 6f 74 79 70 65 2e 73 63 61 6e 49 64 65 6e 74  totype.scanIdent
2c3a0 69 66 69 65 72 20 3d 20 66 75 6e 63 74 69 6f 6e  ifier = function
2c3b0 20 28 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20   () {.  .       
2c3c0 20 76 61 72 20 74 79 70 65 3b 0a 20 20 09 20 20   var type;.  .  
2c3d0 20 20 20 20 20 20 76 61 72 20 73 74 61 72 74 20        var start 
2c3e0 3d 20 74 68 69 73 2e 69 6e 64 65 78 3b 0a 20 20  = this.index;.  
2c3f0 09 20 20 20 20 20 20 20 20 2f 2f 20 42 61 63 6b  .        // Back
2c400 73 6c 61 73 68 20 28 55 2b 30 30 35 43 29 20 73  slash (U+005C) s
2c410 74 61 72 74 73 20 61 6e 20 65 73 63 61 70 65 64  tarts an escaped
2c420 20 63 68 61 72 61 63 74 65 72 2e 0a 20 20 09 20   character..  . 
2c430 20 20 20 20 20 20 20 76 61 72 20 69 64 20 3d 20         var id = 
2c440 28 74 68 69 73 2e 73 6f 75 72 63 65 2e 63 68 61  (this.source.cha
2c450 72 43 6f 64 65 41 74 28 73 74 61 72 74 29 20 3d  rCodeAt(start) =
2c460 3d 3d 20 30 78 35 43 29 20 3f 20 74 68 69 73 2e  == 0x5C) ? this.
2c470 67 65 74 43 6f 6d 70 6c 65 78 49 64 65 6e 74 69  getComplexIdenti
2c480 66 69 65 72 28 29 20 3a 20 74 68 69 73 2e 67 65  fier() : this.ge
2c490 74 49 64 65 6e 74 69 66 69 65 72 28 29 3b 0a 20  tIdentifier();. 
2c4a0 20 09 20 20 20 20 20 20 20 20 2f 2f 20 54 68 65   .        // The
2c4b0 72 65 20 69 73 20 6e 6f 20 6b 65 79 77 6f 72 64  re is no keyword
2c4c0 20 6f 72 20 6c 69 74 65 72 61 6c 20 77 69 74 68   or literal with
2c4d0 20 6f 6e 6c 79 20 6f 6e 65 20 63 68 61 72 61 63   only one charac
2c4e0 74 65 72 2e 0a 20 20 09 20 20 20 20 20 20 20 20  ter..  .        
2c4f0 2f 2f 20 54 68 75 73 2c 20 69 74 20 6d 75 73 74  // Thus, it must
2c500 20 62 65 20 61 6e 20 69 64 65 6e 74 69 66 69 65   be an identifie
2c510 72 2e 0a 20 20 09 20 20 20 20 20 20 20 20 69 66  r..  .        if
2c520 20 28 69 64 2e 6c 65 6e 67 74 68 20 3d 3d 3d 20   (id.length === 
2c530 31 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20  1) {.  .        
2c540 20 20 20 20 74 79 70 65 20 3d 20 74 6f 6b 65 6e      type = token
2c550 5f 31 2e 54 6f 6b 65 6e 2e 49 64 65 6e 74 69 66  _1.Token.Identif
2c560 69 65 72 3b 0a 20 20 09 20 20 20 20 20 20 20 20  ier;.  .        
2c570 7d 0a 20 20 09 20 20 20 20 20 20 20 20 65 6c 73  }.  .        els
2c580 65 20 69 66 20 28 74 68 69 73 2e 69 73 4b 65 79  e if (this.isKey
2c590 77 6f 72 64 28 69 64 29 29 20 7b 0a 20 20 09 20  word(id)) {.  . 
2c5a0 20 20 20 20 20 20 20 20 20 20 20 74 79 70 65 20             type 
2c5b0 3d 20 74 6f 6b 65 6e 5f 31 2e 54 6f 6b 65 6e 2e  = token_1.Token.
2c5c0 4b 65 79 77 6f 72 64 3b 0a 20 20 09 20 20 20 20  Keyword;.  .    
2c5d0 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20      }.  .       
2c5e0 20 65 6c 73 65 20 69 66 20 28 69 64 20 3d 3d 3d   else if (id ===
2c5f0 20 27 6e 75 6c 6c 27 29 20 7b 0a 20 20 09 20 20   'null') {.  .  
2c600 20 20 20 20 20 20 20 20 20 20 74 79 70 65 20 3d            type =
2c610 20 74 6f 6b 65 6e 5f 31 2e 54 6f 6b 65 6e 2e 4e   token_1.Token.N
2c620 75 6c 6c 4c 69 74 65 72 61 6c 3b 0a 20 20 09 20  ullLiteral;.  . 
2c630 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20         }.  .    
2c640 20 20 20 20 65 6c 73 65 20 69 66 20 28 69 64 20      else if (id 
2c650 3d 3d 3d 20 27 74 72 75 65 27 20 7c 7c 20 69 64  === 'true' || id
2c660 20 3d 3d 3d 20 27 66 61 6c 73 65 27 29 20 7b 0a   === 'false') {.
2c670 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 74    .            t
2c680 79 70 65 20 3d 20 74 6f 6b 65 6e 5f 31 2e 54 6f  ype = token_1.To
2c690 6b 65 6e 2e 42 6f 6f 6c 65 61 6e 4c 69 74 65 72  ken.BooleanLiter
2c6a0 61 6c 3b 0a 20 20 09 20 20 20 20 20 20 20 20 7d  al;.  .        }
2c6b0 0a 20 20 09 20 20 20 20 20 20 20 20 65 6c 73 65  .  .        else
2c6c0 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   {.  .          
2c6d0 20 20 74 79 70 65 20 3d 20 74 6f 6b 65 6e 5f 31    type = token_1
2c6e0 2e 54 6f 6b 65 6e 2e 49 64 65 6e 74 69 66 69 65  .Token.Identifie
2c6f0 72 3b 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a  r;.  .        }.
2c700 20 20 09 20 20 20 20 20 20 20 20 72 65 74 75 72    .        retur
2c710 6e 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20  n {.  .         
2c720 20 20 20 74 79 70 65 3a 20 74 79 70 65 2c 0a 20     type: type,. 
2c730 20 09 20 20 20 20 20 20 20 20 20 20 20 20 76 61   .            va
2c740 6c 75 65 3a 20 69 64 2c 0a 20 20 09 20 20 20 20  lue: id,.  .    
2c750 20 20 20 20 20 20 20 20 6c 69 6e 65 4e 75 6d 62          lineNumb
2c760 65 72 3a 20 74 68 69 73 2e 6c 69 6e 65 4e 75 6d  er: this.lineNum
2c770 62 65 72 2c 0a 20 20 09 20 20 20 20 20 20 20 20  ber,.  .        
2c780 20 20 20 20 6c 69 6e 65 53 74 61 72 74 3a 20 74      lineStart: t
2c790 68 69 73 2e 6c 69 6e 65 53 74 61 72 74 2c 0a 20  his.lineStart,. 
2c7a0 20 09 20 20 20 20 20 20 20 20 20 20 20 20 73 74   .            st
2c7b0 61 72 74 3a 20 73 74 61 72 74 2c 0a 20 20 09 20  art: start,.  . 
2c7c0 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 3a 20             end: 
2c7d0 74 68 69 73 2e 69 6e 64 65 78 0a 20 20 09 20 20  this.index.  .  
2c7e0 20 20 20 20 20 20 7d 3b 0a 20 20 09 20 20 20 20        };.  .    
2c7f0 7d 3b 0a 20 20 09 20 20 20 20 0a 20 20 09 20 20  };.  .    .  .  
2c800 20 20 2f 2f 20 45 43 4d 41 2d 32 36 32 20 31 31    // ECMA-262 11
2c810 2e 37 20 50 75 6e 63 74 75 61 74 6f 72 73 0a 20  .7 Punctuators. 
2c820 20 09 20 20 20 20 53 63 61 6e 6e 65 72 2e 70 72   .    Scanner.pr
2c830 6f 74 6f 74 79 70 65 2e 73 63 61 6e 50 75 6e 63  ototype.scanPunc
2c840 74 75 61 74 6f 72 20 3d 20 66 75 6e 63 74 69 6f  tuator = functio
2c850 6e 20 28 29 20 7b 0a 20 20 09 20 20 20 20 20 20  n () {.  .      
2c860 20 20 76 61 72 20 74 6f 6b 65 6e 20 3d 20 7b 0a    var token = {.
2c870 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 74    .            t
2c880 79 70 65 3a 20 74 6f 6b 65 6e 5f 31 2e 54 6f 6b  ype: token_1.Tok
2c890 65 6e 2e 50 75 6e 63 74 75 61 74 6f 72 2c 0a 20  en.Punctuator,. 
2c8a0 20 09 20 20 20 20 20 20 20 20 20 20 20 20 76 61   .            va
2c8b0 6c 75 65 3a 20 27 27 2c 0a 20 20 09 20 20 20 20  lue: '',.  .    
2c8c0 20 20 20 20 20 20 20 20 6c 69 6e 65 4e 75 6d 62          lineNumb
2c8d0 65 72 3a 20 74 68 69 73 2e 6c 69 6e 65 4e 75 6d  er: this.lineNum
2c8e0 62 65 72 2c 0a 20 20 09 20 20 20 20 20 20 20 20  ber,.  .        
2c8f0 20 20 20 20 6c 69 6e 65 53 74 61 72 74 3a 20 74      lineStart: t
2c900 68 69 73 2e 6c 69 6e 65 53 74 61 72 74 2c 0a 20  his.lineStart,. 
2c910 20 09 20 20 20 20 20 20 20 20 20 20 20 20 73 74   .            st
2c920 61 72 74 3a 20 74 68 69 73 2e 69 6e 64 65 78 2c  art: this.index,
2c930 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
2c940 65 6e 64 3a 20 74 68 69 73 2e 69 6e 64 65 78 0a  end: this.index.
2c950 20 20 09 20 20 20 20 20 20 20 20 7d 3b 0a 20 20    .        };.  
2c960 09 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63  .        // Chec
2c970 6b 20 66 6f 72 20 6d 6f 73 74 20 63 6f 6d 6d 6f  k for most commo
2c980 6e 20 73 69 6e 67 6c 65 2d 63 68 61 72 61 63 74  n single-charact
2c990 65 72 20 70 75 6e 63 74 75 61 74 6f 72 73 2e 0a  er punctuators..
2c9a0 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20 73    .        var s
2c9b0 74 72 20 3d 20 74 68 69 73 2e 73 6f 75 72 63 65  tr = this.source
2c9c0 5b 74 68 69 73 2e 69 6e 64 65 78 5d 3b 0a 20 20  [this.index];.  
2c9d0 09 20 20 20 20 20 20 20 20 73 77 69 74 63 68 20  .        switch 
2c9e0 28 73 74 72 29 20 7b 0a 20 20 09 20 20 20 20 20  (str) {.  .     
2c9f0 20 20 20 20 20 20 20 63 61 73 65 20 27 28 27 3a         case '(':
2ca00 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
2ca10 63 61 73 65 20 27 7b 27 3a 0a 20 20 09 20 20 20  case '{':.  .   
2ca20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
2ca30 28 73 74 72 20 3d 3d 3d 20 27 7b 27 29 20 7b 0a  (str === '{') {.
2ca40 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
2ca50 20 20 20 20 20 20 20 74 68 69 73 2e 63 75 72 6c         this.curl
2ca60 79 53 74 61 63 6b 2e 70 75 73 68 28 27 7b 27 29  yStack.push('{')
2ca70 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
2ca80 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20       }.  .      
2ca90 20 20 20 20 20 20 20 20 20 20 2b 2b 74 68 69 73            ++this
2caa0 2e 69 6e 64 65 78 3b 0a 20 20 09 20 20 20 20 20  .index;.  .     
2cab0 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b             break
2cac0 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
2cad0 20 63 61 73 65 20 27 2e 27 3a 0a 20 20 09 20 20   case '.':.  .  
2cae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2b 2b                ++
2caf0 74 68 69 73 2e 69 6e 64 65 78 3b 0a 20 20 09 20  this.index;.  . 
2cb00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
2cb10 66 20 28 74 68 69 73 2e 73 6f 75 72 63 65 5b 74  f (this.source[t
2cb20 68 69 73 2e 69 6e 64 65 78 5d 20 3d 3d 3d 20 27  his.index] === '
2cb30 2e 27 20 26 26 20 74 68 69 73 2e 73 6f 75 72 63  .' && this.sourc
2cb40 65 5b 74 68 69 73 2e 69 6e 64 65 78 20 2b 20 31  e[this.index + 1
2cb50 5d 20 3d 3d 3d 20 27 2e 27 29 20 7b 0a 20 20 09  ] === '.') {.  .
2cb60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cb70 20 20 20 20 2f 2f 20 53 70 72 65 61 64 20 6f 70      // Spread op
2cb80 65 72 61 74 6f 72 3a 20 2e 2e 2e 0a 20 20 09 20  erator: ....  . 
2cb90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cba0 20 20 20 74 68 69 73 2e 69 6e 64 65 78 20 2b 3d     this.index +=
2cbb0 20 32 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20   2;.  .         
2cbc0 20 20 20 20 20 20 20 20 20 20 20 73 74 72 20 3d             str =
2cbd0 20 27 2e 2e 2e 27 3b 0a 20 20 09 20 20 20 20 20   '...';.  .     
2cbe0 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09             }.  .
2cbf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cc00 62 72 65 61 6b 3b 0a 20 20 09 20 20 20 20 20 20  break;.  .      
2cc10 20 20 20 20 20 20 63 61 73 65 20 27 7d 27 3a 0a        case '}':.
2cc20 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
2cc30 20 20 20 2b 2b 74 68 69 73 2e 69 6e 64 65 78 3b     ++this.index;
2cc40 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
2cc50 20 20 20 20 74 68 69 73 2e 63 75 72 6c 79 53 74      this.curlySt
2cc60 61 63 6b 2e 70 6f 70 28 29 3b 0a 20 20 09 20 20  ack.pop();.  .  
2cc70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72                br
2cc80 65 61 6b 3b 0a 20 20 09 20 20 20 20 20 20 20 20  eak;.  .        
2cc90 20 20 20 20 63 61 73 65 20 27 29 27 3a 0a 20 20      case ')':.  
2cca0 09 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73  .            cas
2ccb0 65 20 27 3b 27 3a 0a 20 20 09 20 20 20 20 20 20  e ';':.  .      
2ccc0 20 20 20 20 20 20 63 61 73 65 20 27 2c 27 3a 0a        case ',':.
2ccd0 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 63    .            c
2cce0 61 73 65 20 27 5b 27 3a 0a 20 20 09 20 20 20 20  ase '[':.  .    
2ccf0 20 20 20 20 20 20 20 20 63 61 73 65 20 27 5d 27          case ']'
2cd00 3a 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  :.  .           
2cd10 20 63 61 73 65 20 27 3a 27 3a 0a 20 20 09 20 20   case ':':.  .  
2cd20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 27            case '
2cd30 3f 27 3a 0a 20 20 09 20 20 20 20 20 20 20 20 20  ?':.  .         
2cd40 20 20 20 63 61 73 65 20 27 7e 27 3a 0a 20 20 09     case '~':.  .
2cd50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cd60 2b 2b 74 68 69 73 2e 69 6e 64 65 78 3b 0a 20 20  ++this.index;.  
2cd70 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2cd80 20 62 72 65 61 6b 3b 0a 20 20 09 20 20 20 20 20   break;.  .     
2cd90 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 3a 0a         default:.
2cda0 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
2cdb0 20 20 20 2f 2f 20 34 2d 63 68 61 72 61 63 74 65     // 4-characte
2cdc0 72 20 70 75 6e 63 74 75 61 74 6f 72 2e 0a 20 20  r punctuator..  
2cdd0 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2cde0 20 73 74 72 20 3d 20 74 68 69 73 2e 73 6f 75 72   str = this.sour
2cdf0 63 65 2e 73 75 62 73 74 72 28 74 68 69 73 2e 69  ce.substr(this.i
2ce00 6e 64 65 78 2c 20 34 29 3b 0a 20 20 09 20 20 20  ndex, 4);.  .   
2ce10 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
2ce20 28 73 74 72 20 3d 3d 3d 20 27 3e 3e 3e 3d 27 29  (str === '>>>=')
2ce30 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   {.  .          
2ce40 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 69            this.i
2ce50 6e 64 65 78 20 2b 3d 20 34 3b 0a 20 20 09 20 20  ndex += 4;.  .  
2ce60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a                }.
2ce70 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
2ce80 20 20 20 65 6c 73 65 20 7b 0a 20 20 09 20 20 20     else {.  .   
2ce90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cea0 20 2f 2f 20 33 2d 63 68 61 72 61 63 74 65 72 20   // 3-character 
2ceb0 70 75 6e 63 74 75 61 74 6f 72 73 2e 0a 20 20 09  punctuators..  .
2cec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ced0 20 20 20 20 73 74 72 20 3d 20 73 74 72 2e 73 75      str = str.su
2cee0 62 73 74 72 28 30 2c 20 33 29 3b 0a 20 20 09 20  bstr(0, 3);.  . 
2cef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cf00 20 20 20 69 66 20 28 73 74 72 20 3d 3d 3d 20 27     if (str === '
2cf10 3d 3d 3d 27 20 7c 7c 20 73 74 72 20 3d 3d 3d 20  ===' || str === 
2cf20 27 21 3d 3d 27 20 7c 7c 20 73 74 72 20 3d 3d 3d  '!==' || str ===
2cf30 20 27 3e 3e 3e 27 20 7c 7c 0a 20 20 09 20 20 20   '>>>' ||.  .   
2cf40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cf50 20 20 20 20 20 73 74 72 20 3d 3d 3d 20 27 3c 3c       str === '<<
2cf60 3d 27 20 7c 7c 20 73 74 72 20 3d 3d 3d 20 27 3e  =' || str === '>
2cf70 3e 3d 27 20 7c 7c 20 73 74 72 20 3d 3d 3d 20 27  >=' || str === '
2cf80 2a 2a 3d 27 29 20 7b 0a 20 20 09 20 20 20 20 20  **=') {.  .     
2cf90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cfa0 20 20 20 74 68 69 73 2e 69 6e 64 65 78 20 2b 3d     this.index +=
2cfb0 20 33 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20   3;.  .         
2cfc0 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09             }.  .
2cfd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cfe0 20 20 20 20 65 6c 73 65 20 7b 0a 20 20 09 20 20      else {.  .  
2cff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d000 20 20 20 20 20 20 2f 2f 20 32 2d 63 68 61 72 61        // 2-chara
2d010 63 74 65 72 20 70 75 6e 63 74 75 61 74 6f 72 73  cter punctuators
2d020 2e 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ..  .           
2d030 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
2d040 20 3d 20 73 74 72 2e 73 75 62 73 74 72 28 30 2c   = str.substr(0,
2d050 20 32 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20   2);.  .        
2d060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d070 69 66 20 28 73 74 72 20 3d 3d 3d 20 27 26 26 27  if (str === '&&'
2d080 20 7c 7c 20 73 74 72 20 3d 3d 3d 20 27 7c 7c 27   || str === '||'
2d090 20 7c 7c 20 73 74 72 20 3d 3d 3d 20 27 3d 3d 27   || str === '=='
2d0a0 20 7c 7c 20 73 74 72 20 3d 3d 3d 20 27 21 3d 27   || str === '!='
2d0b0 20 7c 7c 0a 20 20 09 20 20 20 20 20 20 20 20 20   ||.  .         
2d0c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d0d0 20 20 20 73 74 72 20 3d 3d 3d 20 27 2b 3d 27 20     str === '+=' 
2d0e0 7c 7c 20 73 74 72 20 3d 3d 3d 20 27 2d 3d 27 20  || str === '-=' 
2d0f0 7c 7c 20 73 74 72 20 3d 3d 3d 20 27 2a 3d 27 20  || str === '*=' 
2d100 7c 7c 20 73 74 72 20 3d 3d 3d 20 27 2f 3d 27 20  || str === '/=' 
2d110 7c 7c 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  ||.  .          
2d120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d130 20 20 73 74 72 20 3d 3d 3d 20 27 2b 2b 27 20 7c    str === '++' |
2d140 7c 20 73 74 72 20 3d 3d 3d 20 27 2d 2d 27 20 7c  | str === '--' |
2d150 7c 20 73 74 72 20 3d 3d 3d 20 27 3c 3c 27 20 7c  | str === '<<' |
2d160 7c 20 73 74 72 20 3d 3d 3d 20 27 3e 3e 27 20 7c  | str === '>>' |
2d170 7c 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  |.  .           
2d180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d190 20 73 74 72 20 3d 3d 3d 20 27 26 3d 27 20 7c 7c   str === '&=' ||
2d1a0 20 73 74 72 20 3d 3d 3d 20 27 7c 3d 27 20 7c 7c   str === '|=' ||
2d1b0 20 73 74 72 20 3d 3d 3d 20 27 5e 3d 27 20 7c 7c   str === '^=' ||
2d1c0 20 73 74 72 20 3d 3d 3d 20 27 25 3d 27 20 7c 7c   str === '%=' ||
2d1d0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
2d1e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d1f0 73 74 72 20 3d 3d 3d 20 27 3c 3d 27 20 7c 7c 20  str === '<=' || 
2d200 73 74 72 20 3d 3d 3d 20 27 3e 3d 27 20 7c 7c 20  str === '>=' || 
2d210 73 74 72 20 3d 3d 3d 20 27 3d 3e 27 20 7c 7c 20  str === '=>' || 
2d220 73 74 72 20 3d 3d 3d 20 27 2a 2a 27 29 20 7b 0a  str === '**') {.
2d230 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
2d240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
2d250 68 69 73 2e 69 6e 64 65 78 20 2b 3d 20 32 3b 0a  his.index += 2;.
2d260 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
2d270 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09             }.  .
2d280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d290 20 20 20 20 20 20 20 20 65 6c 73 65 20 7b 0a 20          else {. 
2d2a0 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
2d2b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2d2c0 20 31 2d 63 68 61 72 61 63 74 65 72 20 70 75 6e   1-character pun
2d2d0 63 74 75 61 74 6f 72 73 2e 0a 20 20 09 20 20 20  ctuators..  .   
2d2e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d2f0 20 20 20 20 20 20 20 20 20 73 74 72 20 3d 20 74           str = t
2d300 68 69 73 2e 73 6f 75 72 63 65 5b 74 68 69 73 2e  his.source[this.
2d310 69 6e 64 65 78 5d 3b 0a 20 20 09 20 20 20 20 20  index];.  .     
2d320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d330 20 20 20 20 20 20 20 69 66 20 28 27 3c 3e 3d 21         if ('<>=!
2d340 2b 2d 2a 25 26 7c 5e 2f 27 2e 69 6e 64 65 78 4f  +-*%&|^/'.indexO
2d350 66 28 73 74 72 29 20 3e 3d 20 30 29 20 7b 0a 20  f(str) >= 0) {. 
2d360 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
2d370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d380 20 20 2b 2b 74 68 69 73 2e 69 6e 64 65 78 3b 0a    ++this.index;.
2d390 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
2d3a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
2d3b0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
2d3c0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20              }.  
2d3d0 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d3e0 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20       }.  .      
2d3f0 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20            }.  . 
2d400 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20         }.  .    
2d410 20 20 20 20 69 66 20 28 74 68 69 73 2e 69 6e 64      if (this.ind
2d420 65 78 20 3d 3d 3d 20 74 6f 6b 65 6e 2e 73 74 61  ex === token.sta
2d430 72 74 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20  rt) {.  .       
2d440 20 20 20 20 20 74 68 69 73 2e 74 68 72 6f 77 55       this.throwU
2d450 6e 65 78 70 65 63 74 65 64 54 6f 6b 65 6e 28 29  nexpectedToken()
2d460 3b 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a 20  ;.  .        }. 
2d470 20 09 20 20 20 20 20 20 20 20 74 6f 6b 65 6e 2e   .        token.
2d480 65 6e 64 20 3d 20 74 68 69 73 2e 69 6e 64 65 78  end = this.index
2d490 3b 0a 20 20 09 20 20 20 20 20 20 20 20 74 6f 6b  ;.  .        tok
2d4a0 65 6e 2e 76 61 6c 75 65 20 3d 20 73 74 72 3b 0a  en.value = str;.
2d4b0 20 20 09 20 20 20 20 20 20 20 20 72 65 74 75 72    .        retur
2d4c0 6e 20 74 6f 6b 65 6e 3b 0a 20 20 09 20 20 20 20  n token;.  .    
2d4d0 7d 3b 0a 20 20 09 20 20 20 20 0a 20 20 09 20 20  };.  .    .  .  
2d4e0 20 20 2f 2f 20 45 43 4d 41 2d 32 36 32 20 31 31    // ECMA-262 11
2d4f0 2e 38 2e 33 20 4e 75 6d 65 72 69 63 20 4c 69 74  .8.3 Numeric Lit
2d500 65 72 61 6c 73 0a 20 20 09 20 20 20 20 53 63 61  erals.  .    Sca
2d510 6e 6e 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 73  nner.prototype.s
2d520 63 61 6e 48 65 78 4c 69 74 65 72 61 6c 20 3d 20  canHexLiteral = 
2d530 66 75 6e 63 74 69 6f 6e 20 28 73 74 61 72 74 29  function (start)
2d540 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 76 61   {.  .        va
2d550 72 20 74 68 69 73 24 31 20 3d 20 74 68 69 73 3b  r this$1 = this;
2d560 0a 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72  ..  .        var
2d570 20 6e 75 6d 62 65 72 20 3d 20 27 27 3b 0a 20 20   number = '';.  
2d580 09 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 28  .        while (
2d590 21 74 68 69 73 2e 65 6f 66 28 29 29 20 7b 0a 20  !this.eof()) {. 
2d5a0 20 09 20 20 20 20 20 20 20 20 20 20 20 20 69 66   .            if
2d5b0 20 28 21 63 68 61 72 61 63 74 65 72 5f 31 2e 43   (!character_1.C
2d5c0 68 61 72 61 63 74 65 72 2e 69 73 48 65 78 44 69  haracter.isHexDi
2d5d0 67 69 74 28 74 68 69 73 24 31 2e 73 6f 75 72 63  git(this$1.sourc
2d5e0 65 2e 63 68 61 72 43 6f 64 65 41 74 28 74 68 69  e.charCodeAt(thi
2d5f0 73 24 31 2e 69 6e 64 65 78 29 29 29 20 7b 0a 20  s$1.index))) {. 
2d600 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
2d610 20 20 62 72 65 61 6b 3b 0a 20 20 09 20 20 20 20    break;.  .    
2d620 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20          }.  .   
2d630 20 20 20 20 20 20 20 20 20 6e 75 6d 62 65 72 20           number 
2d640 2b 3d 20 74 68 69 73 24 31 2e 73 6f 75 72 63 65  += this$1.source
2d650 5b 74 68 69 73 24 31 2e 69 6e 64 65 78 2b 2b 5d  [this$1.index++]
2d660 3b 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a 20  ;.  .        }. 
2d670 20 09 20 20 20 20 20 20 20 20 69 66 20 28 6e 75   .        if (nu
2d680 6d 62 65 72 2e 6c 65 6e 67 74 68 20 3d 3d 3d 20  mber.length === 
2d690 30 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20  0) {.  .        
2d6a0 20 20 20 20 74 68 69 73 2e 74 68 72 6f 77 55 6e      this.throwUn
2d6b0 65 78 70 65 63 74 65 64 54 6f 6b 65 6e 28 29 3b  expectedToken();
2d6c0 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a 20 20  .  .        }.  
2d6d0 09 20 20 20 20 20 20 20 20 69 66 20 28 63 68 61  .        if (cha
2d6e0 72 61 63 74 65 72 5f 31 2e 43 68 61 72 61 63 74  racter_1.Charact
2d6f0 65 72 2e 69 73 49 64 65 6e 74 69 66 69 65 72 53  er.isIdentifierS
2d700 74 61 72 74 28 74 68 69 73 2e 73 6f 75 72 63 65  tart(this.source
2d710 2e 63 68 61 72 43 6f 64 65 41 74 28 74 68 69 73  .charCodeAt(this
2d720 2e 69 6e 64 65 78 29 29 29 20 7b 0a 20 20 09 20  .index))) {.  . 
2d730 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
2d740 74 68 72 6f 77 55 6e 65 78 70 65 63 74 65 64 54  throwUnexpectedT
2d750 6f 6b 65 6e 28 29 3b 0a 20 20 09 20 20 20 20 20  oken();.  .     
2d760 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20     }.  .        
2d770 72 65 74 75 72 6e 20 7b 0a 20 20 09 20 20 20 20  return {.  .    
2d780 20 20 20 20 20 20 20 20 74 79 70 65 3a 20 74 6f          type: to
2d790 6b 65 6e 5f 31 2e 54 6f 6b 65 6e 2e 4e 75 6d 65  ken_1.Token.Nume
2d7a0 72 69 63 4c 69 74 65 72 61 6c 2c 0a 20 20 09 20  ricLiteral,.  . 
2d7b0 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65             value
2d7c0 3a 20 70 61 72 73 65 49 6e 74 28 27 30 78 27 20  : parseInt('0x' 
2d7d0 2b 20 6e 75 6d 62 65 72 2c 20 31 36 29 2c 0a 20  + number, 16),. 
2d7e0 20 09 20 20 20 20 20 20 20 20 20 20 20 20 6c 69   .            li
2d7f0 6e 65 4e 75 6d 62 65 72 3a 20 74 68 69 73 2e 6c  neNumber: this.l
2d800 69 6e 65 4e 75 6d 62 65 72 2c 0a 20 20 09 20 20  ineNumber,.  .  
2d810 20 20 20 20 20 20 20 20 20 20 6c 69 6e 65 53 74            lineSt
2d820 61 72 74 3a 20 74 68 69 73 2e 6c 69 6e 65 53 74  art: this.lineSt
2d830 61 72 74 2c 0a 20 20 09 20 20 20 20 20 20 20 20  art,.  .        
2d840 20 20 20 20 73 74 61 72 74 3a 20 73 74 61 72 74      start: start
2d850 2c 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ,.  .           
2d860 20 65 6e 64 3a 20 74 68 69 73 2e 69 6e 64 65 78   end: this.index
2d870 0a 20 20 09 20 20 20 20 20 20 20 20 7d 3b 0a 20  .  .        };. 
2d880 20 09 20 20 20 20 7d 3b 0a 20 20 09 20 20 20 20   .    };.  .    
2d890 0a 20 20 09 20 20 20 20 53 63 61 6e 6e 65 72 2e  .  .    Scanner.
2d8a0 70 72 6f 74 6f 74 79 70 65 2e 73 63 61 6e 42 69  prototype.scanBi
2d8b0 6e 61 72 79 4c 69 74 65 72 61 6c 20 3d 20 66 75  naryLiteral = fu
2d8c0 6e 63 74 69 6f 6e 20 28 73 74 61 72 74 29 20 7b  nction (start) {
2d8d0 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20  .  .        var 
2d8e0 74 68 69 73 24 31 20 3d 20 74 68 69 73 3b 0a 0a  this$1 = this;..
2d8f0 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20 6e    .        var n
2d900 75 6d 62 65 72 20 3d 20 27 27 3b 0a 20 20 09 20  umber = '';.  . 
2d910 20 20 20 20 20 20 20 76 61 72 20 63 68 3b 0a 20         var ch;. 
2d920 20 09 20 20 20 20 20 20 20 20 77 68 69 6c 65 20   .        while 
2d930 28 21 74 68 69 73 2e 65 6f 66 28 29 29 20 7b 0a  (!this.eof()) {.
2d940 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 63    .            c
2d950 68 20 3d 20 74 68 69 73 24 31 2e 73 6f 75 72 63  h = this$1.sourc
2d960 65 5b 74 68 69 73 24 31 2e 69 6e 64 65 78 5d 3b  e[this$1.index];
2d970 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
2d980 69 66 20 28 63 68 20 21 3d 3d 20 27 30 27 20 26  if (ch !== '0' &
2d990 26 20 63 68 20 21 3d 3d 20 27 31 27 29 20 7b 0a  & ch !== '1') {.
2d9a0 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
2d9b0 20 20 20 62 72 65 61 6b 3b 0a 20 20 09 20 20 20     break;.  .   
2d9c0 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20           }.  .  
2d9d0 20 20 20 20 20 20 20 20 20 20 6e 75 6d 62 65 72            number
2d9e0 20 2b 3d 20 74 68 69 73 24 31 2e 73 6f 75 72 63   += this$1.sourc
2d9f0 65 5b 74 68 69 73 24 31 2e 69 6e 64 65 78 2b 2b  e[this$1.index++
2da00 5d 3b 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a  ];.  .        }.
2da10 20 20 09 20 20 20 20 20 20 20 20 69 66 20 28 6e    .        if (n
2da20 75 6d 62 65 72 2e 6c 65 6e 67 74 68 20 3d 3d 3d  umber.length ===
2da30 20 30 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20   0) {.  .       
2da40 20 20 20 20 20 2f 2f 20 6f 6e 6c 79 20 30 62 20       // only 0b 
2da50 6f 72 20 30 42 0a 20 20 09 20 20 20 20 20 20 20  or 0B.  .       
2da60 20 20 20 20 20 74 68 69 73 2e 74 68 72 6f 77 55       this.throwU
2da70 6e 65 78 70 65 63 74 65 64 54 6f 6b 65 6e 28 29  nexpectedToken()
2da80 3b 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a 20  ;.  .        }. 
2da90 20 09 20 20 20 20 20 20 20 20 69 66 20 28 21 74   .        if (!t
2daa0 68 69 73 2e 65 6f 66 28 29 29 20 7b 0a 20 20 09  his.eof()) {.  .
2dab0 20 20 20 20 20 20 20 20 20 20 20 20 63 68 20 3d              ch =
2dac0 20 74 68 69 73 2e 73 6f 75 72 63 65 2e 63 68 61   this.source.cha
2dad0 72 43 6f 64 65 41 74 28 74 68 69 73 2e 69 6e 64  rCodeAt(this.ind
2dae0 65 78 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  ex);.  .        
2daf0 20 20 20 20 2f 2a 20 69 73 74 61 6e 62 75 6c 20      /* istanbul 
2db00 69 67 6e 6f 72 65 20 65 6c 73 65 20 2a 2f 0a 20  ignore else */. 
2db10 20 09 20 20 20 20 20 20 20 20 20 20 20 20 69 66   .            if
2db20 20 28 63 68 61 72 61 63 74 65 72 5f 31 2e 43 68   (character_1.Ch
2db30 61 72 61 63 74 65 72 2e 69 73 49 64 65 6e 74 69  aracter.isIdenti
2db40 66 69 65 72 53 74 61 72 74 28 63 68 29 20 7c 7c  fierStart(ch) ||
2db50 20 63 68 61 72 61 63 74 65 72 5f 31 2e 43 68 61   character_1.Cha
2db60 72 61 63 74 65 72 2e 69 73 44 65 63 69 6d 61 6c  racter.isDecimal
2db70 44 69 67 69 74 28 63 68 29 29 20 7b 0a 20 20 09  Digit(ch)) {.  .
2db80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2db90 74 68 69 73 2e 74 68 72 6f 77 55 6e 65 78 70 65  this.throwUnexpe
2dba0 63 74 65 64 54 6f 6b 65 6e 28 29 3b 0a 20 20 09  ctedToken();.  .
2dbb0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20              }.  
2dbc0 09 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20  .        }.  .  
2dbd0 20 20 20 20 20 20 72 65 74 75 72 6e 20 7b 0a 20        return {. 
2dbe0 20 09 20 20 20 20 20 20 20 20 20 20 20 20 74 79   .            ty
2dbf0 70 65 3a 20 74 6f 6b 65 6e 5f 31 2e 54 6f 6b 65  pe: token_1.Toke
2dc00 6e 2e 4e 75 6d 65 72 69 63 4c 69 74 65 72 61 6c  n.NumericLiteral
2dc10 2c 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ,.  .           
2dc20 20 76 61 6c 75 65 3a 20 70 61 72 73 65 49 6e 74   value: parseInt
2dc30 28 6e 75 6d 62 65 72 2c 20 32 29 2c 0a 20 20 09  (number, 2),.  .
2dc40 20 20 20 20 20 20 20 20 20 20 20 20 6c 69 6e 65              line
2dc50 4e 75 6d 62 65 72 3a 20 74 68 69 73 2e 6c 69 6e  Number: this.lin
2dc60 65 4e 75 6d 62 65 72 2c 0a 20 20 09 20 20 20 20  eNumber,.  .    
2dc70 20 20 20 20 20 20 20 20 6c 69 6e 65 53 74 61 72          lineStar
2dc80 74 3a 20 74 68 69 73 2e 6c 69 6e 65 53 74 61 72  t: this.lineStar
2dc90 74 2c 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  t,.  .          
2dca0 20 20 73 74 61 72 74 3a 20 73 74 61 72 74 2c 0a    start: start,.
2dcb0 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 65    .            e
2dcc0 6e 64 3a 20 74 68 69 73 2e 69 6e 64 65 78 0a 20  nd: this.index. 
2dcd0 20 09 20 20 20 20 20 20 20 20 7d 3b 0a 20 20 09   .        };.  .
2dce0 20 20 20 20 7d 3b 0a 20 20 09 20 20 20 20 0a 20      };.  .    . 
2dcf0 20 09 20 20 20 20 53 63 61 6e 6e 65 72 2e 70 72   .    Scanner.pr
2dd00 6f 74 6f 74 79 70 65 2e 73 63 61 6e 4f 63 74 61  ototype.scanOcta
2dd10 6c 4c 69 74 65 72 61 6c 20 3d 20 66 75 6e 63 74  lLiteral = funct
2dd20 69 6f 6e 20 28 70 72 65 66 69 78 2c 20 73 74 61  ion (prefix, sta
2dd30 72 74 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20  rt) {.  .       
2dd40 20 76 61 72 20 74 68 69 73 24 31 20 3d 20 74 68   var this$1 = th
2dd50 69 73 3b 0a 0a 20 20 09 20 20 20 20 20 20 20 20  is;..  .        
2dd60 76 61 72 20 6e 75 6d 62 65 72 20 3d 20 27 27 3b  var number = '';
2dd70 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20  .  .        var 
2dd80 6f 63 74 61 6c 20 3d 20 66 61 6c 73 65 3b 0a 20  octal = false;. 
2dd90 20 09 20 20 20 20 20 20 20 20 69 66 20 28 63 68   .        if (ch
2dda0 61 72 61 63 74 65 72 5f 31 2e 43 68 61 72 61 63  aracter_1.Charac
2ddb0 74 65 72 2e 69 73 4f 63 74 61 6c 44 69 67 69 74  ter.isOctalDigit
2ddc0 28 70 72 65 66 69 78 2e 63 68 61 72 43 6f 64 65  (prefix.charCode
2ddd0 41 74 28 30 29 29 29 20 7b 0a 20 20 09 20 20 20  At(0))) {.  .   
2dde0 20 20 20 20 20 20 20 20 20 6f 63 74 61 6c 20 3d           octal =
2ddf0 20 74 72 75 65 3b 0a 20 20 09 20 20 20 20 20 20   true;.  .      
2de00 20 20 20 20 20 20 6e 75 6d 62 65 72 20 3d 20 27        number = '
2de10 30 27 20 2b 20 74 68 69 73 2e 73 6f 75 72 63 65  0' + this.source
2de20 5b 74 68 69 73 2e 69 6e 64 65 78 2b 2b 5d 3b 0a  [this.index++];.
2de30 20 20 09 20 20 20 20 20 20 20 20 7d 0a 20 20 09    .        }.  .
2de40 20 20 20 20 20 20 20 20 65 6c 73 65 20 7b 0a 20          else {. 
2de50 20 09 20 20 20 20 20 20 20 20 20 20 20 20 2b 2b   .            ++
2de60 74 68 69 73 2e 69 6e 64 65 78 3b 0a 20 20 09 20  this.index;.  . 
2de70 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20         }.  .    
2de80 20 20 20 20 77 68 69 6c 65 20 28 21 74 68 69 73      while (!this
2de90 2e 65 6f 66 28 29 29 20 7b 0a 20 20 09 20 20 20  .eof()) {.  .   
2dea0 20 20 20 20 20 20 20 20 20 69 66 20 28 21 63 68           if (!ch
2deb0 61 72 61 63 74 65 72 5f 31 2e 43 68 61 72 61 63  aracter_1.Charac
2dec0 74 65 72 2e 69 73 4f 63 74 61 6c 44 69 67 69 74  ter.isOctalDigit
2ded0 28 74 68 69 73 24 31 2e 73 6f 75 72 63 65 2e 63  (this$1.source.c
2dee0 68 61 72 43 6f 64 65 41 74 28 74 68 69 73 24 31  harCodeAt(this$1
2def0 2e 69 6e 64 65 78 29 29 29 20 7b 0a 20 20 09 20  .index))) {.  . 
2df00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
2df10 72 65 61 6b 3b 0a 20 20 09 20 20 20 20 20 20 20  reak;.  .       
2df20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20       }.  .      
2df30 20 20 20 20 20 20 6e 75 6d 62 65 72 20 2b 3d 20        number += 
2df40 74 68 69 73 24 31 2e 73 6f 75 72 63 65 5b 74 68  this$1.source[th
2df50 69 73 24 31 2e 69 6e 64 65 78 2b 2b 5d 3b 0a 20  is$1.index++];. 
2df60 20 09 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20   .        }.  . 
2df70 20 20 20 20 20 20 20 69 66 20 28 21 6f 63 74 61         if (!octa
2df80 6c 20 26 26 20 6e 75 6d 62 65 72 2e 6c 65 6e 67  l && number.leng
2df90 74 68 20 3d 3d 3d 20 30 29 20 7b 0a 20 20 09 20  th === 0) {.  . 
2dfa0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 6f 6e             // on
2dfb0 6c 79 20 30 6f 20 6f 72 20 30 4f 0a 20 20 09 20  ly 0o or 0O.  . 
2dfc0 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
2dfd0 74 68 72 6f 77 55 6e 65 78 70 65 63 74 65 64 54  throwUnexpectedT
2dfe0 6f 6b 65 6e 28 29 3b 0a 20 20 09 20 20 20 20 20  oken();.  .     
2dff0 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20     }.  .        
2e000 69 66 20 28 63 68 61 72 61 63 74 65 72 5f 31 2e  if (character_1.
2e010 43 68 61 72 61 63 74 65 72 2e 69 73 49 64 65 6e  Character.isIden
2e020 74 69 66 69 65 72 53 74 61 72 74 28 74 68 69 73  tifierStart(this
2e030 2e 73 6f 75 72 63 65 2e 63 68 61 72 43 6f 64 65  .source.charCode
2e040 41 74 28 74 68 69 73 2e 69 6e 64 65 78 29 29 20  At(this.index)) 
2e050 7c 7c 20 63 68 61 72 61 63 74 65 72 5f 31 2e 43  || character_1.C
2e060 68 61 72 61 63 74 65 72 2e 69 73 44 65 63 69 6d  haracter.isDecim
2e070 61 6c 44 69 67 69 74 28 74 68 69 73 2e 73 6f 75  alDigit(this.sou
2e080 72 63 65 2e 63 68 61 72 43 6f 64 65 41 74 28 74  rce.charCodeAt(t
2e090 68 69 73 2e 69 6e 64 65 78 29 29 29 20 7b 0a 20  his.index))) {. 
2e0a0 20 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68   .            th
2e0b0 69 73 2e 74 68 72 6f 77 55 6e 65 78 70 65 63 74  is.throwUnexpect
2e0c0 65 64 54 6f 6b 65 6e 28 29 3b 0a 20 20 09 20 20  edToken();.  .  
2e0d0 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20        }.  .     
2e0e0 20 20 20 72 65 74 75 72 6e 20 7b 0a 20 20 09 20     return {.  . 
2e0f0 20 20 20 20 20 20 20 20 20 20 20 74 79 70 65 3a             type:
2e100 20 74 6f 6b 65 6e 5f 31 2e 54 6f 6b 65 6e 2e 4e   token_1.Token.N
2e110 75 6d 65 72 69 63 4c 69 74 65 72 61 6c 2c 0a 20  umericLiteral,. 
2e120 20 09 20 20 20 20 20 20 20 20 20 20 20 20 76 61   .            va
2e130 6c 75 65 3a 20 70 61 72 73 65 49 6e 74 28 6e 75  lue: parseInt(nu
2e140 6d 62 65 72 2c 20 38 29 2c 0a 20 20 09 20 20 20  mber, 8),.  .   
2e150 20 20 20 20 20 20 20 20 20 6f 63 74 61 6c 3a 20           octal: 
2e160 6f 63 74 61 6c 2c 0a 20 20 09 20 20 20 20 20 20  octal,.  .      
2e170 20 20 20 20 20 20 6c 69 6e 65 4e 75 6d 62 65 72        lineNumber
2e180 3a 20 74 68 69 73 2e 6c 69 6e 65 4e 75 6d 62 65  : this.lineNumbe
2e190 72 2c 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  r,.  .          
2e1a0 20 20 6c 69 6e 65 53 74 61 72 74 3a 20 74 68 69    lineStart: thi
2e1b0 73 2e 6c 69 6e 65 53 74 61 72 74 2c 0a 20 20 09  s.lineStart,.  .
2e1c0 20 20 20 20 20 20 20 20 20 20 20 20 73 74 61 72              star
2e1d0 74 3a 20 73 74 61 72 74 2c 0a 20 20 09 20 20 20  t: start,.  .   
2e1e0 20 20 20 20 20 20 20 20 20 65 6e 64 3a 20 74 68           end: th
2e1f0 69 73 2e 69 6e 64 65 78 0a 20 20 09 20 20 20 20  is.index.  .    
2e200 20 20 20 20 7d 3b 0a 20 20 09 20 20 20 20 7d 3b      };.  .    };
2e210 0a 20 20 09 20 20 20 20 0a 20 20 09 20 20 20 20  .  .    .  .    
2e220 53 63 61 6e 6e 65 72 2e 70 72 6f 74 6f 74 79 70  Scanner.prototyp
2e230 65 2e 69 73 49 6d 70 6c 69 63 69 74 4f 63 74 61  e.isImplicitOcta
2e240 6c 4c 69 74 65 72 61 6c 20 3d 20 66 75 6e 63 74  lLiteral = funct
2e250 69 6f 6e 20 28 29 20 7b 0a 20 20 09 20 20 20 20  ion () {.  .    
2e260 20 20 20 20 76 61 72 20 74 68 69 73 24 31 20 3d      var this$1 =
2e270 20 74 68 69 73 3b 0a 0a 20 20 09 20 20 20 20 20   this;..  .     
2e280 20 20 20 2f 2f 20 49 6d 70 6c 69 63 69 74 20 6f     // Implicit o
2e290 63 74 61 6c 2c 20 75 6e 6c 65 73 73 20 74 68 65  ctal, unless the
2e2a0 72 65 20 69 73 20 61 20 6e 6f 6e 2d 6f 63 74 61  re is a non-octa
2e2b0 6c 20 64 69 67 69 74 2e 0a 20 20 09 20 20 20 20  l digit..  .    
2e2c0 20 20 20 20 2f 2f 20 28 41 6e 6e 65 78 20 42 2e      // (Annex B.
2e2d0 31 2e 31 20 6f 6e 20 4e 75 6d 65 72 69 63 20 4c  1.1 on Numeric L
2e2e0 69 74 65 72 61 6c 73 29 0a 20 20 09 20 20 20 20  iterals).  .    
2e2f0 20 20 20 20 66 6f 72 20 28 76 61 72 20 69 20 3d      for (var i =
2e300 20 74 68 69 73 2e 69 6e 64 65 78 20 2b 20 31 3b   this.index + 1;
2e310 20 69 20 3c 20 74 68 69 73 2e 6c 65 6e 67 74 68   i < this.length
2e320 3b 20 2b 2b 69 29 20 7b 0a 20 20 09 20 20 20 20  ; ++i) {.  .    
2e330 20 20 20 20 20 20 20 20 76 61 72 20 63 68 20 3d          var ch =
2e340 20 74 68 69 73 24 31 2e 73 6f 75 72 63 65 5b 69   this$1.source[i
2e350 5d 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  ];.  .          
2e360 20 20 69 66 20 28 63 68 20 3d 3d 3d 20 27 38 27    if (ch === '8'
2e370 20 7c 7c 20 63 68 20 3d 3d 3d 20 27 39 27 29 20   || ch === '9') 
2e380 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  {.  .           
2e390 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
2e3a0 65 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  e;.  .          
2e3b0 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20    }.  .         
2e3c0 20 20 20 69 66 20 28 21 63 68 61 72 61 63 74 65     if (!characte
2e3d0 72 5f 31 2e 43 68 61 72 61 63 74 65 72 2e 69 73  r_1.Character.is
2e3e0 4f 63 74 61 6c 44 69 67 69 74 28 63 68 2e 63 68  OctalDigit(ch.ch
2e3f0 61 72 43 6f 64 65 41 74 28 30 29 29 29 20 7b 0a  arCodeAt(0))) {.
2e400 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
2e410 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0a     return true;.
2e420 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 7d    .            }
2e430 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a 20 20  .  .        }.  
2e440 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
2e450 74 72 75 65 3b 0a 20 20 09 20 20 20 20 7d 3b 0a  true;.  .    };.
2e460 20 20 09 20 20 20 20 0a 20 20 09 20 20 20 20 53    .    .  .    S
2e470 63 61 6e 6e 65 72 2e 70 72 6f 74 6f 74 79 70 65  canner.prototype
2e480 2e 73 63 61 6e 4e 75 6d 65 72 69 63 4c 69 74 65  .scanNumericLite
2e490 72 61 6c 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28  ral = function (
2e4a0 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 76  ) {.  .        v
2e4b0 61 72 20 74 68 69 73 24 31 20 3d 20 74 68 69 73  ar this$1 = this
2e4c0 3b 0a 0a 20 20 09 20 20 20 20 20 20 20 20 76 61  ;..  .        va
2e4d0 72 20 73 74 61 72 74 20 3d 20 74 68 69 73 2e 69  r start = this.i
2e4e0 6e 64 65 78 3b 0a 20 20 09 20 20 20 20 20 20 20  ndex;.  .       
2e4f0 20 76 61 72 20 63 68 20 3d 20 74 68 69 73 2e 73   var ch = this.s
2e500 6f 75 72 63 65 5b 73 74 61 72 74 5d 3b 0a 20 20  ource[start];.  
2e510 09 20 20 20 20 20 20 20 20 61 73 73 65 72 74 5f  .        assert_
2e520 31 2e 61 73 73 65 72 74 28 63 68 61 72 61 63 74  1.assert(charact
2e530 65 72 5f 31 2e 43 68 61 72 61 63 74 65 72 2e 69  er_1.Character.i
2e540 73 44 65 63 69 6d 61 6c 44 69 67 69 74 28 63 68  sDecimalDigit(ch
2e550 2e 63 68 61 72 43 6f 64 65 41 74 28 30 29 29 20  .charCodeAt(0)) 
2e560 7c 7c 20 28 63 68 20 3d 3d 3d 20 27 2e 27 29 2c  || (ch === '.'),
2e570 20 27 4e 75 6d 65 72 69 63 20 6c 69 74 65 72 61   'Numeric litera
2e580 6c 20 6d 75 73 74 20 73 74 61 72 74 20 77 69 74  l must start wit
2e590 68 20 61 20 64 65 63 69 6d 61 6c 20 64 69 67 69  h a decimal digi
2e5a0 74 20 6f 72 20 61 20 64 65 63 69 6d 61 6c 20 70  t or a decimal p
2e5b0 6f 69 6e 74 27 29 3b 0a 20 20 09 20 20 20 20 20  oint');.  .     
2e5c0 20 20 20 76 61 72 20 6e 75 6d 62 65 72 20 3d 20     var number = 
2e5d0 27 27 3b 0a 20 20 09 20 20 20 20 20 20 20 20 69  '';.  .        i
2e5e0 66 20 28 63 68 20 21 3d 3d 20 27 2e 27 29 20 7b  f (ch !== '.') {
2e5f0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
2e600 6e 75 6d 62 65 72 20 3d 20 74 68 69 73 2e 73 6f  number = this.so
2e610 75 72 63 65 5b 74 68 69 73 2e 69 6e 64 65 78 2b  urce[this.index+
2e620 2b 5d 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  +];.  .         
2e630 20 20 20 63 68 20 3d 20 74 68 69 73 2e 73 6f 75     ch = this.sou
2e640 72 63 65 5b 74 68 69 73 2e 69 6e 64 65 78 5d 3b  rce[this.index];
2e650 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
2e660 2f 2f 20 48 65 78 20 6e 75 6d 62 65 72 20 73 74  // Hex number st
2e670 61 72 74 73 20 77 69 74 68 20 27 30 78 27 2e 0a  arts with '0x'..
2e680 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 2f    .            /
2e690 2f 20 4f 63 74 61 6c 20 6e 75 6d 62 65 72 20 73  / Octal number s
2e6a0 74 61 72 74 73 20 77 69 74 68 20 27 30 27 2e 0a  tarts with '0'..
2e6b0 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 2f    .            /
2e6c0 2f 20 4f 63 74 61 6c 20 6e 75 6d 62 65 72 20 69  / Octal number i
2e6d0 6e 20 45 53 36 20 73 74 61 72 74 73 20 77 69 74  n ES6 starts wit
2e6e0 68 20 27 30 6f 27 2e 0a 20 20 09 20 20 20 20 20  h '0o'..  .     
2e6f0 20 20 20 20 20 20 20 2f 2f 20 42 69 6e 61 72 79         // Binary
2e700 20 6e 75 6d 62 65 72 20 69 6e 20 45 53 36 20 73   number in ES6 s
2e710 74 61 72 74 73 20 77 69 74 68 20 27 30 62 27 2e  tarts with '0b'.
2e720 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
2e730 69 66 20 28 6e 75 6d 62 65 72 20 3d 3d 3d 20 27  if (number === '
2e740 30 27 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20  0') {.  .       
2e750 20 20 20 20 20 20 20 20 20 69 66 20 28 63 68 20           if (ch 
2e760 3d 3d 3d 20 27 78 27 20 7c 7c 20 63 68 20 3d 3d  === 'x' || ch ==
2e770 3d 20 27 58 27 29 20 7b 0a 20 20 09 20 20 20 20  = 'X') {.  .    
2e780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e790 2b 2b 74 68 69 73 2e 69 6e 64 65 78 3b 0a 20 20  ++this.index;.  
2e7a0 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e7b0 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73       return this
2e7c0 2e 73 63 61 6e 48 65 78 4c 69 74 65 72 61 6c 28  .scanHexLiteral(
2e7d0 73 74 61 72 74 29 3b 0a 20 20 09 20 20 20 20 20  start);.  .     
2e7e0 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09             }.  .
2e7f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e800 69 66 20 28 63 68 20 3d 3d 3d 20 27 62 27 20 7c  if (ch === 'b' |
2e810 7c 20 63 68 20 3d 3d 3d 20 27 42 27 29 20 7b 0a  | ch === 'B') {.
2e820 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
2e830 20 20 20 20 20 20 20 2b 2b 74 68 69 73 2e 69 6e         ++this.in
2e840 64 65 78 3b 0a 20 20 09 20 20 20 20 20 20 20 20  dex;.  .        
2e850 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2e860 72 6e 20 74 68 69 73 2e 73 63 61 6e 42 69 6e 61  rn this.scanBina
2e870 72 79 4c 69 74 65 72 61 6c 28 73 74 61 72 74 29  ryLiteral(start)
2e880 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
2e890 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20       }.  .      
2e8a0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 68            if (ch
2e8b0 20 3d 3d 3d 20 27 6f 27 20 7c 7c 20 63 68 20 3d   === 'o' || ch =
2e8c0 3d 3d 20 27 4f 27 29 20 7b 0a 20 20 09 20 20 20  == 'O') {.  .   
2e8d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e8e0 20 72 65 74 75 72 6e 20 74 68 69 73 2e 73 63 61   return this.sca
2e8f0 6e 4f 63 74 61 6c 4c 69 74 65 72 61 6c 28 63 68  nOctalLiteral(ch
2e900 2c 20 73 74 61 72 74 29 3b 0a 20 20 09 20 20 20  , start);.  .   
2e910 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20               }. 
2e920 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
2e930 20 20 69 66 20 28 63 68 20 26 26 20 63 68 61 72    if (ch && char
2e940 61 63 74 65 72 5f 31 2e 43 68 61 72 61 63 74 65  acter_1.Characte
2e950 72 2e 69 73 4f 63 74 61 6c 44 69 67 69 74 28 63  r.isOctalDigit(c
2e960 68 2e 63 68 61 72 43 6f 64 65 41 74 28 30 29 29  h.charCodeAt(0))
2e970 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ) {.  .         
2e980 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74             if (t
2e990 68 69 73 2e 69 73 49 6d 70 6c 69 63 69 74 4f 63  his.isImplicitOc
2e9a0 74 61 6c 4c 69 74 65 72 61 6c 28 29 29 20 7b 0a  talLiteral()) {.
2e9b0 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
2e9c0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2e9d0 6e 20 74 68 69 73 2e 73 63 61 6e 4f 63 74 61 6c  n this.scanOctal
2e9e0 4c 69 74 65 72 61 6c 28 63 68 2c 20 73 74 61 72  Literal(ch, star
2e9f0 74 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  t);.  .         
2ea00 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09             }.  .
2ea10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ea20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  }.  .           
2ea30 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   }.  .          
2ea40 20 20 77 68 69 6c 65 20 28 63 68 61 72 61 63 74    while (charact
2ea50 65 72 5f 31 2e 43 68 61 72 61 63 74 65 72 2e 69  er_1.Character.i
2ea60 73 44 65 63 69 6d 61 6c 44 69 67 69 74 28 74 68  sDecimalDigit(th
2ea70 69 73 2e 73 6f 75 72 63 65 2e 63 68 61 72 43 6f  is.source.charCo
2ea80 64 65 41 74 28 74 68 69 73 2e 69 6e 64 65 78 29  deAt(this.index)
2ea90 29 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20  )) {.  .        
2eaa0 20 20 20 20 20 20 20 20 6e 75 6d 62 65 72 20 2b          number +
2eab0 3d 20 74 68 69 73 24 31 2e 73 6f 75 72 63 65 5b  = this$1.source[
2eac0 74 68 69 73 24 31 2e 69 6e 64 65 78 2b 2b 5d 3b  this$1.index++];
2ead0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
2eae0 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  }.  .           
2eaf0 20 63 68 20 3d 20 74 68 69 73 2e 73 6f 75 72 63   ch = this.sourc
2eb00 65 5b 74 68 69 73 2e 69 6e 64 65 78 5d 3b 0a 20  e[this.index];. 
2eb10 20 09 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20   .        }.  . 
2eb20 20 20 20 20 20 20 20 69 66 20 28 63 68 20 3d 3d         if (ch ==
2eb30 3d 20 27 2e 27 29 20 7b 0a 20 20 09 20 20 20 20  = '.') {.  .    
2eb40 20 20 20 20 20 20 20 20 6e 75 6d 62 65 72 20 2b          number +
2eb50 3d 20 74 68 69 73 2e 73 6f 75 72 63 65 5b 74 68  = this.source[th
2eb60 69 73 2e 69 6e 64 65 78 2b 2b 5d 3b 0a 20 20 09  is.index++];.  .
2eb70 20 20 20 20 20 20 20 20 20 20 20 20 77 68 69 6c              whil
2eb80 65 20 28 63 68 61 72 61 63 74 65 72 5f 31 2e 43  e (character_1.C
2eb90 68 61 72 61 63 74 65 72 2e 69 73 44 65 63 69 6d  haracter.isDecim
2eba0 61 6c 44 69 67 69 74 28 74 68 69 73 2e 73 6f 75  alDigit(this.sou
2ebb0 72 63 65 2e 63 68 61 72 43 6f 64 65 41 74 28 74  rce.charCodeAt(t
2ebc0 68 69 73 2e 69 6e 64 65 78 29 29 29 20 7b 0a 20  his.index))) {. 
2ebd0 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
2ebe0 20 20 6e 75 6d 62 65 72 20 2b 3d 20 74 68 69 73    number += this
2ebf0 24 31 2e 73 6f 75 72 63 65 5b 74 68 69 73 24 31  $1.source[this$1
2ec00 2e 69 6e 64 65 78 2b 2b 5d 3b 0a 20 20 09 20 20  .index++];.  .  
2ec10 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20            }.  . 
2ec20 20 20 20 20 20 20 20 20 20 20 20 63 68 20 3d 20             ch = 
2ec30 74 68 69 73 2e 73 6f 75 72 63 65 5b 74 68 69 73  this.source[this
2ec40 2e 69 6e 64 65 78 5d 3b 0a 20 20 09 20 20 20 20  .index];.  .    
2ec50 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20      }.  .       
2ec60 20 69 66 20 28 63 68 20 3d 3d 3d 20 27 65 27 20   if (ch === 'e' 
2ec70 7c 7c 20 63 68 20 3d 3d 3d 20 27 45 27 29 20 7b  || ch === 'E') {
2ec80 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
2ec90 6e 75 6d 62 65 72 20 2b 3d 20 74 68 69 73 2e 73  number += this.s
2eca0 6f 75 72 63 65 5b 74 68 69 73 2e 69 6e 64 65 78  ource[this.index
2ecb0 2b 2b 5d 3b 0a 20 20 09 20 20 20 20 20 20 20 20  ++];.  .        
2ecc0 20 20 20 20 63 68 20 3d 20 74 68 69 73 2e 73 6f      ch = this.so
2ecd0 75 72 63 65 5b 74 68 69 73 2e 69 6e 64 65 78 5d  urce[this.index]
2ece0 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
2ecf0 20 69 66 20 28 63 68 20 3d 3d 3d 20 27 2b 27 20   if (ch === '+' 
2ed00 7c 7c 20 63 68 20 3d 3d 3d 20 27 2d 27 29 20 7b  || ch === '-') {
2ed10 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
2ed20 20 20 20 20 6e 75 6d 62 65 72 20 2b 3d 20 74 68      number += th
2ed30 69 73 2e 73 6f 75 72 63 65 5b 74 68 69 73 2e 69  is.source[this.i
2ed40 6e 64 65 78 2b 2b 5d 3b 0a 20 20 09 20 20 20 20  ndex++];.  .    
2ed50 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20          }.  .   
2ed60 20 20 20 20 20 20 20 20 20 69 66 20 28 63 68 61           if (cha
2ed70 72 61 63 74 65 72 5f 31 2e 43 68 61 72 61 63 74  racter_1.Charact
2ed80 65 72 2e 69 73 44 65 63 69 6d 61 6c 44 69 67 69  er.isDecimalDigi
2ed90 74 28 74 68 69 73 2e 73 6f 75 72 63 65 2e 63 68  t(this.source.ch
2eda0 61 72 43 6f 64 65 41 74 28 74 68 69 73 2e 69 6e  arCodeAt(this.in
2edb0 64 65 78 29 29 29 20 7b 0a 20 20 09 20 20 20 20  dex))) {.  .    
2edc0 20 20 20 20 20 20 20 20 20 20 20 20 77 68 69 6c              whil
2edd0 65 20 28 63 68 61 72 61 63 74 65 72 5f 31 2e 43  e (character_1.C
2ede0 68 61 72 61 63 74 65 72 2e 69 73 44 65 63 69 6d  haracter.isDecim
2edf0 61 6c 44 69 67 69 74 28 74 68 69 73 2e 73 6f 75  alDigit(this.sou
2ee00 72 63 65 2e 63 68 61 72 43 6f 64 65 41 74 28 74  rce.charCodeAt(t
2ee10 68 69 73 2e 69 6e 64 65 78 29 29 29 20 7b 0a 20  his.index))) {. 
2ee20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
2ee30 20 20 20 20 20 20 6e 75 6d 62 65 72 20 2b 3d 20        number += 
2ee40 74 68 69 73 24 31 2e 73 6f 75 72 63 65 5b 74 68  this$1.source[th
2ee50 69 73 24 31 2e 69 6e 64 65 78 2b 2b 5d 3b 0a 20  is$1.index++];. 
2ee60 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
2ee70 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20    }.  .         
2ee80 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20     }.  .        
2ee90 20 20 20 20 65 6c 73 65 20 7b 0a 20 20 09 20 20      else {.  .  
2eea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
2eeb0 69 73 2e 74 68 72 6f 77 55 6e 65 78 70 65 63 74  is.throwUnexpect
2eec0 65 64 54 6f 6b 65 6e 28 29 3b 0a 20 20 09 20 20  edToken();.  .  
2eed0 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20            }.  . 
2eee0 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20         }.  .    
2eef0 20 20 20 20 69 66 20 28 63 68 61 72 61 63 74 65      if (characte
2ef00 72 5f 31 2e 43 68 61 72 61 63 74 65 72 2e 69 73  r_1.Character.is
2ef10 49 64 65 6e 74 69 66 69 65 72 53 74 61 72 74 28  IdentifierStart(
2ef20 74 68 69 73 2e 73 6f 75 72 63 65 2e 63 68 61 72  this.source.char
2ef30 43 6f 64 65 41 74 28 74 68 69 73 2e 69 6e 64 65  CodeAt(this.inde
2ef40 78 29 29 29 20 7b 0a 20 20 09 20 20 20 20 20 20  x))) {.  .      
2ef50 20 20 20 20 20 20 74 68 69 73 2e 74 68 72 6f 77        this.throw
2ef60 55 6e 65 78 70 65 63 74 65 64 54 6f 6b 65 6e 28  UnexpectedToken(
2ef70 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a  );.  .        }.
2ef80 20 20 09 20 20 20 20 20 20 20 20 72 65 74 75 72    .        retur
2ef90 6e 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20  n {.  .         
2efa0 20 20 20 74 79 70 65 3a 20 74 6f 6b 65 6e 5f 31     type: token_1
2efb0 2e 54 6f 6b 65 6e 2e 4e 75 6d 65 72 69 63 4c 69  .Token.NumericLi
2efc0 74 65 72 61 6c 2c 0a 20 20 09 20 20 20 20 20 20  teral,.  .      
2efd0 20 20 20 20 20 20 76 61 6c 75 65 3a 20 70 61 72        value: par
2efe0 73 65 46 6c 6f 61 74 28 6e 75 6d 62 65 72 29 2c  seFloat(number),
2eff0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
2f000 6c 69 6e 65 4e 75 6d 62 65 72 3a 20 74 68 69 73  lineNumber: this
2f010 2e 6c 69 6e 65 4e 75 6d 62 65 72 2c 0a 20 20 09  .lineNumber,.  .
2f020 20 20 20 20 20 20 20 20 20 20 20 20 6c 69 6e 65              line
2f030 53 74 61 72 74 3a 20 74 68 69 73 2e 6c 69 6e 65  Start: this.line
2f040 53 74 61 72 74 2c 0a 20 20 09 20 20 20 20 20 20  Start,.  .      
2f050 20 20 20 20 20 20 73 74 61 72 74 3a 20 73 74 61        start: sta
2f060 72 74 2c 0a 20 20 09 20 20 20 20 20 20 20 20 20  rt,.  .         
2f070 20 20 20 65 6e 64 3a 20 74 68 69 73 2e 69 6e 64     end: this.ind
2f080 65 78 0a 20 20 09 20 20 20 20 20 20 20 20 7d 3b  ex.  .        };
2f090 0a 20 20 09 20 20 20 20 7d 3b 0a 20 20 09 20 20  .  .    };.  .  
2f0a0 20 20 0a 20 20 09 20 20 20 20 2f 2f 20 45 43 4d    .  .    // ECM
2f0b0 41 2d 32 36 32 20 31 31 2e 38 2e 34 20 53 74 72  A-262 11.8.4 Str
2f0c0 69 6e 67 20 4c 69 74 65 72 61 6c 73 0a 20 20 09  ing Literals.  .
2f0d0 20 20 20 20 53 63 61 6e 6e 65 72 2e 70 72 6f 74      Scanner.prot
2f0e0 6f 74 79 70 65 2e 73 63 61 6e 53 74 72 69 6e 67  otype.scanString
2f0f0 4c 69 74 65 72 61 6c 20 3d 20 66 75 6e 63 74 69  Literal = functi
2f100 6f 6e 20 28 29 20 7b 0a 20 20 09 20 20 20 20 20  on () {.  .     
2f110 20 20 20 76 61 72 20 74 68 69 73 24 31 20 3d 20     var this$1 = 
2f120 74 68 69 73 3b 0a 0a 20 20 09 20 20 20 20 20 20  this;..  .      
2f130 20 20 76 61 72 20 73 74 61 72 74 20 3d 20 74 68    var start = th
2f140 69 73 2e 69 6e 64 65 78 3b 0a 20 20 09 20 20 20  is.index;.  .   
2f150 20 20 20 20 20 76 61 72 20 71 75 6f 74 65 20 3d       var quote =
2f160 20 74 68 69 73 2e 73 6f 75 72 63 65 5b 73 74 61   this.source[sta
2f170 72 74 5d 3b 0a 20 20 09 20 20 20 20 20 20 20 20  rt];.  .        
2f180 61 73 73 65 72 74 5f 31 2e 61 73 73 65 72 74 28  assert_1.assert(
2f190 28 71 75 6f 74 65 20 3d 3d 3d 20 27 5c 27 27 20  (quote === '\'' 
2f1a0 7c 7c 20 71 75 6f 74 65 20 3d 3d 3d 20 27 22 27  || quote === '"'
2f1b0 29 2c 20 27 53 74 72 69 6e 67 20 6c 69 74 65 72  ), 'String liter
2f1c0 61 6c 20 6d 75 73 74 20 73 74 61 72 74 73 20 77  al must starts w
2f1d0 69 74 68 20 61 20 71 75 6f 74 65 27 29 3b 0a 20  ith a quote');. 
2f1e0 20 09 20 20 20 20 20 20 20 20 2b 2b 74 68 69 73   .        ++this
2f1f0 2e 69 6e 64 65 78 3b 0a 20 20 09 20 20 20 20 20  .index;.  .     
2f200 20 20 20 76 61 72 20 6f 63 74 61 6c 20 3d 20 66     var octal = f
2f210 61 6c 73 65 3b 0a 20 20 09 20 20 20 20 20 20 20  alse;.  .       
2f220 20 76 61 72 20 73 74 72 20 3d 20 27 27 3b 0a 20   var str = '';. 
2f230 20 09 20 20 20 20 20 20 20 20 77 68 69 6c 65 20   .        while 
2f240 28 21 74 68 69 73 2e 65 6f 66 28 29 29 20 7b 0a  (!this.eof()) {.
2f250 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 76    .            v
2f260 61 72 20 63 68 20 3d 20 74 68 69 73 24 31 2e 73  ar ch = this$1.s
2f270 6f 75 72 63 65 5b 74 68 69 73 24 31 2e 69 6e 64  ource[this$1.ind
2f280 65 78 2b 2b 5d 3b 0a 20 20 09 20 20 20 20 20 20  ex++];.  .      
2f290 20 20 20 20 20 20 69 66 20 28 63 68 20 3d 3d 3d        if (ch ===
2f2a0 20 71 75 6f 74 65 29 20 7b 0a 20 20 09 20 20 20   quote) {.  .   
2f2b0 20 20 20 20 20 20 20 20 20 20 20 20 20 71 75 6f               quo
2f2c0 74 65 20 3d 20 27 27 3b 0a 20 20 09 20 20 20 20  te = '';.  .    
2f2d0 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61              brea
2f2e0 6b 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  k;.  .          
2f2f0 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20    }.  .         
2f300 20 20 20 65 6c 73 65 20 69 66 20 28 63 68 20 3d     else if (ch =
2f310 3d 3d 20 27 5c 5c 27 29 20 7b 0a 20 20 09 20 20  == '\\') {.  .  
2f320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 68                ch
2f330 20 3d 20 74 68 69 73 24 31 2e 73 6f 75 72 63 65   = this$1.source
2f340 5b 74 68 69 73 24 31 2e 69 6e 64 65 78 2b 2b 5d  [this$1.index++]
2f350 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
2f360 20 20 20 20 20 69 66 20 28 21 63 68 20 7c 7c 20       if (!ch || 
2f370 21 63 68 61 72 61 63 74 65 72 5f 31 2e 43 68 61  !character_1.Cha
2f380 72 61 63 74 65 72 2e 69 73 4c 69 6e 65 54 65 72  racter.isLineTer
2f390 6d 69 6e 61 74 6f 72 28 63 68 2e 63 68 61 72 43  minator(ch.charC
2f3a0 6f 64 65 41 74 28 30 29 29 29 20 7b 0a 20 20 09  odeAt(0))) {.  .
2f3b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f3c0 20 20 20 20 73 77 69 74 63 68 20 28 63 68 29 20      switch (ch) 
2f3d0 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  {.  .           
2f3e0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73               cas
2f3f0 65 20 27 75 27 3a 0a 20 20 09 20 20 20 20 20 20  e 'u':.  .      
2f400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f410 20 20 63 61 73 65 20 27 78 27 3a 0a 20 20 09 20    case 'x':.  . 
2f420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f430 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74             if (t
2f440 68 69 73 24 31 2e 73 6f 75 72 63 65 5b 74 68 69  his$1.source[thi
2f450 73 24 31 2e 69 6e 64 65 78 5d 20 3d 3d 3d 20 27  s$1.index] === '
2f460 7b 27 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20  {') {.  .       
2f470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f480 20 20 20 20 20 20 20 20 20 2b 2b 74 68 69 73 24           ++this$
2f490 31 2e 69 6e 64 65 78 3b 0a 20 20 09 20 20 20 20  1.index;.  .    
2f4a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f4b0 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 20              str 
2f4c0 2b 3d 20 74 68 69 73 24 31 2e 73 63 61 6e 55 6e  += this$1.scanUn
2f4d0 69 63 6f 64 65 43 6f 64 65 50 6f 69 6e 74 45 73  icodeCodePointEs
2f4e0 63 61 70 65 28 29 3b 0a 20 20 09 20 20 20 20 20  cape();.  .     
2f4f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f500 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20         }.  .    
2f510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f520 20 20 20 20 20 20 20 20 65 6c 73 65 20 7b 0a 20          else {. 
2f530 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
2f540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f550 20 20 76 61 72 20 75 6e 65 73 63 61 70 65 64 20    var unescaped 
2f560 3d 20 74 68 69 73 24 31 2e 73 63 61 6e 48 65 78  = this$1.scanHex
2f570 45 73 63 61 70 65 28 63 68 29 3b 0a 20 20 09 20  Escape(ch);.  . 
2f580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
2f5a0 66 20 28 21 75 6e 65 73 63 61 70 65 64 29 20 7b  f (!unescaped) {
2f5b0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
2f5c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f5d0 20 20 20 20 20 20 20 20 74 68 69 73 24 31 2e 74          this$1.t
2f5e0 68 72 6f 77 55 6e 65 78 70 65 63 74 65 64 54 6f  hrowUnexpectedTo
2f5f0 6b 65 6e 28 29 3b 0a 20 20 09 20 20 20 20 20 20  ken();.  .      
2f600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f610 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20            }.  . 
2f620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
2f640 74 72 20 2b 3d 20 75 6e 65 73 63 61 70 65 64 3b  tr += unescaped;
2f650 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
2f660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f670 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  }.  .           
2f680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f690 20 62 72 65 61 6b 3b 0a 20 20 09 20 20 20 20 20   break;.  .     
2f6a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f6b0 20 20 20 63 61 73 65 20 27 6e 27 3a 0a 20 20 09     case 'n':.  .
2f6c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f6d0 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 20              str 
2f6e0 2b 3d 20 27 5c 6e 27 3b 0a 20 20 09 20 20 20 20  += '\n';.  .    
2f6f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f700 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0a 20          break;. 
2f710 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
2f720 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 27            case '
2f730 72 27 3a 0a 20 20 09 20 20 20 20 20 20 20 20 20  r':.  .         
2f740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f750 20 20 20 73 74 72 20 2b 3d 20 27 5c 72 27 3b 0a     str += '\r';.
2f760 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
2f770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
2f780 72 65 61 6b 3b 0a 20 20 09 20 20 20 20 20 20 20  reak;.  .       
2f790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f7a0 20 63 61 73 65 20 27 74 27 3a 0a 20 20 09 20 20   case 't':.  .  
2f7b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f7c0 20 20 20 20 20 20 20 20 20 20 73 74 72 20 2b 3d            str +=
2f7d0 20 27 5c 74 27 3b 0a 20 20 09 20 20 20 20 20 20   '\t';.  .      
2f7e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f7f0 20 20 20 20 20 20 62 72 65 61 6b 3b 0a 20 20 09        break;.  .
2f800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f810 20 20 20 20 20 20 20 20 63 61 73 65 20 27 62 27          case 'b'
2f820 3a 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  :.  .           
2f830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f840 20 73 74 72 20 2b 3d 20 27 5c 62 27 3b 0a 20 20   str += '\b';.  
2f850 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f860 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65               bre
2f870 61 6b 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ak;.  .         
2f880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
2f890 61 73 65 20 27 66 27 3a 0a 20 20 09 20 20 20 20  ase 'f':.  .    
2f8a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f8b0 20 20 20 20 20 20 20 20 73 74 72 20 2b 3d 20 27          str += '
2f8c0 5c 66 27 3b 0a 20 20 09 20 20 20 20 20 20 20 20  \f';.  .        
2f8d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f8e0 20 20 20 20 62 72 65 61 6b 3b 0a 20 20 09 20 20      break;.  .  
2f8f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f900 20 20 20 20 20 20 63 61 73 65 20 27 76 27 3a 0a        case 'v':.
2f910 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
2f920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
2f930 74 72 20 2b 3d 20 27 5c 78 30 42 27 3b 0a 20 20  tr += '\x0B';.  
2f940 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f950 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65               bre
2f960 61 6b 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ak;.  .         
2f970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
2f980 61 73 65 20 27 38 27 3a 0a 20 20 09 20 20 20 20  ase '8':.  .    
2f990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f9a0 20 20 20 20 63 61 73 65 20 27 39 27 3a 0a 20 20      case '9':.  
2f9b0 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f9c0 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
2f9d0 20 2b 3d 20 63 68 3b 0a 20 20 09 20 20 20 20 20   += ch;.  .     
2f9e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f9f0 20 20 20 20 20 20 20 74 68 69 73 24 31 2e 74 6f         this$1.to
2fa00 6c 65 72 61 74 65 55 6e 65 78 70 65 63 74 65 64  lerateUnexpected
2fa10 54 6f 6b 65 6e 28 29 3b 0a 20 20 09 20 20 20 20  Token();.  .    
2fa20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fa30 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0a 20          break;. 
2fa40 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
2fa50 20 20 20 20 20 20 20 20 20 20 64 65 66 61 75 6c            defaul
2fa60 74 3a 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  t:.  .          
2fa70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fa80 20 20 69 66 20 28 63 68 20 26 26 20 63 68 61 72    if (ch && char
2fa90 61 63 74 65 72 5f 31 2e 43 68 61 72 61 63 74 65  acter_1.Characte
2faa0 72 2e 69 73 4f 63 74 61 6c 44 69 67 69 74 28 63  r.isOctalDigit(c
2fab0 68 2e 63 68 61 72 43 6f 64 65 41 74 28 30 29 29  h.charCodeAt(0))
2fac0 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ) {.  .         
2fad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fae0 20 20 20 20 20 20 20 76 61 72 20 6f 63 74 54 6f         var octTo
2faf0 44 65 63 20 3d 20 74 68 69 73 24 31 2e 6f 63 74  Dec = this$1.oct
2fb00 61 6c 54 6f 44 65 63 69 6d 61 6c 28 63 68 29 3b  alToDecimal(ch);
2fb10 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
2fb20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fb30 20 20 20 20 6f 63 74 61 6c 20 3d 20 6f 63 74 54      octal = octT
2fb40 6f 44 65 63 2e 6f 63 74 61 6c 20 7c 7c 20 6f 63  oDec.octal || oc
2fb50 74 61 6c 3b 0a 20 20 09 20 20 20 20 20 20 20 20  tal;.  .        
2fb60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fb70 20 20 20 20 20 20 20 20 73 74 72 20 2b 3d 20 53          str += S
2fb80 74 72 69 6e 67 2e 66 72 6f 6d 43 68 61 72 43 6f  tring.fromCharCo
2fb90 64 65 28 6f 63 74 54 6f 44 65 63 2e 63 6f 64 65  de(octToDec.code
2fba0 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  );.  .          
2fbb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fbc0 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20    }.  .         
2fbd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fbe0 20 20 20 65 6c 73 65 20 7b 0a 20 20 09 20 20 20     else {.  .   
2fbf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fc00 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
2fc10 20 2b 3d 20 63 68 3b 0a 20 20 09 20 20 20 20 20   += ch;.  .     
2fc20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fc30 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20         }.  .    
2fc40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fc50 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0a 20          break;. 
2fc60 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
2fc70 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20        }.  .     
2fc80 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09             }.  .
2fc90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fca0 65 6c 73 65 20 7b 0a 20 20 09 20 20 20 20 20 20  else {.  .      
2fcb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2b 2b                ++
2fcc0 74 68 69 73 24 31 2e 6c 69 6e 65 4e 75 6d 62 65  this$1.lineNumbe
2fcd0 72 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  r;.  .          
2fce0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 68            if (ch
2fcf0 20 3d 3d 3d 20 27 5c 72 27 20 26 26 20 74 68 69   === '\r' && thi
2fd00 73 24 31 2e 73 6f 75 72 63 65 5b 74 68 69 73 24  s$1.source[this$
2fd10 31 2e 69 6e 64 65 78 5d 20 3d 3d 3d 20 27 5c 6e  1.index] === '\n
2fd20 27 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20  ') {.  .        
2fd30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fd40 2b 2b 74 68 69 73 24 31 2e 69 6e 64 65 78 3b 0a  ++this$1.index;.
2fd50 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
2fd60 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20         }.  .    
2fd70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fd80 74 68 69 73 24 31 2e 6c 69 6e 65 53 74 61 72 74  this$1.lineStart
2fd90 20 3d 20 74 68 69 73 24 31 2e 69 6e 64 65 78 3b   = this$1.index;
2fda0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
2fdb0 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20      }.  .       
2fdc0 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20       }.  .      
2fdd0 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 63        else if (c
2fde0 68 61 72 61 63 74 65 72 5f 31 2e 43 68 61 72 61  haracter_1.Chara
2fdf0 63 74 65 72 2e 69 73 4c 69 6e 65 54 65 72 6d 69  cter.isLineTermi
2fe00 6e 61 74 6f 72 28 63 68 2e 63 68 61 72 43 6f 64  nator(ch.charCod
2fe10 65 41 74 28 30 29 29 29 20 7b 0a 20 20 09 20 20  eAt(0))) {.  .  
2fe20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72                br
2fe30 65 61 6b 3b 0a 20 20 09 20 20 20 20 20 20 20 20  eak;.  .        
2fe40 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20      }.  .       
2fe50 20 20 20 20 20 65 6c 73 65 20 7b 0a 20 20 09 20       else {.  . 
2fe60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
2fe70 74 72 20 2b 3d 20 63 68 3b 0a 20 20 09 20 20 20  tr += ch;.  .   
2fe80 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20           }.  .  
2fe90 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20        }.  .     
2fea0 20 20 20 69 66 20 28 71 75 6f 74 65 20 21 3d 3d     if (quote !==
2feb0 20 27 27 29 20 7b 0a 20 20 09 20 20 20 20 20 20   '') {.  .      
2fec0 20 20 20 20 20 20 74 68 69 73 2e 69 6e 64 65 78        this.index
2fed0 20 3d 20 73 74 61 72 74 3b 0a 20 20 09 20 20 20   = start;.  .   
2fee0 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 74 68           this.th
2fef0 72 6f 77 55 6e 65 78 70 65 63 74 65 64 54 6f 6b  rowUnexpectedTok
2ff00 65 6e 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20  en();.  .       
2ff10 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 72 65   }.  .        re
2ff20 74 75 72 6e 20 7b 0a 20 20 09 20 20 20 20 20 20  turn {.  .      
2ff30 20 20 20 20 20 20 74 79 70 65 3a 20 74 6f 6b 65        type: toke
2ff40 6e 5f 31 2e 54 6f 6b 65 6e 2e 53 74 72 69 6e 67  n_1.Token.String
2ff50 4c 69 74 65 72 61 6c 2c 0a 20 20 09 20 20 20 20  Literal,.  .    
2ff60 20 20 20 20 20 20 20 20 76 61 6c 75 65 3a 20 73          value: s
2ff70 74 72 2c 0a 20 20 09 20 20 20 20 20 20 20 20 20  tr,.  .         
2ff80 20 20 20 6f 63 74 61 6c 3a 20 6f 63 74 61 6c 2c     octal: octal,
2ff90 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
2ffa0 6c 69 6e 65 4e 75 6d 62 65 72 3a 20 74 68 69 73  lineNumber: this
2ffb0 2e 6c 69 6e 65 4e 75 6d 62 65 72 2c 0a 20 20 09  .lineNumber,.  .
2ffc0 20 20 20 20 20 20 20 20 20 20 20 20 6c 69 6e 65              line
2ffd0 53 74 61 72 74 3a 20 74 68 69 73 2e 6c 69 6e 65  Start: this.line
2ffe0 53 74 61 72 74 2c 0a 20 20 09 20 20 20 20 20 20  Start,.  .      
2fff0 20 20 20 20 20 20 73 74 61 72 74 3a 20 73 74 61        start: sta
30000 72 74 2c 0a 20 20 09 20 20 20 20 20 20 20 20 20  rt,.  .         
30010 20 20 20 65 6e 64 3a 20 74 68 69 73 2e 69 6e 64     end: this.ind
30020 65 78 0a 20 20 09 20 20 20 20 20 20 20 20 7d 3b  ex.  .        };
30030 0a 20 20 09 20 20 20 20 7d 3b 0a 20 20 09 20 20  .  .    };.  .  
30040 20 20 0a 20 20 09 20 20 20 20 2f 2f 20 45 43 4d    .  .    // ECM
30050 41 2d 32 36 32 20 31 31 2e 38 2e 36 20 54 65 6d  A-262 11.8.6 Tem
30060 70 6c 61 74 65 20 4c 69 74 65 72 61 6c 20 4c 65  plate Literal Le
30070 78 69 63 61 6c 20 43 6f 6d 70 6f 6e 65 6e 74 73  xical Components
30080 0a 20 20 09 20 20 20 20 53 63 61 6e 6e 65 72 2e  .  .    Scanner.
30090 70 72 6f 74 6f 74 79 70 65 2e 73 63 61 6e 54 65  prototype.scanTe
300a0 6d 70 6c 61 74 65 20 3d 20 66 75 6e 63 74 69 6f  mplate = functio
300b0 6e 20 28 29 20 7b 0a 20 20 09 20 20 20 20 20 20  n () {.  .      
300c0 20 20 76 61 72 20 74 68 69 73 24 31 20 3d 20 74    var this$1 = t
300d0 68 69 73 3b 0a 0a 20 20 09 20 20 20 20 20 20 20  his;..  .       
300e0 20 76 61 72 20 63 6f 6f 6b 65 64 20 3d 20 27 27   var cooked = ''
300f0 3b 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72  ;.  .        var
30100 20 74 65 72 6d 69 6e 61 74 65 64 20 3d 20 66 61   terminated = fa
30110 6c 73 65 3b 0a 20 20 09 20 20 20 20 20 20 20 20  lse;.  .        
30120 76 61 72 20 73 74 61 72 74 20 3d 20 74 68 69 73  var start = this
30130 2e 69 6e 64 65 78 3b 0a 20 20 09 20 20 20 20 20  .index;.  .     
30140 20 20 20 76 61 72 20 68 65 61 64 20 3d 20 28 74     var head = (t
30150 68 69 73 2e 73 6f 75 72 63 65 5b 73 74 61 72 74  his.source[start
30160 5d 20 3d 3d 3d 20 27 60 27 29 3b 0a 20 20 09 20  ] === '`');.  . 
30170 20 20 20 20 20 20 20 76 61 72 20 74 61 69 6c 20         var tail 
30180 3d 20 66 61 6c 73 65 3b 0a 20 20 09 20 20 20 20  = false;.  .    
30190 20 20 20 20 76 61 72 20 72 61 77 4f 66 66 73 65      var rawOffse
301a0 74 20 3d 20 32 3b 0a 20 20 09 20 20 20 20 20 20  t = 2;.  .      
301b0 20 20 2b 2b 74 68 69 73 2e 69 6e 64 65 78 3b 0a    ++this.index;.
301c0 20 20 09 20 20 20 20 20 20 20 20 77 68 69 6c 65    .        while
301d0 20 28 21 74 68 69 73 2e 65 6f 66 28 29 29 20 7b   (!this.eof()) {
301e0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
301f0 76 61 72 20 63 68 20 3d 20 74 68 69 73 24 31 2e  var ch = this$1.
30200 73 6f 75 72 63 65 5b 74 68 69 73 24 31 2e 69 6e  source[this$1.in
30210 64 65 78 2b 2b 5d 3b 0a 20 20 09 20 20 20 20 20  dex++];.  .     
30220 20 20 20 20 20 20 20 69 66 20 28 63 68 20 3d 3d         if (ch ==
30230 3d 20 27 60 27 29 20 7b 0a 20 20 09 20 20 20 20  = '`') {.  .    
30240 20 20 20 20 20 20 20 20 20 20 20 20 72 61 77 4f              rawO
30250 66 66 73 65 74 20 3d 20 31 3b 0a 20 20 09 20 20  ffset = 1;.  .  
30260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 61                ta
30270 69 6c 20 3d 20 74 72 75 65 3b 0a 20 20 09 20 20  il = true;.  .  
30280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 65                te
30290 72 6d 69 6e 61 74 65 64 20 3d 20 74 72 75 65 3b  rminated = true;
302a0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
302b0 20 20 20 20 62 72 65 61 6b 3b 0a 20 20 09 20 20      break;.  .  
302c0 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20            }.  . 
302d0 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20             else 
302e0 69 66 20 28 63 68 20 3d 3d 3d 20 27 24 27 29 20  if (ch === '$') 
302f0 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  {.  .           
30300 20 20 20 20 20 69 66 20 28 74 68 69 73 24 31 2e       if (this$1.
30310 73 6f 75 72 63 65 5b 74 68 69 73 24 31 2e 69 6e  source[this$1.in
30320 64 65 78 5d 20 3d 3d 3d 20 27 7b 27 29 20 7b 0a  dex] === '{') {.
30330 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
30340 20 20 20 20 20 20 20 74 68 69 73 24 31 2e 63 75         this$1.cu
30350 72 6c 79 53 74 61 63 6b 2e 70 75 73 68 28 27 24  rlyStack.push('$
30360 7b 27 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  {');.  .        
30370 20 20 20 20 20 20 20 20 20 20 20 20 2b 2b 74 68              ++th
30380 69 73 24 31 2e 69 6e 64 65 78 3b 0a 20 20 09 20  is$1.index;.  . 
30390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
303a0 20 20 20 74 65 72 6d 69 6e 61 74 65 64 20 3d 20     terminated = 
303b0 74 72 75 65 3b 0a 20 20 09 20 20 20 20 20 20 20  true;.  .       
303c0 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65               bre
303d0 61 6b 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ak;.  .         
303e0 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20         }.  .    
303f0 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6f 6b              cook
30400 65 64 20 2b 3d 20 63 68 3b 0a 20 20 09 20 20 20  ed += ch;.  .   
30410 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20           }.  .  
30420 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69            else i
30430 66 20 28 63 68 20 3d 3d 3d 20 27 5c 5c 27 29 20  f (ch === '\\') 
30440 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  {.  .           
30450 20 20 20 20 20 63 68 20 3d 20 74 68 69 73 24 31       ch = this$1
30460 2e 73 6f 75 72 63 65 5b 74 68 69 73 24 31 2e 69  .source[this$1.i
30470 6e 64 65 78 2b 2b 5d 3b 0a 20 20 09 20 20 20 20  ndex++];.  .    
30480 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
30490 21 63 68 61 72 61 63 74 65 72 5f 31 2e 43 68 61  !character_1.Cha
304a0 72 61 63 74 65 72 2e 69 73 4c 69 6e 65 54 65 72  racter.isLineTer
304b0 6d 69 6e 61 74 6f 72 28 63 68 2e 63 68 61 72 43  minator(ch.charC
304c0 6f 64 65 41 74 28 30 29 29 29 20 7b 0a 20 20 09  odeAt(0))) {.  .
304d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
304e0 20 20 20 20 73 77 69 74 63 68 20 28 63 68 29 20      switch (ch) 
304f0 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  {.  .           
30500 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73               cas
30510 65 20 27 6e 27 3a 0a 20 20 09 20 20 20 20 20 20  e 'n':.  .      
30520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30530 20 20 20 20 20 20 63 6f 6f 6b 65 64 20 2b 3d 20        cooked += 
30540 27 5c 6e 27 3b 0a 20 20 09 20 20 20 20 20 20 20  '\n';.  .       
30550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30560 20 20 20 20 20 62 72 65 61 6b 3b 0a 20 20 09 20       break;.  . 
30570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30580 20 20 20 20 20 20 20 63 61 73 65 20 27 72 27 3a         case 'r':
30590 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
305a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
305b0 63 6f 6f 6b 65 64 20 2b 3d 20 27 5c 72 27 3b 0a  cooked += '\r';.
305c0 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
305d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
305e0 72 65 61 6b 3b 0a 20 20 09 20 20 20 20 20 20 20  reak;.  .       
305f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30600 20 63 61 73 65 20 27 74 27 3a 0a 20 20 09 20 20   case 't':.  .  
30610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30620 20 20 20 20 20 20 20 20 20 20 63 6f 6f 6b 65 64            cooked
30630 20 2b 3d 20 27 5c 74 27 3b 0a 20 20 09 20 20 20   += '\t';.  .   
30640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30650 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0a           break;.
30660 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
30670 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
30680 27 75 27 3a 0a 20 20 09 20 20 20 20 20 20 20 20  'u':.  .        
30690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
306a0 63 61 73 65 20 27 78 27 3a 0a 20 20 09 20 20 20  case 'x':.  .   
306b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
306c0 20 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69           if (thi
306d0 73 24 31 2e 73 6f 75 72 63 65 5b 74 68 69 73 24  s$1.source[this$
306e0 31 2e 69 6e 64 65 78 5d 20 3d 3d 3d 20 27 7b 27  1.index] === '{'
306f0 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ) {.  .         
30700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30710 20 20 20 20 20 20 20 2b 2b 74 68 69 73 24 31 2e         ++this$1.
30720 69 6e 64 65 78 3b 0a 20 20 09 20 20 20 20 20 20  index;.  .      
30730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30740 20 20 20 20 20 20 20 20 20 20 63 6f 6f 6b 65 64            cooked
30750 20 2b 3d 20 74 68 69 73 24 31 2e 73 63 61 6e 55   += this$1.scanU
30760 6e 69 63 6f 64 65 43 6f 64 65 50 6f 69 6e 74 45  nicodeCodePointE
30770 73 63 61 70 65 28 29 3b 0a 20 20 09 20 20 20 20  scape();.  .    
30780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30790 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20          }.  .   
307a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
307b0 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 7b 0a           else {.
307c0 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
307d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
307e0 20 20 20 76 61 72 20 72 65 73 74 6f 72 65 20 3d     var restore =
307f0 20 74 68 69 73 24 31 2e 69 6e 64 65 78 3b 0a 20   this$1.index;. 
30800 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
30810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30820 20 20 76 61 72 20 75 6e 65 73 63 61 70 65 64 20    var unescaped 
30830 3d 20 74 68 69 73 24 31 2e 73 63 61 6e 48 65 78  = this$1.scanHex
30840 45 73 63 61 70 65 28 63 68 29 3b 0a 20 20 09 20  Escape(ch);.  . 
30850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
30870 66 20 28 75 6e 65 73 63 61 70 65 64 29 20 7b 0a  f (unescaped) {.
30880 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
30890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
308a0 20 20 20 20 20 20 20 63 6f 6f 6b 65 64 20 2b 3d         cooked +=
308b0 20 75 6e 65 73 63 61 70 65 64 3b 0a 20 20 09 20   unescaped;.  . 
308c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
308d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
308e0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
308f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30900 20 20 20 20 65 6c 73 65 20 7b 0a 20 20 09 20 20      else {.  .  
30910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30930 20 20 74 68 69 73 24 31 2e 69 6e 64 65 78 20 3d    this$1.index =
30940 20 72 65 73 74 6f 72 65 3b 0a 20 20 09 20 20 20   restore;.  .   
30950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30970 20 63 6f 6f 6b 65 64 20 2b 3d 20 63 68 3b 0a 20   cooked += ch;. 
30980 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
30990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
309a0 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20    }.  .         
309b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
309c0 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20     }.  .        
309d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
309e0 20 20 20 20 62 72 65 61 6b 3b 0a 20 20 09 20 20      break;.  .  
309f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30a00 20 20 20 20 20 20 63 61 73 65 20 27 62 27 3a 0a        case 'b':.
30a10 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
30a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
30a30 6f 6f 6b 65 64 20 2b 3d 20 27 5c 62 27 3b 0a 20  ooked += '\b';. 
30a40 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
30a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72                br
30a60 65 61 6b 3b 0a 20 20 09 20 20 20 20 20 20 20 20  eak;.  .        
30a70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30a80 63 61 73 65 20 27 66 27 3a 0a 20 20 09 20 20 20  case 'f':.  .   
30a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30aa0 20 20 20 20 20 20 20 20 20 63 6f 6f 6b 65 64 20           cooked 
30ab0 2b 3d 20 27 5c 66 27 3b 0a 20 20 09 20 20 20 20  += '\f';.  .    
30ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30ad0 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0a 20          break;. 
30ae0 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
30af0 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 27            case '
30b00 76 27 3a 0a 20 20 09 20 20 20 20 20 20 20 20 20  v':.  .         
30b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30b20 20 20 20 63 6f 6f 6b 65 64 20 2b 3d 20 27 5c 76     cooked += '\v
30b30 27 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  ';.  .          
30b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30b50 20 20 62 72 65 61 6b 3b 0a 20 20 09 20 20 20 20    break;.  .    
30b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30b70 20 20 20 20 64 65 66 61 75 6c 74 3a 0a 20 20 09      default:.  .
30b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30b90 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
30ba0 63 68 20 3d 3d 3d 20 27 30 27 29 20 7b 0a 20 20  ch === '0') {.  
30bb0 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30bd0 20 69 66 20 28 63 68 61 72 61 63 74 65 72 5f 31   if (character_1
30be0 2e 43 68 61 72 61 63 74 65 72 2e 69 73 44 65 63  .Character.isDec
30bf0 69 6d 61 6c 44 69 67 69 74 28 74 68 69 73 24 31  imalDigit(this$1
30c00 2e 73 6f 75 72 63 65 2e 63 68 61 72 43 6f 64 65  .source.charCode
30c10 41 74 28 74 68 69 73 24 31 2e 69 6e 64 65 78 29  At(this$1.index)
30c20 29 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20  )) {.  .        
30c30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30c40 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 49              // I
30c50 6c 6c 65 67 61 6c 3a 20 5c 30 31 20 5c 30 32 20  llegal: \01 \02 
30c60 61 6e 64 20 73 6f 20 6f 6e 0a 20 20 09 20 20 20  and so on.  .   
30c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30c90 20 74 68 69 73 24 31 2e 74 68 72 6f 77 55 6e 65   this$1.throwUne
30ca0 78 70 65 63 74 65 64 54 6f 6b 65 6e 28 6d 65 73  xpectedToken(mes
30cb0 73 61 67 65 73 5f 31 2e 4d 65 73 73 61 67 65 73  sages_1.Messages
30cc0 2e 54 65 6d 70 6c 61 74 65 4f 63 74 61 6c 4c 69  .TemplateOctalLi
30cd0 74 65 72 61 6c 29 3b 0a 20 20 09 20 20 20 20 20  teral);.  .     
30ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30cf0 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09             }.  .
30d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30d20 63 6f 6f 6b 65 64 20 2b 3d 20 27 5c 30 27 3b 0a  cooked += '\0';.
30d30 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
30d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
30d50 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
30d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30d70 65 6c 73 65 20 69 66 20 28 63 68 61 72 61 63 74  else if (charact
30d80 65 72 5f 31 2e 43 68 61 72 61 63 74 65 72 2e 69  er_1.Character.i
30d90 73 4f 63 74 61 6c 44 69 67 69 74 28 63 68 2e 63  sOctalDigit(ch.c
30da0 68 61 72 43 6f 64 65 41 74 28 30 29 29 29 20 7b  harCodeAt(0))) {
30db0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
30dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30dd0 20 20 20 20 2f 2f 20 49 6c 6c 65 67 61 6c 3a 20      // Illegal: 
30de0 5c 31 20 5c 32 0a 20 20 09 20 20 20 20 20 20 20  \1 \2.  .       
30df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30e00 20 20 20 20 20 20 20 20 20 74 68 69 73 24 31 2e           this$1.
30e10 74 68 72 6f 77 55 6e 65 78 70 65 63 74 65 64 54  throwUnexpectedT
30e20 6f 6b 65 6e 28 6d 65 73 73 61 67 65 73 5f 31 2e  oken(messages_1.
30e30 4d 65 73 73 61 67 65 73 2e 54 65 6d 70 6c 61 74  Messages.Templat
30e40 65 4f 63 74 61 6c 4c 69 74 65 72 61 6c 29 3b 0a  eOctalLiteral);.
30e50 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
30e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
30e70 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
30e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30e90 65 6c 73 65 20 7b 0a 20 20 09 20 20 20 20 20 20  else {.  .      
30ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30eb0 20 20 20 20 20 20 20 20 20 20 63 6f 6f 6b 65 64            cooked
30ec0 20 2b 3d 20 63 68 3b 0a 20 20 09 20 20 20 20 20   += ch;.  .     
30ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30ee0 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20         }.  .    
30ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30f00 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0a 20          break;. 
30f10 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
30f20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20        }.  .     
30f30 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09             }.  .
30f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30f50 65 6c 73 65 20 7b 0a 20 20 09 20 20 20 20 20 20  else {.  .      
30f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2b 2b                ++
30f70 74 68 69 73 24 31 2e 6c 69 6e 65 4e 75 6d 62 65  this$1.lineNumbe
30f80 72 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  r;.  .          
30f90 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 68            if (ch
30fa0 20 3d 3d 3d 20 27 5c 72 27 20 26 26 20 74 68 69   === '\r' && thi
30fb0 73 24 31 2e 73 6f 75 72 63 65 5b 74 68 69 73 24  s$1.source[this$
30fc0 31 2e 69 6e 64 65 78 5d 20 3d 3d 3d 20 27 5c 6e  1.index] === '\n
30fd0 27 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20  ') {.  .        
30fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30ff0 2b 2b 74 68 69 73 24 31 2e 69 6e 64 65 78 3b 0a  ++this$1.index;.
31000 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
31010 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20         }.  .    
31020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31030 74 68 69 73 24 31 2e 6c 69 6e 65 53 74 61 72 74  this$1.lineStart
31040 20 3d 20 74 68 69 73 24 31 2e 69 6e 64 65 78 3b   = this$1.index;
31050 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
31060 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20      }.  .       
31070 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20       }.  .      
31080 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 63        else if (c
31090 68 61 72 61 63 74 65 72 5f 31 2e 43 68 61 72 61  haracter_1.Chara
310a0 63 74 65 72 2e 69 73 4c 69 6e 65 54 65 72 6d 69  cter.isLineTermi
310b0 6e 61 74 6f 72 28 63 68 2e 63 68 61 72 43 6f 64  nator(ch.charCod
310c0 65 41 74 28 30 29 29 29 20 7b 0a 20 20 09 20 20  eAt(0))) {.  .  
310d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2b 2b                ++
310e0 74 68 69 73 24 31 2e 6c 69 6e 65 4e 75 6d 62 65  this$1.lineNumbe
310f0 72 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  r;.  .          
31100 20 20 20 20 20 20 69 66 20 28 63 68 20 3d 3d 3d        if (ch ===
31110 20 27 5c 72 27 20 26 26 20 74 68 69 73 24 31 2e   '\r' && this$1.
31120 73 6f 75 72 63 65 5b 74 68 69 73 24 31 2e 69 6e  source[this$1.in
31130 64 65 78 5d 20 3d 3d 3d 20 27 5c 6e 27 29 20 7b  dex] === '\n') {
31140 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
31150 20 20 20 20 20 20 20 20 2b 2b 74 68 69 73 24 31          ++this$1
31160 2e 69 6e 64 65 78 3b 0a 20 20 09 20 20 20 20 20  .index;.  .     
31170 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09             }.  .
31180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31190 74 68 69 73 24 31 2e 6c 69 6e 65 53 74 61 72 74  this$1.lineStart
311a0 20 3d 20 74 68 69 73 24 31 2e 69 6e 64 65 78 3b   = this$1.index;
311b0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
311c0 20 20 20 20 63 6f 6f 6b 65 64 20 2b 3d 20 27 5c      cooked += '\
311d0 6e 27 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  n';.  .         
311e0 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20     }.  .        
311f0 20 20 20 20 65 6c 73 65 20 7b 0a 20 20 09 20 20      else {.  .  
31200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
31210 6f 6b 65 64 20 2b 3d 20 63 68 3b 0a 20 20 09 20  oked += ch;.  . 
31220 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09             }.  .
31230 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20          }.  .   
31240 20 20 20 20 20 69 66 20 28 21 74 65 72 6d 69 6e       if (!termin
31250 61 74 65 64 29 20 7b 0a 20 20 09 20 20 20 20 20  ated) {.  .     
31260 20 20 20 20 20 20 20 74 68 69 73 2e 74 68 72 6f         this.thro
31270 77 55 6e 65 78 70 65 63 74 65 64 54 6f 6b 65 6e  wUnexpectedToken
31280 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 7d  ();.  .        }
31290 0a 20 20 09 20 20 20 20 20 20 20 20 69 66 20 28  .  .        if (
312a0 21 68 65 61 64 29 20 7b 0a 20 20 09 20 20 20 20  !head) {.  .    
312b0 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 75 72          this.cur
312c0 6c 79 53 74 61 63 6b 2e 70 6f 70 28 29 3b 0a 20  lyStack.pop();. 
312d0 20 09 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20   .        }.  . 
312e0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 7b 0a         return {.
312f0 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 74    .            t
31300 79 70 65 3a 20 74 6f 6b 65 6e 5f 31 2e 54 6f 6b  ype: token_1.Tok
31310 65 6e 2e 54 65 6d 70 6c 61 74 65 2c 0a 20 20 09  en.Template,.  .
31320 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75              valu
31330 65 3a 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20  e: {.  .        
31340 20 20 20 20 20 20 20 20 63 6f 6f 6b 65 64 3a 20          cooked: 
31350 63 6f 6f 6b 65 64 2c 0a 20 20 09 20 20 20 20 20  cooked,.  .     
31360 20 20 20 20 20 20 20 20 20 20 20 72 61 77 3a 20             raw: 
31370 74 68 69 73 2e 73 6f 75 72 63 65 2e 73 6c 69 63  this.source.slic
31380 65 28 73 74 61 72 74 20 2b 20 31 2c 20 74 68 69  e(start + 1, thi
31390 73 2e 69 6e 64 65 78 20 2d 20 72 61 77 4f 66 66  s.index - rawOff
313a0 73 65 74 29 0a 20 20 09 20 20 20 20 20 20 20 20  set).  .        
313b0 20 20 20 20 7d 2c 0a 20 20 09 20 20 20 20 20 20      },.  .      
313c0 20 20 20 20 20 20 68 65 61 64 3a 20 68 65 61 64        head: head
313d0 2c 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ,.  .           
313e0 20 74 61 69 6c 3a 20 74 61 69 6c 2c 0a 20 20 09   tail: tail,.  .
313f0 20 20 20 20 20 20 20 20 20 20 20 20 6c 69 6e 65              line
31400 4e 75 6d 62 65 72 3a 20 74 68 69 73 2e 6c 69 6e  Number: this.lin
31410 65 4e 75 6d 62 65 72 2c 0a 20 20 09 20 20 20 20  eNumber,.  .    
31420 20 20 20 20 20 20 20 20 6c 69 6e 65 53 74 61 72          lineStar
31430 74 3a 20 74 68 69 73 2e 6c 69 6e 65 53 74 61 72  t: this.lineStar
31440 74 2c 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  t,.  .          
31450 20 20 73 74 61 72 74 3a 20 73 74 61 72 74 2c 0a    start: start,.
31460 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 65    .            e
31470 6e 64 3a 20 74 68 69 73 2e 69 6e 64 65 78 0a 20  nd: this.index. 
31480 20 09 20 20 20 20 20 20 20 20 7d 3b 0a 20 20 09   .        };.  .
31490 20 20 20 20 7d 3b 0a 20 20 09 20 20 20 20 0a 20      };.  .    . 
314a0 20 09 20 20 20 20 2f 2f 20 45 43 4d 41 2d 32 36   .    // ECMA-26
314b0 32 20 31 31 2e 38 2e 35 20 52 65 67 75 6c 61 72  2 11.8.5 Regular
314c0 20 45 78 70 72 65 73 73 69 6f 6e 20 4c 69 74 65   Expression Lite
314d0 72 61 6c 73 0a 20 20 09 20 20 20 20 53 63 61 6e  rals.  .    Scan
314e0 6e 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 74 65  ner.prototype.te
314f0 73 74 52 65 67 45 78 70 20 3d 20 66 75 6e 63 74  stRegExp = funct
31500 69 6f 6e 20 28 70 61 74 74 65 72 6e 2c 20 66 6c  ion (pattern, fl
31510 61 67 73 29 20 7b 0a 20 20 09 20 20 20 20 20 20  ags) {.  .      
31520 20 20 2f 2f 20 54 68 65 20 42 4d 50 20 63 68 61    // The BMP cha
31530 72 61 63 74 65 72 20 74 6f 20 75 73 65 20 61 73  racter to use as
31540 20 61 20 72 65 70 6c 61 63 65 6d 65 6e 74 20 66   a replacement f
31550 6f 72 20 61 73 74 72 61 6c 20 73 79 6d 62 6f 6c  or astral symbol
31560 73 20 77 68 65 6e 0a 20 20 09 20 20 20 20 20 20  s when.  .      
31570 20 20 2f 2f 20 74 72 61 6e 73 6c 61 74 69 6e 67    // translating
31580 20 61 6e 20 45 53 36 20 22 75 22 2d 66 6c 61 67   an ES6 "u"-flag
31590 67 65 64 20 70 61 74 74 65 72 6e 20 74 6f 20 61  ged pattern to a
315a0 6e 20 45 53 35 2d 63 6f 6d 70 61 74 69 62 6c 65  n ES5-compatible
315b0 0a 20 20 09 20 20 20 20 20 20 20 20 2f 2f 20 61  .  .        // a
315c0 70 70 72 6f 78 69 6d 61 74 69 6f 6e 2e 0a 20 20  pproximation..  
315d0 09 20 20 20 20 20 20 20 20 2f 2f 20 4e 6f 74 65  .        // Note
315e0 3a 20 72 65 70 6c 61 63 69 6e 67 20 77 69 74 68  : replacing with
315f0 20 27 5c 75 46 46 46 46 27 20 65 6e 61 62 6c 65   '\uFFFF' enable
31600 73 20 66 61 6c 73 65 20 70 6f 73 69 74 69 76 65  s false positive
31610 73 20 69 6e 20 75 6e 6c 69 6b 65 6c 79 0a 20 20  s in unlikely.  
31620 09 20 20 20 20 20 20 20 20 2f 2f 20 73 63 65 6e  .        // scen
31630 61 72 69 6f 73 2e 20 46 6f 72 20 65 78 61 6d 70  arios. For examp
31640 6c 65 2c 20 60 5b 5c 75 7b 31 30 34 34 66 7d 2d  le, `[\u{1044f}-
31650 5c 75 7b 31 30 34 34 30 7d 5d 60 20 69 73 20 61  \u{10440}]` is a
31660 6e 20 69 6e 76 61 6c 69 64 0a 20 20 09 20 20 20  n invalid.  .   
31670 20 20 20 20 20 2f 2f 20 70 61 74 74 65 72 6e 20       // pattern 
31680 74 68 61 74 20 77 6f 75 6c 64 20 6e 6f 74 20 62  that would not b
31690 65 20 64 65 74 65 63 74 65 64 20 62 79 20 74 68  e detected by th
316a0 69 73 20 73 75 62 73 74 69 74 75 74 69 6f 6e 2e  is substitution.
316b0 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20  .  .        var 
316c0 61 73 74 72 61 6c 53 75 62 73 74 69 74 75 74 65  astralSubstitute
316d0 20 3d 20 27 5c 75 46 46 46 46 27 3b 0a 20 20 09   = '\uFFFF';.  .
316e0 20 20 20 20 20 20 20 20 76 61 72 20 74 6d 70 20          var tmp 
316f0 3d 20 70 61 74 74 65 72 6e 3b 0a 20 20 09 20 20  = pattern;.  .  
31700 20 20 20 20 20 20 76 61 72 20 73 65 6c 66 20 3d        var self =
31710 20 74 68 69 73 3b 0a 20 20 09 20 20 20 20 20 20   this;.  .      
31720 20 20 69 66 20 28 66 6c 61 67 73 2e 69 6e 64 65    if (flags.inde
31730 78 4f 66 28 27 75 27 29 20 3e 3d 20 30 29 20 7b  xOf('u') >= 0) {
31740 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
31750 74 6d 70 20 3d 20 74 6d 70 0a 20 20 09 20 20 20  tmp = tmp.  .   
31760 20 20 20 20 20 20 20 20 20 20 20 20 20 2e 72 65               .re
31770 70 6c 61 63 65 28 2f 5c 5c 75 5c 7b 28 5b 30 2d  place(/\\u\{([0-
31780 39 61 2d 66 41 2d 46 5d 2b 29 5c 7d 7c 5c 5c 75  9a-fA-F]+)\}|\\u
31790 28 5b 61 2d 66 41 2d 46 30 2d 39 5d 7b 34 7d 29  ([a-fA-F0-9]{4})
317a0 2f 67 2c 20 66 75 6e 63 74 69 6f 6e 20 28 24 30  /g, function ($0
317b0 2c 20 24 31 2c 20 24 32 29 20 7b 0a 20 20 09 20  , $1, $2) {.  . 
317c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76                 v
317d0 61 72 20 63 6f 64 65 50 6f 69 6e 74 20 3d 20 70  ar codePoint = p
317e0 61 72 73 65 49 6e 74 28 24 31 20 7c 7c 20 24 32  arseInt($1 || $2
317f0 2c 20 31 36 29 3b 0a 20 20 09 20 20 20 20 20 20  , 16);.  .      
31800 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 6f            if (co
31810 64 65 50 6f 69 6e 74 20 3e 20 30 78 31 30 46 46  dePoint > 0x10FF
31820 46 46 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20  FF) {.  .       
31830 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c               sel
31840 66 2e 74 68 72 6f 77 55 6e 65 78 70 65 63 74 65  f.throwUnexpecte
31850 64 54 6f 6b 65 6e 28 6d 65 73 73 61 67 65 73 5f  dToken(messages_
31860 31 2e 4d 65 73 73 61 67 65 73 2e 49 6e 76 61 6c  1.Messages.Inval
31870 69 64 52 65 67 45 78 70 29 3b 0a 20 20 09 20 20  idRegExp);.  .  
31880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a                }.
31890 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
318a0 20 20 20 69 66 20 28 63 6f 64 65 50 6f 69 6e 74     if (codePoint
318b0 20 3c 3d 20 30 78 46 46 46 46 29 20 7b 0a 20 20   <= 0xFFFF) {.  
318c0 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
318d0 20 20 20 20 20 72 65 74 75 72 6e 20 53 74 72 69       return Stri
318e0 6e 67 2e 66 72 6f 6d 43 68 61 72 43 6f 64 65 28  ng.fromCharCode(
318f0 63 6f 64 65 50 6f 69 6e 74 29 3b 0a 20 20 09 20  codePoint);.  . 
31900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
31910 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
31920 20 20 20 20 72 65 74 75 72 6e 20 61 73 74 72 61      return astra
31930 6c 53 75 62 73 74 69 74 75 74 65 3b 0a 20 20 09  lSubstitute;.  .
31940 20 20 20 20 20 20 20 20 20 20 20 20 7d 29 0a 20              }). 
31950 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
31960 20 20 2e 72 65 70 6c 61 63 65 28 2f 5b 5c 75 44    .replace(/[\uD
31970 38 30 30 2d 5c 75 44 42 46 46 5d 5b 5c 75 44 43  800-\uDBFF][\uDC
31980 30 30 2d 5c 75 44 46 46 46 5d 2f 67 2c 20 61 73  00-\uDFFF]/g, as
31990 74 72 61 6c 53 75 62 73 74 69 74 75 74 65 29 3b  tralSubstitute);
319a0 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a 20 20  .  .        }.  
319b0 09 20 20 20 20 20 20 20 20 2f 2f 20 46 69 72 73  .        // Firs
319c0 74 2c 20 64 65 74 65 63 74 20 69 6e 76 61 6c 69  t, detect invali
319d0 64 20 72 65 67 75 6c 61 72 20 65 78 70 72 65 73  d regular expres
319e0 73 69 6f 6e 73 2e 0a 20 20 09 20 20 20 20 20 20  sions..  .      
319f0 20 20 74 72 79 20 7b 0a 20 20 09 20 20 20 20 20    try {.  .     
31a00 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20     }.  .        
31a10 63 61 74 63 68 20 28 65 29 20 7b 0a 20 20 09 20  catch (e) {.  . 
31a20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
31a30 74 68 72 6f 77 55 6e 65 78 70 65 63 74 65 64 54  throwUnexpectedT
31a40 6f 6b 65 6e 28 6d 65 73 73 61 67 65 73 5f 31 2e  oken(messages_1.
31a50 4d 65 73 73 61 67 65 73 2e 49 6e 76 61 6c 69 64  Messages.Invalid
31a60 52 65 67 45 78 70 29 3b 0a 20 20 09 20 20 20 20  RegExp);.  .    
31a70 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20      }.  .       
31a80 20 2f 2f 20 52 65 74 75 72 6e 20 61 20 72 65 67   // Return a reg
31a90 75 6c 61 72 20 65 78 70 72 65 73 73 69 6f 6e 20  ular expression 
31aa0 6f 62 6a 65 63 74 20 66 6f 72 20 74 68 69 73 20  object for this 
31ab0 70 61 74 74 65 72 6e 2d 66 6c 61 67 20 70 61 69  pattern-flag pai
31ac0 72 2c 20 6f 72 0a 20 20 09 20 20 20 20 20 20 20  r, or.  .       
31ad0 20 2f 2f 20 60 6e 75 6c 6c 60 20 69 6e 20 63 61   // `null` in ca
31ae0 73 65 20 74 68 65 20 63 75 72 72 65 6e 74 20 65  se the current e
31af0 6e 76 69 72 6f 6e 6d 65 6e 74 20 64 6f 65 73 6e  nvironment doesn
31b00 27 74 20 73 75 70 70 6f 72 74 20 74 68 65 20 66  't support the f
31b10 6c 61 67 73 20 69 74 0a 20 20 09 20 20 20 20 20  lags it.  .     
31b20 20 20 20 2f 2f 20 75 73 65 73 2e 0a 20 20 09 20     // uses..  . 
31b30 20 20 20 20 20 20 20 74 72 79 20 7b 0a 20 20 09         try {.  .
31b40 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
31b50 72 6e 20 6e 65 77 20 52 65 67 45 78 70 28 70 61  rn new RegExp(pa
31b60 74 74 65 72 6e 2c 20 66 6c 61 67 73 29 3b 0a 20  ttern, flags);. 
31b70 20 09 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20   .        }.  . 
31b80 20 20 20 20 20 20 20 63 61 74 63 68 20 28 65 78         catch (ex
31b90 63 65 70 74 69 6f 6e 29 20 7b 0a 20 20 09 20 20  ception) {.  .  
31ba0 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69 73 74            /* ist
31bb0 61 6e 62 75 6c 20 69 67 6e 6f 72 65 20 6e 65 78  anbul ignore nex
31bc0 74 20 2a 2f 0a 20 20 09 20 20 20 20 20 20 20 20  t */.  .        
31bd0 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
31be0 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a 20 20  .  .        }.  
31bf0 09 20 20 20 20 7d 3b 0a 20 20 09 20 20 20 20 0a  .    };.  .    .
31c00 20 20 09 20 20 20 20 53 63 61 6e 6e 65 72 2e 70    .    Scanner.p
31c10 72 6f 74 6f 74 79 70 65 2e 73 63 61 6e 52 65 67  rototype.scanReg
31c20 45 78 70 42 6f 64 79 20 3d 20 66 75 6e 63 74 69  ExpBody = functi
31c30 6f 6e 20 28 29 20 7b 0a 20 20 09 20 20 20 20 20  on () {.  .     
31c40 20 20 20 76 61 72 20 74 68 69 73 24 31 20 3d 20     var this$1 = 
31c50 74 68 69 73 3b 0a 0a 20 20 09 20 20 20 20 20 20  this;..  .      
31c60 20 20 76 61 72 20 63 68 20 3d 20 74 68 69 73 2e    var ch = this.
31c70 73 6f 75 72 63 65 5b 74 68 69 73 2e 69 6e 64 65  source[this.inde
31c80 78 5d 3b 0a 20 20 09 20 20 20 20 20 20 20 20 61  x];.  .        a
31c90 73 73 65 72 74 5f 31 2e 61 73 73 65 72 74 28 63  ssert_1.assert(c
31ca0 68 20 3d 3d 3d 20 27 2f 27 2c 20 27 52 65 67 75  h === '/', 'Regu
31cb0 6c 61 72 20 65 78 70 72 65 73 73 69 6f 6e 20 6c  lar expression l
31cc0 69 74 65 72 61 6c 20 6d 75 73 74 20 73 74 61 72  iteral must star
31cd0 74 20 77 69 74 68 20 61 20 73 6c 61 73 68 27 29  t with a slash')
31ce0 3b 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72  ;.  .        var
31cf0 20 73 74 72 20 3d 20 74 68 69 73 2e 73 6f 75 72   str = this.sour
31d00 63 65 5b 74 68 69 73 2e 69 6e 64 65 78 2b 2b 5d  ce[this.index++]
31d10 3b 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72  ;.  .        var
31d20 20 63 6c 61 73 73 4d 61 72 6b 65 72 20 3d 20 66   classMarker = f
31d30 61 6c 73 65 3b 0a 20 20 09 20 20 20 20 20 20 20  alse;.  .       
31d40 20 76 61 72 20 74 65 72 6d 69 6e 61 74 65 64 20   var terminated 
31d50 3d 20 66 61 6c 73 65 3b 0a 20 20 09 20 20 20 20  = false;.  .    
31d60 20 20 20 20 77 68 69 6c 65 20 28 21 74 68 69 73      while (!this
31d70 2e 65 6f 66 28 29 29 20 7b 0a 20 20 09 20 20 20  .eof()) {.  .   
31d80 20 20 20 20 20 20 20 20 20 63 68 20 3d 20 74 68           ch = th
31d90 69 73 24 31 2e 73 6f 75 72 63 65 5b 74 68 69 73  is$1.source[this
31da0 24 31 2e 69 6e 64 65 78 2b 2b 5d 3b 0a 20 20 09  $1.index++];.  .
31db0 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 20              str 
31dc0 2b 3d 20 63 68 3b 0a 20 20 09 20 20 20 20 20 20  += ch;.  .      
31dd0 20 20 20 20 20 20 69 66 20 28 63 68 20 3d 3d 3d        if (ch ===
31de0 20 27 5c 5c 27 29 20 7b 0a 20 20 09 20 20 20 20   '\\') {.  .    
31df0 20 20 20 20 20 20 20 20 20 20 20 20 63 68 20 3d              ch =
31e00 20 74 68 69 73 24 31 2e 73 6f 75 72 63 65 5b 74   this$1.source[t
31e10 68 69 73 24 31 2e 69 6e 64 65 78 2b 2b 5d 3b 0a  his$1.index++];.
31e20 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
31e30 20 20 20 2f 2f 20 45 43 4d 41 2d 32 36 32 20 37     // ECMA-262 7
31e40 2e 38 2e 35 0a 20 20 09 20 20 20 20 20 20 20 20  .8.5.  .        
31e50 20 20 20 20 20 20 20 20 69 66 20 28 63 68 61 72          if (char
31e60 61 63 74 65 72 5f 31 2e 43 68 61 72 61 63 74 65  acter_1.Characte
31e70 72 2e 69 73 4c 69 6e 65 54 65 72 6d 69 6e 61 74  r.isLineTerminat
31e80 6f 72 28 63 68 2e 63 68 61 72 43 6f 64 65 41 74  or(ch.charCodeAt
31e90 28 30 29 29 29 20 7b 0a 20 20 09 20 20 20 20 20  (0))) {.  .     
31ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
31eb0 68 69 73 24 31 2e 74 68 72 6f 77 55 6e 65 78 70  his$1.throwUnexp
31ec0 65 63 74 65 64 54 6f 6b 65 6e 28 6d 65 73 73 61  ectedToken(messa
31ed0 67 65 73 5f 31 2e 4d 65 73 73 61 67 65 73 2e 55  ges_1.Messages.U
31ee0 6e 74 65 72 6d 69 6e 61 74 65 64 52 65 67 45 78  nterminatedRegEx
31ef0 70 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  p);.  .         
31f00 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20         }.  .    
31f10 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 20              str 
31f20 2b 3d 20 63 68 3b 0a 20 20 09 20 20 20 20 20 20  += ch;.  .      
31f30 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20        }.  .     
31f40 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28         else if (
31f50 63 68 61 72 61 63 74 65 72 5f 31 2e 43 68 61 72  character_1.Char
31f60 61 63 74 65 72 2e 69 73 4c 69 6e 65 54 65 72 6d  acter.isLineTerm
31f70 69 6e 61 74 6f 72 28 63 68 2e 63 68 61 72 43 6f  inator(ch.charCo
31f80 64 65 41 74 28 30 29 29 29 20 7b 0a 20 20 09 20  deAt(0))) {.  . 
31f90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
31fa0 68 69 73 24 31 2e 74 68 72 6f 77 55 6e 65 78 70  his$1.throwUnexp
31fb0 65 63 74 65 64 54 6f 6b 65 6e 28 6d 65 73 73 61  ectedToken(messa
31fc0 67 65 73 5f 31 2e 4d 65 73 73 61 67 65 73 2e 55  ges_1.Messages.U
31fd0 6e 74 65 72 6d 69 6e 61 74 65 64 52 65 67 45 78  nterminatedRegEx
31fe0 70 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  p);.  .         
31ff0 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20     }.  .        
32000 20 20 20 20 65 6c 73 65 20 69 66 20 28 63 6c 61      else if (cla
32010 73 73 4d 61 72 6b 65 72 29 20 7b 0a 20 20 09 20  ssMarker) {.  . 
32020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
32030 66 20 28 63 68 20 3d 3d 3d 20 27 5d 27 29 20 7b  f (ch === ']') {
32040 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
32050 20 20 20 20 20 20 20 20 63 6c 61 73 73 4d 61 72          classMar
32060 6b 65 72 20 3d 20 66 61 6c 73 65 3b 0a 20 20 09  ker = false;.  .
32070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32080 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  }.  .           
32090 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   }.  .          
320a0 20 20 65 6c 73 65 20 7b 0a 20 20 09 20 20 20 20    else {.  .    
320b0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
320c0 63 68 20 3d 3d 3d 20 27 2f 27 29 20 7b 0a 20 20  ch === '/') {.  
320d0 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
320e0 20 20 20 20 20 74 65 72 6d 69 6e 61 74 65 64 20       terminated 
320f0 3d 20 74 72 75 65 3b 0a 20 20 09 20 20 20 20 20  = true;.  .     
32100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
32110 72 65 61 6b 3b 0a 20 20 09 20 20 20 20 20 20 20  reak;.  .       
32120 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20           }.  .  
32130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
32140 73 65 20 69 66 20 28 63 68 20 3d 3d 3d 20 27 5b  se if (ch === '[
32150 27 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20  ') {.  .        
32160 20 20 20 20 20 20 20 20 20 20 20 20 63 6c 61 73              clas
32170 73 4d 61 72 6b 65 72 20 3d 20 74 72 75 65 3b 0a  sMarker = true;.
32180 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
32190 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20     }.  .        
321a0 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20      }.  .       
321b0 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 69 66   }.  .        if
321c0 20 28 21 74 65 72 6d 69 6e 61 74 65 64 29 20 7b   (!terminated) {
321d0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
321e0 74 68 69 73 2e 74 68 72 6f 77 55 6e 65 78 70 65  this.throwUnexpe
321f0 63 74 65 64 54 6f 6b 65 6e 28 6d 65 73 73 61 67  ctedToken(messag
32200 65 73 5f 31 2e 4d 65 73 73 61 67 65 73 2e 55 6e  es_1.Messages.Un
32210 74 65 72 6d 69 6e 61 74 65 64 52 65 67 45 78 70  terminatedRegExp
32220 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a  );.  .        }.
32230 20 20 09 20 20 20 20 20 20 20 20 2f 2f 20 45 78    .        // Ex
32240 63 6c 75 64 65 20 6c 65 61 64 69 6e 67 20 61 6e  clude leading an
32250 64 20 74 72 61 69 6c 69 6e 67 20 73 6c 61 73 68  d trailing slash
32260 2e 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72  ..  .        var
32270 20 62 6f 64 79 20 3d 20 73 74 72 2e 73 75 62 73   body = str.subs
32280 74 72 28 31 2c 20 73 74 72 2e 6c 65 6e 67 74 68  tr(1, str.length
32290 20 2d 20 32 29 3b 0a 20 20 09 20 20 20 20 20 20   - 2);.  .      
322a0 20 20 72 65 74 75 72 6e 20 7b 0a 20 20 09 20 20    return {.  .  
322b0 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 3a            value:
322c0 20 62 6f 64 79 2c 0a 20 20 09 20 20 20 20 20 20   body,.  .      
322d0 20 20 20 20 20 20 6c 69 74 65 72 61 6c 3a 20 73        literal: s
322e0 74 72 0a 20 20 09 20 20 20 20 20 20 20 20 7d 3b  tr.  .        };
322f0 0a 20 20 09 20 20 20 20 7d 3b 0a 20 20 09 20 20  .  .    };.  .  
32300 20 20 0a 20 20 09 20 20 20 20 53 63 61 6e 6e 65    .  .    Scanne
32310 72 2e 70 72 6f 74 6f 74 79 70 65 2e 73 63 61 6e  r.prototype.scan
32320 52 65 67 45 78 70 46 6c 61 67 73 20 3d 20 66 75  RegExpFlags = fu
32330 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20 09 20  nction () {.  . 
32340 20 20 20 20 20 20 20 76 61 72 20 74 68 69 73 24         var this$
32350 31 20 3d 20 74 68 69 73 3b 0a 0a 20 20 09 20 20  1 = this;..  .  
32360 20 20 20 20 20 20 76 61 72 20 73 74 72 20 3d 20        var str = 
32370 27 27 3b 0a 20 20 09 20 20 20 20 20 20 20 20 76  '';.  .        v
32380 61 72 20 66 6c 61 67 73 20 3d 20 27 27 3b 0a 20  ar flags = '';. 
32390 20 09 20 20 20 20 20 20 20 20 77 68 69 6c 65 20   .        while 
323a0 28 21 74 68 69 73 2e 65 6f 66 28 29 29 20 7b 0a  (!this.eof()) {.
323b0 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 76    .            v
323c0 61 72 20 63 68 20 3d 20 74 68 69 73 24 31 2e 73  ar ch = this$1.s
323d0 6f 75 72 63 65 5b 74 68 69 73 24 31 2e 69 6e 64  ource[this$1.ind
323e0 65 78 5d 3b 0a 20 20 09 20 20 20 20 20 20 20 20  ex];.  .        
323f0 20 20 20 20 69 66 20 28 21 63 68 61 72 61 63 74      if (!charact
32400 65 72 5f 31 2e 43 68 61 72 61 63 74 65 72 2e 69  er_1.Character.i
32410 73 49 64 65 6e 74 69 66 69 65 72 50 61 72 74 28  sIdentifierPart(
32420 63 68 2e 63 68 61 72 43 6f 64 65 41 74 28 30 29  ch.charCodeAt(0)
32430 29 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20  )) {.  .        
32440 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0a 20          break;. 
32450 20 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a   .            }.
32460 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 2b    .            +
32470 2b 74 68 69 73 24 31 2e 69 6e 64 65 78 3b 0a 20  +this$1.index;. 
32480 20 09 20 20 20 20 20 20 20 20 20 20 20 20 69 66   .            if
32490 20 28 63 68 20 3d 3d 3d 20 27 5c 5c 27 20 26 26   (ch === '\\' &&
324a0 20 21 74 68 69 73 24 31 2e 65 6f 66 28 29 29 20   !this$1.eof()) 
324b0 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  {.  .           
324c0 20 20 20 20 20 63 68 20 3d 20 74 68 69 73 24 31       ch = this$1
324d0 2e 73 6f 75 72 63 65 5b 74 68 69 73 24 31 2e 69  .source[this$1.i
324e0 6e 64 65 78 5d 3b 0a 20 20 09 20 20 20 20 20 20  ndex];.  .      
324f0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 68            if (ch
32500 20 3d 3d 3d 20 27 75 27 29 20 7b 0a 20 20 09 20   === 'u') {.  . 
32510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32520 20 20 20 2b 2b 74 68 69 73 24 31 2e 69 6e 64 65     ++this$1.inde
32530 78 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  x;.  .          
32540 20 20 20 20 20 20 20 20 20 20 76 61 72 20 72 65            var re
32550 73 74 6f 72 65 20 3d 20 74 68 69 73 24 31 2e 69  store = this$1.i
32560 6e 64 65 78 3b 0a 20 20 09 20 20 20 20 20 20 20  ndex;.  .       
32570 20 20 20 20 20 20 20 20 20 20 20 20 20 63 68 20               ch 
32580 3d 20 74 68 69 73 24 31 2e 73 63 61 6e 48 65 78  = this$1.scanHex
32590 45 73 63 61 70 65 28 27 75 27 29 3b 0a 20 20 09  Escape('u');.  .
325a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
325b0 20 20 20 20 69 66 20 28 63 68 29 20 7b 0a 20 20      if (ch) {.  
325c0 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
325d0 20 20 20 20 20 20 20 20 20 66 6c 61 67 73 20 2b           flags +
325e0 3d 20 63 68 3b 0a 20 20 09 20 20 20 20 20 20 20  = ch;.  .       
325f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32600 20 66 6f 72 20 28 73 74 72 20 2b 3d 20 27 5c 5c   for (str += '\\
32610 75 27 3b 20 72 65 73 74 6f 72 65 20 3c 20 74 68  u'; restore < th
32620 69 73 2e 69 6e 64 65 78 3b 20 2b 2b 72 65 73 74  is.index; ++rest
32630 6f 72 65 29 20 7b 0a 20 20 09 20 20 20 20 20 20  ore) {.  .      
32640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32650 20 20 20 20 20 20 73 74 72 20 2b 3d 20 74 68 69        str += thi
32660 73 24 31 2e 73 6f 75 72 63 65 5b 72 65 73 74 6f  s$1.source[resto
32670 72 65 5d 3b 0a 20 20 09 20 20 20 20 20 20 20 20  re];.  .        
32680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32690 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  }.  .           
326a0 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20           }.  .  
326b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
326c0 20 20 65 6c 73 65 20 7b 0a 20 20 09 20 20 20 20    else {.  .    
326d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
326e0 20 20 20 20 74 68 69 73 24 31 2e 69 6e 64 65 78      this$1.index
326f0 20 3d 20 72 65 73 74 6f 72 65 3b 0a 20 20 09 20   = restore;.  . 
32700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32710 20 20 20 20 20 20 20 66 6c 61 67 73 20 2b 3d 20         flags += 
32720 27 75 27 3b 0a 20 20 09 20 20 20 20 20 20 20 20  'u';.  .        
32730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32740 73 74 72 20 2b 3d 20 27 5c 5c 75 27 3b 0a 20 20  str += '\\u';.  
32750 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
32760 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20       }.  .      
32770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
32780 69 73 24 31 2e 74 6f 6c 65 72 61 74 65 55 6e 65  is$1.tolerateUne
32790 78 70 65 63 74 65 64 54 6f 6b 65 6e 28 29 3b 0a  xpectedToken();.
327a0 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
327b0 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20     }.  .        
327c0 20 20 20 20 20 20 20 20 65 6c 73 65 20 7b 0a 20          else {. 
327d0 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
327e0 20 20 20 20 20 20 73 74 72 20 2b 3d 20 27 5c 5c        str += '\\
327f0 27 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  ';.  .          
32800 20 20 20 20 20 20 20 20 20 20 74 68 69 73 24 31            this$1
32810 2e 74 6f 6c 65 72 61 74 65 55 6e 65 78 70 65 63  .tolerateUnexpec
32820 74 65 64 54 6f 6b 65 6e 28 29 3b 0a 20 20 09 20  tedToken();.  . 
32830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
32840 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
32850 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  }.  .           
32860 20 65 6c 73 65 20 7b 0a 20 20 09 20 20 20 20 20   else {.  .     
32870 20 20 20 20 20 20 20 20 20 20 20 66 6c 61 67 73             flags
32880 20 2b 3d 20 63 68 3b 0a 20 20 09 20 20 20 20 20   += ch;.  .     
32890 20 20 20 20 20 20 20 20 20 20 20 73 74 72 20 2b             str +
328a0 3d 20 63 68 3b 0a 20 20 09 20 20 20 20 20 20 20  = ch;.  .       
328b0 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20       }.  .      
328c0 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 72    }.  .        r
328d0 65 74 75 72 6e 20 7b 0a 20 20 09 20 20 20 20 20  eturn {.  .     
328e0 20 20 20 20 20 20 20 76 61 6c 75 65 3a 20 66 6c         value: fl
328f0 61 67 73 2c 0a 20 20 09 20 20 20 20 20 20 20 20  ags,.  .        
32900 20 20 20 20 6c 69 74 65 72 61 6c 3a 20 73 74 72      literal: str
32910 0a 20 20 09 20 20 20 20 20 20 20 20 7d 3b 0a 20  .  .        };. 
32920 20 09 20 20 20 20 7d 3b 0a 20 20 09 20 20 20 20   .    };.  .    
32930 0a 20 20 09 20 20 20 20 53 63 61 6e 6e 65 72 2e  .  .    Scanner.
32940 70 72 6f 74 6f 74 79 70 65 2e 73 63 61 6e 52 65  prototype.scanRe
32950 67 45 78 70 20 3d 20 66 75 6e 63 74 69 6f 6e 20  gExp = function 
32960 28 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20  () {.  .        
32970 76 61 72 20 73 74 61 72 74 20 3d 20 74 68 69 73  var start = this
32980 2e 69 6e 64 65 78 3b 0a 20 20 09 20 20 20 20 20  .index;.  .     
32990 20 20 20 76 61 72 20 62 6f 64 79 20 3d 20 74 68     var body = th
329a0 69 73 2e 73 63 61 6e 52 65 67 45 78 70 42 6f 64  is.scanRegExpBod
329b0 79 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  y();.  .        
329c0 76 61 72 20 66 6c 61 67 73 20 3d 20 74 68 69 73  var flags = this
329d0 2e 73 63 61 6e 52 65 67 45 78 70 46 6c 61 67 73  .scanRegExpFlags
329e0 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 76  ();.  .        v
329f0 61 72 20 76 61 6c 75 65 20 3d 20 74 68 69 73 2e  ar value = this.
32a00 74 65 73 74 52 65 67 45 78 70 28 62 6f 64 79 2e  testRegExp(body.
32a10 76 61 6c 75 65 2c 20 66 6c 61 67 73 2e 76 61 6c  value, flags.val
32a20 75 65 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  ue);.  .        
32a30 72 65 74 75 72 6e 20 7b 0a 20 20 09 20 20 20 20  return {.  .    
32a40 20 20 20 20 20 20 20 20 74 79 70 65 3a 20 74 6f          type: to
32a50 6b 65 6e 5f 31 2e 54 6f 6b 65 6e 2e 52 65 67 75  ken_1.Token.Regu
32a60 6c 61 72 45 78 70 72 65 73 73 69 6f 6e 2c 0a 20  larExpression,. 
32a70 20 09 20 20 20 20 20 20 20 20 20 20 20 20 76 61   .            va
32a80 6c 75 65 3a 20 76 61 6c 75 65 2c 0a 20 20 09 20  lue: value,.  . 
32a90 20 20 20 20 20 20 20 20 20 20 20 6c 69 74 65 72             liter
32aa0 61 6c 3a 20 62 6f 64 79 2e 6c 69 74 65 72 61 6c  al: body.literal
32ab0 20 2b 20 66 6c 61 67 73 2e 6c 69 74 65 72 61 6c   + flags.literal
32ac0 2c 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ,.  .           
32ad0 20 72 65 67 65 78 3a 20 7b 0a 20 20 09 20 20 20   regex: {.  .   
32ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 70 61 74               pat
32af0 74 65 72 6e 3a 20 62 6f 64 79 2e 76 61 6c 75 65  tern: body.value
32b00 2c 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ,.  .           
32b10 20 20 20 20 20 66 6c 61 67 73 3a 20 66 6c 61 67       flags: flag
32b20 73 2e 76 61 6c 75 65 0a 20 20 09 20 20 20 20 20  s.value.  .     
32b30 20 20 20 20 20 20 20 7d 2c 0a 20 20 09 20 20 20         },.  .   
32b40 20 20 20 20 20 20 20 20 20 6c 69 6e 65 4e 75 6d           lineNum
32b50 62 65 72 3a 20 74 68 69 73 2e 6c 69 6e 65 4e 75  ber: this.lineNu
32b60 6d 62 65 72 2c 0a 20 20 09 20 20 20 20 20 20 20  mber,.  .       
32b70 20 20 20 20 20 6c 69 6e 65 53 74 61 72 74 3a 20       lineStart: 
32b80 74 68 69 73 2e 6c 69 6e 65 53 74 61 72 74 2c 0a  this.lineStart,.
32b90 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 73    .            s
32ba0 74 61 72 74 3a 20 73 74 61 72 74 2c 0a 20 20 09  tart: start,.  .
32bb0 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 3a              end:
32bc0 20 74 68 69 73 2e 69 6e 64 65 78 0a 20 20 09 20   this.index.  . 
32bd0 20 20 20 20 20 20 20 7d 3b 0a 20 20 09 20 20 20         };.  .   
32be0 20 7d 3b 0a 20 20 09 20 20 20 20 0a 20 20 09 20   };.  .    .  . 
32bf0 20 20 20 53 63 61 6e 6e 65 72 2e 70 72 6f 74 6f     Scanner.proto
32c00 74 79 70 65 2e 6c 65 78 20 3d 20 66 75 6e 63 74  type.lex = funct
32c10 69 6f 6e 20 28 29 20 7b 0a 20 20 09 20 20 20 20  ion () {.  .    
32c20 20 20 20 20 69 66 20 28 74 68 69 73 2e 65 6f 66      if (this.eof
32c30 28 29 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20  ()) {.  .       
32c40 20 20 20 20 20 72 65 74 75 72 6e 20 7b 0a 20 20       return {.  
32c50 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
32c60 20 74 79 70 65 3a 20 74 6f 6b 65 6e 5f 31 2e 54   type: token_1.T
32c70 6f 6b 65 6e 2e 45 4f 46 2c 0a 20 20 09 20 20 20  oken.EOF,.  .   
32c80 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 69 6e               lin
32c90 65 4e 75 6d 62 65 72 3a 20 74 68 69 73 2e 6c 69  eNumber: this.li
32ca0 6e 65 4e 75 6d 62 65 72 2c 0a 20 20 09 20 20 20  neNumber,.  .   
32cb0 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 69 6e               lin
32cc0 65 53 74 61 72 74 3a 20 74 68 69 73 2e 6c 69 6e  eStart: this.lin
32cd0 65 53 74 61 72 74 2c 0a 20 20 09 20 20 20 20 20  eStart,.  .     
32ce0 20 20 20 20 20 20 20 20 20 20 20 73 74 61 72 74             start
32cf0 3a 20 74 68 69 73 2e 69 6e 64 65 78 2c 0a 20 20  : this.index,.  
32d00 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
32d10 20 65 6e 64 3a 20 74 68 69 73 2e 69 6e 64 65 78   end: this.index
32d20 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
32d30 7d 3b 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a  };.  .        }.
32d40 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20 63    .        var c
32d50 70 20 3d 20 74 68 69 73 2e 73 6f 75 72 63 65 2e  p = this.source.
32d60 63 68 61 72 43 6f 64 65 41 74 28 74 68 69 73 2e  charCodeAt(this.
32d70 69 6e 64 65 78 29 3b 0a 20 20 09 20 20 20 20 20  index);.  .     
32d80 20 20 20 69 66 20 28 63 68 61 72 61 63 74 65 72     if (character
32d90 5f 31 2e 43 68 61 72 61 63 74 65 72 2e 69 73 49  _1.Character.isI
32da0 64 65 6e 74 69 66 69 65 72 53 74 61 72 74 28 63  dentifierStart(c
32db0 70 29 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20  p)) {.  .       
32dc0 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73       return this
32dd0 2e 73 63 61 6e 49 64 65 6e 74 69 66 69 65 72 28  .scanIdentifier(
32de0 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a  );.  .        }.
32df0 20 20 09 20 20 20 20 20 20 20 20 2f 2f 20 56 65    .        // Ve
32e00 72 79 20 63 6f 6d 6d 6f 6e 3a 20 28 20 61 6e 64  ry common: ( and
32e10 20 29 20 61 6e 64 20 3b 0a 20 20 09 20 20 20 20   ) and ;.  .    
32e20 20 20 20 20 69 66 20 28 63 70 20 3d 3d 3d 20 30      if (cp === 0
32e30 78 32 38 20 7c 7c 20 63 70 20 3d 3d 3d 20 30 78  x28 || cp === 0x
32e40 32 39 20 7c 7c 20 63 70 20 3d 3d 3d 20 30 78 33  29 || cp === 0x3
32e50 42 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20  B) {.  .        
32e60 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e      return this.
32e70 73 63 61 6e 50 75 6e 63 74 75 61 74 6f 72 28 29  scanPunctuator()
32e80 3b 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a 20  ;.  .        }. 
32e90 20 09 20 20 20 20 20 20 20 20 2f 2f 20 53 74 72   .        // Str
32ea0 69 6e 67 20 6c 69 74 65 72 61 6c 20 73 74 61 72  ing literal star
32eb0 74 73 20 77 69 74 68 20 73 69 6e 67 6c 65 20 71  ts with single q
32ec0 75 6f 74 65 20 28 55 2b 30 30 32 37 29 20 6f 72  uote (U+0027) or
32ed0 20 64 6f 75 62 6c 65 20 71 75 6f 74 65 20 28 55   double quote (U
32ee0 2b 30 30 32 32 29 2e 0a 20 20 09 20 20 20 20 20  +0022)..  .     
32ef0 20 20 20 69 66 20 28 63 70 20 3d 3d 3d 20 30 78     if (cp === 0x
32f00 32 37 20 7c 7c 20 63 70 20 3d 3d 3d 20 30 78 32  27 || cp === 0x2
32f10 32 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20  2) {.  .        
32f20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e      return this.
32f30 73 63 61 6e 53 74 72 69 6e 67 4c 69 74 65 72 61  scanStringLitera
32f40 6c 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  l();.  .        
32f50 7d 0a 20 20 09 20 20 20 20 20 20 20 20 2f 2f 20  }.  .        // 
32f60 44 6f 74 20 28 2e 29 20 55 2b 30 30 32 45 20 63  Dot (.) U+002E c
32f70 61 6e 20 61 6c 73 6f 20 73 74 61 72 74 20 61 20  an also start a 
32f80 66 6c 6f 61 74 69 6e 67 2d 70 6f 69 6e 74 20 6e  floating-point n
32f90 75 6d 62 65 72 2c 20 68 65 6e 63 65 20 74 68 65  umber, hence the
32fa0 20 6e 65 65 64 0a 20 20 09 20 20 20 20 20 20 20   need.  .       
32fb0 20 2f 2f 20 74 6f 20 63 68 65 63 6b 20 74 68 65   // to check the
32fc0 20 6e 65 78 74 20 63 68 61 72 61 63 74 65 72 2e   next character.
32fd0 0a 20 20 09 20 20 20 20 20 20 20 20 69 66 20 28  .  .        if (
32fe0 63 70 20 3d 3d 3d 20 30 78 32 45 29 20 7b 0a 20  cp === 0x2E) {. 
32ff0 20 09 20 20 20 20 20 20 20 20 20 20 20 20 69 66   .            if
33000 20 28 63 68 61 72 61 63 74 65 72 5f 31 2e 43 68   (character_1.Ch
33010 61 72 61 63 74 65 72 2e 69 73 44 65 63 69 6d 61  aracter.isDecima
33020 6c 44 69 67 69 74 28 74 68 69 73 2e 73 6f 75 72  lDigit(this.sour
33030 63 65 2e 63 68 61 72 43 6f 64 65 41 74 28 74 68  ce.charCodeAt(th
33040 69 73 2e 69 6e 64 65 78 20 2b 20 31 29 29 29 20  is.index + 1))) 
33050 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  {.  .           
33060 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73       return this
33070 2e 73 63 61 6e 4e 75 6d 65 72 69 63 4c 69 74 65  .scanNumericLite
33080 72 61 6c 28 29 3b 0a 20 20 09 20 20 20 20 20 20  ral();.  .      
33090 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20        }.  .     
330a0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68         return th
330b0 69 73 2e 73 63 61 6e 50 75 6e 63 74 75 61 74 6f  is.scanPunctuato
330c0 72 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  r();.  .        
330d0 7d 0a 20 20 09 20 20 20 20 20 20 20 20 69 66 20  }.  .        if 
330e0 28 63 68 61 72 61 63 74 65 72 5f 31 2e 43 68 61  (character_1.Cha
330f0 72 61 63 74 65 72 2e 69 73 44 65 63 69 6d 61 6c  racter.isDecimal
33100 44 69 67 69 74 28 63 70 29 29 20 7b 0a 20 20 09  Digit(cp)) {.  .
33110 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
33120 72 6e 20 74 68 69 73 2e 73 63 61 6e 4e 75 6d 65  rn this.scanNume
33130 72 69 63 4c 69 74 65 72 61 6c 28 29 3b 0a 20 20  ricLiteral();.  
33140 09 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20  .        }.  .  
33150 20 20 20 20 20 20 2f 2f 20 54 65 6d 70 6c 61 74        // Templat
33160 65 20 6c 69 74 65 72 61 6c 73 20 73 74 61 72 74  e literals start
33170 20 77 69 74 68 20 60 20 28 55 2b 30 30 36 30 29   with ` (U+0060)
33180 20 66 6f 72 20 74 65 6d 70 6c 61 74 65 20 68 65   for template he
33190 61 64 0a 20 20 09 20 20 20 20 20 20 20 20 2f 2f  ad.  .        //
331a0 20 6f 72 20 7d 20 28 55 2b 30 30 37 44 29 20 66   or } (U+007D) f
331b0 6f 72 20 74 65 6d 70 6c 61 74 65 20 6d 69 64 64  or template midd
331c0 6c 65 20 6f 72 20 74 65 6d 70 6c 61 74 65 20 74  le or template t
331d0 61 69 6c 2e 0a 20 20 09 20 20 20 20 20 20 20 20  ail..  .        
331e0 69 66 20 28 63 70 20 3d 3d 3d 20 30 78 36 30 20  if (cp === 0x60 
331f0 7c 7c 20 28 63 70 20 3d 3d 3d 20 30 78 37 44 20  || (cp === 0x7D 
33200 26 26 20 74 68 69 73 2e 63 75 72 6c 79 53 74 61  && this.curlySta
33210 63 6b 5b 74 68 69 73 2e 63 75 72 6c 79 53 74 61  ck[this.curlySta
33220 63 6b 2e 6c 65 6e 67 74 68 20 2d 20 31 5d 20 3d  ck.length - 1] =
33230 3d 3d 20 27 24 7b 27 29 29 20 7b 0a 20 20 09 20  == '${')) {.  . 
33240 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
33250 6e 20 74 68 69 73 2e 73 63 61 6e 54 65 6d 70 6c  n this.scanTempl
33260 61 74 65 28 29 3b 0a 20 20 09 20 20 20 20 20 20  ate();.  .      
33270 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 2f    }.  .        /
33280 2f 20 50 6f 73 73 69 62 6c 65 20 69 64 65 6e 74  / Possible ident
33290 69 66 69 65 72 20 73 74 61 72 74 20 69 6e 20 61  ifier start in a
332a0 20 73 75 72 72 6f 67 61 74 65 20 70 61 69 72 2e   surrogate pair.
332b0 0a 20 20 09 20 20 20 20 20 20 20 20 69 66 20 28  .  .        if (
332c0 63 70 20 3e 3d 20 30 78 44 38 30 30 20 26 26 20  cp >= 0xD800 && 
332d0 63 70 20 3c 20 30 78 44 46 46 46 29 20 7b 0a 20  cp < 0xDFFF) {. 
332e0 20 09 20 20 20 20 20 20 20 20 20 20 20 20 69 66   .            if
332f0 20 28 63 68 61 72 61 63 74 65 72 5f 31 2e 43 68   (character_1.Ch
33300 61 72 61 63 74 65 72 2e 69 73 49 64 65 6e 74 69  aracter.isIdenti
33310 66 69 65 72 53 74 61 72 74 28 74 68 69 73 2e 63  fierStart(this.c
33320 6f 64 65 50 6f 69 6e 74 41 74 28 74 68 69 73 2e  odePointAt(this.
33330 69 6e 64 65 78 29 29 29 20 7b 0a 20 20 09 20 20  index))) {.  .  
33340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
33350 74 75 72 6e 20 74 68 69 73 2e 73 63 61 6e 49 64  turn this.scanId
33360 65 6e 74 69 66 69 65 72 28 29 3b 0a 20 20 09 20  entifier();.  . 
33370 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09             }.  .
33380 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20          }.  .   
33390 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73       return this
333a0 2e 73 63 61 6e 50 75 6e 63 74 75 61 74 6f 72 28  .scanPunctuator(
333b0 29 3b 0a 20 20 09 20 20 20 20 7d 3b 0a 20 20 09  );.  .    };.  .
333c0 20 20 20 20 0a 20 20 09 20 20 20 20 72 65 74 75      .  .    retu
333d0 72 6e 20 53 63 61 6e 6e 65 72 3b 0a 20 20 09 7d  rn Scanner;.  .}
333e0 28 29 29 3b 0a 20 20 09 65 78 70 6f 72 74 73 2e  ());.  .exports.
333f0 53 63 61 6e 6e 65 72 20 3d 20 53 63 61 6e 6e 65  Scanner = Scanne
33400 72 3b 0a 0a 0a 20 20 2f 2a 2a 2a 2f 20 7d 2c 0a  r;...  /***/ },.
33410 20 20 2f 2a 20 39 20 2a 2f 0a 20 20 2f 2a 2a 2a    /* 9 */.  /***
33420 2f 20 66 75 6e 63 74 69 6f 6e 28 6d 6f 64 75 6c  / function(modul
33430 65 2c 20 65 78 70 6f 72 74 73 29 20 7b 0a 20 20  e, exports) {.  
33440 09 2f 2f 20 53 65 65 20 61 6c 73 6f 20 74 6f 6f  .// See also too
33450 6c 73 2f 67 65 6e 65 72 61 74 65 2d 75 6e 69 63  ls/generate-unic
33460 6f 64 65 2d 72 65 67 65 78 2e 6a 73 2e 0a 20 20  ode-regex.js..  
33470 09 76 61 72 20 52 65 67 65 78 20 3d 20 7b 0a 20  .var Regex = {. 
33480 20 09 20 20 20 20 2f 2f 20 55 6e 69 63 6f 64 65   .    // Unicode
33490 20 76 38 2e 30 2e 30 20 4e 6f 6e 41 73 63 69 69   v8.0.0 NonAscii
334a0 49 64 65 6e 74 69 66 69 65 72 53 74 61 72 74 3a  IdentifierStart:
334b0 0a 20 20 09 20 20 20 20 4e 6f 6e 41 73 63 69 69  .  .    NonAscii
334c0 49 64 65 6e 74 69 66 69 65 72 53 74 61 72 74 3a  IdentifierStart:
334d0 20 2f 5b 5c 78 41 41 5c 78 42 35 5c 78 42 41 5c   /[\xAA\xB5\xBA\
334e0 78 43 30 2d 5c 78 44 36 5c 78 44 38 2d 5c 78 46  xC0-\xD6\xD8-\xF
334f0 36 5c 78 46 38 2d 5c 75 30 32 43 31 5c 75 30 32  6\xF8-\u02C1\u02
33500 43 36 2d 5c 75 30 32 44 31 5c 75 30 32 45 30 2d  C6-\u02D1\u02E0-
33510 5c 75 30 32 45 34 5c 75 30 32 45 43 5c 75 30 32  \u02E4\u02EC\u02
33520 45 45 5c 75 30 33 37 30 2d 5c 75 30 33 37 34 5c  EE\u0370-\u0374\
33530 75 30 33 37 36 5c 75 30 33 37 37 5c 75 30 33 37  u0376\u0377\u037
33540 41 2d 5c 75 30 33 37 44 5c 75 30 33 37 46 5c 75  A-\u037D\u037F\u
33550 30 33 38 36 5c 75 30 33 38 38 2d 5c 75 30 33 38  0386\u0388-\u038
33560 41 5c 75 30 33 38 43 5c 75 30 33 38 45 2d 5c 75  A\u038C\u038E-\u
33570 30 33 41 31 5c 75 30 33 41 33 2d 5c 75 30 33 46  03A1\u03A3-\u03F
33580 35 5c 75 30 33 46 37 2d 5c 75 30 34 38 31 5c 75  5\u03F7-\u0481\u
33590 30 34 38 41 2d 5c 75 30 35 32 46 5c 75 30 35 33  048A-\u052F\u053
335a0 31 2d 5c 75 30 35 35 36 5c 75 30 35 35 39 5c 75  1-\u0556\u0559\u
335b0 30 35 36 31 2d 5c 75 30 35 38 37 5c 75 30 35 44  0561-\u0587\u05D
335c0 30 2d 5c 75 30 35 45 41 5c 75 30 35 46 30 2d 5c  0-\u05EA\u05F0-\
335d0 75 30 35 46 32 5c 75 30 36 32 30 2d 5c 75 30 36  u05F2\u0620-\u06
335e0 34 41 5c 75 30 36 36 45 5c 75 30 36 36 46 5c 75  4A\u066E\u066F\u
335f0 30 36 37 31 2d 5c 75 30 36 44 33 5c 75 30 36 44  0671-\u06D3\u06D
33600 35 5c 75 30 36 45 35 5c 75 30 36 45 36 5c 75 30  5\u06E5\u06E6\u0
33610 36 45 45 5c 75 30 36 45 46 5c 75 30 36 46 41 2d  6EE\u06EF\u06FA-
33620 5c 75 30 36 46 43 5c 75 30 36 46 46 5c 75 30 37  \u06FC\u06FF\u07
33630 31 30 5c 75 30 37 31 32 2d 5c 75 30 37 32 46 5c  10\u0712-\u072F\
33640 75 30 37 34 44 2d 5c 75 30 37 41 35 5c 75 30 37  u074D-\u07A5\u07
33650 42 31 5c 75 30 37 43 41 2d 5c 75 30 37 45 41 5c  B1\u07CA-\u07EA\
33660 75 30 37 46 34 5c 75 30 37 46 35 5c 75 30 37 46  u07F4\u07F5\u07F
33670 41 5c 75 30 38 30 30 2d 5c 75 30 38 31 35 5c 75  A\u0800-\u0815\u
33680 30 38 31 41 5c 75 30 38 32 34 5c 75 30 38 32 38  081A\u0824\u0828
33690 5c 75 30 38 34 30 2d 5c 75 30 38 35 38 5c 75 30  \u0840-\u0858\u0
336a0 38 41 30 2d 5c 75 30 38 42 34 5c 75 30 39 30 34  8A0-\u08B4\u0904
336b0 2d 5c 75 30 39 33 39 5c 75 30 39 33 44 5c 75 30  -\u0939\u093D\u0
336c0 39 35 30 5c 75 30 39 35 38 2d 5c 75 30 39 36 31  950\u0958-\u0961
336d0 5c 75 30 39 37 31 2d 5c 75 30 39 38 30 5c 75 30  \u0971-\u0980\u0
336e0 39 38 35 2d 5c 75 30 39 38 43 5c 75 30 39 38 46  985-\u098C\u098F
336f0 5c 75 30 39 39 30 5c 75 30 39 39 33 2d 5c 75 30  \u0990\u0993-\u0
33700 39 41 38 5c 75 30 39 41 41 2d 5c 75 30 39 42 30  9A8\u09AA-\u09B0
33710 5c 75 30 39 42 32 5c 75 30 39 42 36 2d 5c 75 30  \u09B2\u09B6-\u0
33720 39 42 39 5c 75 30 39 42 44 5c 75 30 39 43 45 5c  9B9\u09BD\u09CE\
33730 75 30 39 44 43 5c 75 30 39 44 44 5c 75 30 39 44  u09DC\u09DD\u09D
33740 46 2d 5c 75 30 39 45 31 5c 75 30 39 46 30 5c 75  F-\u09E1\u09F0\u
33750 30 39 46 31 5c 75 30 41 30 35 2d 5c 75 30 41 30  09F1\u0A05-\u0A0
33760 41 5c 75 30 41 30 46 5c 75 30 41 31 30 5c 75 30  A\u0A0F\u0A10\u0
33770 41 31 33 2d 5c 75 30 41 32 38 5c 75 30 41 32 41  A13-\u0A28\u0A2A
33780 2d 5c 75 30 41 33 30 5c 75 30 41 33 32 5c 75 30  -\u0A30\u0A32\u0
33790 41 33 33 5c 75 30 41 33 35 5c 75 30 41 33 36 5c  A33\u0A35\u0A36\
337a0 75 30 41 33 38 5c 75 30 41 33 39 5c 75 30 41 35  u0A38\u0A39\u0A5
337b0 39 2d 5c 75 30 41 35 43 5c 75 30 41 35 45 5c 75  9-\u0A5C\u0A5E\u
337c0 30 41 37 32 2d 5c 75 30 41 37 34 5c 75 30 41 38  0A72-\u0A74\u0A8
337d0 35 2d 5c 75 30 41 38 44 5c 75 30 41 38 46 2d 5c  5-\u0A8D\u0A8F-\
337e0 75 30 41 39 31 5c 75 30 41 39 33 2d 5c 75 30 41  u0A91\u0A93-\u0A
337f0 41 38 5c 75 30 41 41 41 2d 5c 75 30 41 42 30 5c  A8\u0AAA-\u0AB0\
33800 75 30 41 42 32 5c 75 30 41 42 33 5c 75 30 41 42  u0AB2\u0AB3\u0AB
33810 35 2d 5c 75 30 41 42 39 5c 75 30 41 42 44 5c 75  5-\u0AB9\u0ABD\u
33820 30 41 44 30 5c 75 30 41 45 30 5c 75 30 41 45 31  0AD0\u0AE0\u0AE1
33830 5c 75 30 41 46 39 5c 75 30 42 30 35 2d 5c 75 30  \u0AF9\u0B05-\u0
33840 42 30 43 5c 75 30 42 30 46 5c 75 30 42 31 30 5c  B0C\u0B0F\u0B10\
33850 75 30 42 31 33 2d 5c 75 30 42 32 38 5c 75 30 42  u0B13-\u0B28\u0B
33860 32 41 2d 5c 75 30 42 33 30 5c 75 30 42 33 32 5c  2A-\u0B30\u0B32\
33870 75 30 42 33 33 5c 75 30 42 33 35 2d 5c 75 30 42  u0B33\u0B35-\u0B
33880 33 39 5c 75 30 42 33 44 5c 75 30 42 35 43 5c 75  39\u0B3D\u0B5C\u
33890 30 42 35 44 5c 75 30 42 35 46 2d 5c 75 30 42 36  0B5D\u0B5F-\u0B6
338a0 31 5c 75 30 42 37 31 5c 75 30 42 38 33 5c 75 30  1\u0B71\u0B83\u0
338b0 42 38 35 2d 5c 75 30 42 38 41 5c 75 30 42 38 45  B85-\u0B8A\u0B8E
338c0 2d 5c 75 30 42 39 30 5c 75 30 42 39 32 2d 5c 75  -\u0B90\u0B92-\u
338d0 30 42 39 35 5c 75 30 42 39 39 5c 75 30 42 39 41  0B95\u0B99\u0B9A
338e0 5c 75 30 42 39 43 5c 75 30 42 39 45 5c 75 30 42  \u0B9C\u0B9E\u0B
338f0 39 46 5c 75 30 42 41 33 5c 75 30 42 41 34 5c 75  9F\u0BA3\u0BA4\u
33900 30 42 41 38 2d 5c 75 30 42 41 41 5c 75 30 42 41  0BA8-\u0BAA\u0BA
33910 45 2d 5c 75 30 42 42 39 5c 75 30 42 44 30 5c 75  E-\u0BB9\u0BD0\u
33920 30 43 30 35 2d 5c 75 30 43 30 43 5c 75 30 43 30  0C05-\u0C0C\u0C0
33930 45 2d 5c 75 30 43 31 30 5c 75 30 43 31 32 2d 5c  E-\u0C10\u0C12-\
33940 75 30 43 32 38 5c 75 30 43 32 41 2d 5c 75 30 43  u0C28\u0C2A-\u0C
33950 33 39 5c 75 30 43 33 44 5c 75 30 43 35 38 2d 5c  39\u0C3D\u0C58-\
33960 75 30 43 35 41 5c 75 30 43 36 30 5c 75 30 43 36  u0C5A\u0C60\u0C6
33970 31 5c 75 30 43 38 35 2d 5c 75 30 43 38 43 5c 75  1\u0C85-\u0C8C\u
33980 30 43 38 45 2d 5c 75 30 43 39 30 5c 75 30 43 39  0C8E-\u0C90\u0C9
33990 32 2d 5c 75 30 43 41 38 5c 75 30 43 41 41 2d 5c  2-\u0CA8\u0CAA-\
339a0 75 30 43 42 33 5c 75 30 43 42 35 2d 5c 75 30 43  u0CB3\u0CB5-\u0C
339b0 42 39 5c 75 30 43 42 44 5c 75 30 43 44 45 5c 75  B9\u0CBD\u0CDE\u
339c0 30 43 45 30 5c 75 30 43 45 31 5c 75 30 43 46 31  0CE0\u0CE1\u0CF1
339d0 5c 75 30 43 46 32 5c 75 30 44 30 35 2d 5c 75 30  \u0CF2\u0D05-\u0
339e0 44 30 43 5c 75 30 44 30 45 2d 5c 75 30 44 31 30  D0C\u0D0E-\u0D10
339f0 5c 75 30 44 31 32 2d 5c 75 30 44 33 41 5c 75 30  \u0D12-\u0D3A\u0
33a00 44 33 44 5c 75 30 44 34 45 5c 75 30 44 35 46 2d  D3D\u0D4E\u0D5F-
33a10 5c 75 30 44 36 31 5c 75 30 44 37 41 2d 5c 75 30  \u0D61\u0D7A-\u0
33a20 44 37 46 5c 75 30 44 38 35 2d 5c 75 30 44 39 36  D7F\u0D85-\u0D96
33a30 5c 75 30 44 39 41 2d 5c 75 30 44 42 31 5c 75 30  \u0D9A-\u0DB1\u0
33a40 44 42 33 2d 5c 75 30 44 42 42 5c 75 30 44 42 44  DB3-\u0DBB\u0DBD
33a50 5c 75 30 44 43 30 2d 5c 75 30 44 43 36 5c 75 30  \u0DC0-\u0DC6\u0
33a60 45 30 31 2d 5c 75 30 45 33 30 5c 75 30 45 33 32  E01-\u0E30\u0E32
33a70 5c 75 30 45 33 33 5c 75 30 45 34 30 2d 5c 75 30  \u0E33\u0E40-\u0
33a80 45 34 36 5c 75 30 45 38 31 5c 75 30 45 38 32 5c  E46\u0E81\u0E82\
33a90 75 30 45 38 34 5c 75 30 45 38 37 5c 75 30 45 38  u0E84\u0E87\u0E8
33aa0 38 5c 75 30 45 38 41 5c 75 30 45 38 44 5c 75 30  8\u0E8A\u0E8D\u0
33ab0 45 39 34 2d 5c 75 30 45 39 37 5c 75 30 45 39 39  E94-\u0E97\u0E99
33ac0 2d 5c 75 30 45 39 46 5c 75 30 45 41 31 2d 5c 75  -\u0E9F\u0EA1-\u
33ad0 30 45 41 33 5c 75 30 45 41 35 5c 75 30 45 41 37  0EA3\u0EA5\u0EA7
33ae0 5c 75 30 45 41 41 5c 75 30 45 41 42 5c 75 30 45  \u0EAA\u0EAB\u0E
33af0 41 44 2d 5c 75 30 45 42 30 5c 75 30 45 42 32 5c  AD-\u0EB0\u0EB2\
33b00 75 30 45 42 33 5c 75 30 45 42 44 5c 75 30 45 43  u0EB3\u0EBD\u0EC
33b10 30 2d 5c 75 30 45 43 34 5c 75 30 45 43 36 5c 75  0-\u0EC4\u0EC6\u
33b20 30 45 44 43 2d 5c 75 30 45 44 46 5c 75 30 46 30  0EDC-\u0EDF\u0F0
33b30 30 5c 75 30 46 34 30 2d 5c 75 30 46 34 37 5c 75  0\u0F40-\u0F47\u
33b40 30 46 34 39 2d 5c 75 30 46 36 43 5c 75 30 46 38  0F49-\u0F6C\u0F8
33b50 38 2d 5c 75 30 46 38 43 5c 75 31 30 30 30 2d 5c  8-\u0F8C\u1000-\
33b60 75 31 30 32 41 5c 75 31 30 33 46 5c 75 31 30 35  u102A\u103F\u105
33b70 30 2d 5c 75 31 30 35 35 5c 75 31 30 35 41 2d 5c  0-\u1055\u105A-\
33b80 75 31 30 35 44 5c 75 31 30 36 31 5c 75 31 30 36  u105D\u1061\u106
33b90 35 5c 75 31 30 36 36 5c 75 31 30 36 45 2d 5c 75  5\u1066\u106E-\u
33ba0 31 30 37 30 5c 75 31 30 37 35 2d 5c 75 31 30 38  1070\u1075-\u108
33bb0 31 5c 75 31 30 38 45 5c 75 31 30 41 30 2d 5c 75  1\u108E\u10A0-\u
33bc0 31 30 43 35 5c 75 31 30 43 37 5c 75 31 30 43 44  10C5\u10C7\u10CD
33bd0 5c 75 31 30 44 30 2d 5c 75 31 30 46 41 5c 75 31  \u10D0-\u10FA\u1
33be0 30 46 43 2d 5c 75 31 32 34 38 5c 75 31 32 34 41  0FC-\u1248\u124A
33bf0 2d 5c 75 31 32 34 44 5c 75 31 32 35 30 2d 5c 75  -\u124D\u1250-\u
33c00 31 32 35 36 5c 75 31 32 35 38 5c 75 31 32 35 41  1256\u1258\u125A
33c10 2d 5c 75 31 32 35 44 5c 75 31 32 36 30 2d 5c 75  -\u125D\u1260-\u
33c20 31 32 38 38 5c 75 31 32 38 41 2d 5c 75 31 32 38  1288\u128A-\u128
33c30 44 5c 75 31 32 39 30 2d 5c 75 31 32 42 30 5c 75  D\u1290-\u12B0\u
33c40 31 32 42 32 2d 5c 75 31 32 42 35 5c 75 31 32 42  12B2-\u12B5\u12B
33c50 38 2d 5c 75 31 32 42 45 5c 75 31 32 43 30 5c 75  8-\u12BE\u12C0\u
33c60 31 32 43 32 2d 5c 75 31 32 43 35 5c 75 31 32 43  12C2-\u12C5\u12C
33c70 38 2d 5c 75 31 32 44 36 5c 75 31 32 44 38 2d 5c  8-\u12D6\u12D8-\
33c80 75 31 33 31 30 5c 75 31 33 31 32 2d 5c 75 31 33  u1310\u1312-\u13
33c90 31 35 5c 75 31 33 31 38 2d 5c 75 31 33 35 41 5c  15\u1318-\u135A\
33ca0 75 31 33 38 30 2d 5c 75 31 33 38 46 5c 75 31 33  u1380-\u138F\u13
33cb0 41 30 2d 5c 75 31 33 46 35 5c 75 31 33 46 38 2d  A0-\u13F5\u13F8-
33cc0 5c 75 31 33 46 44 5c 75 31 34 30 31 2d 5c 75 31  \u13FD\u1401-\u1
33cd0 36 36 43 5c 75 31 36 36 46 2d 5c 75 31 36 37 46  66C\u166F-\u167F
33ce0 5c 75 31 36 38 31 2d 5c 75 31 36 39 41 5c 75 31  \u1681-\u169A\u1
33cf0 36 41 30 2d 5c 75 31 36 45 41 5c 75 31 36 45 45  6A0-\u16EA\u16EE
33d00 2d 5c 75 31 36 46 38 5c 75 31 37 30 30 2d 5c 75  -\u16F8\u1700-\u
33d10 31 37 30 43 5c 75 31 37 30 45 2d 5c 75 31 37 31  170C\u170E-\u171
33d20 31 5c 75 31 37 32 30 2d 5c 75 31 37 33 31 5c 75  1\u1720-\u1731\u
33d30 31 37 34 30 2d 5c 75 31 37 35 31 5c 75 31 37 36  1740-\u1751\u176
33d40 30 2d 5c 75 31 37 36 43 5c 75 31 37 36 45 2d 5c  0-\u176C\u176E-\
33d50 75 31 37 37 30 5c 75 31 37 38 30 2d 5c 75 31 37  u1770\u1780-\u17
33d60 42 33 5c 75 31 37 44 37 5c 75 31 37 44 43 5c 75  B3\u17D7\u17DC\u
33d70 31 38 32 30 2d 5c 75 31 38 37 37 5c 75 31 38 38  1820-\u1877\u188
33d80 30 2d 5c 75 31 38 41 38 5c 75 31 38 41 41 5c 75  0-\u18A8\u18AA\u
33d90 31 38 42 30 2d 5c 75 31 38 46 35 5c 75 31 39 30  18B0-\u18F5\u190
33da0 30 2d 5c 75 31 39 31 45 5c 75 31 39 35 30 2d 5c  0-\u191E\u1950-\
33db0 75 31 39 36 44 5c 75 31 39 37 30 2d 5c 75 31 39  u196D\u1970-\u19
33dc0 37 34 5c 75 31 39 38 30 2d 5c 75 31 39 41 42 5c  74\u1980-\u19AB\
33dd0 75 31 39 42 30 2d 5c 75 31 39 43 39 5c 75 31 41  u19B0-\u19C9\u1A
33de0 30 30 2d 5c 75 31 41 31 36 5c 75 31 41 32 30 2d  00-\u1A16\u1A20-
33df0 5c 75 31 41 35 34 5c 75 31 41 41 37 5c 75 31 42  \u1A54\u1AA7\u1B
33e00 30 35 2d 5c 75 31 42 33 33 5c 75 31 42 34 35 2d  05-\u1B33\u1B45-
33e10 5c 75 31 42 34 42 5c 75 31 42 38 33 2d 5c 75 31  \u1B4B\u1B83-\u1
33e20 42 41 30 5c 75 31 42 41 45 5c 75 31 42 41 46 5c  BA0\u1BAE\u1BAF\
33e30 75 31 42 42 41 2d 5c 75 31 42 45 35 5c 75 31 43  u1BBA-\u1BE5\u1C
33e40 30 30 2d 5c 75 31 43 32 33 5c 75 31 43 34 44 2d  00-\u1C23\u1C4D-
33e50 5c 75 31 43 34 46 5c 75 31 43 35 41 2d 5c 75 31  \u1C4F\u1C5A-\u1
33e60 43 37 44 5c 75 31 43 45 39 2d 5c 75 31 43 45 43  C7D\u1CE9-\u1CEC
33e70 5c 75 31 43 45 45 2d 5c 75 31 43 46 31 5c 75 31  \u1CEE-\u1CF1\u1
33e80 43 46 35 5c 75 31 43 46 36 5c 75 31 44 30 30 2d  CF5\u1CF6\u1D00-
33e90 5c 75 31 44 42 46 5c 75 31 45 30 30 2d 5c 75 31  \u1DBF\u1E00-\u1
33ea0 46 31 35 5c 75 31 46 31 38 2d 5c 75 31 46 31 44  F15\u1F18-\u1F1D
33eb0 5c 75 31 46 32 30 2d 5c 75 31 46 34 35 5c 75 31  \u1F20-\u1F45\u1
33ec0 46 34 38 2d 5c 75 31 46 34 44 5c 75 31 46 35 30  F48-\u1F4D\u1F50
33ed0 2d 5c 75 31 46 35 37 5c 75 31 46 35 39 5c 75 31  -\u1F57\u1F59\u1
33ee0 46 35 42 5c 75 31 46 35 44 5c 75 31 46 35 46 2d  F5B\u1F5D\u1F5F-
33ef0 5c 75 31 46 37 44 5c 75 31 46 38 30 2d 5c 75 31  \u1F7D\u1F80-\u1
33f00 46 42 34 5c 75 31 46 42 36 2d 5c 75 31 46 42 43  FB4\u1FB6-\u1FBC
33f10 5c 75 31 46 42 45 5c 75 31 46 43 32 2d 5c 75 31  \u1FBE\u1FC2-\u1
33f20 46 43 34 5c 75 31 46 43 36 2d 5c 75 31 46 43 43  FC4\u1FC6-\u1FCC
33f30 5c 75 31 46 44 30 2d 5c 75 31 46 44 33 5c 75 31  \u1FD0-\u1FD3\u1
33f40 46 44 36 2d 5c 75 31 46 44 42 5c 75 31 46 45 30  FD6-\u1FDB\u1FE0
33f50 2d 5c 75 31 46 45 43 5c 75 31 46 46 32 2d 5c 75  -\u1FEC\u1FF2-\u
33f60 31 46 46 34 5c 75 31 46 46 36 2d 5c 75 31 46 46  1FF4\u1FF6-\u1FF
33f70 43 5c 75 32 30 37 31 5c 75 32 30 37 46 5c 75 32  C\u2071\u207F\u2
33f80 30 39 30 2d 5c 75 32 30 39 43 5c 75 32 31 30 32  090-\u209C\u2102
33f90 5c 75 32 31 30 37 5c 75 32 31 30 41 2d 5c 75 32  \u2107\u210A-\u2
33fa0 31 31 33 5c 75 32 31 31 35 5c 75 32 31 31 38 2d  113\u2115\u2118-
33fb0 5c 75 32 31 31 44 5c 75 32 31 32 34 5c 75 32 31  \u211D\u2124\u21
33fc0 32 36 5c 75 32 31 32 38 5c 75 32 31 32 41 2d 5c  26\u2128\u212A-\
33fd0 75 32 31 33 39 5c 75 32 31 33 43 2d 5c 75 32 31  u2139\u213C-\u21
33fe0 33 46 5c 75 32 31 34 35 2d 5c 75 32 31 34 39 5c  3F\u2145-\u2149\
33ff0 75 32 31 34 45 5c 75 32 31 36 30 2d 5c 75 32 31  u214E\u2160-\u21
34000 38 38 5c 75 32 43 30 30 2d 5c 75 32 43 32 45 5c  88\u2C00-\u2C2E\
34010 75 32 43 33 30 2d 5c 75 32 43 35 45 5c 75 32 43  u2C30-\u2C5E\u2C
34020 36 30 2d 5c 75 32 43 45 34 5c 75 32 43 45 42 2d  60-\u2CE4\u2CEB-
34030 5c 75 32 43 45 45 5c 75 32 43 46 32 5c 75 32 43  \u2CEE\u2CF2\u2C
34040 46 33 5c 75 32 44 30 30 2d 5c 75 32 44 32 35 5c  F3\u2D00-\u2D25\
34050 75 32 44 32 37 5c 75 32 44 32 44 5c 75 32 44 33  u2D27\u2D2D\u2D3
34060 30 2d 5c 75 32 44 36 37 5c 75 32 44 36 46 5c 75  0-\u2D67\u2D6F\u
34070 32 44 38 30 2d 5c 75 32 44 39 36 5c 75 32 44 41  2D80-\u2D96\u2DA
34080 30 2d 5c 75 32 44 41 36 5c 75 32 44 41 38 2d 5c  0-\u2DA6\u2DA8-\
34090 75 32 44 41 45 5c 75 32 44 42 30 2d 5c 75 32 44  u2DAE\u2DB0-\u2D
340a0 42 36 5c 75 32 44 42 38 2d 5c 75 32 44 42 45 5c  B6\u2DB8-\u2DBE\
340b0 75 32 44 43 30 2d 5c 75 32 44 43 36 5c 75 32 44  u2DC0-\u2DC6\u2D
340c0 43 38 2d 5c 75 32 44 43 45 5c 75 32 44 44 30 2d  C8-\u2DCE\u2DD0-
340d0 5c 75 32 44 44 36 5c 75 32 44 44 38 2d 5c 75 32  \u2DD6\u2DD8-\u2
340e0 44 44 45 5c 75 33 30 30 35 2d 5c 75 33 30 30 37  DDE\u3005-\u3007
340f0 5c 75 33 30 32 31 2d 5c 75 33 30 32 39 5c 75 33  \u3021-\u3029\u3
34100 30 33 31 2d 5c 75 33 30 33 35 5c 75 33 30 33 38  031-\u3035\u3038
34110 2d 5c 75 33 30 33 43 5c 75 33 30 34 31 2d 5c 75  -\u303C\u3041-\u
34120 33 30 39 36 5c 75 33 30 39 42 2d 5c 75 33 30 39  3096\u309B-\u309
34130 46 5c 75 33 30 41 31 2d 5c 75 33 30 46 41 5c 75  F\u30A1-\u30FA\u
34140 33 30 46 43 2d 5c 75 33 30 46 46 5c 75 33 31 30  30FC-\u30FF\u310
34150 35 2d 5c 75 33 31 32 44 5c 75 33 31 33 31 2d 5c  5-\u312D\u3131-\
34160 75 33 31 38 45 5c 75 33 31 41 30 2d 5c 75 33 31  u318E\u31A0-\u31
34170 42 41 5c 75 33 31 46 30 2d 5c 75 33 31 46 46 5c  BA\u31F0-\u31FF\
34180 75 33 34 30 30 2d 5c 75 34 44 42 35 5c 75 34 45  u3400-\u4DB5\u4E
34190 30 30 2d 5c 75 39 46 44 35 5c 75 41 30 30 30 2d  00-\u9FD5\uA000-
341a0 5c 75 41 34 38 43 5c 75 41 34 44 30 2d 5c 75 41  \uA48C\uA4D0-\uA
341b0 34 46 44 5c 75 41 35 30 30 2d 5c 75 41 36 30 43  4FD\uA500-\uA60C
341c0 5c 75 41 36 31 30 2d 5c 75 41 36 31 46 5c 75 41  \uA610-\uA61F\uA
341d0 36 32 41 5c 75 41 36 32 42 5c 75 41 36 34 30 2d  62A\uA62B\uA640-
341e0 5c 75 41 36 36 45 5c 75 41 36 37 46 2d 5c 75 41  \uA66E\uA67F-\uA
341f0 36 39 44 5c 75 41 36 41 30 2d 5c 75 41 36 45 46  69D\uA6A0-\uA6EF
34200 5c 75 41 37 31 37 2d 5c 75 41 37 31 46 5c 75 41  \uA717-\uA71F\uA
34210 37 32 32 2d 5c 75 41 37 38 38 5c 75 41 37 38 42  722-\uA788\uA78B
34220 2d 5c 75 41 37 41 44 5c 75 41 37 42 30 2d 5c 75  -\uA7AD\uA7B0-\u
34230 41 37 42 37 5c 75 41 37 46 37 2d 5c 75 41 38 30  A7B7\uA7F7-\uA80
34240 31 5c 75 41 38 30 33 2d 5c 75 41 38 30 35 5c 75  1\uA803-\uA805\u
34250 41 38 30 37 2d 5c 75 41 38 30 41 5c 75 41 38 30  A807-\uA80A\uA80
34260 43 2d 5c 75 41 38 32 32 5c 75 41 38 34 30 2d 5c  C-\uA822\uA840-\
34270 75 41 38 37 33 5c 75 41 38 38 32 2d 5c 75 41 38  uA873\uA882-\uA8
34280 42 33 5c 75 41 38 46 32 2d 5c 75 41 38 46 37 5c  B3\uA8F2-\uA8F7\
34290 75 41 38 46 42 5c 75 41 38 46 44 5c 75 41 39 30  uA8FB\uA8FD\uA90
342a0 41 2d 5c 75 41 39 32 35 5c 75 41 39 33 30 2d 5c  A-\uA925\uA930-\
342b0 75 41 39 34 36 5c 75 41 39 36 30 2d 5c 75 41 39  uA946\uA960-\uA9
342c0 37 43 5c 75 41 39 38 34 2d 5c 75 41 39 42 32 5c  7C\uA984-\uA9B2\
342d0 75 41 39 43 46 5c 75 41 39 45 30 2d 5c 75 41 39  uA9CF\uA9E0-\uA9
342e0 45 34 5c 75 41 39 45 36 2d 5c 75 41 39 45 46 5c  E4\uA9E6-\uA9EF\
342f0 75 41 39 46 41 2d 5c 75 41 39 46 45 5c 75 41 41  uA9FA-\uA9FE\uAA
34300 30 30 2d 5c 75 41 41 32 38 5c 75 41 41 34 30 2d  00-\uAA28\uAA40-
34310 5c 75 41 41 34 32 5c 75 41 41 34 34 2d 5c 75 41  \uAA42\uAA44-\uA
34320 41 34 42 5c 75 41 41 36 30 2d 5c 75 41 41 37 36  A4B\uAA60-\uAA76
34330 5c 75 41 41 37 41 5c 75 41 41 37 45 2d 5c 75 41  \uAA7A\uAA7E-\uA
34340 41 41 46 5c 75 41 41 42 31 5c 75 41 41 42 35 5c  AAF\uAAB1\uAAB5\
34350 75 41 41 42 36 5c 75 41 41 42 39 2d 5c 75 41 41  uAAB6\uAAB9-\uAA
34360 42 44 5c 75 41 41 43 30 5c 75 41 41 43 32 5c 75  BD\uAAC0\uAAC2\u
34370 41 41 44 42 2d 5c 75 41 41 44 44 5c 75 41 41 45  AADB-\uAADD\uAAE
34380 30 2d 5c 75 41 41 45 41 5c 75 41 41 46 32 2d 5c  0-\uAAEA\uAAF2-\
34390 75 41 41 46 34 5c 75 41 42 30 31 2d 5c 75 41 42  uAAF4\uAB01-\uAB
343a0 30 36 5c 75 41 42 30 39 2d 5c 75 41 42 30 45 5c  06\uAB09-\uAB0E\
343b0 75 41 42 31 31 2d 5c 75 41 42 31 36 5c 75 41 42  uAB11-\uAB16\uAB
343c0 32 30 2d 5c 75 41 42 32 36 5c 75 41 42 32 38 2d  20-\uAB26\uAB28-
343d0 5c 75 41 42 32 45 5c 75 41 42 33 30 2d 5c 75 41  \uAB2E\uAB30-\uA
343e0 42 35 41 5c 75 41 42 35 43 2d 5c 75 41 42 36 35  B5A\uAB5C-\uAB65
343f0 5c 75 41 42 37 30 2d 5c 75 41 42 45 32 5c 75 41  \uAB70-\uABE2\uA
34400 43 30 30 2d 5c 75 44 37 41 33 5c 75 44 37 42 30  C00-\uD7A3\uD7B0
34410 2d 5c 75 44 37 43 36 5c 75 44 37 43 42 2d 5c 75  -\uD7C6\uD7CB-\u
34420 44 37 46 42 5c 75 46 39 30 30 2d 5c 75 46 41 36  D7FB\uF900-\uFA6
34430 44 5c 75 46 41 37 30 2d 5c 75 46 41 44 39 5c 75  D\uFA70-\uFAD9\u
34440 46 42 30 30 2d 5c 75 46 42 30 36 5c 75 46 42 31  FB00-\uFB06\uFB1
34450 33 2d 5c 75 46 42 31 37 5c 75 46 42 31 44 5c 75  3-\uFB17\uFB1D\u
34460 46 42 31 46 2d 5c 75 46 42 32 38 5c 75 46 42 32  FB1F-\uFB28\uFB2
34470 41 2d 5c 75 46 42 33 36 5c 75 46 42 33 38 2d 5c  A-\uFB36\uFB38-\
34480 75 46 42 33 43 5c 75 46 42 33 45 5c 75 46 42 34  uFB3C\uFB3E\uFB4
34490 30 5c 75 46 42 34 31 5c 75 46 42 34 33 5c 75 46  0\uFB41\uFB43\uF
344a0 42 34 34 5c 75 46 42 34 36 2d 5c 75 46 42 42 31  B44\uFB46-\uFBB1
344b0 5c 75 46 42 44 33 2d 5c 75 46 44 33 44 5c 75 46  \uFBD3-\uFD3D\uF
344c0 44 35 30 2d 5c 75 46 44 38 46 5c 75 46 44 39 32  D50-\uFD8F\uFD92
344d0 2d 5c 75 46 44 43 37 5c 75 46 44 46 30 2d 5c 75  -\uFDC7\uFDF0-\u
344e0 46 44 46 42 5c 75 46 45 37 30 2d 5c 75 46 45 37  FDFB\uFE70-\uFE7
344f0 34 5c 75 46 45 37 36 2d 5c 75 46 45 46 43 5c 75  4\uFE76-\uFEFC\u
34500 46 46 32 31 2d 5c 75 46 46 33 41 5c 75 46 46 34  FF21-\uFF3A\uFF4
34510 31 2d 5c 75 46 46 35 41 5c 75 46 46 36 36 2d 5c  1-\uFF5A\uFF66-\
34520 75 46 46 42 45 5c 75 46 46 43 32 2d 5c 75 46 46  uFFBE\uFFC2-\uFF
34530 43 37 5c 75 46 46 43 41 2d 5c 75 46 46 43 46 5c  C7\uFFCA-\uFFCF\
34540 75 46 46 44 32 2d 5c 75 46 46 44 37 5c 75 46 46  uFFD2-\uFFD7\uFF
34550 44 41 2d 5c 75 46 46 44 43 5d 7c 5c 75 44 38 30  DA-\uFFDC]|\uD80
34560 30 5b 5c 75 44 43 30 30 2d 5c 75 44 43 30 42 5c  0[\uDC00-\uDC0B\
34570 75 44 43 30 44 2d 5c 75 44 43 32 36 5c 75 44 43  uDC0D-\uDC26\uDC
34580 32 38 2d 5c 75 44 43 33 41 5c 75 44 43 33 43 5c  28-\uDC3A\uDC3C\
34590 75 44 43 33 44 5c 75 44 43 33 46 2d 5c 75 44 43  uDC3D\uDC3F-\uDC
345a0 34 44 5c 75 44 43 35 30 2d 5c 75 44 43 35 44 5c  4D\uDC50-\uDC5D\
345b0 75 44 43 38 30 2d 5c 75 44 43 46 41 5c 75 44 44  uDC80-\uDCFA\uDD
345c0 34 30 2d 5c 75 44 44 37 34 5c 75 44 45 38 30 2d  40-\uDD74\uDE80-
345d0 5c 75 44 45 39 43 5c 75 44 45 41 30 2d 5c 75 44  \uDE9C\uDEA0-\uD
345e0 45 44 30 5c 75 44 46 30 30 2d 5c 75 44 46 31 46  ED0\uDF00-\uDF1F
345f0 5c 75 44 46 33 30 2d 5c 75 44 46 34 41 5c 75 44  \uDF30-\uDF4A\uD
34600 46 35 30 2d 5c 75 44 46 37 35 5c 75 44 46 38 30  F50-\uDF75\uDF80
34610 2d 5c 75 44 46 39 44 5c 75 44 46 41 30 2d 5c 75  -\uDF9D\uDFA0-\u
34620 44 46 43 33 5c 75 44 46 43 38 2d 5c 75 44 46 43  DFC3\uDFC8-\uDFC
34630 46 5c 75 44 46 44 31 2d 5c 75 44 46 44 35 5d 7c  F\uDFD1-\uDFD5]|
34640 5c 75 44 38 30 31 5b 5c 75 44 43 30 30 2d 5c 75  \uD801[\uDC00-\u
34650 44 43 39 44 5c 75 44 44 30 30 2d 5c 75 44 44 32  DC9D\uDD00-\uDD2
34660 37 5c 75 44 44 33 30 2d 5c 75 44 44 36 33 5c 75  7\uDD30-\uDD63\u
34670 44 45 30 30 2d 5c 75 44 46 33 36 5c 75 44 46 34  DE00-\uDF36\uDF4
34680 30 2d 5c 75 44 46 35 35 5c 75 44 46 36 30 2d 5c  0-\uDF55\uDF60-\
34690 75 44 46 36 37 5d 7c 5c 75 44 38 30 32 5b 5c 75  uDF67]|\uD802[\u
346a0 44 43 30 30 2d 5c 75 44 43 30 35 5c 75 44 43 30  DC00-\uDC05\uDC0
346b0 38 5c 75 44 43 30 41 2d 5c 75 44 43 33 35 5c 75  8\uDC0A-\uDC35\u
346c0 44 43 33 37 5c 75 44 43 33 38 5c 75 44 43 33 43  DC37\uDC38\uDC3C
346d0 5c 75 44 43 33 46 2d 5c 75 44 43 35 35 5c 75 44  \uDC3F-\uDC55\uD
346e0 43 36 30 2d 5c 75 44 43 37 36 5c 75 44 43 38 30  C60-\uDC76\uDC80
346f0 2d 5c 75 44 43 39 45 5c 75 44 43 45 30 2d 5c 75  -\uDC9E\uDCE0-\u
34700 44 43 46 32 5c 75 44 43 46 34 5c 75 44 43 46 35  DCF2\uDCF4\uDCF5
34710 5c 75 44 44 30 30 2d 5c 75 44 44 31 35 5c 75 44  \uDD00-\uDD15\uD
34720 44 32 30 2d 5c 75 44 44 33 39 5c 75 44 44 38 30  D20-\uDD39\uDD80
34730 2d 5c 75 44 44 42 37 5c 75 44 44 42 45 5c 75 44  -\uDDB7\uDDBE\uD
34740 44 42 46 5c 75 44 45 30 30 5c 75 44 45 31 30 2d  DBF\uDE00\uDE10-
34750 5c 75 44 45 31 33 5c 75 44 45 31 35 2d 5c 75 44  \uDE13\uDE15-\uD
34760 45 31 37 5c 75 44 45 31 39 2d 5c 75 44 45 33 33  E17\uDE19-\uDE33
34770 5c 75 44 45 36 30 2d 5c 75 44 45 37 43 5c 75 44  \uDE60-\uDE7C\uD
34780 45 38 30 2d 5c 75 44 45 39 43 5c 75 44 45 43 30  E80-\uDE9C\uDEC0
34790 2d 5c 75 44 45 43 37 5c 75 44 45 43 39 2d 5c 75  -\uDEC7\uDEC9-\u
347a0 44 45 45 34 5c 75 44 46 30 30 2d 5c 75 44 46 33  DEE4\uDF00-\uDF3
347b0 35 5c 75 44 46 34 30 2d 5c 75 44 46 35 35 5c 75  5\uDF40-\uDF55\u
347c0 44 46 36 30 2d 5c 75 44 46 37 32 5c 75 44 46 38  DF60-\uDF72\uDF8
347d0 30 2d 5c 75 44 46 39 31 5d 7c 5c 75 44 38 30 33  0-\uDF91]|\uD803
347e0 5b 5c 75 44 43 30 30 2d 5c 75 44 43 34 38 5c 75  [\uDC00-\uDC48\u
347f0 44 43 38 30 2d 5c 75 44 43 42 32 5c 75 44 43 43  DC80-\uDCB2\uDCC
34800 30 2d 5c 75 44 43 46 32 5d 7c 5c 75 44 38 30 34  0-\uDCF2]|\uD804
34810 5b 5c 75 44 43 30 33 2d 5c 75 44 43 33 37 5c 75  [\uDC03-\uDC37\u
34820 44 43 38 33 2d 5c 75 44 43 41 46 5c 75 44 43 44  DC83-\uDCAF\uDCD
34830 30 2d 5c 75 44 43 45 38 5c 75 44 44 30 33 2d 5c  0-\uDCE8\uDD03-\
34840 75 44 44 32 36 5c 75 44 44 35 30 2d 5c 75 44 44  uDD26\uDD50-\uDD
34850 37 32 5c 75 44 44 37 36 5c 75 44 44 38 33 2d 5c  72\uDD76\uDD83-\
34860 75 44 44 42 32 5c 75 44 44 43 31 2d 5c 75 44 44  uDDB2\uDDC1-\uDD
34870 43 34 5c 75 44 44 44 41 5c 75 44 44 44 43 5c 75  C4\uDDDA\uDDDC\u
34880 44 45 30 30 2d 5c 75 44 45 31 31 5c 75 44 45 31  DE00-\uDE11\uDE1
34890 33 2d 5c 75 44 45 32 42 5c 75 44 45 38 30 2d 5c  3-\uDE2B\uDE80-\
348a0 75 44 45 38 36 5c 75 44 45 38 38 5c 75 44 45 38  uDE86\uDE88\uDE8
348b0 41 2d 5c 75 44 45 38 44 5c 75 44 45 38 46 2d 5c  A-\uDE8D\uDE8F-\
348c0 75 44 45 39 44 5c 75 44 45 39 46 2d 5c 75 44 45  uDE9D\uDE9F-\uDE
348d0 41 38 5c 75 44 45 42 30 2d 5c 75 44 45 44 45 5c  A8\uDEB0-\uDEDE\
348e0 75 44 46 30 35 2d 5c 75 44 46 30 43 5c 75 44 46  uDF05-\uDF0C\uDF
348f0 30 46 5c 75 44 46 31 30 5c 75 44 46 31 33 2d 5c  0F\uDF10\uDF13-\
34900 75 44 46 32 38 5c 75 44 46 32 41 2d 5c 75 44 46  uDF28\uDF2A-\uDF
34910 33 30 5c 75 44 46 33 32 5c 75 44 46 33 33 5c 75  30\uDF32\uDF33\u
34920 44 46 33 35 2d 5c 75 44 46 33 39 5c 75 44 46 33  DF35-\uDF39\uDF3
34930 44 5c 75 44 46 35 30 5c 75 44 46 35 44 2d 5c 75  D\uDF50\uDF5D-\u
34940 44 46 36 31 5d 7c 5c 75 44 38 30 35 5b 5c 75 44  DF61]|\uD805[\uD
34950 43 38 30 2d 5c 75 44 43 41 46 5c 75 44 43 43 34  C80-\uDCAF\uDCC4
34960 5c 75 44 43 43 35 5c 75 44 43 43 37 5c 75 44 44  \uDCC5\uDCC7\uDD
34970 38 30 2d 5c 75 44 44 41 45 5c 75 44 44 44 38 2d  80-\uDDAE\uDDD8-
34980 5c 75 44 44 44 42 5c 75 44 45 30 30 2d 5c 75 44  \uDDDB\uDE00-\uD
34990 45 32 46 5c 75 44 45 34 34 5c 75 44 45 38 30 2d  E2F\uDE44\uDE80-
349a0 5c 75 44 45 41 41 5c 75 44 46 30 30 2d 5c 75 44  \uDEAA\uDF00-\uD
349b0 46 31 39 5d 7c 5c 75 44 38 30 36 5b 5c 75 44 43  F19]|\uD806[\uDC
349c0 41 30 2d 5c 75 44 43 44 46 5c 75 44 43 46 46 5c  A0-\uDCDF\uDCFF\
349d0 75 44 45 43 30 2d 5c 75 44 45 46 38 5d 7c 5c 75  uDEC0-\uDEF8]|\u
349e0 44 38 30 38 5b 5c 75 44 43 30 30 2d 5c 75 44 46  D808[\uDC00-\uDF
349f0 39 39 5d 7c 5c 75 44 38 30 39 5b 5c 75 44 43 30  99]|\uD809[\uDC0
34a00 30 2d 5c 75 44 43 36 45 5c 75 44 43 38 30 2d 5c  0-\uDC6E\uDC80-\
34a10 75 44 44 34 33 5d 7c 5b 5c 75 44 38 30 43 5c 75  uDD43]|[\uD80C\u
34a20 44 38 34 30 2d 5c 75 44 38 36 38 5c 75 44 38 36  D840-\uD868\uD86
34a30 41 2d 5c 75 44 38 36 43 5c 75 44 38 36 46 2d 5c  A-\uD86C\uD86F-\
34a40 75 44 38 37 32 5d 5b 5c 75 44 43 30 30 2d 5c 75  uD872][\uDC00-\u
34a50 44 46 46 46 5d 7c 5c 75 44 38 30 44 5b 5c 75 44  DFFF]|\uD80D[\uD
34a60 43 30 30 2d 5c 75 44 43 32 45 5d 7c 5c 75 44 38  C00-\uDC2E]|\uD8
34a70 31 31 5b 5c 75 44 43 30 30 2d 5c 75 44 45 34 36  11[\uDC00-\uDE46
34a80 5d 7c 5c 75 44 38 31 41 5b 5c 75 44 43 30 30 2d  ]|\uD81A[\uDC00-
34a90 5c 75 44 45 33 38 5c 75 44 45 34 30 2d 5c 75 44  \uDE38\uDE40-\uD
34aa0 45 35 45 5c 75 44 45 44 30 2d 5c 75 44 45 45 44  E5E\uDED0-\uDEED
34ab0 5c 75 44 46 30 30 2d 5c 75 44 46 32 46 5c 75 44  \uDF00-\uDF2F\uD
34ac0 46 34 30 2d 5c 75 44 46 34 33 5c 75 44 46 36 33  F40-\uDF43\uDF63
34ad0 2d 5c 75 44 46 37 37 5c 75 44 46 37 44 2d 5c 75  -\uDF77\uDF7D-\u
34ae0 44 46 38 46 5d 7c 5c 75 44 38 31 42 5b 5c 75 44  DF8F]|\uD81B[\uD
34af0 46 30 30 2d 5c 75 44 46 34 34 5c 75 44 46 35 30  F00-\uDF44\uDF50
34b00 5c 75 44 46 39 33 2d 5c 75 44 46 39 46 5d 7c 5c  \uDF93-\uDF9F]|\
34b10 75 44 38 32 43 5b 5c 75 44 43 30 30 5c 75 44 43  uD82C[\uDC00\uDC
34b20 30 31 5d 7c 5c 75 44 38 32 46 5b 5c 75 44 43 30  01]|\uD82F[\uDC0
34b30 30 2d 5c 75 44 43 36 41 5c 75 44 43 37 30 2d 5c  0-\uDC6A\uDC70-\
34b40 75 44 43 37 43 5c 75 44 43 38 30 2d 5c 75 44 43  uDC7C\uDC80-\uDC
34b50 38 38 5c 75 44 43 39 30 2d 5c 75 44 43 39 39 5d  88\uDC90-\uDC99]
34b60 7c 5c 75 44 38 33 35 5b 5c 75 44 43 30 30 2d 5c  |\uD835[\uDC00-\
34b70 75 44 43 35 34 5c 75 44 43 35 36 2d 5c 75 44 43  uDC54\uDC56-\uDC
34b80 39 43 5c 75 44 43 39 45 5c 75 44 43 39 46 5c 75  9C\uDC9E\uDC9F\u
34b90 44 43 41 32 5c 75 44 43 41 35 5c 75 44 43 41 36  DCA2\uDCA5\uDCA6
34ba0 5c 75 44 43 41 39 2d 5c 75 44 43 41 43 5c 75 44  \uDCA9-\uDCAC\uD
34bb0 43 41 45 2d 5c 75 44 43 42 39 5c 75 44 43 42 42  CAE-\uDCB9\uDCBB
34bc0 5c 75 44 43 42 44 2d 5c 75 44 43 43 33 5c 75 44  \uDCBD-\uDCC3\uD
34bd0 43 43 35 2d 5c 75 44 44 30 35 5c 75 44 44 30 37  CC5-\uDD05\uDD07
34be0 2d 5c 75 44 44 30 41 5c 75 44 44 30 44 2d 5c 75  -\uDD0A\uDD0D-\u
34bf0 44 44 31 34 5c 75 44 44 31 36 2d 5c 75 44 44 31  DD14\uDD16-\uDD1
34c00 43 5c 75 44 44 31 45 2d 5c 75 44 44 33 39 5c 75  C\uDD1E-\uDD39\u
34c10 44 44 33 42 2d 5c 75 44 44 33 45 5c 75 44 44 34  DD3B-\uDD3E\uDD4
34c20 30 2d 5c 75 44 44 34 34 5c 75 44 44 34 36 5c 75  0-\uDD44\uDD46\u
34c30 44 44 34 41 2d 5c 75 44 44 35 30 5c 75 44 44 35  DD4A-\uDD50\uDD5
34c40 32 2d 5c 75 44 45 41 35 5c 75 44 45 41 38 2d 5c  2-\uDEA5\uDEA8-\
34c50 75 44 45 43 30 5c 75 44 45 43 32 2d 5c 75 44 45  uDEC0\uDEC2-\uDE
34c60 44 41 5c 75 44 45 44 43 2d 5c 75 44 45 46 41 5c  DA\uDEDC-\uDEFA\
34c70 75 44 45 46 43 2d 5c 75 44 46 31 34 5c 75 44 46  uDEFC-\uDF14\uDF
34c80 31 36 2d 5c 75 44 46 33 34 5c 75 44 46 33 36 2d  16-\uDF34\uDF36-
34c90 5c 75 44 46 34 45 5c 75 44 46 35 30 2d 5c 75 44  \uDF4E\uDF50-\uD
34ca0 46 36 45 5c 75 44 46 37 30 2d 5c 75 44 46 38 38  F6E\uDF70-\uDF88
34cb0 5c 75 44 46 38 41 2d 5c 75 44 46 41 38 5c 75 44  \uDF8A-\uDFA8\uD
34cc0 46 41 41 2d 5c 75 44 46 43 32 5c 75 44 46 43 34  FAA-\uDFC2\uDFC4
34cd0 2d 5c 75 44 46 43 42 5d 7c 5c 75 44 38 33 41 5b  -\uDFCB]|\uD83A[
34ce0 5c 75 44 43 30 30 2d 5c 75 44 43 43 34 5d 7c 5c  \uDC00-\uDCC4]|\
34cf0 75 44 38 33 42 5b 5c 75 44 45 30 30 2d 5c 75 44  uD83B[\uDE00-\uD
34d00 45 30 33 5c 75 44 45 30 35 2d 5c 75 44 45 31 46  E03\uDE05-\uDE1F
34d10 5c 75 44 45 32 31 5c 75 44 45 32 32 5c 75 44 45  \uDE21\uDE22\uDE
34d20 32 34 5c 75 44 45 32 37 5c 75 44 45 32 39 2d 5c  24\uDE27\uDE29-\
34d30 75 44 45 33 32 5c 75 44 45 33 34 2d 5c 75 44 45  uDE32\uDE34-\uDE
34d40 33 37 5c 75 44 45 33 39 5c 75 44 45 33 42 5c 75  37\uDE39\uDE3B\u
34d50 44 45 34 32 5c 75 44 45 34 37 5c 75 44 45 34 39  DE42\uDE47\uDE49
34d60 5c 75 44 45 34 42 5c 75 44 45 34 44 2d 5c 75 44  \uDE4B\uDE4D-\uD
34d70 45 34 46 5c 75 44 45 35 31 5c 75 44 45 35 32 5c  E4F\uDE51\uDE52\
34d80 75 44 45 35 34 5c 75 44 45 35 37 5c 75 44 45 35  uDE54\uDE57\uDE5
34d90 39 5c 75 44 45 35 42 5c 75 44 45 35 44 5c 75 44  9\uDE5B\uDE5D\uD
34da0 45 35 46 5c 75 44 45 36 31 5c 75 44 45 36 32 5c  E5F\uDE61\uDE62\
34db0 75 44 45 36 34 5c 75 44 45 36 37 2d 5c 75 44 45  uDE64\uDE67-\uDE
34dc0 36 41 5c 75 44 45 36 43 2d 5c 75 44 45 37 32 5c  6A\uDE6C-\uDE72\
34dd0 75 44 45 37 34 2d 5c 75 44 45 37 37 5c 75 44 45  uDE74-\uDE77\uDE
34de0 37 39 2d 5c 75 44 45 37 43 5c 75 44 45 37 45 5c  79-\uDE7C\uDE7E\
34df0 75 44 45 38 30 2d 5c 75 44 45 38 39 5c 75 44 45  uDE80-\uDE89\uDE
34e00 38 42 2d 5c 75 44 45 39 42 5c 75 44 45 41 31 2d  8B-\uDE9B\uDEA1-
34e10 5c 75 44 45 41 33 5c 75 44 45 41 35 2d 5c 75 44  \uDEA3\uDEA5-\uD
34e20 45 41 39 5c 75 44 45 41 42 2d 5c 75 44 45 42 42  EA9\uDEAB-\uDEBB
34e30 5d 7c 5c 75 44 38 36 39 5b 5c 75 44 43 30 30 2d  ]|\uD869[\uDC00-
34e40 5c 75 44 45 44 36 5c 75 44 46 30 30 2d 5c 75 44  \uDED6\uDF00-\uD
34e50 46 46 46 5d 7c 5c 75 44 38 36 44 5b 5c 75 44 43  FFF]|\uD86D[\uDC
34e60 30 30 2d 5c 75 44 46 33 34 5c 75 44 46 34 30 2d  00-\uDF34\uDF40-
34e70 5c 75 44 46 46 46 5d 7c 5c 75 44 38 36 45 5b 5c  \uDFFF]|\uD86E[\
34e80 75 44 43 30 30 2d 5c 75 44 43 31 44 5c 75 44 43  uDC00-\uDC1D\uDC
34e90 32 30 2d 5c 75 44 46 46 46 5d 7c 5c 75 44 38 37  20-\uDFFF]|\uD87
34ea0 33 5b 5c 75 44 43 30 30 2d 5c 75 44 45 41 31 5d  3[\uDC00-\uDEA1]
34eb0 7c 5c 75 44 38 37 45 5b 5c 75 44 43 30 30 2d 5c  |\uD87E[\uDC00-\
34ec0 75 44 45 31 44 5d 2f 2c 0a 20 20 09 20 20 20 20  uDE1D]/,.  .    
34ed0 2f 2f 20 55 6e 69 63 6f 64 65 20 76 38 2e 30 2e  // Unicode v8.0.
34ee0 30 20 4e 6f 6e 41 73 63 69 69 49 64 65 6e 74 69  0 NonAsciiIdenti
34ef0 66 69 65 72 50 61 72 74 3a 0a 20 20 09 20 20 20  fierPart:.  .   
34f00 20 4e 6f 6e 41 73 63 69 69 49 64 65 6e 74 69 66   NonAsciiIdentif
34f10 69 65 72 50 61 72 74 3a 20 2f 5b 5c 78 41 41 5c  ierPart: /[\xAA\
34f20 78 42 35 5c 78 42 37 5c 78 42 41 5c 78 43 30 2d  xB5\xB7\xBA\xC0-
34f30 5c 78 44 36 5c 78 44 38 2d 5c 78 46 36 5c 78 46  \xD6\xD8-\xF6\xF
34f40 38 2d 5c 75 30 32 43 31 5c 75 30 32 43 36 2d 5c  8-\u02C1\u02C6-\
34f50 75 30 32 44 31 5c 75 30 32 45 30 2d 5c 75 30 32  u02D1\u02E0-\u02
34f60 45 34 5c 75 30 32 45 43 5c 75 30 32 45 45 5c 75  E4\u02EC\u02EE\u
34f70 30 33 30 30 2d 5c 75 30 33 37 34 5c 75 30 33 37  0300-\u0374\u037
34f80 36 5c 75 30 33 37 37 5c 75 30 33 37 41 2d 5c 75  6\u0377\u037A-\u
34f90 30 33 37 44 5c 75 30 33 37 46 5c 75 30 33 38 36  037D\u037F\u0386
34fa0 2d 5c 75 30 33 38 41 5c 75 30 33 38 43 5c 75 30  -\u038A\u038C\u0
34fb0 33 38 45 2d 5c 75 30 33 41 31 5c 75 30 33 41 33  38E-\u03A1\u03A3
34fc0 2d 5c 75 30 33 46 35 5c 75 30 33 46 37 2d 5c 75  -\u03F5\u03F7-\u
34fd0 30 34 38 31 5c 75 30 34 38 33 2d 5c 75 30 34 38  0481\u0483-\u048
34fe0 37 5c 75 30 34 38 41 2d 5c 75 30 35 32 46 5c 75  7\u048A-\u052F\u
34ff0 30 35 33 31 2d 5c 75 30 35 35 36 5c 75 30 35 35  0531-\u0556\u055
35000 39 5c 75 30 35 36 31 2d 5c 75 30 35 38 37 5c 75  9\u0561-\u0587\u
35010 30 35 39 31 2d 5c 75 30 35 42 44 5c 75 30 35 42  0591-\u05BD\u05B
35020 46 5c 75 30 35 43 31 5c 75 30 35 43 32 5c 75 30  F\u05C1\u05C2\u0
35030 35 43 34 5c 75 30 35 43 35 5c 75 30 35 43 37 5c  5C4\u05C5\u05C7\
35040 75 30 35 44 30 2d 5c 75 30 35 45 41 5c 75 30 35  u05D0-\u05EA\u05
35050 46 30 2d 5c 75 30 35 46 32 5c 75 30 36 31 30 2d  F0-\u05F2\u0610-
35060 5c 75 30 36 31 41 5c 75 30 36 32 30 2d 5c 75 30  \u061A\u0620-\u0
35070 36 36 39 5c 75 30 36 36 45 2d 5c 75 30 36 44 33  669\u066E-\u06D3
35080 5c 75 30 36 44 35 2d 5c 75 30 36 44 43 5c 75 30  \u06D5-\u06DC\u0
35090 36 44 46 2d 5c 75 30 36 45 38 5c 75 30 36 45 41  6DF-\u06E8\u06EA
350a0 2d 5c 75 30 36 46 43 5c 75 30 36 46 46 5c 75 30  -\u06FC\u06FF\u0
350b0 37 31 30 2d 5c 75 30 37 34 41 5c 75 30 37 34 44  710-\u074A\u074D
350c0 2d 5c 75 30 37 42 31 5c 75 30 37 43 30 2d 5c 75  -\u07B1\u07C0-\u
350d0 30 37 46 35 5c 75 30 37 46 41 5c 75 30 38 30 30  07F5\u07FA\u0800
350e0 2d 5c 75 30 38 32 44 5c 75 30 38 34 30 2d 5c 75  -\u082D\u0840-\u
350f0 30 38 35 42 5c 75 30 38 41 30 2d 5c 75 30 38 42  085B\u08A0-\u08B
35100 34 5c 75 30 38 45 33 2d 5c 75 30 39 36 33 5c 75  4\u08E3-\u0963\u
35110 30 39 36 36 2d 5c 75 30 39 36 46 5c 75 30 39 37  0966-\u096F\u097
35120 31 2d 5c 75 30 39 38 33 5c 75 30 39 38 35 2d 5c  1-\u0983\u0985-\
35130 75 30 39 38 43 5c 75 30 39 38 46 5c 75 30 39 39  u098C\u098F\u099
35140 30 5c 75 30 39 39 33 2d 5c 75 30 39 41 38 5c 75  0\u0993-\u09A8\u
35150 30 39 41 41 2d 5c 75 30 39 42 30 5c 75 30 39 42  09AA-\u09B0\u09B
35160 32 5c 75 30 39 42 36 2d 5c 75 30 39 42 39 5c 75  2\u09B6-\u09B9\u
35170 30 39 42 43 2d 5c 75 30 39 43 34 5c 75 30 39 43  09BC-\u09C4\u09C
35180 37 5c 75 30 39 43 38 5c 75 30 39 43 42 2d 5c 75  7\u09C8\u09CB-\u
35190 30 39 43 45 5c 75 30 39 44 37 5c 75 30 39 44 43  09CE\u09D7\u09DC
351a0 5c 75 30 39 44 44 5c 75 30 39 44 46 2d 5c 75 30  \u09DD\u09DF-\u0
351b0 39 45 33 5c 75 30 39 45 36 2d 5c 75 30 39 46 31  9E3\u09E6-\u09F1
351c0 5c 75 30 41 30 31 2d 5c 75 30 41 30 33 5c 75 30  \u0A01-\u0A03\u0
351d0 41 30 35 2d 5c 75 30 41 30 41 5c 75 30 41 30 46  A05-\u0A0A\u0A0F
351e0 5c 75 30 41 31 30 5c 75 30 41 31 33 2d 5c 75 30  \u0A10\u0A13-\u0
351f0 41 32 38 5c 75 30 41 32 41 2d 5c 75 30 41 33 30  A28\u0A2A-\u0A30
35200 5c 75 30 41 33 32 5c 75 30 41 33 33 5c 75 30 41  \u0A32\u0A33\u0A
35210 33 35 5c 75 30 41 33 36 5c 75 30 41 33 38 5c 75  35\u0A36\u0A38\u
35220 30 41 33 39 5c 75 30 41 33 43 5c 75 30 41 33 45  0A39\u0A3C\u0A3E
35230 2d 5c 75 30 41 34 32 5c 75 30 41 34 37 5c 75 30  -\u0A42\u0A47\u0
35240 41 34 38 5c 75 30 41 34 42 2d 5c 75 30 41 34 44  A48\u0A4B-\u0A4D
35250 5c 75 30 41 35 31 5c 75 30 41 35 39 2d 5c 75 30  \u0A51\u0A59-\u0
35260 41 35 43 5c 75 30 41 35 45 5c 75 30 41 36 36 2d  A5C\u0A5E\u0A66-
35270 5c 75 30 41 37 35 5c 75 30 41 38 31 2d 5c 75 30  \u0A75\u0A81-\u0
35280 41 38 33 5c 75 30 41 38 35 2d 5c 75 30 41 38 44  A83\u0A85-\u0A8D
35290 5c 75 30 41 38 46 2d 5c 75 30 41 39 31 5c 75 30  \u0A8F-\u0A91\u0
352a0 41 39 33 2d 5c 75 30 41 41 38 5c 75 30 41 41 41  A93-\u0AA8\u0AAA
352b0 2d 5c 75 30 41 42 30 5c 75 30 41 42 32 5c 75 30  -\u0AB0\u0AB2\u0
352c0 41 42 33 5c 75 30 41 42 35 2d 5c 75 30 41 42 39  AB3\u0AB5-\u0AB9
352d0 5c 75 30 41 42 43 2d 5c 75 30 41 43 35 5c 75 30  \u0ABC-\u0AC5\u0
352e0 41 43 37 2d 5c 75 30 41 43 39 5c 75 30 41 43 42  AC7-\u0AC9\u0ACB
352f0 2d 5c 75 30 41 43 44 5c 75 30 41 44 30 5c 75 30  -\u0ACD\u0AD0\u0
35300 41 45 30 2d 5c 75 30 41 45 33 5c 75 30 41 45 36  AE0-\u0AE3\u0AE6
35310 2d 5c 75 30 41 45 46 5c 75 30 41 46 39 5c 75 30  -\u0AEF\u0AF9\u0
35320 42 30 31 2d 5c 75 30 42 30 33 5c 75 30 42 30 35  B01-\u0B03\u0B05
35330 2d 5c 75 30 42 30 43 5c 75 30 42 30 46 5c 75 30  -\u0B0C\u0B0F\u0
35340 42 31 30 5c 75 30 42 31 33 2d 5c 75 30 42 32 38  B10\u0B13-\u0B28
35350 5c 75 30 42 32 41 2d 5c 75 30 42 33 30 5c 75 30  \u0B2A-\u0B30\u0
35360 42 33 32 5c 75 30 42 33 33 5c 75 30 42 33 35 2d  B32\u0B33\u0B35-
35370 5c 75 30 42 33 39 5c 75 30 42 33 43 2d 5c 75 30  \u0B39\u0B3C-\u0
35380 42 34 34 5c 75 30 42 34 37 5c 75 30 42 34 38 5c  B44\u0B47\u0B48\
35390 75 30 42 34 42 2d 5c 75 30 42 34 44 5c 75 30 42  u0B4B-\u0B4D\u0B
353a0 35 36 5c 75 30 42 35 37 5c 75 30 42 35 43 5c 75  56\u0B57\u0B5C\u
353b0 30 42 35 44 5c 75 30 42 35 46 2d 5c 75 30 42 36  0B5D\u0B5F-\u0B6
353c0 33 5c 75 30 42 36 36 2d 5c 75 30 42 36 46 5c 75  3\u0B66-\u0B6F\u
353d0 30 42 37 31 5c 75 30 42 38 32 5c 75 30 42 38 33  0B71\u0B82\u0B83
353e0 5c 75 30 42 38 35 2d 5c 75 30 42 38 41 5c 75 30  \u0B85-\u0B8A\u0
353f0 42 38 45 2d 5c 75 30 42 39 30 5c 75 30 42 39 32  B8E-\u0B90\u0B92
35400 2d 5c 75 30 42 39 35 5c 75 30 42 39 39 5c 75 30  -\u0B95\u0B99\u0
35410 42 39 41 5c 75 30 42 39 43 5c 75 30 42 39 45 5c  B9A\u0B9C\u0B9E\
35420 75 30 42 39 46 5c 75 30 42 41 33 5c 75 30 42 41  u0B9F\u0BA3\u0BA
35430 34 5c 75 30 42 41 38 2d 5c 75 30 42 41 41 5c 75  4\u0BA8-\u0BAA\u
35440 30 42 41 45 2d 5c 75 30 42 42 39 5c 75 30 42 42  0BAE-\u0BB9\u0BB
35450 45 2d 5c 75 30 42 43 32 5c 75 30 42 43 36 2d 5c  E-\u0BC2\u0BC6-\
35460 75 30 42 43 38 5c 75 30 42 43 41 2d 5c 75 30 42  u0BC8\u0BCA-\u0B
35470 43 44 5c 75 30 42 44 30 5c 75 30 42 44 37 5c 75  CD\u0BD0\u0BD7\u
35480 30 42 45 36 2d 5c 75 30 42 45 46 5c 75 30 43 30  0BE6-\u0BEF\u0C0
35490 30 2d 5c 75 30 43 30 33 5c 75 30 43 30 35 2d 5c  0-\u0C03\u0C05-\
354a0 75 30 43 30 43 5c 75 30 43 30 45 2d 5c 75 30 43  u0C0C\u0C0E-\u0C
354b0 31 30 5c 75 30 43 31 32 2d 5c 75 30 43 32 38 5c  10\u0C12-\u0C28\
354c0 75 30 43 32 41 2d 5c 75 30 43 33 39 5c 75 30 43  u0C2A-\u0C39\u0C
354d0 33 44 2d 5c 75 30 43 34 34 5c 75 30 43 34 36 2d  3D-\u0C44\u0C46-
354e0 5c 75 30 43 34 38 5c 75 30 43 34 41 2d 5c 75 30  \u0C48\u0C4A-\u0
354f0 43 34 44 5c 75 30 43 35 35 5c 75 30 43 35 36 5c  C4D\u0C55\u0C56\
35500 75 30 43 35 38 2d 5c 75 30 43 35 41 5c 75 30 43  u0C58-\u0C5A\u0C
35510 36 30 2d 5c 75 30 43 36 33 5c 75 30 43 36 36 2d  60-\u0C63\u0C66-
35520 5c 75 30 43 36 46 5c 75 30 43 38 31 2d 5c 75 30  \u0C6F\u0C81-\u0
35530 43 38 33 5c 75 30 43 38 35 2d 5c 75 30 43 38 43  C83\u0C85-\u0C8C
35540 5c 75 30 43 38 45 2d 5c 75 30 43 39 30 5c 75 30  \u0C8E-\u0C90\u0
35550 43 39 32 2d 5c 75 30 43 41 38 5c 75 30 43 41 41  C92-\u0CA8\u0CAA
35560 2d 5c 75 30 43 42 33 5c 75 30 43 42 35 2d 5c 75  -\u0CB3\u0CB5-\u
35570 30 43 42 39 5c 75 30 43 42 43 2d 5c 75 30 43 43  0CB9\u0CBC-\u0CC
35580 34 5c 75 30 43 43 36 2d 5c 75 30 43 43 38 5c 75  4\u0CC6-\u0CC8\u
35590 30 43 43 41 2d 5c 75 30 43 43 44 5c 75 30 43 44  0CCA-\u0CCD\u0CD
355a0 35 5c 75 30 43 44 36 5c 75 30 43 44 45 5c 75 30  5\u0CD6\u0CDE\u0
355b0 43 45 30 2d 5c 75 30 43 45 33 5c 75 30 43 45 36  CE0-\u0CE3\u0CE6
355c0 2d 5c 75 30 43 45 46 5c 75 30 43 46 31 5c 75 30  -\u0CEF\u0CF1\u0
355d0 43 46 32 5c 75 30 44 30 31 2d 5c 75 30 44 30 33  CF2\u0D01-\u0D03
355e0 5c 75 30 44 30 35 2d 5c 75 30 44 30 43 5c 75 30  \u0D05-\u0D0C\u0
355f0 44 30 45 2d 5c 75 30 44 31 30 5c 75 30 44 31 32  D0E-\u0D10\u0D12
35600 2d 5c 75 30 44 33 41 5c 75 30 44 33 44 2d 5c 75  -\u0D3A\u0D3D-\u
35610 30 44 34 34 5c 75 30 44 34 36 2d 5c 75 30 44 34  0D44\u0D46-\u0D4
35620 38 5c 75 30 44 34 41 2d 5c 75 30 44 34 45 5c 75  8\u0D4A-\u0D4E\u
35630 30 44 35 37 5c 75 30 44 35 46 2d 5c 75 30 44 36  0D57\u0D5F-\u0D6
35640 33 5c 75 30 44 36 36 2d 5c 75 30 44 36 46 5c 75  3\u0D66-\u0D6F\u
35650 30 44 37 41 2d 5c 75 30 44 37 46 5c 75 30 44 38  0D7A-\u0D7F\u0D8
35660 32 5c 75 30 44 38 33 5c 75 30 44 38 35 2d 5c 75  2\u0D83\u0D85-\u
35670 30 44 39 36 5c 75 30 44 39 41 2d 5c 75 30 44 42  0D96\u0D9A-\u0DB
35680 31 5c 75 30 44 42 33 2d 5c 75 30 44 42 42 5c 75  1\u0DB3-\u0DBB\u
35690 30 44 42 44 5c 75 30 44 43 30 2d 5c 75 30 44 43  0DBD\u0DC0-\u0DC
356a0 36 5c 75 30 44 43 41 5c 75 30 44 43 46 2d 5c 75  6\u0DCA\u0DCF-\u
356b0 30 44 44 34 5c 75 30 44 44 36 5c 75 30 44 44 38  0DD4\u0DD6\u0DD8
356c0 2d 5c 75 30 44 44 46 5c 75 30 44 45 36 2d 5c 75  -\u0DDF\u0DE6-\u
356d0 30 44 45 46 5c 75 30 44 46 32 5c 75 30 44 46 33  0DEF\u0DF2\u0DF3
356e0 5c 75 30 45 30 31 2d 5c 75 30 45 33 41 5c 75 30  \u0E01-\u0E3A\u0
356f0 45 34 30 2d 5c 75 30 45 34 45 5c 75 30 45 35 30  E40-\u0E4E\u0E50
35700 2d 5c 75 30 45 35 39 5c 75 30 45 38 31 5c 75 30  -\u0E59\u0E81\u0
35710 45 38 32 5c 75 30 45 38 34 5c 75 30 45 38 37 5c  E82\u0E84\u0E87\
35720 75 30 45 38 38 5c 75 30 45 38 41 5c 75 30 45 38  u0E88\u0E8A\u0E8
35730 44 5c 75 30 45 39 34 2d 5c 75 30 45 39 37 5c 75  D\u0E94-\u0E97\u
35740 30 45 39 39 2d 5c 75 30 45 39 46 5c 75 30 45 41  0E99-\u0E9F\u0EA
35750 31 2d 5c 75 30 45 41 33 5c 75 30 45 41 35 5c 75  1-\u0EA3\u0EA5\u
35760 30 45 41 37 5c 75 30 45 41 41 5c 75 30 45 41 42  0EA7\u0EAA\u0EAB
35770 5c 75 30 45 41 44 2d 5c 75 30 45 42 39 5c 75 30  \u0EAD-\u0EB9\u0
35780 45 42 42 2d 5c 75 30 45 42 44 5c 75 30 45 43 30  EBB-\u0EBD\u0EC0
35790 2d 5c 75 30 45 43 34 5c 75 30 45 43 36 5c 75 30  -\u0EC4\u0EC6\u0
357a0 45 43 38 2d 5c 75 30 45 43 44 5c 75 30 45 44 30  EC8-\u0ECD\u0ED0
357b0 2d 5c 75 30 45 44 39 5c 75 30 45 44 43 2d 5c 75  -\u0ED9\u0EDC-\u
357c0 30 45 44 46 5c 75 30 46 30 30 5c 75 30 46 31 38  0EDF\u0F00\u0F18
357d0 5c 75 30 46 31 39 5c 75 30 46 32 30 2d 5c 75 30  \u0F19\u0F20-\u0
357e0 46 32 39 5c 75 30 46 33 35 5c 75 30 46 33 37 5c  F29\u0F35\u0F37\
357f0 75 30 46 33 39 5c 75 30 46 33 45 2d 5c 75 30 46  u0F39\u0F3E-\u0F
35800 34 37 5c 75 30 46 34 39 2d 5c 75 30 46 36 43 5c  47\u0F49-\u0F6C\
35810 75 30 46 37 31 2d 5c 75 30 46 38 34 5c 75 30 46  u0F71-\u0F84\u0F
35820 38 36 2d 5c 75 30 46 39 37 5c 75 30 46 39 39 2d  86-\u0F97\u0F99-
35830 5c 75 30 46 42 43 5c 75 30 46 43 36 5c 75 31 30  \u0FBC\u0FC6\u10
35840 30 30 2d 5c 75 31 30 34 39 5c 75 31 30 35 30 2d  00-\u1049\u1050-
35850 5c 75 31 30 39 44 5c 75 31 30 41 30 2d 5c 75 31  \u109D\u10A0-\u1
35860 30 43 35 5c 75 31 30 43 37 5c 75 31 30 43 44 5c  0C5\u10C7\u10CD\
35870 75 31 30 44 30 2d 5c 75 31 30 46 41 5c 75 31 30  u10D0-\u10FA\u10
35880 46 43 2d 5c 75 31 32 34 38 5c 75 31 32 34 41 2d  FC-\u1248\u124A-
35890 5c 75 31 32 34 44 5c 75 31 32 35 30 2d 5c 75 31  \u124D\u1250-\u1
358a0 32 35 36 5c 75 31 32 35 38 5c 75 31 32 35 41 2d  256\u1258\u125A-
358b0 5c 75 31 32 35 44 5c 75 31 32 36 30 2d 5c 75 31  \u125D\u1260-\u1
358c0 32 38 38 5c 75 31 32 38 41 2d 5c 75 31 32 38 44  288\u128A-\u128D
358d0 5c 75 31 32 39 30 2d 5c 75 31 32 42 30 5c 75 31  \u1290-\u12B0\u1
358e0 32 42 32 2d 5c 75 31 32 42 35 5c 75 31 32 42 38  2B2-\u12B5\u12B8
358f0 2d 5c 75 31 32 42 45 5c 75 31 32 43 30 5c 75 31  -\u12BE\u12C0\u1
35900 32 43 32 2d 5c 75 31 32 43 35 5c 75 31 32 43 38  2C2-\u12C5\u12C8
35910 2d 5c 75 31 32 44 36 5c 75 31 32 44 38 2d 5c 75  -\u12D6\u12D8-\u
35920 31 33 31 30 5c 75 31 33 31 32 2d 5c 75 31 33 31  1310\u1312-\u131
35930 35 5c 75 31 33 31 38 2d 5c 75 31 33 35 41 5c 75  5\u1318-\u135A\u
35940 31 33 35 44 2d 5c 75 31 33 35 46 5c 75 31 33 36  135D-\u135F\u136
35950 39 2d 5c 75 31 33 37 31 5c 75 31 33 38 30 2d 5c  9-\u1371\u1380-\
35960 75 31 33 38 46 5c 75 31 33 41 30 2d 5c 75 31 33  u138F\u13A0-\u13
35970 46 35 5c 75 31 33 46 38 2d 5c 75 31 33 46 44 5c  F5\u13F8-\u13FD\
35980 75 31 34 30 31 2d 5c 75 31 36 36 43 5c 75 31 36  u1401-\u166C\u16
35990 36 46 2d 5c 75 31 36 37 46 5c 75 31 36 38 31 2d  6F-\u167F\u1681-
359a0 5c 75 31 36 39 41 5c 75 31 36 41 30 2d 5c 75 31  \u169A\u16A0-\u1
359b0 36 45 41 5c 75 31 36 45 45 2d 5c 75 31 36 46 38  6EA\u16EE-\u16F8
359c0 5c 75 31 37 30 30 2d 5c 75 31 37 30 43 5c 75 31  \u1700-\u170C\u1
359d0 37 30 45 2d 5c 75 31 37 31 34 5c 75 31 37 32 30  70E-\u1714\u1720
359e0 2d 5c 75 31 37 33 34 5c 75 31 37 34 30 2d 5c 75  -\u1734\u1740-\u
359f0 31 37 35 33 5c 75 31 37 36 30 2d 5c 75 31 37 36  1753\u1760-\u176
35a00 43 5c 75 31 37 36 45 2d 5c 75 31 37 37 30 5c 75  C\u176E-\u1770\u
35a10 31 37 37 32 5c 75 31 37 37 33 5c 75 31 37 38 30  1772\u1773\u1780
35a20 2d 5c 75 31 37 44 33 5c 75 31 37 44 37 5c 75 31  -\u17D3\u17D7\u1
35a30 37 44 43 5c 75 31 37 44 44 5c 75 31 37 45 30 2d  7DC\u17DD\u17E0-
35a40 5c 75 31 37 45 39 5c 75 31 38 30 42 2d 5c 75 31  \u17E9\u180B-\u1
35a50 38 30 44 5c 75 31 38 31 30 2d 5c 75 31 38 31 39  80D\u1810-\u1819
35a60 5c 75 31 38 32 30 2d 5c 75 31 38 37 37 5c 75 31  \u1820-\u1877\u1
35a70 38 38 30 2d 5c 75 31 38 41 41 5c 75 31 38 42 30  880-\u18AA\u18B0
35a80 2d 5c 75 31 38 46 35 5c 75 31 39 30 30 2d 5c 75  -\u18F5\u1900-\u
35a90 31 39 31 45 5c 75 31 39 32 30 2d 5c 75 31 39 32  191E\u1920-\u192
35aa0 42 5c 75 31 39 33 30 2d 5c 75 31 39 33 42 5c 75  B\u1930-\u193B\u
35ab0 31 39 34 36 2d 5c 75 31 39 36 44 5c 75 31 39 37  1946-\u196D\u197
35ac0 30 2d 5c 75 31 39 37 34 5c 75 31 39 38 30 2d 5c  0-\u1974\u1980-\
35ad0 75 31 39 41 42 5c 75 31 39 42 30 2d 5c 75 31 39  u19AB\u19B0-\u19
35ae0 43 39 5c 75 31 39 44 30 2d 5c 75 31 39 44 41 5c  C9\u19D0-\u19DA\
35af0 75 31 41 30 30 2d 5c 75 31 41 31 42 5c 75 31 41  u1A00-\u1A1B\u1A
35b00 32 30 2d 5c 75 31 41 35 45 5c 75 31 41 36 30 2d  20-\u1A5E\u1A60-
35b10 5c 75 31 41 37 43 5c 75 31 41 37 46 2d 5c 75 31  \u1A7C\u1A7F-\u1
35b20 41 38 39 5c 75 31 41 39 30 2d 5c 75 31 41 39 39  A89\u1A90-\u1A99
35b30 5c 75 31 41 41 37 5c 75 31 41 42 30 2d 5c 75 31  \u1AA7\u1AB0-\u1
35b40 41 42 44 5c 75 31 42 30 30 2d 5c 75 31 42 34 42  ABD\u1B00-\u1B4B
35b50 5c 75 31 42 35 30 2d 5c 75 31 42 35 39 5c 75 31  \u1B50-\u1B59\u1
35b60 42 36 42 2d 5c 75 31 42 37 33 5c 75 31 42 38 30  B6B-\u1B73\u1B80
35b70 2d 5c 75 31 42 46 33 5c 75 31 43 30 30 2d 5c 75  -\u1BF3\u1C00-\u
35b80 31 43 33 37 5c 75 31 43 34 30 2d 5c 75 31 43 34  1C37\u1C40-\u1C4
35b90 39 5c 75 31 43 34 44 2d 5c 75 31 43 37 44 5c 75  9\u1C4D-\u1C7D\u
35ba0 31 43 44 30 2d 5c 75 31 43 44 32 5c 75 31 43 44  1CD0-\u1CD2\u1CD
35bb0 34 2d 5c 75 31 43 46 36 5c 75 31 43 46 38 5c 75  4-\u1CF6\u1CF8\u
35bc0 31 43 46 39 5c 75 31 44 30 30 2d 5c 75 31 44 46  1CF9\u1D00-\u1DF
35bd0 35 5c 75 31 44 46 43 2d 5c 75 31 46 31 35 5c 75  5\u1DFC-\u1F15\u
35be0 31 46 31 38 2d 5c 75 31 46 31 44 5c 75 31 46 32  1F18-\u1F1D\u1F2
35bf0 30 2d 5c 75 31 46 34 35 5c 75 31 46 34 38 2d 5c  0-\u1F45\u1F48-\
35c00 75 31 46 34 44 5c 75 31 46 35 30 2d 5c 75 31 46  u1F4D\u1F50-\u1F
35c10 35 37 5c 75 31 46 35 39 5c 75 31 46 35 42 5c 75  57\u1F59\u1F5B\u
35c20 31 46 35 44 5c 75 31 46 35 46 2d 5c 75 31 46 37  1F5D\u1F5F-\u1F7
35c30 44 5c 75 31 46 38 30 2d 5c 75 31 46 42 34 5c 75  D\u1F80-\u1FB4\u
35c40 31 46 42 36 2d 5c 75 31 46 42 43 5c 75 31 46 42  1FB6-\u1FBC\u1FB
35c50 45 5c 75 31 46 43 32 2d 5c 75 31 46 43 34 5c 75  E\u1FC2-\u1FC4\u
35c60 31 46 43 36 2d 5c 75 31 46 43 43 5c 75 31 46 44  1FC6-\u1FCC\u1FD
35c70 30 2d 5c 75 31 46 44 33 5c 75 31 46 44 36 2d 5c  0-\u1FD3\u1FD6-\
35c80 75 31 46 44 42 5c 75 31 46 45 30 2d 5c 75 31 46  u1FDB\u1FE0-\u1F
35c90 45 43 5c 75 31 46 46 32 2d 5c 75 31 46 46 34 5c  EC\u1FF2-\u1FF4\
35ca0 75 31 46 46 36 2d 5c 75 31 46 46 43 5c 75 32 30  u1FF6-\u1FFC\u20
35cb0 30 43 5c 75 32 30 30 44 5c 75 32 30 33 46 5c 75  0C\u200D\u203F\u
35cc0 32 30 34 30 5c 75 32 30 35 34 5c 75 32 30 37 31  2040\u2054\u2071
35cd0 5c 75 32 30 37 46 5c 75 32 30 39 30 2d 5c 75 32  \u207F\u2090-\u2
35ce0 30 39 43 5c 75 32 30 44 30 2d 5c 75 32 30 44 43  09C\u20D0-\u20DC
35cf0 5c 75 32 30 45 31 5c 75 32 30 45 35 2d 5c 75 32  \u20E1\u20E5-\u2
35d00 30 46 30 5c 75 32 31 30 32 5c 75 32 31 30 37 5c  0F0\u2102\u2107\
35d10 75 32 31 30 41 2d 5c 75 32 31 31 33 5c 75 32 31  u210A-\u2113\u21
35d20 31 35 5c 75 32 31 31 38 2d 5c 75 32 31 31 44 5c  15\u2118-\u211D\
35d30 75 32 31 32 34 5c 75 32 31 32 36 5c 75 32 31 32  u2124\u2126\u212
35d40 38 5c 75 32 31 32 41 2d 5c 75 32 31 33 39 5c 75  8\u212A-\u2139\u
35d50 32 31 33 43 2d 5c 75 32 31 33 46 5c 75 32 31 34  213C-\u213F\u214
35d60 35 2d 5c 75 32 31 34 39 5c 75 32 31 34 45 5c 75  5-\u2149\u214E\u
35d70 32 31 36 30 2d 5c 75 32 31 38 38 5c 75 32 43 30  2160-\u2188\u2C0
35d80 30 2d 5c 75 32 43 32 45 5c 75 32 43 33 30 2d 5c  0-\u2C2E\u2C30-\
35d90 75 32 43 35 45 5c 75 32 43 36 30 2d 5c 75 32 43  u2C5E\u2C60-\u2C
35da0 45 34 5c 75 32 43 45 42 2d 5c 75 32 43 46 33 5c  E4\u2CEB-\u2CF3\
35db0 75 32 44 30 30 2d 5c 75 32 44 32 35 5c 75 32 44  u2D00-\u2D25\u2D
35dc0 32 37 5c 75 32 44 32 44 5c 75 32 44 33 30 2d 5c  27\u2D2D\u2D30-\
35dd0 75 32 44 36 37 5c 75 32 44 36 46 5c 75 32 44 37  u2D67\u2D6F\u2D7
35de0 46 2d 5c 75 32 44 39 36 5c 75 32 44 41 30 2d 5c  F-\u2D96\u2DA0-\
35df0 75 32 44 41 36 5c 75 32 44 41 38 2d 5c 75 32 44  u2DA6\u2DA8-\u2D
35e00 41 45 5c 75 32 44 42 30 2d 5c 75 32 44 42 36 5c  AE\u2DB0-\u2DB6\
35e10 75 32 44 42 38 2d 5c 75 32 44 42 45 5c 75 32 44  u2DB8-\u2DBE\u2D
35e20 43 30 2d 5c 75 32 44 43 36 5c 75 32 44 43 38 2d  C0-\u2DC6\u2DC8-
35e30 5c 75 32 44 43 45 5c 75 32 44 44 30 2d 5c 75 32  \u2DCE\u2DD0-\u2
35e40 44 44 36 5c 75 32 44 44 38 2d 5c 75 32 44 44 45  DD6\u2DD8-\u2DDE
35e50 5c 75 32 44 45 30 2d 5c 75 32 44 46 46 5c 75 33  \u2DE0-\u2DFF\u3
35e60 30 30 35 2d 5c 75 33 30 30 37 5c 75 33 30 32 31  005-\u3007\u3021
35e70 2d 5c 75 33 30 32 46 5c 75 33 30 33 31 2d 5c 75  -\u302F\u3031-\u
35e80 33 30 33 35 5c 75 33 30 33 38 2d 5c 75 33 30 33  3035\u3038-\u303
35e90 43 5c 75 33 30 34 31 2d 5c 75 33 30 39 36 5c 75  C\u3041-\u3096\u
35ea0 33 30 39 39 2d 5c 75 33 30 39 46 5c 75 33 30 41  3099-\u309F\u30A
35eb0 31 2d 5c 75 33 30 46 41 5c 75 33 30 46 43 2d 5c  1-\u30FA\u30FC-\
35ec0 75 33 30 46 46 5c 75 33 31 30 35 2d 5c 75 33 31  u30FF\u3105-\u31
35ed0 32 44 5c 75 33 31 33 31 2d 5c 75 33 31 38 45 5c  2D\u3131-\u318E\
35ee0 75 33 31 41 30 2d 5c 75 33 31 42 41 5c 75 33 31  u31A0-\u31BA\u31
35ef0 46 30 2d 5c 75 33 31 46 46 5c 75 33 34 30 30 2d  F0-\u31FF\u3400-
35f00 5c 75 34 44 42 35 5c 75 34 45 30 30 2d 5c 75 39  \u4DB5\u4E00-\u9
35f10 46 44 35 5c 75 41 30 30 30 2d 5c 75 41 34 38 43  FD5\uA000-\uA48C
35f20 5c 75 41 34 44 30 2d 5c 75 41 34 46 44 5c 75 41  \uA4D0-\uA4FD\uA
35f30 35 30 30 2d 5c 75 41 36 30 43 5c 75 41 36 31 30  500-\uA60C\uA610
35f40 2d 5c 75 41 36 32 42 5c 75 41 36 34 30 2d 5c 75  -\uA62B\uA640-\u
35f50 41 36 36 46 5c 75 41 36 37 34 2d 5c 75 41 36 37  A66F\uA674-\uA67
35f60 44 5c 75 41 36 37 46 2d 5c 75 41 36 46 31 5c 75  D\uA67F-\uA6F1\u
35f70 41 37 31 37 2d 5c 75 41 37 31 46 5c 75 41 37 32  A717-\uA71F\uA72
35f80 32 2d 5c 75 41 37 38 38 5c 75 41 37 38 42 2d 5c  2-\uA788\uA78B-\
35f90 75 41 37 41 44 5c 75 41 37 42 30 2d 5c 75 41 37  uA7AD\uA7B0-\uA7
35fa0 42 37 5c 75 41 37 46 37 2d 5c 75 41 38 32 37 5c  B7\uA7F7-\uA827\
35fb0 75 41 38 34 30 2d 5c 75 41 38 37 33 5c 75 41 38  uA840-\uA873\uA8
35fc0 38 30 2d 5c 75 41 38 43 34 5c 75 41 38 44 30 2d  80-\uA8C4\uA8D0-
35fd0 5c 75 41 38 44 39 5c 75 41 38 45 30 2d 5c 75 41  \uA8D9\uA8E0-\uA
35fe0 38 46 37 5c 75 41 38 46 42 5c 75 41 38 46 44 5c  8F7\uA8FB\uA8FD\
35ff0 75 41 39 30 30 2d 5c 75 41 39 32 44 5c 75 41 39  uA900-\uA92D\uA9
36000 33 30 2d 5c 75 41 39 35 33 5c 75 41 39 36 30 2d  30-\uA953\uA960-
36010 5c 75 41 39 37 43 5c 75 41 39 38 30 2d 5c 75 41  \uA97C\uA980-\uA
36020 39 43 30 5c 75 41 39 43 46 2d 5c 75 41 39 44 39  9C0\uA9CF-\uA9D9
36030 5c 75 41 39 45 30 2d 5c 75 41 39 46 45 5c 75 41  \uA9E0-\uA9FE\uA
36040 41 30 30 2d 5c 75 41 41 33 36 5c 75 41 41 34 30  A00-\uAA36\uAA40
36050 2d 5c 75 41 41 34 44 5c 75 41 41 35 30 2d 5c 75  -\uAA4D\uAA50-\u
36060 41 41 35 39 5c 75 41 41 36 30 2d 5c 75 41 41 37  AA59\uAA60-\uAA7
36070 36 5c 75 41 41 37 41 2d 5c 75 41 41 43 32 5c 75  6\uAA7A-\uAAC2\u
36080 41 41 44 42 2d 5c 75 41 41 44 44 5c 75 41 41 45  AADB-\uAADD\uAAE
36090 30 2d 5c 75 41 41 45 46 5c 75 41 41 46 32 2d 5c  0-\uAAEF\uAAF2-\
360a0 75 41 41 46 36 5c 75 41 42 30 31 2d 5c 75 41 42  uAAF6\uAB01-\uAB
360b0 30 36 5c 75 41 42 30 39 2d 5c 75 41 42 30 45 5c  06\uAB09-\uAB0E\
360c0 75 41 42 31 31 2d 5c 75 41 42 31 36 5c 75 41 42  uAB11-\uAB16\uAB
360d0 32 30 2d 5c 75 41 42 32 36 5c 75 41 42 32 38 2d  20-\uAB26\uAB28-
360e0 5c 75 41 42 32 45 5c 75 41 42 33 30 2d 5c 75 41  \uAB2E\uAB30-\uA
360f0 42 35 41 5c 75 41 42 35 43 2d 5c 75 41 42 36 35  B5A\uAB5C-\uAB65
36100 5c 75 41 42 37 30 2d 5c 75 41 42 45 41 5c 75 41  \uAB70-\uABEA\uA
36110 42 45 43 5c 75 41 42 45 44 5c 75 41 42 46 30 2d  BEC\uABED\uABF0-
36120 5c 75 41 42 46 39 5c 75 41 43 30 30 2d 5c 75 44  \uABF9\uAC00-\uD
36130 37 41 33 5c 75 44 37 42 30 2d 5c 75 44 37 43 36  7A3\uD7B0-\uD7C6
36140 5c 75 44 37 43 42 2d 5c 75 44 37 46 42 5c 75 46  \uD7CB-\uD7FB\uF
36150 39 30 30 2d 5c 75 46 41 36 44 5c 75 46 41 37 30  900-\uFA6D\uFA70
36160 2d 5c 75 46 41 44 39 5c 75 46 42 30 30 2d 5c 75  -\uFAD9\uFB00-\u
36170 46 42 30 36 5c 75 46 42 31 33 2d 5c 75 46 42 31  FB06\uFB13-\uFB1
36180 37 5c 75 46 42 31 44 2d 5c 75 46 42 32 38 5c 75  7\uFB1D-\uFB28\u
36190 46 42 32 41 2d 5c 75 46 42 33 36 5c 75 46 42 33  FB2A-\uFB36\uFB3
361a0 38 2d 5c 75 46 42 33 43 5c 75 46 42 33 45 5c 75  8-\uFB3C\uFB3E\u
361b0 46 42 34 30 5c 75 46 42 34 31 5c 75 46 42 34 33  FB40\uFB41\uFB43
361c0 5c 75 46 42 34 34 5c 75 46 42 34 36 2d 5c 75 46  \uFB44\uFB46-\uF
361d0 42 42 31 5c 75 46 42 44 33 2d 5c 75 46 44 33 44  BB1\uFBD3-\uFD3D
361e0 5c 75 46 44 35 30 2d 5c 75 46 44 38 46 5c 75 46  \uFD50-\uFD8F\uF
361f0 44 39 32 2d 5c 75 46 44 43 37 5c 75 46 44 46 30  D92-\uFDC7\uFDF0
36200 2d 5c 75 46 44 46 42 5c 75 46 45 30 30 2d 5c 75  -\uFDFB\uFE00-\u
36210 46 45 30 46 5c 75 46 45 32 30 2d 5c 75 46 45 32  FE0F\uFE20-\uFE2
36220 46 5c 75 46 45 33 33 5c 75 46 45 33 34 5c 75 46  F\uFE33\uFE34\uF
36230 45 34 44 2d 5c 75 46 45 34 46 5c 75 46 45 37 30  E4D-\uFE4F\uFE70
36240 2d 5c 75 46 45 37 34 5c 75 46 45 37 36 2d 5c 75  -\uFE74\uFE76-\u
36250 46 45 46 43 5c 75 46 46 31 30 2d 5c 75 46 46 31  FEFC\uFF10-\uFF1
36260 39 5c 75 46 46 32 31 2d 5c 75 46 46 33 41 5c 75  9\uFF21-\uFF3A\u
36270 46 46 33 46 5c 75 46 46 34 31 2d 5c 75 46 46 35  FF3F\uFF41-\uFF5
36280 41 5c 75 46 46 36 36 2d 5c 75 46 46 42 45 5c 75  A\uFF66-\uFFBE\u
36290 46 46 43 32 2d 5c 75 46 46 43 37 5c 75 46 46 43  FFC2-\uFFC7\uFFC
362a0 41 2d 5c 75 46 46 43 46 5c 75 46 46 44 32 2d 5c  A-\uFFCF\uFFD2-\
362b0 75 46 46 44 37 5c 75 46 46 44 41 2d 5c 75 46 46  uFFD7\uFFDA-\uFF
362c0 44 43 5d 7c 5c 75 44 38 30 30 5b 5c 75 44 43 30  DC]|\uD800[\uDC0
362d0 30 2d 5c 75 44 43 30 42 5c 75 44 43 30 44 2d 5c  0-\uDC0B\uDC0D-\
362e0 75 44 43 32 36 5c 75 44 43 32 38 2d 5c 75 44 43  uDC26\uDC28-\uDC
362f0 33 41 5c 75 44 43 33 43 5c 75 44 43 33 44 5c 75  3A\uDC3C\uDC3D\u
36300 44 43 33 46 2d 5c 75 44 43 34 44 5c 75 44 43 35  DC3F-\uDC4D\uDC5
36310 30 2d 5c 75 44 43 35 44 5c 75 44 43 38 30 2d 5c  0-\uDC5D\uDC80-\
36320 75 44 43 46 41 5c 75 44 44 34 30 2d 5c 75 44 44  uDCFA\uDD40-\uDD
36330 37 34 5c 75 44 44 46 44 5c 75 44 45 38 30 2d 5c  74\uDDFD\uDE80-\
36340 75 44 45 39 43 5c 75 44 45 41 30 2d 5c 75 44 45  uDE9C\uDEA0-\uDE
36350 44 30 5c 75 44 45 45 30 5c 75 44 46 30 30 2d 5c  D0\uDEE0\uDF00-\
36360 75 44 46 31 46 5c 75 44 46 33 30 2d 5c 75 44 46  uDF1F\uDF30-\uDF
36370 34 41 5c 75 44 46 35 30 2d 5c 75 44 46 37 41 5c  4A\uDF50-\uDF7A\
36380 75 44 46 38 30 2d 5c 75 44 46 39 44 5c 75 44 46  uDF80-\uDF9D\uDF
36390 41 30 2d 5c 75 44 46 43 33 5c 75 44 46 43 38 2d  A0-\uDFC3\uDFC8-
363a0 5c 75 44 46 43 46 5c 75 44 46 44 31 2d 5c 75 44  \uDFCF\uDFD1-\uD
363b0 46 44 35 5d 7c 5c 75 44 38 30 31 5b 5c 75 44 43  FD5]|\uD801[\uDC
363c0 30 30 2d 5c 75 44 43 39 44 5c 75 44 43 41 30 2d  00-\uDC9D\uDCA0-
363d0 5c 75 44 43 41 39 5c 75 44 44 30 30 2d 5c 75 44  \uDCA9\uDD00-\uD
363e0 44 32 37 5c 75 44 44 33 30 2d 5c 75 44 44 36 33  D27\uDD30-\uDD63
363f0 5c 75 44 45 30 30 2d 5c 75 44 46 33 36 5c 75 44  \uDE00-\uDF36\uD
36400 46 34 30 2d 5c 75 44 46 35 35 5c 75 44 46 36 30  F40-\uDF55\uDF60
36410 2d 5c 75 44 46 36 37 5d 7c 5c 75 44 38 30 32 5b  -\uDF67]|\uD802[
36420 5c 75 44 43 30 30 2d 5c 75 44 43 30 35 5c 75 44  \uDC00-\uDC05\uD
36430 43 30 38 5c 75 44 43 30 41 2d 5c 75 44 43 33 35  C08\uDC0A-\uDC35
36440 5c 75 44 43 33 37 5c 75 44 43 33 38 5c 75 44 43  \uDC37\uDC38\uDC
36450 33 43 5c 75 44 43 33 46 2d 5c 75 44 43 35 35 5c  3C\uDC3F-\uDC55\
36460 75 44 43 36 30 2d 5c 75 44 43 37 36 5c 75 44 43  uDC60-\uDC76\uDC
36470 38 30 2d 5c 75 44 43 39 45 5c 75 44 43 45 30 2d  80-\uDC9E\uDCE0-
36480 5c 75 44 43 46 32 5c 75 44 43 46 34 5c 75 44 43  \uDCF2\uDCF4\uDC
36490 46 35 5c 75 44 44 30 30 2d 5c 75 44 44 31 35 5c  F5\uDD00-\uDD15\
364a0 75 44 44 32 30 2d 5c 75 44 44 33 39 5c 75 44 44  uDD20-\uDD39\uDD
364b0 38 30 2d 5c 75 44 44 42 37 5c 75 44 44 42 45 5c  80-\uDDB7\uDDBE\
364c0 75 44 44 42 46 5c 75 44 45 30 30 2d 5c 75 44 45  uDDBF\uDE00-\uDE
364d0 30 33 5c 75 44 45 30 35 5c 75 44 45 30 36 5c 75  03\uDE05\uDE06\u
364e0 44 45 30 43 2d 5c 75 44 45 31 33 5c 75 44 45 31  DE0C-\uDE13\uDE1
364f0 35 2d 5c 75 44 45 31 37 5c 75 44 45 31 39 2d 5c  5-\uDE17\uDE19-\
36500 75 44 45 33 33 5c 75 44 45 33 38 2d 5c 75 44 45  uDE33\uDE38-\uDE
36510 33 41 5c 75 44 45 33 46 5c 75 44 45 36 30 2d 5c  3A\uDE3F\uDE60-\
36520 75 44 45 37 43 5c 75 44 45 38 30 2d 5c 75 44 45  uDE7C\uDE80-\uDE
36530 39 43 5c 75 44 45 43 30 2d 5c 75 44 45 43 37 5c  9C\uDEC0-\uDEC7\
36540 75 44 45 43 39 2d 5c 75 44 45 45 36 5c 75 44 46  uDEC9-\uDEE6\uDF
36550 30 30 2d 5c 75 44 46 33 35 5c 75 44 46 34 30 2d  00-\uDF35\uDF40-
36560 5c 75 44 46 35 35 5c 75 44 46 36 30 2d 5c 75 44  \uDF55\uDF60-\uD
36570 46 37 32 5c 75 44 46 38 30 2d 5c 75 44 46 39 31  F72\uDF80-\uDF91
36580 5d 7c 5c 75 44 38 30 33 5b 5c 75 44 43 30 30 2d  ]|\uD803[\uDC00-
36590 5c 75 44 43 34 38 5c 75 44 43 38 30 2d 5c 75 44  \uDC48\uDC80-\uD
365a0 43 42 32 5c 75 44 43 43 30 2d 5c 75 44 43 46 32  CB2\uDCC0-\uDCF2
365b0 5d 7c 5c 75 44 38 30 34 5b 5c 75 44 43 30 30 2d  ]|\uD804[\uDC00-
365c0 5c 75 44 43 34 36 5c 75 44 43 36 36 2d 5c 75 44  \uDC46\uDC66-\uD
365d0 43 36 46 5c 75 44 43 37 46 2d 5c 75 44 43 42 41  C6F\uDC7F-\uDCBA
365e0 5c 75 44 43 44 30 2d 5c 75 44 43 45 38 5c 75 44  \uDCD0-\uDCE8\uD
365f0 43 46 30 2d 5c 75 44 43 46 39 5c 75 44 44 30 30  CF0-\uDCF9\uDD00
36600 2d 5c 75 44 44 33 34 5c 75 44 44 33 36 2d 5c 75  -\uDD34\uDD36-\u
36610 44 44 33 46 5c 75 44 44 35 30 2d 5c 75 44 44 37  DD3F\uDD50-\uDD7
36620 33 5c 75 44 44 37 36 5c 75 44 44 38 30 2d 5c 75  3\uDD76\uDD80-\u
36630 44 44 43 34 5c 75 44 44 43 41 2d 5c 75 44 44 43  DDC4\uDDCA-\uDDC
36640 43 5c 75 44 44 44 30 2d 5c 75 44 44 44 41 5c 75  C\uDDD0-\uDDDA\u
36650 44 44 44 43 5c 75 44 45 30 30 2d 5c 75 44 45 31  DDDC\uDE00-\uDE1
36660 31 5c 75 44 45 31 33 2d 5c 75 44 45 33 37 5c 75  1\uDE13-\uDE37\u
36670 44 45 38 30 2d 5c 75 44 45 38 36 5c 75 44 45 38  DE80-\uDE86\uDE8
36680 38 5c 75 44 45 38 41 2d 5c 75 44 45 38 44 5c 75  8\uDE8A-\uDE8D\u
36690 44 45 38 46 2d 5c 75 44 45 39 44 5c 75 44 45 39  DE8F-\uDE9D\uDE9
366a0 46 2d 5c 75 44 45 41 38 5c 75 44 45 42 30 2d 5c  F-\uDEA8\uDEB0-\
366b0 75 44 45 45 41 5c 75 44 45 46 30 2d 5c 75 44 45  uDEEA\uDEF0-\uDE
366c0 46 39 5c 75 44 46 30 30 2d 5c 75 44 46 30 33 5c  F9\uDF00-\uDF03\
366d0 75 44 46 30 35 2d 5c 75 44 46 30 43 5c 75 44 46  uDF05-\uDF0C\uDF
366e0 30 46 5c 75 44 46 31 30 5c 75 44 46 31 33 2d 5c  0F\uDF10\uDF13-\
366f0 75 44 46 32 38 5c 75 44 46 32 41 2d 5c 75 44 46  uDF28\uDF2A-\uDF
36700 33 30 5c 75 44 46 33 32 5c 75 44 46 33 33 5c 75  30\uDF32\uDF33\u
36710 44 46 33 35 2d 5c 75 44 46 33 39 5c 75 44 46 33  DF35-\uDF39\uDF3
36720 43 2d 5c 75 44 46 34 34 5c 75 44 46 34 37 5c 75  C-\uDF44\uDF47\u
36730 44 46 34 38 5c 75 44 46 34 42 2d 5c 75 44 46 34  DF48\uDF4B-\uDF4
36740 44 5c 75 44 46 35 30 5c 75 44 46 35 37 5c 75 44  D\uDF50\uDF57\uD
36750 46 35 44 2d 5c 75 44 46 36 33 5c 75 44 46 36 36  F5D-\uDF63\uDF66
36760 2d 5c 75 44 46 36 43 5c 75 44 46 37 30 2d 5c 75  -\uDF6C\uDF70-\u
36770 44 46 37 34 5d 7c 5c 75 44 38 30 35 5b 5c 75 44  DF74]|\uD805[\uD
36780 43 38 30 2d 5c 75 44 43 43 35 5c 75 44 43 43 37  C80-\uDCC5\uDCC7
36790 5c 75 44 43 44 30 2d 5c 75 44 43 44 39 5c 75 44  \uDCD0-\uDCD9\uD
367a0 44 38 30 2d 5c 75 44 44 42 35 5c 75 44 44 42 38  D80-\uDDB5\uDDB8
367b0 2d 5c 75 44 44 43 30 5c 75 44 44 44 38 2d 5c 75  -\uDDC0\uDDD8-\u
367c0 44 44 44 44 5c 75 44 45 30 30 2d 5c 75 44 45 34  DDDD\uDE00-\uDE4
367d0 30 5c 75 44 45 34 34 5c 75 44 45 35 30 2d 5c 75  0\uDE44\uDE50-\u
367e0 44 45 35 39 5c 75 44 45 38 30 2d 5c 75 44 45 42  DE59\uDE80-\uDEB
367f0 37 5c 75 44 45 43 30 2d 5c 75 44 45 43 39 5c 75  7\uDEC0-\uDEC9\u
36800 44 46 30 30 2d 5c 75 44 46 31 39 5c 75 44 46 31  DF00-\uDF19\uDF1
36810 44 2d 5c 75 44 46 32 42 5c 75 44 46 33 30 2d 5c  D-\uDF2B\uDF30-\
36820 75 44 46 33 39 5d 7c 5c 75 44 38 30 36 5b 5c 75  uDF39]|\uD806[\u
36830 44 43 41 30 2d 5c 75 44 43 45 39 5c 75 44 43 46  DCA0-\uDCE9\uDCF
36840 46 5c 75 44 45 43 30 2d 5c 75 44 45 46 38 5d 7c  F\uDEC0-\uDEF8]|
36850 5c 75 44 38 30 38 5b 5c 75 44 43 30 30 2d 5c 75  \uD808[\uDC00-\u
36860 44 46 39 39 5d 7c 5c 75 44 38 30 39 5b 5c 75 44  DF99]|\uD809[\uD
36870 43 30 30 2d 5c 75 44 43 36 45 5c 75 44 43 38 30  C00-\uDC6E\uDC80
36880 2d 5c 75 44 44 34 33 5d 7c 5b 5c 75 44 38 30 43  -\uDD43]|[\uD80C
36890 5c 75 44 38 34 30 2d 5c 75 44 38 36 38 5c 75 44  \uD840-\uD868\uD
368a0 38 36 41 2d 5c 75 44 38 36 43 5c 75 44 38 36 46  86A-\uD86C\uD86F
368b0 2d 5c 75 44 38 37 32 5d 5b 5c 75 44 43 30 30 2d  -\uD872][\uDC00-
368c0 5c 75 44 46 46 46 5d 7c 5c 75 44 38 30 44 5b 5c  \uDFFF]|\uD80D[\
368d0 75 44 43 30 30 2d 5c 75 44 43 32 45 5d 7c 5c 75  uDC00-\uDC2E]|\u
368e0 44 38 31 31 5b 5c 75 44 43 30 30 2d 5c 75 44 45  D811[\uDC00-\uDE
368f0 34 36 5d 7c 5c 75 44 38 31 41 5b 5c 75 44 43 30  46]|\uD81A[\uDC0
36900 30 2d 5c 75 44 45 33 38 5c 75 44 45 34 30 2d 5c  0-\uDE38\uDE40-\
36910 75 44 45 35 45 5c 75 44 45 36 30 2d 5c 75 44 45  uDE5E\uDE60-\uDE
36920 36 39 5c 75 44 45 44 30 2d 5c 75 44 45 45 44 5c  69\uDED0-\uDEED\
36930 75 44 45 46 30 2d 5c 75 44 45 46 34 5c 75 44 46  uDEF0-\uDEF4\uDF
36940 30 30 2d 5c 75 44 46 33 36 5c 75 44 46 34 30 2d  00-\uDF36\uDF40-
36950 5c 75 44 46 34 33 5c 75 44 46 35 30 2d 5c 75 44  \uDF43\uDF50-\uD
36960 46 35 39 5c 75 44 46 36 33 2d 5c 75 44 46 37 37  F59\uDF63-\uDF77
36970 5c 75 44 46 37 44 2d 5c 75 44 46 38 46 5d 7c 5c  \uDF7D-\uDF8F]|\
36980 75 44 38 31 42 5b 5c 75 44 46 30 30 2d 5c 75 44  uD81B[\uDF00-\uD
36990 46 34 34 5c 75 44 46 35 30 2d 5c 75 44 46 37 45  F44\uDF50-\uDF7E
369a0 5c 75 44 46 38 46 2d 5c 75 44 46 39 46 5d 7c 5c  \uDF8F-\uDF9F]|\
369b0 75 44 38 32 43 5b 5c 75 44 43 30 30 5c 75 44 43  uD82C[\uDC00\uDC
369c0 30 31 5d 7c 5c 75 44 38 32 46 5b 5c 75 44 43 30  01]|\uD82F[\uDC0
369d0 30 2d 5c 75 44 43 36 41 5c 75 44 43 37 30 2d 5c  0-\uDC6A\uDC70-\
369e0 75 44 43 37 43 5c 75 44 43 38 30 2d 5c 75 44 43  uDC7C\uDC80-\uDC
369f0 38 38 5c 75 44 43 39 30 2d 5c 75 44 43 39 39 5c  88\uDC90-\uDC99\
36a00 75 44 43 39 44 5c 75 44 43 39 45 5d 7c 5c 75 44  uDC9D\uDC9E]|\uD
36a10 38 33 34 5b 5c 75 44 44 36 35 2d 5c 75 44 44 36  834[\uDD65-\uDD6
36a20 39 5c 75 44 44 36 44 2d 5c 75 44 44 37 32 5c 75  9\uDD6D-\uDD72\u
36a30 44 44 37 42 2d 5c 75 44 44 38 32 5c 75 44 44 38  DD7B-\uDD82\uDD8
36a40 35 2d 5c 75 44 44 38 42 5c 75 44 44 41 41 2d 5c  5-\uDD8B\uDDAA-\
36a50 75 44 44 41 44 5c 75 44 45 34 32 2d 5c 75 44 45  uDDAD\uDE42-\uDE
36a60 34 34 5d 7c 5c 75 44 38 33 35 5b 5c 75 44 43 30  44]|\uD835[\uDC0
36a70 30 2d 5c 75 44 43 35 34 5c 75 44 43 35 36 2d 5c  0-\uDC54\uDC56-\
36a80 75 44 43 39 43 5c 75 44 43 39 45 5c 75 44 43 39  uDC9C\uDC9E\uDC9
36a90 46 5c 75 44 43 41 32 5c 75 44 43 41 35 5c 75 44  F\uDCA2\uDCA5\uD
36aa0 43 41 36 5c 75 44 43 41 39 2d 5c 75 44 43 41 43  CA6\uDCA9-\uDCAC
36ab0 5c 75 44 43 41 45 2d 5c 75 44 43 42 39 5c 75 44  \uDCAE-\uDCB9\uD
36ac0 43 42 42 5c 75 44 43 42 44 2d 5c 75 44 43 43 33  CBB\uDCBD-\uDCC3
36ad0 5c 75 44 43 43 35 2d 5c 75 44 44 30 35 5c 75 44  \uDCC5-\uDD05\uD
36ae0 44 30 37 2d 5c 75 44 44 30 41 5c 75 44 44 30 44  D07-\uDD0A\uDD0D
36af0 2d 5c 75 44 44 31 34 5c 75 44 44 31 36 2d 5c 75  -\uDD14\uDD16-\u
36b00 44 44 31 43 5c 75 44 44 31 45 2d 5c 75 44 44 33  DD1C\uDD1E-\uDD3
36b10 39 5c 75 44 44 33 42 2d 5c 75 44 44 33 45 5c 75  9\uDD3B-\uDD3E\u
36b20 44 44 34 30 2d 5c 75 44 44 34 34 5c 75 44 44 34  DD40-\uDD44\uDD4
36b30 36 5c 75 44 44 34 41 2d 5c 75 44 44 35 30 5c 75  6\uDD4A-\uDD50\u
36b40 44 44 35 32 2d 5c 75 44 45 41 35 5c 75 44 45 41  DD52-\uDEA5\uDEA
36b50 38 2d 5c 75 44 45 43 30 5c 75 44 45 43 32 2d 5c  8-\uDEC0\uDEC2-\
36b60 75 44 45 44 41 5c 75 44 45 44 43 2d 5c 75 44 45  uDEDA\uDEDC-\uDE
36b70 46 41 5c 75 44 45 46 43 2d 5c 75 44 46 31 34 5c  FA\uDEFC-\uDF14\
36b80 75 44 46 31 36 2d 5c 75 44 46 33 34 5c 75 44 46  uDF16-\uDF34\uDF
36b90 33 36 2d 5c 75 44 46 34 45 5c 75 44 46 35 30 2d  36-\uDF4E\uDF50-
36ba0 5c 75 44 46 36 45 5c 75 44 46 37 30 2d 5c 75 44  \uDF6E\uDF70-\uD
36bb0 46 38 38 5c 75 44 46 38 41 2d 5c 75 44 46 41 38  F88\uDF8A-\uDFA8
36bc0 5c 75 44 46 41 41 2d 5c 75 44 46 43 32 5c 75 44  \uDFAA-\uDFC2\uD
36bd0 46 43 34 2d 5c 75 44 46 43 42 5c 75 44 46 43 45  FC4-\uDFCB\uDFCE
36be0 2d 5c 75 44 46 46 46 5d 7c 5c 75 44 38 33 36 5b  -\uDFFF]|\uD836[
36bf0 5c 75 44 45 30 30 2d 5c 75 44 45 33 36 5c 75 44  \uDE00-\uDE36\uD
36c00 45 33 42 2d 5c 75 44 45 36 43 5c 75 44 45 37 35  E3B-\uDE6C\uDE75
36c10 5c 75 44 45 38 34 5c 75 44 45 39 42 2d 5c 75 44  \uDE84\uDE9B-\uD
36c20 45 39 46 5c 75 44 45 41 31 2d 5c 75 44 45 41 46  E9F\uDEA1-\uDEAF
36c30 5d 7c 5c 75 44 38 33 41 5b 5c 75 44 43 30 30 2d  ]|\uD83A[\uDC00-
36c40 5c 75 44 43 43 34 5c 75 44 43 44 30 2d 5c 75 44  \uDCC4\uDCD0-\uD
36c50 43 44 36 5d 7c 5c 75 44 38 33 42 5b 5c 75 44 45  CD6]|\uD83B[\uDE
36c60 30 30 2d 5c 75 44 45 30 33 5c 75 44 45 30 35 2d  00-\uDE03\uDE05-
36c70 5c 75 44 45 31 46 5c 75 44 45 32 31 5c 75 44 45  \uDE1F\uDE21\uDE
36c80 32 32 5c 75 44 45 32 34 5c 75 44 45 32 37 5c 75  22\uDE24\uDE27\u
36c90 44 45 32 39 2d 5c 75 44 45 33 32 5c 75 44 45 33  DE29-\uDE32\uDE3
36ca0 34 2d 5c 75 44 45 33 37 5c 75 44 45 33 39 5c 75  4-\uDE37\uDE39\u
36cb0 44 45 33 42 5c 75 44 45 34 32 5c 75 44 45 34 37  DE3B\uDE42\uDE47
36cc0 5c 75 44 45 34 39 5c 75 44 45 34 42 5c 75 44 45  \uDE49\uDE4B\uDE
36cd0 34 44 2d 5c 75 44 45 34 46 5c 75 44 45 35 31 5c  4D-\uDE4F\uDE51\
36ce0 75 44 45 35 32 5c 75 44 45 35 34 5c 75 44 45 35  uDE52\uDE54\uDE5
36cf0 37 5c 75 44 45 35 39 5c 75 44 45 35 42 5c 75 44  7\uDE59\uDE5B\uD
36d00 45 35 44 5c 75 44 45 35 46 5c 75 44 45 36 31 5c  E5D\uDE5F\uDE61\
36d10 75 44 45 36 32 5c 75 44 45 36 34 5c 75 44 45 36  uDE62\uDE64\uDE6
36d20 37 2d 5c 75 44 45 36 41 5c 75 44 45 36 43 2d 5c  7-\uDE6A\uDE6C-\
36d30 75 44 45 37 32 5c 75 44 45 37 34 2d 5c 75 44 45  uDE72\uDE74-\uDE
36d40 37 37 5c 75 44 45 37 39 2d 5c 75 44 45 37 43 5c  77\uDE79-\uDE7C\
36d50 75 44 45 37 45 5c 75 44 45 38 30 2d 5c 75 44 45  uDE7E\uDE80-\uDE
36d60 38 39 5c 75 44 45 38 42 2d 5c 75 44 45 39 42 5c  89\uDE8B-\uDE9B\
36d70 75 44 45 41 31 2d 5c 75 44 45 41 33 5c 75 44 45  uDEA1-\uDEA3\uDE
36d80 41 35 2d 5c 75 44 45 41 39 5c 75 44 45 41 42 2d  A5-\uDEA9\uDEAB-
36d90 5c 75 44 45 42 42 5d 7c 5c 75 44 38 36 39 5b 5c  \uDEBB]|\uD869[\
36da0 75 44 43 30 30 2d 5c 75 44 45 44 36 5c 75 44 46  uDC00-\uDED6\uDF
36db0 30 30 2d 5c 75 44 46 46 46 5d 7c 5c 75 44 38 36  00-\uDFFF]|\uD86
36dc0 44 5b 5c 75 44 43 30 30 2d 5c 75 44 46 33 34 5c  D[\uDC00-\uDF34\
36dd0 75 44 46 34 30 2d 5c 75 44 46 46 46 5d 7c 5c 75  uDF40-\uDFFF]|\u
36de0 44 38 36 45 5b 5c 75 44 43 30 30 2d 5c 75 44 43  D86E[\uDC00-\uDC
36df0 31 44 5c 75 44 43 32 30 2d 5c 75 44 46 46 46 5d  1D\uDC20-\uDFFF]
36e00 7c 5c 75 44 38 37 33 5b 5c 75 44 43 30 30 2d 5c  |\uD873[\uDC00-\
36e10 75 44 45 41 31 5d 7c 5c 75 44 38 37 45 5b 5c 75  uDEA1]|\uD87E[\u
36e20 44 43 30 30 2d 5c 75 44 45 31 44 5d 7c 5c 75 44  DC00-\uDE1D]|\uD
36e30 42 34 30 5b 5c 75 44 44 30 30 2d 5c 75 44 44 45  B40[\uDD00-\uDDE
36e40 46 5d 2f 0a 20 20 09 7d 3b 0a 20 20 09 65 78 70  F]/.  .};.  .exp
36e50 6f 72 74 73 2e 43 68 61 72 61 63 74 65 72 20 3d  orts.Character =
36e60 20 7b 0a 20 20 09 20 20 20 20 66 72 6f 6d 43 6f   {.  .    fromCo
36e70 64 65 50 6f 69 6e 74 3a 20 66 75 6e 63 74 69 6f  dePoint: functio
36e80 6e 20 28 63 70 29 20 7b 0a 20 20 09 20 20 20 20  n (cp) {.  .    
36e90 20 20 20 20 72 65 74 75 72 6e 20 28 63 70 20 3c      return (cp <
36ea0 20 30 78 31 30 30 30 30 29 20 3f 20 53 74 72 69   0x10000) ? Stri
36eb0 6e 67 2e 66 72 6f 6d 43 68 61 72 43 6f 64 65 28  ng.fromCharCode(
36ec0 63 70 29 20 3a 0a 20 20 09 20 20 20 20 20 20 20  cp) :.  .       
36ed0 20 20 20 20 20 53 74 72 69 6e 67 2e 66 72 6f 6d       String.from
36ee0 43 68 61 72 43 6f 64 65 28 30 78 44 38 30 30 20  CharCode(0xD800 
36ef0 2b 20 28 28 63 70 20 2d 20 30 78 31 30 30 30 30  + ((cp - 0x10000
36f00 29 20 3e 3e 20 31 30 29 29 20 2b 0a 20 20 09 20  ) >> 10)) +.  . 
36f10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
36f20 74 72 69 6e 67 2e 66 72 6f 6d 43 68 61 72 43 6f  tring.fromCharCo
36f30 64 65 28 30 78 44 43 30 30 20 2b 20 28 28 63 70  de(0xDC00 + ((cp
36f40 20 2d 20 30 78 31 30 30 30 30 29 20 26 20 31 30   - 0x10000) & 10
36f50 32 33 29 29 3b 0a 20 20 09 20 20 20 20 7d 2c 0a  23));.  .    },.
36f60 20 20 09 20 20 20 20 2f 2f 20 45 43 4d 41 2d 32    .    // ECMA-2
36f70 36 32 20 31 31 2e 32 20 57 68 69 74 65 20 53 70  62 11.2 White Sp
36f80 61 63 65 0a 20 20 09 20 20 20 20 69 73 57 68 69  ace.  .    isWhi
36f90 74 65 53 70 61 63 65 3a 20 66 75 6e 63 74 69 6f  teSpace: functio
36fa0 6e 20 28 63 70 29 20 7b 0a 20 20 09 20 20 20 20  n (cp) {.  .    
36fb0 20 20 20 20 72 65 74 75 72 6e 20 28 63 70 20 3d      return (cp =
36fc0 3d 3d 20 30 78 32 30 29 20 7c 7c 20 28 63 70 20  == 0x20) || (cp 
36fd0 3d 3d 3d 20 30 78 30 39 29 20 7c 7c 20 28 63 70  === 0x09) || (cp
36fe0 20 3d 3d 3d 20 30 78 30 42 29 20 7c 7c 20 28 63   === 0x0B) || (c
36ff0 70 20 3d 3d 3d 20 30 78 30 43 29 20 7c 7c 20 28  p === 0x0C) || (
37000 63 70 20 3d 3d 3d 20 30 78 41 30 29 20 7c 7c 0a  cp === 0xA0) ||.
37010 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 28    .            (
37020 63 70 20 3e 3d 20 30 78 31 36 38 30 20 26 26 20  cp >= 0x1680 && 
37030 5b 30 78 31 36 38 30 2c 20 30 78 32 30 30 30 2c  [0x1680, 0x2000,
37040 20 30 78 32 30 30 31 2c 20 30 78 32 30 30 32 2c   0x2001, 0x2002,
37050 20 30 78 32 30 30 33 2c 20 30 78 32 30 30 34 2c   0x2003, 0x2004,
37060 20 30 78 32 30 30 35 2c 20 30 78 32 30 30 36 2c   0x2005, 0x2006,
37070 20 30 78 32 30 30 37 2c 20 30 78 32 30 30 38 2c   0x2007, 0x2008,
37080 20 30 78 32 30 30 39 2c 20 30 78 32 30 30 41 2c   0x2009, 0x200A,
37090 20 30 78 32 30 32 46 2c 20 30 78 32 30 35 46 2c   0x202F, 0x205F,
370a0 20 30 78 33 30 30 30 2c 20 30 78 46 45 46 46 5d   0x3000, 0xFEFF]
370b0 2e 69 6e 64 65 78 4f 66 28 63 70 29 20 3e 3d 20  .indexOf(cp) >= 
370c0 30 29 3b 0a 20 20 09 20 20 20 20 7d 2c 0a 20 20  0);.  .    },.  
370d0 09 20 20 20 20 2f 2f 20 45 43 4d 41 2d 32 36 32  .    // ECMA-262
370e0 20 31 31 2e 33 20 4c 69 6e 65 20 54 65 72 6d 69   11.3 Line Termi
370f0 6e 61 74 6f 72 73 0a 20 20 09 20 20 20 20 69 73  nators.  .    is
37100 4c 69 6e 65 54 65 72 6d 69 6e 61 74 6f 72 3a 20  LineTerminator: 
37110 66 75 6e 63 74 69 6f 6e 20 28 63 70 29 20 7b 0a  function (cp) {.
37120 20 20 09 20 20 20 20 20 20 20 20 72 65 74 75 72    .        retur
37130 6e 20 28 63 70 20 3d 3d 3d 20 30 78 30 41 29 20  n (cp === 0x0A) 
37140 7c 7c 20 28 63 70 20 3d 3d 3d 20 30 78 30 44 29  || (cp === 0x0D)
37150 20 7c 7c 20 28 63 70 20 3d 3d 3d 20 30 78 32 30   || (cp === 0x20
37160 32 38 29 20 7c 7c 20 28 63 70 20 3d 3d 3d 20 30  28) || (cp === 0
37170 78 32 30 32 39 29 3b 0a 20 20 09 20 20 20 20 7d  x2029);.  .    }
37180 2c 0a 20 20 09 20 20 20 20 2f 2f 20 45 43 4d 41  ,.  .    // ECMA
37190 2d 32 36 32 20 31 31 2e 36 20 49 64 65 6e 74 69  -262 11.6 Identi
371a0 66 69 65 72 20 4e 61 6d 65 73 20 61 6e 64 20 49  fier Names and I
371b0 64 65 6e 74 69 66 69 65 72 73 0a 20 20 09 20 20  dentifiers.  .  
371c0 20 20 69 73 49 64 65 6e 74 69 66 69 65 72 53 74    isIdentifierSt
371d0 61 72 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 63  art: function (c
371e0 70 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20  p) {.  .        
371f0 72 65 74 75 72 6e 20 28 63 70 20 3d 3d 3d 20 30  return (cp === 0
37200 78 32 34 29 20 7c 7c 20 28 63 70 20 3d 3d 3d 20  x24) || (cp === 
37210 30 78 35 46 29 20 7c 7c 0a 20 20 09 20 20 20 20  0x5F) ||.  .    
37220 20 20 20 20 20 20 20 20 28 63 70 20 3e 3d 20 30          (cp >= 0
37230 78 34 31 20 26 26 20 63 70 20 3c 3d 20 30 78 35  x41 && cp <= 0x5
37240 41 29 20 7c 7c 0a 20 20 09 20 20 20 20 20 20 20  A) ||.  .       
37250 20 20 20 20 20 28 63 70 20 3e 3d 20 30 78 36 31       (cp >= 0x61
37260 20 26 26 20 63 70 20 3c 3d 20 30 78 37 41 29 20   && cp <= 0x7A) 
37270 7c 7c 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  ||.  .          
37280 20 20 28 63 70 20 3d 3d 3d 20 30 78 35 43 29 20    (cp === 0x5C) 
37290 7c 7c 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  ||.  .          
372a0 20 20 28 28 63 70 20 3e 3d 20 30 78 38 30 29 20    ((cp >= 0x80) 
372b0 26 26 20 52 65 67 65 78 2e 4e 6f 6e 41 73 63 69  && Regex.NonAsci
372c0 69 49 64 65 6e 74 69 66 69 65 72 53 74 61 72 74  iIdentifierStart
372d0 2e 74 65 73 74 28 65 78 70 6f 72 74 73 2e 43 68  .test(exports.Ch
372e0 61 72 61 63 74 65 72 2e 66 72 6f 6d 43 6f 64 65  aracter.fromCode
372f0 50 6f 69 6e 74 28 63 70 29 29 29 3b 0a 20 20 09  Point(cp)));.  .
37300 20 20 20 20 7d 2c 0a 20 20 09 20 20 20 20 69 73      },.  .    is
37310 49 64 65 6e 74 69 66 69 65 72 50 61 72 74 3a 20  IdentifierPart: 
37320 66 75 6e 63 74 69 6f 6e 20 28 63 70 29 20 7b 0a  function (cp) {.
37330 20 20 09 20 20 20 20 20 20 20 20 72 65 74 75 72    .        retur
37340 6e 20 28 63 70 20 3d 3d 3d 20 30 78 32 34 29 20  n (cp === 0x24) 
37350 7c 7c 20 28 63 70 20 3d 3d 3d 20 30 78 35 46 29  || (cp === 0x5F)
37360 20 7c 7c 0a 20 20 09 20 20 20 20 20 20 20 20 20   ||.  .         
37370 20 20 20 28 63 70 20 3e 3d 20 30 78 34 31 20 26     (cp >= 0x41 &
37380 26 20 63 70 20 3c 3d 20 30 78 35 41 29 20 7c 7c  & cp <= 0x5A) ||
37390 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
373a0 28 63 70 20 3e 3d 20 30 78 36 31 20 26 26 20 63  (cp >= 0x61 && c
373b0 70 20 3c 3d 20 30 78 37 41 29 20 7c 7c 0a 20 20  p <= 0x7A) ||.  
373c0 09 20 20 20 20 20 20 20 20 20 20 20 20 28 63 70  .            (cp
373d0 20 3e 3d 20 30 78 33 30 20 26 26 20 63 70 20 3c   >= 0x30 && cp <
373e0 3d 20 30 78 33 39 29 20 7c 7c 0a 20 20 09 20 20  = 0x39) ||.  .  
373f0 20 20 20 20 20 20 20 20 20 20 28 63 70 20 3d 3d            (cp ==
37400 3d 20 30 78 35 43 29 20 7c 7c 0a 20 20 09 20 20  = 0x5C) ||.  .  
37410 20 20 20 20 20 20 20 20 20 20 28 28 63 70 20 3e            ((cp >
37420 3d 20 30 78 38 30 29 20 26 26 20 52 65 67 65 78  = 0x80) && Regex
37430 2e 4e 6f 6e 41 73 63 69 69 49 64 65 6e 74 69 66  .NonAsciiIdentif
37440 69 65 72 50 61 72 74 2e 74 65 73 74 28 65 78 70  ierPart.test(exp
37450 6f 72 74 73 2e 43 68 61 72 61 63 74 65 72 2e 66  orts.Character.f
37460 72 6f 6d 43 6f 64 65 50 6f 69 6e 74 28 63 70 29  romCodePoint(cp)
37470 29 29 3b 0a 20 20 09 20 20 20 20 7d 2c 0a 20 20  ));.  .    },.  
37480 09 20 20 20 20 2f 2f 20 45 43 4d 41 2d 32 36 32  .    // ECMA-262
37490 20 31 31 2e 38 2e 33 20 4e 75 6d 65 72 69 63 20   11.8.3 Numeric 
374a0 4c 69 74 65 72 61 6c 73 0a 20 20 09 20 20 20 20  Literals.  .    
374b0 69 73 44 65 63 69 6d 61 6c 44 69 67 69 74 3a 20  isDecimalDigit: 
374c0 66 75 6e 63 74 69 6f 6e 20 28 63 70 29 20 7b 0a  function (cp) {.
374d0 20 20 09 20 20 20 20 20 20 20 20 72 65 74 75 72    .        retur
374e0 6e 20 28 63 70 20 3e 3d 20 30 78 33 30 20 26 26  n (cp >= 0x30 &&
374f0 20 63 70 20 3c 3d 20 30 78 33 39 29 3b 20 2f 2f   cp <= 0x39); //
37500 20 30 2e 2e 39 0a 20 20 09 20 20 20 20 7d 2c 0a   0..9.  .    },.
37510 20 20 09 20 20 20 20 69 73 48 65 78 44 69 67 69    .    isHexDigi
37520 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 63 70 29  t: function (cp)
37530 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 72 65   {.  .        re
37540 74 75 72 6e 20 28 63 70 20 3e 3d 20 30 78 33 30  turn (cp >= 0x30
37550 20 26 26 20 63 70 20 3c 3d 20 30 78 33 39 29 20   && cp <= 0x39) 
37560 7c 7c 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  ||.  .          
37570 20 20 28 63 70 20 3e 3d 20 30 78 34 31 20 26 26    (cp >= 0x41 &&
37580 20 63 70 20 3c 3d 20 30 78 34 36 29 20 7c 7c 0a   cp <= 0x46) ||.
37590 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 28    .            (
375a0 63 70 20 3e 3d 20 30 78 36 31 20 26 26 20 63 70  cp >= 0x61 && cp
375b0 20 3c 3d 20 30 78 36 36 29 3b 20 2f 2f 20 61 2e   <= 0x66); // a.
375c0 2e 66 0a 20 20 09 20 20 20 20 7d 2c 0a 20 20 09  .f.  .    },.  .
375d0 20 20 20 20 69 73 4f 63 74 61 6c 44 69 67 69 74      isOctalDigit
375e0 3a 20 66 75 6e 63 74 69 6f 6e 20 28 63 70 29 20  : function (cp) 
375f0 7b 0a 20 20 09 20 20 20 20 20 20 20 20 72 65 74  {.  .        ret
37600 75 72 6e 20 28 63 70 20 3e 3d 20 30 78 33 30 20  urn (cp >= 0x30 
37610 26 26 20 63 70 20 3c 3d 20 30 78 33 37 29 3b 20  && cp <= 0x37); 
37620 2f 2f 20 30 2e 2e 37 0a 20 20 09 20 20 20 20 7d  // 0..7.  .    }
37630 0a 20 20 09 7d 3b 0a 0a 0a 20 20 2f 2a 2a 2a 2f  .  .};...  /***/
37640 20 7d 2c 0a 20 20 2f 2a 20 31 30 20 2a 2f 0a 20   },.  /* 10 */. 
37650 20 2f 2a 2a 2a 2f 20 66 75 6e 63 74 69 6f 6e 28   /***/ function(
37660 6d 6f 64 75 6c 65 2c 20 65 78 70 6f 72 74 73 2c  module, exports,
37670 20 5f 5f 77 65 62 70 61 63 6b 5f 72 65 71 75 69   __webpack_requi
37680 72 65 5f 5f 29 20 7b 0a 20 20 09 76 61 72 20 73  re__) {.  .var s
37690 79 6e 74 61 78 5f 31 20 3d 20 5f 5f 77 65 62 70  yntax_1 = __webp
376a0 61 63 6b 5f 72 65 71 75 69 72 65 5f 5f 28 32 29  ack_require__(2)
376b0 3b 0a 20 20 09 76 61 72 20 41 72 72 61 79 45 78  ;.  .var ArrayEx
376c0 70 72 65 73 73 69 6f 6e 20 3d 20 28 66 75 6e 63  pression = (func
376d0 74 69 6f 6e 20 28 29 20 7b 0a 20 20 09 20 20 20  tion () {.  .   
376e0 20 66 75 6e 63 74 69 6f 6e 20 41 72 72 61 79 45   function ArrayE
376f0 78 70 72 65 73 73 69 6f 6e 28 65 6c 65 6d 65 6e  xpression(elemen
37700 74 73 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20  ts) {.  .       
37710 20 74 68 69 73 2e 74 79 70 65 20 3d 20 73 79 6e   this.type = syn
37720 74 61 78 5f 31 2e 53 79 6e 74 61 78 2e 41 72 72  tax_1.Syntax.Arr
37730 61 79 45 78 70 72 65 73 73 69 6f 6e 3b 0a 20 20  ayExpression;.  
37740 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 65 6c  .        this.el
37750 65 6d 65 6e 74 73 20 3d 20 65 6c 65 6d 65 6e 74  ements = element
37760 73 3b 0a 20 20 09 20 20 20 20 7d 0a 20 20 09 20  s;.  .    }.  . 
37770 20 20 20 72 65 74 75 72 6e 20 41 72 72 61 79 45     return ArrayE
37780 78 70 72 65 73 73 69 6f 6e 3b 0a 20 20 09 7d 28  xpression;.  .}(
37790 29 29 3b 0a 20 20 09 65 78 70 6f 72 74 73 2e 41  ));.  .exports.A
377a0 72 72 61 79 45 78 70 72 65 73 73 69 6f 6e 20 3d  rrayExpression =
377b0 20 41 72 72 61 79 45 78 70 72 65 73 73 69 6f 6e   ArrayExpression
377c0 3b 0a 20 20 09 76 61 72 20 41 72 72 61 79 50 61  ;.  .var ArrayPa
377d0 74 74 65 72 6e 20 3d 20 28 66 75 6e 63 74 69 6f  ttern = (functio
377e0 6e 20 28 29 20 7b 0a 20 20 09 20 20 20 20 66 75  n () {.  .    fu
377f0 6e 63 74 69 6f 6e 20 41 72 72 61 79 50 61 74 74  nction ArrayPatt
37800 65 72 6e 28 65 6c 65 6d 65 6e 74 73 29 20 7b 0a  ern(elements) {.
37810 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e    .        this.
37820 74 79 70 65 20 3d 20 73 79 6e 74 61 78 5f 31 2e  type = syntax_1.
37830 53 79 6e 74 61 78 2e 41 72 72 61 79 50 61 74 74  Syntax.ArrayPatt
37840 65 72 6e 3b 0a 20 20 09 20 20 20 20 20 20 20 20  ern;.  .        
37850 74 68 69 73 2e 65 6c 65 6d 65 6e 74 73 20 3d 20  this.elements = 
37860 65 6c 65 6d 65 6e 74 73 3b 0a 20 20 09 20 20 20  elements;.  .   
37870 20 7d 0a 20 20 09 20 20 20 20 72 65 74 75 72 6e   }.  .    return
37880 20 41 72 72 61 79 50 61 74 74 65 72 6e 3b 0a 20   ArrayPattern;. 
37890 20 09 7d 28 29 29 3b 0a 20 20 09 65 78 70 6f 72   .}());.  .expor
378a0 74 73 2e 41 72 72 61 79 50 61 74 74 65 72 6e 20  ts.ArrayPattern 
378b0 3d 20 41 72 72 61 79 50 61 74 74 65 72 6e 3b 0a  = ArrayPattern;.
378c0 20 20 09 76 61 72 20 41 72 72 6f 77 46 75 6e 63    .var ArrowFunc
378d0 74 69 6f 6e 45 78 70 72 65 73 73 69 6f 6e 20 3d  tionExpression =
378e0 20 28 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a   (function () {.
378f0 20 20 09 20 20 20 20 66 75 6e 63 74 69 6f 6e 20    .    function 
37900 41 72 72 6f 77 46 75 6e 63 74 69 6f 6e 45 78 70  ArrowFunctionExp
37910 72 65 73 73 69 6f 6e 28 70 61 72 61 6d 73 2c 20  ression(params, 
37920 62 6f 64 79 2c 20 65 78 70 72 65 73 73 69 6f 6e  body, expression
37930 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 74  ) {.  .        t
37940 68 69 73 2e 74 79 70 65 20 3d 20 73 79 6e 74 61  his.type = synta
37950 78 5f 31 2e 53 79 6e 74 61 78 2e 41 72 72 6f 77  x_1.Syntax.Arrow
37960 46 75 6e 63 74 69 6f 6e 45 78 70 72 65 73 73 69  FunctionExpressi
37970 6f 6e 3b 0a 20 20 09 20 20 20 20 20 20 20 20 74  on;.  .        t
37980 68 69 73 2e 69 64 20 3d 20 6e 75 6c 6c 3b 0a 20  his.id = null;. 
37990 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 70   .        this.p
379a0 61 72 61 6d 73 20 3d 20 70 61 72 61 6d 73 3b 0a  arams = params;.
379b0 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e    .        this.
379c0 62 6f 64 79 20 3d 20 62 6f 64 79 3b 0a 20 20 09  body = body;.  .
379d0 20 20 20 20 20 20 20 20 74 68 69 73 2e 67 65 6e          this.gen
379e0 65 72 61 74 6f 72 20 3d 20 66 61 6c 73 65 3b 0a  erator = false;.
379f0 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e    .        this.
37a00 65 78 70 72 65 73 73 69 6f 6e 20 3d 20 65 78 70  expression = exp
37a10 72 65 73 73 69 6f 6e 3b 0a 20 20 09 20 20 20 20  ression;.  .    
37a20 7d 0a 20 20 09 20 20 20 20 72 65 74 75 72 6e 20  }.  .    return 
37a30 41 72 72 6f 77 46 75 6e 63 74 69 6f 6e 45 78 70  ArrowFunctionExp
37a40 72 65 73 73 69 6f 6e 3b 0a 20 20 09 7d 28 29 29  ression;.  .}())
37a50 3b 0a 20 20 09 65 78 70 6f 72 74 73 2e 41 72 72  ;.  .exports.Arr
37a60 6f 77 46 75 6e 63 74 69 6f 6e 45 78 70 72 65 73  owFunctionExpres
37a70 73 69 6f 6e 20 3d 20 41 72 72 6f 77 46 75 6e 63  sion = ArrowFunc
37a80 74 69 6f 6e 45 78 70 72 65 73 73 69 6f 6e 3b 0a  tionExpression;.
37a90 20 20 09 76 61 72 20 41 73 73 69 67 6e 6d 65 6e    .var Assignmen
37aa0 74 45 78 70 72 65 73 73 69 6f 6e 20 3d 20 28 66  tExpression = (f
37ab0 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20 09  unction () {.  .
37ac0 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 41 73 73      function Ass
37ad0 69 67 6e 6d 65 6e 74 45 78 70 72 65 73 73 69 6f  ignmentExpressio
37ae0 6e 28 6f 70 65 72 61 74 6f 72 2c 20 6c 65 66 74  n(operator, left
37af0 2c 20 72 69 67 68 74 29 20 7b 0a 20 20 09 20 20  , right) {.  .  
37b00 20 20 20 20 20 20 74 68 69 73 2e 74 79 70 65 20        this.type 
37b10 3d 20 73 79 6e 74 61 78 5f 31 2e 53 79 6e 74 61  = syntax_1.Synta
37b20 78 2e 41 73 73 69 67 6e 6d 65 6e 74 45 78 70 72  x.AssignmentExpr
37b30 65 73 73 69 6f 6e 3b 0a 20 20 09 20 20 20 20 20  ession;.  .     
37b40 20 20 20 74 68 69 73 2e 6f 70 65 72 61 74 6f 72     this.operator
37b50 20 3d 20 6f 70 65 72 61 74 6f 72 3b 0a 20 20 09   = operator;.  .
37b60 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c 65 66          this.lef
37b70 74 20 3d 20 6c 65 66 74 3b 0a 20 20 09 20 20 20  t = left;.  .   
37b80 20 20 20 20 20 74 68 69 73 2e 72 69 67 68 74 20       this.right 
37b90 3d 20 72 69 67 68 74 3b 0a 20 20 09 20 20 20 20  = right;.  .    
37ba0 7d 0a 20 20 09 20 20 20 20 72 65 74 75 72 6e 20  }.  .    return 
37bb0 41 73 73 69 67 6e 6d 65 6e 74 45 78 70 72 65 73  AssignmentExpres
37bc0 73 69 6f 6e 3b 0a 20 20 09 7d 28 29 29 3b 0a 20  sion;.  .}());. 
37bd0 20 09 65 78 70 6f 72 74 73 2e 41 73 73 69 67 6e   .exports.Assign
37be0 6d 65 6e 74 45 78 70 72 65 73 73 69 6f 6e 20 3d  mentExpression =
37bf0 20 41 73 73 69 67 6e 6d 65 6e 74 45 78 70 72 65   AssignmentExpre
37c00 73 73 69 6f 6e 3b 0a 20 20 09 76 61 72 20 41 73  ssion;.  .var As
37c10 73 69 67 6e 6d 65 6e 74 50 61 74 74 65 72 6e 20  signmentPattern 
37c20 3d 20 28 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b  = (function () {
37c30 0a 20 20 09 20 20 20 20 66 75 6e 63 74 69 6f 6e  .  .    function
37c40 20 41 73 73 69 67 6e 6d 65 6e 74 50 61 74 74 65   AssignmentPatte
37c50 72 6e 28 6c 65 66 74 2c 20 72 69 67 68 74 29 20  rn(left, right) 
37c60 7b 0a 20 20 09 20 20 20 20 20 20 20 20 74 68 69  {.  .        thi
37c70 73 2e 74 79 70 65 20 3d 20 73 79 6e 74 61 78 5f  s.type = syntax_
37c80 31 2e 53 79 6e 74 61 78 2e 41 73 73 69 67 6e 6d  1.Syntax.Assignm
37c90 65 6e 74 50 61 74 74 65 72 6e 3b 0a 20 20 09 20  entPattern;.  . 
37ca0 20 20 20 20 20 20 20 74 68 69 73 2e 6c 65 66 74         this.left
37cb0 20 3d 20 6c 65 66 74 3b 0a 20 20 09 20 20 20 20   = left;.  .    
37cc0 20 20 20 20 74 68 69 73 2e 72 69 67 68 74 20 3d      this.right =
37cd0 20 72 69 67 68 74 3b 0a 20 20 09 20 20 20 20 7d   right;.  .    }
37ce0 0a 20 20 09 20 20 20 20 72 65 74 75 72 6e 20 41  .  .    return A
37cf0 73 73 69 67 6e 6d 65 6e 74 50 61 74 74 65 72 6e  ssignmentPattern
37d00 3b 0a 20 20 09 7d 28 29 29 3b 0a 20 20 09 65 78  ;.  .}());.  .ex
37d10 70 6f 72 74 73 2e 41 73 73 69 67 6e 6d 65 6e 74  ports.Assignment
37d20 50 61 74 74 65 72 6e 20 3d 20 41 73 73 69 67 6e  Pattern = Assign
37d30 6d 65 6e 74 50 61 74 74 65 72 6e 3b 0a 20 20 09  mentPattern;.  .
37d40 76 61 72 20 42 69 6e 61 72 79 45 78 70 72 65 73  var BinaryExpres
37d50 73 69 6f 6e 20 3d 20 28 66 75 6e 63 74 69 6f 6e  sion = (function
37d60 20 28 29 20 7b 0a 20 20 09 20 20 20 20 66 75 6e   () {.  .    fun
37d70 63 74 69 6f 6e 20 42 69 6e 61 72 79 45 78 70 72  ction BinaryExpr
37d80 65 73 73 69 6f 6e 28 6f 70 65 72 61 74 6f 72 2c  ession(operator,
37d90 20 6c 65 66 74 2c 20 72 69 67 68 74 29 20 7b 0a   left, right) {.
37da0 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20 6c    .        var l
37db0 6f 67 69 63 61 6c 20 3d 20 28 6f 70 65 72 61 74  ogical = (operat
37dc0 6f 72 20 3d 3d 3d 20 27 7c 7c 27 20 7c 7c 20 6f  or === '||' || o
37dd0 70 65 72 61 74 6f 72 20 3d 3d 3d 20 27 26 26 27  perator === '&&'
37de0 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 74 68  );.  .        th
37df0 69 73 2e 74 79 70 65 20 3d 20 6c 6f 67 69 63 61  is.type = logica
37e00 6c 20 3f 20 73 79 6e 74 61 78 5f 31 2e 53 79 6e  l ? syntax_1.Syn
37e10 74 61 78 2e 4c 6f 67 69 63 61 6c 45 78 70 72 65  tax.LogicalExpre
37e20 73 73 69 6f 6e 20 3a 20 73 79 6e 74 61 78 5f 31  ssion : syntax_1
37e30 2e 53 79 6e 74 61 78 2e 42 69 6e 61 72 79 45 78  .Syntax.BinaryEx
37e40 70 72 65 73 73 69 6f 6e 3b 0a 20 20 09 20 20 20  pression;.  .   
37e50 20 20 20 20 20 74 68 69 73 2e 6f 70 65 72 61 74       this.operat
37e60 6f 72 20 3d 20 6f 70 65 72 61 74 6f 72 3b 0a 20  or = operator;. 
37e70 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c   .        this.l
37e80 65 66 74 20 3d 20 6c 65 66 74 3b 0a 20 20 09 20  eft = left;.  . 
37e90 20 20 20 20 20 20 20 74 68 69 73 2e 72 69 67 68         this.righ
37ea0 74 20 3d 20 72 69 67 68 74 3b 0a 20 20 09 20 20  t = right;.  .  
37eb0 20 20 7d 0a 20 20 09 20 20 20 20 72 65 74 75 72    }.  .    retur
37ec0 6e 20 42 69 6e 61 72 79 45 78 70 72 65 73 73 69  n BinaryExpressi
37ed0 6f 6e 3b 0a 20 20 09 7d 28 29 29 3b 0a 20 20 09  on;.  .}());.  .
37ee0 65 78 70 6f 72 74 73 2e 42 69 6e 61 72 79 45 78  exports.BinaryEx
37ef0 70 72 65 73 73 69 6f 6e 20 3d 20 42 69 6e 61 72  pression = Binar
37f00 79 45 78 70 72 65 73 73 69 6f 6e 3b 0a 20 20 09  yExpression;.  .
37f10 76 61 72 20 42 6c 6f 63 6b 53 74 61 74 65 6d 65  var BlockStateme
37f20 6e 74 20 3d 20 28 66 75 6e 63 74 69 6f 6e 20 28  nt = (function (
37f30 29 20 7b 0a 20 20 09 20 20 20 20 66 75 6e 63 74  ) {.  .    funct
37f40 69 6f 6e 20 42 6c 6f 63 6b 53 74 61 74 65 6d 65  ion BlockStateme
37f50 6e 74 28 62 6f 64 79 29 20 7b 0a 20 20 09 20 20  nt(body) {.  .  
37f60 20 20 20 20 20 20 74 68 69 73 2e 74 79 70 65 20        this.type 
37f70 3d 20 73 79 6e 74 61 78 5f 31 2e 53 79 6e 74 61  = syntax_1.Synta
37f80 78 2e 42 6c 6f 63 6b 53 74 61 74 65 6d 65 6e 74  x.BlockStatement
37f90 3b 0a 20 20 09 20 20 20 20 20 20 20 20 74 68 69  ;.  .        thi
37fa0 73 2e 62 6f 64 79 20 3d 20 62 6f 64 79 3b 0a 20  s.body = body;. 
37fb0 20 09 20 20 20 20 7d 0a 20 20 09 20 20 20 20 72   .    }.  .    r
37fc0 65 74 75 72 6e 20 42 6c 6f 63 6b 53 74 61 74 65  eturn BlockState
37fd0 6d 65 6e 74 3b 0a 20 20 09 7d 28 29 29 3b 0a 20  ment;.  .}());. 
37fe0 20 09 65 78 70 6f 72 74 73 2e 42 6c 6f 63 6b 53   .exports.BlockS
37ff0 74 61 74 65 6d 65 6e 74 20 3d 20 42 6c 6f 63 6b  tatement = Block
38000 53 74 61 74 65 6d 65 6e 74 3b 0a 20 20 09 76 61  Statement;.  .va
38010 72 20 42 72 65 61 6b 53 74 61 74 65 6d 65 6e 74  r BreakStatement
38020 20 3d 20 28 66 75 6e 63 74 69 6f 6e 20 28 29 20   = (function () 
38030 7b 0a 20 20 09 20 20 20 20 66 75 6e 63 74 69 6f  {.  .    functio
38040 6e 20 42 72 65 61 6b 53 74 61 74 65 6d 65 6e 74  n BreakStatement
38050 28 6c 61 62 65 6c 29 20 7b 0a 20 20 09 20 20 20  (label) {.  .   
38060 20 20 20 20 20 74 68 69 73 2e 74 79 70 65 20 3d       this.type =
38070 20 73 79 6e 74 61 78 5f 31 2e 53 79 6e 74 61 78   syntax_1.Syntax
38080 2e 42 72 65 61 6b 53 74 61 74 65 6d 65 6e 74 3b  .BreakStatement;
38090 0a 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73  .  .        this
380a0 2e 6c 61 62 65 6c 20 3d 20 6c 61 62 65 6c 3b 0a  .label = label;.
380b0 20 20 09 20 20 20 20 7d 0a 20 20 09 20 20 20 20    .    }.  .    
380c0 72 65 74 75 72 6e 20 42 72 65 61 6b 53 74 61 74  return BreakStat
380d0 65 6d 65 6e 74 3b 0a 20 20 09 7d 28 29 29 3b 0a  ement;.  .}());.
380e0 20 20 09 65 78 70 6f 72 74 73 2e 42 72 65 61 6b    .exports.Break
380f0 53 74 61 74 65 6d 65 6e 74 20 3d 20 42 72 65 61  Statement = Brea
38100 6b 53 74 61 74 65 6d 65 6e 74 3b 0a 20 20 09 76  kStatement;.  .v
38110 61 72 20 43 61 6c 6c 45 78 70 72 65 73 73 69 6f  ar CallExpressio
38120 6e 20 3d 20 28 66 75 6e 63 74 69 6f 6e 20 28 29  n = (function ()
38130 20 7b 0a 20 20 09 20 20 20 20 66 75 6e 63 74 69   {.  .    functi
38140 6f 6e 20 43 61 6c 6c 45 78 70 72 65 73 73 69 6f  on CallExpressio
38150 6e 28 63 61 6c 6c 65 65 2c 20 61 72 67 73 29 20  n(callee, args) 
38160 7b 0a 20 20 09 20 20 20 20 20 20 20 20 74 68 69  {.  .        thi
38170 73 2e 74 79 70 65 20 3d 20 73 79 6e 74 61 78 5f  s.type = syntax_
38180 31 2e 53 79 6e 74 61 78 2e 43 61 6c 6c 45 78 70  1.Syntax.CallExp
38190 72 65 73 73 69 6f 6e 3b 0a 20 20 09 20 20 20 20  ression;.  .    
381a0 20 20 20 20 74 68 69 73 2e 63 61 6c 6c 65 65 20      this.callee 
381b0 3d 20 63 61 6c 6c 65 65 3b 0a 20 20 09 20 20 20  = callee;.  .   
381c0 20 20 20 20 20 74 68 69 73 2e 61 72 67 75 6d 65       this.argume
381d0 6e 74 73 20 3d 20 61 72 67 73 3b 0a 20 20 09 20  nts = args;.  . 
381e0 20 20 20 7d 0a 20 20 09 20 20 20 20 72 65 74 75     }.  .    retu
381f0 72 6e 20 43 61 6c 6c 45 78 70 72 65 73 73 69 6f  rn CallExpressio
38200 6e 3b 0a 20 20 09 7d 28 29 29 3b 0a 20 20 09 65  n;.  .}());.  .e
38210 78 70 6f 72 74 73 2e 43 61 6c 6c 45 78 70 72 65  xports.CallExpre
38220 73 73 69 6f 6e 20 3d 20 43 61 6c 6c 45 78 70 72  ssion = CallExpr
38230 65 73 73 69 6f 6e 3b 0a 20 20 09 76 61 72 20 43  ession;.  .var C
38240 61 74 63 68 43 6c 61 75 73 65 20 3d 20 28 66 75  atchClause = (fu
38250 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20 09 20  nction () {.  . 
38260 20 20 20 66 75 6e 63 74 69 6f 6e 20 43 61 74 63     function Catc
38270 68 43 6c 61 75 73 65 28 70 61 72 61 6d 2c 20 62  hClause(param, b
38280 6f 64 79 29 20 7b 0a 20 20 09 20 20 20 20 20 20  ody) {.  .      
38290 20 20 74 68 69 73 2e 74 79 70 65 20 3d 20 73 79    this.type = sy
382a0 6e 74 61 78 5f 31 2e 53 79 6e 74 61 78 2e 43 61  ntax_1.Syntax.Ca
382b0 74 63 68 43 6c 61 75 73 65 3b 0a 20 20 09 20 20  tchClause;.  .  
382c0 20 20 20 20 20 20 74 68 69 73 2e 70 61 72 61 6d        this.param
382d0 20 3d 20 70 61 72 61 6d 3b 0a 20 20 09 20 20 20   = param;.  .   
382e0 20 20 20 20 20 74 68 69 73 2e 62 6f 64 79 20 3d       this.body =
382f0 20 62 6f 64 79 3b 0a 20 20 09 20 20 20 20 7d 0a   body;.  .    }.
38300 20 20 09 20 20 20 20 72 65 74 75 72 6e 20 43 61    .    return Ca
38310 74 63 68 43 6c 61 75 73 65 3b 0a 20 20 09 7d 28  tchClause;.  .}(
38320 29 29 3b 0a 20 20 09 65 78 70 6f 72 74 73 2e 43  ));.  .exports.C
38330 61 74 63 68 43 6c 61 75 73 65 20 3d 20 43 61 74  atchClause = Cat
38340 63 68 43 6c 61 75 73 65 3b 0a 20 20 09 76 61 72  chClause;.  .var
38350 20 43 6c 61 73 73 42 6f 64 79 20 3d 20 28 66 75   ClassBody = (fu
38360 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20 09 20  nction () {.  . 
38370 20 20 20 66 75 6e 63 74 69 6f 6e 20 43 6c 61 73     function Clas
38380 73 42 6f 64 79 28 62 6f 64 79 29 20 7b 0a 20 20  sBody(body) {.  
38390 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 74 79  .        this.ty
383a0 70 65 20 3d 20 73 79 6e 74 61 78 5f 31 2e 53 79  pe = syntax_1.Sy
383b0 6e 74 61 78 2e 43 6c 61 73 73 42 6f 64 79 3b 0a  ntax.ClassBody;.
383c0 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e    .        this.
383d0 62 6f 64 79 20 3d 20 62 6f 64 79 3b 0a 20 20 09  body = body;.  .
383e0 20 20 20 20 7d 0a 20 20 09 20 20 20 20 72 65 74      }.  .    ret
383f0 75 72 6e 20 43 6c 61 73 73 42 6f 64 79 3b 0a 20  urn ClassBody;. 
38400 20 09 7d 28 29 29 3b 0a 20 20 09 65 78 70 6f 72   .}());.  .expor
38410 74 73 2e 43 6c 61 73 73 42 6f 64 79 20 3d 20 43  ts.ClassBody = C
38420 6c 61 73 73 42 6f 64 79 3b 0a 20 20 09 76 61 72  lassBody;.  .var
38430 20 43 6c 61 73 73 44 65 63 6c 61 72 61 74 69 6f   ClassDeclaratio
38440 6e 20 3d 20 28 66 75 6e 63 74 69 6f 6e 20 28 29  n = (function ()
38450 20 7b 0a 20 20 09 20 20 20 20 66 75 6e 63 74 69   {.  .    functi
38460 6f 6e 20 43 6c 61 73 73 44 65 63 6c 61 72 61 74  on ClassDeclarat
38470 69 6f 6e 28 69 64 2c 20 73 75 70 65 72 43 6c 61  ion(id, superCla
38480 73 73 2c 20 62 6f 64 79 29 20 7b 0a 20 20 09 20  ss, body) {.  . 
38490 20 20 20 20 20 20 20 74 68 69 73 2e 74 79 70 65         this.type
384a0 20 3d 20 73 79 6e 74 61 78 5f 31 2e 53 79 6e 74   = syntax_1.Synt
384b0 61 78 2e 43 6c 61 73 73 44 65 63 6c 61 72 61 74  ax.ClassDeclarat
384c0 69 6f 6e 3b 0a 20 20 09 20 20 20 20 20 20 20 20  ion;.  .        
384d0 74 68 69 73 2e 69 64 20 3d 20 69 64 3b 0a 20 20  this.id = id;.  
384e0 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 73 75  .        this.su
384f0 70 65 72 43 6c 61 73 73 20 3d 20 73 75 70 65 72  perClass = super
38500 43 6c 61 73 73 3b 0a 20 20 09 20 20 20 20 20 20  Class;.  .      
38510 20 20 74 68 69 73 2e 62 6f 64 79 20 3d 20 62 6f    this.body = bo
38520 64 79 3b 0a 20 20 09 20 20 20 20 7d 0a 20 20 09  dy;.  .    }.  .
38530 20 20 20 20 72 65 74 75 72 6e 20 43 6c 61 73 73      return Class
38540 44 65 63 6c 61 72 61 74 69 6f 6e 3b 0a 20 20 09  Declaration;.  .
38550 7d 28 29 29 3b 0a 20 20 09 65 78 70 6f 72 74 73  }());.  .exports
38560 2e 43 6c 61 73 73 44 65 63 6c 61 72 61 74 69 6f  .ClassDeclaratio
38570 6e 20 3d 20 43 6c 61 73 73 44 65 63 6c 61 72 61  n = ClassDeclara
38580 74 69 6f 6e 3b 0a 20 20 09 76 61 72 20 43 6c 61  tion;.  .var Cla
38590 73 73 45 78 70 72 65 73 73 69 6f 6e 20 3d 20 28  ssExpression = (
385a0 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20  function () {.  
385b0 09 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 43 6c  .    function Cl
385c0 61 73 73 45 78 70 72 65 73 73 69 6f 6e 28 69 64  assExpression(id
385d0 2c 20 73 75 70 65 72 43 6c 61 73 73 2c 20 62 6f  , superClass, bo
385e0 64 79 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20  dy) {.  .       
385f0 20 74 68 69 73 2e 74 79 70 65 20 3d 20 73 79 6e   this.type = syn
38600 74 61 78 5f 31 2e 53 79 6e 74 61 78 2e 43 6c 61  tax_1.Syntax.Cla
38610 73 73 45 78 70 72 65 73 73 69 6f 6e 3b 0a 20 20  ssExpression;.  
38620 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 69 64  .        this.id
38630 20 3d 20 69 64 3b 0a 20 20 09 20 20 20 20 20 20   = id;.  .      
38640 20 20 74 68 69 73 2e 73 75 70 65 72 43 6c 61 73    this.superClas
38650 73 20 3d 20 73 75 70 65 72 43 6c 61 73 73 3b 0a  s = superClass;.
38660 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e    .        this.
38670 62 6f 64 79 20 3d 20 62 6f 64 79 3b 0a 20 20 09  body = body;.  .
38680 20 20 20 20 7d 0a 20 20 09 20 20 20 20 72 65 74      }.  .    ret
38690 75 72 6e 20 43 6c 61 73 73 45 78 70 72 65 73 73  urn ClassExpress
386a0 69 6f 6e 3b 0a 20 20 09 7d 28 29 29 3b 0a 20 20  ion;.  .}());.  
386b0 09 65 78 70 6f 72 74 73 2e 43 6c 61 73 73 45 78  .exports.ClassEx
386c0 70 72 65 73 73 69 6f 6e 20 3d 20 43 6c 61 73 73  pression = Class
386d0 45 78 70 72 65 73 73 69 6f 6e 3b 0a 20 20 09 76  Expression;.  .v
386e0 61 72 20 43 6f 6d 70 75 74 65 64 4d 65 6d 62 65  ar ComputedMembe
386f0 72 45 78 70 72 65 73 73 69 6f 6e 20 3d 20 28 66  rExpression = (f
38700 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20 09  unction () {.  .
38710 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 43 6f 6d      function Com
38720 70 75 74 65 64 4d 65 6d 62 65 72 45 78 70 72 65  putedMemberExpre
38730 73 73 69 6f 6e 28 6f 62 6a 65 63 74 2c 20 70 72  ssion(object, pr
38740 6f 70 65 72 74 79 29 20 7b 0a 20 20 09 20 20 20  operty) {.  .   
38750 20 20 20 20 20 74 68 69 73 2e 74 79 70 65 20 3d       this.type =
38760 20 73 79 6e 74 61 78 5f 31 2e 53 79 6e 74 61 78   syntax_1.Syntax
38770 2e 4d 65 6d 62 65 72 45 78 70 72 65 73 73 69 6f  .MemberExpressio
38780 6e 3b 0a 20 20 09 20 20 20 20 20 20 20 20 74 68  n;.  .        th
38790 69 73 2e 63 6f 6d 70 75 74 65 64 20 3d 20 74 72  is.computed = tr
387a0 75 65 3b 0a 20 20 09 20 20 20 20 20 20 20 20 74  ue;.  .        t
387b0 68 69 73 2e 6f 62 6a 65 63 74 20 3d 20 6f 62 6a  his.object = obj
387c0 65 63 74 3b 0a 20 20 09 20 20 20 20 20 20 20 20  ect;.  .        
387d0 74 68 69 73 2e 70 72 6f 70 65 72 74 79 20 3d 20  this.property = 
387e0 70 72 6f 70 65 72 74 79 3b 0a 20 20 09 20 20 20  property;.  .   
387f0 20 7d 0a 20 20 09 20 20 20 20 72 65 74 75 72 6e   }.  .    return
38800 20 43 6f 6d 70 75 74 65 64 4d 65 6d 62 65 72 45   ComputedMemberE
38810 78 70 72 65 73 73 69 6f 6e 3b 0a 20 20 09 7d 28  xpression;.  .}(
38820 29 29 3b 0a 20 20 09 65 78 70 6f 72 74 73 2e 43  ));.  .exports.C
38830 6f 6d 70 75 74 65 64 4d 65 6d 62 65 72 45 78 70  omputedMemberExp
38840 72 65 73 73 69 6f 6e 20 3d 20 43 6f 6d 70 75 74  ression = Comput
38850 65 64 4d 65 6d 62 65 72 45 78 70 72 65 73 73 69  edMemberExpressi
38860 6f 6e 3b 0a 20 20 09 76 61 72 20 43 6f 6e 64 69  on;.  .var Condi
38870 74 69 6f 6e 61 6c 45 78 70 72 65 73 73 69 6f 6e  tionalExpression
38880 20 3d 20 28 66 75 6e 63 74 69 6f 6e 20 28 29 20   = (function () 
38890 7b 0a 20 20 09 20 20 20 20 66 75 6e 63 74 69 6f  {.  .    functio
388a0 6e 20 43 6f 6e 64 69 74 69 6f 6e 61 6c 45 78 70  n ConditionalExp
388b0 72 65 73 73 69 6f 6e 28 74 65 73 74 2c 20 63 6f  ression(test, co
388c0 6e 73 65 71 75 65 6e 74 2c 20 61 6c 74 65 72 6e  nsequent, altern
388d0 61 74 65 29 20 7b 0a 20 20 09 20 20 20 20 20 20  ate) {.  .      
388e0 20 20 74 68 69 73 2e 74 79 70 65 20 3d 20 73 79    this.type = sy
388f0 6e 74 61 78 5f 31 2e 53 79 6e 74 61 78 2e 43 6f  ntax_1.Syntax.Co
38900 6e 64 69 74 69 6f 6e 61 6c 45 78 70 72 65 73 73  nditionalExpress
38910 69 6f 6e 3b 0a 20 20 09 20 20 20 20 20 20 20 20  ion;.  .        
38920 74 68 69 73 2e 74 65 73 74 20 3d 20 74 65 73 74  this.test = test
38930 3b 0a 20 20 09 20 20 20 20 20 20 20 20 74 68 69  ;.  .        thi
38940 73 2e 63 6f 6e 73 65 71 75 65 6e 74 20 3d 20 63  s.consequent = c
38950 6f 6e 73 65 71 75 65 6e 74 3b 0a 20 20 09 20 20  onsequent;.  .  
38960 20 20 20 20 20 20 74 68 69 73 2e 61 6c 74 65 72        this.alter
38970 6e 61 74 65 20 3d 20 61 6c 74 65 72 6e 61 74 65  nate = alternate
38980 3b 0a 20 20 09 20 20 20 20 7d 0a 20 20 09 20 20  ;.  .    }.  .  
38990 20 20 72 65 74 75 72 6e 20 43 6f 6e 64 69 74 69    return Conditi
389a0 6f 6e 61 6c 45 78 70 72 65 73 73 69 6f 6e 3b 0a  onalExpression;.
389b0 20 20 09 7d 28 29 29 3b 0a 20 20 09 65 78 70 6f    .}());.  .expo
389c0 72 74 73 2e 43 6f 6e 64 69 74 69 6f 6e 61 6c 45  rts.ConditionalE
389d0 78 70 72 65 73 73 69 6f 6e 20 3d 20 43 6f 6e 64  xpression = Cond
389e0 69 74 69 6f 6e 61 6c 45 78 70 72 65 73 73 69 6f  itionalExpressio
389f0 6e 3b 0a 20 20 09 76 61 72 20 43 6f 6e 74 69 6e  n;.  .var Contin
38a00 75 65 53 74 61 74 65 6d 65 6e 74 20 3d 20 28 66  ueStatement = (f
38a10 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20 09  unction () {.  .
38a20 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 43 6f 6e      function Con
38a30 74 69 6e 75 65 53 74 61 74 65 6d 65 6e 74 28 6c  tinueStatement(l
38a40 61 62 65 6c 29 20 7b 0a 20 20 09 20 20 20 20 20  abel) {.  .     
38a50 20 20 20 74 68 69 73 2e 74 79 70 65 20 3d 20 73     this.type = s
38a60 79 6e 74 61 78 5f 31 2e 53 79 6e 74 61 78 2e 43  yntax_1.Syntax.C
38a70 6f 6e 74 69 6e 75 65 53 74 61 74 65 6d 65 6e 74  ontinueStatement
38a80 3b 0a 20 20 09 20 20 20 20 20 20 20 20 74 68 69  ;.  .        thi
38a90 73 2e 6c 61 62 65 6c 20 3d 20 6c 61 62 65 6c 3b  s.label = label;
38aa0 0a 20 20 09 20 20 20 20 7d 0a 20 20 09 20 20 20  .  .    }.  .   
38ab0 20 72 65 74 75 72 6e 20 43 6f 6e 74 69 6e 75 65   return Continue
38ac0 53 74 61 74 65 6d 65 6e 74 3b 0a 20 20 09 7d 28  Statement;.  .}(
38ad0 29 29 3b 0a 20 20 09 65 78 70 6f 72 74 73 2e 43  ));.  .exports.C
38ae0 6f 6e 74 69 6e 75 65 53 74 61 74 65 6d 65 6e 74  ontinueStatement
38af0 20 3d 20 43 6f 6e 74 69 6e 75 65 53 74 61 74 65   = ContinueState
38b00 6d 65 6e 74 3b 0a 20 20 09 76 61 72 20 44 65 62  ment;.  .var Deb
38b10 75 67 67 65 72 53 74 61 74 65 6d 65 6e 74 20 3d  uggerStatement =
38b20 20 28 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a   (function () {.
38b30 20 20 09 20 20 20 20 66 75 6e 63 74 69 6f 6e 20    .    function 
38b40 44 65 62 75 67 67 65 72 53 74 61 74 65 6d 65 6e  DebuggerStatemen
38b50 74 28 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20  t() {.  .       
38b60 20 74 68 69 73 2e 74 79 70 65 20 3d 20 73 79 6e   this.type = syn
38b70 74 61 78 5f 31 2e 53 79 6e 74 61 78 2e 44 65 62  tax_1.Syntax.Deb
38b80 75 67 67 65 72 53 74 61 74 65 6d 65 6e 74 3b 0a  uggerStatement;.
38b90 20 20 09 20 20 20 20 7d 0a 20 20 09 20 20 20 20    .    }.  .    
38ba0 72 65 74 75 72 6e 20 44 65 62 75 67 67 65 72 53  return DebuggerS
38bb0 74 61 74 65 6d 65 6e 74 3b 0a 20 20 09 7d 28 29  tatement;.  .}()
38bc0 29 3b 0a 20 20 09 65 78 70 6f 72 74 73 2e 44 65  );.  .exports.De
38bd0 62 75 67 67 65 72 53 74 61 74 65 6d 65 6e 74 20  buggerStatement 
38be0 3d 20 44 65 62 75 67 67 65 72 53 74 61 74 65 6d  = DebuggerStatem
38bf0 65 6e 74 3b 0a 20 20 09 76 61 72 20 44 69 72 65  ent;.  .var Dire
38c00 63 74 69 76 65 20 3d 20 28 66 75 6e 63 74 69 6f  ctive = (functio
38c10 6e 20 28 29 20 7b 0a 20 20 09 20 20 20 20 66 75  n () {.  .    fu
38c20 6e 63 74 69 6f 6e 20 44 69 72 65 63 74 69 76 65  nction Directive
38c30 28 65 78 70 72 65 73 73 69 6f 6e 2c 20 64 69 72  (expression, dir
38c40 65 63 74 69 76 65 29 20 7b 0a 20 20 09 20 20 20  ective) {.  .   
38c50 20 20 20 20 20 74 68 69 73 2e 74 79 70 65 20 3d       this.type =
38c60 20 73 79 6e 74 61 78 5f 31 2e 53 79 6e 74 61 78   syntax_1.Syntax
38c70 2e 45 78 70 72 65 73 73 69 6f 6e 53 74 61 74 65  .ExpressionState
38c80 6d 65 6e 74 3b 0a 20 20 09 20 20 20 20 20 20 20  ment;.  .       
38c90 20 74 68 69 73 2e 65 78 70 72 65 73 73 69 6f 6e   this.expression
38ca0 20 3d 20 65 78 70 72 65 73 73 69 6f 6e 3b 0a 20   = expression;. 
38cb0 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 64   .        this.d
38cc0 69 72 65 63 74 69 76 65 20 3d 20 64 69 72 65 63  irective = direc
38cd0 74 69 76 65 3b 0a 20 20 09 20 20 20 20 7d 0a 20  tive;.  .    }. 
38ce0 20 09 20 20 20 20 72 65 74 75 72 6e 20 44 69 72   .    return Dir
38cf0 65 63 74 69 76 65 3b 0a 20 20 09 7d 28 29 29 3b  ective;.  .}());
38d00 0a 20 20 09 65 78 70 6f 72 74 73 2e 44 69 72 65  .  .exports.Dire
38d10 63 74 69 76 65 20 3d 20 44 69 72 65 63 74 69 76  ctive = Directiv
38d20 65 3b 0a 20 20 09 76 61 72 20 44 6f 57 68 69 6c  e;.  .var DoWhil
38d30 65 53 74 61 74 65 6d 65 6e 74 20 3d 20 28 66 75  eStatement = (fu
38d40 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20 09 20  nction () {.  . 
38d50 20 20 20 66 75 6e 63 74 69 6f 6e 20 44 6f 57 68     function DoWh
38d60 69 6c 65 53 74 61 74 65 6d 65 6e 74 28 62 6f 64  ileStatement(bod
38d70 79 2c 20 74 65 73 74 29 20 7b 0a 20 20 09 20 20  y, test) {.  .  
38d80 20 20 20 20 20 20 74 68 69 73 2e 74 79 70 65 20        this.type 
38d90 3d 20 73 79 6e 74 61 78 5f 31 2e 53 79 6e 74 61  = syntax_1.Synta
38da0 78 2e 44 6f 57 68 69 6c 65 53 74 61 74 65 6d 65  x.DoWhileStateme
38db0 6e 74 3b 0a 20 20 09 20 20 20 20 20 20 20 20 74  nt;.  .        t
38dc0 68 69 73 2e 62 6f 64 79 20 3d 20 62 6f 64 79 3b  his.body = body;
38dd0 0a 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73  .  .        this
38de0 2e 74 65 73 74 20 3d 20 74 65 73 74 3b 0a 20 20  .test = test;.  
38df0 09 20 20 20 20 7d 0a 20 20 09 20 20 20 20 72 65  .    }.  .    re
38e00 74 75 72 6e 20 44 6f 57 68 69 6c 65 53 74 61 74  turn DoWhileStat
38e10 65 6d 65 6e 74 3b 0a 20 20 09 7d 28 29 29 3b 0a  ement;.  .}());.
38e20 20 20 09 65 78 70 6f 72 74 73 2e 44 6f 57 68 69    .exports.DoWhi
38e30 6c 65 53 74 61 74 65 6d 65 6e 74 20 3d 20 44 6f  leStatement = Do
38e40 57 68 69 6c 65 53 74 61 74 65 6d 65 6e 74 3b 0a  WhileStatement;.
38e50 20 20 09 76 61 72 20 45 6d 70 74 79 53 74 61 74    .var EmptyStat
38e60 65 6d 65 6e 74 20 3d 20 28 66 75 6e 63 74 69 6f  ement = (functio
38e70 6e 20 28 29 20 7b 0a 20 20 09 20 20 20 20 66 75  n () {.  .    fu
38e80 6e 63 74 69 6f 6e 20 45 6d 70 74 79 53 74 61 74  nction EmptyStat
38e90 65 6d 65 6e 74 28 29 20 7b 0a 20 20 09 20 20 20  ement() {.  .   
38ea0 20 20 20 20 20 74 68 69 73 2e 74 79 70 65 20 3d       this.type =
38eb0 20 73 79 6e 74 61 78 5f 31 2e 53 79 6e 74 61 78   syntax_1.Syntax
38ec0 2e 45 6d 70 74 79 53 74 61 74 65 6d 65 6e 74 3b  .EmptyStatement;
38ed0 0a 20 20 09 20 20 20 20 7d 0a 20 20 09 20 20 20  .  .    }.  .   
38ee0 20 72 65 74 75 72 6e 20 45 6d 70 74 79 53 74 61   return EmptySta
38ef0 74 65 6d 65 6e 74 3b 0a 20 20 09 7d 28 29 29 3b  tement;.  .}());
38f00 0a 20 20 09 65 78 70 6f 72 74 73 2e 45 6d 70 74  .  .exports.Empt
38f10 79 53 74 61 74 65 6d 65 6e 74 20 3d 20 45 6d 70  yStatement = Emp
38f20 74 79 53 74 61 74 65 6d 65 6e 74 3b 0a 20 20 09  tyStatement;.  .
38f30 76 61 72 20 45 78 70 6f 72 74 41 6c 6c 44 65 63  var ExportAllDec
38f40 6c 61 72 61 74 69 6f 6e 20 3d 20 28 66 75 6e 63  laration = (func
38f50 74 69 6f 6e 20 28 29 20 7b 0a 20 20 09 20 20 20  tion () {.  .   
38f60 20 66 75 6e 63 74 69 6f 6e 20 45 78 70 6f 72 74   function Export
38f70 41 6c 6c 44 65 63 6c 61 72 61 74 69 6f 6e 28 73  AllDeclaration(s
38f80 6f 75 72 63 65 29 20 7b 0a 20 20 09 20 20 20 20  ource) {.  .    
38f90 20 20 20 20 74 68 69 73 2e 74 79 70 65 20 3d 20      this.type = 
38fa0 73 79 6e 74 61 78 5f 31 2e 53 79 6e 74 61 78 2e  syntax_1.Syntax.
38fb0 45 78 70 6f 72 74 41 6c 6c 44 65 63 6c 61 72 61  ExportAllDeclara
38fc0 74 69 6f 6e 3b 0a 20 20 09 20 20 20 20 20 20 20  tion;.  .       
38fd0 20 74 68 69 73 2e 73 6f 75 72 63 65 20 3d 20 73   this.source = s
38fe0 6f 75 72 63 65 3b 0a 20 20 09 20 20 20 20 7d 0a  ource;.  .    }.
38ff0 20 20 09 20 20 20 20 72 65 74 75 72 6e 20 45 78    .    return Ex
39000 70 6f 72 74 41 6c 6c 44 65 63 6c 61 72 61 74 69  portAllDeclarati
39010 6f 6e 3b 0a 20 20 09 7d 28 29 29 3b 0a 20 20 09  on;.  .}());.  .
39020 65 78 70 6f 72 74 73 2e 45 78 70 6f 72 74 41 6c  exports.ExportAl
39030 6c 44 65 63 6c 61 72 61 74 69 6f 6e 20 3d 20 45  lDeclaration = E
39040 78 70 6f 72 74 41 6c 6c 44 65 63 6c 61 72 61 74  xportAllDeclarat
39050 69 6f 6e 3b 0a 20 20 09 76 61 72 20 45 78 70 6f  ion;.  .var Expo
39060 72 74 44 65 66 61 75 6c 74 44 65 63 6c 61 72 61  rtDefaultDeclara
39070 74 69 6f 6e 20 3d 20 28 66 75 6e 63 74 69 6f 6e  tion = (function
39080 20 28 29 20 7b 0a 20 20 09 20 20 20 20 66 75 6e   () {.  .    fun
39090 63 74 69 6f 6e 20 45 78 70 6f 72 74 44 65 66 61  ction ExportDefa
390a0 75 6c 74 44 65 63 6c 61 72 61 74 69 6f 6e 28 64  ultDeclaration(d
390b0 65 63 6c 61 72 61 74 69 6f 6e 29 20 7b 0a 20 20  eclaration) {.  
390c0 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 74 79  .        this.ty
390d0 70 65 20 3d 20 73 79 6e 74 61 78 5f 31 2e 53 79  pe = syntax_1.Sy
390e0 6e 74 61 78 2e 45 78 70 6f 72 74 44 65 66 61 75  ntax.ExportDefau
390f0 6c 74 44 65 63 6c 61 72 61 74 69 6f 6e 3b 0a 20  ltDeclaration;. 
39100 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 64   .        this.d
39110 65 63 6c 61 72 61 74 69 6f 6e 20 3d 20 64 65 63  eclaration = dec
39120 6c 61 72 61 74 69 6f 6e 3b 0a 20 20 09 20 20 20  laration;.  .   
39130 20 7d 0a 20 20 09 20 20 20 20 72 65 74 75 72 6e   }.  .    return
39140 20 45 78 70 6f 72 74 44 65 66 61 75 6c 74 44 65   ExportDefaultDe
39150 63 6c 61 72 61 74 69 6f 6e 3b 0a 20 20 09 7d 28  claration;.  .}(
39160 29 29 3b 0a 20 20 09 65 78 70 6f 72 74 73 2e 45  ));.  .exports.E
39170 78 70 6f 72 74 44 65 66 61 75 6c 74 44 65 63 6c  xportDefaultDecl
39180 61 72 61 74 69 6f 6e 20 3d 20 45 78 70 6f 72 74  aration = Export
39190 44 65 66 61 75 6c 74 44 65 63 6c 61 72 61 74 69  DefaultDeclarati
391a0 6f 6e 3b 0a 20 20 09 76 61 72 20 45 78 70 6f 72  on;.  .var Expor
391b0 74 4e 61 6d 65 64 44 65 63 6c 61 72 61 74 69 6f  tNamedDeclaratio
391c0 6e 20 3d 20 28 66 75 6e 63 74 69 6f 6e 20 28 29  n = (function ()
391d0 20 7b 0a 20 20 09 20 20 20 20 66 75 6e 63 74 69   {.  .    functi
391e0 6f 6e 20 45 78 70 6f 72 74 4e 61 6d 65 64 44 65  on ExportNamedDe
391f0 63 6c 61 72 61 74 69 6f 6e 28 64 65 63 6c 61 72  claration(declar
39200 61 74 69 6f 6e 2c 20 73 70 65 63 69 66 69 65 72  ation, specifier
39210 73 2c 20 73 6f 75 72 63 65 29 20 7b 0a 20 20 09  s, source) {.  .
39220 20 20 20 20 20 20 20 20 74 68 69 73 2e 74 79 70          this.typ
39230 65 20 3d 20 73 79 6e 74 61 78 5f 31 2e 53 79 6e  e = syntax_1.Syn
39240 74 61 78 2e 45 78 70 6f 72 74 4e 61 6d 65 64 44  tax.ExportNamedD
39250 65 63 6c 61 72 61 74 69 6f 6e 3b 0a 20 20 09 20  eclaration;.  . 
39260 20 20 20 20 20 20 20 74 68 69 73 2e 64 65 63 6c         this.decl
39270 61 72 61 74 69 6f 6e 20 3d 20 64 65 63 6c 61 72  aration = declar
39280 61 74 69 6f 6e 3b 0a 20 20 09 20 20 20 20 20 20  ation;.  .      
39290 20 20 74 68 69 73 2e 73 70 65 63 69 66 69 65 72    this.specifier
392a0 73 20 3d 20 73 70 65 63 69 66 69 65 72 73 3b 0a  s = specifiers;.
392b0 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e    .        this.
392c0 73 6f 75 72 63 65 20 3d 20 73 6f 75 72 63 65 3b  source = source;
392d0 0a 20 20 09 20 20 20 20 7d 0a 20 20 09 20 20 20  .  .    }.  .   
392e0 20 72 65 74 75 72 6e 20 45 78 70 6f 72 74 4e 61   return ExportNa
392f0 6d 65 64 44 65 63 6c 61 72 61 74 69 6f 6e 3b 0a  medDeclaration;.
39300 20 20 09 7d 28 29 29 3b 0a 20 20 09 65 78 70 6f    .}());.  .expo
39310 72 74 73 2e 45 78 70 6f 72 74 4e 61 6d 65 64 44  rts.ExportNamedD
39320 65 63 6c 61 72 61 74 69 6f 6e 20 3d 20 45 78 70  eclaration = Exp
39330 6f 72 74 4e 61 6d 65 64 44 65 63 6c 61 72 61 74  ortNamedDeclarat
39340 69 6f 6e 3b 0a 20 20 09 76 61 72 20 45 78 70 6f  ion;.  .var Expo
39350 72 74 53 70 65 63 69 66 69 65 72 20 3d 20 28 66  rtSpecifier = (f
39360 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20 09  unction () {.  .
39370 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 45 78 70      function Exp
39380 6f 72 74 53 70 65 63 69 66 69 65 72 28 6c 6f 63  ortSpecifier(loc
39390 61 6c 2c 20 65 78 70 6f 72 74 65 64 29 20 7b 0a  al, exported) {.
393a0 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e    .        this.
393b0 74 79 70 65 20 3d 20 73 79 6e 74 61 78 5f 31 2e  type = syntax_1.
393c0 53 79 6e 74 61 78 2e 45 78 70 6f 72 74 53 70 65  Syntax.ExportSpe
393d0 63 69 66 69 65 72 3b 0a 20 20 09 20 20 20 20 20  cifier;.  .     
393e0 20 20 20 74 68 69 73 2e 65 78 70 6f 72 74 65 64     this.exported
393f0 20 3d 20 65 78 70 6f 72 74 65 64 3b 0a 20 20 09   = exported;.  .
39400 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c 6f 63          this.loc
39410 61 6c 20 3d 20 6c 6f 63 61 6c 3b 0a 20 20 09 20  al = local;.  . 
39420 20 20 20 7d 0a 20 20 09 20 20 20 20 72 65 74 75     }.  .    retu
39430 72 6e 20 45 78 70 6f 72 74 53 70 65 63 69 66 69  rn ExportSpecifi
39440 65 72 3b 0a 20 20 09 7d 28 29 29 3b 0a 20 20 09  er;.  .}());.  .
39450 65 78 70 6f 72 74 73 2e 45 78 70 6f 72 74 53 70  exports.ExportSp
39460 65 63 69 66 69 65 72 20 3d 20 45 78 70 6f 72 74  ecifier = Export
39470 53 70 65 63 69 66 69 65 72 3b 0a 20 20 09 76 61  Specifier;.  .va
39480 72 20 45 78 70 72 65 73 73 69 6f 6e 53 74 61 74  r ExpressionStat
39490 65 6d 65 6e 74 20 3d 20 28 66 75 6e 63 74 69 6f  ement = (functio
394a0 6e 20 28 29 20 7b 0a 20 20 09 20 20 20 20 66 75  n () {.  .    fu
394b0 6e 63 74 69 6f 6e 20 45 78 70 72 65 73 73 69 6f  nction Expressio
394c0 6e 53 74 61 74 65 6d 65 6e 74 28 65 78 70 72 65  nStatement(expre
394d0 73 73 69 6f 6e 29 20 7b 0a 20 20 09 20 20 20 20  ssion) {.  .    
394e0 20 20 20 20 74 68 69 73 2e 74 79 70 65 20 3d 20      this.type = 
394f0 73 79 6e 74 61 78 5f 31 2e 53 79 6e 74 61 78 2e  syntax_1.Syntax.
39500 45 78 70 72 65 73 73 69 6f 6e 53 74 61 74 65 6d  ExpressionStatem
39510 65 6e 74 3b 0a 20 20 09 20 20 20 20 20 20 20 20  ent;.  .        
39520 74 68 69 73 2e 65 78 70 72 65 73 73 69 6f 6e 20  this.expression 
39530 3d 20 65 78 70 72 65 73 73 69 6f 6e 3b 0a 20 20  = expression;.  
39540 09 20 20 20 20 7d 0a 20 20 09 20 20 20 20 72 65  .    }.  .    re
39550 74 75 72 6e 20 45 78 70 72 65 73 73 69 6f 6e 53  turn ExpressionS
39560 74 61 74 65 6d 65 6e 74 3b 0a 20 20 09 7d 28 29  tatement;.  .}()
39570 29 3b 0a 20 20 09 65 78 70 6f 72 74 73 2e 45 78  );.  .exports.Ex
39580 70 72 65 73 73 69 6f 6e 53 74 61 74 65 6d 65 6e  pressionStatemen
39590 74 20 3d 20 45 78 70 72 65 73 73 69 6f 6e 53 74  t = ExpressionSt
395a0 61 74 65 6d 65 6e 74 3b 0a 20 20 09 76 61 72 20  atement;.  .var 
395b0 46 6f 72 49 6e 53 74 61 74 65 6d 65 6e 74 20 3d  ForInStatement =
395c0 20 28 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a   (function () {.
395d0 20 20 09 20 20 20 20 66 75 6e 63 74 69 6f 6e 20    .    function 
395e0 46 6f 72 49 6e 53 74 61 74 65 6d 65 6e 74 28 6c  ForInStatement(l
395f0 65 66 74 2c 20 72 69 67 68 74 2c 20 62 6f 64 79  eft, right, body
39600 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 74  ) {.  .        t
39610 68 69 73 2e 74 79 70 65 20 3d 20 73 79 6e 74 61  his.type = synta
39620 78 5f 31 2e 53 79 6e 74 61 78 2e 46 6f 72 49 6e  x_1.Syntax.ForIn
39630 53 74 61 74 65 6d 65 6e 74 3b 0a 20 20 09 20 20  Statement;.  .  
39640 20 20 20 20 20 20 74 68 69 73 2e 6c 65 66 74 20        this.left 
39650 3d 20 6c 65 66 74 3b 0a 20 20 09 20 20 20 20 20  = left;.  .     
39660 20 20 20 74 68 69 73 2e 72 69 67 68 74 20 3d 20     this.right = 
39670 72 69 67 68 74 3b 0a 20 20 09 20 20 20 20 20 20  right;.  .      
39680 20 20 74 68 69 73 2e 62 6f 64 79 20 3d 20 62 6f    this.body = bo
39690 64 79 3b 0a 20 20 09 20 20 20 20 20 20 20 20 74  dy;.  .        t
396a0 68 69 73 2e 65 61 63 68 20 3d 20 66 61 6c 73 65  his.each = false
396b0 3b 0a 20 20 09 20 20 20 20 7d 0a 20 20 09 20 20  ;.  .    }.  .  
396c0 20 20 72 65 74 75 72 6e 20 46 6f 72 49 6e 53 74    return ForInSt
396d0 61 74 65 6d 65 6e 74 3b 0a 20 20 09 7d 28 29 29  atement;.  .}())
396e0 3b 0a 20 20 09 65 78 70 6f 72 74 73 2e 46 6f 72  ;.  .exports.For
396f0 49 6e 53 74 61 74 65 6d 65 6e 74 20 3d 20 46 6f  InStatement = Fo
39700 72 49 6e 53 74 61 74 65 6d 65 6e 74 3b 0a 20 20  rInStatement;.  
39710 09 76 61 72 20 46 6f 72 4f 66 53 74 61 74 65 6d  .var ForOfStatem
39720 65 6e 74 20 3d 20 28 66 75 6e 63 74 69 6f 6e 20  ent = (function 
39730 28 29 20 7b 0a 20 20 09 20 20 20 20 66 75 6e 63  () {.  .    func
39740 74 69 6f 6e 20 46 6f 72 4f 66 53 74 61 74 65 6d  tion ForOfStatem
39750 65 6e 74 28 6c 65 66 74 2c 20 72 69 67 68 74 2c  ent(left, right,
39760 20 62 6f 64 79 29 20 7b 0a 20 20 09 20 20 20 20   body) {.  .    
39770 20 20 20 20 74 68 69 73 2e 74 79 70 65 20 3d 20      this.type = 
39780 73 79 6e 74 61 78 5f 31 2e 53 79 6e 74 61 78 2e  syntax_1.Syntax.
39790 46 6f 72 4f 66 53 74 61 74 65 6d 65 6e 74 3b 0a  ForOfStatement;.
397a0 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e    .        this.
397b0 6c 65 66 74 20 3d 20 6c 65 66 74 3b 0a 20 20 09  left = left;.  .
397c0 20 20 20 20 20 20 20 20 74 68 69 73 2e 72 69 67          this.rig
397d0 68 74 20 3d 20 72 69 67 68 74 3b 0a 20 20 09 20  ht = right;.  . 
397e0 20 20 20 20 20 20 20 74 68 69 73 2e 62 6f 64 79         this.body
397f0 20 3d 20 62 6f 64 79 3b 0a 20 20 09 20 20 20 20   = body;.  .    
39800 7d 0a 20 20 09 20 20 20 20 72 65 74 75 72 6e 20  }.  .    return 
39810 46 6f 72 4f 66 53 74 61 74 65 6d 65 6e 74 3b 0a  ForOfStatement;.
39820 20 20 09 7d 28 29 29 3b 0a 20 20 09 65 78 70 6f    .}());.  .expo
39830 72 74 73 2e 46 6f 72 4f 66 53 74 61 74 65 6d 65  rts.ForOfStateme
39840 6e 74 20 3d 20 46 6f 72 4f 66 53 74 61 74 65 6d  nt = ForOfStatem
39850 65 6e 74 3b 0a 20 20 09 76 61 72 20 46 6f 72 53  ent;.  .var ForS
39860 74 61 74 65 6d 65 6e 74 20 3d 20 28 66 75 6e 63  tatement = (func
39870 74 69 6f 6e 20 28 29 20 7b 0a 20 20 09 20 20 20  tion () {.  .   
39880 20 66 75 6e 63 74 69 6f 6e 20 46 6f 72 53 74 61   function ForSta
39890 74 65 6d 65 6e 74 28 69 6e 69 74 2c 20 74 65 73  tement(init, tes
398a0 74 2c 20 75 70 64 61 74 65 2c 20 62 6f 64 79 29  t, update, body)
398b0 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 74 68   {.  .        th
398c0 69 73 2e 74 79 70 65 20 3d 20 73 79 6e 74 61 78  is.type = syntax
398d0 5f 31 2e 53 79 6e 74 61 78 2e 46 6f 72 53 74 61  _1.Syntax.ForSta
398e0 74 65 6d 65 6e 74 3b 0a 20 20 09 20 20 20 20 20  tement;.  .     
398f0 20 20 20 74 68 69 73 2e 69 6e 69 74 20 3d 20 69     this.init = i
39900 6e 69 74 3b 0a 20 20 09 20 20 20 20 20 20 20 20  nit;.  .        
39910 74 68 69 73 2e 74 65 73 74 20 3d 20 74 65 73 74  this.test = test
39920 3b 0a 20 20 09 20 20 20 20 20 20 20 20 74 68 69  ;.  .        thi
39930 73 2e 75 70 64 61 74 65 20 3d 20 75 70 64 61 74  s.update = updat
39940 65 3b 0a 20 20 09 20 20 20 20 20 20 20 20 74 68  e;.  .        th
39950 69 73 2e 62 6f 64 79 20 3d 20 62 6f 64 79 3b 0a  is.body = body;.
39960 20 20 09 20 20 20 20 7d 0a 20 20 09 20 20 20 20    .    }.  .    
39970 72 65 74 75 72 6e 20 46 6f 72 53 74 61 74 65 6d  return ForStatem
39980 65 6e 74 3b 0a 20 20 09 7d 28 29 29 3b 0a 20 20  ent;.  .}());.  
39990 09 65 78 70 6f 72 74 73 2e 46 6f 72 53 74 61 74  .exports.ForStat
399a0 65 6d 65 6e 74 20 3d 20 46 6f 72 53 74 61 74 65  ement = ForState
399b0 6d 65 6e 74 3b 0a 20 20 09 76 61 72 20 46 75 6e  ment;.  .var Fun
399c0 63 74 69 6f 6e 44 65 63 6c 61 72 61 74 69 6f 6e  ctionDeclaration
399d0 20 3d 20 28 66 75 6e 63 74 69 6f 6e 20 28 29 20   = (function () 
399e0 7b 0a 20 20 09 20 20 20 20 66 75 6e 63 74 69 6f  {.  .    functio
399f0 6e 20 46 75 6e 63 74 69 6f 6e 44 65 63 6c 61 72  n FunctionDeclar
39a00 61 74 69 6f 6e 28 69 64 2c 20 70 61 72 61 6d 73  ation(id, params
39a10 2c 20 62 6f 64 79 2c 20 67 65 6e 65 72 61 74 6f  , body, generato
39a20 72 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20  r) {.  .        
39a30 74 68 69 73 2e 74 79 70 65 20 3d 20 73 79 6e 74  this.type = synt
39a40 61 78 5f 31 2e 53 79 6e 74 61 78 2e 46 75 6e 63  ax_1.Syntax.Func
39a50 74 69 6f 6e 44 65 63 6c 61 72 61 74 69 6f 6e 3b  tionDeclaration;
39a60 0a 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73  .  .        this
39a70 2e 69 64 20 3d 20 69 64 3b 0a 20 20 09 20 20 20  .id = id;.  .   
39a80 20 20 20 20 20 74 68 69 73 2e 70 61 72 61 6d 73       this.params
39a90 20 3d 20 70 61 72 61 6d 73 3b 0a 20 20 09 20 20   = params;.  .  
39aa0 20 20 20 20 20 20 74 68 69 73 2e 62 6f 64 79 20        this.body 
39ab0 3d 20 62 6f 64 79 3b 0a 20 20 09 20 20 20 20 20  = body;.  .     
39ac0 20 20 20 74 68 69 73 2e 67 65 6e 65 72 61 74 6f     this.generato
39ad0 72 20 3d 20 67 65 6e 65 72 61 74 6f 72 3b 0a 20  r = generator;. 
39ae0 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 65   .        this.e
39af0 78 70 72 65 73 73 69 6f 6e 20 3d 20 66 61 6c 73  xpression = fals
39b00 65 3b 0a 20 20 09 20 20 20 20 7d 0a 20 20 09 20  e;.  .    }.  . 
39b10 20 20 20 72 65 74 75 72 6e 20 46 75 6e 63 74 69     return Functi
39b20 6f 6e 44 65 63 6c 61 72 61 74 69 6f 6e 3b 0a 20  onDeclaration;. 
39b30 20 09 7d 28 29 29 3b 0a 20 20 09 65 78 70 6f 72   .}());.  .expor
39b40 74 73 2e 46 75 6e 63 74 69 6f 6e 44 65 63 6c 61  ts.FunctionDecla
39b50 72 61 74 69 6f 6e 20 3d 20 46 75 6e 63 74 69 6f  ration = Functio
39b60 6e 44 65 63 6c 61 72 61 74 69 6f 6e 3b 0a 20 20  nDeclaration;.  
39b70 09 76 61 72 20 46 75 6e 63 74 69 6f 6e 45 78 70  .var FunctionExp
39b80 72 65 73 73 69 6f 6e 20 3d 20 28 66 75 6e 63 74  ression = (funct
39b90 69 6f 6e 20 28 29 20 7b 0a 20 20 09 20 20 20 20  ion () {.  .    
39ba0 66 75 6e 63 74 69 6f 6e 20 46 75 6e 63 74 69 6f  function Functio
39bb0 6e 45 78 70 72 65 73 73 69 6f 6e 28 69 64 2c 20  nExpression(id, 
39bc0 70 61 72 61 6d 73 2c 20 62 6f 64 79 2c 20 67 65  params, body, ge
39bd0 6e 65 72 61 74 6f 72 29 20 7b 0a 20 20 09 20 20  nerator) {.  .  
39be0 20 20 20 20 20 20 74 68 69 73 2e 74 79 70 65 20        this.type 
39bf0 3d 20 73 79 6e 74 61 78 5f 31 2e 53 79 6e 74 61  = syntax_1.Synta
39c00 78 2e 46 75 6e 63 74 69 6f 6e 45 78 70 72 65 73  x.FunctionExpres
39c10 73 69 6f 6e 3b 0a 20 20 09 20 20 20 20 20 20 20  sion;.  .       
39c20 20 74 68 69 73 2e 69 64 20 3d 20 69 64 3b 0a 20   this.id = id;. 
39c30 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 70   .        this.p
39c40 61 72 61 6d 73 20 3d 20 70 61 72 61 6d 73 3b 0a  arams = params;.
39c50 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e    .        this.
39c60 62 6f 64 79 20 3d 20 62 6f 64 79 3b 0a 20 20 09  body = body;.  .
39c70 20 20 20 20 20 20 20 20 74 68 69 73 2e 67 65 6e          this.gen
39c80 65 72 61 74 6f 72 20 3d 20 67 65 6e 65 72 61 74  erator = generat
39c90 6f 72 3b 0a 20 20 09 20 20 20 20 20 20 20 20 74  or;.  .        t
39ca0 68 69 73 2e 65 78 70 72 65 73 73 69 6f 6e 20 3d  his.expression =
39cb0 20 66 61 6c 73 65 3b 0a 20 20 09 20 20 20 20 7d   false;.  .    }
39cc0 0a 20 20 09 20 20 20 20 72 65 74 75 72 6e 20 46  .  .    return F
39cd0 75 6e 63 74 69 6f 6e 45 78 70 72 65 73 73 69 6f  unctionExpressio
39ce0 6e 3b 0a 20 20 09 7d 28 29 29 3b 0a 20 20 09 65  n;.  .}());.  .e
39cf0 78 70 6f 72 74 73 2e 46 75 6e 63 74 69 6f 6e 45  xports.FunctionE
39d00 78 70 72 65 73 73 69 6f 6e 20 3d 20 46 75 6e 63  xpression = Func
39d10 74 69 6f 6e 45 78 70 72 65 73 73 69 6f 6e 3b 0a  tionExpression;.
39d20 20 20 09 76 61 72 20 49 64 65 6e 74 69 66 69 65    .var Identifie
39d30 72 20 3d 20 28 66 75 6e 63 74 69 6f 6e 20 28 29  r = (function ()
39d40 20 7b 0a 20 20 09 20 20 20 20 66 75 6e 63 74 69   {.  .    functi
39d50 6f 6e 20 49 64 65 6e 74 69 66 69 65 72 28 6e 61  on Identifier(na
39d60 6d 65 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20  me) {.  .       
39d70 20 74 68 69 73 2e 74 79 70 65 20 3d 20 73 79 6e   this.type = syn
39d80 74 61 78 5f 31 2e 53 79 6e 74 61 78 2e 49 64 65  tax_1.Syntax.Ide
39d90 6e 74 69 66 69 65 72 3b 0a 20 20 09 20 20 20 20  ntifier;.  .    
39da0 20 20 20 20 74 68 69 73 2e 6e 61 6d 65 20 3d 20      this.name = 
39db0 6e 61 6d 65 3b 0a 20 20 09 20 20 20 20 7d 0a 20  name;.  .    }. 
39dc0 20 09 20 20 20 20 72 65 74 75 72 6e 20 49 64 65   .    return Ide
39dd0 6e 74 69 66 69 65 72 3b 0a 20 20 09 7d 28 29 29  ntifier;.  .}())
39de0 3b 0a 20 20 09 65 78 70 6f 72 74 73 2e 49 64 65  ;.  .exports.Ide
39df0 6e 74 69 66 69 65 72 20 3d 20 49 64 65 6e 74 69  ntifier = Identi
39e00 66 69 65 72 3b 0a 20 20 09 76 61 72 20 49 66 53  fier;.  .var IfS
39e10 74 61 74 65 6d 65 6e 74 20 3d 20 28 66 75 6e 63  tatement = (func
39e20 74 69 6f 6e 20 28 29 20 7b 0a 20 20 09 20 20 20  tion () {.  .   
39e30 20 66 75 6e 63 74 69 6f 6e 20 49 66 53 74 61 74   function IfStat
39e40 65 6d 65 6e 74 28 74 65 73 74 2c 20 63 6f 6e 73  ement(test, cons
39e50 65 71 75 65 6e 74 2c 20 61 6c 74 65 72 6e 61 74  equent, alternat
39e60 65 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20  e) {.  .        
39e70 74 68 69 73 2e 74 79 70 65 20 3d 20 73 79 6e 74  this.type = synt
39e80 61 78 5f 31 2e 53 79 6e 74 61 78 2e 49 66 53 74  ax_1.Syntax.IfSt
39e90 61 74 65 6d 65 6e 74 3b 0a 20 20 09 20 20 20 20  atement;.  .    
39ea0 20 20 20 20 74 68 69 73 2e 74 65 73 74 20 3d 20      this.test = 
39eb0 74 65 73 74 3b 0a 20 20 09 20 20 20 20 20 20 20  test;.  .       
39ec0 20 74 68 69 73 2e 63 6f 6e 73 65 71 75 65 6e 74   this.consequent
39ed0 20 3d 20 63 6f 6e 73 65 71 75 65 6e 74 3b 0a 20   = consequent;. 
39ee0 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 61   .        this.a
39ef0 6c 74 65 72 6e 61 74 65 20 3d 20 61 6c 74 65 72  lternate = alter
39f00 6e 61 74 65 3b 0a 20 20 09 20 20 20 20 7d 0a 20  nate;.  .    }. 
39f10 20 09 20 20 20 20 72 65 74 75 72 6e 20 49 66 53   .    return IfS
39f20 74 61 74 65 6d 65 6e 74 3b 0a 20 20 09 7d 28 29  tatement;.  .}()
39f30 29 3b 0a 20 20 09 65 78 70 6f 72 74 73 2e 49 66  );.  .exports.If
39f40 53 74 61 74 65 6d 65 6e 74 20 3d 20 49 66 53 74  Statement = IfSt
39f50 61 74 65 6d 65 6e 74 3b 0a 20 20 09 76 61 72 20  atement;.  .var 
39f60 49 6d 70 6f 72 74 44 65 63 6c 61 72 61 74 69 6f  ImportDeclaratio
39f70 6e 20 3d 20 28 66 75 6e 63 74 69 6f 6e 20 28 29  n = (function ()
39f80 20 7b 0a 20 20 09 20 20 20 20 66 75 6e 63 74 69   {.  .    functi
39f90 6f 6e 20 49 6d 70 6f 72 74 44 65 63 6c 61 72 61  on ImportDeclara
39fa0 74 69 6f 6e 28 73 70 65 63 69 66 69 65 72 73 2c  tion(specifiers,
39fb0 20 73 6f 75 72 63 65 29 20 7b 0a 20 20 09 20 20   source) {.  .  
39fc0 20 20 20 20 20 20 74 68 69 73 2e 74 79 70 65 20        this.type 
39fd0 3d 20 73 79 6e 74 61 78 5f 31 2e 53 79 6e 74 61  = syntax_1.Synta
39fe0 78 2e 49 6d 70 6f 72 74 44 65 63 6c 61 72 61 74  x.ImportDeclarat
39ff0 69 6f 6e 3b 0a 20 20 09 20 20 20 20 20 20 20 20  ion;.  .        
3a000 74 68 69 73 2e 73 70 65 63 69 66 69 65 72 73 20  this.specifiers 
3a010 3d 20 73 70 65 63 69 66 69 65 72 73 3b 0a 20 20  = specifiers;.  
3a020 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 73 6f  .        this.so
3a030 75 72 63 65 20 3d 20 73 6f 75 72 63 65 3b 0a 20  urce = source;. 
3a040 20 09 20 20 20 20 7d 0a 20 20 09 20 20 20 20 72   .    }.  .    r
3a050 65 74 75 72 6e 20 49 6d 70 6f 72 74 44 65 63 6c  eturn ImportDecl
3a060 61 72 61 74 69 6f 6e 3b 0a 20 20 09 7d 28 29 29  aration;.  .}())
3a070 3b 0a 20 20 09 65 78 70 6f 72 74 73 2e 49 6d 70  ;.  .exports.Imp
3a080 6f 72 74 44 65 63 6c 61 72 61 74 69 6f 6e 20 3d  ortDeclaration =
3a090 20 49 6d 70 6f 72 74 44 65 63 6c 61 72 61 74 69   ImportDeclarati
3a0a0 6f 6e 3b 0a 20 20 09 76 61 72 20 49 6d 70 6f 72  on;.  .var Impor
3a0b0 74 44 65 66 61 75 6c 74 53 70 65 63 69 66 69 65  tDefaultSpecifie
3a0c0 72 20 3d 20 28 66 75 6e 63 74 69 6f 6e 20 28 29  r = (function ()
3a0d0 20 7b 0a 20 20 09 20 20 20 20 66 75 6e 63 74 69   {.  .    functi
3a0e0 6f 6e 20 49 6d 70 6f 72 74 44 65 66 61 75 6c 74  on ImportDefault
3a0f0 53 70 65 63 69 66 69 65 72 28 6c 6f 63 61 6c 29  Specifier(local)
3a100 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 74 68   {.  .        th
3a110 69 73 2e 74 79 70 65 20 3d 20 73 79 6e 74 61 78  is.type = syntax
3a120 5f 31 2e 53 79 6e 74 61 78 2e 49 6d 70 6f 72 74  _1.Syntax.Import
3a130 44 65 66 61 75 6c 74 53 70 65 63 69 66 69 65 72  DefaultSpecifier
3a140 3b 0a 20 20 09 20 20 20 20 20 20 20 20 74 68 69  ;.  .        thi
3a150 73 2e 6c 6f 63 61 6c 20 3d 20 6c 6f 63 61 6c 3b  s.local = local;
3a160 0a 20 20 09 20 20 20 20 7d 0a 20 20 09 20 20 20  .  .    }.  .   
3a170 20 72 65 74 75 72 6e 20 49 6d 70 6f 72 74 44 65   return ImportDe
3a180 66 61 75 6c 74 53 70 65 63 69 66 69 65 72 3b 0a  faultSpecifier;.
3a190 20 20 09 7d 28 29 29 3b 0a 20 20 09 65 78 70 6f    .}());.  .expo
3a1a0 72 74 73 2e 49 6d 70 6f 72 74 44 65 66 61 75 6c  rts.ImportDefaul
3a1b0 74 53 70 65 63 69 66 69 65 72 20 3d 20 49 6d 70  tSpecifier = Imp
3a1c0 6f 72 74 44 65 66 61 75 6c 74 53 70 65 63 69 66  ortDefaultSpecif
3a1d0 69 65 72 3b 0a 20 20 09 76 61 72 20 49 6d 70 6f  ier;.  .var Impo
3a1e0 72 74 4e 61 6d 65 73 70 61 63 65 53 70 65 63 69  rtNamespaceSpeci
3a1f0 66 69 65 72 20 3d 20 28 66 75 6e 63 74 69 6f 6e  fier = (function
3a200 20 28 29 20 7b 0a 20 20 09 20 20 20 20 66 75 6e   () {.  .    fun
3a210 63 74 69 6f 6e 20 49 6d 70 6f 72 74 4e 61 6d 65  ction ImportName
3a220 73 70 61 63 65 53 70 65 63 69 66 69 65 72 28 6c  spaceSpecifier(l
3a230 6f 63 61 6c 29 20 7b 0a 20 20 09 20 20 20 20 20  ocal) {.  .     
3a240 20 20 20 74 68 69 73 2e 74 79 70 65 20 3d 20 73     this.type = s
3a250 79 6e 74 61 78 5f 31 2e 53 79 6e 74 61 78 2e 49  yntax_1.Syntax.I
3a260 6d 70 6f 72 74 4e 61 6d 65 73 70 61 63 65 53 70  mportNamespaceSp
3a270 65 63 69 66 69 65 72 3b 0a 20 20 09 20 20 20 20  ecifier;.  .    
3a280 20 20 20 20 74 68 69 73 2e 6c 6f 63 61 6c 20 3d      this.local =
3a290 20 6c 6f 63 61 6c 3b 0a 20 20 09 20 20 20 20 7d   local;.  .    }
3a2a0 0a 20 20 09 20 20 20 20 72 65 74 75 72 6e 20 49  .  .    return I
3a2b0 6d 70 6f 72 74 4e 61 6d 65 73 70 61 63 65 53 70  mportNamespaceSp
3a2c0 65 63 69 66 69 65 72 3b 0a 20 20 09 7d 28 29 29  ecifier;.  .}())
3a2d0 3b 0a 20 20 09 65 78 70 6f 72 74 73 2e 49 6d 70  ;.  .exports.Imp
3a2e0 6f 72 74 4e 61 6d 65 73 70 61 63 65 53 70 65 63  ortNamespaceSpec
3a2f0 69 66 69 65 72 20 3d 20 49 6d 70 6f 72 74 4e 61  ifier = ImportNa
3a300 6d 65 73 70 61 63 65 53 70 65 63 69 66 69 65 72  mespaceSpecifier
3a310 3b 0a 20 20 09 76 61 72 20 49 6d 70 6f 72 74 53  ;.  .var ImportS
3a320 70 65 63 69 66 69 65 72 20 3d 20 28 66 75 6e 63  pecifier = (func
3a330 74 69 6f 6e 20 28 29 20 7b 0a 20 20 09 20 20 20  tion () {.  .   
3a340 20 66 75 6e 63 74 69 6f 6e 20 49 6d 70 6f 72 74   function Import
3a350 53 70 65 63 69 66 69 65 72 28 6c 6f 63 61 6c 2c  Specifier(local,
3a360 20 69 6d 70 6f 72 74 65 64 29 20 7b 0a 20 20 09   imported) {.  .
3a370 20 20 20 20 20 20 20 20 74 68 69 73 2e 74 79 70          this.typ
3a380 65 20 3d 20 73 79 6e 74 61 78 5f 31 2e 53 79 6e  e = syntax_1.Syn
3a390 74 61 78 2e 49 6d 70 6f 72 74 53 70 65 63 69 66  tax.ImportSpecif
3a3a0 69 65 72 3b 0a 20 20 09 20 20 20 20 20 20 20 20  ier;.  .        
3a3b0 74 68 69 73 2e 6c 6f 63 61 6c 20 3d 20 6c 6f 63  this.local = loc
3a3c0 61 6c 3b 0a 20 20 09 20 20 20 20 20 20 20 20 74  al;.  .        t
3a3d0 68 69 73 2e 69 6d 70 6f 72 74 65 64 20 3d 20 69  his.imported = i
3a3e0 6d 70 6f 72 74 65 64 3b 0a 20 20 09 20 20 20 20  mported;.  .    
3a3f0 7d 0a 20 20 09 20 20 20 20 72 65 74 75 72 6e 20  }.  .    return 
3a400 49 6d 70 6f 72 74 53 70 65 63 69 66 69 65 72 3b  ImportSpecifier;
3a410 0a 20 20 09 7d 28 29 29 3b 0a 20 20 09 65 78 70  .  .}());.  .exp
3a420 6f 72 74 73 2e 49 6d 70 6f 72 74 53 70 65 63 69  orts.ImportSpeci
3a430 66 69 65 72 20 3d 20 49 6d 70 6f 72 74 53 70 65  fier = ImportSpe
3a440 63 69 66 69 65 72 3b 0a 20 20 09 76 61 72 20 4c  cifier;.  .var L
3a450 61 62 65 6c 65 64 53 74 61 74 65 6d 65 6e 74 20  abeledStatement 
3a460 3d 20 28 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b  = (function () {
3a470 0a 20 20 09 20 20 20 20 66 75 6e 63 74 69 6f 6e  .  .    function
3a480 20 4c 61 62 65 6c 65 64 53 74 61 74 65 6d 65 6e   LabeledStatemen
3a490 74 28 6c 61 62 65 6c 2c 20 62 6f 64 79 29 20 7b  t(label, body) {
3a4a0 0a 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73  .  .        this
3a4b0 2e 74 79 70 65 20 3d 20 73 79 6e 74 61 78 5f 31  .type = syntax_1
3a4c0 2e 53 79 6e 74 61 78 2e 4c 61 62 65 6c 65 64 53  .Syntax.LabeledS
3a4d0 74 61 74 65 6d 65 6e 74 3b 0a 20 20 09 20 20 20  tatement;.  .   
3a4e0 20 20 20 20 20 74 68 69 73 2e 6c 61 62 65 6c 20       this.label 
3a4f0 3d 20 6c 61 62 65 6c 3b 0a 20 20 09 20 20 20 20  = label;.  .    
3a500 20 20 20 20 74 68 69 73 2e 62 6f 64 79 20 3d 20      this.body = 
3a510 62 6f 64 79 3b 0a 20 20 09 20 20 20 20 7d 0a 20  body;.  .    }. 
3a520 20 09 20 20 20 20 72 65 74 75 72 6e 20 4c 61 62   .    return Lab
3a530 65 6c 65 64 53 74 61 74 65 6d 65 6e 74 3b 0a 20  eledStatement;. 
3a540 20 09 7d 28 29 29 3b 0a 20 20 09 65 78 70 6f 72   .}());.  .expor
3a550 74 73 2e 4c 61 62 65 6c 65 64 53 74 61 74 65 6d  ts.LabeledStatem
3a560 65 6e 74 20 3d 20 4c 61 62 65 6c 65 64 53 74 61  ent = LabeledSta
3a570 74 65 6d 65 6e 74 3b 0a 20 20 09 76 61 72 20 4c  tement;.  .var L
3a580 69 74 65 72 61 6c 20 3d 20 28 66 75 6e 63 74 69  iteral = (functi
3a590 6f 6e 20 28 29 20 7b 0a 20 20 09 20 20 20 20 66  on () {.  .    f
3a5a0 75 6e 63 74 69 6f 6e 20 4c 69 74 65 72 61 6c 28  unction Literal(
3a5b0 76 61 6c 75 65 2c 20 72 61 77 29 20 7b 0a 20 20  value, raw) {.  
3a5c0 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 74 79  .        this.ty
3a5d0 70 65 20 3d 20 73 79 6e 74 61 78 5f 31 2e 53 79  pe = syntax_1.Sy
3a5e0 6e 74 61 78 2e 4c 69 74 65 72 61 6c 3b 0a 20 20  ntax.Literal;.  
3a5f0 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 76 61  .        this.va
3a600 6c 75 65 20 3d 20 76 61 6c 75 65 3b 0a 20 20 09  lue = value;.  .
3a610 20 20 20 20 20 20 20 20 74 68 69 73 2e 72 61 77          this.raw
3a620 20 3d 20 72 61 77 3b 0a 20 20 09 20 20 20 20 7d   = raw;.  .    }
3a630 0a 20 20 09 20 20 20 20 72 65 74 75 72 6e 20 4c  .  .    return L
3a640 69 74 65 72 61 6c 3b 0a 20 20 09 7d 28 29 29 3b  iteral;.  .}());
3a650 0a 20 20 09 65 78 70 6f 72 74 73 2e 4c 69 74 65  .  .exports.Lite
3a660 72 61 6c 20 3d 20 4c 69 74 65 72 61 6c 3b 0a 20  ral = Literal;. 
3a670 20 09 76 61 72 20 4d 65 74 61 50 72 6f 70 65 72   .var MetaProper
3a680 74 79 20 3d 20 28 66 75 6e 63 74 69 6f 6e 20 28  ty = (function (
3a690 29 20 7b 0a 20 20 09 20 20 20 20 66 75 6e 63 74  ) {.  .    funct
3a6a0 69 6f 6e 20 4d 65 74 61 50 72 6f 70 65 72 74 79  ion MetaProperty
3a6b0 28 6d 65 74 61 2c 20 70 72 6f 70 65 72 74 79 29  (meta, property)
3a6c0 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 74 68   {.  .        th
3a6d0 69 73 2e 74 79 70 65 20 3d 20 73 79 6e 74 61 78  is.type = syntax
3a6e0 5f 31 2e 53 79 6e 74 61 78 2e 4d 65 74 61 50 72  _1.Syntax.MetaPr
3a6f0 6f 70 65 72 74 79 3b 0a 20 20 09 20 20 20 20 20  operty;.  .     
3a700 20 20 20 74 68 69 73 2e 6d 65 74 61 20 3d 20 6d     this.meta = m
3a710 65 74 61 3b 0a 20 20 09 20 20 20 20 20 20 20 20  eta;.  .        
3a720 74 68 69 73 2e 70 72 6f 70 65 72 74 79 20 3d 20  this.property = 
3a730 70 72 6f 70 65 72 74 79 3b 0a 20 20 09 20 20 20  property;.  .   
3a740 20 7d 0a 20 20 09 20 20 20 20 72 65 74 75 72 6e   }.  .    return
3a750 20 4d 65 74 61 50 72 6f 70 65 72 74 79 3b 0a 20   MetaProperty;. 
3a760 20 09 7d 28 29 29 3b 0a 20 20 09 65 78 70 6f 72   .}());.  .expor
3a770 74 73 2e 4d 65 74 61 50 72 6f 70 65 72 74 79 20  ts.MetaProperty 
3a780 3d 20 4d 65 74 61 50 72 6f 70 65 72 74 79 3b 0a  = MetaProperty;.
3a790 20 20 09 76 61 72 20 4d 65 74 68 6f 64 44 65 66    .var MethodDef
3a7a0 69 6e 69 74 69 6f 6e 20 3d 20 28 66 75 6e 63 74  inition = (funct
3a7b0 69 6f 6e 20 28 29 20 7b 0a 20 20 09 20 20 20 20  ion () {.  .    
3a7c0 66 75 6e 63 74 69 6f 6e 20 4d 65 74 68 6f 64 44  function MethodD
3a7d0 65 66 69 6e 69 74 69 6f 6e 28 6b 65 79 2c 20 63  efinition(key, c
3a7e0 6f 6d 70 75 74 65 64 2c 20 76 61 6c 75 65 2c 20  omputed, value, 
3a7f0 6b 69 6e 64 2c 20 69 73 53 74 61 74 69 63 29 20  kind, isStatic) 
3a800 7b 0a 20 20 09 20 20 20 20 20 20 20 20 74 68 69  {.  .        thi
3a810 73 2e 74 79 70 65 20 3d 20 73 79 6e 74 61 78 5f  s.type = syntax_
3a820 31 2e 53 79 6e 74 61 78 2e 4d 65 74 68 6f 64 44  1.Syntax.MethodD
3a830 65 66 69 6e 69 74 69 6f 6e 3b 0a 20 20 09 20 20  efinition;.  .  
3a840 20 20 20 20 20 20 74 68 69 73 2e 6b 65 79 20 3d        this.key =
3a850 20 6b 65 79 3b 0a 20 20 09 20 20 20 20 20 20 20   key;.  .       
3a860 20 74 68 69 73 2e 63 6f 6d 70 75 74 65 64 20 3d   this.computed =
3a870 20 63 6f 6d 70 75 74 65 64 3b 0a 20 20 09 20 20   computed;.  .  
3a880 20 20 20 20 20 20 74 68 69 73 2e 76 61 6c 75 65        this.value
3a890 20 3d 20 76 61 6c 75 65 3b 0a 20 20 09 20 20 20   = value;.  .   
3a8a0 20 20 20 20 20 74 68 69 73 2e 6b 69 6e 64 20 3d       this.kind =
3a8b0 20 6b 69 6e 64 3b 0a 20 20 09 20 20 20 20 20 20   kind;.  .      
3a8c0 20 20 74 68 69 73 2e 73 74 61 74 69 63 20 3d 20    this.static = 
3a8d0 69 73 53 74 61 74 69 63 3b 0a 20 20 09 20 20 20  isStatic;.  .   
3a8e0 20 7d 0a 20 20 09 20 20 20 20 72 65 74 75 72 6e   }.  .    return
3a8f0 20 4d 65 74 68 6f 64 44 65 66 69 6e 69 74 69 6f   MethodDefinitio
3a900 6e 3b 0a 20 20 09 7d 28 29 29 3b 0a 20 20 09 65  n;.  .}());.  .e
3a910 78 70 6f 72 74 73 2e 4d 65 74 68 6f 64 44 65 66  xports.MethodDef
3a920 69 6e 69 74 69 6f 6e 20 3d 20 4d 65 74 68 6f 64  inition = Method
3a930 44 65 66 69 6e 69 74 69 6f 6e 3b 0a 20 20 09 76  Definition;.  .v
3a940 61 72 20 4e 65 77 45 78 70 72 65 73 73 69 6f 6e  ar NewExpression
3a950 20 3d 20 28 66 75 6e 63 74 69 6f 6e 20 28 29 20   = (function () 
3a960 7b 0a 20 20 09 20 20 20 20 66 75 6e 63 74 69 6f  {.  .    functio
3a970 6e 20 4e 65 77 45 78 70 72 65 73 73 69 6f 6e 28  n NewExpression(
3a980 63 61 6c 6c 65 65 2c 20 61 72 67 73 29 20 7b 0a  callee, args) {.
3a990 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e    .        this.
3a9a0 74 79 70 65 20 3d 20 73 79 6e 74 61 78 5f 31 2e  type = syntax_1.
3a9b0 53 79 6e 74 61 78 2e 4e 65 77 45 78 70 72 65 73  Syntax.NewExpres
3a9c0 73 69 6f 6e 3b 0a 20 20 09 20 20 20 20 20 20 20  sion;.  .       
3a9d0 20 74 68 69 73 2e 63 61 6c 6c 65 65 20 3d 20 63   this.callee = c
3a9e0 61 6c 6c 65 65 3b 0a 20 20 09 20 20 20 20 20 20  allee;.  .      
3a9f0 20 20 74 68 69 73 2e 61 72 67 75 6d 65 6e 74 73    this.arguments
3aa00 20 3d 20 61 72 67 73 3b 0a 20 20 09 20 20 20 20   = args;.  .    
3aa10 7d 0a 20 20 09 20 20 20 20 72 65 74 75 72 6e 20  }.  .    return 
3aa20 4e 65 77 45 78 70 72 65 73 73 69 6f 6e 3b 0a 20  NewExpression;. 
3aa30 20 09 7d 28 29 29 3b 0a 20 20 09 65 78 70 6f 72   .}());.  .expor
3aa40 74 73 2e 4e 65 77 45 78 70 72 65 73 73 69 6f 6e  ts.NewExpression
3aa50 20 3d 20 4e 65 77 45 78 70 72 65 73 73 69 6f 6e   = NewExpression
3aa60 3b 0a 20 20 09 76 61 72 20 4f 62 6a 65 63 74 45  ;.  .var ObjectE
3aa70 78 70 72 65 73 73 69 6f 6e 20 3d 20 28 66 75 6e  xpression = (fun
3aa80 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20 09 20 20  ction () {.  .  
3aa90 20 20 66 75 6e 63 74 69 6f 6e 20 4f 62 6a 65 63    function Objec
3aaa0 74 45 78 70 72 65 73 73 69 6f 6e 28 70 72 6f 70  tExpression(prop
3aab0 65 72 74 69 65 73 29 20 7b 0a 20 20 09 20 20 20  erties) {.  .   
3aac0 20 20 20 20 20 74 68 69 73 2e 74 79 70 65 20 3d       this.type =
3aad0 20 73 79 6e 74 61 78 5f 31 2e 53 79 6e 74 61 78   syntax_1.Syntax
3aae0 2e 4f 62 6a 65 63 74 45 78 70 72 65 73 73 69 6f  .ObjectExpressio
3aaf0 6e 3b 0a 20 20 09 20 20 20 20 20 20 20 20 74 68  n;.  .        th
3ab00 69 73 2e 70 72 6f 70 65 72 74 69 65 73 20 3d 20  is.properties = 
3ab10 70 72 6f 70 65 72 74 69 65 73 3b 0a 20 20 09 20  properties;.  . 
3ab20 20 20 20 7d 0a 20 20 09 20 20 20 20 72 65 74 75     }.  .    retu
3ab30 72 6e 20 4f 62 6a 65 63 74 45 78 70 72 65 73 73  rn ObjectExpress
3ab40 69 6f 6e 3b 0a 20 20 09 7d 28 29 29 3b 0a 20 20  ion;.  .}());.  
3ab50 09 65 78 70 6f 72 74 73 2e 4f 62 6a 65 63 74 45  .exports.ObjectE
3ab60 78 70 72 65 73 73 69 6f 6e 20 3d 20 4f 62 6a 65  xpression = Obje
3ab70 63 74 45 78 70 72 65 73 73 69 6f 6e 3b 0a 20 20  ctExpression;.  
3ab80 09 76 61 72 20 4f 62 6a 65 63 74 50 61 74 74 65  .var ObjectPatte
3ab90 72 6e 20 3d 20 28 66 75 6e 63 74 69 6f 6e 20 28  rn = (function (
3aba0 29 20 7b 0a 20 20 09 20 20 20 20 66 75 6e 63 74  ) {.  .    funct
3abb0 69 6f 6e 20 4f 62 6a 65 63 74 50 61 74 74 65 72  ion ObjectPatter
3abc0 6e 28 70 72 6f 70 65 72 74 69 65 73 29 20 7b 0a  n(properties) {.
3abd0 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e    .        this.
3abe0 74 79 70 65 20 3d 20 73 79 6e 74 61 78 5f 31 2e  type = syntax_1.
3abf0 53 79 6e 74 61 78 2e 4f 62 6a 65 63 74 50 61 74  Syntax.ObjectPat
3ac00 74 65 72 6e 3b 0a 20 20 09 20 20 20 20 20 20 20  tern;.  .       
3ac10 20 74 68 69 73 2e 70 72 6f 70 65 72 74 69 65 73   this.properties
3ac20 20 3d 20 70 72 6f 70 65 72 74 69 65 73 3b 0a 20   = properties;. 
3ac30 20 09 20 20 20 20 7d 0a 20 20 09 20 20 20 20 72   .    }.  .    r
3ac40 65 74 75 72 6e 20 4f 62 6a 65 63 74 50 61 74 74  eturn ObjectPatt
3ac50 65 72 6e 3b 0a 20 20 09 7d 28 29 29 3b 0a 20 20  ern;.  .}());.  
3ac60 09 65 78 70 6f 72 74 73 2e 4f 62 6a 65 63 74 50  .exports.ObjectP
3ac70 61 74 74 65 72 6e 20 3d 20 4f 62 6a 65 63 74 50  attern = ObjectP
3ac80 61 74 74 65 72 6e 3b 0a 20 20 09 76 61 72 20 50  attern;.  .var P
3ac90 72 6f 67 72 61 6d 20 3d 20 28 66 75 6e 63 74 69  rogram = (functi
3aca0 6f 6e 20 28 29 20 7b 0a 20 20 09 20 20 20 20 66  on () {.  .    f
3acb0 75 6e 63 74 69 6f 6e 20 50 72 6f 67 72 61 6d 28  unction Program(
3acc0 62 6f 64 79 2c 20 73 6f 75 72 63 65 54 79 70 65  body, sourceType
3acd0 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 74  ) {.  .        t
3ace0 68 69 73 2e 74 79 70 65 20 3d 20 73 79 6e 74 61  his.type = synta
3acf0 78 5f 31 2e 53 79 6e 74 61 78 2e 50 72 6f 67 72  x_1.Syntax.Progr
3ad00 61 6d 3b 0a 20 20 09 20 20 20 20 20 20 20 20 74  am;.  .        t
3ad10 68 69 73 2e 62 6f 64 79 20 3d 20 62 6f 64 79 3b  his.body = body;
3ad20 0a 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73  .  .        this
3ad30 2e 73 6f 75 72 63 65 54 79 70 65 20 3d 20 73 6f  .sourceType = so
3ad40 75 72 63 65 54 79 70 65 3b 0a 20 20 09 20 20 20  urceType;.  .   
3ad50 20 7d 0a 20 20 09 20 20 20 20 72 65 74 75 72 6e   }.  .    return
3ad60 20 50 72 6f 67 72 61 6d 3b 0a 20 20 09 7d 28 29   Program;.  .}()
3ad70 29 3b 0a 20 20 09 65 78 70 6f 72 74 73 2e 50 72  );.  .exports.Pr
3ad80 6f 67 72 61 6d 20 3d 20 50 72 6f 67 72 61 6d 3b  ogram = Program;
3ad90 0a 20 20 09 76 61 72 20 50 72 6f 70 65 72 74 79  .  .var Property
3ada0 20 3d 20 28 66 75 6e 63 74 69 6f 6e 20 28 29 20   = (function () 
3adb0 7b 0a 20 20 09 20 20 20 20 66 75 6e 63 74 69 6f  {.  .    functio
3adc0 6e 20 50 72 6f 70 65 72 74 79 28 6b 69 6e 64 2c  n Property(kind,
3add0 20 6b 65 79 2c 20 63 6f 6d 70 75 74 65 64 2c 20   key, computed, 
3ade0 76 61 6c 75 65 2c 20 6d 65 74 68 6f 64 2c 20 73  value, method, s
3adf0 68 6f 72 74 68 61 6e 64 29 20 7b 0a 20 20 09 20  horthand) {.  . 
3ae00 20 20 20 20 20 20 20 74 68 69 73 2e 74 79 70 65         this.type
3ae10 20 3d 20 73 79 6e 74 61 78 5f 31 2e 53 79 6e 74   = syntax_1.Synt
3ae20 61 78 2e 50 72 6f 70 65 72 74 79 3b 0a 20 20 09  ax.Property;.  .
3ae30 20 20 20 20 20 20 20 20 74 68 69 73 2e 6b 65 79          this.key
3ae40 20 3d 20 6b 65 79 3b 0a 20 20 09 20 20 20 20 20   = key;.  .     
3ae50 20 20 20 74 68 69 73 2e 63 6f 6d 70 75 74 65 64     this.computed
3ae60 20 3d 20 63 6f 6d 70 75 74 65 64 3b 0a 20 20 09   = computed;.  .
3ae70 20 20 20 20 20 20 20 20 74 68 69 73 2e 76 61 6c          this.val
3ae80 75 65 20 3d 20 76 61 6c 75 65 3b 0a 20 20 09 20  ue = value;.  . 
3ae90 20 20 20 20 20 20 20 74 68 69 73 2e 6b 69 6e 64         this.kind
3aea0 20 3d 20 6b 69 6e 64 3b 0a 20 20 09 20 20 20 20   = kind;.  .    
3aeb0 20 20 20 20 74 68 69 73 2e 6d 65 74 68 6f 64 20      this.method 
3aec0 3d 20 6d 65 74 68 6f 64 3b 0a 20 20 09 20 20 20  = method;.  .   
3aed0 20 20 20 20 20 74 68 69 73 2e 73 68 6f 72 74 68       this.shorth
3aee0 61 6e 64 20 3d 20 73 68 6f 72 74 68 61 6e 64 3b  and = shorthand;
3aef0 0a 20 20 09 20 20 20 20 7d 0a 20 20 09 20 20 20  .  .    }.  .   
3af00 20 72 65 74 75 72 6e 20 50 72 6f 70 65 72 74 79   return Property
3af10 3b 0a 20 20 09 7d 28 29 29 3b 0a 20 20 09 65 78  ;.  .}());.  .ex
3af20 70 6f 72 74 73 2e 50 72 6f 70 65 72 74 79 20 3d  ports.Property =
3af30 20 50 72 6f 70 65 72 74 79 3b 0a 20 20 09 76 61   Property;.  .va
3af40 72 20 52 65 67 65 78 4c 69 74 65 72 61 6c 20 3d  r RegexLiteral =
3af50 20 28 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a   (function () {.
3af60 20 20 09 20 20 20 20 66 75 6e 63 74 69 6f 6e 20    .    function 
3af70 52 65 67 65 78 4c 69 74 65 72 61 6c 28 76 61 6c  RegexLiteral(val
3af80 75 65 2c 20 72 61 77 2c 20 72 65 67 65 78 29 20  ue, raw, regex) 
3af90 7b 0a 20 20 09 20 20 20 20 20 20 20 20 74 68 69  {.  .        thi
3afa0 73 2e 74 79 70 65 20 3d 20 73 79 6e 74 61 78 5f  s.type = syntax_
3afb0 31 2e 53 79 6e 74 61 78 2e 4c 69 74 65 72 61 6c  1.Syntax.Literal
3afc0 3b 0a 20 20 09 20 20 20 20 20 20 20 20 74 68 69  ;.  .        thi
3afd0 73 2e 76 61 6c 75 65 20 3d 20 76 61 6c 75 65 3b  s.value = value;
3afe0 0a 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73  .  .        this
3aff0 2e 72 61 77 20 3d 20 72 61 77 3b 0a 20 20 09 20  .raw = raw;.  . 
3b000 20 20 20 20 20 20 20 74 68 69 73 2e 72 65 67 65         this.rege
3b010 78 20 3d 20 72 65 67 65 78 3b 0a 20 20 09 20 20  x = regex;.  .  
3b020 20 20 7d 0a 20 20 09 20 20 20 20 72 65 74 75 72    }.  .    retur
3b030 6e 20 52 65 67 65 78 4c 69 74 65 72 61 6c 3b 0a  n RegexLiteral;.
3b040 20 20 09 7d 28 29 29 3b 0a 20 20 09 65 78 70 6f    .}());.  .expo
3b050 72 74 73 2e 52 65 67 65 78 4c 69 74 65 72 61 6c  rts.RegexLiteral
3b060 20 3d 20 52 65 67 65 78 4c 69 74 65 72 61 6c 3b   = RegexLiteral;
3b070 0a 20 20 09 76 61 72 20 52 65 73 74 45 6c 65 6d  .  .var RestElem
3b080 65 6e 74 20 3d 20 28 66 75 6e 63 74 69 6f 6e 20  ent = (function 
3b090 28 29 20 7b 0a 20 20 09 20 20 20 20 66 75 6e 63  () {.  .    func
3b0a0 74 69 6f 6e 20 52 65 73 74 45 6c 65 6d 65 6e 74  tion RestElement
3b0b0 28 61 72 67 75 6d 65 6e 74 29 20 7b 0a 20 20 09  (argument) {.  .
3b0c0 20 20 20 20 20 20 20 20 74 68 69 73 2e 74 79 70          this.typ
3b0d0 65 20 3d 20 73 79 6e 74 61 78 5f 31 2e 53 79 6e  e = syntax_1.Syn
3b0e0 74 61 78 2e 52 65 73 74 45 6c 65 6d 65 6e 74 3b  tax.RestElement;
3b0f0 0a 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73  .  .        this
3b100 2e 61 72 67 75 6d 65 6e 74 20 3d 20 61 72 67 75  .argument = argu
3b110 6d 65 6e 74 3b 0a 20 20 09 20 20 20 20 7d 0a 20  ment;.  .    }. 
3b120 20 09 20 20 20 20 72 65 74 75 72 6e 20 52 65 73   .    return Res
3b130 74 45 6c 65 6d 65 6e 74 3b 0a 20 20 09 7d 28 29  tElement;.  .}()
3b140 29 3b 0a 20 20 09 65 78 70 6f 72 74 73 2e 52 65  );.  .exports.Re
3b150 73 74 45 6c 65 6d 65 6e 74 20 3d 20 52 65 73 74  stElement = Rest
3b160 45 6c 65 6d 65 6e 74 3b 0a 20 20 09 76 61 72 20  Element;.  .var 
3b170 52 65 74 75 72 6e 53 74 61 74 65 6d 65 6e 74 20  ReturnStatement 
3b180 3d 20 28 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b  = (function () {
3b190 0a 20 20 09 20 20 20 20 66 75 6e 63 74 69 6f 6e  .  .    function
3b1a0 20 52 65 74 75 72 6e 53 74 61 74 65 6d 65 6e 74   ReturnStatement
3b1b0 28 61 72 67 75 6d 65 6e 74 29 20 7b 0a 20 20 09  (argument) {.  .
3b1c0 20 20 20 20 20 20 20 20 74 68 69 73 2e 74 79 70          this.typ
3b1d0 65 20 3d 20 73 79 6e 74 61 78 5f 31 2e 53 79 6e  e = syntax_1.Syn
3b1e0 74 61 78 2e 52 65 74 75 72 6e 53 74 61 74 65 6d  tax.ReturnStatem
3b1f0 65 6e 74 3b 0a 20 20 09 20 20 20 20 20 20 20 20  ent;.  .        
3b200 74 68 69 73 2e 61 72 67 75 6d 65 6e 74 20 3d 20  this.argument = 
3b210 61 72 67 75 6d 65 6e 74 3b 0a 20 20 09 20 20 20  argument;.  .   
3b220 20 7d 0a 20 20 09 20 20 20 20 72 65 74 75 72 6e   }.  .    return
3b230 20 52 65 74 75 72 6e 53 74 61 74 65 6d 65 6e 74   ReturnStatement
3b240 3b 0a 20 20 09 7d 28 29 29 3b 0a 20 20 09 65 78  ;.  .}());.  .ex
3b250 70 6f 72 74 73 2e 52 65 74 75 72 6e 53 74 61 74  ports.ReturnStat
3b260 65 6d 65 6e 74 20 3d 20 52 65 74 75 72 6e 53 74  ement = ReturnSt
3b270 61 74 65 6d 65 6e 74 3b 0a 20 20 09 76 61 72 20  atement;.  .var 
3b280 53 65 71 75 65 6e 63 65 45 78 70 72 65 73 73 69  SequenceExpressi
3b290 6f 6e 20 3d 20 28 66 75 6e 63 74 69 6f 6e 20 28  on = (function (
3b2a0 29 20 7b 0a 20 20 09 20 20 20 20 66 75 6e 63 74  ) {.  .    funct
3b2b0 69 6f 6e 20 53 65 71 75 65 6e 63 65 45 78 70 72  ion SequenceExpr
3b2c0 65 73 73 69 6f 6e 28 65 78 70 72 65 73 73 69 6f  ession(expressio
3b2d0 6e 73 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20  ns) {.  .       
3b2e0 20 74 68 69 73 2e 74 79 70 65 20 3d 20 73 79 6e   this.type = syn
3b2f0 74 61 78 5f 31 2e 53 79 6e 74 61 78 2e 53 65 71  tax_1.Syntax.Seq
3b300 75 65 6e 63 65 45 78 70 72 65 73 73 69 6f 6e 3b  uenceExpression;
3b310 0a 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73  .  .        this
3b320 2e 65 78 70 72 65 73 73 69 6f 6e 73 20 3d 20 65  .expressions = e
3b330 78 70 72 65 73 73 69 6f 6e 73 3b 0a 20 20 09 20  xpressions;.  . 
3b340 20 20 20 7d 0a 20 20 09 20 20 20 20 72 65 74 75     }.  .    retu
3b350 72 6e 20 53 65 71 75 65 6e 63 65 45 78 70 72 65  rn SequenceExpre
3b360 73 73 69 6f 6e 3b 0a 20 20 09 7d 28 29 29 3b 0a  ssion;.  .}());.
3b370 20 20 09 65 78 70 6f 72 74 73 2e 53 65 71 75 65    .exports.Seque
3b380 6e 63 65 45 78 70 72 65 73 73 69 6f 6e 20 3d 20  nceExpression = 
3b390 53 65 71 75 65 6e 63 65 45 78 70 72 65 73 73 69  SequenceExpressi
3b3a0 6f 6e 3b 0a 20 20 09 76 61 72 20 53 70 72 65 61  on;.  .var Sprea
3b3b0 64 45 6c 65 6d 65 6e 74 20 3d 20 28 66 75 6e 63  dElement = (func
3b3c0 74 69 6f 6e 20 28 29 20 7b 0a 20 20 09 20 20 20  tion () {.  .   
3b3d0 20 66 75 6e 63 74 69 6f 6e 20 53 70 72 65 61 64   function Spread
3b3e0 45 6c 65 6d 65 6e 74 28 61 72 67 75 6d 65 6e 74  Element(argument
3b3f0 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 74  ) {.  .        t
3b400 68 69 73 2e 74 79 70 65 20 3d 20 73 79 6e 74 61  his.type = synta
3b410 78 5f 31 2e 53 79 6e 74 61 78 2e 53 70 72 65 61  x_1.Syntax.Sprea
3b420 64 45 6c 65 6d 65 6e 74 3b 0a 20 20 09 20 20 20  dElement;.  .   
3b430 20 20 20 20 20 74 68 69 73 2e 61 72 67 75 6d 65       this.argume
3b440 6e 74 20 3d 20 61 72 67 75 6d 65 6e 74 3b 0a 20  nt = argument;. 
3b450 20 09 20 20 20 20 7d 0a 20 20 09 20 20 20 20 72   .    }.  .    r
3b460 65 74 75 72 6e 20 53 70 72 65 61 64 45 6c 65 6d  eturn SpreadElem
3b470 65 6e 74 3b 0a 20 20 09 7d 28 29 29 3b 0a 20 20  ent;.  .}());.  
3b480 09 65 78 70 6f 72 74 73 2e 53 70 72 65 61 64 45  .exports.SpreadE
3b490 6c 65 6d 65 6e 74 20 3d 20 53 70 72 65 61 64 45  lement = SpreadE
3b4a0 6c 65 6d 65 6e 74 3b 0a 20 20 09 76 61 72 20 53  lement;.  .var S
3b4b0 74 61 74 69 63 4d 65 6d 62 65 72 45 78 70 72 65  taticMemberExpre
3b4c0 73 73 69 6f 6e 20 3d 20 28 66 75 6e 63 74 69 6f  ssion = (functio
3b4d0 6e 20 28 29 20 7b 0a 20 20 09 20 20 20 20 66 75  n () {.  .    fu
3b4e0 6e 63 74 69 6f 6e 20 53 74 61 74 69 63 4d 65 6d  nction StaticMem
3b4f0 62 65 72 45 78 70 72 65 73 73 69 6f 6e 28 6f 62  berExpression(ob
3b500 6a 65 63 74 2c 20 70 72 6f 70 65 72 74 79 29 20  ject, property) 
3b510 7b 0a 20 20 09 20 20 20 20 20 20 20 20 74 68 69  {.  .        thi
3b520 73 2e 74 79 70 65 20 3d 20 73 79 6e 74 61 78 5f  s.type = syntax_
3b530 31 2e 53 79 6e 74 61 78 2e 4d 65 6d 62 65 72 45  1.Syntax.MemberE
3b540 78 70 72 65 73 73 69 6f 6e 3b 0a 20 20 09 20 20  xpression;.  .  
3b550 20 20 20 20 20 20 74 68 69 73 2e 63 6f 6d 70 75        this.compu
3b560 74 65 64 20 3d 20 66 61 6c 73 65 3b 0a 20 20 09  ted = false;.  .
3b570 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f 62 6a          this.obj
3b580 65 63 74 20 3d 20 6f 62 6a 65 63 74 3b 0a 20 20  ect = object;.  
3b590 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 70 72  .        this.pr
3b5a0 6f 70 65 72 74 79 20 3d 20 70 72 6f 70 65 72 74  operty = propert
3b5b0 79 3b 0a 20 20 09 20 20 20 20 7d 0a 20 20 09 20  y;.  .    }.  . 
3b5c0 20 20 20 72 65 74 75 72 6e 20 53 74 61 74 69 63     return Static
3b5d0 4d 65 6d 62 65 72 45 78 70 72 65 73 73 69 6f 6e  MemberExpression
3b5e0 3b 0a 20 20 09 7d 28 29 29 3b 0a 20 20 09 65 78  ;.  .}());.  .ex
3b5f0 70 6f 72 74 73 2e 53 74 61 74 69 63 4d 65 6d 62  ports.StaticMemb
3b600 65 72 45 78 70 72 65 73 73 69 6f 6e 20 3d 20 53  erExpression = S
3b610 74 61 74 69 63 4d 65 6d 62 65 72 45 78 70 72 65  taticMemberExpre
3b620 73 73 69 6f 6e 3b 0a 20 20 09 76 61 72 20 53 75  ssion;.  .var Su
3b630 70 65 72 20 3d 20 28 66 75 6e 63 74 69 6f 6e 20  per = (function 
3b640 28 29 20 7b 0a 20 20 09 20 20 20 20 66 75 6e 63  () {.  .    func
3b650 74 69 6f 6e 20 53 75 70 65 72 28 29 20 7b 0a 20  tion Super() {. 
3b660 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 74   .        this.t
3b670 79 70 65 20 3d 20 73 79 6e 74 61 78 5f 31 2e 53  ype = syntax_1.S
3b680 79 6e 74 61 78 2e 53 75 70 65 72 3b 0a 20 20 09  yntax.Super;.  .
3b690 20 20 20 20 7d 0a 20 20 09 20 20 20 20 72 65 74      }.  .    ret
3b6a0 75 72 6e 20 53 75 70 65 72 3b 0a 20 20 09 7d 28  urn Super;.  .}(
3b6b0 29 29 3b 0a 20 20 09 65 78 70 6f 72 74 73 2e 53  ));.  .exports.S
3b6c0 75 70 65 72 20 3d 20 53 75 70 65 72 3b 0a 20 20  uper = Super;.  
3b6d0 09 76 61 72 20 53 77 69 74 63 68 43 61 73 65 20  .var SwitchCase 
3b6e0 3d 20 28 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b  = (function () {
3b6f0 0a 20 20 09 20 20 20 20 66 75 6e 63 74 69 6f 6e  .  .    function
3b700 20 53 77 69 74 63 68 43 61 73 65 28 74 65 73 74   SwitchCase(test
3b710 2c 20 63 6f 6e 73 65 71 75 65 6e 74 29 20 7b 0a  , consequent) {.
3b720 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e    .        this.
3b730 74 79 70 65 20 3d 20 73 79 6e 74 61 78 5f 31 2e  type = syntax_1.
3b740 53 79 6e 74 61 78 2e 53 77 69 74 63 68 43 61 73  Syntax.SwitchCas
3b750 65 3b 0a 20 20 09 20 20 20 20 20 20 20 20 74 68  e;.  .        th
3b760 69 73 2e 74 65 73 74 20 3d 20 74 65 73 74 3b 0a  is.test = test;.
3b770 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e    .        this.
3b780 63 6f 6e 73 65 71 75 65 6e 74 20 3d 20 63 6f 6e  consequent = con
3b790 73 65 71 75 65 6e 74 3b 0a 20 20 09 20 20 20 20  sequent;.  .    
3b7a0 7d 0a 20 20 09 20 20 20 20 72 65 74 75 72 6e 20  }.  .    return 
3b7b0 53 77 69 74 63 68 43 61 73 65 3b 0a 20 20 09 7d  SwitchCase;.  .}
3b7c0 28 29 29 3b 0a 20 20 09 65 78 70 6f 72 74 73 2e  ());.  .exports.
3b7d0 53 77 69 74 63 68 43 61 73 65 20 3d 20 53 77 69  SwitchCase = Swi
3b7e0 74 63 68 43 61 73 65 3b 0a 20 20 09 76 61 72 20  tchCase;.  .var 
3b7f0 53 77 69 74 63 68 53 74 61 74 65 6d 65 6e 74 20  SwitchStatement 
3b800 3d 20 28 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b  = (function () {
3b810 0a 20 20 09 20 20 20 20 66 75 6e 63 74 69 6f 6e  .  .    function
3b820 20 53 77 69 74 63 68 53 74 61 74 65 6d 65 6e 74   SwitchStatement
3b830 28 64 69 73 63 72 69 6d 69 6e 61 6e 74 2c 20 63  (discriminant, c
3b840 61 73 65 73 29 20 7b 0a 20 20 09 20 20 20 20 20  ases) {.  .     
3b850 20 20 20 74 68 69 73 2e 74 79 70 65 20 3d 20 73     this.type = s
3b860 79 6e 74 61 78 5f 31 2e 53 79 6e 74 61 78 2e 53  yntax_1.Syntax.S
3b870 77 69 74 63 68 53 74 61 74 65 6d 65 6e 74 3b 0a  witchStatement;.
3b880 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e    .        this.
3b890 64 69 73 63 72 69 6d 69 6e 61 6e 74 20 3d 20 64  discriminant = d
3b8a0 69 73 63 72 69 6d 69 6e 61 6e 74 3b 0a 20 20 09  iscriminant;.  .
3b8b0 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 61 73          this.cas
3b8c0 65 73 20 3d 20 63 61 73 65 73 3b 0a 20 20 09 20  es = cases;.  . 
3b8d0 20 20 20 7d 0a 20 20 09 20 20 20 20 72 65 74 75     }.  .    retu
3b8e0 72 6e 20 53 77 69 74 63 68 53 74 61 74 65 6d 65  rn SwitchStateme
3b8f0 6e 74 3b 0a 20 20 09 7d 28 29 29 3b 0a 20 20 09  nt;.  .}());.  .
3b900 65 78 70 6f 72 74 73 2e 53 77 69 74 63 68 53 74  exports.SwitchSt
3b910 61 74 65 6d 65 6e 74 20 3d 20 53 77 69 74 63 68  atement = Switch
3b920 53 74 61 74 65 6d 65 6e 74 3b 0a 20 20 09 76 61  Statement;.  .va
3b930 72 20 54 61 67 67 65 64 54 65 6d 70 6c 61 74 65  r TaggedTemplate
3b940 45 78 70 72 65 73 73 69 6f 6e 20 3d 20 28 66 75  Expression = (fu
3b950 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20 09 20  nction () {.  . 
3b960 20 20 20 66 75 6e 63 74 69 6f 6e 20 54 61 67 67     function Tagg
3b970 65 64 54 65 6d 70 6c 61 74 65 45 78 70 72 65 73  edTemplateExpres
3b980 73 69 6f 6e 28 74 61 67 2c 20 71 75 61 73 69 29  sion(tag, quasi)
3b990 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 74 68   {.  .        th
3b9a0 69 73 2e 74 79 70 65 20 3d 20 73 79 6e 74 61 78  is.type = syntax
3b9b0 5f 31 2e 53 79 6e 74 61 78 2e 54 61 67 67 65 64  _1.Syntax.Tagged
3b9c0 54 65 6d 70 6c 61 74 65 45 78 70 72 65 73 73 69  TemplateExpressi
3b9d0 6f 6e 3b 0a 20 20 09 20 20 20 20 20 20 20 20 74  on;.  .        t
3b9e0 68 69 73 2e 74 61 67 20 3d 20 74 61 67 3b 0a 20  his.tag = tag;. 
3b9f0 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 71   .        this.q
3ba00 75 61 73 69 20 3d 20 71 75 61 73 69 3b 0a 20 20  uasi = quasi;.  
3ba10 09 20 20 20 20 7d 0a 20 20 09 20 20 20 20 72 65  .    }.  .    re
3ba20 74 75 72 6e 20 54 61 67 67 65 64 54 65 6d 70 6c  turn TaggedTempl
3ba30 61 74 65 45 78 70 72 65 73 73 69 6f 6e 3b 0a 20  ateExpression;. 
3ba40 20 09 7d 28 29 29 3b 0a 20 20 09 65 78 70 6f 72   .}());.  .expor
3ba50 74 73 2e 54 61 67 67 65 64 54 65 6d 70 6c 61 74  ts.TaggedTemplat
3ba60 65 45 78 70 72 65 73 73 69 6f 6e 20 3d 20 54 61  eExpression = Ta
3ba70 67 67 65 64 54 65 6d 70 6c 61 74 65 45 78 70 72  ggedTemplateExpr
3ba80 65 73 73 69 6f 6e 3b 0a 20 20 09 76 61 72 20 54  ession;.  .var T
3ba90 65 6d 70 6c 61 74 65 45 6c 65 6d 65 6e 74 20 3d  emplateElement =
3baa0 20 28 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a   (function () {.
3bab0 20 20 09 20 20 20 20 66 75 6e 63 74 69 6f 6e 20    .    function 
3bac0 54 65 6d 70 6c 61 74 65 45 6c 65 6d 65 6e 74 28  TemplateElement(
3bad0 76 61 6c 75 65 2c 20 74 61 69 6c 29 20 7b 0a 20  value, tail) {. 
3bae0 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 74   .        this.t
3baf0 79 70 65 20 3d 20 73 79 6e 74 61 78 5f 31 2e 53  ype = syntax_1.S
3bb00 79 6e 74 61 78 2e 54 65 6d 70 6c 61 74 65 45 6c  yntax.TemplateEl
3bb10 65 6d 65 6e 74 3b 0a 20 20 09 20 20 20 20 20 20  ement;.  .      
3bb20 20 20 74 68 69 73 2e 76 61 6c 75 65 20 3d 20 76    this.value = v
3bb30 61 6c 75 65 3b 0a 20 20 09 20 20 20 20 20 20 20  alue;.  .       
3bb40 20 74 68 69 73 2e 74 61 69 6c 20 3d 20 74 61 69   this.tail = tai
3bb50 6c 3b 0a 20 20 09 20 20 20 20 7d 0a 20 20 09 20  l;.  .    }.  . 
3bb60 20 20 20 72 65 74 75 72 6e 20 54 65 6d 70 6c 61     return Templa
3bb70 74 65 45 6c 65 6d 65 6e 74 3b 0a 20 20 09 7d 28  teElement;.  .}(
3bb80 29 29 3b 0a 20 20 09 65 78 70 6f 72 74 73 2e 54  ));.  .exports.T
3bb90 65 6d 70 6c 61 74 65 45 6c 65 6d 65 6e 74 20 3d  emplateElement =
3bba0 20 54 65 6d 70 6c 61 74 65 45 6c 65 6d 65 6e 74   TemplateElement
3bbb0 3b 0a 20 20 09 76 61 72 20 54 65 6d 70 6c 61 74  ;.  .var Templat
3bbc0 65 4c 69 74 65 72 61 6c 20 3d 20 28 66 75 6e 63  eLiteral = (func
3bbd0 74 69 6f 6e 20 28 29 20 7b 0a 20 20 09 20 20 20  tion () {.  .   
3bbe0 20 66 75 6e 63 74 69 6f 6e 20 54 65 6d 70 6c 61   function Templa
3bbf0 74 65 4c 69 74 65 72 61 6c 28 71 75 61 73 69 73  teLiteral(quasis
3bc00 2c 20 65 78 70 72 65 73 73 69 6f 6e 73 29 20 7b  , expressions) {
3bc10 0a 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73  .  .        this
3bc20 2e 74 79 70 65 20 3d 20 73 79 6e 74 61 78 5f 31  .type = syntax_1
3bc30 2e 53 79 6e 74 61 78 2e 54 65 6d 70 6c 61 74 65  .Syntax.Template
3bc40 4c 69 74 65 72 61 6c 3b 0a 20 20 09 20 20 20 20  Literal;.  .    
3bc50 20 20 20 20 74 68 69 73 2e 71 75 61 73 69 73 20      this.quasis 
3bc60 3d 20 71 75 61 73 69 73 3b 0a 20 20 09 20 20 20  = quasis;.  .   
3bc70 20 20 20 20 20 74 68 69 73 2e 65 78 70 72 65 73       this.expres
3bc80 73 69 6f 6e 73 20 3d 20 65 78 70 72 65 73 73 69  sions = expressi
3bc90 6f 6e 73 3b 0a 20 20 09 20 20 20 20 7d 0a 20 20  ons;.  .    }.  
3bca0 09 20 20 20 20 72 65 74 75 72 6e 20 54 65 6d 70  .    return Temp
3bcb0 6c 61 74 65 4c 69 74 65 72 61 6c 3b 0a 20 20 09  lateLiteral;.  .
3bcc0 7d 28 29 29 3b 0a 20 20 09 65 78 70 6f 72 74 73  }());.  .exports
3bcd0 2e 54 65 6d 70 6c 61 74 65 4c 69 74 65 72 61 6c  .TemplateLiteral
3bce0 20 3d 20 54 65 6d 70 6c 61 74 65 4c 69 74 65 72   = TemplateLiter
3bcf0 61 6c 3b 0a 20 20 09 76 61 72 20 54 68 69 73 45  al;.  .var ThisE
3bd00 78 70 72 65 73 73 69 6f 6e 20 3d 20 28 66 75 6e  xpression = (fun
3bd10 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20 09 20 20  ction () {.  .  
3bd20 20 20 66 75 6e 63 74 69 6f 6e 20 54 68 69 73 45    function ThisE
3bd30 78 70 72 65 73 73 69 6f 6e 28 29 20 7b 0a 20 20  xpression() {.  
3bd40 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 74 79  .        this.ty
3bd50 70 65 20 3d 20 73 79 6e 74 61 78 5f 31 2e 53 79  pe = syntax_1.Sy
3bd60 6e 74 61 78 2e 54 68 69 73 45 78 70 72 65 73 73  ntax.ThisExpress
3bd70 69 6f 6e 3b 0a 20 20 09 20 20 20 20 7d 0a 20 20  ion;.  .    }.  
3bd80 09 20 20 20 20 72 65 74 75 72 6e 20 54 68 69 73  .    return This
3bd90 45 78 70 72 65 73 73 69 6f 6e 3b 0a 20 20 09 7d  Expression;.  .}
3bda0 28 29 29 3b 0a 20 20 09 65 78 70 6f 72 74 73 2e  ());.  .exports.
3bdb0 54 68 69 73 45 78 70 72 65 73 73 69 6f 6e 20 3d  ThisExpression =
3bdc0 20 54 68 69 73 45 78 70 72 65 73 73 69 6f 6e 3b   ThisExpression;
3bdd0 0a 20 20 09 76 61 72 20 54 68 72 6f 77 53 74 61  .  .var ThrowSta
3bde0 74 65 6d 65 6e 74 20 3d 20 28 66 75 6e 63 74 69  tement = (functi
3bdf0 6f 6e 20 28 29 20 7b 0a 20 20 09 20 20 20 20 66  on () {.  .    f
3be00 75 6e 63 74 69 6f 6e 20 54 68 72 6f 77 53 74 61  unction ThrowSta
3be10 74 65 6d 65 6e 74 28 61 72 67 75 6d 65 6e 74 29  tement(argument)
3be20 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 74 68   {.  .        th
3be30 69 73 2e 74 79 70 65 20 3d 20 73 79 6e 74 61 78  is.type = syntax
3be40 5f 31 2e 53 79 6e 74 61 78 2e 54 68 72 6f 77 53  _1.Syntax.ThrowS
3be50 74 61 74 65 6d 65 6e 74 3b 0a 20 20 09 20 20 20  tatement;.  .   
3be60 20 20 20 20 20 74 68 69 73 2e 61 72 67 75 6d 65       this.argume
3be70 6e 74 20 3d 20 61 72 67 75 6d 65 6e 74 3b 0a 20  nt = argument;. 
3be80 20 09 20 20 20 20 7d 0a 20 20 09 20 20 20 20 72   .    }.  .    r
3be90 65 74 75 72 6e 20 54 68 72 6f 77 53 74 61 74 65  eturn ThrowState
3bea0 6d 65 6e 74 3b 0a 20 20 09 7d 28 29 29 3b 0a 20  ment;.  .}());. 
3beb0 20 09 65 78 70 6f 72 74 73 2e 54 68 72 6f 77 53   .exports.ThrowS
3bec0 74 61 74 65 6d 65 6e 74 20 3d 20 54 68 72 6f 77  tatement = Throw
3bed0 53 74 61 74 65 6d 65 6e 74 3b 0a 20 20 09 76 61  Statement;.  .va
3bee0 72 20 54 72 79 53 74 61 74 65 6d 65 6e 74 20 3d  r TryStatement =
3bef0 20 28 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a   (function () {.
3bf00 20 20 09 20 20 20 20 66 75 6e 63 74 69 6f 6e 20    .    function 
3bf10 54 72 79 53 74 61 74 65 6d 65 6e 74 28 62 6c 6f  TryStatement(blo
3bf20 63 6b 2c 20 68 61 6e 64 6c 65 72 2c 20 66 69 6e  ck, handler, fin
3bf30 61 6c 69 7a 65 72 29 20 7b 0a 20 20 09 20 20 20  alizer) {.  .   
3bf40 20 20 20 20 20 74 68 69 73 2e 74 79 70 65 20 3d       this.type =
3bf50 20 73 79 6e 74 61 78 5f 31 2e 53 79 6e 74 61 78   syntax_1.Syntax
3bf60 2e 54 72 79 53 74 61 74 65 6d 65 6e 74 3b 0a 20  .TryStatement;. 
3bf70 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 62   .        this.b
3bf80 6c 6f 63 6b 20 3d 20 62 6c 6f 63 6b 3b 0a 20 20  lock = block;.  
3bf90 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 68 61  .        this.ha
3bfa0 6e 64 6c 65 72 20 3d 20 68 61 6e 64 6c 65 72 3b  ndler = handler;
3bfb0 0a 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73  .  .        this
3bfc0 2e 66 69 6e 61 6c 69 7a 65 72 20 3d 20 66 69 6e  .finalizer = fin
3bfd0 61 6c 69 7a 65 72 3b 0a 20 20 09 20 20 20 20 7d  alizer;.  .    }
3bfe0 0a 20 20 09 20 20 20 20 72 65 74 75 72 6e 20 54  .  .    return T
3bff0 72 79 53 74 61 74 65 6d 65 6e 74 3b 0a 20 20 09  ryStatement;.  .
3c000 7d 28 29 29 3b 0a 20 20 09 65 78 70 6f 72 74 73  }());.  .exports
3c010 2e 54 72 79 53 74 61 74 65 6d 65 6e 74 20 3d 20  .TryStatement = 
3c020 54 72 79 53 74 61 74 65 6d 65 6e 74 3b 0a 20 20  TryStatement;.  
3c030 09 76 61 72 20 55 6e 61 72 79 45 78 70 72 65 73  .var UnaryExpres
3c040 73 69 6f 6e 20 3d 20 28 66 75 6e 63 74 69 6f 6e  sion = (function
3c050 20 28 29 20 7b 0a 20 20 09 20 20 20 20 66 75 6e   () {.  .    fun
3c060 63 74 69 6f 6e 20 55 6e 61 72 79 45 78 70 72 65  ction UnaryExpre
3c070 73 73 69 6f 6e 28 6f 70 65 72 61 74 6f 72 2c 20  ssion(operator, 
3c080 61 72 67 75 6d 65 6e 74 29 20 7b 0a 20 20 09 20  argument) {.  . 
3c090 20 20 20 20 20 20 20 74 68 69 73 2e 74 79 70 65         this.type
3c0a0 20 3d 20 73 79 6e 74 61 78 5f 31 2e 53 79 6e 74   = syntax_1.Synt
3c0b0 61 78 2e 55 6e 61 72 79 45 78 70 72 65 73 73 69  ax.UnaryExpressi
3c0c0 6f 6e 3b 0a 20 20 09 20 20 20 20 20 20 20 20 74  on;.  .        t
3c0d0 68 69 73 2e 6f 70 65 72 61 74 6f 72 20 3d 20 6f  his.operator = o
3c0e0 70 65 72 61 74 6f 72 3b 0a 20 20 09 20 20 20 20  perator;.  .    
3c0f0 20 20 20 20 74 68 69 73 2e 61 72 67 75 6d 65 6e      this.argumen
3c100 74 20 3d 20 61 72 67 75 6d 65 6e 74 3b 0a 20 20  t = argument;.  
3c110 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 70 72  .        this.pr
3c120 65 66 69 78 20 3d 20 74 72 75 65 3b 0a 20 20 09  efix = true;.  .
3c130 20 20 20 20 7d 0a 20 20 09 20 20 20 20 72 65 74      }.  .    ret
3c140 75 72 6e 20 55 6e 61 72 79 45 78 70 72 65 73 73  urn UnaryExpress
3c150 69 6f 6e 3b 0a 20 20 09 7d 28 29 29 3b 0a 20 20  ion;.  .}());.  
3c160 09 65 78 70 6f 72 74 73 2e 55 6e 61 72 79 45 78  .exports.UnaryEx
3c170 70 72 65 73 73 69 6f 6e 20 3d 20 55 6e 61 72 79  pression = Unary
3c180 45 78 70 72 65 73 73 69 6f 6e 3b 0a 20 20 09 76  Expression;.  .v
3c190 61 72 20 55 70 64 61 74 65 45 78 70 72 65 73 73  ar UpdateExpress
3c1a0 69 6f 6e 20 3d 20 28 66 75 6e 63 74 69 6f 6e 20  ion = (function 
3c1b0 28 29 20 7b 0a 20 20 09 20 20 20 20 66 75 6e 63  () {.  .    func
3c1c0 74 69 6f 6e 20 55 70 64 61 74 65 45 78 70 72 65  tion UpdateExpre
3c1d0 73 73 69 6f 6e 28 6f 70 65 72 61 74 6f 72 2c 20  ssion(operator, 
3c1e0 61 72 67 75 6d 65 6e 74 2c 20 70 72 65 66 69 78  argument, prefix
3c1f0 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 74  ) {.  .        t
3c200 68 69 73 2e 74 79 70 65 20 3d 20 73 79 6e 74 61  his.type = synta
3c210 78 5f 31 2e 53 79 6e 74 61 78 2e 55 70 64 61 74  x_1.Syntax.Updat
3c220 65 45 78 70 72 65 73 73 69 6f 6e 3b 0a 20 20 09  eExpression;.  .
3c230 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f 70 65          this.ope
3c240 72 61 74 6f 72 20 3d 20 6f 70 65 72 61 74 6f 72  rator = operator
3c250 3b 0a 20 20 09 20 20 20 20 20 20 20 20 74 68 69  ;.  .        thi
3c260 73 2e 61 72 67 75 6d 65 6e 74 20 3d 20 61 72 67  s.argument = arg
3c270 75 6d 65 6e 74 3b 0a 20 20 09 20 20 20 20 20 20  ument;.  .      
3c280 20 20 74 68 69 73 2e 70 72 65 66 69 78 20 3d 20    this.prefix = 
3c290 70 72 65 66 69 78 3b 0a 20 20 09 20 20 20 20 7d  prefix;.  .    }
3c2a0 0a 20 20 09 20 20 20 20 72 65 74 75 72 6e 20 55  .  .    return U
3c2b0 70 64 61 74 65 45 78 70 72 65 73 73 69 6f 6e 3b  pdateExpression;
3c2c0 0a 20 20 09 7d 28 29 29 3b 0a 20 20 09 65 78 70  .  .}());.  .exp
3c2d0 6f 72 74 73 2e 55 70 64 61 74 65 45 78 70 72 65  orts.UpdateExpre
3c2e0 73 73 69 6f 6e 20 3d 20 55 70 64 61 74 65 45 78  ssion = UpdateEx
3c2f0 70 72 65 73 73 69 6f 6e 3b 0a 20 20 09 76 61 72  pression;.  .var
3c300 20 56 61 72 69 61 62 6c 65 44 65 63 6c 61 72 61   VariableDeclara
3c310 74 69 6f 6e 20 3d 20 28 66 75 6e 63 74 69 6f 6e  tion = (function
3c320 20 28 29 20 7b 0a 20 20 09 20 20 20 20 66 75 6e   () {.  .    fun
3c330 63 74 69 6f 6e 20 56 61 72 69 61 62 6c 65 44 65  ction VariableDe
3c340 63 6c 61 72 61 74 69 6f 6e 28 64 65 63 6c 61 72  claration(declar
3c350 61 74 69 6f 6e 73 2c 20 6b 69 6e 64 29 20 7b 0a  ations, kind) {.
3c360 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e    .        this.
3c370 74 79 70 65 20 3d 20 73 79 6e 74 61 78 5f 31 2e  type = syntax_1.
3c380 53 79 6e 74 61 78 2e 56 61 72 69 61 62 6c 65 44  Syntax.VariableD
3c390 65 63 6c 61 72 61 74 69 6f 6e 3b 0a 20 20 09 20  eclaration;.  . 
3c3a0 20 20 20 20 20 20 20 74 68 69 73 2e 64 65 63 6c         this.decl
3c3b0 61 72 61 74 69 6f 6e 73 20 3d 20 64 65 63 6c 61  arations = decla
3c3c0 72 61 74 69 6f 6e 73 3b 0a 20 20 09 20 20 20 20  rations;.  .    
3c3d0 20 20 20 20 74 68 69 73 2e 6b 69 6e 64 20 3d 20      this.kind = 
3c3e0 6b 69 6e 64 3b 0a 20 20 09 20 20 20 20 7d 0a 20  kind;.  .    }. 
3c3f0 20 09 20 20 20 20 72 65 74 75 72 6e 20 56 61 72   .    return Var
3c400 69 61 62 6c 65 44 65 63 6c 61 72 61 74 69 6f 6e  iableDeclaration
3c410 3b 0a 20 20 09 7d 28 29 29 3b 0a 20 20 09 65 78  ;.  .}());.  .ex
3c420 70 6f 72 74 73 2e 56 61 72 69 61 62 6c 65 44 65  ports.VariableDe
3c430 63 6c 61 72 61 74 69 6f 6e 20 3d 20 56 61 72 69  claration = Vari
3c440 61 62 6c 65 44 65 63 6c 61 72 61 74 69 6f 6e 3b  ableDeclaration;
3c450 0a 20 20 09 76 61 72 20 56 61 72 69 61 62 6c 65  .  .var Variable
3c460 44 65 63 6c 61 72 61 74 6f 72 20 3d 20 28 66 75  Declarator = (fu
3c470 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20 09 20  nction () {.  . 
3c480 20 20 20 66 75 6e 63 74 69 6f 6e 20 56 61 72 69     function Vari
3c490 61 62 6c 65 44 65 63 6c 61 72 61 74 6f 72 28 69  ableDeclarator(i
3c4a0 64 2c 20 69 6e 69 74 29 20 7b 0a 20 20 09 20 20  d, init) {.  .  
3c4b0 20 20 20 20 20 20 74 68 69 73 2e 74 79 70 65 20        this.type 
3c4c0 3d 20 73 79 6e 74 61 78 5f 31 2e 53 79 6e 74 61  = syntax_1.Synta
3c4d0 78 2e 56 61 72 69 61 62 6c 65 44 65 63 6c 61 72  x.VariableDeclar
3c4e0 61 74 6f 72 3b 0a 20 20 09 20 20 20 20 20 20 20  ator;.  .       
3c4f0 20 74 68 69 73 2e 69 64 20 3d 20 69 64 3b 0a 20   this.id = id;. 
3c500 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 69   .        this.i
3c510 6e 69 74 20 3d 20 69 6e 69 74 3b 0a 20 20 09 20  nit = init;.  . 
3c520 20 20 20 7d 0a 20 20 09 20 20 20 20 72 65 74 75     }.  .    retu
3c530 72 6e 20 56 61 72 69 61 62 6c 65 44 65 63 6c 61  rn VariableDecla
3c540 72 61 74 6f 72 3b 0a 20 20 09 7d 28 29 29 3b 0a  rator;.  .}());.
3c550 20 20 09 65 78 70 6f 72 74 73 2e 56 61 72 69 61    .exports.Varia
3c560 62 6c 65 44 65 63 6c 61 72 61 74 6f 72 20 3d 20  bleDeclarator = 
3c570 56 61 72 69 61 62 6c 65 44 65 63 6c 61 72 61 74  VariableDeclarat
3c580 6f 72 3b 0a 20 20 09 76 61 72 20 57 68 69 6c 65  or;.  .var While
3c590 53 74 61 74 65 6d 65 6e 74 20 3d 20 28 66 75 6e  Statement = (fun
3c5a0 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20 09 20 20  ction () {.  .  
3c5b0 20 20 66 75 6e 63 74 69 6f 6e 20 57 68 69 6c 65    function While
3c5c0 53 74 61 74 65 6d 65 6e 74 28 74 65 73 74 2c 20  Statement(test, 
3c5d0 62 6f 64 79 29 20 7b 0a 20 20 09 20 20 20 20 20  body) {.  .     
3c5e0 20 20 20 74 68 69 73 2e 74 79 70 65 20 3d 20 73     this.type = s
3c5f0 79 6e 74 61 78 5f 31 2e 53 79 6e 74 61 78 2e 57  yntax_1.Syntax.W
3c600 68 69 6c 65 53 74 61 74 65 6d 65 6e 74 3b 0a 20  hileStatement;. 
3c610 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 74   .        this.t
3c620 65 73 74 20 3d 20 74 65 73 74 3b 0a 20 20 09 20  est = test;.  . 
3c630 20 20 20 20 20 20 20 74 68 69 73 2e 62 6f 64 79         this.body
3c640 20 3d 20 62 6f 64 79 3b 0a 20 20 09 20 20 20 20   = body;.  .    
3c650 7d 0a 20 20 09 20 20 20 20 72 65 74 75 72 6e 20  }.  .    return 
3c660 57 68 69 6c 65 53 74 61 74 65 6d 65 6e 74 3b 0a  WhileStatement;.
3c670 20 20 09 7d 28 29 29 3b 0a 20 20 09 65 78 70 6f    .}());.  .expo
3c680 72 74 73 2e 57 68 69 6c 65 53 74 61 74 65 6d 65  rts.WhileStateme
3c690 6e 74 20 3d 20 57 68 69 6c 65 53 74 61 74 65 6d  nt = WhileStatem
3c6a0 65 6e 74 3b 0a 20 20 09 76 61 72 20 57 69 74 68  ent;.  .var With
3c6b0 53 74 61 74 65 6d 65 6e 74 20 3d 20 28 66 75 6e  Statement = (fun
3c6c0 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20 09 20 20  ction () {.  .  
3c6d0 20 20 66 75 6e 63 74 69 6f 6e 20 57 69 74 68 53    function WithS
3c6e0 74 61 74 65 6d 65 6e 74 28 6f 62 6a 65 63 74 2c  tatement(object,
3c6f0 20 62 6f 64 79 29 20 7b 0a 20 20 09 20 20 20 20   body) {.  .    
3c700 20 20 20 20 74 68 69 73 2e 74 79 70 65 20 3d 20      this.type = 
3c710 73 79 6e 74 61 78 5f 31 2e 53 79 6e 74 61 78 2e  syntax_1.Syntax.
3c720 57 69 74 68 53 74 61 74 65 6d 65 6e 74 3b 0a 20  WithStatement;. 
3c730 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f   .        this.o
3c740 62 6a 65 63 74 20 3d 20 6f 62 6a 65 63 74 3b 0a  bject = object;.
3c750 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e    .        this.
3c760 62 6f 64 79 20 3d 20 62 6f 64 79 3b 0a 20 20 09  body = body;.  .
3c770 20 20 20 20 7d 0a 20 20 09 20 20 20 20 72 65 74      }.  .    ret
3c780 75 72 6e 20 57 69 74 68 53 74 61 74 65 6d 65 6e  urn WithStatemen
3c790 74 3b 0a 20 20 09 7d 28 29 29 3b 0a 20 20 09 65  t;.  .}());.  .e
3c7a0 78 70 6f 72 74 73 2e 57 69 74 68 53 74 61 74 65  xports.WithState
3c7b0 6d 65 6e 74 20 3d 20 57 69 74 68 53 74 61 74 65  ment = WithState
3c7c0 6d 65 6e 74 3b 0a 20 20 09 76 61 72 20 59 69 65  ment;.  .var Yie
3c7d0 6c 64 45 78 70 72 65 73 73 69 6f 6e 20 3d 20 28  ldExpression = (
3c7e0 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20  function () {.  
3c7f0 09 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 59 69  .    function Yi
3c800 65 6c 64 45 78 70 72 65 73 73 69 6f 6e 28 61 72  eldExpression(ar
3c810 67 75 6d 65 6e 74 2c 20 64 65 6c 65 67 61 74 65  gument, delegate
3c820 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 74  ) {.  .        t
3c830 68 69 73 2e 74 79 70 65 20 3d 20 73 79 6e 74 61  his.type = synta
3c840 78 5f 31 2e 53 79 6e 74 61 78 2e 59 69 65 6c 64  x_1.Syntax.Yield
3c850 45 78 70 72 65 73 73 69 6f 6e 3b 0a 20 20 09 20  Expression;.  . 
3c860 20 20 20 20 20 20 20 74 68 69 73 2e 61 72 67 75         this.argu
3c870 6d 65 6e 74 20 3d 20 61 72 67 75 6d 65 6e 74 3b  ment = argument;
3c880 0a 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73  .  .        this
3c890 2e 64 65 6c 65 67 61 74 65 20 3d 20 64 65 6c 65  .delegate = dele
3c8a0 67 61 74 65 3b 0a 20 20 09 20 20 20 20 7d 0a 20  gate;.  .    }. 
3c8b0 20 09 20 20 20 20 72 65 74 75 72 6e 20 59 69 65   .    return Yie
3c8c0 6c 64 45 78 70 72 65 73 73 69 6f 6e 3b 0a 20 20  ldExpression;.  
3c8d0 09 7d 28 29 29 3b 0a 20 20 09 65 78 70 6f 72 74  .}());.  .export
3c8e0 73 2e 59 69 65 6c 64 45 78 70 72 65 73 73 69 6f  s.YieldExpressio
3c8f0 6e 20 3d 20 59 69 65 6c 64 45 78 70 72 65 73 73  n = YieldExpress
3c900 69 6f 6e 3b 0a 0a 0a 20 20 2f 2a 2a 2a 2f 20 7d  ion;...  /***/ }
3c910 2c 0a 20 20 2f 2a 20 31 31 20 2a 2f 0a 20 20 2f  ,.  /* 11 */.  /
3c920 2a 2a 2a 2f 20 66 75 6e 63 74 69 6f 6e 28 6d 6f  ***/ function(mo
3c930 64 75 6c 65 2c 20 65 78 70 6f 72 74 73 2c 20 5f  dule, exports, _
3c940 5f 77 65 62 70 61 63 6b 5f 72 65 71 75 69 72 65  _webpack_require
3c950 5f 5f 29 20 7b 0a 20 20 2f 2a 20 69 73 74 61 6e  __) {.  /* istan
3c960 62 75 6c 20 69 67 6e 6f 72 65 20 6e 65 78 74 20  bul ignore next 
3c970 2a 2f 0a 20 20 09 76 61 72 20 5f 5f 65 78 74 65  */.  .var __exte
3c980 6e 64 73 20 3d 20 28 74 68 69 73 20 26 26 20 74  nds = (this && t
3c990 68 69 73 2e 5f 5f 65 78 74 65 6e 64 73 29 20 7c  his.__extends) |
3c9a0 7c 20 66 75 6e 63 74 69 6f 6e 20 28 64 2c 20 62  | function (d, b
3c9b0 29 20 7b 0a 20 20 09 20 20 20 20 66 6f 72 20 28  ) {.  .    for (
3c9c0 76 61 72 20 70 20 69 6e 20 62 29 20 7b 20 69 66  var p in b) { if
3c9d0 20 28 62 2e 68 61 73 4f 77 6e 50 72 6f 70 65 72   (b.hasOwnProper
3c9e0 74 79 28 70 29 29 20 7b 20 64 5b 70 5d 20 3d 20  ty(p)) { d[p] = 
3c9f0 62 5b 70 5d 3b 20 7d 20 7d 0a 20 20 09 20 20 20  b[p]; } }.  .   
3ca00 20 66 75 6e 63 74 69 6f 6e 20 5f 5f 28 29 20 7b   function __() {
3ca10 20 74 68 69 73 2e 63 6f 6e 73 74 72 75 63 74 6f   this.constructo
3ca20 72 20 3d 20 64 3b 20 7d 0a 20 20 09 20 20 20 20  r = d; }.  .    
3ca30 64 2e 70 72 6f 74 6f 74 79 70 65 20 3d 20 62 20  d.prototype = b 
3ca40 3d 3d 3d 20 6e 75 6c 6c 20 3f 20 4f 62 6a 65 63  === null ? Objec
3ca50 74 2e 63 72 65 61 74 65 28 62 29 20 3a 20 28 5f  t.create(b) : (_
3ca60 5f 2e 70 72 6f 74 6f 74 79 70 65 20 3d 20 62 2e  _.prototype = b.
3ca70 70 72 6f 74 6f 74 79 70 65 2c 20 6e 65 77 20 5f  prototype, new _
3ca80 5f 28 29 29 3b 0a 20 20 09 7d 3b 0a 20 20 09 76  _());.  .};.  .v
3ca90 61 72 20 63 68 61 72 61 63 74 65 72 5f 31 20 3d  ar character_1 =
3caa0 20 5f 5f 77 65 62 70 61 63 6b 5f 72 65 71 75 69   __webpack_requi
3cab0 72 65 5f 5f 28 39 29 3b 0a 20 20 09 76 61 72 20  re__(9);.  .var 
3cac0 74 6f 6b 65 6e 5f 31 20 3d 20 5f 5f 77 65 62 70  token_1 = __webp
3cad0 61 63 6b 5f 72 65 71 75 69 72 65 5f 5f 28 37 29  ack_require__(7)
3cae0 3b 0a 20 20 09 76 61 72 20 70 61 72 73 65 72 5f  ;.  .var parser_
3caf0 31 20 3d 20 5f 5f 77 65 62 70 61 63 6b 5f 72 65  1 = __webpack_re
3cb00 71 75 69 72 65 5f 5f 28 33 29 3b 0a 20 20 09 76  quire__(3);.  .v
3cb10 61 72 20 78 68 74 6d 6c 5f 65 6e 74 69 74 69 65  ar xhtml_entitie
3cb20 73 5f 31 20 3d 20 5f 5f 77 65 62 70 61 63 6b 5f  s_1 = __webpack_
3cb30 72 65 71 75 69 72 65 5f 5f 28 31 32 29 3b 0a 20  require__(12);. 
3cb40 20 09 76 61 72 20 6a 73 78 5f 73 79 6e 74 61 78   .var jsx_syntax
3cb50 5f 31 20 3d 20 5f 5f 77 65 62 70 61 63 6b 5f 72  _1 = __webpack_r
3cb60 65 71 75 69 72 65 5f 5f 28 31 33 29 3b 0a 20 20  equire__(13);.  
3cb70 09 76 61 72 20 4e 6f 64 65 20 3d 20 5f 5f 77 65  .var Node = __we
3cb80 62 70 61 63 6b 5f 72 65 71 75 69 72 65 5f 5f 28  bpack_require__(
3cb90 31 30 29 3b 0a 20 20 09 76 61 72 20 4a 53 58 4e  10);.  .var JSXN
3cba0 6f 64 65 20 3d 20 5f 5f 77 65 62 70 61 63 6b 5f  ode = __webpack_
3cbb0 72 65 71 75 69 72 65 5f 5f 28 31 34 29 3b 0a 20  require__(14);. 
3cbc0 20 09 76 61 72 20 4a 53 58 54 6f 6b 65 6e 3b 0a   .var JSXToken;.
3cbd0 20 20 09 28 66 75 6e 63 74 69 6f 6e 20 28 4a 53    .(function (JS
3cbe0 58 54 6f 6b 65 6e 29 20 7b 0a 20 20 09 20 20 20  XToken) {.  .   
3cbf0 20 4a 53 58 54 6f 6b 65 6e 5b 4a 53 58 54 6f 6b   JSXToken[JSXTok
3cc00 65 6e 5b 22 49 64 65 6e 74 69 66 69 65 72 22 5d  en["Identifier"]
3cc10 20 3d 20 31 30 30 5d 20 3d 20 22 49 64 65 6e 74   = 100] = "Ident
3cc20 69 66 69 65 72 22 3b 0a 20 20 09 20 20 20 20 4a  ifier";.  .    J
3cc30 53 58 54 6f 6b 65 6e 5b 4a 53 58 54 6f 6b 65 6e  SXToken[JSXToken
3cc40 5b 22 54 65 78 74 22 5d 20 3d 20 31 30 31 5d 20  ["Text"] = 101] 
3cc50 3d 20 22 54 65 78 74 22 3b 0a 20 20 09 7d 29 28  = "Text";.  .})(
3cc60 4a 53 58 54 6f 6b 65 6e 20 7c 7c 20 28 4a 53 58  JSXToken || (JSX
3cc70 54 6f 6b 65 6e 20 3d 20 7b 7d 29 29 3b 0a 20 20  Token = {}));.  
3cc80 09 74 6f 6b 65 6e 5f 31 2e 54 6f 6b 65 6e 4e 61  .token_1.TokenNa
3cc90 6d 65 5b 4a 53 58 54 6f 6b 65 6e 2e 49 64 65 6e  me[JSXToken.Iden
3cca0 74 69 66 69 65 72 5d 20 3d 20 27 4a 53 58 49 64  tifier] = 'JSXId
3ccb0 65 6e 74 69 66 69 65 72 27 3b 0a 20 20 09 74 6f  entifier';.  .to
3ccc0 6b 65 6e 5f 31 2e 54 6f 6b 65 6e 4e 61 6d 65 5b  ken_1.TokenName[
3ccd0 4a 53 58 54 6f 6b 65 6e 2e 54 65 78 74 5d 20 3d  JSXToken.Text] =
3cce0 20 27 4a 53 58 54 65 78 74 27 3b 0a 20 20 09 2f   'JSXText';.  ./
3ccf0 2f 20 46 75 6c 6c 79 20 71 75 61 6c 69 66 69 65  / Fully qualifie
3cd00 64 20 65 6c 65 6d 65 6e 74 20 6e 61 6d 65 2c 20  d element name, 
3cd10 65 2e 67 2e 20 3c 73 76 67 3a 70 61 74 68 3e 20  e.g. <svg:path> 
3cd20 72 65 74 75 72 6e 73 20 22 73 76 67 3a 70 61 74  returns "svg:pat
3cd30 68 22 0a 20 20 09 66 75 6e 63 74 69 6f 6e 20 67  h".  .function g
3cd40 65 74 51 75 61 6c 69 66 69 65 64 45 6c 65 6d 65  etQualifiedEleme
3cd50 6e 74 4e 61 6d 65 28 65 6c 65 6d 65 6e 74 4e 61  ntName(elementNa
3cd60 6d 65 29 20 7b 0a 20 20 09 20 20 20 20 76 61 72  me) {.  .    var
3cd70 20 71 75 61 6c 69 66 69 65 64 4e 61 6d 65 3b 0a   qualifiedName;.
3cd80 20 20 09 20 20 20 20 73 77 69 74 63 68 20 28 65    .    switch (e
3cd90 6c 65 6d 65 6e 74 4e 61 6d 65 2e 74 79 70 65 29  lementName.type)
3cda0 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 63 61   {.  .        ca
3cdb0 73 65 20 6a 73 78 5f 73 79 6e 74 61 78 5f 31 2e  se jsx_syntax_1.
3cdc0 4a 53 58 53 79 6e 74 61 78 2e 4a 53 58 49 64 65  JSXSyntax.JSXIde
3cdd0 6e 74 69 66 69 65 72 3a 0a 20 20 09 20 20 20 20  ntifier:.  .    
3cde0 20 20 20 20 20 20 20 20 76 61 72 20 69 64 20 3d          var id =
3cdf0 20 28 65 6c 65 6d 65 6e 74 4e 61 6d 65 29 3b 0a   (elementName);.
3ce00 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 71    .            q
3ce10 75 61 6c 69 66 69 65 64 4e 61 6d 65 20 3d 20 69  ualifiedName = i
3ce20 64 2e 6e 61 6d 65 3b 0a 20 20 09 20 20 20 20 20  d.name;.  .     
3ce30 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0a 20 20         break;.  
3ce40 09 20 20 20 20 20 20 20 20 63 61 73 65 20 6a 73  .        case js
3ce50 78 5f 73 79 6e 74 61 78 5f 31 2e 4a 53 58 53 79  x_syntax_1.JSXSy
3ce60 6e 74 61 78 2e 4a 53 58 4e 61 6d 65 73 70 61 63  ntax.JSXNamespac
3ce70 65 64 4e 61 6d 65 3a 0a 20 20 09 20 20 20 20 20  edName:.  .     
3ce80 20 20 20 20 20 20 20 76 61 72 20 6e 73 20 3d 20         var ns = 
3ce90 28 65 6c 65 6d 65 6e 74 4e 61 6d 65 29 3b 0a 20  (elementName);. 
3cea0 20 09 20 20 20 20 20 20 20 20 20 20 20 20 71 75   .            qu
3ceb0 61 6c 69 66 69 65 64 4e 61 6d 65 20 3d 20 67 65  alifiedName = ge
3cec0 74 51 75 61 6c 69 66 69 65 64 45 6c 65 6d 65 6e  tQualifiedElemen
3ced0 74 4e 61 6d 65 28 6e 73 2e 6e 61 6d 65 73 70 61  tName(ns.namespa
3cee0 63 65 29 20 2b 20 27 3a 27 20 2b 0a 20 20 09 20  ce) + ':' +.  . 
3cef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67                 g
3cf00 65 74 51 75 61 6c 69 66 69 65 64 45 6c 65 6d 65  etQualifiedEleme
3cf10 6e 74 4e 61 6d 65 28 6e 73 2e 6e 61 6d 65 29 3b  ntName(ns.name);
3cf20 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
3cf30 62 72 65 61 6b 3b 0a 20 20 09 20 20 20 20 20 20  break;.  .      
3cf40 20 20 63 61 73 65 20 6a 73 78 5f 73 79 6e 74 61    case jsx_synta
3cf50 78 5f 31 2e 4a 53 58 53 79 6e 74 61 78 2e 4a 53  x_1.JSXSyntax.JS
3cf60 58 4d 65 6d 62 65 72 45 78 70 72 65 73 73 69 6f  XMemberExpressio
3cf70 6e 3a 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  n:.  .          
3cf80 20 20 76 61 72 20 65 78 70 72 20 3d 20 28 65 6c    var expr = (el
3cf90 65 6d 65 6e 74 4e 61 6d 65 29 3b 0a 20 20 09 20  ementName);.  . 
3cfa0 20 20 20 20 20 20 20 20 20 20 20 71 75 61 6c 69             quali
3cfb0 66 69 65 64 4e 61 6d 65 20 3d 20 67 65 74 51 75  fiedName = getQu
3cfc0 61 6c 69 66 69 65 64 45 6c 65 6d 65 6e 74 4e 61  alifiedElementNa
3cfd0 6d 65 28 65 78 70 72 2e 6f 62 6a 65 63 74 29 20  me(expr.object) 
3cfe0 2b 20 27 2e 27 20 2b 0a 20 20 09 20 20 20 20 20  + '.' +.  .     
3cff0 20 20 20 20 20 20 20 20 20 20 20 67 65 74 51 75             getQu
3d000 61 6c 69 66 69 65 64 45 6c 65 6d 65 6e 74 4e 61  alifiedElementNa
3d010 6d 65 28 65 78 70 72 2e 70 72 6f 70 65 72 74 79  me(expr.property
3d020 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  );.  .          
3d030 20 20 62 72 65 61 6b 3b 0a 20 20 09 20 20 20 20    break;.  .    
3d040 7d 0a 20 20 09 20 20 20 20 72 65 74 75 72 6e 20  }.  .    return 
3d050 71 75 61 6c 69 66 69 65 64 4e 61 6d 65 3b 0a 20  qualifiedName;. 
3d060 20 09 7d 0a 20 20 09 76 61 72 20 4a 53 58 50 61   .}.  .var JSXPa
3d070 72 73 65 72 20 3d 20 28 66 75 6e 63 74 69 6f 6e  rser = (function
3d080 20 28 5f 73 75 70 65 72 29 20 7b 0a 20 20 09 20   (_super) {.  . 
3d090 20 20 20 5f 5f 65 78 74 65 6e 64 73 28 4a 53 58     __extends(JSX
3d0a0 50 61 72 73 65 72 2c 20 5f 73 75 70 65 72 29 3b  Parser, _super);
3d0b0 0a 20 20 09 20 20 20 20 66 75 6e 63 74 69 6f 6e  .  .    function
3d0c0 20 4a 53 58 50 61 72 73 65 72 28 63 6f 64 65 2c   JSXParser(code,
3d0d0 20 6f 70 74 69 6f 6e 73 2c 20 64 65 6c 65 67 61   options, delega
3d0e0 74 65 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20  te) {.  .       
3d0f0 20 5f 73 75 70 65 72 2e 63 61 6c 6c 28 74 68 69   _super.call(thi
3d100 73 2c 20 63 6f 64 65 2c 20 6f 70 74 69 6f 6e 73  s, code, options
3d110 2c 20 64 65 6c 65 67 61 74 65 29 3b 0a 20 20 09  , delegate);.  .
3d120 20 20 20 20 7d 0a 20 20 09 20 20 20 20 4a 53 58      }.  .    JSX
3d130 50 61 72 73 65 72 2e 70 72 6f 74 6f 74 79 70 65  Parser.prototype
3d140 2e 70 61 72 73 65 50 72 69 6d 61 72 79 45 78 70  .parsePrimaryExp
3d150 72 65 73 73 69 6f 6e 20 3d 20 66 75 6e 63 74 69  ression = functi
3d160 6f 6e 20 28 29 20 7b 0a 20 20 09 20 20 20 20 20  on () {.  .     
3d170 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e 6d     return this.m
3d180 61 74 63 68 28 27 3c 27 29 20 3f 20 74 68 69 73  atch('<') ? this
3d190 2e 70 61 72 73 65 4a 53 58 52 6f 6f 74 28 29 20  .parseJSXRoot() 
3d1a0 3a 20 5f 73 75 70 65 72 2e 70 72 6f 74 6f 74 79  : _super.prototy
3d1b0 70 65 2e 70 61 72 73 65 50 72 69 6d 61 72 79 45  pe.parsePrimaryE
3d1c0 78 70 72 65 73 73 69 6f 6e 2e 63 61 6c 6c 28 74  xpression.call(t
3d1d0 68 69 73 29 3b 0a 20 20 09 20 20 20 20 7d 3b 0a  his);.  .    };.
3d1e0 20 20 09 20 20 20 20 4a 53 58 50 61 72 73 65 72    .    JSXParser
3d1f0 2e 70 72 6f 74 6f 74 79 70 65 2e 73 74 61 72 74  .prototype.start
3d200 4a 53 58 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28  JSX = function (
3d210 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 2f  ) {.  .        /
3d220 2f 20 55 6e 77 69 6e 64 20 74 68 65 20 73 63 61  / Unwind the sca
3d230 6e 6e 65 72 20 62 65 66 6f 72 65 20 74 68 65 20  nner before the 
3d240 6c 6f 6f 6b 61 68 65 61 64 20 74 6f 6b 65 6e 2e  lookahead token.
3d250 0a 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73  .  .        this
3d260 2e 73 63 61 6e 6e 65 72 2e 69 6e 64 65 78 20 3d  .scanner.index =
3d270 20 74 68 69 73 2e 73 74 61 72 74 4d 61 72 6b 65   this.startMarke
3d280 72 2e 69 6e 64 65 78 3b 0a 20 20 09 20 20 20 20  r.index;.  .    
3d290 20 20 20 20 74 68 69 73 2e 73 63 61 6e 6e 65 72      this.scanner
3d2a0 2e 6c 69 6e 65 4e 75 6d 62 65 72 20 3d 20 74 68  .lineNumber = th
3d2b0 69 73 2e 73 74 61 72 74 4d 61 72 6b 65 72 2e 6c  is.startMarker.l
3d2c0 69 6e 65 4e 75 6d 62 65 72 3b 0a 20 20 09 20 20  ineNumber;.  .  
3d2d0 20 20 20 20 20 20 74 68 69 73 2e 73 63 61 6e 6e        this.scann
3d2e0 65 72 2e 6c 69 6e 65 53 74 61 72 74 20 3d 20 74  er.lineStart = t
3d2f0 68 69 73 2e 73 74 61 72 74 4d 61 72 6b 65 72 2e  his.startMarker.
3d300 6c 69 6e 65 53 74 61 72 74 3b 0a 20 20 09 20 20  lineStart;.  .  
3d310 20 20 7d 3b 0a 20 20 09 20 20 20 20 4a 53 58 50    };.  .    JSXP
3d320 61 72 73 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e  arser.prototype.
3d330 66 69 6e 69 73 68 4a 53 58 20 3d 20 66 75 6e 63  finishJSX = func
3d340 74 69 6f 6e 20 28 29 20 7b 0a 20 20 09 20 20 20  tion () {.  .   
3d350 20 20 20 20 20 2f 2f 20 50 72 69 6d 65 20 74 68       // Prime th
3d360 65 20 6e 65 78 74 20 6c 6f 6f 6b 61 68 65 61 64  e next lookahead
3d370 2e 0a 20 20 09 20 20 20 20 20 20 20 20 74 68 69  ..  .        thi
3d380 73 2e 6e 65 78 74 54 6f 6b 65 6e 28 29 3b 0a 20  s.nextToken();. 
3d390 20 09 20 20 20 20 7d 3b 0a 20 20 09 20 20 20 20   .    };.  .    
3d3a0 4a 53 58 50 61 72 73 65 72 2e 70 72 6f 74 6f 74  JSXParser.protot
3d3b0 79 70 65 2e 72 65 65 6e 74 65 72 4a 53 58 20 3d  ype.reenterJSX =
3d3c0 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20   function () {. 
3d3d0 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 73   .        this.s
3d3e0 74 61 72 74 4a 53 58 28 29 3b 0a 20 20 09 20 20  tartJSX();.  .  
3d3f0 20 20 20 20 20 20 74 68 69 73 2e 65 78 70 65 63        this.expec
3d400 74 4a 53 58 28 27 7d 27 29 3b 0a 20 20 09 20 20  tJSX('}');.  .  
3d410 20 20 20 20 20 20 2f 2f 20 50 6f 70 20 74 68 65        // Pop the
3d420 20 63 6c 6f 73 69 6e 67 20 27 7d 27 20 61 64 64   closing '}' add
3d430 65 64 20 66 72 6f 6d 20 74 68 65 20 6c 6f 6f 6b  ed from the look
3d440 61 68 65 61 64 2e 0a 20 20 09 20 20 20 20 20 20  ahead..  .      
3d450 20 20 69 66 20 28 74 68 69 73 2e 63 6f 6e 66 69    if (this.confi
3d460 67 2e 74 6f 6b 65 6e 73 29 20 7b 0a 20 20 09 20  g.tokens) {.  . 
3d470 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
3d480 74 6f 6b 65 6e 73 2e 70 6f 70 28 29 3b 0a 20 20  tokens.pop();.  
3d490 09 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20  .        }.  .  
3d4a0 20 20 7d 3b 0a 20 20 09 20 20 20 20 4a 53 58 50    };.  .    JSXP
3d4b0 61 72 73 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e  arser.prototype.
3d4c0 63 72 65 61 74 65 4a 53 58 4e 6f 64 65 20 3d 20  createJSXNode = 
3d4d0 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20  function () {.  
3d4e0 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 6f  .        this.co
3d4f0 6c 6c 65 63 74 43 6f 6d 6d 65 6e 74 73 28 29 3b  llectComments();
3d500 0a 20 20 09 20 20 20 20 20 20 20 20 72 65 74 75  .  .        retu
3d510 72 6e 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20  rn {.  .        
3d520 20 20 20 20 69 6e 64 65 78 3a 20 74 68 69 73 2e      index: this.
3d530 73 63 61 6e 6e 65 72 2e 69 6e 64 65 78 2c 0a 20  scanner.index,. 
3d540 20 09 20 20 20 20 20 20 20 20 20 20 20 20 6c 69   .            li
3d550 6e 65 3a 20 74 68 69 73 2e 73 63 61 6e 6e 65 72  ne: this.scanner
3d560 2e 6c 69 6e 65 4e 75 6d 62 65 72 2c 0a 20 20 09  .lineNumber,.  .
3d570 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6c 75              colu
3d580 6d 6e 3a 20 74 68 69 73 2e 73 63 61 6e 6e 65 72  mn: this.scanner
3d590 2e 69 6e 64 65 78 20 2d 20 74 68 69 73 2e 73 63  .index - this.sc
3d5a0 61 6e 6e 65 72 2e 6c 69 6e 65 53 74 61 72 74 0a  anner.lineStart.
3d5b0 20 20 09 20 20 20 20 20 20 20 20 7d 3b 0a 20 20    .        };.  
3d5c0 09 20 20 20 20 7d 3b 0a 20 20 09 20 20 20 20 4a  .    };.  .    J
3d5d0 53 58 50 61 72 73 65 72 2e 70 72 6f 74 6f 74 79  SXParser.prototy
3d5e0 70 65 2e 63 72 65 61 74 65 4a 53 58 43 68 69 6c  pe.createJSXChil
3d5f0 64 4e 6f 64 65 20 3d 20 66 75 6e 63 74 69 6f 6e  dNode = function
3d600 20 28 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20   () {.  .       
3d610 20 72 65 74 75 72 6e 20 7b 0a 20 20 09 20 20 20   return {.  .   
3d620 20 20 20 20 20 20 20 20 20 69 6e 64 65 78 3a 20           index: 
3d630 74 68 69 73 2e 73 63 61 6e 6e 65 72 2e 69 6e 64  this.scanner.ind
3d640 65 78 2c 0a 20 20 09 20 20 20 20 20 20 20 20 20  ex,.  .         
3d650 20 20 20 6c 69 6e 65 3a 20 74 68 69 73 2e 73 63     line: this.sc
3d660 61 6e 6e 65 72 2e 6c 69 6e 65 4e 75 6d 62 65 72  anner.lineNumber
3d670 2c 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ,.  .           
3d680 20 63 6f 6c 75 6d 6e 3a 20 74 68 69 73 2e 73 63   column: this.sc
3d690 61 6e 6e 65 72 2e 69 6e 64 65 78 20 2d 20 74 68  anner.index - th
3d6a0 69 73 2e 73 63 61 6e 6e 65 72 2e 6c 69 6e 65 53  is.scanner.lineS
3d6b0 74 61 72 74 0a 20 20 09 20 20 20 20 20 20 20 20  tart.  .        
3d6c0 7d 3b 0a 20 20 09 20 20 20 20 7d 3b 0a 20 20 09  };.  .    };.  .
3d6d0 20 20 20 20 4a 53 58 50 61 72 73 65 72 2e 70 72      JSXParser.pr
3d6e0 6f 74 6f 74 79 70 65 2e 73 63 61 6e 58 48 54 4d  ototype.scanXHTM
3d6f0 4c 45 6e 74 69 74 79 20 3d 20 66 75 6e 63 74 69  LEntity = functi
3d700 6f 6e 20 28 71 75 6f 74 65 29 20 7b 0a 20 20 09  on (quote) {.  .
3d710 20 20 20 20 20 20 20 20 76 61 72 20 74 68 69 73          var this
3d720 24 31 20 3d 20 74 68 69 73 3b 0a 0a 20 20 09 20  $1 = this;..  . 
3d730 20 20 20 20 20 20 20 76 61 72 20 72 65 73 75 6c         var resul
3d740 74 20 3d 20 27 26 27 3b 0a 20 20 09 20 20 20 20  t = '&';.  .    
3d750 20 20 20 20 76 61 72 20 76 61 6c 69 64 20 3d 20      var valid = 
3d760 74 72 75 65 3b 0a 20 20 09 20 20 20 20 20 20 20  true;.  .       
3d770 20 76 61 72 20 74 65 72 6d 69 6e 61 74 65 64 20   var terminated 
3d780 3d 20 66 61 6c 73 65 3b 0a 20 20 09 20 20 20 20  = false;.  .    
3d790 20 20 20 20 76 61 72 20 6e 75 6d 65 72 69 63 20      var numeric 
3d7a0 3d 20 66 61 6c 73 65 3b 0a 20 20 09 20 20 20 20  = false;.  .    
3d7b0 20 20 20 20 76 61 72 20 68 65 78 20 3d 20 66 61      var hex = fa
3d7c0 6c 73 65 3b 0a 20 20 09 20 20 20 20 20 20 20 20  lse;.  .        
3d7d0 77 68 69 6c 65 20 28 21 74 68 69 73 2e 73 63 61  while (!this.sca
3d7e0 6e 6e 65 72 2e 65 6f 66 28 29 20 26 26 20 76 61  nner.eof() && va
3d7f0 6c 69 64 20 26 26 20 21 74 65 72 6d 69 6e 61 74  lid && !terminat
3d800 65 64 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20  ed) {.  .       
3d810 20 20 20 20 20 76 61 72 20 63 68 20 3d 20 74 68       var ch = th
3d820 69 73 24 31 2e 73 63 61 6e 6e 65 72 2e 73 6f 75  is$1.scanner.sou
3d830 72 63 65 5b 74 68 69 73 24 31 2e 73 63 61 6e 6e  rce[this$1.scann
3d840 65 72 2e 69 6e 64 65 78 5d 3b 0a 20 20 09 20 20  er.index];.  .  
3d850 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 68            if (ch
3d860 20 3d 3d 3d 20 71 75 6f 74 65 29 20 7b 0a 20 20   === quote) {.  
3d870 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3d880 20 62 72 65 61 6b 3b 0a 20 20 09 20 20 20 20 20   break;.  .     
3d890 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20         }.  .    
3d8a0 20 20 20 20 20 20 20 20 74 65 72 6d 69 6e 61 74          terminat
3d8b0 65 64 20 3d 20 28 63 68 20 3d 3d 3d 20 27 3b 27  ed = (ch === ';'
3d8c0 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  );.  .          
3d8d0 20 20 72 65 73 75 6c 74 20 2b 3d 20 63 68 3b 0a    result += ch;.
3d8e0 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 2b    .            +
3d8f0 2b 74 68 69 73 24 31 2e 73 63 61 6e 6e 65 72 2e  +this$1.scanner.
3d900 69 6e 64 65 78 3b 0a 20 20 09 20 20 20 20 20 20  index;.  .      
3d910 20 20 20 20 20 20 69 66 20 28 21 74 65 72 6d 69        if (!termi
3d920 6e 61 74 65 64 29 20 7b 0a 20 20 09 20 20 20 20  nated) {.  .    
3d930 20 20 20 20 20 20 20 20 20 20 20 20 73 77 69 74              swit
3d940 63 68 20 28 72 65 73 75 6c 74 2e 6c 65 6e 67 74  ch (result.lengt
3d950 68 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20  h) {.  .        
3d960 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
3d970 20 32 3a 0a 20 20 09 20 20 20 20 20 20 20 20 20   2:.  .         
3d980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
3d990 2f 20 65 2e 67 2e 20 27 26 23 31 32 33 3b 27 0a  / e.g. '&#123;'.
3d9a0 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
3d9b0 20 20 20 20 20 20 20 20 20 20 20 6e 75 6d 65 72             numer
3d9c0 69 63 20 3d 20 28 63 68 20 3d 3d 3d 20 27 23 27  ic = (ch === '#'
3d9d0 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  );.  .          
3d9e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72                br
3d9f0 65 61 6b 3b 0a 20 20 09 20 20 20 20 20 20 20 20  eak;.  .        
3da00 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
3da10 20 33 3a 0a 20 20 09 20 20 20 20 20 20 20 20 20   3:.  .         
3da20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
3da30 66 20 28 6e 75 6d 65 72 69 63 29 20 7b 0a 20 20  f (numeric) {.  
3da40 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3da50 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
3da60 65 2e 67 2e 20 27 26 23 78 34 31 3b 27 0a 20 20  e.g. '&#x41;'.  
3da70 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3da80 20 20 20 20 20 20 20 20 20 20 20 20 20 68 65 78               hex
3da90 20 3d 20 28 63 68 20 3d 3d 3d 20 27 78 27 29 3b   = (ch === 'x');
3daa0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
3dab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3dac0 76 61 6c 69 64 20 3d 20 68 65 78 20 7c 7c 20 63  valid = hex || c
3dad0 68 61 72 61 63 74 65 72 5f 31 2e 43 68 61 72 61  haracter_1.Chara
3dae0 63 74 65 72 2e 69 73 44 65 63 69 6d 61 6c 44 69  cter.isDecimalDi
3daf0 67 69 74 28 63 68 2e 63 68 61 72 43 6f 64 65 41  git(ch.charCodeA
3db00 74 28 30 29 29 3b 0a 20 20 09 20 20 20 20 20 20  t(0));.  .      
3db10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3db20 20 20 20 20 20 20 6e 75 6d 65 72 69 63 20 3d 20        numeric = 
3db30 6e 75 6d 65 72 69 63 20 26 26 20 21 68 65 78 3b  numeric && !hex;
3db40 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
3db50 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20              }.  
3db60 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3db70 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0a           break;.
3db80 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
3db90 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 3a 0a         default:.
3dba0 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
3dbb0 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 69 64             valid
3dbc0 20 3d 20 76 61 6c 69 64 20 26 26 20 21 28 6e 75   = valid && !(nu
3dbd0 6d 65 72 69 63 20 26 26 20 21 63 68 61 72 61 63  meric && !charac
3dbe0 74 65 72 5f 31 2e 43 68 61 72 61 63 74 65 72 2e  ter_1.Character.
3dbf0 69 73 44 65 63 69 6d 61 6c 44 69 67 69 74 28 63  isDecimalDigit(c
3dc00 68 2e 63 68 61 72 43 6f 64 65 41 74 28 30 29 29  h.charCodeAt(0))
3dc10 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  );.  .          
3dc20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61                va
3dc30 6c 69 64 20 3d 20 76 61 6c 69 64 20 26 26 20 21  lid = valid && !
3dc40 28 68 65 78 20 26 26 20 21 63 68 61 72 61 63 74  (hex && !charact
3dc50 65 72 5f 31 2e 43 68 61 72 61 63 74 65 72 2e 69  er_1.Character.i
3dc60 73 48 65 78 44 69 67 69 74 28 63 68 2e 63 68 61  sHexDigit(ch.cha
3dc70 72 43 6f 64 65 41 74 28 30 29 29 29 3b 0a 20 20  rCodeAt(0)));.  
3dc80 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3dc90 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0a           break;.
3dca0 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
3dcb0 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20     }.  .        
3dcc0 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20      }.  .       
3dcd0 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 69 66   }.  .        if
3dce0 20 28 76 61 6c 69 64 20 26 26 20 74 65 72 6d 69   (valid && termi
3dcf0 6e 61 74 65 64 20 26 26 20 72 65 73 75 6c 74 2e  nated && result.
3dd00 6c 65 6e 67 74 68 20 3e 20 32 29 20 7b 0a 20 20  length > 2) {.  
3dd10 09 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  .            // 
3dd20 65 2e 67 2e 20 27 26 23 78 34 31 3b 27 20 62 65  e.g. '&#x41;' be
3dd30 63 6f 6d 65 73 20 6a 75 73 74 20 27 23 78 34 31  comes just '#x41
3dd40 27 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  '.  .           
3dd50 20 76 61 72 20 73 74 72 20 3d 20 72 65 73 75 6c   var str = resul
3dd60 74 2e 73 75 62 73 74 72 28 31 2c 20 72 65 73 75  t.substr(1, resu
3dd70 6c 74 2e 6c 65 6e 67 74 68 20 2d 20 32 29 3b 0a  lt.length - 2);.
3dd80 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 69    .            i
3dd90 66 20 28 6e 75 6d 65 72 69 63 20 26 26 20 73 74  f (numeric && st
3dda0 72 2e 6c 65 6e 67 74 68 20 3e 20 31 29 20 7b 0a  r.length > 1) {.
3ddb0 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
3ddc0 20 20 20 72 65 73 75 6c 74 20 3d 20 53 74 72 69     result = Stri
3ddd0 6e 67 2e 66 72 6f 6d 43 68 61 72 43 6f 64 65 28  ng.fromCharCode(
3dde0 70 61 72 73 65 49 6e 74 28 73 74 72 2e 73 75 62  parseInt(str.sub
3ddf0 73 74 72 28 31 29 2c 20 31 30 29 29 3b 0a 20 20  str(1), 10));.  
3de00 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20  .            }. 
3de10 20 09 20 20 20 20 20 20 20 20 20 20 20 20 65 6c   .            el
3de20 73 65 20 69 66 20 28 68 65 78 20 26 26 20 73 74  se if (hex && st
3de30 72 2e 6c 65 6e 67 74 68 20 3e 20 32 29 20 7b 0a  r.length > 2) {.
3de40 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
3de50 20 20 20 72 65 73 75 6c 74 20 3d 20 53 74 72 69     result = Stri
3de60 6e 67 2e 66 72 6f 6d 43 68 61 72 43 6f 64 65 28  ng.fromCharCode(
3de70 70 61 72 73 65 49 6e 74 28 27 30 27 20 2b 20 73  parseInt('0' + s
3de80 74 72 2e 73 75 62 73 74 72 28 31 29 2c 20 31 36  tr.substr(1), 16
3de90 29 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ));.  .         
3dea0 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20     }.  .        
3deb0 20 20 20 20 65 6c 73 65 20 69 66 20 28 21 6e 75      else if (!nu
3dec0 6d 65 72 69 63 20 26 26 20 21 68 65 78 20 26 26  meric && !hex &&
3ded0 20 78 68 74 6d 6c 5f 65 6e 74 69 74 69 65 73 5f   xhtml_entities_
3dee0 31 2e 58 48 54 4d 4c 45 6e 74 69 74 69 65 73 5b  1.XHTMLEntities[
3def0 73 74 72 5d 29 20 7b 0a 20 20 09 20 20 20 20 20  str]) {.  .     
3df00 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c             resul
3df10 74 20 3d 20 78 68 74 6d 6c 5f 65 6e 74 69 74 69  t = xhtml_entiti
3df20 65 73 5f 31 2e 58 48 54 4d 4c 45 6e 74 69 74 69  es_1.XHTMLEntiti
3df30 65 73 5b 73 74 72 5d 3b 0a 20 20 09 20 20 20 20  es[str];.  .    
3df40 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20          }.  .   
3df50 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20       }.  .      
3df60 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b    return result;
3df70 0a 20 20 09 20 20 20 20 7d 3b 0a 20 20 09 20 20  .  .    };.  .  
3df80 20 20 2f 2f 20 53 63 61 6e 20 74 68 65 20 6e 65    // Scan the ne
3df90 78 74 20 4a 53 58 20 74 6f 6b 65 6e 2e 20 54 68  xt JSX token. Th
3dfa0 69 73 20 72 65 70 6c 61 63 65 73 20 53 63 61 6e  is replaces Scan
3dfb0 6e 65 72 23 6c 65 78 20 77 68 65 6e 20 69 6e 20  ner#lex when in 
3dfc0 4a 53 58 20 6d 6f 64 65 2e 0a 20 20 09 20 20 20  JSX mode..  .   
3dfd0 20 4a 53 58 50 61 72 73 65 72 2e 70 72 6f 74 6f   JSXParser.proto
3dfe0 74 79 70 65 2e 6c 65 78 4a 53 58 20 3d 20 66 75  type.lexJSX = fu
3dff0 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20 09 20  nction () {.  . 
3e000 20 20 20 20 20 20 20 76 61 72 20 74 68 69 73 24         var this$
3e010 31 20 3d 20 74 68 69 73 3b 0a 0a 20 20 09 20 20  1 = this;..  .  
3e020 20 20 20 20 20 20 76 61 72 20 63 70 20 3d 20 74        var cp = t
3e030 68 69 73 2e 73 63 61 6e 6e 65 72 2e 73 6f 75 72  his.scanner.sour
3e040 63 65 2e 63 68 61 72 43 6f 64 65 41 74 28 74 68  ce.charCodeAt(th
3e050 69 73 2e 73 63 61 6e 6e 65 72 2e 69 6e 64 65 78  is.scanner.index
3e060 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 2f 2f  );.  .        //
3e070 20 3c 20 3e 20 2f 20 3a 20 3d 20 7b 20 7d 0a 20   < > / : = { }. 
3e080 20 09 20 20 20 20 20 20 20 20 69 66 20 28 63 70   .        if (cp
3e090 20 3d 3d 3d 20 36 30 20 7c 7c 20 63 70 20 3d 3d   === 60 || cp ==
3e0a0 3d 20 36 32 20 7c 7c 20 63 70 20 3d 3d 3d 20 34  = 62 || cp === 4
3e0b0 37 20 7c 7c 20 63 70 20 3d 3d 3d 20 35 38 20 7c  7 || cp === 58 |
3e0c0 7c 20 63 70 20 3d 3d 3d 20 36 31 20 7c 7c 20 63  | cp === 61 || c
3e0d0 70 20 3d 3d 3d 20 31 32 33 20 7c 7c 20 63 70 20  p === 123 || cp 
3e0e0 3d 3d 3d 20 31 32 35 29 20 7b 0a 20 20 09 20 20  === 125) {.  .  
3e0f0 20 20 20 20 20 20 20 20 20 20 76 61 72 20 76 61            var va
3e100 6c 75 65 20 3d 20 74 68 69 73 2e 73 63 61 6e 6e  lue = this.scann
3e110 65 72 2e 73 6f 75 72 63 65 5b 74 68 69 73 2e 73  er.source[this.s
3e120 63 61 6e 6e 65 72 2e 69 6e 64 65 78 2b 2b 5d 3b  canner.index++];
3e130 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
3e140 72 65 74 75 72 6e 20 7b 0a 20 20 09 20 20 20 20  return {.  .    
3e150 20 20 20 20 20 20 20 20 20 20 20 20 74 79 70 65              type
3e160 3a 20 74 6f 6b 65 6e 5f 31 2e 54 6f 6b 65 6e 2e  : token_1.Token.
3e170 50 75 6e 63 74 75 61 74 6f 72 2c 0a 20 20 09 20  Punctuator,.  . 
3e180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76                 v
3e190 61 6c 75 65 3a 20 76 61 6c 75 65 2c 0a 20 20 09  alue: value,.  .
3e1a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3e1b0 6c 69 6e 65 4e 75 6d 62 65 72 3a 20 74 68 69 73  lineNumber: this
3e1c0 2e 73 63 61 6e 6e 65 72 2e 6c 69 6e 65 4e 75 6d  .scanner.lineNum
3e1d0 62 65 72 2c 0a 20 20 09 20 20 20 20 20 20 20 20  ber,.  .        
3e1e0 20 20 20 20 20 20 20 20 6c 69 6e 65 53 74 61 72          lineStar
3e1f0 74 3a 20 74 68 69 73 2e 73 63 61 6e 6e 65 72 2e  t: this.scanner.
3e200 6c 69 6e 65 53 74 61 72 74 2c 0a 20 20 09 20 20  lineStart,.  .  
3e210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
3e220 61 72 74 3a 20 74 68 69 73 2e 73 63 61 6e 6e 65  art: this.scanne
3e230 72 2e 69 6e 64 65 78 20 2d 20 31 2c 0a 20 20 09  r.index - 1,.  .
3e240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3e250 65 6e 64 3a 20 74 68 69 73 2e 73 63 61 6e 6e 65  end: this.scanne
3e260 72 2e 69 6e 64 65 78 0a 20 20 09 20 20 20 20 20  r.index.  .     
3e270 20 20 20 20 20 20 20 7d 3b 0a 20 20 09 20 20 20         };.  .   
3e280 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20       }.  .      
3e290 20 20 2f 2f 20 22 20 27 0a 20 20 09 20 20 20 20    // " '.  .    
3e2a0 20 20 20 20 69 66 20 28 63 70 20 3d 3d 3d 20 33      if (cp === 3
3e2b0 34 20 7c 7c 20 63 70 20 3d 3d 3d 20 33 39 29 20  4 || cp === 39) 
3e2c0 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  {.  .           
3e2d0 20 76 61 72 20 73 74 61 72 74 20 3d 20 74 68 69   var start = thi
3e2e0 73 2e 73 63 61 6e 6e 65 72 2e 69 6e 64 65 78 3b  s.scanner.index;
3e2f0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
3e300 76 61 72 20 71 75 6f 74 65 20 3d 20 74 68 69 73  var quote = this
3e310 2e 73 63 61 6e 6e 65 72 2e 73 6f 75 72 63 65 5b  .scanner.source[
3e320 74 68 69 73 2e 73 63 61 6e 6e 65 72 2e 69 6e 64  this.scanner.ind
3e330 65 78 2b 2b 5d 3b 0a 20 20 09 20 20 20 20 20 20  ex++];.  .      
3e340 20 20 20 20 20 20 76 61 72 20 73 74 72 20 3d 20        var str = 
3e350 27 27 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  '';.  .         
3e360 20 20 20 77 68 69 6c 65 20 28 21 74 68 69 73 2e     while (!this.
3e370 73 63 61 6e 6e 65 72 2e 65 6f 66 28 29 29 20 7b  scanner.eof()) {
3e380 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
3e390 20 20 20 20 76 61 72 20 63 68 20 3d 20 74 68 69      var ch = thi
3e3a0 73 24 31 2e 73 63 61 6e 6e 65 72 2e 73 6f 75 72  s$1.scanner.sour
3e3b0 63 65 5b 74 68 69 73 24 31 2e 73 63 61 6e 6e 65  ce[this$1.scanne
3e3c0 72 2e 69 6e 64 65 78 2b 2b 5d 3b 0a 20 20 09 20  r.index++];.  . 
3e3d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
3e3e0 66 20 28 63 68 20 3d 3d 3d 20 71 75 6f 74 65 29  f (ch === quote)
3e3f0 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   {.  .          
3e400 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b            break;
3e410 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
3e420 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20      }.  .       
3e430 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66           else if
3e440 20 28 63 68 20 3d 3d 3d 20 27 26 27 29 20 7b 0a   (ch === '&') {.
3e450 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
3e460 20 20 20 20 20 20 20 73 74 72 20 2b 3d 20 74 68         str += th
3e470 69 73 24 31 2e 73 63 61 6e 58 48 54 4d 4c 45 6e  is$1.scanXHTMLEn
3e480 74 69 74 79 28 71 75 6f 74 65 29 3b 0a 20 20 09  tity(quote);.  .
3e490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3e4a0 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  }.  .           
3e4b0 20 20 20 20 20 65 6c 73 65 20 7b 0a 20 20 09 20       else {.  . 
3e4c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3e4d0 20 20 20 73 74 72 20 2b 3d 20 63 68 3b 0a 20 20     str += ch;.  
3e4e0 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3e4f0 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   }.  .          
3e500 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20    }.  .         
3e510 20 20 20 72 65 74 75 72 6e 20 7b 0a 20 20 09 20     return {.  . 
3e520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
3e530 79 70 65 3a 20 74 6f 6b 65 6e 5f 31 2e 54 6f 6b  ype: token_1.Tok
3e540 65 6e 2e 53 74 72 69 6e 67 4c 69 74 65 72 61 6c  en.StringLiteral
3e550 2c 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ,.  .           
3e560 20 20 20 20 20 76 61 6c 75 65 3a 20 73 74 72 2c       value: str,
3e570 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
3e580 20 20 20 20 6c 69 6e 65 4e 75 6d 62 65 72 3a 20      lineNumber: 
3e590 74 68 69 73 2e 73 63 61 6e 6e 65 72 2e 6c 69 6e  this.scanner.lin
3e5a0 65 4e 75 6d 62 65 72 2c 0a 20 20 09 20 20 20 20  eNumber,.  .    
3e5b0 20 20 20 20 20 20 20 20 20 20 20 20 6c 69 6e 65              line
3e5c0 53 74 61 72 74 3a 20 74 68 69 73 2e 73 63 61 6e  Start: this.scan
3e5d0 6e 65 72 2e 6c 69 6e 65 53 74 61 72 74 2c 0a 20  ner.lineStart,. 
3e5e0 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
3e5f0 20 20 73 74 61 72 74 3a 20 73 74 61 72 74 2c 0a    start: start,.
3e600 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
3e610 20 20 20 65 6e 64 3a 20 74 68 69 73 2e 73 63 61     end: this.sca
3e620 6e 6e 65 72 2e 69 6e 64 65 78 0a 20 20 09 20 20  nner.index.  .  
3e630 20 20 20 20 20 20 20 20 20 20 7d 3b 0a 20 20 09            };.  .
3e640 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20          }.  .   
3e650 20 20 20 20 20 2f 2f 20 2e 2e 2e 20 6f 72 20 2e       // ... or .
3e660 0a 20 20 09 20 20 20 20 20 20 20 20 69 66 20 28  .  .        if (
3e670 63 70 20 3d 3d 3d 20 34 36 29 20 7b 0a 20 20 09  cp === 46) {.  .
3e680 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20              var 
3e690 6e 31 20 3d 20 74 68 69 73 2e 73 63 61 6e 6e 65  n1 = this.scanne
3e6a0 72 2e 73 6f 75 72 63 65 2e 63 68 61 72 43 6f 64  r.source.charCod
3e6b0 65 41 74 28 74 68 69 73 2e 73 63 61 6e 6e 65 72  eAt(this.scanner
3e6c0 2e 69 6e 64 65 78 20 2b 20 31 29 3b 0a 20 20 09  .index + 1);.  .
3e6d0 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20              var 
3e6e0 6e 32 20 3d 20 74 68 69 73 2e 73 63 61 6e 6e 65  n2 = this.scanne
3e6f0 72 2e 73 6f 75 72 63 65 2e 63 68 61 72 43 6f 64  r.source.charCod
3e700 65 41 74 28 74 68 69 73 2e 73 63 61 6e 6e 65 72  eAt(this.scanner
3e710 2e 69 6e 64 65 78 20 2b 20 32 29 3b 0a 20 20 09  .index + 2);.  .
3e720 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20              var 
3e730 76 61 6c 75 65 20 3d 20 28 6e 31 20 3d 3d 3d 20  value = (n1 === 
3e740 34 36 20 26 26 20 6e 32 20 3d 3d 3d 20 34 36 29  46 && n2 === 46)
3e750 20 3f 20 27 2e 2e 2e 27 20 3a 20 27 2e 27 3b 0a   ? '...' : '.';.
3e760 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 76    .            v
3e770 61 72 20 73 74 61 72 74 20 3d 20 74 68 69 73 2e  ar start = this.
3e780 73 63 61 6e 6e 65 72 2e 69 6e 64 65 78 3b 0a 20  scanner.index;. 
3e790 20 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68   .            th
3e7a0 69 73 2e 73 63 61 6e 6e 65 72 2e 69 6e 64 65 78  is.scanner.index
3e7b0 20 2b 3d 20 76 61 6c 75 65 2e 6c 65 6e 67 74 68   += value.length
3e7c0 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
3e7d0 20 72 65 74 75 72 6e 20 7b 0a 20 20 09 20 20 20   return {.  .   
3e7e0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 79 70               typ
3e7f0 65 3a 20 74 6f 6b 65 6e 5f 31 2e 54 6f 6b 65 6e  e: token_1.Token
3e800 2e 50 75 6e 63 74 75 61 74 6f 72 2c 0a 20 20 09  .Punctuator,.  .
3e810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3e820 76 61 6c 75 65 3a 20 76 61 6c 75 65 2c 0a 20 20  value: value,.  
3e830 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3e840 20 6c 69 6e 65 4e 75 6d 62 65 72 3a 20 74 68 69   lineNumber: thi
3e850 73 2e 73 63 61 6e 6e 65 72 2e 6c 69 6e 65 4e 75  s.scanner.lineNu
3e860 6d 62 65 72 2c 0a 20 20 09 20 20 20 20 20 20 20  mber,.  .       
3e870 20 20 20 20 20 20 20 20 20 6c 69 6e 65 53 74 61           lineSta
3e880 72 74 3a 20 74 68 69 73 2e 73 63 61 6e 6e 65 72  rt: this.scanner
3e890 2e 6c 69 6e 65 53 74 61 72 74 2c 0a 20 20 09 20  .lineStart,.  . 
3e8a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
3e8b0 74 61 72 74 3a 20 73 74 61 72 74 2c 0a 20 20 09  tart: start,.  .
3e8c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3e8d0 65 6e 64 3a 20 74 68 69 73 2e 73 63 61 6e 6e 65  end: this.scanne
3e8e0 72 2e 69 6e 64 65 78 0a 20 20 09 20 20 20 20 20  r.index.  .     
3e8f0 20 20 20 20 20 20 20 7d 3b 0a 20 20 09 20 20 20         };.  .   
3e900 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20       }.  .      
3e910 20 20 2f 2f 20 60 0a 20 20 09 20 20 20 20 20 20    // `.  .      
3e920 20 20 69 66 20 28 63 70 20 3d 3d 3d 20 39 36 29    if (cp === 96)
3e930 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   {.  .          
3e940 20 20 2f 2f 20 4f 6e 6c 79 20 70 6c 61 63 65 68    // Only placeh
3e950 6f 6c 64 65 72 2c 20 73 69 6e 63 65 20 69 74 20  older, since it 
3e960 77 69 6c 6c 20 62 65 20 72 65 73 63 61 6e 6e 65  will be rescanne
3e970 64 20 61 73 20 61 20 72 65 61 6c 20 61 73 73 69  d as a real assi
3e980 67 6e 6d 65 6e 74 20 65 78 70 72 65 73 73 69 6f  gnment expressio
3e990 6e 2e 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  n..  .          
3e9a0 20 20 72 65 74 75 72 6e 20 7b 0a 20 20 09 20 20    return {.  .  
3e9b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 79                ty
3e9c0 70 65 3a 20 74 6f 6b 65 6e 5f 31 2e 54 6f 6b 65  pe: token_1.Toke
3e9d0 6e 2e 54 65 6d 70 6c 61 74 65 2c 0a 20 20 09 20  n.Template,.  . 
3e9e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
3e9f0 69 6e 65 4e 75 6d 62 65 72 3a 20 74 68 69 73 2e  ineNumber: this.
3ea00 73 63 61 6e 6e 65 72 2e 6c 69 6e 65 4e 75 6d 62  scanner.lineNumb
3ea10 65 72 2c 0a 20 20 09 20 20 20 20 20 20 20 20 20  er,.  .         
3ea20 20 20 20 20 20 20 20 6c 69 6e 65 53 74 61 72 74         lineStart
3ea30 3a 20 74 68 69 73 2e 73 63 61 6e 6e 65 72 2e 6c  : this.scanner.l
3ea40 69 6e 65 53 74 61 72 74 2c 0a 20 20 09 20 20 20  ineStart,.  .   
3ea50 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 61               sta
3ea60 72 74 3a 20 74 68 69 73 2e 73 63 61 6e 6e 65 72  rt: this.scanner
3ea70 2e 69 6e 64 65 78 2c 0a 20 20 09 20 20 20 20 20  .index,.  .     
3ea80 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 3a 20             end: 
3ea90 74 68 69 73 2e 73 63 61 6e 6e 65 72 2e 69 6e 64  this.scanner.ind
3eaa0 65 78 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  ex.  .          
3eab0 20 20 7d 3b 0a 20 20 09 20 20 20 20 20 20 20 20    };.  .        
3eac0 7d 0a 20 20 09 20 20 20 20 20 20 20 20 2f 2f 20  }.  .        // 
3ead0 49 64 65 6e 74 69 66 65 72 20 63 61 6e 20 6e 6f  Identifer can no
3eae0 74 20 63 6f 6e 74 61 69 6e 20 62 61 63 6b 73 6c  t contain backsl
3eaf0 61 73 68 20 28 63 68 61 72 20 63 6f 64 65 20 39  ash (char code 9
3eb00 32 29 2e 0a 20 20 09 20 20 20 20 20 20 20 20 69  2)..  .        i
3eb10 66 20 28 63 68 61 72 61 63 74 65 72 5f 31 2e 43  f (character_1.C
3eb20 68 61 72 61 63 74 65 72 2e 69 73 49 64 65 6e 74  haracter.isIdent
3eb30 69 66 69 65 72 53 74 61 72 74 28 63 70 29 20 26  ifierStart(cp) &
3eb40 26 20 28 63 70 20 21 3d 3d 20 39 32 29 29 20 7b  & (cp !== 92)) {
3eb50 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
3eb60 76 61 72 20 73 74 61 72 74 20 3d 20 74 68 69 73  var start = this
3eb70 2e 73 63 61 6e 6e 65 72 2e 69 6e 64 65 78 3b 0a  .scanner.index;.
3eb80 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 2b    .            +
3eb90 2b 74 68 69 73 2e 73 63 61 6e 6e 65 72 2e 69 6e  +this.scanner.in
3eba0 64 65 78 3b 0a 20 20 09 20 20 20 20 20 20 20 20  dex;.  .        
3ebb0 20 20 20 20 77 68 69 6c 65 20 28 21 74 68 69 73      while (!this
3ebc0 2e 73 63 61 6e 6e 65 72 2e 65 6f 66 28 29 29 20  .scanner.eof()) 
3ebd0 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  {.  .           
3ebe0 20 20 20 20 20 76 61 72 20 63 68 20 3d 20 74 68       var ch = th
3ebf0 69 73 24 31 2e 73 63 61 6e 6e 65 72 2e 73 6f 75  is$1.scanner.sou
3ec00 72 63 65 2e 63 68 61 72 43 6f 64 65 41 74 28 74  rce.charCodeAt(t
3ec10 68 69 73 24 31 2e 73 63 61 6e 6e 65 72 2e 69 6e  his$1.scanner.in
3ec20 64 65 78 29 3b 0a 20 20 09 20 20 20 20 20 20 20  dex);.  .       
3ec30 20 20 20 20 20 20 20 20 20 69 66 20 28 63 68 61           if (cha
3ec40 72 61 63 74 65 72 5f 31 2e 43 68 61 72 61 63 74  racter_1.Charact
3ec50 65 72 2e 69 73 49 64 65 6e 74 69 66 69 65 72 50  er.isIdentifierP
3ec60 61 72 74 28 63 68 29 20 26 26 20 28 63 68 20 21  art(ch) && (ch !
3ec70 3d 3d 20 39 32 29 29 20 7b 0a 20 20 09 20 20 20  == 92)) {.  .   
3ec80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3ec90 20 2b 2b 74 68 69 73 24 31 2e 73 63 61 6e 6e 65   ++this$1.scanne
3eca0 72 2e 69 6e 64 65 78 3b 0a 20 20 09 20 20 20 20  r.index;.  .    
3ecb0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20              }.  
3ecc0 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3ecd0 20 65 6c 73 65 20 69 66 20 28 63 68 20 3d 3d 3d   else if (ch ===
3ece0 20 34 35 29 20 7b 0a 20 20 09 20 20 20 20 20 20   45) {.  .      
3ecf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
3ed00 20 48 79 70 68 65 6e 20 28 63 68 61 72 20 63 6f   Hyphen (char co
3ed10 64 65 20 34 35 29 20 63 61 6e 20 62 65 20 70 61  de 45) can be pa
3ed20 72 74 20 6f 66 20 61 6e 20 69 64 65 6e 74 69 66  rt of an identif
3ed30 69 65 72 2e 0a 20 20 09 20 20 20 20 20 20 20 20  ier..  .        
3ed40 20 20 20 20 20 20 20 20 20 20 20 20 2b 2b 74 68              ++th
3ed50 69 73 24 31 2e 73 63 61 6e 6e 65 72 2e 69 6e 64  is$1.scanner.ind
3ed60 65 78 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ex;.  .         
3ed70 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20         }.  .    
3ed80 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
3ed90 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   {.  .          
3eda0 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b            break;
3edb0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
3edc0 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20      }.  .       
3edd0 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20       }.  .      
3ede0 20 20 20 20 20 20 76 61 72 20 69 64 20 3d 20 74        var id = t
3edf0 68 69 73 2e 73 63 61 6e 6e 65 72 2e 73 6f 75 72  his.scanner.sour
3ee00 63 65 2e 73 6c 69 63 65 28 73 74 61 72 74 2c 20  ce.slice(start, 
3ee10 74 68 69 73 2e 73 63 61 6e 6e 65 72 2e 69 6e 64  this.scanner.ind
3ee20 65 78 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  ex);.  .        
3ee30 20 20 20 20 72 65 74 75 72 6e 20 7b 0a 20 20 09      return {.  .
3ee40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3ee50 74 79 70 65 3a 20 4a 53 58 54 6f 6b 65 6e 2e 49  type: JSXToken.I
3ee60 64 65 6e 74 69 66 69 65 72 2c 0a 20 20 09 20 20  dentifier,.  .  
3ee70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61                va
3ee80 6c 75 65 3a 20 69 64 2c 0a 20 20 09 20 20 20 20  lue: id,.  .    
3ee90 20 20 20 20 20 20 20 20 20 20 20 20 6c 69 6e 65              line
3eea0 4e 75 6d 62 65 72 3a 20 74 68 69 73 2e 73 63 61  Number: this.sca
3eeb0 6e 6e 65 72 2e 6c 69 6e 65 4e 75 6d 62 65 72 2c  nner.lineNumber,
3eec0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
3eed0 20 20 20 20 6c 69 6e 65 53 74 61 72 74 3a 20 74      lineStart: t
3eee0 68 69 73 2e 73 63 61 6e 6e 65 72 2e 6c 69 6e 65  his.scanner.line
3eef0 53 74 61 72 74 2c 0a 20 20 09 20 20 20 20 20 20  Start,.  .      
3ef00 20 20 20 20 20 20 20 20 20 20 73 74 61 72 74 3a            start:
3ef10 20 73 74 61 72 74 2c 0a 20 20 09 20 20 20 20 20   start,.  .     
3ef20 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 3a 20             end: 
3ef30 74 68 69 73 2e 73 63 61 6e 6e 65 72 2e 69 6e 64  this.scanner.ind
3ef40 65 78 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  ex.  .          
3ef50 20 20 7d 3b 0a 20 20 09 20 20 20 20 20 20 20 20    };.  .        
3ef60 7d 0a 20 20 09 20 20 20 20 20 20 20 20 74 68 69  }.  .        thi
3ef70 73 2e 73 63 61 6e 6e 65 72 2e 74 68 72 6f 77 55  s.scanner.throwU
3ef80 6e 65 78 70 65 63 74 65 64 54 6f 6b 65 6e 28 29  nexpectedToken()
3ef90 3b 0a 20 20 09 20 20 20 20 7d 3b 0a 20 20 09 20  ;.  .    };.  . 
3efa0 20 20 20 4a 53 58 50 61 72 73 65 72 2e 70 72 6f     JSXParser.pro
3efb0 74 6f 74 79 70 65 2e 6e 65 78 74 4a 53 58 54 6f  totype.nextJSXTo
3efc0 6b 65 6e 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28  ken = function (
3efd0 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 74  ) {.  .        t
3efe0 68 69 73 2e 63 6f 6c 6c 65 63 74 43 6f 6d 6d 65  his.collectComme
3eff0 6e 74 73 28 29 3b 0a 20 20 09 20 20 20 20 20 20  nts();.  .      
3f000 20 20 74 68 69 73 2e 73 74 61 72 74 4d 61 72 6b    this.startMark
3f010 65 72 2e 69 6e 64 65 78 20 3d 20 74 68 69 73 2e  er.index = this.
3f020 73 63 61 6e 6e 65 72 2e 69 6e 64 65 78 3b 0a 20  scanner.index;. 
3f030 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 73   .        this.s
3f040 74 61 72 74 4d 61 72 6b 65 72 2e 6c 69 6e 65 4e  tartMarker.lineN
3f050 75 6d 62 65 72 20 3d 20 74 68 69 73 2e 73 63 61  umber = this.sca
3f060 6e 6e 65 72 2e 6c 69 6e 65 4e 75 6d 62 65 72 3b  nner.lineNumber;
3f070 0a 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73  .  .        this
3f080 2e 73 74 61 72 74 4d 61 72 6b 65 72 2e 6c 69 6e  .startMarker.lin
3f090 65 53 74 61 72 74 20 3d 20 74 68 69 73 2e 73 63  eStart = this.sc
3f0a0 61 6e 6e 65 72 2e 6c 69 6e 65 53 74 61 72 74 3b  anner.lineStart;
3f0b0 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20  .  .        var 
3f0c0 74 6f 6b 65 6e 20 3d 20 74 68 69 73 2e 6c 65 78  token = this.lex
3f0d0 4a 53 58 28 29 3b 0a 20 20 09 20 20 20 20 20 20  JSX();.  .      
3f0e0 20 20 74 68 69 73 2e 6c 61 73 74 4d 61 72 6b 65    this.lastMarke
3f0f0 72 2e 69 6e 64 65 78 20 3d 20 74 68 69 73 2e 73  r.index = this.s
3f100 63 61 6e 6e 65 72 2e 69 6e 64 65 78 3b 0a 20 20  canner.index;.  
3f110 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c 61  .        this.la
3f120 73 74 4d 61 72 6b 65 72 2e 6c 69 6e 65 4e 75 6d  stMarker.lineNum
3f130 62 65 72 20 3d 20 74 68 69 73 2e 73 63 61 6e 6e  ber = this.scann
3f140 65 72 2e 6c 69 6e 65 4e 75 6d 62 65 72 3b 0a 20  er.lineNumber;. 
3f150 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c   .        this.l
3f160 61 73 74 4d 61 72 6b 65 72 2e 6c 69 6e 65 53 74  astMarker.lineSt
3f170 61 72 74 20 3d 20 74 68 69 73 2e 73 63 61 6e 6e  art = this.scann
3f180 65 72 2e 6c 69 6e 65 53 74 61 72 74 3b 0a 20 20  er.lineStart;.  
3f190 09 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69  .        if (thi
3f1a0 73 2e 63 6f 6e 66 69 67 2e 74 6f 6b 65 6e 73 29  s.config.tokens)
3f1b0 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   {.  .          
3f1c0 20 20 74 68 69 73 2e 74 6f 6b 65 6e 73 2e 70 75    this.tokens.pu
3f1d0 73 68 28 74 68 69 73 2e 63 6f 6e 76 65 72 74 54  sh(this.convertT
3f1e0 6f 6b 65 6e 28 74 6f 6b 65 6e 29 29 3b 0a 20 20  oken(token));.  
3f1f0 09 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20  .        }.  .  
3f200 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 6f 6b        return tok
3f210 65 6e 3b 0a 20 20 09 20 20 20 20 7d 3b 0a 20 20  en;.  .    };.  
3f220 09 20 20 20 20 4a 53 58 50 61 72 73 65 72 2e 70  .    JSXParser.p
3f230 72 6f 74 6f 74 79 70 65 2e 6e 65 78 74 4a 53 58  rototype.nextJSX
3f240 54 65 78 74 20 3d 20 66 75 6e 63 74 69 6f 6e 20  Text = function 
3f250 28 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20  () {.  .        
3f260 76 61 72 20 74 68 69 73 24 31 20 3d 20 74 68 69  var this$1 = thi
3f270 73 3b 0a 0a 20 20 09 20 20 20 20 20 20 20 20 74  s;..  .        t
3f280 68 69 73 2e 73 74 61 72 74 4d 61 72 6b 65 72 2e  his.startMarker.
3f290 69 6e 64 65 78 20 3d 20 74 68 69 73 2e 73 63 61  index = this.sca
3f2a0 6e 6e 65 72 2e 69 6e 64 65 78 3b 0a 20 20 09 20  nner.index;.  . 
3f2b0 20 20 20 20 20 20 20 74 68 69 73 2e 73 74 61 72         this.star
3f2c0 74 4d 61 72 6b 65 72 2e 6c 69 6e 65 4e 75 6d 62  tMarker.lineNumb
3f2d0 65 72 20 3d 20 74 68 69 73 2e 73 63 61 6e 6e 65  er = this.scanne
3f2e0 72 2e 6c 69 6e 65 4e 75 6d 62 65 72 3b 0a 20 20  r.lineNumber;.  
3f2f0 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 73 74  .        this.st
3f300 61 72 74 4d 61 72 6b 65 72 2e 6c 69 6e 65 53 74  artMarker.lineSt
3f310 61 72 74 20 3d 20 74 68 69 73 2e 73 63 61 6e 6e  art = this.scann
3f320 65 72 2e 6c 69 6e 65 53 74 61 72 74 3b 0a 20 20  er.lineStart;.  
3f330 09 20 20 20 20 20 20 20 20 76 61 72 20 73 74 61  .        var sta
3f340 72 74 20 3d 20 74 68 69 73 2e 73 63 61 6e 6e 65  rt = this.scanne
3f350 72 2e 69 6e 64 65 78 3b 0a 20 20 09 20 20 20 20  r.index;.  .    
3f360 20 20 20 20 76 61 72 20 74 65 78 74 20 3d 20 27      var text = '
3f370 27 3b 0a 20 20 09 20 20 20 20 20 20 20 20 77 68  ';.  .        wh
3f380 69 6c 65 20 28 21 74 68 69 73 2e 73 63 61 6e 6e  ile (!this.scann
3f390 65 72 2e 65 6f 66 28 29 29 20 7b 0a 20 20 09 20  er.eof()) {.  . 
3f3a0 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 63             var c
3f3b0 68 20 3d 20 74 68 69 73 24 31 2e 73 63 61 6e 6e  h = this$1.scann
3f3c0 65 72 2e 73 6f 75 72 63 65 5b 74 68 69 73 24 31  er.source[this$1
3f3d0 2e 73 63 61 6e 6e 65 72 2e 69 6e 64 65 78 5d 3b  .scanner.index];
3f3e0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
3f3f0 69 66 20 28 63 68 20 3d 3d 3d 20 27 7b 27 20 7c  if (ch === '{' |
3f400 7c 20 63 68 20 3d 3d 3d 20 27 3c 27 29 20 7b 0a  | ch === '<') {.
3f410 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
3f420 20 20 20 62 72 65 61 6b 3b 0a 20 20 09 20 20 20     break;.  .   
3f430 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20           }.  .  
3f440 20 20 20 20 20 20 20 20 20 20 2b 2b 74 68 69 73            ++this
3f450 24 31 2e 73 63 61 6e 6e 65 72 2e 69 6e 64 65 78  $1.scanner.index
3f460 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
3f470 20 74 65 78 74 20 2b 3d 20 63 68 3b 0a 20 20 09   text += ch;.  .
3f480 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
3f490 63 68 61 72 61 63 74 65 72 5f 31 2e 43 68 61 72  character_1.Char
3f4a0 61 63 74 65 72 2e 69 73 4c 69 6e 65 54 65 72 6d  acter.isLineTerm
3f4b0 69 6e 61 74 6f 72 28 63 68 2e 63 68 61 72 43 6f  inator(ch.charCo
3f4c0 64 65 41 74 28 30 29 29 29 20 7b 0a 20 20 09 20  deAt(0))) {.  . 
3f4d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2b                 +
3f4e0 2b 74 68 69 73 24 31 2e 73 63 61 6e 6e 65 72 2e  +this$1.scanner.
3f4f0 6c 69 6e 65 4e 75 6d 62 65 72 3b 0a 20 20 09 20  lineNumber;.  . 
3f500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
3f510 66 20 28 63 68 20 3d 3d 3d 20 27 5c 72 27 20 26  f (ch === '\r' &
3f520 26 20 74 68 69 73 24 31 2e 73 63 61 6e 6e 65 72  & this$1.scanner
3f530 2e 73 6f 75 72 63 65 5b 74 68 69 73 24 31 2e 73  .source[this$1.s
3f540 63 61 6e 6e 65 72 2e 69 6e 64 65 78 5d 20 3d 3d  canner.index] ==
3f550 3d 20 27 5c 6e 27 29 20 7b 0a 20 20 09 20 20 20  = '\n') {.  .   
3f560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3f570 20 2b 2b 74 68 69 73 24 31 2e 73 63 61 6e 6e 65   ++this$1.scanne
3f580 72 2e 69 6e 64 65 78 3b 0a 20 20 09 20 20 20 20  r.index;.  .    
3f590 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20              }.  
3f5a0 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3f5b0 20 74 68 69 73 24 31 2e 73 63 61 6e 6e 65 72 2e   this$1.scanner.
3f5c0 6c 69 6e 65 53 74 61 72 74 20 3d 20 74 68 69 73  lineStart = this
3f5d0 24 31 2e 73 63 61 6e 6e 65 72 2e 69 6e 64 65 78  $1.scanner.index
3f5e0 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
3f5f0 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a   }.  .        }.
3f600 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e    .        this.
3f610 6c 61 73 74 4d 61 72 6b 65 72 2e 69 6e 64 65 78  lastMarker.index
3f620 20 3d 20 74 68 69 73 2e 73 63 61 6e 6e 65 72 2e   = this.scanner.
3f630 69 6e 64 65 78 3b 0a 20 20 09 20 20 20 20 20 20  index;.  .      
3f640 20 20 74 68 69 73 2e 6c 61 73 74 4d 61 72 6b 65    this.lastMarke
3f650 72 2e 6c 69 6e 65 4e 75 6d 62 65 72 20 3d 20 74  r.lineNumber = t
3f660 68 69 73 2e 73 63 61 6e 6e 65 72 2e 6c 69 6e 65  his.scanner.line
3f670 4e 75 6d 62 65 72 3b 0a 20 20 09 20 20 20 20 20  Number;.  .     
3f680 20 20 20 74 68 69 73 2e 6c 61 73 74 4d 61 72 6b     this.lastMark
3f690 65 72 2e 6c 69 6e 65 53 74 61 72 74 20 3d 20 74  er.lineStart = t
3f6a0 68 69 73 2e 73 63 61 6e 6e 65 72 2e 6c 69 6e 65  his.scanner.line
3f6b0 53 74 61 72 74 3b 0a 20 20 09 20 20 20 20 20 20  Start;.  .      
3f6c0 20 20 76 61 72 20 74 6f 6b 65 6e 20 3d 20 7b 0a    var token = {.
3f6d0 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 74    .            t
3f6e0 79 70 65 3a 20 4a 53 58 54 6f 6b 65 6e 2e 54 65  ype: JSXToken.Te
3f6f0 78 74 2c 0a 20 20 09 20 20 20 20 20 20 20 20 20  xt,.  .         
3f700 20 20 20 76 61 6c 75 65 3a 20 74 65 78 74 2c 0a     value: text,.
3f710 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 6c    .            l
3f720 69 6e 65 4e 75 6d 62 65 72 3a 20 74 68 69 73 2e  ineNumber: this.
3f730 73 63 61 6e 6e 65 72 2e 6c 69 6e 65 4e 75 6d 62  scanner.lineNumb
3f740 65 72 2c 0a 20 20 09 20 20 20 20 20 20 20 20 20  er,.  .         
3f750 20 20 20 6c 69 6e 65 53 74 61 72 74 3a 20 74 68     lineStart: th
3f760 69 73 2e 73 63 61 6e 6e 65 72 2e 6c 69 6e 65 53  is.scanner.lineS
3f770 74 61 72 74 2c 0a 20 20 09 20 20 20 20 20 20 20  tart,.  .       
3f780 20 20 20 20 20 73 74 61 72 74 3a 20 73 74 61 72       start: star
3f790 74 2c 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  t,.  .          
3f7a0 20 20 65 6e 64 3a 20 74 68 69 73 2e 73 63 61 6e    end: this.scan
3f7b0 6e 65 72 2e 69 6e 64 65 78 0a 20 20 09 20 20 20  ner.index.  .   
3f7c0 20 20 20 20 20 7d 3b 0a 20 20 09 20 20 20 20 20       };.  .     
3f7d0 20 20 20 69 66 20 28 28 74 65 78 74 2e 6c 65 6e     if ((text.len
3f7e0 67 74 68 20 3e 20 30 29 20 26 26 20 74 68 69 73  gth > 0) && this
3f7f0 2e 63 6f 6e 66 69 67 2e 74 6f 6b 65 6e 73 29 20  .config.tokens) 
3f800 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  {.  .           
3f810 20 74 68 69 73 2e 74 6f 6b 65 6e 73 2e 70 75 73   this.tokens.pus
3f820 68 28 74 68 69 73 2e 63 6f 6e 76 65 72 74 54 6f  h(this.convertTo
3f830 6b 65 6e 28 74 6f 6b 65 6e 29 29 3b 0a 20 20 09  ken(token));.  .
3f840 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20          }.  .   
3f850 20 20 20 20 20 72 65 74 75 72 6e 20 74 6f 6b 65       return toke
3f860 6e 3b 0a 20 20 09 20 20 20 20 7d 3b 0a 20 20 09  n;.  .    };.  .
3f870 20 20 20 20 4a 53 58 50 61 72 73 65 72 2e 70 72      JSXParser.pr
3f880 6f 74 6f 74 79 70 65 2e 70 65 65 6b 4a 53 58 54  ototype.peekJSXT
3f890 6f 6b 65 6e 20 3d 20 66 75 6e 63 74 69 6f 6e 20  oken = function 
3f8a0 28 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20  () {.  .        
3f8b0 76 61 72 20 70 72 65 76 69 6f 75 73 49 6e 64 65  var previousInde
3f8c0 78 20 3d 20 74 68 69 73 2e 73 63 61 6e 6e 65 72  x = this.scanner
3f8d0 2e 69 6e 64 65 78 3b 0a 20 20 09 20 20 20 20 20  .index;.  .     
3f8e0 20 20 20 76 61 72 20 70 72 65 76 69 6f 75 73 4c     var previousL
3f8f0 69 6e 65 4e 75 6d 62 65 72 20 3d 20 74 68 69 73  ineNumber = this
3f900 2e 73 63 61 6e 6e 65 72 2e 6c 69 6e 65 4e 75 6d  .scanner.lineNum
3f910 62 65 72 3b 0a 20 20 09 20 20 20 20 20 20 20 20  ber;.  .        
3f920 76 61 72 20 70 72 65 76 69 6f 75 73 4c 69 6e 65  var previousLine
3f930 53 74 61 72 74 20 3d 20 74 68 69 73 2e 73 63 61  Start = this.sca
3f940 6e 6e 65 72 2e 6c 69 6e 65 53 74 61 72 74 3b 0a  nner.lineStart;.
3f950 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e    .        this.
3f960 73 63 61 6e 6e 65 72 2e 73 63 61 6e 43 6f 6d 6d  scanner.scanComm
3f970 65 6e 74 73 28 29 3b 0a 20 20 09 20 20 20 20 20  ents();.  .     
3f980 20 20 20 76 61 72 20 6e 65 78 74 20 3d 20 74 68     var next = th
3f990 69 73 2e 6c 65 78 4a 53 58 28 29 3b 0a 20 20 09  is.lexJSX();.  .
3f9a0 20 20 20 20 20 20 20 20 74 68 69 73 2e 73 63 61          this.sca
3f9b0 6e 6e 65 72 2e 69 6e 64 65 78 20 3d 20 70 72 65  nner.index = pre
3f9c0 76 69 6f 75 73 49 6e 64 65 78 3b 0a 20 20 09 20  viousIndex;.  . 
3f9d0 20 20 20 20 20 20 20 74 68 69 73 2e 73 63 61 6e         this.scan
3f9e0 6e 65 72 2e 6c 69 6e 65 4e 75 6d 62 65 72 20 3d  ner.lineNumber =
3f9f0 20 70 72 65 76 69 6f 75 73 4c 69 6e 65 4e 75 6d   previousLineNum
3fa00 62 65 72 3b 0a 20 20 09 20 20 20 20 20 20 20 20  ber;.  .        
3fa10 74 68 69 73 2e 73 63 61 6e 6e 65 72 2e 6c 69 6e  this.scanner.lin
3fa20 65 53 74 61 72 74 20 3d 20 70 72 65 76 69 6f 75  eStart = previou
3fa30 73 4c 69 6e 65 53 74 61 72 74 3b 0a 20 20 09 20  sLineStart;.  . 
3fa40 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65         return ne
3fa50 78 74 3b 0a 20 20 09 20 20 20 20 7d 3b 0a 20 20  xt;.  .    };.  
3fa60 09 20 20 20 20 2f 2f 20 45 78 70 65 63 74 20 74  .    // Expect t
3fa70 68 65 20 6e 65 78 74 20 4a 53 58 20 74 6f 6b 65  he next JSX toke
3fa80 6e 20 74 6f 20 6d 61 74 63 68 20 74 68 65 20 73  n to match the s
3fa90 70 65 63 69 66 69 65 64 20 70 75 6e 63 74 75 61  pecified punctua
3faa0 74 6f 72 2e 0a 20 20 09 20 20 20 20 2f 2f 20 49  tor..  .    // I
3fab0 66 20 6e 6f 74 2c 20 61 6e 20 65 78 63 65 70 74  f not, an except
3fac0 69 6f 6e 20 77 69 6c 6c 20 62 65 20 74 68 72 6f  ion will be thro
3fad0 77 6e 2e 0a 20 20 09 20 20 20 20 4a 53 58 50 61  wn..  .    JSXPa
3fae0 72 73 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 65  rser.prototype.e
3faf0 78 70 65 63 74 4a 53 58 20 3d 20 66 75 6e 63 74  xpectJSX = funct
3fb00 69 6f 6e 20 28 76 61 6c 75 65 29 20 7b 0a 20 20  ion (value) {.  
3fb10 09 20 20 20 20 20 20 20 20 76 61 72 20 74 6f 6b  .        var tok
3fb20 65 6e 20 3d 20 74 68 69 73 2e 6e 65 78 74 4a 53  en = this.nextJS
3fb30 58 54 6f 6b 65 6e 28 29 3b 0a 20 20 09 20 20 20  XToken();.  .   
3fb40 20 20 20 20 20 69 66 20 28 74 6f 6b 65 6e 2e 74       if (token.t
3fb50 79 70 65 20 21 3d 3d 20 74 6f 6b 65 6e 5f 31 2e  ype !== token_1.
3fb60 54 6f 6b 65 6e 2e 50 75 6e 63 74 75 61 74 6f 72  Token.Punctuator
3fb70 20 7c 7c 20 74 6f 6b 65 6e 2e 76 61 6c 75 65 20   || token.value 
3fb80 21 3d 3d 20 76 61 6c 75 65 29 20 7b 0a 20 20 09  !== value) {.  .
3fb90 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
3fba0 2e 74 68 72 6f 77 55 6e 65 78 70 65 63 74 65 64  .throwUnexpected
3fbb0 54 6f 6b 65 6e 28 74 6f 6b 65 6e 29 3b 0a 20 20  Token(token);.  
3fbc0 09 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20  .        }.  .  
3fbd0 20 20 7d 3b 0a 20 20 09 20 20 20 20 2f 2f 20 52    };.  .    // R
3fbe0 65 74 75 72 6e 20 74 72 75 65 20 69 66 20 74 68  eturn true if th
3fbf0 65 20 6e 65 78 74 20 4a 53 58 20 74 6f 6b 65 6e  e next JSX token
3fc00 20 6d 61 74 63 68 65 73 20 74 68 65 20 73 70 65   matches the spe
3fc10 63 69 66 69 65 64 20 70 75 6e 63 74 75 61 74 6f  cified punctuato
3fc20 72 2e 0a 20 20 09 20 20 20 20 4a 53 58 50 61 72  r..  .    JSXPar
3fc30 73 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 6d 61  ser.prototype.ma
3fc40 74 63 68 4a 53 58 20 3d 20 66 75 6e 63 74 69 6f  tchJSX = functio
3fc50 6e 20 28 76 61 6c 75 65 29 20 7b 0a 20 20 09 20  n (value) {.  . 
3fc60 20 20 20 20 20 20 20 76 61 72 20 6e 65 78 74 20         var next 
3fc70 3d 20 74 68 69 73 2e 70 65 65 6b 4a 53 58 54 6f  = this.peekJSXTo
3fc80 6b 65 6e 28 29 3b 0a 20 20 09 20 20 20 20 20 20  ken();.  .      
3fc90 20 20 72 65 74 75 72 6e 20 6e 65 78 74 2e 74 79    return next.ty
3fca0 70 65 20 3d 3d 3d 20 74 6f 6b 65 6e 5f 31 2e 54  pe === token_1.T
3fcb0 6f 6b 65 6e 2e 50 75 6e 63 74 75 61 74 6f 72 20  oken.Punctuator 
3fcc0 26 26 20 6e 65 78 74 2e 76 61 6c 75 65 20 3d 3d  && next.value ==
3fcd0 3d 20 76 61 6c 75 65 3b 0a 20 20 09 20 20 20 20  = value;.  .    
3fce0 7d 3b 0a 20 20 09 20 20 20 20 4a 53 58 50 61 72  };.  .    JSXPar
3fcf0 73 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 70 61  ser.prototype.pa
3fd00 72 73 65 4a 53 58 49 64 65 6e 74 69 66 69 65 72  rseJSXIdentifier
3fd10 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b   = function () {
3fd20 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20  .  .        var 
3fd30 6e 6f 64 65 20 3d 20 74 68 69 73 2e 63 72 65 61  node = this.crea
3fd40 74 65 4a 53 58 4e 6f 64 65 28 29 3b 0a 20 20 09  teJSXNode();.  .
3fd50 20 20 20 20 20 20 20 20 76 61 72 20 74 6f 6b 65          var toke
3fd60 6e 20 3d 20 74 68 69 73 2e 6e 65 78 74 4a 53 58  n = this.nextJSX
3fd70 54 6f 6b 65 6e 28 29 3b 0a 20 20 09 20 20 20 20  Token();.  .    
3fd80 20 20 20 20 69 66 20 28 74 6f 6b 65 6e 2e 74 79      if (token.ty
3fd90 70 65 20 21 3d 3d 20 4a 53 58 54 6f 6b 65 6e 2e  pe !== JSXToken.
3fda0 49 64 65 6e 74 69 66 69 65 72 29 20 7b 0a 20 20  Identifier) {.  
3fdb0 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
3fdc0 73 2e 74 68 72 6f 77 55 6e 65 78 70 65 63 74 65  s.throwUnexpecte
3fdd0 64 54 6f 6b 65 6e 28 74 6f 6b 65 6e 29 3b 0a 20  dToken(token);. 
3fde0 20 09 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20   .        }.  . 
3fdf0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68         return th
3fe00 69 73 2e 66 69 6e 61 6c 69 7a 65 28 6e 6f 64 65  is.finalize(node
3fe10 2c 20 6e 65 77 20 4a 53 58 4e 6f 64 65 2e 4a 53  , new JSXNode.JS
3fe20 58 49 64 65 6e 74 69 66 69 65 72 28 74 6f 6b 65  XIdentifier(toke
3fe30 6e 2e 76 61 6c 75 65 29 29 3b 0a 20 20 09 20 20  n.value));.  .  
3fe40 20 20 7d 3b 0a 20 20 09 20 20 20 20 4a 53 58 50    };.  .    JSXP
3fe50 61 72 73 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e  arser.prototype.
3fe60 70 61 72 73 65 4a 53 58 45 6c 65 6d 65 6e 74 4e  parseJSXElementN
3fe70 61 6d 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28  ame = function (
3fe80 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 76  ) {.  .        v
3fe90 61 72 20 74 68 69 73 24 31 20 3d 20 74 68 69 73  ar this$1 = this
3fea0 3b 0a 0a 20 20 09 20 20 20 20 20 20 20 20 76 61  ;..  .        va
3feb0 72 20 6e 6f 64 65 20 3d 20 74 68 69 73 2e 63 72  r node = this.cr
3fec0 65 61 74 65 4a 53 58 4e 6f 64 65 28 29 3b 0a 20  eateJSXNode();. 
3fed0 20 09 20 20 20 20 20 20 20 20 76 61 72 20 65 6c   .        var el
3fee0 65 6d 65 6e 74 4e 61 6d 65 20 3d 20 74 68 69 73  ementName = this
3fef0 2e 70 61 72 73 65 4a 53 58 49 64 65 6e 74 69 66  .parseJSXIdentif
3ff00 69 65 72 28 29 3b 0a 20 20 09 20 20 20 20 20 20  ier();.  .      
3ff10 20 20 69 66 20 28 74 68 69 73 2e 6d 61 74 63 68    if (this.match
3ff20 4a 53 58 28 27 3a 27 29 29 20 7b 0a 20 20 09 20  JSX(':')) {.  . 
3ff30 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 6e             var n
3ff40 61 6d 65 73 70 61 63 65 20 3d 20 65 6c 65 6d 65  amespace = eleme
3ff50 6e 74 4e 61 6d 65 3b 0a 20 20 09 20 20 20 20 20  ntName;.  .     
3ff60 20 20 20 20 20 20 20 74 68 69 73 2e 65 78 70 65         this.expe
3ff70 63 74 4a 53 58 28 27 3a 27 29 3b 0a 20 20 09 20  ctJSX(':');.  . 
3ff80 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 6e             var n
3ff90 61 6d 65 5f 31 20 3d 20 74 68 69 73 2e 70 61 72  ame_1 = this.par
3ffa0 73 65 4a 53 58 49 64 65 6e 74 69 66 69 65 72 28  seJSXIdentifier(
3ffb0 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  );.  .          
3ffc0 20 20 65 6c 65 6d 65 6e 74 4e 61 6d 65 20 3d 20    elementName = 
3ffd0 74 68 69 73 2e 66 69 6e 61 6c 69 7a 65 28 6e 6f  this.finalize(no
3ffe0 64 65 2c 20 6e 65 77 20 4a 53 58 4e 6f 64 65 2e  de, new JSXNode.
3fff0 4a 53 58 4e 61 6d 65 73 70 61 63 65 64 4e 61 6d  JSXNamespacedNam
40000 65 28 6e 61 6d 65 73 70 61 63 65 2c 20 6e 61 6d  e(namespace, nam
40010 65 5f 31 29 29 3b 0a 20 20 09 20 20 20 20 20 20  e_1));.  .      
40020 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 65    }.  .        e
40030 6c 73 65 20 69 66 20 28 74 68 69 73 2e 6d 61 74  lse if (this.mat
40040 63 68 4a 53 58 28 27 2e 27 29 29 20 7b 0a 20 20  chJSX('.')) {.  
40050 09 20 20 20 20 20 20 20 20 20 20 20 20 77 68 69  .            whi
40060 6c 65 20 28 74 68 69 73 2e 6d 61 74 63 68 4a 53  le (this.matchJS
40070 58 28 27 2e 27 29 29 20 7b 0a 20 20 09 20 20 20  X('.')) {.  .   
40080 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72               var
40090 20 6f 62 6a 65 63 74 20 3d 20 65 6c 65 6d 65 6e   object = elemen
400a0 74 4e 61 6d 65 3b 0a 20 20 09 20 20 20 20 20 20  tName;.  .      
400b0 20 20 20 20 20 20 20 20 20 20 74 68 69 73 24 31            this$1
400c0 2e 65 78 70 65 63 74 4a 53 58 28 27 2e 27 29 3b  .expectJSX('.');
400d0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
400e0 20 20 20 20 76 61 72 20 70 72 6f 70 65 72 74 79      var property
400f0 20 3d 20 74 68 69 73 24 31 2e 70 61 72 73 65 4a   = this$1.parseJ
40100 53 58 49 64 65 6e 74 69 66 69 65 72 28 29 3b 0a  SXIdentifier();.
40110 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
40120 20 20 20 65 6c 65 6d 65 6e 74 4e 61 6d 65 20 3d     elementName =
40130 20 74 68 69 73 24 31 2e 66 69 6e 61 6c 69 7a 65   this$1.finalize
40140 28 6e 6f 64 65 2c 20 6e 65 77 20 4a 53 58 4e 6f  (node, new JSXNo
40150 64 65 2e 4a 53 58 4d 65 6d 62 65 72 45 78 70 72  de.JSXMemberExpr
40160 65 73 73 69 6f 6e 28 6f 62 6a 65 63 74 2c 20 70  ession(object, p
40170 72 6f 70 65 72 74 79 29 29 3b 0a 20 20 09 20 20  roperty));.  .  
40180 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20            }.  . 
40190 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20         }.  .    
401a0 20 20 20 20 72 65 74 75 72 6e 20 65 6c 65 6d 65      return eleme
401b0 6e 74 4e 61 6d 65 3b 0a 20 20 09 20 20 20 20 7d  ntName;.  .    }
401c0 3b 0a 20 20 09 20 20 20 20 4a 53 58 50 61 72 73  ;.  .    JSXPars
401d0 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 70 61 72  er.prototype.par
401e0 73 65 4a 53 58 41 74 74 72 69 62 75 74 65 4e 61  seJSXAttributeNa
401f0 6d 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29  me = function ()
40200 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 76 61   {.  .        va
40210 72 20 6e 6f 64 65 20 3d 20 74 68 69 73 2e 63 72  r node = this.cr
40220 65 61 74 65 4a 53 58 4e 6f 64 65 28 29 3b 0a 20  eateJSXNode();. 
40230 20 09 20 20 20 20 20 20 20 20 76 61 72 20 61 74   .        var at
40240 74 72 69 62 75 74 65 4e 61 6d 65 3b 0a 20 20 09  tributeName;.  .
40250 20 20 20 20 20 20 20 20 76 61 72 20 69 64 65 6e          var iden
40260 74 69 66 69 65 72 20 3d 20 74 68 69 73 2e 70 61  tifier = this.pa
40270 72 73 65 4a 53 58 49 64 65 6e 74 69 66 69 65 72  rseJSXIdentifier
40280 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 69  ();.  .        i
40290 66 20 28 74 68 69 73 2e 6d 61 74 63 68 4a 53 58  f (this.matchJSX
402a0 28 27 3a 27 29 29 20 7b 0a 20 20 09 20 20 20 20  (':')) {.  .    
402b0 20 20 20 20 20 20 20 20 76 61 72 20 6e 61 6d 65          var name
402c0 73 70 61 63 65 20 3d 20 69 64 65 6e 74 69 66 69  space = identifi
402d0 65 72 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  er;.  .         
402e0 20 20 20 74 68 69 73 2e 65 78 70 65 63 74 4a 53     this.expectJS
402f0 58 28 27 3a 27 29 3b 0a 20 20 09 20 20 20 20 20  X(':');.  .     
40300 20 20 20 20 20 20 20 76 61 72 20 6e 61 6d 65 5f         var name_
40310 32 20 3d 20 74 68 69 73 2e 70 61 72 73 65 4a 53  2 = this.parseJS
40320 58 49 64 65 6e 74 69 66 69 65 72 28 29 3b 0a 20  XIdentifier();. 
40330 20 09 20 20 20 20 20 20 20 20 20 20 20 20 61 74   .            at
40340 74 72 69 62 75 74 65 4e 61 6d 65 20 3d 20 74 68  tributeName = th
40350 69 73 2e 66 69 6e 61 6c 69 7a 65 28 6e 6f 64 65  is.finalize(node
40360 2c 20 6e 65 77 20 4a 53 58 4e 6f 64 65 2e 4a 53  , new JSXNode.JS
40370 58 4e 61 6d 65 73 70 61 63 65 64 4e 61 6d 65 28  XNamespacedName(
40380 6e 61 6d 65 73 70 61 63 65 2c 20 6e 61 6d 65 5f  namespace, name_
40390 32 29 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  2));.  .        
403a0 7d 0a 20 20 09 20 20 20 20 20 20 20 20 65 6c 73  }.  .        els
403b0 65 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20  e {.  .         
403c0 20 20 20 61 74 74 72 69 62 75 74 65 4e 61 6d 65     attributeName
403d0 20 3d 20 69 64 65 6e 74 69 66 69 65 72 3b 0a 20   = identifier;. 
403e0 20 09 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20   .        }.  . 
403f0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 61 74         return at
40400 74 72 69 62 75 74 65 4e 61 6d 65 3b 0a 20 20 09  tributeName;.  .
40410 20 20 20 20 7d 3b 0a 20 20 09 20 20 20 20 4a 53      };.  .    JS
40420 58 50 61 72 73 65 72 2e 70 72 6f 74 6f 74 79 70  XParser.prototyp
40430 65 2e 70 61 72 73 65 4a 53 58 53 74 72 69 6e 67  e.parseJSXString
40440 4c 69 74 65 72 61 6c 41 74 74 72 69 62 75 74 65  LiteralAttribute
40450 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b   = function () {
40460 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20  .  .        var 
40470 6e 6f 64 65 20 3d 20 74 68 69 73 2e 63 72 65 61  node = this.crea
40480 74 65 4a 53 58 4e 6f 64 65 28 29 3b 0a 20 20 09  teJSXNode();.  .
40490 20 20 20 20 20 20 20 20 76 61 72 20 74 6f 6b 65          var toke
404a0 6e 20 3d 20 74 68 69 73 2e 6e 65 78 74 4a 53 58  n = this.nextJSX
404b0 54 6f 6b 65 6e 28 29 3b 0a 20 20 09 20 20 20 20  Token();.  .    
404c0 20 20 20 20 69 66 20 28 74 6f 6b 65 6e 2e 74 79      if (token.ty
404d0 70 65 20 21 3d 3d 20 74 6f 6b 65 6e 5f 31 2e 54  pe !== token_1.T
404e0 6f 6b 65 6e 2e 53 74 72 69 6e 67 4c 69 74 65 72  oken.StringLiter
404f0 61 6c 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20  al) {.  .       
40500 20 20 20 20 20 74 68 69 73 2e 74 68 72 6f 77 55       this.throwU
40510 6e 65 78 70 65 63 74 65 64 54 6f 6b 65 6e 28 74  nexpectedToken(t
40520 6f 6b 65 6e 29 3b 0a 20 20 09 20 20 20 20 20 20  oken);.  .      
40530 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 76    }.  .        v
40540 61 72 20 72 61 77 20 3d 20 74 68 69 73 2e 67 65  ar raw = this.ge
40550 74 54 6f 6b 65 6e 52 61 77 28 74 6f 6b 65 6e 29  tTokenRaw(token)
40560 3b 0a 20 20 09 20 20 20 20 20 20 20 20 72 65 74  ;.  .        ret
40570 75 72 6e 20 74 68 69 73 2e 66 69 6e 61 6c 69 7a  urn this.finaliz
40580 65 28 6e 6f 64 65 2c 20 6e 65 77 20 4e 6f 64 65  e(node, new Node
40590 2e 4c 69 74 65 72 61 6c 28 74 6f 6b 65 6e 2e 76  .Literal(token.v
405a0 61 6c 75 65 2c 20 72 61 77 29 29 3b 0a 20 20 09  alue, raw));.  .
405b0 20 20 20 20 7d 3b 0a 20 20 09 20 20 20 20 4a 53      };.  .    JS
405c0 58 50 61 72 73 65 72 2e 70 72 6f 74 6f 74 79 70  XParser.prototyp
405d0 65 2e 70 61 72 73 65 4a 53 58 45 78 70 72 65 73  e.parseJSXExpres
405e0 73 69 6f 6e 41 74 74 72 69 62 75 74 65 20 3d 20  sionAttribute = 
405f0 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20  function () {.  
40600 09 20 20 20 20 20 20 20 20 76 61 72 20 6e 6f 64  .        var nod
40610 65 20 3d 20 74 68 69 73 2e 63 72 65 61 74 65 4a  e = this.createJ
40620 53 58 4e 6f 64 65 28 29 3b 0a 20 20 09 20 20 20  SXNode();.  .   
40630 20 20 20 20 20 74 68 69 73 2e 65 78 70 65 63 74       this.expect
40640 4a 53 58 28 27 7b 27 29 3b 0a 20 20 09 20 20 20  JSX('{');.  .   
40650 20 20 20 20 20 74 68 69 73 2e 66 69 6e 69 73 68       this.finish
40660 4a 53 58 28 29 3b 0a 20 20 09 20 20 20 20 20 20  JSX();.  .      
40670 20 20 69 66 20 28 74 68 69 73 2e 6d 61 74 63 68    if (this.match
40680 28 27 7d 27 29 29 20 7b 0a 20 20 09 20 20 20 20  ('}')) {.  .    
40690 20 20 20 20 20 20 20 20 74 68 69 73 2e 74 6f 6c          this.tol
406a0 65 72 61 74 65 45 72 72 6f 72 28 27 4a 53 58 20  erateError('JSX 
406b0 61 74 74 72 69 62 75 74 65 73 20 6d 75 73 74 20  attributes must 
406c0 6f 6e 6c 79 20 62 65 20 61 73 73 69 67 6e 65 64  only be assigned
406d0 20 61 20 6e 6f 6e 2d 65 6d 70 74 79 20 65 78 70   a non-empty exp
406e0 72 65 73 73 69 6f 6e 27 29 3b 0a 20 20 09 20 20  ression');.  .  
406f0 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20        }.  .     
40700 20 20 20 76 61 72 20 65 78 70 72 65 73 73 69 6f     var expressio
40710 6e 20 3d 20 74 68 69 73 2e 70 61 72 73 65 41 73  n = this.parseAs
40720 73 69 67 6e 6d 65 6e 74 45 78 70 72 65 73 73 69  signmentExpressi
40730 6f 6e 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20  on();.  .       
40740 20 74 68 69 73 2e 72 65 65 6e 74 65 72 4a 53 58   this.reenterJSX
40750 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 72  ();.  .        r
40760 65 74 75 72 6e 20 74 68 69 73 2e 66 69 6e 61 6c  eturn this.final
40770 69 7a 65 28 6e 6f 64 65 2c 20 6e 65 77 20 4a 53  ize(node, new JS
40780 58 4e 6f 64 65 2e 4a 53 58 45 78 70 72 65 73 73  XNode.JSXExpress
40790 69 6f 6e 43 6f 6e 74 61 69 6e 65 72 28 65 78 70  ionContainer(exp
407a0 72 65 73 73 69 6f 6e 29 29 3b 0a 20 20 09 20 20  ression));.  .  
407b0 20 20 7d 3b 0a 20 20 09 20 20 20 20 4a 53 58 50    };.  .    JSXP
407c0 61 72 73 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e  arser.prototype.
407d0 70 61 72 73 65 4a 53 58 41 74 74 72 69 62 75 74  parseJSXAttribut
407e0 65 56 61 6c 75 65 20 3d 20 66 75 6e 63 74 69 6f  eValue = functio
407f0 6e 20 28 29 20 7b 0a 20 20 09 20 20 20 20 20 20  n () {.  .      
40800 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e 6d 61    return this.ma
40810 74 63 68 4a 53 58 28 27 7b 27 29 20 3f 20 74 68  tchJSX('{') ? th
40820 69 73 2e 70 61 72 73 65 4a 53 58 45 78 70 72 65  is.parseJSXExpre
40830 73 73 69 6f 6e 41 74 74 72 69 62 75 74 65 28 29  ssionAttribute()
40840 20 3a 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   :.  .          
40850 20 20 74 68 69 73 2e 6d 61 74 63 68 4a 53 58 28    this.matchJSX(
40860 27 3c 27 29 20 3f 20 74 68 69 73 2e 70 61 72 73  '<') ? this.pars
40870 65 4a 53 58 45 6c 65 6d 65 6e 74 28 29 20 3a 20  eJSXElement() : 
40880 74 68 69 73 2e 70 61 72 73 65 4a 53 58 53 74 72  this.parseJSXStr
40890 69 6e 67 4c 69 74 65 72 61 6c 41 74 74 72 69 62  ingLiteralAttrib
408a0 75 74 65 28 29 3b 0a 20 20 09 20 20 20 20 7d 3b  ute();.  .    };
408b0 0a 20 20 09 20 20 20 20 4a 53 58 50 61 72 73 65  .  .    JSXParse
408c0 72 2e 70 72 6f 74 6f 74 79 70 65 2e 70 61 72 73  r.prototype.pars
408d0 65 4a 53 58 4e 61 6d 65 56 61 6c 75 65 41 74 74  eJSXNameValueAtt
408e0 72 69 62 75 74 65 20 3d 20 66 75 6e 63 74 69 6f  ribute = functio
408f0 6e 20 28 29 20 7b 0a 20 20 09 20 20 20 20 20 20  n () {.  .      
40900 20 20 76 61 72 20 6e 6f 64 65 20 3d 20 74 68 69    var node = thi
40910 73 2e 63 72 65 61 74 65 4a 53 58 4e 6f 64 65 28  s.createJSXNode(
40920 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 76 61  );.  .        va
40930 72 20 6e 61 6d 65 20 3d 20 74 68 69 73 2e 70 61  r name = this.pa
40940 72 73 65 4a 53 58 41 74 74 72 69 62 75 74 65 4e  rseJSXAttributeN
40950 61 6d 65 28 29 3b 0a 20 20 09 20 20 20 20 20 20  ame();.  .      
40960 20 20 76 61 72 20 76 61 6c 75 65 20 3d 20 6e 75    var value = nu
40970 6c 6c 3b 0a 20 20 09 20 20 20 20 20 20 20 20 69  ll;.  .        i
40980 66 20 28 74 68 69 73 2e 6d 61 74 63 68 4a 53 58  f (this.matchJSX
40990 28 27 3d 27 29 29 20 7b 0a 20 20 09 20 20 20 20  ('=')) {.  .    
409a0 20 20 20 20 20 20 20 20 74 68 69 73 2e 65 78 70          this.exp
409b0 65 63 74 4a 53 58 28 27 3d 27 29 3b 0a 20 20 09  ectJSX('=');.  .
409c0 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75              valu
409d0 65 20 3d 20 74 68 69 73 2e 70 61 72 73 65 4a 53  e = this.parseJS
409e0 58 41 74 74 72 69 62 75 74 65 56 61 6c 75 65 28  XAttributeValue(
409f0 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a  );.  .        }.
40a00 20 20 09 20 20 20 20 20 20 20 20 72 65 74 75 72    .        retur
40a10 6e 20 74 68 69 73 2e 66 69 6e 61 6c 69 7a 65 28  n this.finalize(
40a20 6e 6f 64 65 2c 20 6e 65 77 20 4a 53 58 4e 6f 64  node, new JSXNod
40a30 65 2e 4a 53 58 41 74 74 72 69 62 75 74 65 28 6e  e.JSXAttribute(n
40a40 61 6d 65 2c 20 76 61 6c 75 65 29 29 3b 0a 20 20  ame, value));.  
40a50 09 20 20 20 20 7d 3b 0a 20 20 09 20 20 20 20 4a  .    };.  .    J
40a60 53 58 50 61 72 73 65 72 2e 70 72 6f 74 6f 74 79  SXParser.prototy
40a70 70 65 2e 70 61 72 73 65 4a 53 58 53 70 72 65 61  pe.parseJSXSprea
40a80 64 41 74 74 72 69 62 75 74 65 20 3d 20 66 75 6e  dAttribute = fun
40a90 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20 09 20 20  ction () {.  .  
40aa0 20 20 20 20 20 20 76 61 72 20 6e 6f 64 65 20 3d        var node =
40ab0 20 74 68 69 73 2e 63 72 65 61 74 65 4a 53 58 4e   this.createJSXN
40ac0 6f 64 65 28 29 3b 0a 20 20 09 20 20 20 20 20 20  ode();.  .      
40ad0 20 20 74 68 69 73 2e 65 78 70 65 63 74 4a 53 58    this.expectJSX
40ae0 28 27 7b 27 29 3b 0a 20 20 09 20 20 20 20 20 20  ('{');.  .      
40af0 20 20 74 68 69 73 2e 65 78 70 65 63 74 4a 53 58    this.expectJSX
40b00 28 27 2e 2e 2e 27 29 3b 0a 20 20 09 20 20 20 20  ('...');.  .    
40b10 20 20 20 20 74 68 69 73 2e 66 69 6e 69 73 68 4a      this.finishJ
40b20 53 58 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20  SX();.  .       
40b30 20 76 61 72 20 61 72 67 75 6d 65 6e 74 20 3d 20   var argument = 
40b40 74 68 69 73 2e 70 61 72 73 65 41 73 73 69 67 6e  this.parseAssign
40b50 6d 65 6e 74 45 78 70 72 65 73 73 69 6f 6e 28 29  mentExpression()
40b60 3b 0a 20 20 09 20 20 20 20 20 20 20 20 74 68 69  ;.  .        thi
40b70 73 2e 72 65 65 6e 74 65 72 4a 53 58 28 29 3b 0a  s.reenterJSX();.
40b80 20 20 09 20 20 20 20 20 20 20 20 72 65 74 75 72    .        retur
40b90 6e 20 74 68 69 73 2e 66 69 6e 61 6c 69 7a 65 28  n this.finalize(
40ba0 6e 6f 64 65 2c 20 6e 65 77 20 4a 53 58 4e 6f 64  node, new JSXNod
40bb0 65 2e 4a 53 58 53 70 72 65 61 64 41 74 74 72 69  e.JSXSpreadAttri
40bc0 62 75 74 65 28 61 72 67 75 6d 65 6e 74 29 29 3b  bute(argument));
40bd0 0a 20 20 09 20 20 20 20 7d 3b 0a 20 20 09 20 20  .  .    };.  .  
40be0 20 20 4a 53 58 50 61 72 73 65 72 2e 70 72 6f 74    JSXParser.prot
40bf0 6f 74 79 70 65 2e 70 61 72 73 65 4a 53 58 41 74  otype.parseJSXAt
40c00 74 72 69 62 75 74 65 73 20 3d 20 66 75 6e 63 74  tributes = funct
40c10 69 6f 6e 20 28 29 20 7b 0a 20 20 09 20 20 20 20  ion () {.  .    
40c20 20 20 20 20 76 61 72 20 74 68 69 73 24 31 20 3d      var this$1 =
40c30 20 74 68 69 73 3b 0a 0a 20 20 09 20 20 20 20 20   this;..  .     
40c40 20 20 20 76 61 72 20 61 74 74 72 69 62 75 74 65     var attribute
40c50 73 20 3d 20 5b 5d 3b 0a 20 20 09 20 20 20 20 20  s = [];.  .     
40c60 20 20 20 77 68 69 6c 65 20 28 21 74 68 69 73 2e     while (!this.
40c70 6d 61 74 63 68 4a 53 58 28 27 2f 27 29 20 26 26  matchJSX('/') &&
40c80 20 21 74 68 69 73 2e 6d 61 74 63 68 4a 53 58 28   !this.matchJSX(
40c90 27 3e 27 29 29 20 7b 0a 20 20 09 20 20 20 20 20  '>')) {.  .     
40ca0 20 20 20 20 20 20 20 76 61 72 20 61 74 74 72 69         var attri
40cb0 62 75 74 65 20 3d 20 74 68 69 73 24 31 2e 6d 61  bute = this$1.ma
40cc0 74 63 68 4a 53 58 28 27 7b 27 29 20 3f 20 74 68  tchJSX('{') ? th
40cd0 69 73 24 31 2e 70 61 72 73 65 4a 53 58 53 70 72  is$1.parseJSXSpr
40ce0 65 61 64 41 74 74 72 69 62 75 74 65 28 29 20 3a  eadAttribute() :
40cf0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
40d00 20 20 20 20 74 68 69 73 24 31 2e 70 61 72 73 65      this$1.parse
40d10 4a 53 58 4e 61 6d 65 56 61 6c 75 65 41 74 74 72  JSXNameValueAttr
40d20 69 62 75 74 65 28 29 3b 0a 20 20 09 20 20 20 20  ibute();.  .    
40d30 20 20 20 20 20 20 20 20 61 74 74 72 69 62 75 74          attribut
40d40 65 73 2e 70 75 73 68 28 61 74 74 72 69 62 75 74  es.push(attribut
40d50 65 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 7d  e);.  .        }
40d60 0a 20 20 09 20 20 20 20 20 20 20 20 72 65 74 75  .  .        retu
40d70 72 6e 20 61 74 74 72 69 62 75 74 65 73 3b 0a 20  rn attributes;. 
40d80 20 09 20 20 20 20 7d 3b 0a 20 20 09 20 20 20 20   .    };.  .    
40d90 4a 53 58 50 61 72 73 65 72 2e 70 72 6f 74 6f 74  JSXParser.protot
40da0 79 70 65 2e 70 61 72 73 65 4a 53 58 4f 70 65 6e  ype.parseJSXOpen
40db0 69 6e 67 45 6c 65 6d 65 6e 74 20 3d 20 66 75 6e  ingElement = fun
40dc0 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20 09 20 20  ction () {.  .  
40dd0 20 20 20 20 20 20 76 61 72 20 6e 6f 64 65 20 3d        var node =
40de0 20 74 68 69 73 2e 63 72 65 61 74 65 4a 53 58 4e   this.createJSXN
40df0 6f 64 65 28 29 3b 0a 20 20 09 20 20 20 20 20 20  ode();.  .      
40e00 20 20 74 68 69 73 2e 65 78 70 65 63 74 4a 53 58    this.expectJSX
40e10 28 27 3c 27 29 3b 0a 20 20 09 20 20 20 20 20 20  ('<');.  .      
40e20 20 20 76 61 72 20 6e 61 6d 65 20 3d 20 74 68 69    var name = thi
40e30 73 2e 70 61 72 73 65 4a 53 58 45 6c 65 6d 65 6e  s.parseJSXElemen
40e40 74 4e 61 6d 65 28 29 3b 0a 20 20 09 20 20 20 20  tName();.  .    
40e50 20 20 20 20 76 61 72 20 61 74 74 72 69 62 75 74      var attribut
40e60 65 73 20 3d 20 74 68 69 73 2e 70 61 72 73 65 4a  es = this.parseJ
40e70 53 58 41 74 74 72 69 62 75 74 65 73 28 29 3b 0a  SXAttributes();.
40e80 20 20 09 20 20 20 20 20 20 20 20 76 61 72 20 73    .        var s
40e90 65 6c 66 43 6c 6f 73 69 6e 67 20 3d 20 74 68 69  elfClosing = thi
40ea0 73 2e 6d 61 74 63 68 4a 53 58 28 27 2f 27 29 3b  s.matchJSX('/');
40eb0 0a 20 20 09 20 20 20 20 20 20 20 20 69 66 20 28  .  .        if (
40ec0 73 65 6c 66 43 6c 6f 73 69 6e 67 29 20 7b 0a 20  selfClosing) {. 
40ed0 20 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68   .            th
40ee0 69 73 2e 65 78 70 65 63 74 4a 53 58 28 27 2f 27  is.expectJSX('/'
40ef0 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a  );.  .        }.
40f00 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e    .        this.
40f10 65 78 70 65 63 74 4a 53 58 28 27 3e 27 29 3b 0a  expectJSX('>');.
40f20 20 20 09 20 20 20 20 20 20 20 20 72 65 74 75 72    .        retur
40f30 6e 20 74 68 69 73 2e 66 69 6e 61 6c 69 7a 65 28  n this.finalize(
40f40 6e 6f 64 65 2c 20 6e 65 77 20 4a 53 58 4e 6f 64  node, new JSXNod
40f50 65 2e 4a 53 58 4f 70 65 6e 69 6e 67 45 6c 65 6d  e.JSXOpeningElem
40f60 65 6e 74 28 6e 61 6d 65 2c 20 73 65 6c 66 43 6c  ent(name, selfCl
40f70 6f 73 69 6e 67 2c 20 61 74 74 72 69 62 75 74 65  osing, attribute
40f80 73 29 29 3b 0a 20 20 09 20 20 20 20 7d 3b 0a 20  s));.  .    };. 
40f90 20 09 20 20 20 20 4a 53 58 50 61 72 73 65 72 2e   .    JSXParser.
40fa0 70 72 6f 74 6f 74 79 70 65 2e 70 61 72 73 65 4a  prototype.parseJ
40fb0 53 58 42 6f 75 6e 64 61 72 79 45 6c 65 6d 65 6e  SXBoundaryElemen
40fc0 74 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20  t = function () 
40fd0 7b 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72  {.  .        var
40fe0 20 6e 6f 64 65 20 3d 20 74 68 69 73 2e 63 72 65   node = this.cre
40ff0 61 74 65 4a 53 58 4e 6f 64 65 28 29 3b 0a 20 20  ateJSXNode();.  
41000 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 65 78  .        this.ex
41010 70 65 63 74 4a 53 58 28 27 3c 27 29 3b 0a 20 20  pectJSX('<');.  
41020 09 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69  .        if (thi
41030 73 2e 6d 61 74 63 68 4a 53 58 28 27 2f 27 29 29  s.matchJSX('/'))
41040 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   {.  .          
41050 20 20 74 68 69 73 2e 65 78 70 65 63 74 4a 53 58    this.expectJSX
41060 28 27 2f 27 29 3b 0a 20 20 09 20 20 20 20 20 20  ('/');.  .      
41070 20 20 20 20 20 20 76 61 72 20 6e 61 6d 65 5f 33        var name_3
41080 20 3d 20 74 68 69 73 2e 70 61 72 73 65 4a 53 58   = this.parseJSX
41090 45 6c 65 6d 65 6e 74 4e 61 6d 65 28 29 3b 0a 20  ElementName();. 
410a0 20 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68   .            th
410b0 69 73 2e 65 78 70 65 63 74 4a 53 58 28 27 3e 27  is.expectJSX('>'
410c0 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  );.  .          
410d0 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e 66 69    return this.fi
410e0 6e 61 6c 69 7a 65 28 6e 6f 64 65 2c 20 6e 65 77  nalize(node, new
410f0 20 4a 53 58 4e 6f 64 65 2e 4a 53 58 43 6c 6f 73   JSXNode.JSXClos
41100 69 6e 67 45 6c 65 6d 65 6e 74 28 6e 61 6d 65 5f  ingElement(name_
41110 33 29 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  3));.  .        
41120 7d 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72  }.  .        var
41130 20 6e 61 6d 65 20 3d 20 74 68 69 73 2e 70 61 72   name = this.par
41140 73 65 4a 53 58 45 6c 65 6d 65 6e 74 4e 61 6d 65  seJSXElementName
41150 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 76  ();.  .        v
41160 61 72 20 61 74 74 72 69 62 75 74 65 73 20 3d 20  ar attributes = 
41170 74 68 69 73 2e 70 61 72 73 65 4a 53 58 41 74 74  this.parseJSXAtt
41180 72 69 62 75 74 65 73 28 29 3b 0a 20 20 09 20 20  ributes();.  .  
41190 20 20 20 20 20 20 76 61 72 20 73 65 6c 66 43 6c        var selfCl
411a0 6f 73 69 6e 67 20 3d 20 74 68 69 73 2e 6d 61 74  osing = this.mat
411b0 63 68 4a 53 58 28 27 2f 27 29 3b 0a 20 20 09 20  chJSX('/');.  . 
411c0 20 20 20 20 20 20 20 69 66 20 28 73 65 6c 66 43         if (selfC
411d0 6c 6f 73 69 6e 67 29 20 7b 0a 20 20 09 20 20 20  losing) {.  .   
411e0 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 65 78           this.ex
411f0 70 65 63 74 4a 53 58 28 27 2f 27 29 3b 0a 20 20  pectJSX('/');.  
41200 09 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20  .        }.  .  
41210 20 20 20 20 20 20 74 68 69 73 2e 65 78 70 65 63        this.expec
41220 74 4a 53 58 28 27 3e 27 29 3b 0a 20 20 09 20 20  tJSX('>');.  .  
41230 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69        return thi
41240 73 2e 66 69 6e 61 6c 69 7a 65 28 6e 6f 64 65 2c  s.finalize(node,
41250 20 6e 65 77 20 4a 53 58 4e 6f 64 65 2e 4a 53 58   new JSXNode.JSX
41260 4f 70 65 6e 69 6e 67 45 6c 65 6d 65 6e 74 28 6e  OpeningElement(n
41270 61 6d 65 2c 20 73 65 6c 66 43 6c 6f 73 69 6e 67  ame, selfClosing
41280 2c 20 61 74 74 72 69 62 75 74 65 73 29 29 3b 0a  , attributes));.
41290 20 20 09 20 20 20 20 7d 3b 0a 20 20 09 20 20 20    .    };.  .   
412a0 20 4a 53 58 50 61 72 73 65 72 2e 70 72 6f 74 6f   JSXParser.proto
412b0 74 79 70 65 2e 70 61 72 73 65 4a 53 58 45 6d 70  type.parseJSXEmp
412c0 74 79 45 78 70 72 65 73 73 69 6f 6e 20 3d 20 66  tyExpression = f
412d0 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20 09  unction () {.  .
412e0 20 20 20 20 20 20 20 20 76 61 72 20 6e 6f 64 65          var node
412f0 20 3d 20 74 68 69 73 2e 63 72 65 61 74 65 4a 53   = this.createJS
41300 58 43 68 69 6c 64 4e 6f 64 65 28 29 3b 0a 20 20  XChildNode();.  
41310 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 6f  .        this.co
41320 6c 6c 65 63 74 43 6f 6d 6d 65 6e 74 73 28 29 3b  llectComments();
41330 0a 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73  .  .        this
41340 2e 6c 61 73 74 4d 61 72 6b 65 72 2e 69 6e 64 65  .lastMarker.inde
41350 78 20 3d 20 74 68 69 73 2e 73 63 61 6e 6e 65 72  x = this.scanner
41360 2e 69 6e 64 65 78 3b 0a 20 20 09 20 20 20 20 20  .index;.  .     
41370 20 20 20 74 68 69 73 2e 6c 61 73 74 4d 61 72 6b     this.lastMark
41380 65 72 2e 6c 69 6e 65 4e 75 6d 62 65 72 20 3d 20  er.lineNumber = 
41390 74 68 69 73 2e 73 63 61 6e 6e 65 72 2e 6c 69 6e  this.scanner.lin
413a0 65 4e 75 6d 62 65 72 3b 0a 20 20 09 20 20 20 20  eNumber;.  .    
413b0 20 20 20 20 74 68 69 73 2e 6c 61 73 74 4d 61 72      this.lastMar
413c0 6b 65 72 2e 6c 69 6e 65 53 74 61 72 74 20 3d 20  ker.lineStart = 
413d0 74 68 69 73 2e 73 63 61 6e 6e 65 72 2e 6c 69 6e  this.scanner.lin
413e0 65 53 74 61 72 74 3b 0a 20 20 09 20 20 20 20 20  eStart;.  .     
413f0 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e 66     return this.f
41400 69 6e 61 6c 69 7a 65 28 6e 6f 64 65 2c 20 6e 65  inalize(node, ne
41410 77 20 4a 53 58 4e 6f 64 65 2e 4a 53 58 45 6d 70  w JSXNode.JSXEmp
41420 74 79 45 78 70 72 65 73 73 69 6f 6e 28 29 29 3b  tyExpression());
41430 0a 20 20 09 20 20 20 20 7d 3b 0a 20 20 09 20 20  .  .    };.  .  
41440 20 20 4a 53 58 50 61 72 73 65 72 2e 70 72 6f 74    JSXParser.prot
41450 6f 74 79 70 65 2e 70 61 72 73 65 4a 53 58 45 78  otype.parseJSXEx
41460 70 72 65 73 73 69 6f 6e 43 6f 6e 74 61 69 6e 65  pressionContaine
41470 72 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20  r = function () 
41480 7b 0a 20 20 09 20 20 20 20 20 20 20 20 76 61 72  {.  .        var
41490 20 6e 6f 64 65 20 3d 20 74 68 69 73 2e 63 72 65   node = this.cre
414a0 61 74 65 4a 53 58 4e 6f 64 65 28 29 3b 0a 20 20  ateJSXNode();.  
414b0 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 65 78  .        this.ex
414c0 70 65 63 74 4a 53 58 28 27 7b 27 29 3b 0a 20 20  pectJSX('{');.  
414d0 09 20 20 20 20 20 20 20 20 76 61 72 20 65 78 70  .        var exp
414e0 72 65 73 73 69 6f 6e 3b 0a 20 20 09 20 20 20 20  ression;.  .    
414f0 20 20 20 20 69 66 20 28 74 68 69 73 2e 6d 61 74      if (this.mat
41500 63 68 4a 53 58 28 27 7d 27 29 29 20 7b 0a 20 20  chJSX('}')) {.  
41510 09 20 20 20 20 20 20 20 20 20 20 20 20 65 78 70  .            exp
41520 72 65 73 73 69 6f 6e 20 3d 20 74 68 69 73 2e 70  ression = this.p
41530 61 72 73 65 4a 53 58 45 6d 70 74 79 45 78 70 72  arseJSXEmptyExpr
41540 65 73 73 69 6f 6e 28 29 3b 0a 20 20 09 20 20 20  ession();.  .   
41550 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 65 78           this.ex
41560 70 65 63 74 4a 53 58 28 27 7d 27 29 3b 0a 20 20  pectJSX('}');.  
41570 09 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20  .        }.  .  
41580 20 20 20 20 20 20 65 6c 73 65 20 7b 0a 20 20 09        else {.  .
41590 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
415a0 2e 66 69 6e 69 73 68 4a 53 58 28 29 3b 0a 20 20  .finishJSX();.  
415b0 09 20 20 20 20 20 20 20 20 20 20 20 20 65 78 70  .            exp
415c0 72 65 73 73 69 6f 6e 20 3d 20 74 68 69 73 2e 70  ression = this.p
415d0 61 72 73 65 41 73 73 69 67 6e 6d 65 6e 74 45 78  arseAssignmentEx
415e0 70 72 65 73 73 69 6f 6e 28 29 3b 0a 20 20 09 20  pression();.  . 
415f0 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
41600 72 65 65 6e 74 65 72 4a 53 58 28 29 3b 0a 20 20  reenterJSX();.  
41610 09 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20  .        }.  .  
41620 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69        return thi
41630 73 2e 66 69 6e 61 6c 69 7a 65 28 6e 6f 64 65 2c  s.finalize(node,
41640 20 6e 65 77 20 4a 53 58 4e 6f 64 65 2e 4a 53 58   new JSXNode.JSX
41650 45 78 70 72 65 73 73 69 6f 6e 43 6f 6e 74 61 69  ExpressionContai
41660 6e 65 72 28 65 78 70 72 65 73 73 69 6f 6e 29 29  ner(expression))
41670 3b 0a 20 20 09 20 20 20 20 7d 3b 0a 20 20 09 20  ;.  .    };.  . 
41680 20 20 20 4a 53 58 50 61 72 73 65 72 2e 70 72 6f     JSXParser.pro
41690 74 6f 74 79 70 65 2e 70 61 72 73 65 4a 53 58 43  totype.parseJSXC
416a0 68 69 6c 64 72 65 6e 20 3d 20 66 75 6e 63 74 69  hildren = functi
416b0 6f 6e 20 28 29 20 7b 0a 20 20 09 20 20 20 20 20  on () {.  .     
416c0 20 20 20 76 61 72 20 74 68 69 73 24 31 20 3d 20     var this$1 = 
416d0 74 68 69 73 3b 0a 0a 20 20 09 20 20 20 20 20 20  this;..  .      
416e0 20 20 76 61 72 20 63 68 69 6c 64 72 65 6e 20 3d    var children =
416f0 20 5b 5d 3b 0a 20 20 09 20 20 20 20 20 20 20 20   [];.  .        
41700 77 68 69 6c 65 20 28 21 74 68 69 73 2e 73 63 61  while (!this.sca
41710 6e 6e 65 72 2e 65 6f 66 28 29 29 20 7b 0a 20 20  nner.eof()) {.  
41720 09 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72  .            var
41730 20 6e 6f 64 65 20 3d 20 74 68 69 73 24 31 2e 63   node = this$1.c
41740 72 65 61 74 65 4a 53 58 43 68 69 6c 64 4e 6f 64  reateJSXChildNod
41750 65 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  e();.  .        
41760 20 20 20 20 76 61 72 20 74 6f 6b 65 6e 20 3d 20      var token = 
41770 74 68 69 73 24 31 2e 6e 65 78 74 4a 53 58 54 65  this$1.nextJSXTe
41780 78 74 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20  xt();.  .       
41790 20 20 20 20 20 69 66 20 28 74 6f 6b 65 6e 2e 73       if (token.s
417a0 74 61 72 74 20 3c 20 74 6f 6b 65 6e 2e 65 6e 64  tart < token.end
417b0 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ) {.  .         
417c0 20 20 20 20 20 20 20 76 61 72 20 72 61 77 20 3d         var raw =
417d0 20 74 68 69 73 24 31 2e 67 65 74 54 6f 6b 65 6e   this$1.getToken
417e0 52 61 77 28 74 6f 6b 65 6e 29 3b 0a 20 20 09 20  Raw(token);.  . 
417f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76                 v
41800 61 72 20 63 68 69 6c 64 20 3d 20 74 68 69 73 24  ar child = this$
41810 31 2e 66 69 6e 61 6c 69 7a 65 28 6e 6f 64 65 2c  1.finalize(node,
41820 20 6e 65 77 20 4a 53 58 4e 6f 64 65 2e 4a 53 58   new JSXNode.JSX
41830 54 65 78 74 28 74 6f 6b 65 6e 2e 76 61 6c 75 65  Text(token.value
41840 2c 20 72 61 77 29 29 3b 0a 20 20 09 20 20 20 20  , raw));.  .    
41850 20 20 20 20 20 20 20 20 20 20 20 20 63 68 69 6c              chil
41860 64 72 65 6e 2e 70 75 73 68 28 63 68 69 6c 64 29  dren.push(child)
41870 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
41880 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   }.  .          
41890 20 20 69 66 20 28 74 68 69 73 24 31 2e 73 63 61    if (this$1.sca
418a0 6e 6e 65 72 2e 73 6f 75 72 63 65 5b 74 68 69 73  nner.source[this
418b0 24 31 2e 73 63 61 6e 6e 65 72 2e 69 6e 64 65 78  $1.scanner.index
418c0 5d 20 3d 3d 3d 20 27 7b 27 29 20 7b 0a 20 20 09  ] === '{') {.  .
418d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
418e0 76 61 72 20 63 6f 6e 74 61 69 6e 65 72 20 3d 20  var container = 
418f0 74 68 69 73 24 31 2e 70 61 72 73 65 4a 53 58 45  this$1.parseJSXE
41900 78 70 72 65 73 73 69 6f 6e 43 6f 6e 74 61 69 6e  xpressionContain
41910 65 72 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20  er();.  .       
41920 20 20 20 20 20 20 20 20 20 63 68 69 6c 64 72 65           childre
41930 6e 2e 70 75 73 68 28 63 6f 6e 74 61 69 6e 65 72  n.push(container
41940 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  );.  .          
41950 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20    }.  .         
41960 20 20 20 65 6c 73 65 20 7b 0a 20 20 09 20 20 20     else {.  .   
41970 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65               bre
41980 61 6b 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ak;.  .         
41990 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20     }.  .        
419a0 7d 0a 20 20 09 20 20 20 20 20 20 20 20 72 65 74  }.  .        ret
419b0 75 72 6e 20 63 68 69 6c 64 72 65 6e 3b 0a 20 20  urn children;.  
419c0 09 20 20 20 20 7d 3b 0a 20 20 09 20 20 20 20 4a  .    };.  .    J
419d0 53 58 50 61 72 73 65 72 2e 70 72 6f 74 6f 74 79  SXParser.prototy
419e0 70 65 2e 70 61 72 73 65 43 6f 6d 70 6c 65 78 4a  pe.parseComplexJ
419f0 53 58 45 6c 65 6d 65 6e 74 20 3d 20 66 75 6e 63  SXElement = func
41a00 74 69 6f 6e 20 28 65 6c 29 20 7b 0a 20 20 09 20  tion (el) {.  . 
41a10 20 20 20 20 20 20 20 76 61 72 20 74 68 69 73 24         var this$
41a20 31 20 3d 20 74 68 69 73 3b 0a 0a 20 20 09 20 20  1 = this;..  .  
41a30 20 20 20 20 20 20 76 61 72 20 73 74 61 63 6b 20        var stack 
41a40 3d 20 5b 5d 3b 0a 20 20 09 20 20 20 20 20 20 20  = [];.  .       
41a50 20 77 68 69 6c 65 20 28 21 74 68 69 73 2e 73 63   while (!this.sc
41a60 61 6e 6e 65 72 2e 65 6f 66 28 29 29 20 7b 0a 20  anner.eof()) {. 
41a70 20 09 20 20 20 20 20 20 20 20 20 20 20 20 65 6c   .            el
41a80 2e 63 68 69 6c 64 72 65 6e 20 3d 20 65 6c 2e 63  .children = el.c
41a90 68 69 6c 64 72 65 6e 2e 63 6f 6e 63 61 74 28 74  hildren.concat(t
41aa0 68 69 73 24 31 2e 70 61 72 73 65 4a 53 58 43 68  his$1.parseJSXCh
41ab0 69 6c 64 72 65 6e 28 29 29 3b 0a 20 20 09 20 20  ildren());.  .  
41ac0 20 20 20 20 20 20 20 20 20 20 76 61 72 20 6e 6f            var no
41ad0 64 65 20 3d 20 74 68 69 73 24 31 2e 63 72 65 61  de = this$1.crea
41ae0 74 65 4a 53 58 43 68 69 6c 64 4e 6f 64 65 28 29  teJSXChildNode()
41af0 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
41b00 20 76 61 72 20 65 6c 65 6d 65 6e 74 20 3d 20 74   var element = t
41b10 68 69 73 24 31 2e 70 61 72 73 65 4a 53 58 42 6f  his$1.parseJSXBo
41b20 75 6e 64 61 72 79 45 6c 65 6d 65 6e 74 28 29 3b  undaryElement();
41b30 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
41b40 69 66 20 28 65 6c 65 6d 65 6e 74 2e 74 79 70 65  if (element.type
41b50 20 3d 3d 3d 20 6a 73 78 5f 73 79 6e 74 61 78 5f   === jsx_syntax_
41b60 31 2e 4a 53 58 53 79 6e 74 61 78 2e 4a 53 58 4f  1.JSXSyntax.JSXO
41b70 70 65 6e 69 6e 67 45 6c 65 6d 65 6e 74 29 20 7b  peningElement) {
41b80 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
41b90 20 20 20 20 76 61 72 20 6f 70 65 6e 69 6e 67 20      var opening 
41ba0 3d 20 28 65 6c 65 6d 65 6e 74 29 3b 0a 20 20 09  = (element);.  .
41bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
41bc0 69 66 20 28 6f 70 65 6e 69 6e 67 2e 73 65 6c 66  if (opening.self
41bd0 43 6c 6f 73 69 6e 67 29 20 7b 0a 20 20 09 20 20  Closing) {.  .  
41be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
41bf0 20 20 76 61 72 20 63 68 69 6c 64 20 3d 20 74 68    var child = th
41c00 69 73 24 31 2e 66 69 6e 61 6c 69 7a 65 28 6e 6f  is$1.finalize(no
41c10 64 65 2c 20 6e 65 77 20 4a 53 58 4e 6f 64 65 2e  de, new JSXNode.
41c20 4a 53 58 45 6c 65 6d 65 6e 74 28 6f 70 65 6e 69  JSXElement(openi
41c30 6e 67 2c 20 5b 5d 2c 20 6e 75 6c 6c 29 29 3b 0a  ng, [], null));.
41c40 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
41c50 20 20 20 20 20 20 20 65 6c 2e 63 68 69 6c 64 72         el.childr
41c60 65 6e 2e 70 75 73 68 28 63 68 69 6c 64 29 3b 0a  en.push(child);.
41c70 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
41c80 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20     }.  .        
41c90 20 20 20 20 20 20 20 20 65 6c 73 65 20 7b 0a 20          else {. 
41ca0 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
41cb0 20 20 20 20 20 20 73 74 61 63 6b 2e 70 75 73 68        stack.push
41cc0 28 65 6c 29 3b 0a 20 20 09 20 20 20 20 20 20 20  (el);.  .       
41cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 20               el 
41ce0 3d 20 7b 20 6e 6f 64 65 3a 20 6e 6f 64 65 2c 20  = { node: node, 
41cf0 6f 70 65 6e 69 6e 67 3a 20 6f 70 65 6e 69 6e 67  opening: opening
41d00 2c 20 63 6c 6f 73 69 6e 67 3a 20 6e 75 6c 6c 2c  , closing: null,
41d10 20 63 68 69 6c 64 72 65 6e 3a 20 5b 5d 20 7d 3b   children: [] };
41d20 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
41d30 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20      }.  .       
41d40 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20       }.  .      
41d50 20 20 20 20 20 20 69 66 20 28 65 6c 65 6d 65 6e        if (elemen
41d60 74 2e 74 79 70 65 20 3d 3d 3d 20 6a 73 78 5f 73  t.type === jsx_s
41d70 79 6e 74 61 78 5f 31 2e 4a 53 58 53 79 6e 74 61  yntax_1.JSXSynta
41d80 78 2e 4a 53 58 43 6c 6f 73 69 6e 67 45 6c 65 6d  x.JSXClosingElem
41d90 65 6e 74 29 20 7b 0a 20 20 09 20 20 20 20 20 20  ent) {.  .      
41da0 20 20 20 20 20 20 20 20 20 20 65 6c 2e 63 6c 6f            el.clo
41db0 73 69 6e 67 20 3d 20 28 65 6c 65 6d 65 6e 74 29  sing = (element)
41dc0 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
41dd0 20 20 20 20 20 76 61 72 20 6f 70 65 6e 5f 31 20       var open_1 
41de0 3d 20 67 65 74 51 75 61 6c 69 66 69 65 64 45 6c  = getQualifiedEl
41df0 65 6d 65 6e 74 4e 61 6d 65 28 65 6c 2e 6f 70 65  ementName(el.ope
41e00 6e 69 6e 67 2e 6e 61 6d 65 29 3b 0a 20 20 09 20  ning.name);.  . 
41e10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76                 v
41e20 61 72 20 63 6c 6f 73 65 5f 31 20 3d 20 67 65 74  ar close_1 = get
41e30 51 75 61 6c 69 66 69 65 64 45 6c 65 6d 65 6e 74  QualifiedElement
41e40 4e 61 6d 65 28 65 6c 2e 63 6c 6f 73 69 6e 67 2e  Name(el.closing.
41e50 6e 61 6d 65 29 3b 0a 20 20 09 20 20 20 20 20 20  name);.  .      
41e60 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f 70            if (op
41e70 65 6e 5f 31 20 21 3d 3d 20 63 6c 6f 73 65 5f 31  en_1 !== close_1
41e80 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ) {.  .         
41e90 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 24             this$
41ea0 31 2e 74 6f 6c 65 72 61 74 65 45 72 72 6f 72 28  1.tolerateError(
41eb0 27 45 78 70 65 63 74 65 64 20 63 6f 72 72 65 73  'Expected corres
41ec0 70 6f 6e 64 69 6e 67 20 4a 53 58 20 63 6c 6f 73  ponding JSX clos
41ed0 69 6e 67 20 74 61 67 20 66 6f 72 20 25 30 27 2c  ing tag for %0',
41ee0 20 6f 70 65 6e 5f 31 29 3b 0a 20 20 09 20 20 20   open_1);.  .   
41ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20               }. 
41f00 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
41f10 20 20 69 66 20 28 73 74 61 63 6b 2e 6c 65 6e 67    if (stack.leng
41f20 74 68 20 3e 20 30 29 20 7b 0a 20 20 09 20 20 20  th > 0) {.  .   
41f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
41f40 20 76 61 72 20 63 68 69 6c 64 20 3d 20 74 68 69   var child = thi
41f50 73 24 31 2e 66 69 6e 61 6c 69 7a 65 28 65 6c 2e  s$1.finalize(el.
41f60 6e 6f 64 65 2c 20 6e 65 77 20 4a 53 58 4e 6f 64  node, new JSXNod
41f70 65 2e 4a 53 58 45 6c 65 6d 65 6e 74 28 65 6c 2e  e.JSXElement(el.
41f80 6f 70 65 6e 69 6e 67 2c 20 65 6c 2e 63 68 69 6c  opening, el.chil
41f90 64 72 65 6e 2c 20 65 6c 2e 63 6c 6f 73 69 6e 67  dren, el.closing
41fa0 29 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ));.  .         
41fb0 20 20 20 20 20 20 20 20 20 20 20 65 6c 20 3d 20             el = 
41fc0 73 74 61 63 6b 2e 70 6f 70 28 29 3b 0a 20 20 09  stack.pop();.  .
41fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
41fe0 20 20 20 20 65 6c 2e 63 68 69 6c 64 72 65 6e 2e      el.children.
41ff0 70 75 73 68 28 63 68 69 6c 64 29 3b 0a 20 20 09  push(child);.  .
42000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
42010 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  }.  .           
42020 20 20 20 20 20 65 6c 73 65 20 7b 0a 20 20 09 20       else {.  . 
42030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
42040 20 20 20 62 72 65 61 6b 3b 0a 20 20 09 20 20 20     break;.  .   
42050 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20               }. 
42060 20 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a   .            }.
42070 20 20 09 20 20 20 20 20 20 20 20 7d 0a 20 20 09    .        }.  .
42080 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 65          return e
42090 6c 3b 0a 20 20 09 20 20 20 20 7d 3b 0a 20 20 09  l;.  .    };.  .
420a0 20 20 20 20 4a 53 58 50 61 72 73 65 72 2e 70 72      JSXParser.pr
420b0 6f 74 6f 74 79 70 65 2e 70 61 72 73 65 4a 53 58  ototype.parseJSX
420c0 45 6c 65 6d 65 6e 74 20 3d 20 66 75 6e 63 74 69  Element = functi
420d0 6f 6e 20 28 29 20 7b 0a 20 20 09 20 20 20 20 20  on () {.  .     
420e0 20 20 20 76 61 72 20 6e 6f 64 65 20 3d 20 74 68     var node = th
420f0 69 73 2e 63 72 65 61 74 65 4a 53 58 4e 6f 64 65  is.createJSXNode
42100 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 76  ();.  .        v
42110 61 72 20 6f 70 65 6e 69 6e 67 20 3d 20 74 68 69  ar opening = thi
42120 73 2e 70 61 72 73 65 4a 53 58 4f 70 65 6e 69 6e  s.parseJSXOpenin
42130 67 45 6c 65 6d 65 6e 74 28 29 3b 0a 20 20 09 20  gElement();.  . 
42140 20 20 20 20 20 20 20 76 61 72 20 63 68 69 6c 64         var child
42150 72 65 6e 20 3d 20 5b 5d 3b 0a 20 20 09 20 20 20  ren = [];.  .   
42160 20 20 20 20 20 76 61 72 20 63 6c 6f 73 69 6e 67       var closing
42170 20 3d 20 6e 75 6c 6c 3b 0a 20 20 09 20 20 20 20   = null;.  .    
42180 20 20 20 20 69 66 20 28 21 6f 70 65 6e 69 6e 67      if (!opening
42190 2e 73 65 6c 66 43 6c 6f 73 69 6e 67 29 20 7b 0a  .selfClosing) {.
421a0 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 76    .            v
421b0 61 72 20 65 6c 20 3d 20 74 68 69 73 2e 70 61 72  ar el = this.par
421c0 73 65 43 6f 6d 70 6c 65 78 4a 53 58 45 6c 65 6d  seComplexJSXElem
421d0 65 6e 74 28 7b 20 6e 6f 64 65 3a 20 6e 6f 64 65  ent({ node: node
421e0 2c 20 6f 70 65 6e 69 6e 67 3a 20 6f 70 65 6e 69  , opening: openi
421f0 6e 67 2c 20 63 6c 6f 73 69 6e 67 3a 20 63 6c 6f  ng, closing: clo
42200 73 69 6e 67 2c 20 63 68 69 6c 64 72 65 6e 3a 20  sing, children: 
42210 63 68 69 6c 64 72 65 6e 20 7d 29 3b 0a 20 20 09  children });.  .
42220 20 20 20 20 20 20 20 20 20 20 20 20 63 68 69 6c              chil
42230 64 72 65 6e 20 3d 20 65 6c 2e 63 68 69 6c 64 72  dren = el.childr
42240 65 6e 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  en;.  .         
42250 20 20 20 63 6c 6f 73 69 6e 67 20 3d 20 65 6c 2e     closing = el.
42260 63 6c 6f 73 69 6e 67 3b 0a 20 20 09 20 20 20 20  closing;.  .    
42270 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20      }.  .       
42280 20 72 65 74 75 72 6e 20 74 68 69 73 2e 66 69 6e   return this.fin
42290 61 6c 69 7a 65 28 6e 6f 64 65 2c 20 6e 65 77 20  alize(node, new 
422a0 4a 53 58 4e 6f 64 65 2e 4a 53 58 45 6c 65 6d 65  JSXNode.JSXEleme
422b0 6e 74 28 6f 70 65 6e 69 6e 67 2c 20 63 68 69 6c  nt(opening, chil
422c0 64 72 65 6e 2c 20 63 6c 6f 73 69 6e 67 29 29 3b  dren, closing));
422d0 0a 20 20 09 20 20 20 20 7d 3b 0a 20 20 09 20 20  .  .    };.  .  
422e0 20 20 4a 53 58 50 61 72 73 65 72 2e 70 72 6f 74    JSXParser.prot
422f0 6f 74 79 70 65 2e 70 61 72 73 65 4a 53 58 52 6f  otype.parseJSXRo
42300 6f 74 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29  ot = function ()
42310 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 2f 2f   {.  .        //
42320 20 50 6f 70 20 74 68 65 20 6f 70 65 6e 69 6e 67   Pop the opening
42330 20 27 3c 27 20 61 64 64 65 64 20 66 72 6f 6d 20   '<' added from 
42340 74 68 65 20 6c 6f 6f 6b 61 68 65 61 64 2e 0a 20  the lookahead.. 
42350 20 09 20 20 20 20 20 20 20 20 69 66 20 28 74 68   .        if (th
42360 69 73 2e 63 6f 6e 66 69 67 2e 74 6f 6b 65 6e 73  is.config.tokens
42370 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ) {.  .         
42380 20 20 20 74 68 69 73 2e 74 6f 6b 65 6e 73 2e 70     this.tokens.p
42390 6f 70 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20  op();.  .       
423a0 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 74 68   }.  .        th
423b0 69 73 2e 73 74 61 72 74 4a 53 58 28 29 3b 0a 20  is.startJSX();. 
423c0 20 09 20 20 20 20 20 20 20 20 76 61 72 20 65 6c   .        var el
423d0 65 6d 65 6e 74 20 3d 20 74 68 69 73 2e 70 61 72  ement = this.par
423e0 73 65 4a 53 58 45 6c 65 6d 65 6e 74 28 29 3b 0a  seJSXElement();.
423f0 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e    .        this.
42400 66 69 6e 69 73 68 4a 53 58 28 29 3b 0a 20 20 09  finishJSX();.  .
42410 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 65          return e
42420 6c 65 6d 65 6e 74 3b 0a 20 20 09 20 20 20 20 7d  lement;.  .    }
42430 3b 0a 20 20 09 20 20 20 20 72 65 74 75 72 6e 20  ;.  .    return 
42440 4a 53 58 50 61 72 73 65 72 3b 0a 20 20 09 7d 28  JSXParser;.  .}(
42450 70 61 72 73 65 72 5f 31 2e 50 61 72 73 65 72 29  parser_1.Parser)
42460 29 3b 0a 20 20 09 65 78 70 6f 72 74 73 2e 4a 53  );.  .exports.JS
42470 58 50 61 72 73 65 72 20 3d 20 4a 53 58 50 61 72  XParser = JSXPar
42480 73 65 72 3b 0a 0a 0a 20 20 2f 2a 2a 2a 2f 20 7d  ser;...  /***/ }
42490 2c 0a 20 20 2f 2a 20 31 32 20 2a 2f 0a 20 20 2f  ,.  /* 12 */.  /
424a0 2a 2a 2a 2f 20 66 75 6e 63 74 69 6f 6e 28 6d 6f  ***/ function(mo
424b0 64 75 6c 65 2c 20 65 78 70 6f 72 74 73 29 20 7b  dule, exports) {
424c0 0a 20 20 09 65 78 70 6f 72 74 73 2e 58 48 54 4d  .  .exports.XHTM
424d0 4c 45 6e 74 69 74 69 65 73 20 3d 20 7b 0a 20 20  LEntities = {.  
424e0 09 20 20 20 20 71 75 6f 74 3a 20 27 5c 75 30 30  .    quot: '\u00
424f0 32 32 27 2c 0a 20 20 09 20 20 20 20 61 6d 70 3a  22',.  .    amp:
42500 20 27 5c 75 30 30 32 36 27 2c 0a 20 20 09 20 20   '\u0026',.  .  
42510 20 20 61 70 6f 73 3a 20 27 5c 75 30 30 32 37 27    apos: '\u0027'
42520 2c 0a 20 20 09 20 20 20 20 67 74 3a 20 27 5c 75  ,.  .    gt: '\u
42530 30 30 33 45 27 2c 0a 20 20 09 20 20 20 20 6e 62  003E',.  .    nb
42540 73 70 3a 20 27 5c 75 30 30 41 30 27 2c 0a 20 20  sp: '\u00A0',.  
42550 09 20 20 20 20 69 65 78 63 6c 3a 20 27 5c 75 30  .    iexcl: '\u0
42560 30 41 31 27 2c 0a 20 20 09 20 20 20 20 63 65 6e  0A1',.  .    cen
42570 74 3a 20 27 5c 75 30 30 41 32 27 2c 0a 20 20 09  t: '\u00A2',.  .
42580 20 20 20 20 70 6f 75 6e 64 3a 20 27 5c 75 30 30      pound: '\u00
42590 41 33 27 2c 0a 20 20 09 20 20 20 20 63 75 72 72  A3',.  .    curr
425a0 65 6e 3a 20 27 5c 75 30 30 41 34 27 2c 0a 20 20  en: '\u00A4',.  
425b0 09 20 20 20 20 79 65 6e 3a 20 27 5c 75 30 30 41  .    yen: '\u00A
425c0 35 27 2c 0a 20 20 09 20 20 20 20 62 72 76 62 61  5',.  .    brvba
425d0 72 3a 20 27 5c 75 30 30 41 36 27 2c 0a 20 20 09  r: '\u00A6',.  .
425e0 20 20 20 20 73 65 63 74 3a 20 27 5c 75 30 30 41      sect: '\u00A
425f0 37 27 2c 0a 20 20 09 20 20 20 20 75 6d 6c 3a 20  7',.  .    uml: 
42600 27 5c 75 30 30 41 38 27 2c 0a 20 20 09 20 20 20  '\u00A8',.  .   
42610 20 63 6f 70 79 3a 20 27 5c 75 30 30 41 39 27 2c   copy: '\u00A9',
42620 0a 20 20 09 20 20 20 20 6f 72 64 66 3a 20 27 5c  .  .    ordf: '\
42630 75 30 30 41 41 27 2c 0a 20 20 09 20 20 20 20 6c  u00AA',.  .    l
42640 61 71 75 6f 3a 20 27 5c 75 30 30 41 42 27 2c 0a  aquo: '\u00AB',.
42650 20 20 09 20 20 20 20 6e 6f 74 3a 20 27 5c 75 30    .    not: '\u0
42660 30 41 43 27 2c 0a 20 20 09 20 20 20 20 73 68 79  0AC',.  .    shy
42670 3a 20 27 5c 75 30 30 41 44 27 2c 0a 20 20 09 20  : '\u00AD',.  . 
42680 20 20 20 72 65 67 3a 20 27 5c 75 30 30 41 45 27     reg: '\u00AE'
42690 2c 0a 20 20 09 20 20 20 20 6d 61 63 72 3a 20 27  ,.  .    macr: '
426a0 5c 75 30 30 41 46 27 2c 0a 20 20 09 20 20 20 20  \u00AF',.  .    
426b0 64 65 67 3a 20 27 5c 75 30 30 42 30 27 2c 0a 20  deg: '\u00B0',. 
426c0 20 09 20 20 20 20 70 6c 75 73 6d 6e 3a 20 27 5c   .    plusmn: '\
426d0 75 30 30 42 31 27 2c 0a 20 20 09 20 20 20 20 73  u00B1',.  .    s
426e0 75 70 32 3a 20 27 5c 75 30 30 42 32 27 2c 0a 20  up2: '\u00B2',. 
426f0 20 09 20 20 20 20 73 75 70 33 3a 20 27 5c 75 30   .    sup3: '\u0
42700 30 42 33 27 2c 0a 20 20 09 20 20 20 20 61 63 75  0B3',.  .    acu
42710 74 65 3a 20 27 5c 75 30 30 42 34 27 2c 0a 20 20  te: '\u00B4',.  
42720 09 20 20 20 20 6d 69 63 72 6f 3a 20 27 5c 75 30  .    micro: '\u0
42730 30 42 35 27 2c 0a 20 20 09 20 20 20 20 70 61 72  0B5',.  .    par
42740 61 3a 20 27 5c 75 30 30 42 36 27 2c 0a 20 20 09  a: '\u00B6',.  .
42750 20 20 20 20 6d 69 64 64 6f 74 3a 20 27 5c 75 30      middot: '\u0
42760 30 42 37 27 2c 0a 20 20 09 20 20 20 20 63 65 64  0B7',.  .    ced
42770 69 6c 3a 20 27 5c 75 30 30 42 38 27 2c 0a 20 20  il: '\u00B8',.  
42780 09 20 20 20 20 73 75 70 31 3a 20 27 5c 75 30 30  .    sup1: '\u00
42790 42 39 27 2c 0a 20 20 09 20 20 20 20 6f 72 64 6d  B9',.  .    ordm
427a0 3a 20 27 5c 75 30 30 42 41 27 2c 0a 20 20 09 20  : '\u00BA',.  . 
427b0 20 20 20 72 61 71 75 6f 3a 20 27 5c 75 30 30 42     raquo: '\u00B
427c0 42 27 2c 0a 20 20 09 20 20 20 20 66 72 61 63 31  B',.  .    frac1
427d0 34 3a 20 27 5c 75 30 30 42 43 27 2c 0a 20 20 09  4: '\u00BC',.  .
427e0 20 20 20 20 66 72 61 63 31 32 3a 20 27 5c 75 30      frac12: '\u0
427f0 30 42 44 27 2c 0a 20 20 09 20 20 20 20 66 72 61  0BD',.  .    fra
42800 63 33 34 3a 20 27 5c 75 30 30 42 45 27 2c 0a 20  c34: '\u00BE',. 
42810 20 09 20 20 20 20 69 71 75 65 73 74 3a 20 27 5c   .    iquest: '\
42820 75 30 30 42 46 27 2c 0a 20 20 09 20 20 20 20 41  u00BF',.  .    A
42830 67 72 61 76 65 3a 20 27 5c 75 30 30 43 30 27 2c  grave: '\u00C0',
42840 0a 20 20 09 20 20 20 20 41 61 63 75 74 65 3a 20  .  .    Aacute: 
42850 27 5c 75 30 30 43 31 27 2c 0a 20 20 09 20 20 20  '\u00C1',.  .   
42860 20 41 63 69 72 63 3a 20 27 5c 75 30 30 43 32 27   Acirc: '\u00C2'
42870 2c 0a 20 20 09 20 20 20 20 41 74 69 6c 64 65 3a  ,.  .    Atilde:
42880 20 27 5c 75 30 30 43 33 27 2c 0a 20 20 09 20 20   '\u00C3',.  .  
42890 20 20 41 75 6d 6c 3a 20 27 5c 75 30 30 43 34 27    Auml: '\u00C4'
428a0 2c 0a 20 20 09 20 20 20 20 41 72 69 6e 67 3a 20  ,.  .    Aring: 
428b0 27 5c 75 30 30 43 35 27 2c 0a 20 20 09 20 20 20  '\u00C5',.  .   
428c0 20 41 45 6c 69 67 3a 20 27 5c 75 30 30 43 36 27   AElig: '\u00C6'
428d0 2c 0a 20 20 09 20 20 20 20 43 63 65 64 69 6c 3a  ,.  .    Ccedil:
428e0 20 27 5c 75 30 30 43 37 27 2c 0a 20 20 09 20 20   '\u00C7',.  .  
428f0 20 20 45 67 72 61 76 65 3a 20 27 5c 75 30 30 43    Egrave: '\u00C
42900 38 27 2c 0a 20 20 09 20 20 20 20 45 61 63 75 74  8',.  .    Eacut
42910 65 3a 20 27 5c 75 30 30 43 39 27 2c 0a 20 20 09  e: '\u00C9',.  .
42920 20 20 20 20 45 63 69 72 63 3a 20 27 5c 75 30 30      Ecirc: '\u00
42930 43 41 27 2c 0a 20 20 09 20 20 20 20 45 75 6d 6c  CA',.  .    Euml
42940 3a 20 27 5c 75 30 30 43 42 27 2c 0a 20 20 09 20  : '\u00CB',.  . 
42950 20 20 20 49 67 72 61 76 65 3a 20 27 5c 75 30 30     Igrave: '\u00
42960 43 43 27 2c 0a 20 20 09 20 20 20 20 49 61 63 75  CC',.  .    Iacu
42970 74 65 3a 20 27 5c 75 30 30 43 44 27 2c 0a 20 20  te: '\u00CD',.  
42980 09 20 20 20 20 49 63 69 72 63 3a 20 27 5c 75 30  .    Icirc: '\u0
42990 30 43 45 27 2c 0a 20 20 09 20 20 20 20 49 75 6d  0CE',.  .    Ium
429a0 6c 3a 20 27 5c 75 30 30 43 46 27 2c 0a 20 20 09  l: '\u00CF',.  .
429b0 20 20 20 20 45 54 48 3a 20 27 5c 75 30 30 44 30      ETH: '\u00D0
429c0 27 2c 0a 20 20 09 20 20 20 20 4e 74 69 6c 64 65  ',.  .    Ntilde
429d0 3a 20 27 5c 75 30 30 44 31 27 2c 0a 20 20 09 20  : '\u00D1',.  . 
429e0 20 20 20 4f 67 72 61 76 65 3a 20 27 5c 75 30 30     Ograve: '\u00
429f0 44 32 27 2c 0a 20 20 09 20 20 20 20 4f 61 63 75  D2',.  .    Oacu
42a00 74 65 3a 20 27 5c 75 30 30 44 33 27 2c 0a 20 20  te: '\u00D3',.  
42a10 09 20 20 20 20 4f 63 69 72 63 3a 20 27 5c 75 30  .    Ocirc: '\u0
42a20 30 44 34 27 2c 0a 20 20 09 20 20 20 20 4f 74 69  0D4',.  .    Oti
42a30 6c 64 65 3a 20 27 5c 75 30 30 44 35 27 2c 0a 20  lde: '\u00D5',. 
42a40 20 09 20 20 20 20 4f 75 6d 6c 3a 20 27 5c 75 30   .    Ouml: '\u0
42a50 30 44 36 27 2c 0a 20 20 09 20 20 20 20 74 69 6d  0D6',.  .    tim
42a60 65 73 3a 20 27 5c 75 30 30 44 37 27 2c 0a 20 20  es: '\u00D7',.  
42a70 09 20 20 20 20 4f 73 6c 61 73 68 3a 20 27 5c 75  .    Oslash: '\u
42a80 30 30 44 38 27 2c 0a 20 20 09 20 20 20 20 55 67  00D8',.  .    Ug
42a90 72 61 76 65 3a 20 27 5c 75 30 30 44 39 27 2c 0a  rave: '\u00D9',.
42aa0 20 20 09 20 20 20 20 55 61 63 75 74 65 3a 20 27    .    Uacute: '
42ab0 5c 75 30 30 44 41 27 2c 0a 20 20 09 20 20 20 20  \u00DA',.  .    
42ac0 55 63 69 72 63 3a 20 27 5c 75 30 30 44 42 27 2c  Ucirc: '\u00DB',
42ad0 0a 20 20 09 20 20 20 20 55 75 6d 6c 3a 20 27 5c  .  .    Uuml: '\
42ae0 75 30 30 44 43 27 2c 0a 20 20 09 20 20 20 20 59  u00DC',.  .    Y
42af0 61 63 75 74 65 3a 20 27 5c 75 30 30 44 44 27 2c  acute: '\u00DD',
42b00 0a 20 20 09 20 20 20 20 54 48 4f 52 4e 3a 20 27  .  .    THORN: '
42b10 5c 75 30 30 44 45 27 2c 0a 20 20 09 20 20 20 20  \u00DE',.  .    
42b20 73 7a 6c 69 67 3a 20 27 5c 75 30 30 44 46 27 2c  szlig: '\u00DF',
42b30 0a 20 20 09 20 20 20 20 61 67 72 61 76 65 3a 20  .  .    agrave: 
42b40 27 5c 75 30 30 45 30 27 2c 0a 20 20 09 20 20 20  '\u00E0',.  .   
42b50 20 61 61 63 75 74 65 3a 20 27 5c 75 30 30 45 31   aacute: '\u00E1
42b60 27 2c 0a 20 20 09 20 20 20 20 61 63 69 72 63 3a  ',.  .    acirc:
42b70 20 27 5c 75 30 30 45 32 27 2c 0a 20 20 09 20 20   '\u00E2',.  .  
42b80 20 20 61 74 69 6c 64 65 3a 20 27 5c 75 30 30 45    atilde: '\u00E
42b90 33 27 2c 0a 20 20 09 20 20 20 20 61 75 6d 6c 3a  3',.  .    auml:
42ba0 20 27 5c 75 30 30 45 34 27 2c 0a 20 20 09 20 20   '\u00E4',.  .  
42bb0 20 20 61 72 69 6e 67 3a 20 27 5c 75 30 30 45 35    aring: '\u00E5
42bc0 27 2c 0a 20 20 09 20 20 20 20 61 65 6c 69 67 3a  ',.  .    aelig:
42bd0 20 27 5c 75 30 30 45 36 27 2c 0a 20 20 09 20 20   '\u00E6',.  .  
42be0 20 20 63 63 65 64 69 6c 3a 20 27 5c 75 30 30 45    ccedil: '\u00E
42bf0 37 27 2c 0a 20 20 09 20 20 20 20 65 67 72 61 76  7',.  .    egrav
42c00 65 3a 20 27 5c 75 30 30 45 38 27 2c 0a 20 20 09  e: '\u00E8',.  .
42c10 20 20 20 20 65 61 63 75 74 65 3a 20 27 5c 75 30      eacute: '\u0
42c20 30 45 39 27 2c 0a 20 20 09 20 20 20 20 65 63 69  0E9',.  .    eci
42c30 72 63 3a 20 27 5c 75 30 30 45 41 27 2c 0a 20 20  rc: '\u00EA',.  
42c40 09 20 20 20 20 65 75 6d 6c 3a 20 27 5c 75 30 30  .    euml: '\u00
42c50 45 42 27 2c 0a 20 20 09 20 20 20 20 69 67 72 61  EB',.  .    igra
42c60 76 65 3a 20 27 5c 75 30 30 45 43 27 2c 0a 20 20  ve: '\u00EC',.  
42c70 09 20 20 20 20 69 61 63 75 74 65 3a 20 27 5c 75  .    iacute: '\u
42c80 30 30 45 44 27 2c 0a 20 20 09 20 20 20 20 69 63  00ED',.  .    ic
42c90 69 72 63 3a 20 27 5c 75 30 30 45 45 27 2c 0a 20  irc: '\u00EE',. 
42ca0 20 09 20 20 20 20 69 75 6d 6c 3a 20 27 5c 75 30   .    iuml: '\u0
42cb0 30 45 46 27 2c 0a 20 20 09 20 20 20 20 65 74 68  0EF',.  .    eth
42cc0 3a 20 27 5c 75 30 30 46 30 27 2c 0a 20 20 09 20  : '\u00F0',.  . 
42cd0 20 20 20 6e 74 69 6c 64 65 3a 20 27 5c 75 30 30     ntilde: '\u00
42ce0 46 31 27 2c 0a 20 20 09 20 20 20 20 6f 67 72 61  F1',.  .    ogra
42cf0 76 65 3a 20 27 5c 75 30 30 46 32 27 2c 0a 20 20  ve: '\u00F2',.  
42d00 09 20 20 20 20 6f 61 63 75 74 65 3a 20 27 5c 75  .    oacute: '\u
42d10 30 30 46 33 27 2c 0a 20 20 09 20 20 20 20 6f 63  00F3',.  .    oc
42d20 69 72 63 3a 20 27 5c 75 30 30 46 34 27 2c 0a 20  irc: '\u00F4',. 
42d30 20 09 20 20 20 20 6f 74 69 6c 64 65 3a 20 27 5c   .    otilde: '\
42d40 75 30 30 46 35 27 2c 0a 20 20 09 20 20 20 20 6f  u00F5',.  .    o
42d50 75 6d 6c 3a 20 27 5c 75 30 30 46 36 27 2c 0a 20  uml: '\u00F6',. 
42d60 20 09 20 20 20 20 64 69 76 69 64 65 3a 20 27 5c   .    divide: '\
42d70 75 30 30 46 37 27 2c 0a 20 20 09 20 20 20 20 6f  u00F7',.  .    o
42d80 73 6c 61 73 68 3a 20 27 5c 75 30 30 46 38 27 2c  slash: '\u00F8',
42d90 0a 20 20 09 20 20 20 20 75 67 72 61 76 65 3a 20  .  .    ugrave: 
42da0 27 5c 75 30 30 46 39 27 2c 0a 20 20 09 20 20 20  '\u00F9',.  .   
42db0 20 75 61 63 75 74 65 3a 20 27 5c 75 30 30 46 41   uacute: '\u00FA
42dc0 27 2c 0a 20 20 09 20 20 20 20 75 63 69 72 63 3a  ',.  .    ucirc:
42dd0 20 27 5c 75 30 30 46 42 27 2c 0a 20 20 09 20 20   '\u00FB',.  .  
42de0 20 20 75 75 6d 6c 3a 20 27 5c 75 30 30 46 43 27    uuml: '\u00FC'
42df0 2c 0a 20 20 09 20 20 20 20 79 61 63 75 74 65 3a  ,.  .    yacute:
42e00 20 27 5c 75 30 30 46 44 27 2c 0a 20 20 09 20 20   '\u00FD',.  .  
42e10 20 20 74 68 6f 72 6e 3a 20 27 5c 75 30 30 46 45    thorn: '\u00FE
42e20 27 2c 0a 20 20 09 20 20 20 20 79 75 6d 6c 3a 20  ',.  .    yuml: 
42e30 27 5c 75 30 30 46 46 27 2c 0a 20 20 09 20 20 20  '\u00FF',.  .   
42e40 20 4f 45 6c 69 67 3a 20 27 5c 75 30 31 35 32 27   OElig: '\u0152'
42e50 2c 0a 20 20 09 20 20 20 20 6f 65 6c 69 67 3a 20  ,.  .    oelig: 
42e60 27 5c 75 30 31 35 33 27 2c 0a 20 20 09 20 20 20  '\u0153',.  .   
42e70 20 53 63 61 72 6f 6e 3a 20 27 5c 75 30 31 36 30   Scaron: '\u0160
42e80 27 2c 0a 20 20 09 20 20 20 20 73 63 61 72 6f 6e  ',.  .    scaron
42e90 3a 20 27 5c 75 30 31 36 31 27 2c 0a 20 20 09 20  : '\u0161',.  . 
42ea0 20 20 20 59 75 6d 6c 3a 20 27 5c 75 30 31 37 38     Yuml: '\u0178
42eb0 27 2c 0a 20 20 09 20 20 20 20 66 6e 6f 66 3a 20  ',.  .    fnof: 
42ec0 27 5c 75 30 31 39 32 27 2c 0a 20 20 09 20 20 20  '\u0192',.  .   
42ed0 20 63 69 72 63 3a 20 27 5c 75 30 32 43 36 27 2c   circ: '\u02C6',
42ee0 0a 20 20 09 20 20 20 20 74 69 6c 64 65 3a 20 27  .  .    tilde: '
42ef0 5c 75 30 32 44 43 27 2c 0a 20 20 09 20 20 20 20  \u02DC',.  .    
42f00 41 6c 70 68 61 3a 20 27 5c 75 30 33 39 31 27 2c  Alpha: '\u0391',
42f10 0a 20 20 09 20 20 20 20 42 65 74 61 3a 20 27 5c  .  .    Beta: '\
42f20 75 30 33 39 32 27 2c 0a 20 20 09 20 20 20 20 47  u0392',.  .    G
42f30 61 6d 6d 61 3a 20 27 5c 75 30 33 39 33 27 2c 0a  amma: '\u0393',.
42f40 20 20 09 20 20 20 20 44 65 6c 74 61 3a 20 27 5c    .    Delta: '\
42f50 75 30 33 39 34 27 2c 0a 20 20 09 20 20 20 20 45  u0394',.  .    E
42f60 70 73 69 6c 6f 6e 3a 20 27 5c 75 30 33 39 35 27  psilon: '\u0395'
42f70 2c 0a 20 20 09 20 20 20 20 5a 65 74 61 3a 20 27  ,.  .    Zeta: '
42f80 5c 75 30 33 39 36 27 2c 0a 20 20 09 20 20 20 20  \u0396',.  .    
42f90 45 74 61 3a 20 27 5c 75 30 33 39 37 27 2c 0a 20  Eta: '\u0397',. 
42fa0 20 09 20 20 20 20 54 68 65 74 61 3a 20 27 5c 75   .    Theta: '\u
42fb0 30 33 39 38 27 2c 0a 20 20 09 20 20 20 20 49 6f  0398',.  .    Io
42fc0 74 61 3a 20 27 5c 75 30 33 39 39 27 2c 0a 20 20  ta: '\u0399',.  
42fd0 09 20 20 20 20 4b 61 70 70 61 3a 20 27 5c 75 30  .    Kappa: '\u0
42fe0 33 39 41 27 2c 0a 20 20 09 20 20 20 20 4c 61 6d  39A',.  .    Lam
42ff0 62 64 61 3a 20 27 5c 75 30 33 39 42 27 2c 0a 20  bda: '\u039B',. 
43000 20 09 20 20 20 20 4d 75 3a 20 27 5c 75 30 33 39   .    Mu: '\u039
43010 43 27 2c 0a 20 20 09 20 20 20 20 4e 75 3a 20 27  C',.  .    Nu: '
43020 5c 75 30 33 39 44 27 2c 0a 20 20 09 20 20 20 20  \u039D',.  .    
43030 58 69 3a 20 27 5c 75 30 33 39 45 27 2c 0a 20 20  Xi: '\u039E',.  
43040 09 20 20 20 20 4f 6d 69 63 72 6f 6e 3a 20 27 5c  .    Omicron: '\
43050 75 30 33 39 46 27 2c 0a 20 20 09 20 20 20 20 50  u039F',.  .    P
43060 69 3a 20 27 5c 75 30 33 41 30 27 2c 0a 20 20 09  i: '\u03A0',.  .
43070 20 20 20 20 52 68 6f 3a 20 27 5c 75 30 33 41 31      Rho: '\u03A1
43080 27 2c 0a 20 20 09 20 20 20 20 53 69 67 6d 61 3a  ',.  .    Sigma:
43090 20 27 5c 75 30 33 41 33 27 2c 0a 20 20 09 20 20   '\u03A3',.  .  
430a0 20 20 54 61 75 3a 20 27 5c 75 30 33 41 34 27 2c    Tau: '\u03A4',
430b0 0a 20 20 09 20 20 20 20 55 70 73 69 6c 6f 6e 3a  .  .    Upsilon:
430c0 20 27 5c 75 30 33 41 35 27 2c 0a 20 20 09 20 20   '\u03A5',.  .  
430d0 20 20 50 68 69 3a 20 27 5c 75 30 33 41 36 27 2c    Phi: '\u03A6',
430e0 0a 20 20 09 20 20 20 20 43 68 69 3a 20 27 5c 75  .  .    Chi: '\u
430f0 30 33 41 37 27 2c 0a 20 20 09 20 20 20 20 50 73  03A7',.  .    Ps
43100 69 3a 20 27 5c 75 30 33 41 38 27 2c 0a 20 20 09  i: '\u03A8',.  .
43110 20 20 20 20 4f 6d 65 67 61 3a 20 27 5c 75 30 33      Omega: '\u03
43120 41 39 27 2c 0a 20 20 09 20 20 20 20 61 6c 70 68  A9',.  .    alph
43130 61 3a 20 27 5c 75 30 33 42 31 27 2c 0a 20 20 09  a: '\u03B1',.  .
43140 20 20 20 20 62 65 74 61 3a 20 27 5c 75 30 33 42      beta: '\u03B
43150 32 27 2c 0a 20 20 09 20 20 20 20 67 61 6d 6d 61  2',.  .    gamma
43160 3a 20 27 5c 75 30 33 42 33 27 2c 0a 20 20 09 20  : '\u03B3',.  . 
43170 20 20 20 64 65 6c 74 61 3a 20 27 5c 75 30 33 42     delta: '\u03B
43180 34 27 2c 0a 20 20 09 20 20 20 20 65 70 73 69 6c  4',.  .    epsil
43190 6f 6e 3a 20 27 5c 75 30 33 42 35 27 2c 0a 20 20  on: '\u03B5',.  
431a0 09 20 20 20 20 7a 65 74 61 3a 20 27 5c 75 30 33  .    zeta: '\u03
431b0 42 36 27 2c 0a 20 20 09 20 20 20 20 65 74 61 3a  B6',.  .    eta:
431c0 20 27 5c 75 30 33 42 37 27 2c 0a 20 20 09 20 20   '\u03B7',.  .  
431d0 20 20 74 68 65 74 61 3a 20 27 5c 75 30 33 42 38    theta: '\u03B8
431e0 27 2c 0a 20 20 09 20 20 20 20 69 6f 74 61 3a 20  ',.  .    iota: 
431f0 27 5c 75 30 33 42 39 27 2c 0a 20 20 09 20 20 20  '\u03B9',.  .   
43200 20 6b 61 70 70 61 3a 20 27 5c 75 30 33 42 41 27   kappa: '\u03BA'
43210 2c 0a 20 20 09 20 20 20 20 6c 61 6d 62 64 61 3a  ,.  .    lambda:
43220 20 27 5c 75 30 33 42 42 27 2c 0a 20 20 09 20 20   '\u03BB',.  .  
43230 20 20 6d 75 3a 20 27 5c 75 30 33 42 43 27 2c 0a    mu: '\u03BC',.
43240 20 20 09 20 20 20 20 6e 75 3a 20 27 5c 75 30 33    .    nu: '\u03
43250 42 44 27 2c 0a 20 20 09 20 20 20 20 78 69 3a 20  BD',.  .    xi: 
43260 27 5c 75 30 33 42 45 27 2c 0a 20 20 09 20 20 20  '\u03BE',.  .   
43270 20 6f 6d 69 63 72 6f 6e 3a 20 27 5c 75 30 33 42   omicron: '\u03B
43280 46 27 2c 0a 20 20 09 20 20 20 20 70 69 3a 20 27  F',.  .    pi: '
43290 5c 75 30 33 43 30 27 2c 0a 20 20 09 20 20 20 20  \u03C0',.  .    
432a0 72 68 6f 3a 20 27 5c 75 30 33 43 31 27 2c 0a 20  rho: '\u03C1',. 
432b0 20 09 20 20 20 20 73 69 67 6d 61 66 3a 20 27 5c   .    sigmaf: '\
432c0 75 30 33 43 32 27 2c 0a 20 20 09 20 20 20 20 73  u03C2',.  .    s
432d0 69 67 6d 61 3a 20 27 5c 75 30 33 43 33 27 2c 0a  igma: '\u03C3',.
432e0 20 20 09 20 20 20 20 74 61 75 3a 20 27 5c 75 30    .    tau: '\u0
432f0 33 43 34 27 2c 0a 20 20 09 20 20 20 20 75 70 73  3C4',.  .    ups
43300 69 6c 6f 6e 3a 20 27 5c 75 30 33 43 35 27 2c 0a  ilon: '\u03C5',.
43310 20 20 09 20 20 20 20 70 68 69 3a 20 27 5c 75 30    .    phi: '\u0
43320 33 43 36 27 2c 0a 20 20 09 20 20 20 20 63 68 69  3C6',.  .    chi
43330 3a 20 27 5c 75 30 33 43 37 27 2c 0a 20 20 09 20  : '\u03C7',.  . 
43340 20 20 20 70 73 69 3a 20 27 5c 75 30 33 43 38 27     psi: '\u03C8'
43350 2c 0a 20 20 09 20 20 20 20 6f 6d 65 67 61 3a 20  ,.  .    omega: 
43360 27 5c 75 30 33 43 39 27 2c 0a 20 20 09 20 20 20  '\u03C9',.  .   
43370 20 74 68 65 74 61 73 79 6d 3a 20 27 5c 75 30 33   thetasym: '\u03
43380 44 31 27 2c 0a 20 20 09 20 20 20 20 75 70 73 69  D1',.  .    upsi
43390 68 3a 20 27 5c 75 30 33 44 32 27 2c 0a 20 20 09  h: '\u03D2',.  .
433a0 20 20 20 20 70 69 76 3a 20 27 5c 75 30 33 44 36      piv: '\u03D6
433b0 27 2c 0a 20 20 09 20 20 20 20 65 6e 73 70 3a 20  ',.  .    ensp: 
433c0 27 5c 75 32 30 30 32 27 2c 0a 20 20 09 20 20 20  '\u2002',.  .   
433d0 20 65 6d 73 70 3a 20 27 5c 75 32 30 30 33 27 2c   emsp: '\u2003',
433e0 0a 20 20 09 20 20 20 20 74 68 69 6e 73 70 3a 20  .  .    thinsp: 
433f0 27 5c 75 32 30 30 39 27 2c 0a 20 20 09 20 20 20  '\u2009',.  .   
43400 20 7a 77 6e 6a 3a 20 27 5c 75 32 30 30 43 27 2c   zwnj: '\u200C',
43410 0a 20 20 09 20 20 20 20 7a 77 6a 3a 20 27 5c 75  .  .    zwj: '\u
43420 32 30 30 44 27 2c 0a 20 20 09 20 20 20 20 6c 72  200D',.  .    lr
43430 6d 3a 20 27 5c 75 32 30 30 45 27 2c 0a 20 20 09  m: '\u200E',.  .
43440 20 20 20 20 72 6c 6d 3a 20 27 5c 75 32 30 30 46      rlm: '\u200F
43450 27 2c 0a 20 20 09 20 20 20 20 6e 64 61 73 68 3a  ',.  .    ndash:
43460 20 27 5c 75 32 30 31 33 27 2c 0a 20 20 09 20 20   '\u2013',.  .  
43470 20 20 6d 64 61 73 68 3a 20 27 5c 75 32 30 31 34    mdash: '\u2014
43480 27 2c 0a 20 20 09 20 20 20 20 6c 73 71 75 6f 3a  ',.  .    lsquo:
43490 20 27 5c 75 32 30 31 38 27 2c 0a 20 20 09 20 20   '\u2018',.  .  
434a0 20 20 72 73 71 75 6f 3a 20 27 5c 75 32 30 31 39    rsquo: '\u2019
434b0 27 2c 0a 20 20 09 20 20 20 20 73 62 71 75 6f 3a  ',.  .    sbquo:
434c0 20 27 5c 75 32 30 31 41 27 2c 0a 20 20 09 20 20   '\u201A',.  .  
434d0 20 20 6c 64 71 75 6f 3a 20 27 5c 75 32 30 31 43    ldquo: '\u201C
434e0 27 2c 0a 20 20 09 20 20 20 20 72 64 71 75 6f 3a  ',.  .    rdquo:
434f0 20 27 5c 75 32 30 31 44 27 2c 0a 20 20 09 20 20   '\u201D',.  .  
43500 20 20 62 64 71 75 6f 3a 20 27 5c 75 32 30 31 45    bdquo: '\u201E
43510 27 2c 0a 20 20 09 20 20 20 20 64 61 67 67 65 72  ',.  .    dagger
43520 3a 20 27 5c 75 32 30 32 30 27 2c 0a 20 20 09 20  : '\u2020',.  . 
43530 20 20 20 44 61 67 67 65 72 3a 20 27 5c 75 32 30     Dagger: '\u20
43540 32 31 27 2c 0a 20 20 09 20 20 20 20 62 75 6c 6c  21',.  .    bull
43550 3a 20 27 5c 75 32 30 32 32 27 2c 0a 20 20 09 20  : '\u2022',.  . 
43560 20 20 20 68 65 6c 6c 69 70 3a 20 27 5c 75 32 30     hellip: '\u20
43570 32 36 27 2c 0a 20 20 09 20 20 20 20 70 65 72 6d  26',.  .    perm
43580 69 6c 3a 20 27 5c 75 32 30 33 30 27 2c 0a 20 20  il: '\u2030',.  
43590 09 20 20 20 20 70 72 69 6d 65 3a 20 27 5c 75 32  .    prime: '\u2
435a0 30 33 32 27 2c 0a 20 20 09 20 20 20 20 50 72 69  032',.  .    Pri
435b0 6d 65 3a 20 27 5c 75 32 30 33 33 27 2c 0a 20 20  me: '\u2033',.  
435c0 09 20 20 20 20 6c 73 61 71 75 6f 3a 20 27 5c 75  .    lsaquo: '\u
435d0 32 30 33 39 27 2c 0a 20 20 09 20 20 20 20 72 73  2039',.  .    rs
435e0 61 71 75 6f 3a 20 27 5c 75 32 30 33 41 27 2c 0a  aquo: '\u203A',.
435f0 20 20 09 20 20 20 20 6f 6c 69 6e 65 3a 20 27 5c    .    oline: '\
43600 75 32 30 33 45 27 2c 0a 20 20 09 20 20 20 20 66  u203E',.  .    f
43610 72 61 73 6c 3a 20 27 5c 75 32 30 34 34 27 2c 0a  rasl: '\u2044',.
43620 20 20 09 20 20 20 20 65 75 72 6f 3a 20 27 5c 75    .    euro: '\u
43630 32 30 41 43 27 2c 0a 20 20 09 20 20 20 20 69 6d  20AC',.  .    im
43640 61 67 65 3a 20 27 5c 75 32 31 31 31 27 2c 0a 20  age: '\u2111',. 
43650 20 09 20 20 20 20 77 65 69 65 72 70 3a 20 27 5c   .    weierp: '\
43660 75 32 31 31 38 27 2c 0a 20 20 09 20 20 20 20 72  u2118',.  .    r
43670 65 61 6c 3a 20 27 5c 75 32 31 31 43 27 2c 0a 20  eal: '\u211C',. 
43680 20 09 20 20 20 20 74 72 61 64 65 3a 20 27 5c 75   .    trade: '\u
43690 32 31 32 32 27 2c 0a 20 20 09 20 20 20 20 61 6c  2122',.  .    al
436a0 65 66 73 79 6d 3a 20 27 5c 75 32 31 33 35 27 2c  efsym: '\u2135',
436b0 0a 20 20 09 20 20 20 20 6c 61 72 72 3a 20 27 5c  .  .    larr: '\
436c0 75 32 31 39 30 27 2c 0a 20 20 09 20 20 20 20 75  u2190',.  .    u
436d0 61 72 72 3a 20 27 5c 75 32 31 39 31 27 2c 0a 20  arr: '\u2191',. 
436e0 20 09 20 20 20 20 72 61 72 72 3a 20 27 5c 75 32   .    rarr: '\u2
436f0 31 39 32 27 2c 0a 20 20 09 20 20 20 20 64 61 72  192',.  .    dar
43700 72 3a 20 27 5c 75 32 31 39 33 27 2c 0a 20 20 09  r: '\u2193',.  .
43710 20 20 20 20 68 61 72 72 3a 20 27 5c 75 32 31 39      harr: '\u219
43720 34 27 2c 0a 20 20 09 20 20 20 20 63 72 61 72 72  4',.  .    crarr
43730 3a 20 27 5c 75 32 31 42 35 27 2c 0a 20 20 09 20  : '\u21B5',.  . 
43740 20 20 20 6c 41 72 72 3a 20 27 5c 75 32 31 44 30     lArr: '\u21D0
43750 27 2c 0a 20 20 09 20 20 20 20 75 41 72 72 3a 20  ',.  .    uArr: 
43760 27 5c 75 32 31 44 31 27 2c 0a 20 20 09 20 20 20  '\u21D1',.  .   
43770 20 72 41 72 72 3a 20 27 5c 75 32 31 44 32 27 2c   rArr: '\u21D2',
43780 0a 20 20 09 20 20 20 20 64 41 72 72 3a 20 27 5c  .  .    dArr: '\
43790 75 32 31 44 33 27 2c 0a 20 20 09 20 20 20 20 68  u21D3',.  .    h
437a0 41 72 72 3a 20 27 5c 75 32 31 44 34 27 2c 0a 20  Arr: '\u21D4',. 
437b0 20 09 20 20 20 20 66 6f 72 61 6c 6c 3a 20 27 5c   .    forall: '\
437c0 75 32 32 30 30 27 2c 0a 20 20 09 20 20 20 20 70  u2200',.  .    p
437d0 61 72 74 3a 20 27 5c 75 32 32 30 32 27 2c 0a 20  art: '\u2202',. 
437e0 20 09 20 20 20 20 65 78 69 73 74 3a 20 27 5c 75   .    exist: '\u
437f0 32 32 30 33 27 2c 0a 20 20 09 20 20 20 20 65 6d  2203',.  .    em
43800 70 74 79 3a 20 27 5c 75 32 32 30 35 27 2c 0a 20  pty: '\u2205',. 
43810 20 09 20 20 20 20 6e 61 62 6c 61 3a 20 27 5c 75   .    nabla: '\u
43820 32 32 30 37 27 2c 0a 20 20 09 20 20 20 20 69 73  2207',.  .    is
43830 69 6e 3a 20 27 5c 75 32 32 30 38 27 2c 0a 20 20  in: '\u2208',.  
43840 09 20 20 20 20 6e 6f 74 69 6e 3a 20 27 5c 75 32  .    notin: '\u2
43850 32 30 39 27 2c 0a 20 20 09 20 20 20 20 6e 69 3a  209',.  .    ni:
43860 20 27 5c 75 32 32 30 42 27 2c 0a 20 20 09 20 20   '\u220B',.  .  
43870 20 20 70 72 6f 64 3a 20 27 5c 75 32 32 30 46 27    prod: '\u220F'
43880 2c 0a 20 20 09 20 20 20 20 73 75 6d 3a 20 27 5c  ,.  .    sum: '\
43890 75 32 32 31 31 27 2c 0a 20 20 09 20 20 20 20 6d  u2211',.  .    m
438a0 69 6e 75 73 3a 20 27 5c 75 32 32 31 32 27 2c 0a  inus: '\u2212',.
438b0 20 20 09 20 20 20 20 6c 6f 77 61 73 74 3a 20 27    .    lowast: '
438c0 5c 75 32 32 31 37 27 2c 0a 20 20 09 20 20 20 20  \u2217',.  .    
438d0 72 61 64 69 63 3a 20 27 5c 75 32 32 31 41 27 2c  radic: '\u221A',
438e0 0a 20 20 09 20 20 20 20 70 72 6f 70 3a 20 27 5c  .  .    prop: '\
438f0 75 32 32 31 44 27 2c 0a 20 20 09 20 20 20 20 69  u221D',.  .    i
43900 6e 66 69 6e 3a 20 27 5c 75 32 32 31 45 27 2c 0a  nfin: '\u221E',.
43910 20 20 09 20 20 20 20 61 6e 67 3a 20 27 5c 75 32    .    ang: '\u2
43920 32 32 30 27 2c 0a 20 20 09 20 20 20 20 61 6e 64  220',.  .    and
43930 3a 20 27 5c 75 32 32 32 37 27 2c 0a 20 20 09 20  : '\u2227',.  . 
43940 20 20 20 6f 72 3a 20 27 5c 75 32 32 32 38 27 2c     or: '\u2228',
43950 0a 20 20 09 20 20 20 20 63 61 70 3a 20 27 5c 75  .  .    cap: '\u
43960 32 32 32 39 27 2c 0a 20 20 09 20 20 20 20 63 75  2229',.  .    cu
43970 70 3a 20 27 5c 75 32 32 32 41 27 2c 0a 20 20 09  p: '\u222A',.  .
43980 20 20 20 20 69 6e 74 3a 20 27 5c 75 32 32 32 42      int: '\u222B
43990 27 2c 0a 20 20 09 20 20 20 20 74 68 65 72 65 34  ',.  .    there4
439a0 3a 20 27 5c 75 32 32 33 34 27 2c 0a 20 20 09 20  : '\u2234',.  . 
439b0 20 20 20 73 69 6d 3a 20 27 5c 75 32 32 33 43 27     sim: '\u223C'
439c0 2c 0a 20 20 09 20 20 20 20 63 6f 6e 67 3a 20 27  ,.  .    cong: '
439d0 5c 75 32 32 34 35 27 2c 0a 20 20 09 20 20 20 20  \u2245',.  .    
439e0 61 73 79 6d 70 3a 20 27 5c 75 32 32 34 38 27 2c  asymp: '\u2248',
439f0 0a 20 20 09 20 20 20 20 6e 65 3a 20 27 5c 75 32  .  .    ne: '\u2
43a00 32 36 30 27 2c 0a 20 20 09 20 20 20 20 65 71 75  260',.  .    equ
43a10 69 76 3a 20 27 5c 75 32 32 36 31 27 2c 0a 20 20  iv: '\u2261',.  
43a20 09 20 20 20 20 6c 65 3a 20 27 5c 75 32 32 36 34  .    le: '\u2264
43a30 27 2c 0a 20 20 09 20 20 20 20 67 65 3a 20 27 5c  ',.  .    ge: '\
43a40 75 32 32 36 35 27 2c 0a 20 20 09 20 20 20 20 73  u2265',.  .    s
43a50 75 62 3a 20 27 5c 75 32 32 38 32 27 2c 0a 20 20  ub: '\u2282',.  
43a60 09 20 20 20 20 73 75 70 3a 20 27 5c 75 32 32 38  .    sup: '\u228
43a70 33 27 2c 0a 20 20 09 20 20 20 20 6e 73 75 62 3a  3',.  .    nsub:
43a80 20 27 5c 75 32 32 38 34 27 2c 0a 20 20 09 20 20   '\u2284',.  .  
43a90 20 20 73 75 62 65 3a 20 27 5c 75 32 32 38 36 27    sube: '\u2286'
43aa0 2c 0a 20 20 09 20 20 20 20 73 75 70 65 3a 20 27  ,.  .    supe: '
43ab0 5c 75 32 32 38 37 27 2c 0a 20 20 09 20 20 20 20  \u2287',.  .    
43ac0 6f 70 6c 75 73 3a 20 27 5c 75 32 32 39 35 27 2c  oplus: '\u2295',
43ad0 0a 20 20 09 20 20 20 20 6f 74 69 6d 65 73 3a 20  .  .    otimes: 
43ae0 27 5c 75 32 32 39 37 27 2c 0a 20 20 09 20 20 20  '\u2297',.  .   
43af0 20 70 65 72 70 3a 20 27 5c 75 32 32 41 35 27 2c   perp: '\u22A5',
43b00 0a 20 20 09 20 20 20 20 73 64 6f 74 3a 20 27 5c  .  .    sdot: '\
43b10 75 32 32 43 35 27 2c 0a 20 20 09 20 20 20 20 6c  u22C5',.  .    l
43b20 63 65 69 6c 3a 20 27 5c 75 32 33 30 38 27 2c 0a  ceil: '\u2308',.
43b30 20 20 09 20 20 20 20 72 63 65 69 6c 3a 20 27 5c    .    rceil: '\
43b40 75 32 33 30 39 27 2c 0a 20 20 09 20 20 20 20 6c  u2309',.  .    l
43b50 66 6c 6f 6f 72 3a 20 27 5c 75 32 33 30 41 27 2c  floor: '\u230A',
43b60 0a 20 20 09 20 20 20 20 72 66 6c 6f 6f 72 3a 20  .  .    rfloor: 
43b70 27 5c 75 32 33 30 42 27 2c 0a 20 20 09 20 20 20  '\u230B',.  .   
43b80 20 6c 6f 7a 3a 20 27 5c 75 32 35 43 41 27 2c 0a   loz: '\u25CA',.
43b90 20 20 09 20 20 20 20 73 70 61 64 65 73 3a 20 27    .    spades: '
43ba0 5c 75 32 36 36 30 27 2c 0a 20 20 09 20 20 20 20  \u2660',.  .    
43bb0 63 6c 75 62 73 3a 20 27 5c 75 32 36 36 33 27 2c  clubs: '\u2663',
43bc0 0a 20 20 09 20 20 20 20 68 65 61 72 74 73 3a 20  .  .    hearts: 
43bd0 27 5c 75 32 36 36 35 27 2c 0a 20 20 09 20 20 20  '\u2665',.  .   
43be0 20 64 69 61 6d 73 3a 20 27 5c 75 32 36 36 36 27   diams: '\u2666'
43bf0 2c 0a 20 20 09 20 20 20 20 6c 61 6e 67 3a 20 27  ,.  .    lang: '
43c00 5c 75 32 37 45 38 27 2c 0a 20 20 09 20 20 20 20  \u27E8',.  .    
43c10 72 61 6e 67 3a 20 27 5c 75 32 37 45 39 27 0a 20  rang: '\u27E9'. 
43c20 20 09 7d 3b 0a 0a 0a 20 20 2f 2a 2a 2a 2f 20 7d   .};...  /***/ }
43c30 2c 0a 20 20 2f 2a 20 31 33 20 2a 2f 0a 20 20 2f  ,.  /* 13 */.  /
43c40 2a 2a 2a 2f 20 66 75 6e 63 74 69 6f 6e 28 6d 6f  ***/ function(mo
43c50 64 75 6c 65 2c 20 65 78 70 6f 72 74 73 29 20 7b  dule, exports) {
43c60 0a 20 20 09 65 78 70 6f 72 74 73 2e 4a 53 58 53  .  .exports.JSXS
43c70 79 6e 74 61 78 20 3d 20 7b 0a 20 20 09 20 20 20  yntax = {.  .   
43c80 20 4a 53 58 41 74 74 72 69 62 75 74 65 3a 20 27   JSXAttribute: '
43c90 4a 53 58 41 74 74 72 69 62 75 74 65 27 2c 0a 20  JSXAttribute',. 
43ca0 20 09 20 20 20 20 4a 53 58 43 6c 6f 73 69 6e 67   .    JSXClosing
43cb0 45 6c 65 6d 65 6e 74 3a 20 27 4a 53 58 43 6c 6f  Element: 'JSXClo
43cc0 73 69 6e 67 45 6c 65 6d 65 6e 74 27 2c 0a 20 20  singElement',.  
43cd0 09 20 20 20 20 4a 53 58 45 6c 65 6d 65 6e 74 3a  .    JSXElement:
43ce0 20 27 4a 53 58 45 6c 65 6d 65 6e 74 27 2c 0a 20   'JSXElement',. 
43cf0 20 09 20 20 20 20 4a 53 58 45 6d 70 74 79 45 78   .    JSXEmptyEx
43d00 70 72 65 73 73 69 6f 6e 3a 20 27 4a 53 58 45 6d  pression: 'JSXEm
43d10 70 74 79 45 78 70 72 65 73 73 69 6f 6e 27 2c 0a  ptyExpression',.
43d20 20 20 09 20 20 20 20 4a 53 58 45 78 70 72 65 73    .    JSXExpres
43d30 73 69 6f 6e 43 6f 6e 74 61 69 6e 65 72 3a 20 27  sionContainer: '
43d40 4a 53 58 45 78 70 72 65 73 73 69 6f 6e 43 6f 6e  JSXExpressionCon
43d50 74 61 69 6e 65 72 27 2c 0a 20 20 09 20 20 20 20  tainer',.  .    
43d60 4a 53 58 49 64 65 6e 74 69 66 69 65 72 3a 20 27  JSXIdentifier: '
43d70 4a 53 58 49 64 65 6e 74 69 66 69 65 72 27 2c 0a  JSXIdentifier',.
43d80 20 20 09 20 20 20 20 4a 53 58 4d 65 6d 62 65 72    .    JSXMember
43d90 45 78 70 72 65 73 73 69 6f 6e 3a 20 27 4a 53 58  Expression: 'JSX
43da0 4d 65 6d 62 65 72 45 78 70 72 65 73 73 69 6f 6e  MemberExpression
43db0 27 2c 0a 20 20 09 20 20 20 20 4a 53 58 4e 61 6d  ',.  .    JSXNam
43dc0 65 73 70 61 63 65 64 4e 61 6d 65 3a 20 27 4a 53  espacedName: 'JS
43dd0 58 4e 61 6d 65 73 70 61 63 65 64 4e 61 6d 65 27  XNamespacedName'
43de0 2c 0a 20 20 09 20 20 20 20 4a 53 58 4f 70 65 6e  ,.  .    JSXOpen
43df0 69 6e 67 45 6c 65 6d 65 6e 74 3a 20 27 4a 53 58  ingElement: 'JSX
43e00 4f 70 65 6e 69 6e 67 45 6c 65 6d 65 6e 74 27 2c  OpeningElement',
43e10 0a 20 20 09 20 20 20 20 4a 53 58 53 70 72 65 61  .  .    JSXSprea
43e20 64 41 74 74 72 69 62 75 74 65 3a 20 27 4a 53 58  dAttribute: 'JSX
43e30 53 70 72 65 61 64 41 74 74 72 69 62 75 74 65 27  SpreadAttribute'
43e40 2c 0a 20 20 09 20 20 20 20 4a 53 58 54 65 78 74  ,.  .    JSXText
43e50 3a 20 27 4a 53 58 54 65 78 74 27 0a 20 20 09 7d  : 'JSXText'.  .}
43e60 3b 0a 0a 0a 20 20 2f 2a 2a 2a 2f 20 7d 2c 0a 20  ;...  /***/ },. 
43e70 20 2f 2a 20 31 34 20 2a 2f 0a 20 20 2f 2a 2a 2a   /* 14 */.  /***
43e80 2f 20 66 75 6e 63 74 69 6f 6e 28 6d 6f 64 75 6c  / function(modul
43e90 65 2c 20 65 78 70 6f 72 74 73 2c 20 5f 5f 77 65  e, exports, __we
43ea0 62 70 61 63 6b 5f 72 65 71 75 69 72 65 5f 5f 29  bpack_require__)
43eb0 20 7b 0a 20 20 09 76 61 72 20 6a 73 78 5f 73 79   {.  .var jsx_sy
43ec0 6e 74 61 78 5f 31 20 3d 20 5f 5f 77 65 62 70 61  ntax_1 = __webpa
43ed0 63 6b 5f 72 65 71 75 69 72 65 5f 5f 28 31 33 29  ck_require__(13)
43ee0 3b 0a 20 20 09 76 61 72 20 4a 53 58 43 6c 6f 73  ;.  .var JSXClos
43ef0 69 6e 67 45 6c 65 6d 65 6e 74 20 3d 20 28 66 75  ingElement = (fu
43f00 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20 09 20  nction () {.  . 
43f10 20 20 20 66 75 6e 63 74 69 6f 6e 20 4a 53 58 43     function JSXC
43f20 6c 6f 73 69 6e 67 45 6c 65 6d 65 6e 74 28 6e 61  losingElement(na
43f30 6d 65 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20  me) {.  .       
43f40 20 74 68 69 73 2e 74 79 70 65 20 3d 20 6a 73 78   this.type = jsx
43f50 5f 73 79 6e 74 61 78 5f 31 2e 4a 53 58 53 79 6e  _syntax_1.JSXSyn
43f60 74 61 78 2e 4a 53 58 43 6c 6f 73 69 6e 67 45 6c  tax.JSXClosingEl
43f70 65 6d 65 6e 74 3b 0a 20 20 09 20 20 20 20 20 20  ement;.  .      
43f80 20 20 74 68 69 73 2e 6e 61 6d 65 20 3d 20 6e 61    this.name = na
43f90 6d 65 3b 0a 20 20 09 20 20 20 20 7d 0a 20 20 09  me;.  .    }.  .
43fa0 20 20 20 20 72 65 74 75 72 6e 20 4a 53 58 43 6c      return JSXCl
43fb0 6f 73 69 6e 67 45 6c 65 6d 65 6e 74 3b 0a 20 20  osingElement;.  
43fc0 09 7d 28 29 29 3b 0a 20 20 09 65 78 70 6f 72 74  .}());.  .export
43fd0 73 2e 4a 53 58 43 6c 6f 73 69 6e 67 45 6c 65 6d  s.JSXClosingElem
43fe0 65 6e 74 20 3d 20 4a 53 58 43 6c 6f 73 69 6e 67  ent = JSXClosing
43ff0 45 6c 65 6d 65 6e 74 3b 0a 20 20 09 76 61 72 20  Element;.  .var 
44000 4a 53 58 45 6c 65 6d 65 6e 74 20 3d 20 28 66 75  JSXElement = (fu
44010 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20 09 20  nction () {.  . 
44020 20 20 20 66 75 6e 63 74 69 6f 6e 20 4a 53 58 45     function JSXE
44030 6c 65 6d 65 6e 74 28 6f 70 65 6e 69 6e 67 45 6c  lement(openingEl
44040 65 6d 65 6e 74 2c 20 63 68 69 6c 64 72 65 6e 2c  ement, children,
44050 20 63 6c 6f 73 69 6e 67 45 6c 65 6d 65 6e 74 29   closingElement)
44060 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 74 68   {.  .        th
44070 69 73 2e 74 79 70 65 20 3d 20 6a 73 78 5f 73 79  is.type = jsx_sy
44080 6e 74 61 78 5f 31 2e 4a 53 58 53 79 6e 74 61 78  ntax_1.JSXSyntax
44090 2e 4a 53 58 45 6c 65 6d 65 6e 74 3b 0a 20 20 09  .JSXElement;.  .
440a0 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f 70 65          this.ope
440b0 6e 69 6e 67 45 6c 65 6d 65 6e 74 20 3d 20 6f 70  ningElement = op
440c0 65 6e 69 6e 67 45 6c 65 6d 65 6e 74 3b 0a 20 20  eningElement;.  
440d0 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 68  .        this.ch
440e0 69 6c 64 72 65 6e 20 3d 20 63 68 69 6c 64 72 65  ildren = childre
440f0 6e 3b 0a 20 20 09 20 20 20 20 20 20 20 20 74 68  n;.  .        th
44100 69 73 2e 63 6c 6f 73 69 6e 67 45 6c 65 6d 65 6e  is.closingElemen
44110 74 20 3d 20 63 6c 6f 73 69 6e 67 45 6c 65 6d 65  t = closingEleme
44120 6e 74 3b 0a 20 20 09 20 20 20 20 7d 0a 20 20 09  nt;.  .    }.  .
44130 20 20 20 20 72 65 74 75 72 6e 20 4a 53 58 45 6c      return JSXEl
44140 65 6d 65 6e 74 3b 0a 20 20 09 7d 28 29 29 3b 0a  ement;.  .}());.
44150 20 20 09 65 78 70 6f 72 74 73 2e 4a 53 58 45 6c    .exports.JSXEl
44160 65 6d 65 6e 74 20 3d 20 4a 53 58 45 6c 65 6d 65  ement = JSXEleme
44170 6e 74 3b 0a 20 20 09 76 61 72 20 4a 53 58 45 6d  nt;.  .var JSXEm
44180 70 74 79 45 78 70 72 65 73 73 69 6f 6e 20 3d 20  ptyExpression = 
44190 28 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20  (function () {. 
441a0 20 09 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 4a   .    function J
441b0 53 58 45 6d 70 74 79 45 78 70 72 65 73 73 69 6f  SXEmptyExpressio
441c0 6e 28 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20  n() {.  .       
441d0 20 74 68 69 73 2e 74 79 70 65 20 3d 20 6a 73 78   this.type = jsx
441e0 5f 73 79 6e 74 61 78 5f 31 2e 4a 53 58 53 79 6e  _syntax_1.JSXSyn
441f0 74 61 78 2e 4a 53 58 45 6d 70 74 79 45 78 70 72  tax.JSXEmptyExpr
44200 65 73 73 69 6f 6e 3b 0a 20 20 09 20 20 20 20 7d  ession;.  .    }
44210 0a 20 20 09 20 20 20 20 72 65 74 75 72 6e 20 4a  .  .    return J
44220 53 58 45 6d 70 74 79 45 78 70 72 65 73 73 69 6f  SXEmptyExpressio
44230 6e 3b 0a 20 20 09 7d 28 29 29 3b 0a 20 20 09 65  n;.  .}());.  .e
44240 78 70 6f 72 74 73 2e 4a 53 58 45 6d 70 74 79 45  xports.JSXEmptyE
44250 78 70 72 65 73 73 69 6f 6e 20 3d 20 4a 53 58 45  xpression = JSXE
44260 6d 70 74 79 45 78 70 72 65 73 73 69 6f 6e 3b 0a  mptyExpression;.
44270 20 20 09 76 61 72 20 4a 53 58 45 78 70 72 65 73    .var JSXExpres
44280 73 69 6f 6e 43 6f 6e 74 61 69 6e 65 72 20 3d 20  sionContainer = 
44290 28 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20  (function () {. 
442a0 20 09 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 4a   .    function J
442b0 53 58 45 78 70 72 65 73 73 69 6f 6e 43 6f 6e 74  SXExpressionCont
442c0 61 69 6e 65 72 28 65 78 70 72 65 73 73 69 6f 6e  ainer(expression
442d0 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 74  ) {.  .        t
442e0 68 69 73 2e 74 79 70 65 20 3d 20 6a 73 78 5f 73  his.type = jsx_s
442f0 79 6e 74 61 78 5f 31 2e 4a 53 58 53 79 6e 74 61  yntax_1.JSXSynta
44300 78 2e 4a 53 58 45 78 70 72 65 73 73 69 6f 6e 43  x.JSXExpressionC
44310 6f 6e 74 61 69 6e 65 72 3b 0a 20 20 09 20 20 20  ontainer;.  .   
44320 20 20 20 20 20 74 68 69 73 2e 65 78 70 72 65 73       this.expres
44330 73 69 6f 6e 20 3d 20 65 78 70 72 65 73 73 69 6f  sion = expressio
44340 6e 3b 0a 20 20 09 20 20 20 20 7d 0a 20 20 09 20  n;.  .    }.  . 
44350 20 20 20 72 65 74 75 72 6e 20 4a 53 58 45 78 70     return JSXExp
44360 72 65 73 73 69 6f 6e 43 6f 6e 74 61 69 6e 65 72  ressionContainer
44370 3b 0a 20 20 09 7d 28 29 29 3b 0a 20 20 09 65 78  ;.  .}());.  .ex
44380 70 6f 72 74 73 2e 4a 53 58 45 78 70 72 65 73 73  ports.JSXExpress
44390 69 6f 6e 43 6f 6e 74 61 69 6e 65 72 20 3d 20 4a  ionContainer = J
443a0 53 58 45 78 70 72 65 73 73 69 6f 6e 43 6f 6e 74  SXExpressionCont
443b0 61 69 6e 65 72 3b 0a 20 20 09 76 61 72 20 4a 53  ainer;.  .var JS
443c0 58 49 64 65 6e 74 69 66 69 65 72 20 3d 20 28 66  XIdentifier = (f
443d0 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20 09  unction () {.  .
443e0 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 4a 53 58      function JSX
443f0 49 64 65 6e 74 69 66 69 65 72 28 6e 61 6d 65 29  Identifier(name)
44400 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 74 68   {.  .        th
44410 69 73 2e 74 79 70 65 20 3d 20 6a 73 78 5f 73 79  is.type = jsx_sy
44420 6e 74 61 78 5f 31 2e 4a 53 58 53 79 6e 74 61 78  ntax_1.JSXSyntax
44430 2e 4a 53 58 49 64 65 6e 74 69 66 69 65 72 3b 0a  .JSXIdentifier;.
44440 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e    .        this.
44450 6e 61 6d 65 20 3d 20 6e 61 6d 65 3b 0a 20 20 09  name = name;.  .
44460 20 20 20 20 7d 0a 20 20 09 20 20 20 20 72 65 74      }.  .    ret
44470 75 72 6e 20 4a 53 58 49 64 65 6e 74 69 66 69 65  urn JSXIdentifie
44480 72 3b 0a 20 20 09 7d 28 29 29 3b 0a 20 20 09 65  r;.  .}());.  .e
44490 78 70 6f 72 74 73 2e 4a 53 58 49 64 65 6e 74 69  xports.JSXIdenti
444a0 66 69 65 72 20 3d 20 4a 53 58 49 64 65 6e 74 69  fier = JSXIdenti
444b0 66 69 65 72 3b 0a 20 20 09 76 61 72 20 4a 53 58  fier;.  .var JSX
444c0 4d 65 6d 62 65 72 45 78 70 72 65 73 73 69 6f 6e  MemberExpression
444d0 20 3d 20 28 66 75 6e 63 74 69 6f 6e 20 28 29 20   = (function () 
444e0 7b 0a 20 20 09 20 20 20 20 66 75 6e 63 74 69 6f  {.  .    functio
444f0 6e 20 4a 53 58 4d 65 6d 62 65 72 45 78 70 72 65  n JSXMemberExpre
44500 73 73 69 6f 6e 28 6f 62 6a 65 63 74 2c 20 70 72  ssion(object, pr
44510 6f 70 65 72 74 79 29 20 7b 0a 20 20 09 20 20 20  operty) {.  .   
44520 20 20 20 20 20 74 68 69 73 2e 74 79 70 65 20 3d       this.type =
44530 20 6a 73 78 5f 73 79 6e 74 61 78 5f 31 2e 4a 53   jsx_syntax_1.JS
44540 58 53 79 6e 74 61 78 2e 4a 53 58 4d 65 6d 62 65  XSyntax.JSXMembe
44550 72 45 78 70 72 65 73 73 69 6f 6e 3b 0a 20 20 09  rExpression;.  .
44560 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f 62 6a          this.obj
44570 65 63 74 20 3d 20 6f 62 6a 65 63 74 3b 0a 20 20  ect = object;.  
44580 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 70 72  .        this.pr
44590 6f 70 65 72 74 79 20 3d 20 70 72 6f 70 65 72 74  operty = propert
445a0 79 3b 0a 20 20 09 20 20 20 20 7d 0a 20 20 09 20  y;.  .    }.  . 
445b0 20 20 20 72 65 74 75 72 6e 20 4a 53 58 4d 65 6d     return JSXMem
445c0 62 65 72 45 78 70 72 65 73 73 69 6f 6e 3b 0a 20  berExpression;. 
445d0 20 09 7d 28 29 29 3b 0a 20 20 09 65 78 70 6f 72   .}());.  .expor
445e0 74 73 2e 4a 53 58 4d 65 6d 62 65 72 45 78 70 72  ts.JSXMemberExpr
445f0 65 73 73 69 6f 6e 20 3d 20 4a 53 58 4d 65 6d 62  ession = JSXMemb
44600 65 72 45 78 70 72 65 73 73 69 6f 6e 3b 0a 20 20  erExpression;.  
44610 09 76 61 72 20 4a 53 58 41 74 74 72 69 62 75 74  .var JSXAttribut
44620 65 20 3d 20 28 66 75 6e 63 74 69 6f 6e 20 28 29  e = (function ()
44630 20 7b 0a 20 20 09 20 20 20 20 66 75 6e 63 74 69   {.  .    functi
44640 6f 6e 20 4a 53 58 41 74 74 72 69 62 75 74 65 28  on JSXAttribute(
44650 6e 61 6d 65 2c 20 76 61 6c 75 65 29 20 7b 0a 20  name, value) {. 
44660 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 74   .        this.t
44670 79 70 65 20 3d 20 6a 73 78 5f 73 79 6e 74 61 78  ype = jsx_syntax
44680 5f 31 2e 4a 53 58 53 79 6e 74 61 78 2e 4a 53 58  _1.JSXSyntax.JSX
44690 41 74 74 72 69 62 75 74 65 3b 0a 20 20 09 20 20  Attribute;.  .  
446a0 20 20 20 20 20 20 74 68 69 73 2e 6e 61 6d 65 20        this.name 
446b0 3d 20 6e 61 6d 65 3b 0a 20 20 09 20 20 20 20 20  = name;.  .     
446c0 20 20 20 74 68 69 73 2e 76 61 6c 75 65 20 3d 20     this.value = 
446d0 76 61 6c 75 65 3b 0a 20 20 09 20 20 20 20 7d 0a  value;.  .    }.
446e0 20 20 09 20 20 20 20 72 65 74 75 72 6e 20 4a 53    .    return JS
446f0 58 41 74 74 72 69 62 75 74 65 3b 0a 20 20 09 7d  XAttribute;.  .}
44700 28 29 29 3b 0a 20 20 09 65 78 70 6f 72 74 73 2e  ());.  .exports.
44710 4a 53 58 41 74 74 72 69 62 75 74 65 20 3d 20 4a  JSXAttribute = J
44720 53 58 41 74 74 72 69 62 75 74 65 3b 0a 20 20 09  SXAttribute;.  .
44730 76 61 72 20 4a 53 58 4e 61 6d 65 73 70 61 63 65  var JSXNamespace
44740 64 4e 61 6d 65 20 3d 20 28 66 75 6e 63 74 69 6f  dName = (functio
44750 6e 20 28 29 20 7b 0a 20 20 09 20 20 20 20 66 75  n () {.  .    fu
44760 6e 63 74 69 6f 6e 20 4a 53 58 4e 61 6d 65 73 70  nction JSXNamesp
44770 61 63 65 64 4e 61 6d 65 28 6e 61 6d 65 73 70 61  acedName(namespa
44780 63 65 2c 20 6e 61 6d 65 29 20 7b 0a 20 20 09 20  ce, name) {.  . 
44790 20 20 20 20 20 20 20 74 68 69 73 2e 74 79 70 65         this.type
447a0 20 3d 20 6a 73 78 5f 73 79 6e 74 61 78 5f 31 2e   = jsx_syntax_1.
447b0 4a 53 58 53 79 6e 74 61 78 2e 4a 53 58 4e 61 6d  JSXSyntax.JSXNam
447c0 65 73 70 61 63 65 64 4e 61 6d 65 3b 0a 20 20 09  espacedName;.  .
447d0 20 20 20 20 20 20 20 20 74 68 69 73 2e 6e 61 6d          this.nam
447e0 65 73 70 61 63 65 20 3d 20 6e 61 6d 65 73 70 61  espace = namespa
447f0 63 65 3b 0a 20 20 09 20 20 20 20 20 20 20 20 74  ce;.  .        t
44800 68 69 73 2e 6e 61 6d 65 20 3d 20 6e 61 6d 65 3b  his.name = name;
44810 0a 20 20 09 20 20 20 20 7d 0a 20 20 09 20 20 20  .  .    }.  .   
44820 20 72 65 74 75 72 6e 20 4a 53 58 4e 61 6d 65 73   return JSXNames
44830 70 61 63 65 64 4e 61 6d 65 3b 0a 20 20 09 7d 28  pacedName;.  .}(
44840 29 29 3b 0a 20 20 09 65 78 70 6f 72 74 73 2e 4a  ));.  .exports.J
44850 53 58 4e 61 6d 65 73 70 61 63 65 64 4e 61 6d 65  SXNamespacedName
44860 20 3d 20 4a 53 58 4e 61 6d 65 73 70 61 63 65 64   = JSXNamespaced
44870 4e 61 6d 65 3b 0a 20 20 09 76 61 72 20 4a 53 58  Name;.  .var JSX
44880 4f 70 65 6e 69 6e 67 45 6c 65 6d 65 6e 74 20 3d  OpeningElement =
44890 20 28 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a   (function () {.
448a0 20 20 09 20 20 20 20 66 75 6e 63 74 69 6f 6e 20    .    function 
448b0 4a 53 58 4f 70 65 6e 69 6e 67 45 6c 65 6d 65 6e  JSXOpeningElemen
448c0 74 28 6e 61 6d 65 2c 20 73 65 6c 66 43 6c 6f 73  t(name, selfClos
448d0 69 6e 67 2c 20 61 74 74 72 69 62 75 74 65 73 29  ing, attributes)
448e0 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 74 68   {.  .        th
448f0 69 73 2e 74 79 70 65 20 3d 20 6a 73 78 5f 73 79  is.type = jsx_sy
44900 6e 74 61 78 5f 31 2e 4a 53 58 53 79 6e 74 61 78  ntax_1.JSXSyntax
44910 2e 4a 53 58 4f 70 65 6e 69 6e 67 45 6c 65 6d 65  .JSXOpeningEleme
44920 6e 74 3b 0a 20 20 09 20 20 20 20 20 20 20 20 74  nt;.  .        t
44930 68 69 73 2e 6e 61 6d 65 20 3d 20 6e 61 6d 65 3b  his.name = name;
44940 0a 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73  .  .        this
44950 2e 73 65 6c 66 43 6c 6f 73 69 6e 67 20 3d 20 73  .selfClosing = s
44960 65 6c 66 43 6c 6f 73 69 6e 67 3b 0a 20 20 09 20  elfClosing;.  . 
44970 20 20 20 20 20 20 20 74 68 69 73 2e 61 74 74 72         this.attr
44980 69 62 75 74 65 73 20 3d 20 61 74 74 72 69 62 75  ibutes = attribu
44990 74 65 73 3b 0a 20 20 09 20 20 20 20 7d 0a 20 20  tes;.  .    }.  
449a0 09 20 20 20 20 72 65 74 75 72 6e 20 4a 53 58 4f  .    return JSXO
449b0 70 65 6e 69 6e 67 45 6c 65 6d 65 6e 74 3b 0a 20  peningElement;. 
449c0 20 09 7d 28 29 29 3b 0a 20 20 09 65 78 70 6f 72   .}());.  .expor
449d0 74 73 2e 4a 53 58 4f 70 65 6e 69 6e 67 45 6c 65  ts.JSXOpeningEle
449e0 6d 65 6e 74 20 3d 20 4a 53 58 4f 70 65 6e 69 6e  ment = JSXOpenin
449f0 67 45 6c 65 6d 65 6e 74 3b 0a 20 20 09 76 61 72  gElement;.  .var
44a00 20 4a 53 58 53 70 72 65 61 64 41 74 74 72 69 62   JSXSpreadAttrib
44a10 75 74 65 20 3d 20 28 66 75 6e 63 74 69 6f 6e 20  ute = (function 
44a20 28 29 20 7b 0a 20 20 09 20 20 20 20 66 75 6e 63  () {.  .    func
44a30 74 69 6f 6e 20 4a 53 58 53 70 72 65 61 64 41 74  tion JSXSpreadAt
44a40 74 72 69 62 75 74 65 28 61 72 67 75 6d 65 6e 74  tribute(argument
44a50 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 74  ) {.  .        t
44a60 68 69 73 2e 74 79 70 65 20 3d 20 6a 73 78 5f 73  his.type = jsx_s
44a70 79 6e 74 61 78 5f 31 2e 4a 53 58 53 79 6e 74 61  yntax_1.JSXSynta
44a80 78 2e 4a 53 58 53 70 72 65 61 64 41 74 74 72 69  x.JSXSpreadAttri
44a90 62 75 74 65 3b 0a 20 20 09 20 20 20 20 20 20 20  bute;.  .       
44aa0 20 74 68 69 73 2e 61 72 67 75 6d 65 6e 74 20 3d   this.argument =
44ab0 20 61 72 67 75 6d 65 6e 74 3b 0a 20 20 09 20 20   argument;.  .  
44ac0 20 20 7d 0a 20 20 09 20 20 20 20 72 65 74 75 72    }.  .    retur
44ad0 6e 20 4a 53 58 53 70 72 65 61 64 41 74 74 72 69  n JSXSpreadAttri
44ae0 62 75 74 65 3b 0a 20 20 09 7d 28 29 29 3b 0a 20  bute;.  .}());. 
44af0 20 09 65 78 70 6f 72 74 73 2e 4a 53 58 53 70 72   .exports.JSXSpr
44b00 65 61 64 41 74 74 72 69 62 75 74 65 20 3d 20 4a  eadAttribute = J
44b10 53 58 53 70 72 65 61 64 41 74 74 72 69 62 75 74  SXSpreadAttribut
44b20 65 3b 0a 20 20 09 76 61 72 20 4a 53 58 54 65 78  e;.  .var JSXTex
44b30 74 20 3d 20 28 66 75 6e 63 74 69 6f 6e 20 28 29  t = (function ()
44b40 20 7b 0a 20 20 09 20 20 20 20 66 75 6e 63 74 69   {.  .    functi
44b50 6f 6e 20 4a 53 58 54 65 78 74 28 76 61 6c 75 65  on JSXText(value
44b60 2c 20 72 61 77 29 20 7b 0a 20 20 09 20 20 20 20  , raw) {.  .    
44b70 20 20 20 20 74 68 69 73 2e 74 79 70 65 20 3d 20      this.type = 
44b80 6a 73 78 5f 73 79 6e 74 61 78 5f 31 2e 4a 53 58  jsx_syntax_1.JSX
44b90 53 79 6e 74 61 78 2e 4a 53 58 54 65 78 74 3b 0a  Syntax.JSXText;.
44ba0 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e    .        this.
44bb0 76 61 6c 75 65 20 3d 20 76 61 6c 75 65 3b 0a 20  value = value;. 
44bc0 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 72   .        this.r
44bd0 61 77 20 3d 20 72 61 77 3b 0a 20 20 09 20 20 20  aw = raw;.  .   
44be0 20 7d 0a 20 20 09 20 20 20 20 72 65 74 75 72 6e   }.  .    return
44bf0 20 4a 53 58 54 65 78 74 3b 0a 20 20 09 7d 28 29   JSXText;.  .}()
44c00 29 3b 0a 20 20 09 65 78 70 6f 72 74 73 2e 4a 53  );.  .exports.JS
44c10 58 54 65 78 74 20 3d 20 4a 53 58 54 65 78 74 3b  XText = JSXText;
44c20 0a 0a 0a 20 20 2f 2a 2a 2a 2f 20 7d 2c 0a 20 20  ...  /***/ },.  
44c30 2f 2a 20 31 35 20 2a 2f 0a 20 20 2f 2a 2a 2a 2f  /* 15 */.  /***/
44c40 20 66 75 6e 63 74 69 6f 6e 28 6d 6f 64 75 6c 65   function(module
44c50 2c 20 65 78 70 6f 72 74 73 2c 20 5f 5f 77 65 62  , exports, __web
44c60 70 61 63 6b 5f 72 65 71 75 69 72 65 5f 5f 29 20  pack_require__) 
44c70 7b 0a 20 20 09 76 61 72 20 73 63 61 6e 6e 65 72  {.  .var scanner
44c80 5f 31 20 3d 20 5f 5f 77 65 62 70 61 63 6b 5f 72  _1 = __webpack_r
44c90 65 71 75 69 72 65 5f 5f 28 38 29 3b 0a 20 20 09  equire__(8);.  .
44ca0 76 61 72 20 65 72 72 6f 72 5f 68 61 6e 64 6c 65  var error_handle
44cb0 72 5f 31 20 3d 20 5f 5f 77 65 62 70 61 63 6b 5f  r_1 = __webpack_
44cc0 72 65 71 75 69 72 65 5f 5f 28 36 29 3b 0a 20 20  require__(6);.  
44cd0 09 76 61 72 20 74 6f 6b 65 6e 5f 31 20 3d 20 5f  .var token_1 = _
44ce0 5f 77 65 62 70 61 63 6b 5f 72 65 71 75 69 72 65  _webpack_require
44cf0 5f 5f 28 37 29 3b 0a 20 20 09 76 61 72 20 52 65  __(7);.  .var Re
44d00 61 64 65 72 20 3d 20 28 66 75 6e 63 74 69 6f 6e  ader = (function
44d10 20 28 29 20 7b 0a 20 20 09 20 20 20 20 66 75 6e   () {.  .    fun
44d20 63 74 69 6f 6e 20 52 65 61 64 65 72 28 29 20 7b  ction Reader() {
44d30 0a 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73  .  .        this
44d40 2e 76 61 6c 75 65 73 20 3d 20 5b 5d 3b 0a 20 20  .values = [];.  
44d50 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 75  .        this.cu
44d60 72 6c 79 20 3d 20 74 68 69 73 2e 70 61 72 65 6e  rly = this.paren
44d70 20 3d 20 2d 31 3b 0a 20 20 09 20 20 20 20 7d 0a   = -1;.  .    }.
44d80 20 20 09 20 20 20 20 0a 20 20 09 20 20 20 20 2f    .    .  .    /
44d90 2f 20 41 20 66 75 6e 63 74 69 6f 6e 20 66 6f 6c  / A function fol
44da0 6c 6f 77 69 6e 67 20 6f 6e 65 20 6f 66 20 74 68  lowing one of th
44db0 6f 73 65 20 74 6f 6b 65 6e 73 20 69 73 20 61 6e  ose tokens is an
44dc0 20 65 78 70 72 65 73 73 69 6f 6e 2e 0a 20 20 09   expression..  .
44dd0 20 20 20 20 52 65 61 64 65 72 2e 70 72 6f 74 6f      Reader.proto
44de0 74 79 70 65 2e 62 65 66 6f 72 65 46 75 6e 63 74  type.beforeFunct
44df0 69 6f 6e 45 78 70 72 65 73 73 69 6f 6e 20 3d 20  ionExpression = 
44e00 66 75 6e 63 74 69 6f 6e 20 28 74 29 20 7b 0a 20  function (t) {. 
44e10 20 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e   .        return
44e20 20 5b 27 28 27 2c 20 27 7b 27 2c 20 27 5b 27 2c   ['(', '{', '[',
44e30 20 27 69 6e 27 2c 20 27 74 79 70 65 6f 66 27 2c   'in', 'typeof',
44e40 20 27 69 6e 73 74 61 6e 63 65 6f 66 27 2c 20 27   'instanceof', '
44e50 6e 65 77 27 2c 0a 20 20 09 20 20 20 20 20 20 20  new',.  .       
44e60 20 20 20 20 20 27 72 65 74 75 72 6e 27 2c 20 27       'return', '
44e70 63 61 73 65 27 2c 20 27 64 65 6c 65 74 65 27 2c  case', 'delete',
44e80 20 27 74 68 72 6f 77 27 2c 20 27 76 6f 69 64 27   'throw', 'void'
44e90 2c 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ,.  .           
44ea0 20 2f 2f 20 61 73 73 69 67 6e 6d 65 6e 74 20 6f   // assignment o
44eb0 70 65 72 61 74 6f 72 73 0a 20 20 09 20 20 20 20  perators.  .    
44ec0 20 20 20 20 20 20 20 20 27 3d 27 2c 20 27 2b 3d          '=', '+=
44ed0 27 2c 20 27 2d 3d 27 2c 20 27 2a 3d 27 2c 20 27  ', '-=', '*=', '
44ee0 2a 2a 3d 27 2c 20 27 2f 3d 27 2c 20 27 25 3d 27  **=', '/=', '%='
44ef0 2c 20 27 3c 3c 3d 27 2c 20 27 3e 3e 3d 27 2c 20  , '<<=', '>>=', 
44f00 27 3e 3e 3e 3d 27 2c 0a 20 20 09 20 20 20 20 20  '>>>=',.  .     
44f10 20 20 20 20 20 20 20 27 26 3d 27 2c 20 27 7c 3d         '&=', '|=
44f20 27 2c 20 27 5e 3d 27 2c 20 27 2c 27 2c 0a 20 20  ', '^=', ',',.  
44f30 09 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  .            // 
44f40 62 69 6e 61 72 79 2f 75 6e 61 72 79 20 6f 70 65  binary/unary ope
44f50 72 61 74 6f 72 73 0a 20 20 09 20 20 20 20 20 20  rators.  .      
44f60 20 20 20 20 20 20 27 2b 27 2c 20 27 2d 27 2c 20        '+', '-', 
44f70 27 2a 27 2c 20 27 2a 2a 27 2c 20 27 2f 27 2c 20  '*', '**', '/', 
44f80 27 25 27 2c 20 27 2b 2b 27 2c 20 27 2d 2d 27 2c  '%', '++', '--',
44f90 20 27 3c 3c 27 2c 20 27 3e 3e 27 2c 20 27 3e 3e   '<<', '>>', '>>
44fa0 3e 27 2c 20 27 26 27 2c 0a 20 20 09 20 20 20 20  >', '&',.  .    
44fb0 20 20 20 20 20 20 20 20 27 7c 27 2c 20 27 5e 27          '|', '^'
44fc0 2c 20 27 21 27 2c 20 27 7e 27 2c 20 27 26 26 27  , '!', '~', '&&'
44fd0 2c 20 27 7c 7c 27 2c 20 27 3f 27 2c 20 27 3a 27  , '||', '?', ':'
44fe0 2c 20 27 3d 3d 3d 27 2c 20 27 3d 3d 27 2c 20 27  , '===', '==', '
44ff0 3e 3d 27 2c 0a 20 20 09 20 20 20 20 20 20 20 20  >=',.  .        
45000 20 20 20 20 27 3c 3d 27 2c 20 27 3c 27 2c 20 27      '<=', '<', '
45010 3e 27 2c 20 27 21 3d 27 2c 20 27 21 3d 3d 27 5d  >', '!=', '!==']
45020 2e 69 6e 64 65 78 4f 66 28 74 29 20 3e 3d 20 30  .indexOf(t) >= 0
45030 3b 0a 20 20 09 20 20 20 20 7d 3b 0a 20 20 09 20  ;.  .    };.  . 
45040 20 20 20 0a 20 20 09 20 20 20 20 2f 2f 20 44 65     .  .    // De
45050 74 65 72 6d 69 6e 65 20 69 66 20 66 6f 72 77 61  termine if forwa
45060 72 64 20 73 6c 61 73 68 20 28 2f 29 20 69 73 20  rd slash (/) is 
45070 61 6e 20 6f 70 65 72 61 74 6f 72 20 6f 72 20 70  an operator or p
45080 61 72 74 20 6f 66 20 61 20 72 65 67 75 6c 61 72  art of a regular
45090 20 65 78 70 72 65 73 73 69 6f 6e 0a 20 20 09 20   expression.  . 
450a0 20 20 20 2f 2f 20 68 74 74 70 73 3a 2f 2f 67 69     // https://gi
450b0 74 68 75 62 2e 63 6f 6d 2f 6d 6f 7a 69 6c 6c 61  thub.com/mozilla
450c0 2f 73 77 65 65 74 2e 6a 73 2f 77 69 6b 69 2f 64  /sweet.js/wiki/d
450d0 65 73 69 67 6e 0a 20 20 09 20 20 20 20 52 65 61  esign.  .    Rea
450e0 64 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 69 73  der.prototype.is
450f0 52 65 67 65 78 53 74 61 72 74 20 3d 20 66 75 6e  RegexStart = fun
45100 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20 09 20 20  ction () {.  .  
45110 20 20 20 20 20 20 76 61 72 20 70 72 65 76 69 6f        var previo
45120 75 73 20 3d 20 74 68 69 73 2e 76 61 6c 75 65 73  us = this.values
45130 5b 74 68 69 73 2e 76 61 6c 75 65 73 2e 6c 65 6e  [this.values.len
45140 67 74 68 20 2d 20 31 5d 3b 0a 20 20 09 20 20 20  gth - 1];.  .   
45150 20 20 20 20 20 76 61 72 20 72 65 67 65 78 20 3d       var regex =
45160 20 28 70 72 65 76 69 6f 75 73 20 21 3d 3d 20 6e   (previous !== n
45170 75 6c 6c 29 3b 0a 20 20 09 20 20 20 20 20 20 20  ull);.  .       
45180 20 73 77 69 74 63 68 20 28 70 72 65 76 69 6f 75   switch (previou
45190 73 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20  s) {.  .        
451a0 20 20 20 20 63 61 73 65 20 27 74 68 69 73 27 3a      case 'this':
451b0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
451c0 63 61 73 65 20 27 5d 27 3a 0a 20 20 09 20 20 20  case ']':.  .   
451d0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 67               reg
451e0 65 78 20 3d 20 66 61 6c 73 65 3b 0a 20 20 09 20  ex = false;.  . 
451f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
45200 72 65 61 6b 3b 0a 20 20 09 20 20 20 20 20 20 20  reak;.  .       
45210 20 20 20 20 20 63 61 73 65 20 27 29 27 3a 0a 20       case ')':. 
45220 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
45230 20 20 76 61 72 20 63 68 65 63 6b 20 3d 20 74 68    var check = th
45240 69 73 2e 76 61 6c 75 65 73 5b 74 68 69 73 2e 70  is.values[this.p
45250 61 72 65 6e 20 2d 20 31 5d 3b 0a 20 20 09 20 20  aren - 1];.  .  
45260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
45270 67 65 78 20 3d 20 28 63 68 65 63 6b 20 3d 3d 3d  gex = (check ===
45280 20 27 69 66 27 20 7c 7c 20 63 68 65 63 6b 20 3d   'if' || check =
45290 3d 3d 20 27 77 68 69 6c 65 27 20 7c 7c 20 63 68  == 'while' || ch
452a0 65 63 6b 20 3d 3d 3d 20 27 66 6f 72 27 20 7c 7c  eck === 'for' ||
452b0 20 63 68 65 63 6b 20 3d 3d 3d 20 27 77 69 74 68   check === 'with
452c0 27 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ');.  .         
452d0 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0a 20 20         break;.  
452e0 09 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73  .            cas
452f0 65 20 27 7d 27 3a 0a 20 20 09 20 20 20 20 20 20  e '}':.  .      
45300 20 20 20 20 20 20 20 20 20 20 2f 2f 20 44 69 76            // Div
45310 69 64 69 6e 67 20 61 20 66 75 6e 63 74 69 6f 6e  iding a function
45320 20 62 79 20 61 6e 79 74 68 69 6e 67 20 6d 61 6b   by anything mak
45330 65 73 20 6c 69 74 74 6c 65 20 73 65 6e 73 65 2c  es little sense,
45340 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
45350 20 20 20 20 2f 2f 20 62 75 74 20 77 65 20 68 61      // but we ha
45360 76 65 20 74 6f 20 63 68 65 63 6b 20 66 6f 72 20  ve to check for 
45370 74 68 61 74 2e 0a 20 20 09 20 20 20 20 20 20 20  that..  .       
45380 20 20 20 20 20 20 20 20 20 72 65 67 65 78 20 3d           regex =
45390 20 66 61 6c 73 65 3b 0a 20 20 09 20 20 20 20 20   false;.  .     
453a0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74             if (t
453b0 68 69 73 2e 76 61 6c 75 65 73 5b 74 68 69 73 2e  his.values[this.
453c0 63 75 72 6c 79 20 2d 20 33 5d 20 3d 3d 3d 20 27  curly - 3] === '
453d0 66 75 6e 63 74 69 6f 6e 27 29 20 7b 0a 20 20 09  function') {.  .
453e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
453f0 20 20 20 20 2f 2f 20 41 6e 6f 6e 79 6d 6f 75 73      // Anonymous
45400 20 66 75 6e 63 74 69 6f 6e 2c 20 65 2e 67 2e 20   function, e.g. 
45410 66 75 6e 63 74 69 6f 6e 28 29 7b 7d 20 2f 34 32  function(){} /42
45420 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
45430 20 20 20 20 20 20 20 20 76 61 72 20 63 68 65 63          var chec
45440 6b 5f 31 20 3d 20 74 68 69 73 2e 76 61 6c 75 65  k_1 = this.value
45450 73 5b 74 68 69 73 2e 63 75 72 6c 79 20 2d 20 34  s[this.curly - 4
45460 5d 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20  ];.  .          
45470 20 20 20 20 20 20 20 20 20 20 72 65 67 65 78 20            regex 
45480 3d 20 63 68 65 63 6b 5f 31 20 3f 20 21 74 68 69  = check_1 ? !thi
45490 73 2e 62 65 66 6f 72 65 46 75 6e 63 74 69 6f 6e  s.beforeFunction
454a0 45 78 70 72 65 73 73 69 6f 6e 28 63 68 65 63 6b  Expression(check
454b0 5f 31 29 20 3a 20 66 61 6c 73 65 3b 0a 20 20 09  _1) : false;.  .
454c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
454d0 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  }.  .           
454e0 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 74 68       else if (th
454f0 69 73 2e 76 61 6c 75 65 73 5b 74 68 69 73 2e 63  is.values[this.c
45500 75 72 6c 79 20 2d 20 34 5d 20 3d 3d 3d 20 27 66  urly - 4] === 'f
45510 75 6e 63 74 69 6f 6e 27 29 20 7b 0a 20 20 09 20  unction') {.  . 
45520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
45530 20 20 20 2f 2f 20 4e 61 6d 65 64 20 66 75 6e 63     // Named func
45540 74 69 6f 6e 2c 20 65 2e 67 2e 20 66 75 6e 63 74  tion, e.g. funct
45550 69 6f 6e 20 66 28 29 7b 7d 20 2f 34 32 2f 0a 20  ion f(){} /42/. 
45560 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
45570 20 20 20 20 20 20 76 61 72 20 63 68 65 63 6b 5f        var check_
45580 32 20 3d 20 74 68 69 73 2e 76 61 6c 75 65 73 5b  2 = this.values[
45590 74 68 69 73 2e 63 75 72 6c 79 20 2d 20 35 5d 3b  this.curly - 5];
455a0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
455b0 20 20 20 20 20 20 20 20 72 65 67 65 78 20 3d 20          regex = 
455c0 63 68 65 63 6b 5f 32 20 3f 20 21 74 68 69 73 2e  check_2 ? !this.
455d0 62 65 66 6f 72 65 46 75 6e 63 74 69 6f 6e 45 78  beforeFunctionEx
455e0 70 72 65 73 73 69 6f 6e 28 63 68 65 63 6b 5f 32  pression(check_2
455f0 29 20 3a 20 74 72 75 65 3b 0a 20 20 09 20 20 20  ) : true;.  .   
45600 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20               }. 
45610 20 09 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20   .        }.  . 
45620 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65         return re
45630 67 65 78 3b 0a 20 20 09 20 20 20 20 7d 3b 0a 20  gex;.  .    };. 
45640 20 09 20 20 20 20 0a 20 20 09 20 20 20 20 52 65   .    .  .    Re
45650 61 64 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 70  ader.prototype.p
45660 75 73 68 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28  ush = function (
45670 74 6f 6b 65 6e 29 20 7b 0a 20 20 09 20 20 20 20  token) {.  .    
45680 20 20 20 20 69 66 20 28 74 6f 6b 65 6e 2e 74 79      if (token.ty
45690 70 65 20 3d 3d 3d 20 74 6f 6b 65 6e 5f 31 2e 54  pe === token_1.T
456a0 6f 6b 65 6e 2e 50 75 6e 63 74 75 61 74 6f 72 20  oken.Punctuator 
456b0 7c 7c 20 74 6f 6b 65 6e 2e 74 79 70 65 20 3d 3d  || token.type ==
456c0 3d 20 74 6f 6b 65 6e 5f 31 2e 54 6f 6b 65 6e 2e  = token_1.Token.
456d0 4b 65 79 77 6f 72 64 29 20 7b 0a 20 20 09 20 20  Keyword) {.  .  
456e0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74 6f            if (to
456f0 6b 65 6e 2e 76 61 6c 75 65 20 3d 3d 3d 20 27 7b  ken.value === '{
45700 27 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20  ') {.  .        
45710 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 75 72          this.cur
45720 6c 79 20 3d 20 74 68 69 73 2e 76 61 6c 75 65 73  ly = this.values
45730 2e 6c 65 6e 67 74 68 3b 0a 20 20 09 20 20 20 20  .length;.  .    
45740 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20          }.  .   
45750 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66           else if
45760 20 28 74 6f 6b 65 6e 2e 76 61 6c 75 65 20 3d 3d   (token.value ==
45770 3d 20 27 28 27 29 20 7b 0a 20 20 09 20 20 20 20  = '(') {.  .    
45780 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
45790 2e 70 61 72 65 6e 20 3d 20 74 68 69 73 2e 76 61  .paren = this.va
457a0 6c 75 65 73 2e 6c 65 6e 67 74 68 3b 0a 20 20 09  lues.length;.  .
457b0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20              }.  
457c0 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
457d0 73 2e 76 61 6c 75 65 73 2e 70 75 73 68 28 74 6f  s.values.push(to
457e0 6b 65 6e 2e 76 61 6c 75 65 29 3b 0a 20 20 09 20  ken.value);.  . 
457f0 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20         }.  .    
45800 20 20 20 20 65 6c 73 65 20 7b 0a 20 20 09 20 20      else {.  .  
45810 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 76            this.v
45820 61 6c 75 65 73 2e 70 75 73 68 28 6e 75 6c 6c 29  alues.push(null)
45830 3b 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a 20  ;.  .        }. 
45840 20 09 20 20 20 20 7d 3b 0a 20 20 09 20 20 20 20   .    };.  .    
45850 0a 20 20 09 20 20 20 20 72 65 74 75 72 6e 20 52  .  .    return R
45860 65 61 64 65 72 3b 0a 20 20 09 7d 28 29 29 3b 0a  eader;.  .}());.
45870 20 20 09 76 61 72 20 54 6f 6b 65 6e 69 7a 65 72    .var Tokenizer
45880 20 3d 20 28 66 75 6e 63 74 69 6f 6e 20 28 29 20   = (function () 
45890 7b 0a 20 20 09 20 20 20 20 66 75 6e 63 74 69 6f  {.  .    functio
458a0 6e 20 54 6f 6b 65 6e 69 7a 65 72 28 63 6f 64 65  n Tokenizer(code
458b0 2c 20 63 6f 6e 66 69 67 29 20 7b 0a 20 20 09 20  , config) {.  . 
458c0 20 20 20 20 20 20 20 74 68 69 73 2e 65 72 72 6f         this.erro
458d0 72 48 61 6e 64 6c 65 72 20 3d 20 6e 65 77 20 65  rHandler = new e
458e0 72 72 6f 72 5f 68 61 6e 64 6c 65 72 5f 31 2e 45  rror_handler_1.E
458f0 72 72 6f 72 48 61 6e 64 6c 65 72 28 29 3b 0a 20  rrorHandler();. 
45900 20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 65   .        this.e
45910 72 72 6f 72 48 61 6e 64 6c 65 72 2e 74 6f 6c 65  rrorHandler.tole
45920 72 61 6e 74 20 3d 20 63 6f 6e 66 69 67 20 3f 20  rant = config ? 
45930 28 74 79 70 65 6f 66 20 63 6f 6e 66 69 67 2e 74  (typeof config.t
45940 6f 6c 65 72 61 6e 74 20 3d 3d 3d 20 27 62 6f 6f  olerant === 'boo
45950 6c 65 61 6e 27 20 26 26 20 63 6f 6e 66 69 67 2e  lean' && config.
45960 74 6f 6c 65 72 61 6e 74 29 20 3a 20 66 61 6c 73  tolerant) : fals
45970 65 3b 0a 20 20 09 20 20 20 20 20 20 20 20 74 68  e;.  .        th
45980 69 73 2e 73 63 61 6e 6e 65 72 20 3d 20 6e 65 77  is.scanner = new
45990 20 73 63 61 6e 6e 65 72 5f 31 2e 53 63 61 6e 6e   scanner_1.Scann
459a0 65 72 28 63 6f 64 65 2c 20 74 68 69 73 2e 65 72  er(code, this.er
459b0 72 6f 72 48 61 6e 64 6c 65 72 29 3b 0a 20 20 09  rorHandler);.  .
459c0 20 20 20 20 20 20 20 20 74 68 69 73 2e 73 63 61          this.sca
459d0 6e 6e 65 72 2e 74 72 61 63 6b 43 6f 6d 6d 65 6e  nner.trackCommen
459e0 74 20 3d 20 63 6f 6e 66 69 67 20 3f 20 28 74 79  t = config ? (ty
459f0 70 65 6f 66 20 63 6f 6e 66 69 67 2e 63 6f 6d 6d  peof config.comm
45a00 65 6e 74 20 3d 3d 3d 20 27 62 6f 6f 6c 65 61 6e  ent === 'boolean
45a10 27 20 26 26 20 63 6f 6e 66 69 67 2e 63 6f 6d 6d  ' && config.comm
45a20 65 6e 74 29 20 3a 20 66 61 6c 73 65 3b 0a 20 20  ent) : false;.  
45a30 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 74 72  .        this.tr
45a40 61 63 6b 52 61 6e 67 65 20 3d 20 63 6f 6e 66 69  ackRange = confi
45a50 67 20 3f 20 28 74 79 70 65 6f 66 20 63 6f 6e 66  g ? (typeof conf
45a60 69 67 2e 72 61 6e 67 65 20 3d 3d 3d 20 27 62 6f  ig.range === 'bo
45a70 6f 6c 65 61 6e 27 20 26 26 20 63 6f 6e 66 69 67  olean' && config
45a80 2e 72 61 6e 67 65 29 20 3a 20 66 61 6c 73 65 3b  .range) : false;
45a90 0a 20 20 09 20 20 20 20 20 20 20 20 74 68 69 73  .  .        this
45aa0 2e 74 72 61 63 6b 4c 6f 63 20 3d 20 63 6f 6e 66  .trackLoc = conf
45ab0 69 67 20 3f 20 28 74 79 70 65 6f 66 20 63 6f 6e  ig ? (typeof con
45ac0 66 69 67 2e 6c 6f 63 20 3d 3d 3d 20 27 62 6f 6f  fig.loc === 'boo
45ad0 6c 65 61 6e 27 20 26 26 20 63 6f 6e 66 69 67 2e  lean' && config.
45ae0 6c 6f 63 29 20 3a 20 66 61 6c 73 65 3b 0a 20 20  loc) : false;.  
45af0 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 62 75  .        this.bu
45b00 66 66 65 72 20 3d 20 5b 5d 3b 0a 20 20 09 20 20  ffer = [];.  .  
45b10 20 20 20 20 20 20 74 68 69 73 2e 72 65 61 64 65        this.reade
45b20 72 20 3d 20 6e 65 77 20 52 65 61 64 65 72 28 29  r = new Reader()
45b30 3b 0a 20 20 09 20 20 20 20 7d 0a 20 20 09 20 20  ;.  .    }.  .  
45b40 20 20 0a 20 20 09 20 20 20 20 54 6f 6b 65 6e 69    .  .    Tokeni
45b50 7a 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 65 72  zer.prototype.er
45b60 72 6f 72 73 20 3d 20 66 75 6e 63 74 69 6f 6e 20  rors = function 
45b70 28 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20  () {.  .        
45b80 72 65 74 75 72 6e 20 74 68 69 73 2e 65 72 72 6f  return this.erro
45b90 72 48 61 6e 64 6c 65 72 2e 65 72 72 6f 72 73 3b  rHandler.errors;
45ba0 0a 20 20 09 20 20 20 20 7d 3b 0a 20 20 09 20 20  .  .    };.  .  
45bb0 20 20 0a 20 20 09 20 20 20 20 54 6f 6b 65 6e 69    .  .    Tokeni
45bc0 7a 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 67 65  zer.prototype.ge
45bd0 74 4e 65 78 74 54 6f 6b 65 6e 20 3d 20 66 75 6e  tNextToken = fun
45be0 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20 09 20 20  ction () {.  .  
45bf0 20 20 20 20 20 20 76 61 72 20 74 68 69 73 24 31        var this$1
45c00 20 3d 20 74 68 69 73 3b 0a 0a 20 20 09 20 20 20   = this;..  .   
45c10 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 62 75       if (this.bu
45c20 66 66 65 72 2e 6c 65 6e 67 74 68 20 3d 3d 3d 20  ffer.length === 
45c30 30 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20  0) {.  .        
45c40 20 20 20 20 76 61 72 20 63 6f 6d 6d 65 6e 74 73      var comments
45c50 20 3d 20 74 68 69 73 2e 73 63 61 6e 6e 65 72 2e   = this.scanner.
45c60 73 63 61 6e 43 6f 6d 6d 65 6e 74 73 28 29 3b 0a  scanComments();.
45c70 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 69    .            i
45c80 66 20 28 74 68 69 73 2e 73 63 61 6e 6e 65 72 2e  f (this.scanner.
45c90 74 72 61 63 6b 43 6f 6d 6d 65 6e 74 29 20 7b 0a  trackComment) {.
45ca0 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
45cb0 20 20 20 66 6f 72 20 28 76 61 72 20 69 20 3d 20     for (var i = 
45cc0 30 3b 20 69 20 3c 20 63 6f 6d 6d 65 6e 74 73 2e  0; i < comments.
45cd0 6c 65 6e 67 74 68 3b 20 2b 2b 69 29 20 7b 0a 20  length; ++i) {. 
45ce0 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
45cf0 20 20 20 20 20 20 76 61 72 20 65 20 3d 20 63 6f        var e = co
45d00 6d 6d 65 6e 74 73 5b 69 5d 3b 0a 20 20 09 20 20  mments[i];.  .  
45d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
45d20 20 20 76 61 72 20 63 6f 6d 6d 65 6e 74 20 3d 20    var comment = 
45d30 76 6f 69 64 20 30 3b 0a 20 20 09 20 20 20 20 20  void 0;.  .     
45d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76                 v
45d50 61 72 20 76 61 6c 75 65 20 3d 20 74 68 69 73 24  ar value = this$
45d60 31 2e 73 63 61 6e 6e 65 72 2e 73 6f 75 72 63 65  1.scanner.source
45d70 2e 73 6c 69 63 65 28 65 2e 73 6c 69 63 65 5b 30  .slice(e.slice[0
45d80 5d 2c 20 65 2e 73 6c 69 63 65 5b 31 5d 29 3b 0a  ], e.slice[1]);.
45d90 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
45da0 20 20 20 20 20 20 20 63 6f 6d 6d 65 6e 74 20 3d         comment =
45db0 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20   {.  .          
45dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 79                ty
45dd0 70 65 3a 20 65 2e 6d 75 6c 74 69 4c 69 6e 65 20  pe: e.multiLine 
45de0 3f 20 27 42 6c 6f 63 6b 43 6f 6d 6d 65 6e 74 27  ? 'BlockComment'
45df0 20 3a 20 27 4c 69 6e 65 43 6f 6d 6d 65 6e 74 27   : 'LineComment'
45e00 2c 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ,.  .           
45e10 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c               val
45e20 75 65 3a 20 76 61 6c 75 65 0a 20 20 09 20 20 20  ue: value.  .   
45e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
45e40 20 7d 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20   };.  .         
45e50 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74             if (t
45e60 68 69 73 24 31 2e 74 72 61 63 6b 52 61 6e 67 65  his$1.trackRange
45e70 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ) {.  .         
45e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
45e90 6f 6d 6d 65 6e 74 2e 72 61 6e 67 65 20 3d 20 65  omment.range = e
45ea0 2e 72 61 6e 67 65 3b 0a 20 20 09 20 20 20 20 20  .range;.  .     
45eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
45ec0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
45ed0 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73          if (this
45ee0 24 31 2e 74 72 61 63 6b 4c 6f 63 29 20 7b 0a 20  $1.trackLoc) {. 
45ef0 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
45f00 20 20 20 20 20 20 20 20 20 20 63 6f 6d 6d 65 6e            commen
45f10 74 2e 6c 6f 63 20 3d 20 65 2e 6c 6f 63 3b 0a 20  t.loc = e.loc;. 
45f20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
45f30 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20        }.  .     
45f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
45f50 68 69 73 24 31 2e 62 75 66 66 65 72 2e 70 75 73  his$1.buffer.pus
45f60 68 28 63 6f 6d 6d 65 6e 74 29 3b 0a 20 20 09 20  h(comment);.  . 
45f70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
45f80 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
45f90 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  }.  .           
45fa0 20 69 66 20 28 21 74 68 69 73 2e 73 63 61 6e 6e   if (!this.scann
45fb0 65 72 2e 65 6f 66 28 29 29 20 7b 0a 20 20 09 20  er.eof()) {.  . 
45fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76                 v
45fd0 61 72 20 6c 6f 63 20 3d 20 76 6f 69 64 20 30 3b  ar loc = void 0;
45fe0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
45ff0 20 20 20 20 69 66 20 28 74 68 69 73 2e 74 72 61      if (this.tra
46000 63 6b 4c 6f 63 29 20 7b 0a 20 20 09 20 20 20 20  ckLoc) {.  .    
46010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
46020 6c 6f 63 20 3d 20 7b 0a 20 20 09 20 20 20 20 20  loc = {.  .     
46030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
46040 20 20 20 73 74 61 72 74 3a 20 7b 0a 20 20 09 20     start: {.  . 
46050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
46060 20 20 20 20 20 20 20 20 20 20 20 6c 69 6e 65 3a             line:
46070 20 74 68 69 73 2e 73 63 61 6e 6e 65 72 2e 6c 69   this.scanner.li
46080 6e 65 4e 75 6d 62 65 72 2c 0a 20 20 09 20 20 20  neNumber,.  .   
46090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
460a0 20 20 20 20 20 20 20 20 20 63 6f 6c 75 6d 6e 3a           column:
460b0 20 74 68 69 73 2e 73 63 61 6e 6e 65 72 2e 69 6e   this.scanner.in
460c0 64 65 78 20 2d 20 74 68 69 73 2e 73 63 61 6e 6e  dex - this.scann
460d0 65 72 2e 6c 69 6e 65 53 74 61 72 74 0a 20 20 09  er.lineStart.  .
460e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
460f0 20 20 20 20 20 20 20 20 7d 2c 0a 20 20 09 20 20          },.  .  
46100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
46110 20 20 20 20 20 20 65 6e 64 3a 20 7b 7d 0a 20 20        end: {}.  
46120 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
46130 20 20 20 20 20 7d 3b 0a 20 20 09 20 20 20 20 20       };.  .     
46140 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09             }.  .
46150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
46160 76 61 72 20 74 6f 6b 65 6e 20 3d 20 76 6f 69 64  var token = void
46170 20 30 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20   0;.  .         
46180 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e         if (this.
46190 73 63 61 6e 6e 65 72 2e 73 6f 75 72 63 65 5b 74  scanner.source[t
461a0 68 69 73 2e 73 63 61 6e 6e 65 72 2e 69 6e 64 65  his.scanner.inde
461b0 78 5d 20 3d 3d 3d 20 27 2f 27 29 20 7b 0a 20 20  x] === '/') {.  
461c0 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
461d0 20 20 20 20 20 74 6f 6b 65 6e 20 3d 20 74 68 69       token = thi
461e0 73 2e 72 65 61 64 65 72 2e 69 73 52 65 67 65 78  s.reader.isRegex
461f0 53 74 61 72 74 28 29 20 3f 20 74 68 69 73 2e 73  Start() ? this.s
46200 63 61 6e 6e 65 72 2e 73 63 61 6e 52 65 67 45 78  canner.scanRegEx
46210 70 28 29 20 3a 20 74 68 69 73 2e 73 63 61 6e 6e  p() : this.scann
46220 65 72 2e 73 63 61 6e 50 75 6e 63 74 75 61 74 6f  er.scanPunctuato
46230 72 28 29 3b 0a 20 20 09 20 20 20 20 20 20 20 20  r();.  .        
46240 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20 20 20          }.  .   
46250 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73               els
46260 65 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20  e {.  .         
46270 20 20 20 20 20 20 20 20 20 20 20 74 6f 6b 65 6e             token
46280 20 3d 20 74 68 69 73 2e 73 63 61 6e 6e 65 72 2e   = this.scanner.
46290 6c 65 78 28 29 3b 0a 20 20 09 20 20 20 20 20 20  lex();.  .      
462a0 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20            }.  . 
462b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
462c0 68 69 73 2e 72 65 61 64 65 72 2e 70 75 73 68 28  his.reader.push(
462d0 74 6f 6b 65 6e 29 3b 0a 20 20 09 20 20 20 20 20  token);.  .     
462e0 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 65             var e
462f0 6e 74 72 79 20 3d 20 76 6f 69 64 20 30 3b 0a 20  ntry = void 0;. 
46300 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
46310 20 20 65 6e 74 72 79 20 3d 20 7b 0a 20 20 09 20    entry = {.  . 
46320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
46330 20 20 20 74 79 70 65 3a 20 74 6f 6b 65 6e 5f 31     type: token_1
46340 2e 54 6f 6b 65 6e 4e 61 6d 65 5b 74 6f 6b 65 6e  .TokenName[token
46350 2e 74 79 70 65 5d 2c 0a 20 20 09 20 20 20 20 20  .type],.  .     
46360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76                 v
46370 61 6c 75 65 3a 20 74 68 69 73 2e 73 63 61 6e 6e  alue: this.scann
46380 65 72 2e 73 6f 75 72 63 65 2e 73 6c 69 63 65 28  er.source.slice(
46390 74 6f 6b 65 6e 2e 73 74 61 72 74 2c 20 74 6f 6b  token.start, tok
463a0 65 6e 2e 65 6e 64 29 0a 20 20 09 20 20 20 20 20  en.end).  .     
463b0 20 20 20 20 20 20 20 20 20 20 20 7d 3b 0a 20 20             };.  
463c0 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
463d0 20 69 66 20 28 74 68 69 73 2e 74 72 61 63 6b 52   if (this.trackR
463e0 61 6e 67 65 29 20 7b 0a 20 20 09 20 20 20 20 20  ange) {.  .     
463f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
46400 6e 74 72 79 2e 72 61 6e 67 65 20 3d 20 5b 74 6f  ntry.range = [to
46410 6b 65 6e 2e 73 74 61 72 74 2c 20 74 6f 6b 65 6e  ken.start, token
46420 2e 65 6e 64 5d 3b 0a 20 20 09 20 20 20 20 20 20  .end];.  .      
46430 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 09 20            }.  . 
46440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
46450 66 20 28 74 68 69 73 2e 74 72 61 63 6b 4c 6f 63  f (this.trackLoc
46460 29 20 7b 0a 20 20 09 20 20 20 20 20 20 20 20 20  ) {.  .         
46470 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 2e 65             loc.e
46480 6e 64 20 3d 20 7b 0a 20 20 09 20 20 20 20 20 20  nd = {.  .      
46490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
464a0 20 20 6c 69 6e 65 3a 20 74 68 69 73 2e 73 63 61    line: this.sca
464b0 6e 6e 65 72 2e 6c 69 6e 65 4e 75 6d 62 65 72 2c  nner.lineNumber,
464c0 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20  .  .            
464d0 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6c 75              colu
464e0 6d 6e 3a 20 74 68 69 73 2e 73 63 61 6e 6e 65 72  mn: this.scanner
464f0 2e 69 6e 64 65 78 20 2d 20 74 68 69 73 2e 73 63  .index - this.sc
46500 61 6e 6e 65 72 2e 6c 69 6e 65 53 74 61 72 74 0a  anner.lineStart.
46510 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20    .             
46520 20 20 20 20 20 20 20 7d 3b 0a 20 20 09 20 20 20         };.  .   
46530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
46540 20 65 6e 74 72 79 2e 6c 6f 63 20 3d 20 6c 6f 63   entry.loc = loc
46550 3b 0a 20 20 09 20 20 20 20 20 20 20 20 20 20 20  ;.  .           
46560 20 20 20 20 20 7d 0a 20 20 09 20 20 20 20 20 20       }.  .      
46570 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74 6f            if (to
46580 6b 65 6e 2e 72 65 67 65 78 29 20 7b 0a 20 20 09  ken.regex) {.  .
46590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
465a0 20 20 20 20 65 6e 74 72 79 2e 72 65 67 65 78 20      entry.regex 
465b0 3d 20 74 6f 6b 65 6e 2e 72 65 67 65 78 3b 0a 20  = token.regex;. 
465c0 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
465d0 20 20 7d 0a 20 20 09 20 20 20 20 20 20 20 20 20    }.  .         
465e0 20 20 20 20 20 20 20 74 68 69 73 2e 62 75 66 66         this.buff
465f0 65 72 2e 70 75 73 68 28 65 6e 74 72 79 29 3b 0a  er.push(entry);.
46600 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 7d    .            }
46610 0a 20 20 09 20 20 20 20 20 20 20 20 7d 0a 20 20  .  .        }.  
46620 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
46630 74 68 69 73 2e 62 75 66 66 65 72 2e 73 68 69 66  this.buffer.shif
46640 74 28 29 3b 0a 20 20 09 20 20 20 20 7d 3b 0a 20  t();.  .    };. 
46650 20 09 20 20 20 20 0a 20 20 09 20 20 20 20 72 65   .    .  .    re
46660 74 75 72 6e 20 54 6f 6b 65 6e 69 7a 65 72 3b 0a  turn Tokenizer;.
46670 20 20 09 7d 28 29 29 3b 0a 20 20 09 65 78 70 6f    .}());.  .expo
46680 72 74 73 2e 54 6f 6b 65 6e 69 7a 65 72 20 3d 20  rts.Tokenizer = 
46690 54 6f 6b 65 6e 69 7a 65 72 3b 0a 0a 0a 20 20 2f  Tokenizer;...  /
466a0 2a 2a 2a 2f 20 7d 0a 20 20 2f 2a 2a 2a 2a 2a 2a  ***/ }.  /******
466b0 2f 20 5d 29 0a 20 20 7d 29 3b 0a 0a 20 20 7d 29  / ]).  });..  })
466c0 3b 0a 0a 20 20 76 61 72 20 69 6e 64 65 78 20 3d  ;..  var index =
466d0 20 68 6f 69 73 74 3b 0a 0a 20 20 66 75 6e 63 74   hoist;..  funct
466e0 69 6f 6e 20 68 6f 69 73 74 28 61 73 74 29 7b 0a  ion hoist(ast){.
466f0 0a 20 20 20 20 76 61 72 20 70 61 72 65 6e 74 53  .    var parentS
46700 74 61 63 6b 20 3d 20 5b 5d 3b 0a 20 20 20 20 76  tack = [];.    v
46710 61 72 20 76 61 72 69 61 62 6c 65 73 20 3d 20 5b  ar variables = [
46720 5d 3b 0a 20 20 20 20 76 61 72 20 66 75 6e 63 74  ];.    var funct
46730 69 6f 6e 73 20 3d 20 5b 5d 3b 0a 0a 20 20 20 20  ions = [];..    
46740 69 66 20 28 41 72 72 61 79 2e 69 73 41 72 72 61  if (Array.isArra
46750 79 28 61 73 74 29 29 7b 0a 0a 20 20 20 20 20 20  y(ast)){..      
46760 77 61 6c 6b 41 6c 6c 28 61 73 74 29 3b 0a 20 20  walkAll(ast);.  
46770 20 20 20 20 70 72 65 70 65 6e 64 53 63 6f 70 65      prependScope
46780 28 61 73 74 2c 20 76 61 72 69 61 62 6c 65 73 2c  (ast, variables,
46790 20 66 75 6e 63 74 69 6f 6e 73 29 3b 0a 20 20 20   functions);.   
467a0 20 20 20 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b     .    } else {
467b0 0a 20 20 20 20 20 20 77 61 6c 6b 28 61 73 74 29  .      walk(ast)
467c0 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 72 65 74  ;.    }..    ret
467d0 75 72 6e 20 61 73 74 0a 0a 20 20 20 20 2f 2f 20  urn ast..    // 
467e0 77 61 6c 6b 20 74 68 72 6f 75 67 68 20 65 61 63  walk through eac
467f0 68 20 6e 6f 64 65 20 6f 66 20 61 20 70 72 6f 67  h node of a prog
46800 72 61 6d 20 6f 66 20 62 6c 6f 63 6b 20 73 74 61  ram of block sta
46810 74 65 6d 65 6e 74 0a 20 20 20 20 66 75 6e 63 74  tement.    funct
46820 69 6f 6e 20 77 61 6c 6b 41 6c 6c 28 6e 6f 64 65  ion walkAll(node
46830 73 29 7b 0a 20 20 20 20 20 20 76 61 72 20 72 65  s){.      var re
46840 73 75 6c 74 20 3d 20 6e 75 6c 6c 3b 0a 20 20 20  sult = null;.   
46850 20 20 20 66 6f 72 20 28 76 61 72 20 69 3d 30 3b     for (var i=0;
46860 69 3c 6e 6f 64 65 73 2e 6c 65 6e 67 74 68 3b 69  i<nodes.length;i
46870 2b 2b 29 7b 0a 20 20 20 20 20 20 20 20 76 61 72  ++){.        var
46880 20 63 68 69 6c 64 4e 6f 64 65 20 3d 20 6e 6f 64   childNode = nod
46890 65 73 5b 69 5d 3b 0a 20 20 20 20 20 20 20 20 69  es[i];.        i
468a0 66 20 28 63 68 69 6c 64 4e 6f 64 65 2e 74 79 70  f (childNode.typ
468b0 65 20 3d 3d 3d 20 27 45 6d 70 74 79 53 74 61 74  e === 'EmptyStat
468c0 65 6d 65 6e 74 27 29 20 7b 20 63 6f 6e 74 69 6e  ement') { contin
468d0 75 65 20 7d 0a 20 20 20 20 20 20 20 20 76 61 72  ue }.        var
468e0 20 72 65 73 75 6c 74 20 3d 20 77 61 6c 6b 28 63   result = walk(c
468f0 68 69 6c 64 4e 6f 64 65 29 3b 0a 20 20 20 20 20  hildNode);.     
46900 20 20 20 69 66 20 28 72 65 73 75 6c 74 20 3d 3d     if (result ==
46910 3d 20 27 72 65 6d 6f 76 65 27 29 7b 0a 20 20 20  = 'remove'){.   
46920 20 20 20 20 20 20 20 6e 6f 64 65 73 2e 73 70 6c         nodes.spl
46930 69 63 65 28 69 2d 2d 2c 20 31 29 3b 0a 20 20 20  ice(i--, 1);.   
46940 20 20 20 20 20 7d 0a 20 20 20 20 20 20 7d 0a 20       }.      }. 
46950 20 20 20 7d 0a 0a 20 20 20 20 66 75 6e 63 74 69     }..    functi
46960 6f 6e 20 77 61 6c 6b 28 6e 6f 64 65 29 7b 0a 20  on walk(node){. 
46970 20 20 20 20 20 76 61 72 20 70 61 72 65 6e 74 20       var parent 
46980 3d 20 70 61 72 65 6e 74 53 74 61 63 6b 5b 70 61  = parentStack[pa
46990 72 65 6e 74 53 74 61 63 6b 2e 6c 65 6e 67 74 68  rentStack.length
469a0 2d 31 5d 3b 0a 20 20 20 20 20 20 76 61 72 20 72  -1];.      var r
469b0 65 6d 6f 76 65 20 3d 20 66 61 6c 73 65 3b 0a 20  emove = false;. 
469c0 20 20 20 20 20 70 61 72 65 6e 74 53 74 61 63 6b       parentStack
469d0 2e 70 75 73 68 28 6e 6f 64 65 29 3b 0a 0a 20 20  .push(node);..  
469e0 20 20 20 20 76 61 72 20 65 78 63 6c 75 64 65 42      var excludeB
469f0 6f 64 79 20 3d 20 66 61 6c 73 65 3b 0a 20 20 20  ody = false;.   
46a00 20 20 20 69 66 20 28 73 68 6f 75 6c 64 53 63 6f     if (shouldSco
46a10 70 65 28 6e 6f 64 65 2c 20 70 61 72 65 6e 74 29  pe(node, parent)
46a20 29 7b 0a 20 20 20 20 20 20 20 20 68 6f 69 73 74  ){.        hoist
46a30 28 6e 6f 64 65 2e 62 6f 64 79 29 3b 0a 20 20 20  (node.body);.   
46a40 20 20 20 20 20 65 78 63 6c 75 64 65 42 6f 64 79       excludeBody
46a50 20 3d 20 74 72 75 65 3b 0a 20 20 20 20 20 20 7d   = true;.      }
46a60 0a 0a 20 20 20 20 20 20 69 66 20 28 6e 6f 64 65  ..      if (node
46a70 2e 74 79 70 65 20 3d 3d 3d 20 27 56 61 72 69 61  .type === 'Varia
46a80 62 6c 65 44 65 63 6c 61 72 61 74 6f 72 27 29 7b  bleDeclarator'){
46a90 0a 20 20 20 20 20 20 20 20 76 61 72 69 61 62 6c  .        variabl
46aa0 65 73 2e 70 75 73 68 28 6e 6f 64 65 29 3b 0a 20  es.push(node);. 
46ab0 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 69 66       }..      if
46ac0 20 28 6e 6f 64 65 2e 74 79 70 65 20 3d 3d 3d 20   (node.type === 
46ad0 27 46 75 6e 63 74 69 6f 6e 44 65 63 6c 61 72 61  'FunctionDeclara
46ae0 74 69 6f 6e 27 29 7b 0a 20 20 20 20 20 20 20 20  tion'){.        
46af0 66 75 6e 63 74 69 6f 6e 73 2e 70 75 73 68 28 6e  functions.push(n
46b00 6f 64 65 29 3b 0a 20 20 20 20 20 20 20 20 72 65  ode);.        re
46b10 6d 6f 76 65 20 3d 20 74 72 75 65 3b 0a 20 20 20  move = true;.   
46b20 20 20 20 7d 0a 0a 20 20 20 20 20 20 66 6f 72 20     }..      for 
46b30 28 76 61 72 20 6b 65 79 20 69 6e 20 6e 6f 64 65  (var key in node
46b40 29 7b 0a 20 20 20 20 20 20 20 20 69 66 20 28 6b  ){.        if (k
46b50 65 79 20 3d 3d 3d 20 27 74 79 70 65 27 20 7c 7c  ey === 'type' ||
46b60 20 28 65 78 63 6c 75 64 65 42 6f 64 79 20 26 26   (excludeBody &&
46b70 20 6b 65 79 20 3d 3d 3d 20 27 62 6f 64 79 27 29   key === 'body')
46b80 29 20 7b 20 63 6f 6e 74 69 6e 75 65 20 7d 0a 20  ) { continue }. 
46b90 20 20 20 20 20 20 20 69 66 20 28 6b 65 79 20 69         if (key i
46ba0 6e 20 6e 6f 64 65 20 26 26 20 6e 6f 64 65 5b 6b  n node && node[k
46bb0 65 79 5d 20 26 26 20 74 79 70 65 6f 66 20 6e 6f  ey] && typeof no
46bc0 64 65 5b 6b 65 79 5d 20 3d 3d 20 27 6f 62 6a 65  de[key] == 'obje
46bd0 63 74 27 29 7b 0a 20 20 20 20 20 20 20 20 20 20  ct'){.          
46be0 69 66 20 28 6e 6f 64 65 5b 6b 65 79 5d 2e 74 79  if (node[key].ty
46bf0 70 65 29 7b 0a 20 20 20 20 20 20 20 20 20 20 20  pe){.           
46c00 20 77 61 6c 6b 28 6e 6f 64 65 5b 6b 65 79 5d 29   walk(node[key])
46c10 3b 0a 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c  ;.          } el
46c20 73 65 20 69 66 20 28 41 72 72 61 79 2e 69 73 41  se if (Array.isA
46c30 72 72 61 79 28 6e 6f 64 65 5b 6b 65 79 5d 29 29  rray(node[key]))
46c40 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 77 61  {.            wa
46c50 6c 6b 41 6c 6c 28 6e 6f 64 65 5b 6b 65 79 5d 29  lkAll(node[key])
46c60 3b 0a 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20  ;.          }.  
46c70 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 7d 0a        }.      }.
46c80 0a 20 20 20 20 20 20 70 61 72 65 6e 74 53 74 61  .      parentSta
46c90 63 6b 2e 70 6f 70 28 29 3b 0a 20 20 20 20 20 20  ck.pop();.      
46ca0 69 66 20 28 72 65 6d 6f 76 65 29 7b 0a 20 20 20  if (remove){.   
46cb0 20 20 20 20 20 72 65 74 75 72 6e 20 27 72 65 6d       return 'rem
46cc0 6f 76 65 27 0a 20 20 20 20 20 20 7d 0a 20 20 20  ove'.      }.   
46cd0 20 7d 0a 20 20 7d 0a 0a 20 20 66 75 6e 63 74 69   }.  }..  functi
46ce0 6f 6e 20 73 68 6f 75 6c 64 53 63 6f 70 65 28 6e  on shouldScope(n
46cf0 6f 64 65 2c 20 70 61 72 65 6e 74 29 7b 0a 20 20  ode, parent){.  
46d00 20 20 69 66 20 28 6e 6f 64 65 2e 74 79 70 65 20    if (node.type 
46d10 3d 3d 3d 20 27 50 72 6f 67 72 61 6d 27 29 7b 0a  === 'Program'){.
46d20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
46d30 65 0a 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20  e.    } else if 
46d40 28 6e 6f 64 65 2e 74 79 70 65 20 3d 3d 3d 20 27  (node.type === '
46d50 42 6c 6f 63 6b 53 74 61 74 65 6d 65 6e 74 27 29  BlockStatement')
46d60 7b 0a 20 20 20 20 20 20 69 66 20 28 70 61 72 65  {.      if (pare
46d70 6e 74 20 26 26 20 28 70 61 72 65 6e 74 2e 74 79  nt && (parent.ty
46d80 70 65 20 3d 3d 3d 20 27 46 75 6e 63 74 69 6f 6e  pe === 'Function
46d90 45 78 70 72 65 73 73 69 6f 6e 27 20 7c 7c 20 70  Expression' || p
46da0 61 72 65 6e 74 2e 74 79 70 65 20 3d 3d 3d 20 27  arent.type === '
46db0 46 75 6e 63 74 69 6f 6e 44 65 63 6c 61 72 61 74  FunctionDeclarat
46dc0 69 6f 6e 27 29 29 7b 0a 20 20 20 20 20 20 20 20  ion')){.        
46dd0 72 65 74 75 72 6e 20 74 72 75 65 0a 20 20 20 20  return true.    
46de0 20 20 7d 0a 20 20 20 20 7d 0a 20 20 7d 0a 0a 20    }.    }.  }.. 
46df0 20 66 75 6e 63 74 69 6f 6e 20 70 72 65 70 65 6e   function prepen
46e00 64 53 63 6f 70 65 28 6e 6f 64 65 73 2c 20 76 61  dScope(nodes, va
46e10 72 69 61 62 6c 65 73 2c 20 66 75 6e 63 74 69 6f  riables, functio
46e20 6e 73 29 7b 0a 20 20 20 20 69 66 20 28 76 61 72  ns){.    if (var
46e30 69 61 62 6c 65 73 20 26 26 20 76 61 72 69 61 62  iables && variab
46e40 6c 65 73 2e 6c 65 6e 67 74 68 29 7b 0a 20 20 20  les.length){.   
46e50 20 20 20 76 61 72 20 64 65 63 6c 61 72 61 74 69     var declarati
46e60 6f 6e 73 20 3d 20 5b 5d 3b 0a 20 20 20 20 20 20  ons = [];.      
46e70 66 6f 72 20 28 76 61 72 20 69 3d 30 3b 69 3c 76  for (var i=0;i<v
46e80 61 72 69 61 62 6c 65 73 2e 6c 65 6e 67 74 68 3b  ariables.length;
46e90 69 2b 2b 29 7b 0a 20 20 20 20 20 20 20 20 64 65  i++){.        de
46ea0 63 6c 61 72 61 74 69 6f 6e 73 2e 70 75 73 68 28  clarations.push(
46eb0 7b 0a 20 20 20 20 20 20 20 20 20 20 74 79 70 65  {.          type
46ec0 3a 20 27 56 61 72 69 61 62 6c 65 44 65 63 6c 61  : 'VariableDecla
46ed0 72 61 74 6f 72 27 2c 20 0a 20 20 20 20 20 20 20  rator', .       
46ee0 20 20 20 69 64 3a 20 76 61 72 69 61 62 6c 65 73     id: variables
46ef0 5b 69 5d 2e 69 64 2c 0a 20 20 20 20 20 20 20 20  [i].id,.        
46f00 20 20 69 6e 69 74 3a 20 6e 75 6c 6c 0a 20 20 20    init: null.   
46f10 20 20 20 20 20 7d 29 3b 0a 20 20 20 20 20 20 7d       });.      }
46f20 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 6e 6f  .      .      no
46f30 64 65 73 2e 75 6e 73 68 69 66 74 28 7b 0a 20 20  des.unshift({.  
46f40 20 20 20 20 20 20 74 79 70 65 3a 20 27 56 61 72        type: 'Var
46f50 69 61 62 6c 65 44 65 63 6c 61 72 61 74 69 6f 6e  iableDeclaration
46f60 27 2c 20 0a 20 20 20 20 20 20 20 20 6b 69 6e 64  ', .        kind
46f70 3a 20 27 76 61 72 27 2c 20 0a 20 20 20 20 20 20  : 'var', .      
46f80 20 20 64 65 63 6c 61 72 61 74 69 6f 6e 73 3a 20    declarations: 
46f90 64 65 63 6c 61 72 61 74 69 6f 6e 73 0a 20 20 20  declarations.   
46fa0 20 20 20 7d 29 3b 0a 0a 20 20 20 20 7d 0a 0a 20     });..    }.. 
46fb0 20 20 20 69 66 20 28 66 75 6e 63 74 69 6f 6e 73     if (functions
46fc0 20 26 26 20 66 75 6e 63 74 69 6f 6e 73 2e 6c 65   && functions.le
46fd0 6e 67 74 68 29 7b 0a 20 20 20 20 20 20 66 6f 72  ngth){.      for
46fe0 20 28 76 61 72 20 69 3d 30 3b 69 3c 66 75 6e 63   (var i=0;i<func
46ff0 74 69 6f 6e 73 2e 6c 65 6e 67 74 68 3b 69 2b 2b  tions.length;i++
47000 29 7b 0a 20 20 20 20 20 20 20 20 6e 6f 64 65 73  ){.        nodes
47010 2e 75 6e 73 68 69 66 74 28 66 75 6e 63 74 69 6f  .unshift(functio
47020 6e 73 5b 69 5d 29 3b 20 0a 20 20 20 20 20 20 7d  ns[i]); .      }
47030 0a 20 20 20 20 7d 0a 20 20 7d 0a 0a 20 20 76 61  .    }.  }..  va
47040 72 20 6d 61 78 49 74 65 72 61 74 69 6f 6e 73 20  r maxIterations 
47050 3d 20 31 30 30 30 30 30 30 3b 0a 20 20 76 61 72  = 1000000;.  var
47060 20 70 61 72 73 65 20 3d 20 65 73 70 72 69 6d 61   parse = esprima
47070 2e 70 61 72 73 65 3b 0a 0a 20 20 2f 2f 20 27 65  .parse;..  // 'e
47080 76 61 6c 27 20 77 69 74 68 20 61 20 63 6f 6e 74  val' with a cont
47090 72 6f 6c 6c 65 64 20 65 6e 76 69 72 6f 6e 6d 65  rolled environme
470a0 6e 74 0a 20 20 66 75 6e 63 74 69 6f 6e 20 73 61  nt.  function sa
470b0 66 65 45 76 61 6c 28 73 72 63 2c 20 70 61 72 65  feEval(src, pare
470c0 6e 74 43 6f 6e 74 65 78 74 29 7b 0a 20 20 20 20  ntContext){.    
470d0 76 61 72 20 74 72 65 65 20 3d 20 70 72 65 70 61  var tree = prepa
470e0 72 65 41 73 74 28 73 72 63 29 3b 0a 20 20 20 20  reAst(src);.    
470f0 76 61 72 20 63 6f 6e 74 65 78 74 20 3d 20 4f 62  var context = Ob
47100 6a 65 63 74 2e 63 72 65 61 74 65 28 70 61 72 65  ject.create(pare
47110 6e 74 43 6f 6e 74 65 78 74 20 7c 7c 20 7b 7d 29  ntContext || {})
47120 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 66 69 6e  ;.    return fin
47130 61 6c 56 61 6c 75 65 28 65 76 61 6c 75 61 74 65  alValue(evaluate
47140 41 73 74 28 74 72 65 65 2c 20 63 6f 6e 74 65 78  Ast(tree, contex
47150 74 29 29 0a 20 20 7d 0a 0a 20 20 73 61 66 65 45  t)).  }..  safeE
47160 76 61 6c 2e 66 75 6e 63 20 3d 20 46 75 6e 63 74  val.func = Funct
47170 69 6f 6e 46 61 63 74 6f 72 79 28 29 3b 0a 0a 20  ionFactory();.. 
47180 20 2f 2f 20 63 72 65 61 74 65 20 61 20 27 46 75   // create a 'Fu
47190 6e 63 74 69 6f 6e 27 20 63 6f 6e 73 74 72 75 63  nction' construc
471a0 74 6f 72 20 66 6f 72 20 61 20 63 6f 6e 74 72 6f  tor for a contro
471b0 6c 6c 65 64 20 65 6e 76 69 72 6f 6e 6d 65 6e 74  lled environment
471c0 0a 20 20 66 75 6e 63 74 69 6f 6e 20 46 75 6e 63  .  function Func
471d0 74 69 6f 6e 46 61 63 74 6f 72 79 28 70 61 72 65  tionFactory(pare
471e0 6e 74 43 6f 6e 74 65 78 74 29 7b 0a 20 20 20 20  ntContext){.    
471f0 76 61 72 20 63 6f 6e 74 65 78 74 20 3d 20 4f 62  var context = Ob
47200 6a 65 63 74 2e 63 72 65 61 74 65 28 70 61 72 65  ject.create(pare
47210 6e 74 43 6f 6e 74 65 78 74 20 7c 7c 20 7b 7d 29  ntContext || {})
47220 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 66 75 6e  ;.    return fun
47230 63 74 69 6f 6e 20 46 75 6e 63 74 69 6f 6e 28 29  ction Function()
47240 20 7b 0a 20 20 20 20 20 20 2f 2f 20 6e 6f 72 6d   {.      // norm
47250 61 6c 69 7a 65 20 61 72 67 75 6d 65 6e 74 73 20  alize arguments 
47260 61 72 72 61 79 0a 20 20 20 20 20 20 76 61 72 20  array.      var 
47270 61 72 67 73 20 3d 20 41 72 72 61 79 2e 70 72 6f  args = Array.pro
47280 74 6f 74 79 70 65 2e 73 6c 69 63 65 2e 63 61 6c  totype.slice.cal
47290 6c 28 61 72 67 75 6d 65 6e 74 73 29 3b 0a 20 20  l(arguments);.  
472a0 20 20 20 20 76 61 72 20 73 72 63 20 3d 20 61 72      var src = ar
472b0 67 73 2e 73 6c 69 63 65 28 2d 31 29 5b 30 5d 3b  gs.slice(-1)[0];
472c0 0a 20 20 20 20 20 20 61 72 67 73 20 3d 20 61 72  .      args = ar
472d0 67 73 2e 73 6c 69 63 65 28 30 2c 2d 31 29 3b 0a  gs.slice(0,-1);.
472e0 20 20 20 20 20 20 69 66 20 28 74 79 70 65 6f 66        if (typeof
472f0 20 73 72 63 20 3d 3d 3d 20 27 73 74 72 69 6e 67   src === 'string
47300 27 29 7b 0a 20 20 20 20 20 20 20 20 2f 2f 48 41  '){.        //HA
47310 43 4b 3a 20 65 73 70 72 69 6d 61 20 64 6f 65 73  CK: esprima does
47320 6e 27 74 20 6c 69 6b 65 20 72 65 74 75 72 6e 73  n't like returns
47330 20 6f 75 74 73 69 64 65 20 66 75 6e 63 74 69 6f   outside functio
47340 6e 73 0a 20 20 20 20 20 20 20 20 73 72 63 20 3d  ns.        src =
47350 20 70 61 72 73 65 28 27 66 75 6e 63 74 69 6f 6e   parse('function
47360 20 61 28 29 7b 20 27 20 2b 20 73 72 63 20 2b 20   a(){ ' + src + 
47370 27 7d 27 29 2e 62 6f 64 79 5b 30 5d 2e 62 6f 64  '}').body[0].bod
47380 79 3b 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 20  y;.      }.     
47390 20 76 61 72 20 74 72 65 65 20 3d 20 70 72 65 70   var tree = prep
473a0 61 72 65 41 73 74 28 73 72 63 29 3b 0a 20 20 20  areAst(src);.   
473b0 20 20 20 72 65 74 75 72 6e 20 67 65 74 46 75 6e     return getFun
473c0 63 74 69 6f 6e 28 74 72 65 65 2c 20 61 72 67 73  ction(tree, args
473d0 2c 20 63 6f 6e 74 65 78 74 29 0a 20 20 20 20 7d  , context).    }
473e0 0a 20 20 7d 0a 0a 20 20 2f 2f 20 74 61 6b 65 73  .  }..  // takes
473f0 20 61 6e 20 41 53 54 20 6f 72 20 6a 73 20 73 6f   an AST or js so
47400 75 72 63 65 20 61 6e 64 20 72 65 74 75 72 6e 73  urce and returns
47410 20 61 6e 20 41 53 54 0a 20 20 66 75 6e 63 74 69   an AST.  functi
47420 6f 6e 20 70 72 65 70 61 72 65 41 73 74 28 73 72  on prepareAst(sr
47430 63 29 7b 0a 20 20 20 20 76 61 72 20 74 72 65 65  c){.    var tree
47440 20 3d 20 28 74 79 70 65 6f 66 20 73 72 63 20 3d   = (typeof src =
47450 3d 3d 20 27 73 74 72 69 6e 67 27 29 20 3f 20 70  == 'string') ? p
47460 61 72 73 65 28 73 72 63 29 20 3a 20 73 72 63 3b  arse(src) : src;
47470 0a 20 20 20 20 72 65 74 75 72 6e 20 69 6e 64 65  .    return inde
47480 78 28 74 72 65 65 29 0a 20 20 7d 0a 0a 20 20 2f  x(tree).  }..  /
47490 2f 20 65 76 61 6c 75 61 74 65 20 61 6e 20 41 53  / evaluate an AS
474a0 54 20 69 6e 20 74 68 65 20 67 69 76 65 6e 20 63  T in the given c
474b0 6f 6e 74 65 78 74 0a 20 20 66 75 6e 63 74 69 6f  ontext.  functio
474c0 6e 20 65 76 61 6c 75 61 74 65 41 73 74 28 74 72  n evaluateAst(tr
474d0 65 65 2c 20 63 6f 6e 74 65 78 74 29 7b 0a 0a 20  ee, context){.. 
474e0 20 20 20 76 61 72 20 73 61 66 65 46 75 6e 63 74     var safeFunct
474f0 69 6f 6e 20 3d 20 46 75 6e 63 74 69 6f 6e 46 61  ion = FunctionFa
47500 63 74 6f 72 79 28 63 6f 6e 74 65 78 74 29 3b 0a  ctory(context);.
47510 20 20 20 20 76 61 72 20 70 72 69 6d 69 74 69 76      var primitiv
47520 65 73 20 3d 20 50 72 69 6d 69 74 69 76 65 73 28  es = Primitives(
47530 63 6f 6e 74 65 78 74 29 3b 0a 0a 20 20 20 20 2f  context);..    /
47540 2f 20 62 6c 6f 63 6b 20 73 63 6f 70 65 64 20 63  / block scoped c
47550 6f 6e 74 65 78 74 20 66 6f 72 20 63 61 74 63 68  ontext for catch
47560 20 28 65 78 29 20 61 6e 64 20 27 6c 65 74 27 0a   (ex) and 'let'.
47570 20 20 20 20 76 61 72 20 62 6c 6f 63 6b 43 6f 6e      var blockCon
47580 74 65 78 74 20 3d 20 63 6f 6e 74 65 78 74 3b 0a  text = context;.
47590 0a 20 20 20 20 72 65 74 75 72 6e 20 77 61 6c 6b  .    return walk
475a0 28 74 72 65 65 29 0a 0a 20 20 20 20 2f 2f 20 72  (tree)..    // r
475b0 65 63 75 72 73 69 76 65 6c 79 20 77 61 6c 6b 20  ecursively walk 
475c0 65 76 65 72 79 20 6e 6f 64 65 20 69 6e 20 61 6e  every node in an
475d0 20 61 72 72 61 79 0a 20 20 20 20 66 75 6e 63 74   array.    funct
475e0 69 6f 6e 20 77 61 6c 6b 41 6c 6c 28 6e 6f 64 65  ion walkAll(node
475f0 73 29 7b 0a 20 20 20 20 20 20 76 61 72 20 72 65  s){.      var re
47600 73 75 6c 74 20 3d 20 75 6e 64 65 66 69 6e 65 64  sult = undefined
47610 3b 0a 20 20 20 20 20 20 66 6f 72 20 28 76 61 72  ;.      for (var
47620 20 69 3d 30 3b 69 3c 6e 6f 64 65 73 2e 6c 65 6e   i=0;i<nodes.len
47630 67 74 68 3b 69 2b 2b 29 7b 0a 20 20 20 20 20 20  gth;i++){.      
47640 20 20 76 61 72 20 63 68 69 6c 64 4e 6f 64 65 20    var childNode 
47650 3d 20 6e 6f 64 65 73 5b 69 5d 3b 0a 20 20 20 20  = nodes[i];.    
47660 20 20 20 20 69 66 20 28 63 68 69 6c 64 4e 6f 64      if (childNod
47670 65 2e 74 79 70 65 20 3d 3d 3d 20 27 45 6d 70 74  e.type === 'Empt
47680 79 53 74 61 74 65 6d 65 6e 74 27 29 20 7b 20 63  yStatement') { c
47690 6f 6e 74 69 6e 75 65 20 7d 0a 20 20 20 20 20 20  ontinue }.      
476a0 20 20 72 65 73 75 6c 74 20 3d 20 77 61 6c 6b 28    result = walk(
476b0 63 68 69 6c 64 4e 6f 64 65 29 3b 0a 20 20 20 20  childNode);.    
476c0 20 20 20 20 69 66 20 28 72 65 73 75 6c 74 20 69      if (result i
476d0 6e 73 74 61 6e 63 65 6f 66 20 52 65 74 75 72 6e  nstanceof Return
476e0 56 61 6c 75 65 29 7b 0a 20 20 20 20 20 20 20 20  Value){.        
476f0 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 0a    return result.
47700 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20          }.      
47710 7d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 72  }.      return r
47720 65 73 75 6c 74 0a 20 20 20 20 7d 0a 0a 20 20 20  esult.    }..   
47730 20 2f 2f 20 72 65 63 75 72 73 69 76 65 6c 79 20   // recursively 
47740 65 76 61 6c 75 74 61 74 65 20 74 68 65 20 6e 6f  evalutate the no
47750 64 65 20 6f 66 20 61 6e 20 41 53 54 0a 20 20 20  de of an AST.   
47760 20 66 75 6e 63 74 69 6f 6e 20 77 61 6c 6b 28 6e   function walk(n
47770 6f 64 65 29 7b 0a 20 20 20 20 20 20 69 66 20 28  ode){.      if (
47780 21 6e 6f 64 65 29 20 7b 20 72 65 74 75 72 6e 20  !node) { return 
47790 7d 0a 0a 20 20 20 20 20 20 73 77 69 74 63 68 20  }..      switch 
477a0 28 6e 6f 64 65 2e 74 79 70 65 29 20 7b 0a 0a 20  (node.type) {.. 
477b0 20 20 20 20 20 20 20 63 61 73 65 20 27 50 72 6f         case 'Pro
477c0 67 72 61 6d 27 3a 0a 20 20 20 20 20 20 20 20 20  gram':.         
477d0 20 72 65 74 75 72 6e 20 77 61 6c 6b 41 6c 6c 28   return walkAll(
477e0 6e 6f 64 65 2e 62 6f 64 79 20 29 0a 0a 20 20 20  node.body )..   
477f0 20 20 20 20 20 63 61 73 65 20 27 42 6c 6f 63 6b       case 'Block
47800 53 74 61 74 65 6d 65 6e 74 27 3a 0a 20 20 20 20  Statement':.    
47810 20 20 20 20 20 20 65 6e 74 65 72 42 6c 6f 63 6b        enterBlock
47820 28 29 3b 0a 20 20 20 20 20 20 20 20 20 20 76 61  ();.          va
47830 72 20 72 65 73 75 6c 74 20 3d 20 77 61 6c 6b 41  r result = walkA
47840 6c 6c 28 6e 6f 64 65 2e 62 6f 64 79 29 3b 0a 20  ll(node.body);. 
47850 20 20 20 20 20 20 20 20 20 6c 65 61 76 65 42 6c           leaveBl
47860 6f 63 6b 28 29 3b 0a 20 20 20 20 20 20 20 20 20  ock();.         
47870 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 0a 0a   return result..
47880 20 20 20 20 20 20 20 20 63 61 73 65 20 27 53 65          case 'Se
47890 71 75 65 6e 63 65 45 78 70 72 65 73 73 69 6f 6e  quenceExpression
478a0 27 3a 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ':.          ret
478b0 75 72 6e 20 77 61 6c 6b 41 6c 6c 28 6e 6f 64 65  urn walkAll(node
478c0 2e 65 78 70 72 65 73 73 69 6f 6e 73 29 0a 0a 20  .expressions).. 
478d0 20 20 20 20 20 20 20 63 61 73 65 20 27 46 75 6e         case 'Fun
478e0 63 74 69 6f 6e 44 65 63 6c 61 72 61 74 69 6f 6e  ctionDeclaration
478f0 27 3a 0a 20 20 20 20 20 20 20 20 20 20 76 61 72  ':.          var
47900 20 70 61 72 61 6d 73 20 3d 20 6e 6f 64 65 2e 70   params = node.p
47910 61 72 61 6d 73 2e 6d 61 70 28 67 65 74 4e 61 6d  arams.map(getNam
47920 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 76 61  e);.          va
47930 72 20 76 61 6c 75 65 20 3d 20 67 65 74 46 75 6e  r value = getFun
47940 63 74 69 6f 6e 28 6e 6f 64 65 2e 62 6f 64 79 2c  ction(node.body,
47950 20 70 61 72 61 6d 73 2c 20 62 6c 6f 63 6b 43 6f   params, blockCo
47960 6e 74 65 78 74 29 3b 0a 20 20 20 20 20 20 20 20  ntext);.        
47970 20 20 72 65 74 75 72 6e 20 63 6f 6e 74 65 78 74    return context
47980 5b 6e 6f 64 65 2e 69 64 2e 6e 61 6d 65 5d 20 3d  [node.id.name] =
47990 20 76 61 6c 75 65 0a 0a 20 20 20 20 20 20 20 20   value..        
479a0 63 61 73 65 20 27 46 75 6e 63 74 69 6f 6e 45 78  case 'FunctionEx
479b0 70 72 65 73 73 69 6f 6e 27 3a 0a 20 20 20 20 20  pression':.     
479c0 20 20 20 20 20 76 61 72 20 70 61 72 61 6d 73 20       var params 
479d0 3d 20 6e 6f 64 65 2e 70 61 72 61 6d 73 2e 6d 61  = node.params.ma
479e0 70 28 67 65 74 4e 61 6d 65 29 3b 0a 20 20 20 20  p(getName);.    
479f0 20 20 20 20 20 20 72 65 74 75 72 6e 20 67 65 74        return get
47a00 46 75 6e 63 74 69 6f 6e 28 6e 6f 64 65 2e 62 6f  Function(node.bo
47a10 64 79 2c 20 70 61 72 61 6d 73 2c 20 62 6c 6f 63  dy, params, bloc
47a20 6b 43 6f 6e 74 65 78 74 29 0a 0a 20 20 20 20 20  kContext)..     
47a30 20 20 20 63 61 73 65 20 27 52 65 74 75 72 6e 53     case 'ReturnS
47a40 74 61 74 65 6d 65 6e 74 27 3a 0a 20 20 20 20 20  tatement':.     
47a50 20 20 20 20 20 76 61 72 20 76 61 6c 75 65 20 3d       var value =
47a60 20 77 61 6c 6b 28 6e 6f 64 65 2e 61 72 67 75 6d   walk(node.argum
47a70 65 6e 74 29 3b 0a 20 20 20 20 20 20 20 20 20 20  ent);.          
47a80 72 65 74 75 72 6e 20 6e 65 77 20 52 65 74 75 72  return new Retur
47a90 6e 56 61 6c 75 65 28 27 72 65 74 75 72 6e 27 2c  nValue('return',
47aa0 20 76 61 6c 75 65 29 0a 0a 20 20 20 20 20 20 20   value)..       
47ab0 20 63 61 73 65 20 27 42 72 65 61 6b 53 74 61 74   case 'BreakStat
47ac0 65 6d 65 6e 74 27 3a 0a 20 20 20 20 20 20 20 20  ement':.        
47ad0 20 20 72 65 74 75 72 6e 20 6e 65 77 20 52 65 74    return new Ret
47ae0 75 72 6e 56 61 6c 75 65 28 27 62 72 65 61 6b 27  urnValue('break'
47af0 29 0a 0a 20 20 20 20 20 20 20 20 63 61 73 65 20  )..        case 
47b00 27 43 6f 6e 74 69 6e 75 65 53 74 61 74 65 6d 65  'ContinueStateme
47b10 6e 74 27 3a 0a 20 20 20 20 20 20 20 20 20 20 72  nt':.          r
47b20 65 74 75 72 6e 20 6e 65 77 20 52 65 74 75 72 6e  eturn new Return
47b30 56 61 6c 75 65 28 27 63 6f 6e 74 69 6e 75 65 27  Value('continue'
47b40 29 0a 0a 20 20 20 20 20 20 20 20 63 61 73 65 20  )..        case 
47b50 27 45 78 70 72 65 73 73 69 6f 6e 53 74 61 74 65  'ExpressionState
47b60 6d 65 6e 74 27 3a 0a 20 20 20 20 20 20 20 20 20  ment':.         
47b70 20 72 65 74 75 72 6e 20 77 61 6c 6b 28 6e 6f 64   return walk(nod
47b80 65 2e 65 78 70 72 65 73 73 69 6f 6e 29 0a 0a 20  e.expression).. 
47b90 20 20 20 20 20 20 20 63 61 73 65 20 27 41 73 73         case 'Ass
47ba0 69 67 6e 6d 65 6e 74 45 78 70 72 65 73 73 69 6f  ignmentExpressio
47bb0 6e 27 3a 0a 20 20 20 20 20 20 20 20 20 20 72 65  n':.          re
47bc0 74 75 72 6e 20 73 65 74 56 61 6c 75 65 28 62 6c  turn setValue(bl
47bd0 6f 63 6b 43 6f 6e 74 65 78 74 2c 20 6e 6f 64 65  ockContext, node
47be0 2e 6c 65 66 74 2c 20 6e 6f 64 65 2e 72 69 67 68  .left, node.righ
47bf0 74 2c 20 6e 6f 64 65 2e 6f 70 65 72 61 74 6f 72  t, node.operator
47c00 29 0a 0a 20 20 20 20 20 20 20 20 63 61 73 65 20  )..        case 
47c10 27 55 70 64 61 74 65 45 78 70 72 65 73 73 69 6f  'UpdateExpressio
47c20 6e 27 3a 0a 20 20 20 20 20 20 20 20 20 20 72 65  n':.          re
47c30 74 75 72 6e 20 73 65 74 56 61 6c 75 65 28 62 6c  turn setValue(bl
47c40 6f 63 6b 43 6f 6e 74 65 78 74 2c 20 6e 6f 64 65  ockContext, node
47c50 2e 61 72 67 75 6d 65 6e 74 2c 20 6e 75 6c 6c 2c  .argument, null,
47c60 20 6e 6f 64 65 2e 6f 70 65 72 61 74 6f 72 29 0a   node.operator).
47c70 0a 20 20 20 20 20 20 20 20 63 61 73 65 20 27 56  .        case 'V
47c80 61 72 69 61 62 6c 65 44 65 63 6c 61 72 61 74 69  ariableDeclarati
47c90 6f 6e 27 3a 0a 20 20 20 20 20 20 20 20 20 20 6e  on':.          n
47ca0 6f 64 65 2e 64 65 63 6c 61 72 61 74 69 6f 6e 73  ode.declarations
47cb0 2e 66 6f 72 45 61 63 68 28 66 75 6e 63 74 69 6f  .forEach(functio
47cc0 6e 28 64 65 63 6c 61 72 61 74 69 6f 6e 29 7b 0a  n(declaration){.
47cd0 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20              var 
47ce0 74 61 72 67 65 74 20 3d 20 6e 6f 64 65 2e 6b 69  target = node.ki
47cf0 6e 64 20 3d 3d 3d 20 27 6c 65 74 27 20 3f 20 62  nd === 'let' ? b
47d00 6c 6f 63 6b 43 6f 6e 74 65 78 74 20 3a 20 63 6f  lockContext : co
47d10 6e 74 65 78 74 3b 0a 20 20 20 20 20 20 20 20 20  ntext;.         
47d20 20 20 20 69 66 20 28 64 65 63 6c 61 72 61 74 69     if (declarati
47d30 6f 6e 2e 69 6e 69 74 29 7b 0a 20 20 20 20 20 20  on.init){.      
47d40 20 20 20 20 20 20 20 20 74 61 72 67 65 74 5b 64          target[d
47d50 65 63 6c 61 72 61 74 69 6f 6e 2e 69 64 2e 6e 61  eclaration.id.na
47d60 6d 65 5d 20 3d 20 77 61 6c 6b 28 64 65 63 6c 61  me] = walk(decla
47d70 72 61 74 69 6f 6e 2e 69 6e 69 74 29 3b 0a 20 20  ration.init);.  
47d80 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65            } else
47d90 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   {.             
47da0 20 74 61 72 67 65 74 5b 64 65 63 6c 61 72 61 74   target[declarat
47db0 69 6f 6e 2e 69 64 2e 6e 61 6d 65 5d 20 3d 20 75  ion.id.name] = u
47dc0 6e 64 65 66 69 6e 65 64 3b 0a 20 20 20 20 20 20  ndefined;.      
47dd0 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20        }.        
47de0 20 20 7d 29 3b 0a 20 20 20 20 20 20 20 20 20 20    });.          
47df0 62 72 65 61 6b 0a 0a 20 20 20 20 20 20 20 20 63  break..        c
47e00 61 73 65 20 27 53 77 69 74 63 68 53 74 61 74 65  ase 'SwitchState
47e10 6d 65 6e 74 27 3a 0a 20 20 20 20 20 20 20 20 20  ment':.         
47e20 20 76 61 72 20 64 65 66 61 75 6c 74 48 61 6e 64   var defaultHand
47e30 6c 65 72 20 3d 20 6e 75 6c 6c 3b 0a 20 20 20 20  ler = null;.    
47e40 20 20 20 20 20 20 76 61 72 20 6d 61 74 63 68 65        var matche
47e50 64 20 3d 20 66 61 6c 73 65 3b 0a 20 20 20 20 20  d = false;.     
47e60 20 20 20 20 20 76 61 72 20 76 61 6c 75 65 20 3d       var value =
47e70 20 77 61 6c 6b 28 6e 6f 64 65 2e 64 69 73 63 72   walk(node.discr
47e80 69 6d 69 6e 61 6e 74 29 3b 0a 20 20 20 20 20 20  iminant);.      
47e90 20 20 20 20 76 61 72 20 72 65 73 75 6c 74 20 3d      var result =
47ea0 20 75 6e 64 65 66 69 6e 65 64 3b 0a 0a 20 20 20   undefined;..   
47eb0 20 20 20 20 20 20 20 65 6e 74 65 72 42 6c 6f 63         enterBloc
47ec0 6b 28 29 3b 0a 0a 20 20 20 20 20 20 20 20 20 20  k();..          
47ed0 76 61 72 20 69 20 3d 20 30 3b 0a 20 20 20 20 20  var i = 0;.     
47ee0 20 20 20 20 20 77 68 69 6c 65 20 28 72 65 73 75       while (resu
47ef0 6c 74 20 3d 3d 20 6e 75 6c 6c 29 7b 0a 20 20 20  lt == null){.   
47f00 20 20 20 20 20 20 20 20 20 69 66 20 28 69 3c 6e           if (i<n
47f10 6f 64 65 2e 63 61 73 65 73 2e 6c 65 6e 67 74 68  ode.cases.length
47f20 29 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ){.             
47f30 20 69 66 20 28 6e 6f 64 65 2e 63 61 73 65 73 5b   if (node.cases[
47f40 69 5d 2e 74 65 73 74 29 7b 20 2f 2f 20 63 68 65  i].test){ // che
47f50 63 6b 20 6f 72 20 66 61 6c 6c 20 74 68 72 6f 75  ck or fall throu
47f60 67 68 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  gh.             
47f70 20 20 20 6d 61 74 63 68 65 64 20 3d 20 6d 61 74     matched = mat
47f80 63 68 65 64 20 7c 7c 20 28 77 61 6c 6b 28 6e 6f  ched || (walk(no
47f90 64 65 2e 63 61 73 65 73 5b 69 5d 2e 74 65 73 74  de.cases[i].test
47fa0 29 20 3d 3d 3d 20 76 61 6c 75 65 29 3b 0a 20 20  ) === value);.  
47fb0 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c              } el
47fc0 73 65 20 69 66 20 28 64 65 66 61 75 6c 74 48 61  se if (defaultHa
47fd0 6e 64 6c 65 72 20 3d 3d 20 6e 75 6c 6c 29 20 7b  ndler == null) {
47fe0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
47ff0 20 64 65 66 61 75 6c 74 48 61 6e 64 6c 65 72 20   defaultHandler 
48000 3d 20 69 3b 0a 20 20 20 20 20 20 20 20 20 20 20  = i;.           
48010 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20     }.           
48020 20 20 20 69 66 20 28 6d 61 74 63 68 65 64 29 7b     if (matched){
48030 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
48040 20 76 61 72 20 72 20 3d 20 77 61 6c 6b 41 6c 6c   var r = walkAll
48050 28 6e 6f 64 65 2e 63 61 73 65 73 5b 69 5d 2e 63  (node.cases[i].c
48060 6f 6e 73 65 71 75 65 6e 74 29 3b 0a 20 20 20 20  onsequent);.    
48070 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
48080 72 20 69 6e 73 74 61 6e 63 65 6f 66 20 52 65 74  r instanceof Ret
48090 75 72 6e 56 61 6c 75 65 29 7b 20 2f 2f 20 62 72  urnValue){ // br
480a0 65 61 6b 20 6f 75 74 0a 20 20 20 20 20 20 20 20  eak out.        
480b0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 72 2e            if (r.
480c0 74 79 70 65 20 3d 3d 20 27 62 72 65 61 6b 27 29  type == 'break')
480d0 20 7b 20 62 72 65 61 6b 20 7d 0a 20 20 20 20 20   { break }.     
480e0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73               res
480f0 75 6c 74 20 3d 20 72 3b 0a 20 20 20 20 20 20 20  ult = r;.       
48100 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20           }.     
48110 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20           }.     
48120 20 20 20 20 20 20 20 20 20 69 20 2b 3d 20 31 3b           i += 1;
48130 20 2f 2f 20 63 6f 6e 74 69 6e 75 65 0a 20 20 20   // continue.   
48140 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20           } else 
48150 69 66 20 28 21 6d 61 74 63 68 65 64 20 26 26 20  if (!matched && 
48160 64 65 66 61 75 6c 74 48 61 6e 64 6c 65 72 20 21  defaultHandler !
48170 3d 20 6e 75 6c 6c 29 7b 0a 20 20 20 20 20 20 20  = null){.       
48180 20 20 20 20 20 20 20 2f 2f 20 67 6f 20 62 61 63         // go bac
48190 6b 20 61 6e 64 20 64 6f 20 74 68 65 20 64 65 66  k and do the def
481a0 61 75 6c 74 20 68 61 6e 64 6c 65 72 0a 20 20 20  ault handler.   
481b0 20 20 20 20 20 20 20 20 20 20 20 69 20 3d 20 64             i = d
481c0 65 66 61 75 6c 74 48 61 6e 64 6c 65 72 3b 0a 20  efaultHandler;. 
481d0 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 61 74               mat
481e0 63 68 65 64 20 3d 20 74 72 75 65 3b 0a 20 20 20  ched = true;.   
481f0 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20           } else 
48200 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  {.              
48210 2f 2f 20 6e 6f 74 68 69 6e 67 20 77 65 20 63 61  // nothing we ca
48220 6e 20 64 6f 0a 20 20 20 20 20 20 20 20 20 20 20  n do.           
48230 20 20 20 62 72 65 61 6b 0a 20 20 20 20 20 20 20     break.       
48240 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20       }.         
48250 20 7d 0a 0a 20 20 20 20 20 20 20 20 20 20 6c 65   }..          le
48260 61 76 65 42 6c 6f 63 6b 28 29 3b 0a 20 20 20 20  aveBlock();.    
48270 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73        return res
48280 75 6c 74 0a 0a 20 20 20 20 20 20 20 20 63 61 73  ult..        cas
48290 65 20 27 49 66 53 74 61 74 65 6d 65 6e 74 27 3a  e 'IfStatement':
482a0 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 77  .          if (w
482b0 61 6c 6b 28 6e 6f 64 65 2e 74 65 73 74 29 29 7b  alk(node.test)){
482c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
482d0 75 72 6e 20 77 61 6c 6b 28 6e 6f 64 65 2e 63 6f  urn walk(node.co
482e0 6e 73 65 71 75 65 6e 74 29 0a 20 20 20 20 20 20  nsequent).      
482f0 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 6e      } else if (n
48300 6f 64 65 2e 61 6c 74 65 72 6e 61 74 65 29 20 7b  ode.alternate) {
48310 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
48320 75 72 6e 20 77 61 6c 6b 28 6e 6f 64 65 2e 61 6c  urn walk(node.al
48330 74 65 72 6e 61 74 65 29 0a 20 20 20 20 20 20 20  ternate).       
48340 20 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 63 61     }..        ca
48350 73 65 20 27 46 6f 72 53 74 61 74 65 6d 65 6e 74  se 'ForStatement
48360 27 3a 0a 20 20 20 20 20 20 20 20 20 20 76 61 72  ':.          var
48370 20 69 6e 66 69 6e 69 74 65 20 3d 20 49 6e 66 69   infinite = Infi
48380 6e 69 74 65 43 68 65 63 6b 65 72 28 6d 61 78 49  niteChecker(maxI
48390 74 65 72 61 74 69 6f 6e 73 29 3b 0a 20 20 20 20  terations);.    
483a0 20 20 20 20 20 20 76 61 72 20 72 65 73 75 6c 74        var result
483b0 20 3d 20 75 6e 64 65 66 69 6e 65 64 3b 0a 0a 20   = undefined;.. 
483c0 20 20 20 20 20 20 20 20 20 65 6e 74 65 72 42 6c           enterBl
483d0 6f 63 6b 28 29 3b 20 2f 2f 20 61 6c 6c 6f 77 20  ock(); // allow 
483e0 6c 65 74 73 20 6f 6e 20 64 65 6c 61 72 61 74 69  lets on delarati
483f0 6f 6e 73 0a 20 20 20 20 20 20 20 20 20 20 66 6f  ons.          fo
48400 72 20 28 77 61 6c 6b 28 6e 6f 64 65 2e 69 6e 69  r (walk(node.ini
48410 74 29 3b 20 77 61 6c 6b 28 6e 6f 64 65 2e 74 65  t); walk(node.te
48420 73 74 29 3b 20 77 61 6c 6b 28 6e 6f 64 65 2e 75  st); walk(node.u
48430 70 64 61 74 65 29 29 7b 0a 20 20 20 20 20 20 20  pdate)){.       
48440 20 20 20 20 20 76 61 72 20 72 20 3d 20 77 61 6c       var r = wal
48450 6b 28 6e 6f 64 65 2e 62 6f 64 79 29 3b 0a 0a 20  k(node.body);.. 
48460 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 68 61             // ha
48470 6e 64 6c 65 20 65 61 72 6c 79 20 72 65 74 75 72  ndle early retur
48480 6e 2c 20 63 6f 6e 74 69 6e 75 65 20 61 6e 64 20  n, continue and 
48490 62 72 65 61 6b 0a 20 20 20 20 20 20 20 20 20 20  break.          
484a0 20 20 69 66 20 28 72 20 69 6e 73 74 61 6e 63 65    if (r instance
484b0 6f 66 20 52 65 74 75 72 6e 56 61 6c 75 65 29 7b  of ReturnValue){
484c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
484d0 66 20 28 72 2e 74 79 70 65 20 3d 3d 20 27 63 6f  f (r.type == 'co
484e0 6e 74 69 6e 75 65 27 29 20 7b 20 63 6f 6e 74 69  ntinue') { conti
484f0 6e 75 65 20 7d 0a 20 20 20 20 20 20 20 20 20 20  nue }.          
48500 20 20 20 20 69 66 20 28 72 2e 74 79 70 65 20 3d      if (r.type =
48510 3d 20 27 62 72 65 61 6b 27 29 20 7b 20 62 72 65  = 'break') { bre
48520 61 6b 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20  ak }.           
48530 20 20 20 72 65 73 75 6c 74 20 3d 20 72 3b 0a 20     result = r;. 
48540 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65               bre
48550 61 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ak.            }
48560 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
48570 66 69 6e 69 74 65 2e 63 68 65 63 6b 28 29 3b 0a  finite.check();.
48580 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20            }.    
48590 20 20 20 20 20 20 6c 65 61 76 65 42 6c 6f 63 6b        leaveBlock
485a0 28 29 3b 0a 20 20 20 20 20 20 20 20 20 20 72 65  ();.          re
485b0 74 75 72 6e 20 72 65 73 75 6c 74 0a 0a 20 20 20  turn result..   
485c0 20 20 20 20 20 63 61 73 65 20 27 46 6f 72 49 6e       case 'ForIn
485d0 53 74 61 74 65 6d 65 6e 74 27 3a 0a 20 20 20 20  Statement':.    
485e0 20 20 20 20 20 20 76 61 72 20 69 6e 66 69 6e 69        var infini
485f0 74 65 20 3d 20 49 6e 66 69 6e 69 74 65 43 68 65  te = InfiniteChe
48600 63 6b 65 72 28 6d 61 78 49 74 65 72 61 74 69 6f  cker(maxIteratio
48610 6e 73 29 3b 0a 20 20 20 20 20 20 20 20 20 20 76  ns);.          v
48620 61 72 20 72 65 73 75 6c 74 20 3d 20 75 6e 64 65  ar result = unde
48630 66 69 6e 65 64 3b 0a 0a 20 20 20 20 20 20 20 20  fined;..        
48640 20 20 76 61 72 20 76 61 6c 75 65 20 3d 20 77 61    var value = wa
48650 6c 6b 28 6e 6f 64 65 2e 72 69 67 68 74 29 3b 0a  lk(node.right);.
48660 20 20 20 20 20 20 20 20 20 20 76 61 72 20 70 72            var pr
48670 6f 70 65 72 74 79 20 3d 20 6e 6f 64 65 2e 6c 65  operty = node.le
48680 66 74 3b 0a 0a 20 20 20 20 20 20 20 20 20 20 76  ft;..          v
48690 61 72 20 74 61 72 67 65 74 20 3d 20 63 6f 6e 74  ar target = cont
486a0 65 78 74 3b 0a 20 20 20 20 20 20 20 20 20 20 65  ext;.          e
486b0 6e 74 65 72 42 6c 6f 63 6b 28 29 3b 0a 0a 20 20  nterBlock();..  
486c0 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 70          if (prop
486d0 65 72 74 79 2e 74 79 70 65 20 3d 3d 20 27 56 61  erty.type == 'Va
486e0 72 69 61 62 6c 65 44 65 63 6c 61 72 61 74 69 6f  riableDeclaratio
486f0 6e 27 29 7b 0a 20 20 20 20 20 20 20 20 20 20 20  n'){.           
48700 20 77 61 6c 6b 28 70 72 6f 70 65 72 74 79 29 3b   walk(property);
48710 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f  .            pro
48720 70 65 72 74 79 20 3d 20 70 72 6f 70 65 72 74 79  perty = property
48730 2e 64 65 63 6c 61 72 61 74 69 6f 6e 73 5b 30 5d  .declarations[0]
48740 2e 69 64 3b 0a 20 20 20 20 20 20 20 20 20 20 20  .id;.           
48750 20 69 66 20 28 70 72 6f 70 65 72 74 79 2e 6b 69   if (property.ki
48760 6e 64 20 3d 3d 3d 20 27 6c 65 74 27 29 7b 0a 20  nd === 'let'){. 
48770 20 20 20 20 20 20 20 20 20 20 20 20 20 74 61 72               tar
48780 67 65 74 20 3d 20 62 6c 6f 63 6b 43 6f 6e 74 65  get = blockConte
48790 78 74 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  xt;.            
487a0 7d 0a 20 20 20 20 20 20 20 20 20 20 7d 0a 0a 20  }.          }.. 
487b0 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 76 61           for (va
487c0 72 20 6b 65 79 20 69 6e 20 76 61 6c 75 65 29 7b  r key in value){
487d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74  .            set
487e0 56 61 6c 75 65 28 74 61 72 67 65 74 2c 20 70 72  Value(target, pr
487f0 6f 70 65 72 74 79 2c 20 7b 74 79 70 65 3a 20 27  operty, {type: '
48800 4c 69 74 65 72 61 6c 27 2c 20 76 61 6c 75 65 3a  Literal', value:
48810 20 6b 65 79 7d 29 3b 0a 20 20 20 20 20 20 20 20   key});.        
48820 20 20 20 20 76 61 72 20 72 20 3d 20 77 61 6c 6b      var r = walk
48830 28 6e 6f 64 65 2e 62 6f 64 79 29 3b 0a 0a 20 20  (node.body);..  
48840 20 20 20 20 20 20 20 20 20 20 2f 2f 20 68 61 6e            // han
48850 64 6c 65 20 65 61 72 6c 79 20 72 65 74 75 72 6e  dle early return
48860 2c 20 63 6f 6e 74 69 6e 75 65 20 61 6e 64 20 62  , continue and b
48870 72 65 61 6b 0a 20 20 20 20 20 20 20 20 20 20 20  reak.           
48880 20 69 66 20 28 72 20 69 6e 73 74 61 6e 63 65 6f   if (r instanceo
48890 66 20 52 65 74 75 72 6e 56 61 6c 75 65 29 7b 0a  f ReturnValue){.
488a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
488b0 20 28 72 2e 74 79 70 65 20 3d 3d 20 27 63 6f 6e   (r.type == 'con
488c0 74 69 6e 75 65 27 29 20 7b 20 63 6f 6e 74 69 6e  tinue') { contin
488d0 75 65 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20  ue }.           
488e0 20 20 20 69 66 20 28 72 2e 74 79 70 65 20 3d 3d     if (r.type ==
488f0 20 27 62 72 65 61 6b 27 29 20 7b 20 62 72 65 61   'break') { brea
48900 6b 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k }.            
48910 20 20 72 65 73 75 6c 74 20 3d 20 72 3b 0a 20 20    result = r;.  
48920 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61              brea
48930 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a  k.            }.
48940 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 66  .            inf
48950 69 6e 69 74 65 2e 63 68 65 63 6b 28 29 3b 0a 20  inite.check();. 
48960 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20           }.     
48970 20 20 20 20 20 6c 65 61 76 65 42 6c 6f 63 6b 28       leaveBlock(
48980 29 3b 0a 0a 20 20 20 20 20 20 20 20 20 20 72 65  );..          re
48990 74 75 72 6e 20 72 65 73 75 6c 74 0a 0a 20 20 20  turn result..   
489a0 20 20 20 20 20 63 61 73 65 20 27 57 68 69 6c 65       case 'While
489b0 53 74 61 74 65 6d 65 6e 74 27 3a 0a 20 20 20 20  Statement':.    
489c0 20 20 20 20 20 20 76 61 72 20 69 6e 66 69 6e 69        var infini
489d0 74 65 20 3d 20 49 6e 66 69 6e 69 74 65 43 68 65  te = InfiniteChe
489e0 63 6b 65 72 28 6d 61 78 49 74 65 72 61 74 69 6f  cker(maxIteratio
489f0 6e 73 29 3b 0a 20 20 20 20 20 20 20 20 20 20 77  ns);.          w
48a00 68 69 6c 65 20 28 77 61 6c 6b 28 6e 6f 64 65 2e  hile (walk(node.
48a10 74 65 73 74 29 29 7b 0a 20 20 20 20 20 20 20 20  test)){.        
48a20 20 20 20 20 77 61 6c 6b 28 6e 6f 64 65 2e 62 6f      walk(node.bo
48a30 64 79 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20  dy);.           
48a40 20 69 6e 66 69 6e 69 74 65 2e 63 68 65 63 6b 28   infinite.check(
48a50 29 3b 0a 20 20 20 20 20 20 20 20 20 20 7d 0a 20  );.          }. 
48a60 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 0a 0a           break..
48a70 20 20 20 20 20 20 20 20 63 61 73 65 20 27 54 72          case 'Tr
48a80 79 53 74 61 74 65 6d 65 6e 74 27 3a 0a 20 20 20  yStatement':.   
48a90 20 20 20 20 20 20 20 74 72 79 20 7b 0a 20 20 20         try {.   
48aa0 20 20 20 20 20 20 20 20 20 77 61 6c 6b 28 6e 6f           walk(no
48ab0 64 65 2e 62 6c 6f 63 6b 29 3b 0a 20 20 20 20 20  de.block);.     
48ac0 20 20 20 20 20 7d 20 63 61 74 63 68 20 28 65 72       } catch (er
48ad0 72 6f 72 29 20 7b 0a 20 20 20 20 20 20 20 20 20  ror) {.         
48ae0 20 20 20 65 6e 74 65 72 42 6c 6f 63 6b 28 29 3b     enterBlock();
48af0 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72  .            var
48b00 20 63 61 74 63 68 43 6c 61 75 73 65 20 3d 20 6e   catchClause = n
48b10 6f 64 65 2e 68 61 6e 64 6c 65 72 73 5b 30 5d 3b  ode.handlers[0];
48b20 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
48b30 28 63 61 74 63 68 43 6c 61 75 73 65 29 20 7b 0a  (catchClause) {.
48b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6c                bl
48b50 6f 63 6b 43 6f 6e 74 65 78 74 5b 63 61 74 63 68  ockContext[catch
48b60 43 6c 61 75 73 65 2e 70 61 72 61 6d 2e 6e 61 6d  Clause.param.nam
48b70 65 5d 20 3d 20 65 72 72 6f 72 3b 0a 20 20 20 20  e] = error;.    
48b80 20 20 20 20 20 20 20 20 20 20 77 61 6c 6b 28 63            walk(c
48b90 61 74 63 68 43 6c 61 75 73 65 2e 62 6f 64 79 29  atchClause.body)
48ba0 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a  ;.            }.
48bb0 20 20 20 20 20 20 20 20 20 20 20 20 6c 65 61 76              leav
48bc0 65 42 6c 6f 63 6b 28 29 3b 0a 20 20 20 20 20 20  eBlock();.      
48bd0 20 20 20 20 7d 20 66 69 6e 61 6c 6c 79 20 7b 0a      } finally {.
48be0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
48bf0 6e 6f 64 65 2e 66 69 6e 61 6c 69 7a 65 72 29 20  node.finalizer) 
48c00 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  {.              
48c10 77 61 6c 6b 28 6e 6f 64 65 2e 66 69 6e 61 6c 69  walk(node.finali
48c20 7a 65 72 29 3b 0a 20 20 20 20 20 20 20 20 20 20  zer);.          
48c30 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 7d 0a    }.          }.
48c40 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 0a            break.
48c50 0a 20 20 20 20 20 20 20 20 63 61 73 65 20 27 4c  .        case 'L
48c60 69 74 65 72 61 6c 27 3a 0a 20 20 20 20 20 20 20  iteral':.       
48c70 20 20 20 72 65 74 75 72 6e 20 6e 6f 64 65 2e 76     return node.v
48c80 61 6c 75 65 0a 0a 20 20 20 20 20 20 20 20 63 61  alue..        ca
48c90 73 65 20 27 55 6e 61 72 79 45 78 70 72 65 73 73  se 'UnaryExpress
48ca0 69 6f 6e 27 3a 0a 20 20 20 20 20 20 20 20 20 20  ion':.          
48cb0 76 61 72 20 76 61 6c 20 3d 20 77 61 6c 6b 28 6e  var val = walk(n
48cc0 6f 64 65 2e 61 72 67 75 6d 65 6e 74 29 3b 0a 20  ode.argument);. 
48cd0 20 20 20 20 20 20 20 20 20 73 77 69 74 63 68 28           switch(
48ce0 6e 6f 64 65 2e 6f 70 65 72 61 74 6f 72 29 20 7b  node.operator) {
48cf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73  .            cas
48d00 65 20 27 2b 27 3a 20 72 65 74 75 72 6e 20 2b 76  e '+': return +v
48d10 61 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  al.            c
48d20 61 73 65 20 27 2d 27 3a 20 72 65 74 75 72 6e 20  ase '-': return 
48d30 2d 76 61 6c 0a 20 20 20 20 20 20 20 20 20 20 20  -val.           
48d40 20 63 61 73 65 20 27 7e 27 3a 20 72 65 74 75 72   case '~': retur
48d50 6e 20 7e 76 61 6c 0a 20 20 20 20 20 20 20 20 20  n ~val.         
48d60 20 20 20 63 61 73 65 20 27 21 27 3a 20 72 65 74     case '!': ret
48d70 75 72 6e 20 21 76 61 6c 0a 20 20 20 20 20 20 20  urn !val.       
48d80 20 20 20 20 20 63 61 73 65 20 27 76 6f 69 64 27       case 'void'
48d90 3a 20 72 65 74 75 72 6e 20 76 6f 69 64 20 76 61  : return void va
48da0 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61  l.            ca
48db0 73 65 20 27 74 79 70 65 6f 66 27 3a 20 72 65 74  se 'typeof': ret
48dc0 75 72 6e 20 74 79 70 65 6f 66 20 76 61 6c 0a 20  urn typeof val. 
48dd0 20 20 20 20 20 20 20 20 20 20 20 64 65 66 61 75             defau
48de0 6c 74 3a 20 72 65 74 75 72 6e 20 75 6e 73 75 70  lt: return unsup
48df0 70 6f 72 74 65 64 45 78 70 72 65 73 73 69 6f 6e  portedExpression
48e00 28 6e 6f 64 65 29 0a 20 20 20 20 20 20 20 20 20  (node).         
48e10 20 7d 0a 0a 20 20 20 20 20 20 20 20 63 61 73 65   }..        case
48e20 20 27 41 72 72 61 79 45 78 70 72 65 73 73 69 6f   'ArrayExpressio
48e30 6e 27 3a 0a 20 20 20 20 20 20 20 20 20 20 76 61  n':.          va
48e40 72 20 6f 62 6a 20 3d 20 62 6c 6f 63 6b 43 6f 6e  r obj = blockCon
48e50 74 65 78 74 5b 27 41 72 72 61 79 27 5d 28 29 3b  text['Array']();
48e60 0a 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28  .          for (
48e70 76 61 72 20 69 3d 30 3b 69 3c 6e 6f 64 65 2e 65  var i=0;i<node.e
48e80 6c 65 6d 65 6e 74 73 2e 6c 65 6e 67 74 68 3b 69  lements.length;i
48e90 2b 2b 29 7b 0a 20 20 20 20 20 20 20 20 20 20 20  ++){.           
48ea0 20 6f 62 6a 2e 70 75 73 68 28 77 61 6c 6b 28 6e   obj.push(walk(n
48eb0 6f 64 65 2e 65 6c 65 6d 65 6e 74 73 5b 69 5d 29  ode.elements[i])
48ec0 29 3b 0a 20 20 20 20 20 20 20 20 20 20 7d 0a 20  );.          }. 
48ed0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
48ee0 6f 62 6a 0a 0a 20 20 20 20 20 20 20 20 63 61 73  obj..        cas
48ef0 65 20 27 4f 62 6a 65 63 74 45 78 70 72 65 73 73  e 'ObjectExpress
48f00 69 6f 6e 27 3a 0a 20 20 20 20 20 20 20 20 20 20  ion':.          
48f10 76 61 72 20 6f 62 6a 20 3d 20 62 6c 6f 63 6b 43  var obj = blockC
48f20 6f 6e 74 65 78 74 5b 27 4f 62 6a 65 63 74 27 5d  ontext['Object']
48f30 28 29 3b 0a 20 20 20 20 20 20 20 20 20 20 66 6f  ();.          fo
48f40 72 20 28 76 61 72 20 69 20 3d 20 30 3b 20 69 20  r (var i = 0; i 
48f50 3c 20 6e 6f 64 65 2e 70 72 6f 70 65 72 74 69 65  < node.propertie
48f60 73 2e 6c 65 6e 67 74 68 3b 20 69 2b 2b 29 20 7b  s.length; i++) {
48f70 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72  .            var
48f80 20 70 72 6f 70 20 3d 20 6e 6f 64 65 2e 70 72 6f   prop = node.pro
48f90 70 65 72 74 69 65 73 5b 69 5d 3b 0a 20 20 20 20  perties[i];.    
48fa0 20 20 20 20 20 20 20 20 76 61 72 20 76 61 6c 75          var valu
48fb0 65 20 3d 20 28 70 72 6f 70 2e 76 61 6c 75 65 20  e = (prop.value 
48fc0 3d 3d 3d 20 6e 75 6c 6c 29 20 3f 20 70 72 6f 70  === null) ? prop
48fd0 2e 76 61 6c 75 65 20 3a 20 77 61 6c 6b 28 70 72  .value : walk(pr
48fe0 6f 70 2e 76 61 6c 75 65 29 3b 0a 20 20 20 20 20  op.value);.     
48ff0 20 20 20 20 20 20 20 6f 62 6a 5b 70 72 6f 70 2e         obj[prop.
49000 6b 65 79 2e 76 61 6c 75 65 20 7c 7c 20 70 72 6f  key.value || pro
49010 70 2e 6b 65 79 2e 6e 61 6d 65 5d 20 3d 20 76 61  p.key.name] = va
49020 6c 75 65 3b 0a 20 20 20 20 20 20 20 20 20 20 7d  lue;.          }
49030 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
49040 6e 20 6f 62 6a 0a 0a 20 20 20 20 20 20 20 20 63  n obj..        c
49050 61 73 65 20 27 4e 65 77 45 78 70 72 65 73 73 69  ase 'NewExpressi
49060 6f 6e 27 3a 0a 20 20 20 20 20 20 20 20 20 20 76  on':.          v
49070 61 72 20 61 72 67 73 20 3d 20 6e 6f 64 65 2e 61  ar args = node.a
49080 72 67 75 6d 65 6e 74 73 2e 6d 61 70 28 66 75 6e  rguments.map(fun
49090 63 74 69 6f 6e 28 61 72 67 29 7b 0a 20 20 20 20  ction(arg){.    
490a0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 77          return w
490b0 61 6c 6b 28 61 72 67 29 0a 20 20 20 20 20 20 20  alk(arg).       
490c0 20 20 20 7d 29 3b 0a 20 20 20 20 20 20 20 20 20     });.         
490d0 20 76 61 72 20 74 61 72 67 65 74 20 3d 20 77 61   var target = wa
490e0 6c 6b 28 6e 6f 64 65 2e 63 61 6c 6c 65 65 29 3b  lk(node.callee);
490f0 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
49100 6e 20 70 72 69 6d 69 74 69 76 65 73 2e 61 70 70  n primitives.app
49110 6c 79 4e 65 77 28 74 61 72 67 65 74 2c 20 61 72  lyNew(target, ar
49120 67 73 29 0a 0a 0a 20 20 20 20 20 20 20 20 63 61  gs)...        ca
49130 73 65 20 27 42 69 6e 61 72 79 45 78 70 72 65 73  se 'BinaryExpres
49140 73 69 6f 6e 27 3a 0a 20 20 20 20 20 20 20 20 20  sion':.         
49150 20 76 61 72 20 6c 20 3d 20 77 61 6c 6b 28 6e 6f   var l = walk(no
49160 64 65 2e 6c 65 66 74 29 3b 0a 20 20 20 20 20 20  de.left);.      
49170 20 20 20 20 76 61 72 20 72 20 3d 20 77 61 6c 6b      var r = walk
49180 28 6e 6f 64 65 2e 72 69 67 68 74 29 3b 0a 0a 20  (node.right);.. 
49190 20 20 20 20 20 20 20 20 20 73 77 69 74 63 68 28           switch(
491a0 6e 6f 64 65 2e 6f 70 65 72 61 74 6f 72 29 20 7b  node.operator) {
491b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73  .            cas
491c0 65 20 27 3d 3d 27 3a 20 20 72 65 74 75 72 6e 20  e '==':  return 
491d0 6c 20 3d 3d 3d 20 72 0a 20 20 20 20 20 20 20 20  l === r.        
491e0 20 20 20 20 63 61 73 65 20 27 3d 3d 3d 27 3a 20      case '===': 
491f0 72 65 74 75 72 6e 20 6c 20 3d 3d 3d 20 72 0a 20  return l === r. 
49200 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
49210 27 21 3d 27 3a 20 20 72 65 74 75 72 6e 20 6c 20  '!=':  return l 
49220 21 3d 20 72 0a 20 20 20 20 20 20 20 20 20 20 20  != r.           
49230 20 63 61 73 65 20 27 21 3d 3d 27 3a 20 72 65 74   case '!==': ret
49240 75 72 6e 20 6c 20 21 3d 3d 20 72 0a 20 20 20 20  urn l !== r.    
49250 20 20 20 20 20 20 20 20 63 61 73 65 20 27 2b 27          case '+'
49260 3a 20 20 20 72 65 74 75 72 6e 20 6c 20 2b 20 72  :   return l + r
49270 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73  .            cas
49280 65 20 27 2d 27 3a 20 20 20 72 65 74 75 72 6e 20  e '-':   return 
49290 6c 20 2d 20 72 0a 20 20 20 20 20 20 20 20 20 20  l - r.          
492a0 20 20 63 61 73 65 20 27 2a 27 3a 20 20 20 72 65    case '*':   re
492b0 74 75 72 6e 20 6c 20 2a 20 72 0a 20 20 20 20 20  turn l * r.     
492c0 20 20 20 20 20 20 20 63 61 73 65 20 27 2f 27 3a         case '/':
492d0 20 20 20 72 65 74 75 72 6e 20 6c 20 2f 20 72 0a     return l / r.
492e0 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
492f0 20 27 25 27 3a 20 20 20 72 65 74 75 72 6e 20 6c   '%':   return l
49300 20 25 20 72 0a 20 20 20 20 20 20 20 20 20 20 20   % r.           
49310 20 63 61 73 65 20 27 3c 27 3a 20 20 20 72 65 74   case '<':   ret
49320 75 72 6e 20 6c 20 3c 20 72 0a 20 20 20 20 20 20  urn l < r.      
49330 20 20 20 20 20 20 63 61 73 65 20 27 3c 3d 27 3a        case '<=':
49340 20 20 72 65 74 75 72 6e 20 6c 20 3c 3d 20 72 0a    return l <= r.
49350 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
49360 20 27 3e 27 3a 20 20 20 72 65 74 75 72 6e 20 6c   '>':   return l
49370 20 3e 20 72 0a 20 20 20 20 20 20 20 20 20 20 20   > r.           
49380 20 63 61 73 65 20 27 3e 3d 27 3a 20 20 72 65 74   case '>=':  ret
49390 75 72 6e 20 6c 20 3e 3d 20 72 0a 20 20 20 20 20  urn l >= r.     
493a0 20 20 20 20 20 20 20 63 61 73 65 20 27 7c 27 3a         case '|':
493b0 20 20 20 72 65 74 75 72 6e 20 6c 20 7c 20 72 0a     return l | r.
493c0 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
493d0 20 27 26 27 3a 20 20 20 72 65 74 75 72 6e 20 6c   '&':   return l
493e0 20 26 20 72 0a 20 20 20 20 20 20 20 20 20 20 20   & r.           
493f0 20 63 61 73 65 20 27 5e 27 3a 20 20 20 72 65 74   case '^':   ret
49400 75 72 6e 20 6c 20 5e 20 72 0a 20 20 20 20 20 20  urn l ^ r.      
49410 20 20 20 20 20 20 63 61 73 65 20 27 69 6e 27 3a        case 'in':
49420 20 20 72 65 74 75 72 6e 20 6c 20 69 6e 20 72 0a    return l in r.
49430 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
49440 20 27 69 6e 73 74 61 6e 63 65 6f 66 27 3a 20 72   'instanceof': r
49450 65 74 75 72 6e 20 6c 20 69 6e 73 74 61 6e 63 65  eturn l instance
49460 6f 66 20 72 0a 20 20 20 20 20 20 20 20 20 20 20  of r.           
49470 20 64 65 66 61 75 6c 74 3a 20 72 65 74 75 72 6e   default: return
49480 20 75 6e 73 75 70 70 6f 72 74 65 64 45 78 70 72   unsupportedExpr
49490 65 73 73 69 6f 6e 28 6e 6f 64 65 29 0a 20 20 20  ession(node).   
494a0 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20         }..      
494b0 20 20 63 61 73 65 20 27 4c 6f 67 69 63 61 6c 45    case 'LogicalE
494c0 78 70 72 65 73 73 69 6f 6e 27 3a 0a 20 20 20 20  xpression':.    
494d0 20 20 20 20 20 20 73 77 69 74 63 68 28 6e 6f 64        switch(nod
494e0 65 2e 6f 70 65 72 61 74 6f 72 29 20 7b 0a 20 20  e.operator) {.  
494f0 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 27            case '
49500 26 26 27 3a 20 20 72 65 74 75 72 6e 20 77 61 6c  &&':  return wal
49510 6b 28 6e 6f 64 65 2e 6c 65 66 74 29 20 26 26 20  k(node.left) && 
49520 77 61 6c 6b 28 6e 6f 64 65 2e 72 69 67 68 74 29  walk(node.right)
49530 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73  .            cas
49540 65 20 27 7c 7c 27 3a 20 20 72 65 74 75 72 6e 20  e '||':  return 
49550 77 61 6c 6b 28 6e 6f 64 65 2e 6c 65 66 74 29 20  walk(node.left) 
49560 7c 7c 20 77 61 6c 6b 28 6e 6f 64 65 2e 72 69 67  || walk(node.rig
49570 68 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  ht).            
49580 64 65 66 61 75 6c 74 3a 20 72 65 74 75 72 6e 20  default: return 
49590 75 6e 73 75 70 70 6f 72 74 65 64 45 78 70 72 65  unsupportedExpre
495a0 73 73 69 6f 6e 28 6e 6f 64 65 29 0a 20 20 20 20  ssion(node).    
495b0 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 20        }..       
495c0 20 63 61 73 65 20 27 54 68 69 73 45 78 70 72 65   case 'ThisExpre
495d0 73 73 69 6f 6e 27 3a 0a 20 20 20 20 20 20 20 20  ssion':.        
495e0 20 20 72 65 74 75 72 6e 20 62 6c 6f 63 6b 43 6f    return blockCo
495f0 6e 74 65 78 74 5b 27 74 68 69 73 27 5d 0a 0a 20  ntext['this'].. 
49600 20 20 20 20 20 20 20 63 61 73 65 20 27 49 64 65         case 'Ide
49610 6e 74 69 66 69 65 72 27 3a 0a 20 20 20 20 20 20  ntifier':.      
49620 20 20 20 20 69 66 20 28 6e 6f 64 65 2e 6e 61 6d      if (node.nam
49630 65 20 3d 3d 3d 20 27 75 6e 64 65 66 69 6e 65 64  e === 'undefined
49640 27 29 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  '){.            
49650 72 65 74 75 72 6e 20 75 6e 64 65 66 69 6e 65 64  return undefined
49660 0a 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73  .          } els
49670 65 20 69 66 20 28 68 61 73 50 72 6f 70 65 72 74  e if (hasPropert
49680 79 28 62 6c 6f 63 6b 43 6f 6e 74 65 78 74 2c 20  y(blockContext, 
49690 6e 6f 64 65 2e 6e 61 6d 65 2c 20 70 72 69 6d 69  node.name, primi
496a0 74 69 76 65 73 29 29 7b 0a 20 20 20 20 20 20 20  tives)){.       
496b0 20 20 20 20 20 72 65 74 75 72 6e 20 66 69 6e 61       return fina
496c0 6c 56 61 6c 75 65 28 62 6c 6f 63 6b 43 6f 6e 74  lValue(blockCont
496d0 65 78 74 5b 6e 6f 64 65 2e 6e 61 6d 65 5d 29 0a  ext[node.name]).
496e0 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65            } else
496f0 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74   {.            t
49700 68 72 6f 77 20 6e 65 77 20 52 65 66 65 72 65 6e  hrow new Referen
49710 63 65 45 72 72 6f 72 28 6e 6f 64 65 2e 6e 61 6d  ceError(node.nam
49720 65 20 2b 20 27 20 69 73 20 6e 6f 74 20 64 65 66  e + ' is not def
49730 69 6e 65 64 27 29 0a 20 20 20 20 20 20 20 20 20  ined').         
49740 20 7d 0a 0a 20 20 20 20 20 20 20 20 63 61 73 65   }..        case
49750 20 27 43 61 6c 6c 45 78 70 72 65 73 73 69 6f 6e   'CallExpression
49760 27 3a 0a 0a 20 20 20 20 20 20 20 20 20 20 76 61  ':..          va
49770 72 20 61 72 67 73 20 3d 20 6e 6f 64 65 2e 61 72  r args = node.ar
49780 67 75 6d 65 6e 74 73 2e 6d 61 70 28 66 75 6e 63  guments.map(func
49790 74 69 6f 6e 28 61 72 67 29 7b 0a 20 20 20 20 20  tion(arg){.     
497a0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 77 61         return wa
497b0 6c 6b 28 61 72 67 29 0a 20 20 20 20 20 20 20 20  lk(arg).        
497c0 20 20 7d 29 3b 0a 20 20 20 20 20 20 20 20 20 20    });.          
497d0 76 61 72 20 6f 62 6a 65 63 74 20 3d 20 6e 75 6c  var object = nul
497e0 6c 3b 0a 20 20 20 20 20 20 20 20 20 20 76 61 72  l;.          var
497f0 20 74 61 72 67 65 74 20 3d 20 77 61 6c 6b 28 6e   target = walk(n
49800 6f 64 65 2e 63 61 6c 6c 65 65 29 3b 0a 0a 20 20  ode.callee);..  
49810 20 20 20 20 20 20 20 20 69 66 20 28 6e 6f 64 65          if (node
49820 2e 63 61 6c 6c 65 65 2e 74 79 70 65 20 3d 3d 3d  .callee.type ===
49830 20 27 4d 65 6d 62 65 72 45 78 70 72 65 73 73 69   'MemberExpressi
49840 6f 6e 27 29 7b 0a 20 20 20 20 20 20 20 20 20 20  on'){.          
49850 20 20 6f 62 6a 65 63 74 20 3d 20 77 61 6c 6b 28    object = walk(
49860 6e 6f 64 65 2e 63 61 6c 6c 65 65 2e 6f 62 6a 65  node.callee.obje
49870 63 74 29 3b 0a 20 20 20 20 20 20 20 20 20 20 7d  ct);.          }
49880 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
49890 6e 20 74 61 72 67 65 74 2e 61 70 70 6c 79 28 6f  n target.apply(o
498a0 62 6a 65 63 74 2c 20 61 72 67 73 29 0a 0a 20 20  bject, args)..  
498b0 20 20 20 20 20 20 63 61 73 65 20 27 4d 65 6d 62        case 'Memb
498c0 65 72 45 78 70 72 65 73 73 69 6f 6e 27 3a 0a 20  erExpression':. 
498d0 20 20 20 20 20 20 20 20 20 76 61 72 20 6f 62 6a           var obj
498e0 20 3d 20 77 61 6c 6b 28 6e 6f 64 65 2e 6f 62 6a   = walk(node.obj
498f0 65 63 74 29 3b 0a 20 20 20 20 20 20 20 20 20 20  ect);.          
49900 69 66 20 28 6e 6f 64 65 2e 63 6f 6d 70 75 74 65  if (node.compute
49910 64 29 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  d){.            
49920 76 61 72 20 70 72 6f 70 20 3d 20 77 61 6c 6b 28  var prop = walk(
49930 6e 6f 64 65 2e 70 72 6f 70 65 72 74 79 29 3b 0a  node.property);.
49940 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65            } else
49950 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 76   {.            v
49960 61 72 20 70 72 6f 70 20 3d 20 6e 6f 64 65 2e 70  ar prop = node.p
49970 72 6f 70 65 72 74 79 2e 6e 61 6d 65 3b 0a 20 20  roperty.name;.  
49980 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20          }.      
49990 20 20 20 20 6f 62 6a 20 3d 20 70 72 69 6d 69 74      obj = primit
499a0 69 76 65 73 2e 67 65 74 50 72 6f 70 65 72 74 79  ives.getProperty
499b0 4f 62 6a 65 63 74 28 6f 62 6a 2c 20 70 72 6f 70  Object(obj, prop
499c0 29 3b 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  );.          ret
499d0 75 72 6e 20 63 68 65 63 6b 56 61 6c 75 65 28 6f  urn checkValue(o
499e0 62 6a 5b 70 72 6f 70 5d 29 3b 0a 0a 20 20 20 20  bj[prop]);..    
499f0 20 20 20 20 63 61 73 65 20 27 43 6f 6e 64 69 74      case 'Condit
49a00 69 6f 6e 61 6c 45 78 70 72 65 73 73 69 6f 6e 27  ionalExpression'
49a10 3a 0a 20 20 20 20 20 20 20 20 20 20 76 61 72 20  :.          var 
49a20 76 61 6c 20 3d 20 77 61 6c 6b 28 6e 6f 64 65 2e  val = walk(node.
49a30 74 65 73 74 29 3b 0a 20 20 20 20 20 20 20 20 20  test);.         
49a40 20 72 65 74 75 72 6e 20 76 61 6c 20 3f 20 77 61   return val ? wa
49a50 6c 6b 28 6e 6f 64 65 2e 63 6f 6e 73 65 71 75 65  lk(node.conseque
49a60 6e 74 29 20 3a 20 77 61 6c 6b 28 6e 6f 64 65 2e  nt) : walk(node.
49a70 61 6c 74 65 72 6e 61 74 65 29 0a 0a 20 20 20 20  alternate)..    
49a80 20 20 20 20 63 61 73 65 20 27 45 6d 70 74 79 53      case 'EmptyS
49a90 74 61 74 65 6d 65 6e 74 27 3a 0a 20 20 20 20 20  tatement':.     
49aa0 20 20 20 20 20 72 65 74 75 72 6e 0a 0a 20 20 20       return..   
49ab0 20 20 20 20 20 64 65 66 61 75 6c 74 3a 0a 20 20       default:.  
49ac0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 75          return u
49ad0 6e 73 75 70 70 6f 72 74 65 64 45 78 70 72 65 73  nsupportedExpres
49ae0 73 69 6f 6e 28 6e 6f 64 65 29 0a 20 20 20 20 20  sion(node).     
49af0 20 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2f   }.    }..    //
49b00 20 73 61 66 65 6c 79 20 72 65 74 72 69 65 76 65   safely retrieve
49b10 20 61 20 76 61 6c 75 65 0a 20 20 20 20 66 75 6e   a value.    fun
49b20 63 74 69 6f 6e 20 63 68 65 63 6b 56 61 6c 75 65  ction checkValue
49b30 28 76 61 6c 75 65 29 7b 0a 20 20 20 20 20 20 69  (value){.      i
49b40 66 20 28 76 61 6c 75 65 20 3d 3d 3d 20 46 75 6e  f (value === Fun
49b50 63 74 69 6f 6e 29 7b 0a 20 20 20 20 20 20 20 20  ction){.        
49b60 76 61 6c 75 65 20 3d 20 73 61 66 65 46 75 6e 63  value = safeFunc
49b70 74 69 6f 6e 3b 0a 20 20 20 20 20 20 7d 0a 20 20  tion;.      }.  
49b80 20 20 20 20 72 65 74 75 72 6e 20 66 69 6e 61 6c      return final
49b90 56 61 6c 75 65 28 76 61 6c 75 65 29 0a 20 20 20  Value(value).   
49ba0 20 7d 0a 0a 20 20 20 20 2f 2f 20 62 6c 6f 63 6b   }..    // block
49bb0 20 73 63 6f 70 65 20 63 6f 6e 74 65 78 74 20 63   scope context c
49bc0 6f 6e 74 72 6f 6c 0a 20 20 20 20 66 75 6e 63 74  ontrol.    funct
49bd0 69 6f 6e 20 65 6e 74 65 72 42 6c 6f 63 6b 28 29  ion enterBlock()
49be0 7b 0a 20 20 20 20 20 20 62 6c 6f 63 6b 43 6f 6e  {.      blockCon
49bf0 74 65 78 74 20 3d 20 4f 62 6a 65 63 74 2e 63 72  text = Object.cr
49c00 65 61 74 65 28 62 6c 6f 63 6b 43 6f 6e 74 65 78  eate(blockContex
49c10 74 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 66 75  t);.    }.    fu
49c20 6e 63 74 69 6f 6e 20 6c 65 61 76 65 42 6c 6f 63  nction leaveBloc
49c30 6b 28 29 7b 0a 20 20 20 20 20 20 62 6c 6f 63 6b  k(){.      block
49c40 43 6f 6e 74 65 78 74 20 3d 20 4f 62 6a 65 63 74  Context = Object
49c50 2e 67 65 74 50 72 6f 74 6f 74 79 70 65 4f 66 28  .getPrototypeOf(
49c60 62 6c 6f 63 6b 43 6f 6e 74 65 78 74 29 3b 0a 20  blockContext);. 
49c70 20 20 20 7d 0a 0a 20 20 20 20 2f 2f 20 73 65 74     }..    // set
49c80 20 61 20 76 61 6c 75 65 20 69 6e 20 74 68 65 20   a value in the 
49c90 73 70 65 63 69 66 69 65 64 20 63 6f 6e 74 65 78  specified contex
49ca0 74 20 69 66 20 61 6c 6c 6f 77 65 64 0a 20 20 20  t if allowed.   
49cb0 20 66 75 6e 63 74 69 6f 6e 20 73 65 74 56 61 6c   function setVal
49cc0 75 65 28 6f 62 6a 65 63 74 2c 20 6c 65 66 74 2c  ue(object, left,
49cd0 20 72 69 67 68 74 2c 20 6f 70 65 72 61 74 6f 72   right, operator
49ce0 29 7b 0a 20 20 20 20 20 20 76 61 72 20 6e 61 6d  ){.      var nam
49cf0 65 20 3d 20 6e 75 6c 6c 3b 0a 0a 20 20 20 20 20  e = null;..     
49d00 20 69 66 20 28 6c 65 66 74 2e 74 79 70 65 20 3d   if (left.type =
49d10 3d 3d 20 27 49 64 65 6e 74 69 66 69 65 72 27 29  == 'Identifier')
49d20 7b 0a 20 20 20 20 20 20 20 20 6e 61 6d 65 20 3d  {.        name =
49d30 20 6c 65 66 74 2e 6e 61 6d 65 3b 0a 20 20 20 20   left.name;.    
49d40 20 20 20 20 2f 2f 20 68 61 6e 64 6c 65 20 70 61      // handle pa
49d50 72 65 6e 74 20 63 6f 6e 74 65 78 74 20 73 68 61  rent context sha
49d60 64 6f 77 69 6e 67 0a 20 20 20 20 20 20 20 20 6f  dowing.        o
49d70 62 6a 65 63 74 20 3d 20 6f 62 6a 65 63 74 46 6f  bject = objectFo
49d80 72 4b 65 79 28 6f 62 6a 65 63 74 2c 20 6e 61 6d  rKey(object, nam
49d90 65 2c 20 70 72 69 6d 69 74 69 76 65 73 29 3b 0a  e, primitives);.
49da0 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20        } else if 
49db0 28 6c 65 66 74 2e 74 79 70 65 20 3d 3d 3d 20 27  (left.type === '
49dc0 4d 65 6d 62 65 72 45 78 70 72 65 73 73 69 6f 6e  MemberExpression
49dd0 27 29 7b 0a 20 20 20 20 20 20 20 20 69 66 20 28  '){.        if (
49de0 6c 65 66 74 2e 63 6f 6d 70 75 74 65 64 29 7b 0a  left.computed){.
49df0 20 20 20 20 20 20 20 20 20 20 6e 61 6d 65 20 3d            name =
49e00 20 77 61 6c 6b 28 6c 65 66 74 2e 70 72 6f 70 65   walk(left.prope
49e10 72 74 79 29 3b 0a 20 20 20 20 20 20 20 20 7d 20  rty);.        } 
49e20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20  else {.         
49e30 20 6e 61 6d 65 20 3d 20 6c 65 66 74 2e 70 72 6f   name = left.pro
49e40 70 65 72 74 79 2e 6e 61 6d 65 3b 0a 20 20 20 20  perty.name;.    
49e50 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 6f 62      }.        ob
49e60 6a 65 63 74 20 3d 20 77 61 6c 6b 28 6c 65 66 74  ject = walk(left
49e70 2e 6f 62 6a 65 63 74 29 3b 0a 20 20 20 20 20 20  .object);.      
49e80 7d 0a 0a 20 20 20 20 20 20 2f 2f 20 73 74 6f 70  }..      // stop
49e90 20 62 75 69 6c 74 20 69 6e 20 70 72 6f 70 65 72   built in proper
49ea0 74 69 65 73 20 66 72 6f 6d 20 62 65 69 6e 67 20  ties from being 
49eb0 61 62 6c 65 20 74 6f 20 62 65 20 63 68 61 6e 67  able to be chang
49ec0 65 64 0a 20 20 20 20 20 20 69 66 20 28 63 61 6e  ed.      if (can
49ed0 53 65 74 50 72 6f 70 65 72 74 79 28 6f 62 6a 65  SetProperty(obje
49ee0 63 74 2c 20 6e 61 6d 65 2c 20 70 72 69 6d 69 74  ct, name, primit
49ef0 69 76 65 73 29 29 7b 0a 20 20 20 20 20 20 20 20  ives)){.        
49f00 73 77 69 74 63 68 28 6f 70 65 72 61 74 6f 72 29  switch(operator)
49f10 20 7b 0a 20 20 20 20 20 20 20 20 20 20 63 61 73   {.          cas
49f20 65 20 75 6e 64 65 66 69 6e 65 64 3a 20 72 65 74  e undefined: ret
49f30 75 72 6e 20 6f 62 6a 65 63 74 5b 6e 61 6d 65 5d  urn object[name]
49f40 20 3d 20 77 61 6c 6b 28 72 69 67 68 74 29 0a 20   = walk(right). 
49f50 20 20 20 20 20 20 20 20 20 63 61 73 65 20 27 3d           case '=
49f60 27 3a 20 20 72 65 74 75 72 6e 20 6f 62 6a 65 63  ':  return objec
49f70 74 5b 6e 61 6d 65 5d 20 3d 20 77 61 6c 6b 28 72  t[name] = walk(r
49f80 69 67 68 74 29 0a 20 20 20 20 20 20 20 20 20 20  ight).          
49f90 63 61 73 65 20 27 2b 3d 27 3a 20 72 65 74 75 72  case '+=': retur
49fa0 6e 20 6f 62 6a 65 63 74 5b 6e 61 6d 65 5d 20 2b  n object[name] +
49fb0 3d 20 77 61 6c 6b 28 72 69 67 68 74 29 0a 20 20  = walk(right).  
49fc0 20 20 20 20 20 20 20 20 63 61 73 65 20 27 2d 3d          case '-=
49fd0 27 3a 20 72 65 74 75 72 6e 20 6f 62 6a 65 63 74  ': return object
49fe0 5b 6e 61 6d 65 5d 20 2d 3d 20 77 61 6c 6b 28 72  [name] -= walk(r
49ff0 69 67 68 74 29 0a 20 20 20 20 20 20 20 20 20 20  ight).          
4a000 63 61 73 65 20 27 2b 2b 27 3a 20 72 65 74 75 72  case '++': retur
4a010 6e 20 6f 62 6a 65 63 74 5b 6e 61 6d 65 5d 2b 2b  n object[name]++
4a020 0a 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20  .          case 
4a030 27 2d 2d 27 3a 20 72 65 74 75 72 6e 20 6f 62 6a  '--': return obj
4a040 65 63 74 5b 6e 61 6d 65 5d 2d 2d 0a 20 20 20 20  ect[name]--.    
4a050 20 20 20 20 7d 0a 20 20 20 20 20 20 7d 0a 0a 20      }.      }.. 
4a060 20 20 20 7d 0a 0a 20 20 7d 0a 0a 20 20 2f 2f 20     }..  }..  // 
4a070 77 68 65 6e 20 61 6e 20 75 6e 73 75 70 70 6f 72  when an unsuppor
4a080 74 65 64 20 65 78 70 72 65 73 73 69 6f 6e 20 69  ted expression i
4a090 73 20 65 6e 63 6f 75 6e 74 65 72 65 64 2c 20 74  s encountered, t
4a0a0 68 72 6f 77 20 61 6e 20 65 72 72 6f 72 0a 20 20  hrow an error.  
4a0b0 66 75 6e 63 74 69 6f 6e 20 75 6e 73 75 70 70 6f  function unsuppo
4a0c0 72 74 65 64 45 78 70 72 65 73 73 69 6f 6e 28 6e  rtedExpression(n
4a0d0 6f 64 65 29 7b 0a 20 20 20 20 63 6f 6e 73 6f 6c  ode){.    consol
4a0e0 65 2e 65 72 72 6f 72 28 6e 6f 64 65 29 3b 0a 20  e.error(node);. 
4a0f0 20 20 20 76 61 72 20 65 72 72 20 3d 20 6e 65 77     var err = new
4a100 20 45 72 72 6f 72 28 27 55 6e 73 75 70 70 6f 72   Error('Unsuppor
4a110 74 65 64 20 65 78 70 72 65 73 73 69 6f 6e 3a 20  ted expression: 
4a120 27 20 2b 20 6e 6f 64 65 2e 74 79 70 65 29 3b 0a  ' + node.type);.
4a130 20 20 20 20 65 72 72 2e 6e 6f 64 65 20 3d 20 6e      err.node = n
4a140 6f 64 65 3b 0a 20 20 20 20 74 68 72 6f 77 20 65  ode;.    throw e
4a150 72 72 0a 20 20 7d 0a 0a 20 20 2f 2f 20 77 61 6c  rr.  }..  // wal
4a160 6b 20 61 20 70 72 6f 76 69 64 65 64 20 6f 62 6a  k a provided obj
4a170 65 63 74 27 73 20 70 72 6f 74 6f 74 79 70 61 6c  ect's prototypal
4a180 20 68 69 65 72 61 72 63 68 79 20 74 6f 20 72 65   hierarchy to re
4a190 74 72 69 65 76 65 20 61 6e 20 69 6e 68 65 72 69  trieve an inheri
4a1a0 74 65 64 20 6f 62 6a 65 63 74 0a 20 20 66 75 6e  ted object.  fun
4a1b0 63 74 69 6f 6e 20 6f 62 6a 65 63 74 46 6f 72 4b  ction objectForK
4a1c0 65 79 28 6f 62 6a 65 63 74 2c 20 6b 65 79 2c 20  ey(object, key, 
4a1d0 70 72 69 6d 69 74 69 76 65 73 29 7b 0a 20 20 20  primitives){.   
4a1e0 20 76 61 72 20 70 72 6f 74 6f 20 3d 20 70 72 69   var proto = pri
4a1f0 6d 69 74 69 76 65 73 2e 67 65 74 50 72 6f 74 6f  mitives.getProto
4a200 74 79 70 65 4f 66 28 6f 62 6a 65 63 74 29 3b 0a  typeOf(object);.
4a210 20 20 20 20 69 66 20 28 21 70 72 6f 74 6f 20 7c      if (!proto |
4a220 7c 20 68 61 73 4f 77 6e 50 72 6f 70 65 72 74 79  | hasOwnProperty
4a230 28 6f 62 6a 65 63 74 2c 20 6b 65 79 29 29 7b 0a  (object, key)){.
4a240 20 20 20 20 20 20 72 65 74 75 72 6e 20 6f 62 6a        return obj
4a250 65 63 74 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b  ect.    } else {
4a260 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 6f 62  .      return ob
4a270 6a 65 63 74 46 6f 72 4b 65 79 28 70 72 6f 74 6f  jectForKey(proto
4a280 2c 20 6b 65 79 2c 20 70 72 69 6d 69 74 69 76 65  , key, primitive
4a290 73 29 0a 20 20 20 20 7d 0a 20 20 7d 0a 0a 20 20  s).    }.  }..  
4a2a0 66 75 6e 63 74 69 6f 6e 20 68 61 73 50 72 6f 70  function hasProp
4a2b0 65 72 74 79 28 6f 62 6a 65 63 74 2c 20 6b 65 79  erty(object, key
4a2c0 2c 20 70 72 69 6d 69 74 69 76 65 73 29 7b 0a 20  , primitives){. 
4a2d0 20 20 20 76 61 72 20 70 72 6f 74 6f 20 3d 20 70     var proto = p
4a2e0 72 69 6d 69 74 69 76 65 73 2e 67 65 74 50 72 6f  rimitives.getPro
4a2f0 74 6f 74 79 70 65 4f 66 28 6f 62 6a 65 63 74 29  totypeOf(object)
4a300 3b 0a 20 20 20 20 76 61 72 20 68 61 73 4f 77 6e  ;.    var hasOwn
4a310 20 3d 20 68 61 73 4f 77 6e 50 72 6f 70 65 72 74   = hasOwnPropert
4a320 79 28 6f 62 6a 65 63 74 2c 20 6b 65 79 29 3b 0a  y(object, key);.
4a330 20 20 20 20 69 66 20 28 6f 62 6a 65 63 74 5b 6b      if (object[k
4a340 65 79 5d 20 21 3d 3d 20 75 6e 64 65 66 69 6e 65  ey] !== undefine
4a350 64 29 7b 0a 20 20 20 20 20 20 72 65 74 75 72 6e  d){.      return
4a360 20 74 72 75 65 0a 20 20 20 20 7d 20 65 6c 73 65   true.    } else
4a370 20 69 66 20 28 21 70 72 6f 74 6f 20 7c 7c 20 68   if (!proto || h
4a380 61 73 4f 77 6e 29 7b 0a 20 20 20 20 20 20 72 65  asOwn){.      re
4a390 74 75 72 6e 20 68 61 73 4f 77 6e 0a 20 20 20 20  turn hasOwn.    
4a3a0 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 72  } else {.      r
4a3b0 65 74 75 72 6e 20 68 61 73 50 72 6f 70 65 72 74  eturn hasPropert
4a3c0 79 28 70 72 6f 74 6f 2c 20 6b 65 79 2c 20 70 72  y(proto, key, pr
4a3d0 69 6d 69 74 69 76 65 73 29 0a 20 20 20 20 7d 0a  imitives).    }.
4a3e0 20 20 7d 0a 0a 20 20 66 75 6e 63 74 69 6f 6e 20    }..  function 
4a3f0 68 61 73 4f 77 6e 50 72 6f 70 65 72 74 79 28 6f  hasOwnProperty(o
4a400 62 6a 65 63 74 2c 20 6b 65 79 29 7b 0a 20 20 20  bject, key){.   
4a410 20 72 65 74 75 72 6e 20 4f 62 6a 65 63 74 2e 70   return Object.p
4a420 72 6f 74 6f 74 79 70 65 2e 68 61 73 4f 77 6e 50  rototype.hasOwnP
4a430 72 6f 70 65 72 74 79 2e 63 61 6c 6c 28 6f 62 6a  roperty.call(obj
4a440 65 63 74 2c 20 6b 65 79 29 0a 20 20 7d 0a 0a 20  ect, key).  }.. 
4a450 20 66 75 6e 63 74 69 6f 6e 20 70 72 6f 70 65 72   function proper
4a460 74 79 49 73 45 6e 75 6d 65 72 61 62 6c 65 28 6f  tyIsEnumerable(o
4a470 62 6a 65 63 74 2c 20 6b 65 79 29 7b 0a 20 20 20  bject, key){.   
4a480 20 72 65 74 75 72 6e 20 4f 62 6a 65 63 74 2e 70   return Object.p
4a490 72 6f 74 6f 74 79 70 65 2e 70 72 6f 70 65 72 74  rototype.propert
4a4a0 79 49 73 45 6e 75 6d 65 72 61 62 6c 65 2e 63 61  yIsEnumerable.ca
4a4b0 6c 6c 28 6f 62 6a 65 63 74 2c 20 6b 65 79 29 0a  ll(object, key).
4a4c0 20 20 7d 0a 0a 0a 20 20 2f 2f 20 64 65 74 65 72    }...  // deter
4a4d0 6d 69 6e 65 20 69 66 20 77 65 20 68 61 76 65 20  mine if we have 
4a4e0 77 72 69 74 65 20 61 63 63 65 73 73 20 74 6f 20  write access to 
4a4f0 61 20 70 72 6f 70 65 72 74 79 0a 20 20 66 75 6e  a property.  fun
4a500 63 74 69 6f 6e 20 63 61 6e 53 65 74 50 72 6f 70  ction canSetProp
4a510 65 72 74 79 28 6f 62 6a 65 63 74 2c 20 70 72 6f  erty(object, pro
4a520 70 65 72 74 79 2c 20 70 72 69 6d 69 74 69 76 65  perty, primitive
4a530 73 29 7b 0a 20 20 20 20 69 66 20 28 70 72 6f 70  s){.    if (prop
4a540 65 72 74 79 20 3d 3d 3d 20 27 5f 5f 70 72 6f 74  erty === '__prot
4a550 6f 5f 5f 27 20 7c 7c 20 70 72 69 6d 69 74 69 76  o__' || primitiv
4a560 65 73 2e 69 73 50 72 69 6d 69 74 69 76 65 28 6f  es.isPrimitive(o
4a570 62 6a 65 63 74 29 29 7b 0a 20 20 20 20 20 20 72  bject)){.      r
4a580 65 74 75 72 6e 20 66 61 6c 73 65 0a 20 20 20 20  eturn false.    
4a590 7d 20 65 6c 73 65 20 69 66 20 28 6f 62 6a 65 63  } else if (objec
4a5a0 74 20 21 3d 20 6e 75 6c 6c 29 7b 0a 0a 20 20 20  t != null){..   
4a5b0 20 20 20 69 66 20 28 68 61 73 4f 77 6e 50 72 6f     if (hasOwnPro
4a5c0 70 65 72 74 79 28 6f 62 6a 65 63 74 2c 20 70 72  perty(object, pr
4a5d0 6f 70 65 72 74 79 29 29 7b 0a 20 20 20 20 20 20  operty)){.      
4a5e0 20 20 69 66 20 28 70 72 6f 70 65 72 74 79 49 73    if (propertyIs
4a5f0 45 6e 75 6d 65 72 61 62 6c 65 28 6f 62 6a 65 63  Enumerable(objec
4a600 74 2c 20 70 72 6f 70 65 72 74 79 29 29 7b 0a 20  t, property)){. 
4a610 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
4a620 74 72 75 65 0a 20 20 20 20 20 20 20 20 7d 20 65  true.        } e
4a630 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20  lse {.          
4a640 72 65 74 75 72 6e 20 66 61 6c 73 65 0a 20 20 20  return false.   
4a650 20 20 20 20 20 7d 0a 20 20 20 20 20 20 7d 20 65       }.      } e
4a660 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 72 65  lse {.        re
4a670 74 75 72 6e 20 63 61 6e 53 65 74 50 72 6f 70 65  turn canSetPrope
4a680 72 74 79 28 70 72 69 6d 69 74 69 76 65 73 2e 67  rty(primitives.g
4a690 65 74 50 72 6f 74 6f 74 79 70 65 4f 66 28 6f 62  etPrototypeOf(ob
4a6a0 6a 65 63 74 29 2c 20 70 72 6f 70 65 72 74 79 2c  ject), property,
4a6b0 20 70 72 69 6d 69 74 69 76 65 73 29 0a 20 20 20   primitives).   
4a6c0 20 20 20 7d 0a 0a 20 20 20 20 7d 20 65 6c 73 65     }..    } else
4a6d0 20 7b 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20   {.      return 
4a6e0 74 72 75 65 0a 20 20 20 20 7d 0a 20 20 7d 0a 0a  true.    }.  }..
4a6f0 20 20 2f 2f 20 67 65 6e 65 72 61 74 65 20 61 20    // generate a 
4a700 66 75 6e 63 74 69 6f 6e 20 77 69 74 68 20 73 70  function with sp
4a710 65 63 69 66 69 65 64 20 63 6f 6e 74 65 78 74 0a  ecified context.
4a720 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 46 75    function getFu
4a730 6e 63 74 69 6f 6e 28 62 6f 64 79 2c 20 70 61 72  nction(body, par
4a740 61 6d 73 2c 20 70 61 72 65 6e 74 43 6f 6e 74 65  ams, parentConte
4a750 78 74 29 7b 0a 20 20 20 20 72 65 74 75 72 6e 20  xt){.    return 
4a760 66 75 6e 63 74 69 6f 6e 28 29 7b 0a 20 20 20 20  function(){.    
4a770 20 20 76 61 72 20 63 6f 6e 74 65 78 74 20 3d 20    var context = 
4a780 4f 62 6a 65 63 74 2e 63 72 65 61 74 65 28 70 61  Object.create(pa
4a790 72 65 6e 74 43 6f 6e 74 65 78 74 29 2c 0a 20 20  rentContext),.  
4a7a0 20 20 20 20 20 20 67 20 3d 20 67 65 74 47 6c 6f        g = getGlo
4a7b0 62 61 6c 28 29 3b 0a 0a 20 20 20 20 20 20 63 6f  bal();..      co
4a7c0 6e 74 65 78 74 5b 27 77 69 6e 64 6f 77 27 5d 20  ntext['window'] 
4a7d0 3d 20 63 6f 6e 74 65 78 74 5b 27 67 6c 6f 62 61  = context['globa
4a7e0 6c 27 5d 20 3d 20 67 3b 0a 0a 20 20 20 20 20 20  l'] = g;..      
4a7f0 69 66 20 28 74 68 69 73 20 3d 3d 20 67 29 20 7b  if (this == g) {
4a800 0a 20 20 20 20 20 20 20 20 63 6f 6e 74 65 78 74  .        context
4a810 5b 27 74 68 69 73 27 5d 20 3d 20 6e 75 6c 6c 3b  ['this'] = null;
4a820 0a 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a  .      } else {.
4a830 20 20 20 20 20 20 20 20 63 6f 6e 74 65 78 74 5b          context[
4a840 27 74 68 69 73 27 5d 20 3d 20 74 68 69 73 3b 0a  'this'] = this;.
4a850 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 2f 2f        }.      //
4a860 20 6e 6f 72 6d 61 6c 69 7a 65 20 61 72 67 75 6d   normalize argum
4a870 65 6e 74 73 20 61 72 72 61 79 0a 20 20 20 20 20  ents array.     
4a880 20 76 61 72 20 61 72 67 73 20 3d 20 41 72 72 61   var args = Arra
4a890 79 2e 70 72 6f 74 6f 74 79 70 65 2e 73 6c 69 63  y.prototype.slic
4a8a0 65 2e 63 61 6c 6c 28 61 72 67 75 6d 65 6e 74 73  e.call(arguments
4a8b0 29 3b 0a 20 20 20 20 20 20 63 6f 6e 74 65 78 74  );.      context
4a8c0 5b 27 61 72 67 75 6d 65 6e 74 73 27 5d 20 3d 20  ['arguments'] = 
4a8d0 61 72 67 75 6d 65 6e 74 73 3b 0a 20 20 20 20 20  arguments;.     
4a8e0 20 61 72 67 73 2e 66 6f 72 45 61 63 68 28 66 75   args.forEach(fu
4a8f0 6e 63 74 69 6f 6e 28 61 72 67 2c 69 64 78 29 7b  nction(arg,idx){
4a900 0a 20 20 20 20 20 20 20 20 76 61 72 20 70 61 72  .        var par
4a910 61 6d 20 3d 20 70 61 72 61 6d 73 5b 69 64 78 5d  am = params[idx]
4a920 3b 0a 20 20 20 20 20 20 20 20 69 66 20 28 70 61  ;.        if (pa
4a930 72 61 6d 29 7b 0a 20 20 20 20 20 20 20 20 20 20  ram){.          
4a940 63 6f 6e 74 65 78 74 5b 70 61 72 61 6d 5d 20 3d  context[param] =
4a950 20 61 72 67 3b 0a 20 20 20 20 20 20 20 20 7d 0a   arg;.        }.
4a960 20 20 20 20 20 20 7d 29 3b 0a 20 20 20 20 20 20        });.      
4a970 76 61 72 20 72 65 73 75 6c 74 20 3d 20 65 76 61  var result = eva
4a980 6c 75 61 74 65 41 73 74 28 62 6f 64 79 2c 20 63  luateAst(body, c
4a990 6f 6e 74 65 78 74 29 3b 0a 0a 20 20 20 20 20 20  ontext);..      
4a9a0 69 66 20 28 72 65 73 75 6c 74 20 69 6e 73 74 61  if (result insta
4a9b0 6e 63 65 6f 66 20 52 65 74 75 72 6e 56 61 6c 75  nceof ReturnValu
4a9c0 65 29 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75  e){.        retu
4a9d0 72 6e 20 72 65 73 75 6c 74 2e 76 61 6c 75 65 0a  rn result.value.
4a9e0 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20        }.    }.  
4a9f0 7d 0a 0a 20 20 66 75 6e 63 74 69 6f 6e 20 66 69  }..  function fi
4aa00 6e 61 6c 56 61 6c 75 65 28 76 61 6c 75 65 29 7b  nalValue(value){
4aa10 0a 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 69  .    if (value i
4aa20 6e 73 74 61 6e 63 65 6f 66 20 52 65 74 75 72 6e  nstanceof Return
4aa30 56 61 6c 75 65 29 7b 0a 20 20 20 20 20 20 72 65  Value){.      re
4aa40 74 75 72 6e 20 76 61 6c 75 65 2e 76 61 6c 75 65  turn value.value
4aa50 0a 20 20 20 20 7d 0a 20 20 20 20 72 65 74 75 72  .    }.    retur
4aa60 6e 20 76 61 6c 75 65 0a 20 20 7d 0a 0a 20 20 2f  n value.  }..  /
4aa70 2f 20 67 65 74 20 74 68 65 20 6e 61 6d 65 20 6f  / get the name o
4aa80 66 20 61 6e 20 69 64 65 6e 74 69 66 69 65 72 0a  f an identifier.
4aa90 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 4e 61    function getNa
4aaa0 6d 65 28 69 64 65 6e 74 69 66 69 65 72 29 7b 0a  me(identifier){.
4aab0 20 20 20 20 72 65 74 75 72 6e 20 69 64 65 6e 74      return ident
4aac0 69 66 69 65 72 2e 6e 61 6d 65 0a 20 20 7d 0a 0a  ifier.name.  }..
4aad0 20 20 2f 2f 20 61 20 52 65 74 75 72 6e 56 61 6c    // a ReturnVal
4aae0 75 65 20 73 74 72 75 63 74 20 66 6f 72 20 64 69  ue struct for di
4aaf0 66 66 65 72 65 6e 74 69 61 74 69 6e 67 20 62 65  fferentiating be
4ab00 74 77 65 65 6e 20 65 78 70 72 65 73 73 69 6f 6e  tween expression
4ab10 20 72 65 73 75 6c 74 20 61 6e 64 20 72 65 74 75   result and retu
4ab20 72 6e 20 73 74 61 74 65 6d 65 6e 74 0a 20 20 66  rn statement.  f
4ab30 75 6e 63 74 69 6f 6e 20 52 65 74 75 72 6e 56 61  unction ReturnVa
4ab40 6c 75 65 28 74 79 70 65 2c 20 76 61 6c 75 65 29  lue(type, value)
4ab50 7b 0a 20 20 20 20 74 68 69 73 2e 74 79 70 65 20  {.    this.type 
4ab60 3d 20 74 79 70 65 3b 0a 20 20 20 20 74 68 69 73  = type;.    this
4ab70 2e 76 61 6c 75 65 20 3d 20 76 61 6c 75 65 3b 0a  .value = value;.
4ab80 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20    }..  /**.   * 
4ab90 54 68 65 20 72 69 6f 74 20 74 65 6d 70 6c 61 74  The riot templat
4aba0 65 20 65 6e 67 69 6e 65 0a 20 20 20 2a 20 40 76  e engine.   * @v
4abb0 65 72 73 69 6f 6e 20 76 33 2e 30 2e 38 0a 20 20  ersion v3.0.8.  
4abc0 20 2a 2f 0a 0a 20 20 76 61 72 20 73 6b 69 70 52   */..  var skipR
4abd0 65 67 65 78 20 3d 20 28 66 75 6e 63 74 69 6f 6e  egex = (function
4abe0 20 28 29 20 7b 20 2f 2f 65 73 6c 69 6e 74 2d 64   () { //eslint-d
4abf0 69 73 61 62 6c 65 2d 6c 69 6e 65 20 6e 6f 2d 75  isable-line no-u
4ac00 6e 75 73 65 64 2d 76 61 72 73 0a 0a 20 20 20 20  nused-vars..    
4ac10 76 61 72 20 62 65 66 6f 72 65 52 65 43 68 61 72  var beforeReChar
4ac20 73 20 3d 20 27 5b 7b 28 2c 3b 3a 3f 3d 7c 26 21  s = '[{(,;:?=|&!
4ac30 5e 7e 3e 25 2a 2f 27 3b 0a 0a 20 20 20 20 76 61  ^~>%*/';..    va
4ac40 72 20 62 65 66 6f 72 65 52 65 57 6f 72 64 73 20  r beforeReWords 
4ac50 3d 20 5b 0a 20 20 20 20 20 20 27 63 61 73 65 27  = [.      'case'
4ac60 2c 0a 20 20 20 20 20 20 27 64 65 66 61 75 6c 74  ,.      'default
4ac70 27 2c 0a 20 20 20 20 20 20 27 64 6f 27 2c 0a 20  ',.      'do',. 
4ac80 20 20 20 20 20 27 65 6c 73 65 27 2c 0a 20 20 20       'else',.   
4ac90 20 20 20 27 69 6e 27 2c 0a 20 20 20 20 20 20 27     'in',.      '
4aca0 69 6e 73 74 61 6e 63 65 6f 66 27 2c 0a 20 20 20  instanceof',.   
4acb0 20 20 20 27 70 72 65 66 69 78 27 2c 0a 20 20 20     'prefix',.   
4acc0 20 20 20 27 72 65 74 75 72 6e 27 2c 0a 20 20 20     'return',.   
4acd0 20 20 20 27 74 79 70 65 6f 66 27 2c 0a 20 20 20     'typeof',.   
4ace0 20 20 20 27 76 6f 69 64 27 2c 0a 20 20 20 20 20     'void',.     
4acf0 20 27 79 69 65 6c 64 27 0a 20 20 20 20 5d 3b 0a   'yield'.    ];.
4ad00 0a 20 20 20 20 76 61 72 20 77 6f 72 64 73 4c 61  .    var wordsLa
4ad10 73 74 43 68 61 72 20 3d 20 62 65 66 6f 72 65 52  stChar = beforeR
4ad20 65 57 6f 72 64 73 2e 72 65 64 75 63 65 28 66 75  eWords.reduce(fu
4ad30 6e 63 74 69 6f 6e 20 28 73 2c 20 77 29 20 7b 0a  nction (s, w) {.
4ad40 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 20 2b        return s +
4ad50 20 77 2e 73 6c 69 63 65 28 2d 31 29 0a 20 20 20   w.slice(-1).   
4ad60 20 7d 2c 20 27 27 29 3b 0a 0a 20 20 20 20 76 61   }, '');..    va
4ad70 72 20 52 45 5f 52 45 47 45 58 20 3d 20 2f 5e 5c  r RE_REGEX = /^\
4ad80 2f 28 3f 3d 5b 5e 2a 3e 2f 5d 29 5b 5e 5b 2f 5c  /(?=[^*>/])[^[/\
4ad90 5c 5d 2a 28 3f 3a 28 3f 3a 5c 5c 2e 7c 5c 5b 28  \]*(?:(?:\\.|\[(
4ada0 3f 3a 5c 5c 2e 7c 5b 5e 5c 5d 5c 5c 5d 2a 29 2a  ?:\\.|[^\]\\]*)*
4adb0 5c 5d 29 5b 5e 5b 5c 5c 2f 5d 2a 29 2a 3f 5c 2f  \])[^[\\/]*)*?\/
4adc0 5b 67 69 6d 75 79 5d 2a 2f 3b 0a 20 20 20 20 76  [gimuy]*/;.    v
4add0 61 72 20 52 45 5f 56 4e 5f 43 48 41 52 20 3d 20  ar RE_VN_CHAR = 
4ade0 2f 5b 24 5c 77 5d 2f 3b 0a 0a 20 20 20 20 66 75  /[$\w]/;..    fu
4adf0 6e 63 74 69 6f 6e 20 70 72 65 76 20 28 63 6f 64  nction prev (cod
4ae00 65 2c 20 70 6f 73 29 20 7b 0a 20 20 20 20 20 20  e, pos) {.      
4ae10 77 68 69 6c 65 20 28 2d 2d 70 6f 73 20 3e 3d 20  while (--pos >= 
4ae20 30 20 26 26 20 2f 5c 73 2f 2e 74 65 73 74 28 63  0 && /\s/.test(c
4ae30 6f 64 65 5b 70 6f 73 5d 29 29 7b 20 7d 0a 20 20  ode[pos])){ }.  
4ae40 20 20 20 20 72 65 74 75 72 6e 20 70 6f 73 0a 20      return pos. 
4ae50 20 20 20 7d 0a 0a 20 20 20 20 66 75 6e 63 74 69     }..    functi
4ae60 6f 6e 20 5f 73 6b 69 70 52 65 67 65 78 20 28 63  on _skipRegex (c
4ae70 6f 64 65 2c 20 73 74 61 72 74 29 20 7b 0a 0a 20  ode, start) {.. 
4ae80 20 20 20 20 20 76 61 72 20 72 65 20 3d 20 2f 2e       var re = /.
4ae90 2a 2f 67 3b 0a 20 20 20 20 20 20 76 61 72 20 70  */g;.      var p
4aea0 6f 73 20 3d 20 72 65 2e 6c 61 73 74 49 6e 64 65  os = re.lastInde
4aeb0 78 20 3d 20 73 74 61 72 74 2b 2b 3b 0a 20 20 20  x = start++;.   
4aec0 20 20 20 76 61 72 20 6d 61 74 63 68 20 3d 20 72     var match = r
4aed0 65 2e 65 78 65 63 28 63 6f 64 65 29 5b 30 5d 2e  e.exec(code)[0].
4aee0 6d 61 74 63 68 28 52 45 5f 52 45 47 45 58 29 3b  match(RE_REGEX);
4aef0 0a 0a 20 20 20 20 20 20 69 66 20 28 6d 61 74 63  ..      if (matc
4af00 68 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72  h) {.        var
4af10 20 6e 65 78 74 20 3d 20 70 6f 73 20 2b 20 6d 61   next = pos + ma
4af20 74 63 68 5b 30 5d 2e 6c 65 6e 67 74 68 3b 0a 0a  tch[0].length;..
4af30 20 20 20 20 20 20 20 20 70 6f 73 20 3d 20 70 72          pos = pr
4af40 65 76 28 63 6f 64 65 2c 20 70 6f 73 29 3b 0a 20  ev(code, pos);. 
4af50 20 20 20 20 20 20 20 76 61 72 20 63 20 3d 20 63         var c = c
4af60 6f 64 65 5b 70 6f 73 5d 3b 0a 0a 20 20 20 20 20  ode[pos];..     
4af70 20 20 20 69 66 20 28 70 6f 73 20 3c 20 30 20 7c     if (pos < 0 |
4af80 7c 20 7e 62 65 66 6f 72 65 52 65 43 68 61 72 73  | ~beforeReChars
4af90 2e 69 6e 64 65 78 4f 66 28 63 29 29 20 7b 0a 20  .indexOf(c)) {. 
4afa0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
4afb0 6e 65 78 74 0a 20 20 20 20 20 20 20 20 7d 0a 0a  next.        }..
4afc0 20 20 20 20 20 20 20 20 69 66 20 28 63 20 3d 3d          if (c ==
4afd0 3d 20 27 2e 27 29 20 7b 0a 0a 20 20 20 20 20 20  = '.') {..      
4afe0 20 20 20 20 69 66 20 28 63 6f 64 65 5b 70 6f 73      if (code[pos
4aff0 20 2d 20 31 5d 20 3d 3d 3d 20 27 2e 27 29 20 7b   - 1] === '.') {
4b000 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74 61  .            sta
4b010 72 74 20 3d 20 6e 65 78 74 3b 0a 20 20 20 20 20  rt = next;.     
4b020 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 20 20       }..        
4b030 7d 20 65 6c 73 65 20 69 66 20 28 63 20 3d 3d 3d  } else if (c ===
4b040 20 27 2b 27 20 7c 7c 20 63 20 3d 3d 3d 20 27 2d   '+' || c === '-
4b050 27 29 20 7b 0a 0a 20 20 20 20 20 20 20 20 20 20  ') {..          
4b060 69 66 20 28 63 6f 64 65 5b 2d 2d 70 6f 73 5d 20  if (code[--pos] 
4b070 21 3d 3d 20 63 20 7c 7c 0a 20 20 20 20 20 20 20  !== c ||.       
4b080 20 20 20 20 20 20 20 28 70 6f 73 20 3d 20 70 72         (pos = pr
4b090 65 76 28 63 6f 64 65 2c 20 70 6f 73 29 29 20 3c  ev(code, pos)) <
4b0a0 20 30 20 7c 7c 0a 20 20 20 20 20 20 20 20 20 20   0 ||.          
4b0b0 20 20 20 20 21 52 45 5f 56 4e 5f 43 48 41 52 2e      !RE_VN_CHAR.
4b0c0 74 65 73 74 28 63 6f 64 65 5b 70 6f 73 5d 29 29  test(code[pos]))
4b0d0 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 73   {.            s
4b0e0 74 61 72 74 20 3d 20 6e 65 78 74 3b 0a 20 20 20  tart = next;.   
4b0f0 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20         }..      
4b100 20 20 7d 20 65 6c 73 65 20 69 66 20 28 7e 77 6f    } else if (~wo
4b110 72 64 73 4c 61 73 74 43 68 61 72 2e 69 6e 64 65  rdsLastChar.inde
4b120 78 4f 66 28 63 29 29 20 7b 0a 0a 20 20 20 20 20  xOf(c)) {..     
4b130 20 20 20 20 20 76 61 72 20 65 6e 64 20 3d 20 70       var end = p
4b140 6f 73 20 2b 20 31 3b 0a 0a 20 20 20 20 20 20 20  os + 1;..       
4b150 20 20 20 77 68 69 6c 65 20 28 2d 2d 70 6f 73 20     while (--pos 
4b160 3e 3d 20 30 20 26 26 20 52 45 5f 56 4e 5f 43 48  >= 0 && RE_VN_CH
4b170 41 52 2e 74 65 73 74 28 63 6f 64 65 5b 70 6f 73  AR.test(code[pos
4b180 5d 29 29 7b 20 7d 0a 20 20 20 20 20 20 20 20 20  ])){ }.         
4b190 20 69 66 20 28 7e 62 65 66 6f 72 65 52 65 57 6f   if (~beforeReWo
4b1a0 72 64 73 2e 69 6e 64 65 78 4f 66 28 63 6f 64 65  rds.indexOf(code
4b1b0 2e 73 6c 69 63 65 28 70 6f 73 20 2b 20 31 2c 20  .slice(pos + 1, 
4b1c0 65 6e 64 29 29 29 20 7b 0a 20 20 20 20 20 20 20  end))) {.       
4b1d0 20 20 20 20 20 73 74 61 72 74 20 3d 20 6e 65 78       start = nex
4b1e0 74 3b 0a 20 20 20 20 20 20 20 20 20 20 7d 0a 20  t;.          }. 
4b1f0 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 7d         }.      }
4b200 0a 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 73  ..      return s
4b210 74 61 72 74 0a 20 20 20 20 7d 0a 0a 20 20 20 20  tart.    }..    
4b220 72 65 74 75 72 6e 20 5f 73 6b 69 70 52 65 67 65  return _skipRege
4b230 78 0a 0a 20 20 7d 29 28 29 3b 0a 0a 20 20 2f 2a  x..  })();..  /*
4b240 2a 0a 20 20 20 2a 20 72 69 6f 74 2e 75 74 69 6c  *.   * riot.util
4b250 2e 62 72 61 63 6b 65 74 73 0a 20 20 20 2a 0a 20  .brackets.   *. 
4b260 20 20 2a 20 2d 20 60 62 72 61 63 6b 65 74 73 20    * - `brackets 
4b270 20 20 20 60 20 2d 20 52 65 74 75 72 6e 73 20 61     ` - Returns a
4b280 20 73 74 72 69 6e 67 20 6f 72 20 72 65 67 65 78   string or regex
4b290 20 62 61 73 65 64 20 6f 6e 20 69 74 73 20 70 61   based on its pa
4b2a0 72 61 6d 65 74 65 72 0a 20 20 20 2a 20 2d 20 60  rameter.   * - `
4b2b0 62 72 61 63 6b 65 74 73 2e 73 65 74 60 20 2d 20  brackets.set` - 
4b2c0 43 68 61 6e 67 65 20 74 68 65 20 63 75 72 72 65  Change the curre
4b2d0 6e 74 20 72 69 6f 74 20 62 72 61 63 6b 65 74 73  nt riot brackets
4b2e0 0a 20 20 20 2a 0a 20 20 20 2a 20 40 6d 6f 64 75  .   *.   * @modu
4b2f0 6c 65 0a 20 20 20 2a 2f 0a 0a 20 20 2f 2a 20 67  le.   */..  /* g
4b300 6c 6f 62 61 6c 20 72 69 6f 74 20 2a 2f 0a 0a 20  lobal riot */.. 
4b310 20 76 61 72 20 62 72 61 63 6b 65 74 73 20 3d 20   var brackets = 
4b320 28 66 75 6e 63 74 69 6f 6e 20 28 55 4e 44 45 46  (function (UNDEF
4b330 29 20 7b 0a 0a 20 20 20 20 76 61 72 0a 20 20 20  ) {..    var.   
4b340 20 20 20 52 45 47 4c 4f 42 20 3d 20 27 67 27 2c     REGLOB = 'g',
4b350 0a 0a 20 20 20 20 20 20 52 5f 4d 4c 43 4f 4d 4d  ..      R_MLCOMM
4b360 53 20 3d 20 2f 5c 2f 5c 2a 5b 5e 2a 5d 2a 5c 2a  S = /\/\*[^*]*\*
4b370 2b 28 3f 3a 5b 5e 2a 5c 2f 5d 5b 5e 2a 5d 2a 5c  +(?:[^*\/][^*]*\
4b380 2a 2b 29 2a 5c 2f 2f 67 2c 0a 0a 20 20 20 20 20  *+)*\//g,..     
4b390 20 52 5f 53 54 52 49 4e 47 53 20 3d 20 2f 22 5b   R_STRINGS = /"[
4b3a0 5e 22 5c 5c 5d 2a 28 3f 3a 5c 5c 5b 5c 53 5c 73  ^"\\]*(?:\\[\S\s
4b3b0 5d 5b 5e 22 5c 5c 5d 2a 29 2a 22 7c 27 5b 5e 27  ][^"\\]*)*"|'[^'
4b3c0 5c 5c 5d 2a 28 3f 3a 5c 5c 5b 5c 53 5c 73 5d 5b  \\]*(?:\\[\S\s][
4b3d0 5e 27 5c 5c 5d 2a 29 2a 27 7c 60 5b 5e 60 5c 5c  ^'\\]*)*'|`[^`\\
4b3e0 5d 2a 28 3f 3a 5c 5c 5b 5c 53 5c 73 5d 5b 5e 60  ]*(?:\\[\S\s][^`
4b3f0 5c 5c 5d 2a 29 2a 60 2f 67 2c 0a 0a 20 20 20 20  \\]*)*`/g,..    
4b400 20 20 53 5f 51 42 4c 4f 43 4b 53 20 3d 20 52 5f    S_QBLOCKS = R_
4b410 53 54 52 49 4e 47 53 2e 73 6f 75 72 63 65 20 2b  STRINGS.source +
4b420 20 27 7c 27 20 2b 0a 20 20 20 20 20 20 20 20 2f   '|' +.        /
4b430 28 3f 3a 5c 62 72 65 74 75 72 6e 5c 73 2b 7c 28  (?:\breturn\s+|(
4b440 3f 3a 5b 24 5c 77 5c 29 5c 5d 5d 7c 5c 2b 5c 2b  ?:[$\w\)\]]|\+\+
4b450 7c 2d 2d 29 5c 73 2a 28 5c 2f 29 28 3f 21 5b 2a  |--)\s*(\/)(?![*
4b460 5c 2f 5d 29 29 2f 2e 73 6f 75 72 63 65 20 2b 20  \/]))/.source + 
4b470 27 7c 27 20 2b 0a 20 20 20 20 20 20 20 20 2f 5c  '|' +.        /\
4b480 2f 28 3f 3d 5b 5e 2a 5c 2f 5d 29 5b 5e 5b 5c 2f  /(?=[^*\/])[^[\/
4b490 5c 5c 5d 2a 28 3f 3a 28 3f 3a 5c 5b 28 3f 3a 5c  \\]*(?:(?:\[(?:\
4b4a0 5c 2e 7c 5b 5e 5c 5d 5c 5c 5d 2a 29 2a 5c 5d 7c  \.|[^\]\\]*)*\]|
4b4b0 5c 5c 2e 29 5b 5e 5b 5c 2f 5c 5c 5d 2a 29 2a 3f  \\.)[^[\/\\]*)*?
4b4c0 28 5b 5e 3c 5d 5c 2f 29 5b 67 69 6d 5d 2a 2f 2e  ([^<]\/)[gim]*/.
4b4d0 73 6f 75 72 63 65 2c 0a 0a 20 20 20 20 20 20 55  source,..      U
4b4e0 4e 53 55 50 50 4f 52 54 45 44 20 3d 20 52 65 67  NSUPPORTED = Reg
4b4f0 45 78 70 28 27 5b 5c 5c 27 20 2b 20 27 78 30 30  Exp('[\\' + 'x00
4b500 2d 5c 5c 78 31 46 3c 3e 61 2d 7a 41 2d 5a 30 2d  -\\x1F<>a-zA-Z0-
4b510 39 5c 27 22 2c 3b 5c 5c 5c 5c 5d 27 29 2c 0a 0a  9\'",;\\\\]'),..
4b520 20 20 20 20 20 20 4e 45 45 44 5f 45 53 43 41 50        NEED_ESCAP
4b530 45 20 3d 20 2f 28 3f 3d 5b 5b 5c 5d 28 29 2a 2b  E = /(?=[[\]()*+
4b540 3f 2e 5e 24 7c 5d 29 2f 67 2c 0a 0a 20 20 20 20  ?.^$|])/g,..    
4b550 20 20 53 5f 51 42 4c 4f 43 4b 32 20 3d 20 52 5f    S_QBLOCK2 = R_
4b560 53 54 52 49 4e 47 53 2e 73 6f 75 72 63 65 20 2b  STRINGS.source +
4b570 20 27 7c 27 20 2b 20 2f 28 5c 2f 29 28 3f 21 5b   '|' + /(\/)(?![
4b580 2a 5c 2f 5d 29 2f 2e 73 6f 75 72 63 65 2c 0a 0a  *\/])/.source,..
4b590 20 20 20 20 20 20 46 49 4e 44 42 52 41 43 45 53        FINDBRACES
4b5a0 20 3d 20 7b 0a 20 20 20 20 20 20 20 20 27 28 27   = {.        '('
4b5b0 3a 20 52 65 67 45 78 70 28 27 28 5b 28 29 5d 29  : RegExp('([()])
4b5c0 7c 27 20 20 20 2b 20 53 5f 51 42 4c 4f 43 4b 32  |'   + S_QBLOCK2
4b5d0 2c 20 52 45 47 4c 4f 42 29 2c 0a 20 20 20 20 20  , REGLOB),.     
4b5e0 20 20 20 27 5b 27 3a 20 52 65 67 45 78 70 28 27     '[': RegExp('
4b5f0 28 5b 5b 5c 5c 5d 5d 29 7c 27 20 2b 20 53 5f 51  ([[\\]])|' + S_Q
4b600 42 4c 4f 43 4b 32 2c 20 52 45 47 4c 4f 42 29 2c  BLOCK2, REGLOB),
4b610 0a 20 20 20 20 20 20 20 20 27 7b 27 3a 20 52 65  .        '{': Re
4b620 67 45 78 70 28 27 28 5b 7b 7d 5d 29 7c 27 20 20  gExp('([{}])|'  
4b630 20 2b 20 53 5f 51 42 4c 4f 43 4b 32 2c 20 52 45   + S_QBLOCK2, RE
4b640 47 4c 4f 42 29 0a 20 20 20 20 20 20 7d 2c 0a 0a  GLOB).      },..
4b650 20 20 20 20 20 20 44 45 46 41 55 4c 54 20 3d 20        DEFAULT = 
4b660 27 7b 20 7d 27 3b 0a 0a 20 20 20 20 76 61 72 20  '{ }';..    var 
4b670 5f 70 61 69 72 73 20 3d 20 5b 0a 20 20 20 20 20  _pairs = [.     
4b680 20 27 7b 27 2c 20 27 7d 27 2c 0a 20 20 20 20 20   '{', '}',.     
4b690 20 27 7b 27 2c 20 27 7d 27 2c 0a 20 20 20 20 20   '{', '}',.     
4b6a0 20 2f 7b 5b 5e 7d 5d 2a 7d 2f 2c 0a 20 20 20 20   /{[^}]*}/,.    
4b6b0 20 20 2f 5c 5c 28 5b 7b 7d 5d 29 2f 67 2c 0a 20    /\\([{}])/g,. 
4b6c0 20 20 20 20 20 2f 5c 5c 28 7b 29 7c 7b 2f 67 2c       /\\({)|{/g,
4b6d0 0a 20 20 20 20 20 20 52 65 67 45 78 70 28 27 5c  .      RegExp('\
4b6e0 5c 5c 5c 28 7d 29 7c 28 5b 5b 28 7b 5d 29 7c 28  \\\(})|([[({])|(
4b6f0 7d 29 7c 27 20 2b 20 53 5f 51 42 4c 4f 43 4b 32  })|' + S_QBLOCK2
4b700 2c 20 52 45 47 4c 4f 42 29 2c 0a 20 20 20 20 20  , REGLOB),.     
4b710 20 44 45 46 41 55 4c 54 2c 0a 20 20 20 20 20 20   DEFAULT,.      
4b720 2f 5e 5c 73 2a 7b 5c 5e 3f 5c 73 2a 28 5b 24 5c  /^\s*{\^?\s*([$\
4b730 77 5d 2b 29 28 3f 3a 5c 73 2a 2c 5c 73 2a 28 5c  w]+)(?:\s*,\s*(\
4b740 53 2b 29 29 3f 5c 73 2b 69 6e 5c 73 2b 28 5c 53  S+))?\s+in\s+(\S
4b750 2e 2a 29 5c 73 2a 7d 2f 2c 0a 20 20 20 20 20 20  .*)\s*}/,.      
4b760 2f 28 5e 7c 5b 5e 5c 5c 5d 29 7b 3d 5b 5c 53 5c  /(^|[^\\]){=[\S\
4b770 73 5d 2a 3f 7d 2f 0a 20 20 20 20 5d 3b 0a 0a 20  s]*?}/.    ];.. 
4b780 20 20 20 76 61 72 0a 20 20 20 20 20 20 63 61 63     var.      cac
4b790 68 65 64 42 72 61 63 6b 65 74 73 20 3d 20 55 4e  hedBrackets = UN
4b7a0 44 45 46 2c 0a 20 20 20 20 20 20 5f 72 65 67 65  DEF,.      _rege
4b7b0 78 2c 0a 20 20 20 20 20 20 5f 63 61 63 68 65 20  x,.      _cache 
4b7c0 3d 20 5b 5d 2c 0a 20 20 20 20 20 20 5f 73 65 74  = [],.      _set
4b7d0 74 69 6e 67 73 3b 0a 0a 20 20 20 20 66 75 6e 63  tings;..    func
4b7e0 74 69 6f 6e 20 5f 6c 6f 6f 70 62 61 63 6b 20 28  tion _loopback (
4b7f0 72 65 29 20 7b 20 72 65 74 75 72 6e 20 72 65 20  re) { return re 
4b800 7d 0a 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20  }..    function 
4b810 5f 72 65 77 72 69 74 65 20 28 72 65 2c 20 62 70  _rewrite (re, bp
4b820 29 20 7b 0a 20 20 20 20 20 20 69 66 20 28 21 62  ) {.      if (!b
4b830 70 29 20 7b 20 62 70 20 3d 20 5f 63 61 63 68 65  p) { bp = _cache
4b840 3b 20 7d 0a 20 20 20 20 20 20 72 65 74 75 72 6e  ; }.      return
4b850 20 6e 65 77 20 52 65 67 45 78 70 28 0a 20 20 20   new RegExp(.   
4b860 20 20 20 20 20 72 65 2e 73 6f 75 72 63 65 2e 72       re.source.r
4b870 65 70 6c 61 63 65 28 2f 7b 2f 67 2c 20 62 70 5b  eplace(/{/g, bp[
4b880 32 5d 29 2e 72 65 70 6c 61 63 65 28 2f 7d 2f 67  2]).replace(/}/g
4b890 2c 20 62 70 5b 33 5d 29 2c 20 72 65 2e 67 6c 6f  , bp[3]), re.glo
4b8a0 62 61 6c 20 3f 20 52 45 47 4c 4f 42 20 3a 20 27  bal ? REGLOB : '
4b8b0 27 0a 20 20 20 20 20 20 29 0a 20 20 20 20 7d 0a  '.      ).    }.
4b8c0 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 5f 63  .    function _c
4b8d0 72 65 61 74 65 20 28 70 61 69 72 29 20 7b 0a 20  reate (pair) {. 
4b8e0 20 20 20 20 20 69 66 20 28 70 61 69 72 20 3d 3d       if (pair ==
4b8f0 3d 20 44 45 46 41 55 4c 54 29 20 7b 20 72 65 74  = DEFAULT) { ret
4b900 75 72 6e 20 5f 70 61 69 72 73 20 7d 0a 0a 20 20  urn _pairs }..  
4b910 20 20 20 20 76 61 72 20 61 72 72 20 3d 20 70 61      var arr = pa
4b920 69 72 2e 73 70 6c 69 74 28 27 20 27 29 3b 0a 0a  ir.split(' ');..
4b930 20 20 20 20 20 20 69 66 20 28 61 72 72 2e 6c 65        if (arr.le
4b940 6e 67 74 68 20 21 3d 3d 20 32 20 7c 7c 20 55 4e  ngth !== 2 || UN
4b950 53 55 50 50 4f 52 54 45 44 2e 74 65 73 74 28 70  SUPPORTED.test(p
4b960 61 69 72 29 29 20 7b 0a 20 20 20 20 20 20 20 20  air)) {.        
4b970 74 68 72 6f 77 20 6e 65 77 20 45 72 72 6f 72 28  throw new Error(
4b980 27 55 6e 73 75 70 70 6f 72 74 65 64 20 62 72 61  'Unsupported bra
4b990 63 6b 65 74 73 20 22 27 20 2b 20 70 61 69 72 20  ckets "' + pair 
4b9a0 2b 20 27 22 27 29 0a 20 20 20 20 20 20 7d 0a 20  + '"').      }. 
4b9b0 20 20 20 20 20 61 72 72 20 3d 20 61 72 72 2e 63       arr = arr.c
4b9c0 6f 6e 63 61 74 28 70 61 69 72 2e 72 65 70 6c 61  oncat(pair.repla
4b9d0 63 65 28 4e 45 45 44 5f 45 53 43 41 50 45 2c 20  ce(NEED_ESCAPE, 
4b9e0 27 5c 5c 27 29 2e 73 70 6c 69 74 28 27 20 27 29  '\\').split(' ')
4b9f0 29 3b 0a 0a 20 20 20 20 20 20 61 72 72 5b 34 5d  );..      arr[4]
4ba00 20 3d 20 5f 72 65 77 72 69 74 65 28 61 72 72 5b   = _rewrite(arr[
4ba10 31 5d 2e 6c 65 6e 67 74 68 20 3e 20 31 20 3f 20  1].length > 1 ? 
4ba20 2f 7b 5b 5c 53 5c 73 5d 2a 3f 7d 2f 20 3a 20 5f  /{[\S\s]*?}/ : _
4ba30 70 61 69 72 73 5b 34 5d 2c 20 61 72 72 29 3b 0a  pairs[4], arr);.
4ba40 20 20 20 20 20 20 61 72 72 5b 35 5d 20 3d 20 5f        arr[5] = _
4ba50 72 65 77 72 69 74 65 28 70 61 69 72 2e 6c 65 6e  rewrite(pair.len
4ba60 67 74 68 20 3e 20 33 20 3f 20 2f 5c 5c 28 7b 7c  gth > 3 ? /\\({|
4ba70 7d 29 2f 67 20 3a 20 5f 70 61 69 72 73 5b 35 5d  })/g : _pairs[5]
4ba80 2c 20 61 72 72 29 3b 0a 20 20 20 20 20 20 61 72  , arr);.      ar
4ba90 72 5b 36 5d 20 3d 20 5f 72 65 77 72 69 74 65 28  r[6] = _rewrite(
4baa0 5f 70 61 69 72 73 5b 36 5d 2c 20 61 72 72 29 3b  _pairs[6], arr);
4bab0 0a 20 20 20 20 20 20 61 72 72 5b 37 5d 20 3d 20  .      arr[7] = 
4bac0 52 65 67 45 78 70 28 27 5c 5c 5c 5c 28 27 20 2b  RegExp('\\\\(' +
4bad0 20 61 72 72 5b 33 5d 20 2b 20 27 29 7c 28 5b 5b   arr[3] + ')|([[
4bae0 28 7b 5d 29 7c 28 27 20 2b 20 61 72 72 5b 33 5d  ({])|(' + arr[3]
4baf0 20 2b 20 27 29 7c 27 20 2b 20 53 5f 51 42 4c 4f   + ')|' + S_QBLO
4bb00 43 4b 32 2c 20 52 45 47 4c 4f 42 29 3b 0a 20 20  CK2, REGLOB);.  
4bb10 20 20 20 20 61 72 72 5b 38 5d 20 3d 20 70 61 69      arr[8] = pai
4bb20 72 3b 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20  r;.      return 
4bb30 61 72 72 0a 20 20 20 20 7d 0a 0a 20 20 20 20 66  arr.    }..    f
4bb40 75 6e 63 74 69 6f 6e 20 5f 62 72 61 63 6b 65 74  unction _bracket
4bb50 73 20 28 72 65 4f 72 49 64 78 29 20 7b 0a 20 20  s (reOrIdx) {.  
4bb60 20 20 20 20 72 65 74 75 72 6e 20 72 65 4f 72 49      return reOrI
4bb70 64 78 20 69 6e 73 74 61 6e 63 65 6f 66 20 52 65  dx instanceof Re
4bb80 67 45 78 70 20 3f 20 5f 72 65 67 65 78 28 72 65  gExp ? _regex(re
4bb90 4f 72 49 64 78 29 20 3a 20 5f 63 61 63 68 65 5b  OrIdx) : _cache[
4bba0 72 65 4f 72 49 64 78 5d 0a 20 20 20 20 7d 0a 0a  reOrIdx].    }..
4bbb0 20 20 20 20 5f 62 72 61 63 6b 65 74 73 2e 73 70      _brackets.sp
4bbc0 6c 69 74 20 3d 20 66 75 6e 63 74 69 6f 6e 20 73  lit = function s
4bbd0 70 6c 69 74 20 28 73 74 72 2c 20 74 6d 70 6c 2c  plit (str, tmpl,
4bbe0 20 5f 62 70 29 20 7b 0a 20 20 20 20 20 20 2f 2f   _bp) {.      //
4bbf0 20 69 73 74 61 6e 62 75 6c 20 69 67 6e 6f 72 65   istanbul ignore
4bc00 20 6e 65 78 74 3a 20 5f 62 70 20 69 73 20 66 6f   next: _bp is fo
4bc10 72 20 74 68 65 20 63 6f 6d 70 69 6c 65 72 0a 20  r the compiler. 
4bc20 20 20 20 20 20 69 66 20 28 21 5f 62 70 29 20 7b       if (!_bp) {
4bc30 20 5f 62 70 20 3d 20 5f 63 61 63 68 65 3b 20 7d   _bp = _cache; }
4bc40 0a 0a 20 20 20 20 20 20 76 61 72 0a 20 20 20 20  ..      var.    
4bc50 20 20 20 20 70 61 72 74 73 20 3d 20 5b 5d 2c 0a      parts = [],.
4bc60 20 20 20 20 20 20 20 20 6d 61 74 63 68 2c 0a 20          match,. 
4bc70 20 20 20 20 20 20 20 69 73 65 78 70 72 2c 0a 20         isexpr,. 
4bc80 20 20 20 20 20 20 20 73 74 61 72 74 2c 0a 20 20         start,.  
4bc90 20 20 20 20 20 20 70 6f 73 2c 0a 20 20 20 20 20        pos,.     
4bca0 20 20 20 72 65 20 3d 20 5f 62 70 5b 36 5d 3b 0a     re = _bp[6];.
4bcb0 0a 20 20 20 20 20 20 76 61 72 20 71 62 6c 6f 63  .      var qbloc
4bcc0 6b 73 20 3d 20 5b 5d 3b 0a 20 20 20 20 20 20 76  ks = [];.      v
4bcd0 61 72 20 70 72 65 76 53 74 72 20 3d 20 27 27 3b  ar prevStr = '';
4bce0 0a 20 20 20 20 20 20 76 61 72 20 6d 61 72 6b 2c  .      var mark,
4bcf0 20 6c 61 73 74 49 6e 64 65 78 3b 0a 0a 20 20 20   lastIndex;..   
4bd00 20 20 20 69 73 65 78 70 72 20 3d 20 73 74 61 72     isexpr = star
4bd10 74 20 3d 20 72 65 2e 6c 61 73 74 49 6e 64 65 78  t = re.lastIndex
4bd20 20 3d 20 30 3b 0a 0a 20 20 20 20 20 20 77 68 69   = 0;..      whi
4bd30 6c 65 20 28 28 6d 61 74 63 68 20 3d 20 72 65 2e  le ((match = re.
4bd40 65 78 65 63 28 73 74 72 29 29 29 20 7b 0a 0a 20  exec(str))) {.. 
4bd50 20 20 20 20 20 20 20 6c 61 73 74 49 6e 64 65 78         lastIndex
4bd60 20 3d 20 72 65 2e 6c 61 73 74 49 6e 64 65 78 3b   = re.lastIndex;
4bd70 0a 20 20 20 20 20 20 20 20 70 6f 73 20 3d 20 6d  .        pos = m
4bd80 61 74 63 68 2e 69 6e 64 65 78 3b 0a 0a 20 20 20  atch.index;..   
4bd90 20 20 20 20 20 69 66 20 28 69 73 65 78 70 72 29       if (isexpr)
4bda0 20 7b 0a 0a 20 20 20 20 20 20 20 20 20 20 69 66   {..          if
4bdb0 20 28 6d 61 74 63 68 5b 32 5d 29 20 7b 0a 0a 20   (match[2]) {.. 
4bdc0 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 63             var c
4bdd0 68 20 3d 20 6d 61 74 63 68 5b 32 5d 3b 0a 20 20  h = match[2];.  
4bde0 20 20 20 20 20 20 20 20 20 20 76 61 72 20 72 65            var re
4bdf0 63 68 20 3d 20 46 49 4e 44 42 52 41 43 45 53 5b  ch = FINDBRACES[
4be00 63 68 5d 3b 0a 20 20 20 20 20 20 20 20 20 20 20  ch];.           
4be10 20 76 61 72 20 69 78 20 3d 20 31 3b 0a 0a 20 20   var ix = 1;..  
4be20 20 20 20 20 20 20 20 20 20 20 72 65 63 68 2e 6c            rech.l
4be30 61 73 74 49 6e 64 65 78 20 3d 20 6c 61 73 74 49  astIndex = lastI
4be40 6e 64 65 78 3b 0a 20 20 20 20 20 20 20 20 20 20  ndex;.          
4be50 20 20 77 68 69 6c 65 20 28 28 6d 61 74 63 68 20    while ((match 
4be60 3d 20 72 65 63 68 2e 65 78 65 63 28 73 74 72 29  = rech.exec(str)
4be70 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  )) {.           
4be80 20 20 20 69 66 20 28 6d 61 74 63 68 5b 31 5d 29     if (match[1])
4be90 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   {.             
4bea0 20 20 20 69 66 20 28 6d 61 74 63 68 5b 31 5d 20     if (match[1] 
4beb0 3d 3d 3d 20 63 68 29 20 7b 20 2b 2b 69 78 3b 20  === ch) { ++ix; 
4bec0 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  }.              
4bed0 20 20 65 6c 73 65 20 69 66 20 28 21 2d 2d 69 78    else if (!--ix
4bee0 29 20 7b 20 62 72 65 61 6b 20 7d 0a 20 20 20 20  ) { break }.    
4bef0 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65            } else
4bf00 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   {.             
4bf10 20 20 20 72 65 63 68 2e 6c 61 73 74 49 6e 64 65     rech.lastInde
4bf20 78 20 3d 20 70 75 73 68 51 42 6c 6f 63 6b 28 6d  x = pushQBlock(m
4bf30 61 74 63 68 2e 69 6e 64 65 78 2c 20 72 65 63 68  atch.index, rech
4bf40 2e 6c 61 73 74 49 6e 64 65 78 2c 20 6d 61 74 63  .lastIndex, matc
4bf50 68 5b 32 5d 29 3b 0a 20 20 20 20 20 20 20 20 20  h[2]);.         
4bf60 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20       }.         
4bf70 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20     }.           
4bf80 20 72 65 2e 6c 61 73 74 49 6e 64 65 78 20 3d 20   re.lastIndex = 
4bf90 69 78 20 3f 20 73 74 72 2e 6c 65 6e 67 74 68 20  ix ? str.length 
4bfa0 3a 20 72 65 63 68 2e 6c 61 73 74 49 6e 64 65 78  : rech.lastIndex
4bfb0 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6f  ;.            co
4bfc0 6e 74 69 6e 75 65 0a 20 20 20 20 20 20 20 20 20  ntinue.         
4bfd0 20 7d 0a 0a 20 20 20 20 20 20 20 20 20 20 69 66   }..          if
4bfe0 20 28 21 6d 61 74 63 68 5b 33 5d 29 20 7b 0a 20   (!match[3]) {. 
4bff0 20 20 20 20 20 20 20 20 20 20 20 72 65 2e 6c 61             re.la
4c000 73 74 49 6e 64 65 78 20 3d 20 70 75 73 68 51 42  stIndex = pushQB
4c010 6c 6f 63 6b 28 70 6f 73 2c 20 6c 61 73 74 49 6e  lock(pos, lastIn
4c020 64 65 78 2c 20 6d 61 74 63 68 5b 34 5d 29 3b 0a  dex, match[4]);.
4c030 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74              cont
4c040 69 6e 75 65 0a 20 20 20 20 20 20 20 20 20 20 7d  inue.          }
4c050 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20  .        }..    
4c060 20 20 20 20 69 66 20 28 21 6d 61 74 63 68 5b 31      if (!match[1
4c070 5d 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 75  ]) {.          u
4c080 6e 65 73 63 61 70 65 53 74 72 28 73 74 72 2e 73  nescapeStr(str.s
4c090 6c 69 63 65 28 73 74 61 72 74 2c 20 70 6f 73 29  lice(start, pos)
4c0a0 29 3b 0a 20 20 20 20 20 20 20 20 20 20 73 74 61  );.          sta
4c0b0 72 74 20 3d 20 72 65 2e 6c 61 73 74 49 6e 64 65  rt = re.lastInde
4c0c0 78 3b 0a 20 20 20 20 20 20 20 20 20 20 72 65 20  x;.          re 
4c0d0 3d 20 5f 62 70 5b 36 20 2b 20 28 69 73 65 78 70  = _bp[6 + (isexp
4c0e0 72 20 5e 3d 20 31 29 5d 3b 0a 20 20 20 20 20 20  r ^= 1)];.      
4c0f0 20 20 20 20 72 65 2e 6c 61 73 74 49 6e 64 65 78      re.lastIndex
4c100 20 3d 20 73 74 61 72 74 3b 0a 20 20 20 20 20 20   = start;.      
4c110 20 20 7d 0a 20 20 20 20 20 20 7d 0a 0a 20 20 20    }.      }..   
4c120 20 20 20 69 66 20 28 73 74 72 20 26 26 20 73 74     if (str && st
4c130 61 72 74 20 3c 20 73 74 72 2e 6c 65 6e 67 74 68  art < str.length
4c140 29 20 7b 0a 20 20 20 20 20 20 20 20 75 6e 65 73  ) {.        unes
4c150 63 61 70 65 53 74 72 28 73 74 72 2e 73 6c 69 63  capeStr(str.slic
4c160 65 28 73 74 61 72 74 29 29 3b 0a 20 20 20 20 20  e(start));.     
4c170 20 7d 0a 0a 20 20 20 20 20 20 70 61 72 74 73 2e   }..      parts.
4c180 71 62 6c 6f 63 6b 73 20 3d 20 71 62 6c 6f 63 6b  qblocks = qblock
4c190 73 3b 0a 0a 20 20 20 20 20 20 72 65 74 75 72 6e  s;..      return
4c1a0 20 70 61 72 74 73 0a 0a 20 20 20 20 20 20 66 75   parts..      fu
4c1b0 6e 63 74 69 6f 6e 20 75 6e 65 73 63 61 70 65 53  nction unescapeS
4c1c0 74 72 20 28 73 29 20 7b 0a 20 20 20 20 20 20 20  tr (s) {.       
4c1d0 20 69 66 20 28 70 72 65 76 53 74 72 29 20 7b 0a   if (prevStr) {.
4c1e0 20 20 20 20 20 20 20 20 20 20 73 20 3d 20 70 72            s = pr
4c1f0 65 76 53 74 72 20 2b 20 73 3b 0a 20 20 20 20 20  evStr + s;.     
4c200 20 20 20 20 20 70 72 65 76 53 74 72 20 3d 20 27       prevStr = '
4c210 27 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20  ';.        }.   
4c220 20 20 20 20 20 69 66 20 28 74 6d 70 6c 20 7c 7c       if (tmpl ||
4c230 20 69 73 65 78 70 72 29 20 7b 0a 20 20 20 20 20   isexpr) {.     
4c240 20 20 20 20 20 70 61 72 74 73 2e 70 75 73 68 28       parts.push(
4c250 73 20 26 26 20 73 2e 72 65 70 6c 61 63 65 28 5f  s && s.replace(_
4c260 62 70 5b 35 5d 2c 20 27 24 31 27 29 29 3b 0a 20  bp[5], '$1'));. 
4c270 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a         } else {.
4c280 20 20 20 20 20 20 20 20 20 20 70 61 72 74 73 2e            parts.
4c290 70 75 73 68 28 73 29 3b 0a 20 20 20 20 20 20 20  push(s);.       
4c2a0 20 7d 0a 20 20 20 20 20 20 7d 0a 0a 20 20 20 20   }.      }..    
4c2b0 20 20 66 75 6e 63 74 69 6f 6e 20 70 75 73 68 51    function pushQ
4c2c0 42 6c 6f 63 6b 28 5f 70 6f 73 2c 20 5f 6c 61 73  Block(_pos, _las
4c2d0 74 49 6e 64 65 78 2c 20 73 6c 61 73 68 29 20 7b  tIndex, slash) {
4c2e0 20 2f 2f 65 73 6c 69 6e 74 2d 64 69 73 61 62 6c   //eslint-disabl
4c2f0 65 2d 6c 69 6e 65 0a 20 20 20 20 20 20 20 20 69  e-line.        i
4c300 66 20 28 73 6c 61 73 68 29 20 7b 0a 20 20 20 20  f (slash) {.    
4c310 20 20 20 20 20 20 5f 6c 61 73 74 49 6e 64 65 78        _lastIndex
4c320 20 3d 20 73 6b 69 70 52 65 67 65 78 28 73 74 72   = skipRegex(str
4c330 2c 20 5f 70 6f 73 29 3b 0a 20 20 20 20 20 20 20  , _pos);.       
4c340 20 7d 0a 0a 20 20 20 20 20 20 20 20 69 66 20 28   }..        if (
4c350 74 6d 70 6c 20 26 26 20 5f 6c 61 73 74 49 6e 64  tmpl && _lastInd
4c360 65 78 20 3e 20 5f 70 6f 73 20 2b 20 32 29 20 7b  ex > _pos + 2) {
4c370 0a 20 20 20 20 20 20 20 20 20 20 6d 61 72 6b 20  .          mark 
4c380 3d 20 27 5c 75 32 30 35 37 27 20 2b 20 71 62 6c  = '\u2057' + qbl
4c390 6f 63 6b 73 2e 6c 65 6e 67 74 68 20 2b 20 27 7e  ocks.length + '~
4c3a0 27 3b 0a 20 20 20 20 20 20 20 20 20 20 71 62 6c  ';.          qbl
4c3b0 6f 63 6b 73 2e 70 75 73 68 28 73 74 72 2e 73 6c  ocks.push(str.sl
4c3c0 69 63 65 28 5f 70 6f 73 2c 20 5f 6c 61 73 74 49  ice(_pos, _lastI
4c3d0 6e 64 65 78 29 29 3b 0a 20 20 20 20 20 20 20 20  ndex));.        
4c3e0 20 20 70 72 65 76 53 74 72 20 2b 3d 20 73 74 72    prevStr += str
4c3f0 2e 73 6c 69 63 65 28 73 74 61 72 74 2c 20 5f 70  .slice(start, _p
4c400 6f 73 29 20 2b 20 6d 61 72 6b 3b 0a 20 20 20 20  os) + mark;.    
4c410 20 20 20 20 20 20 73 74 61 72 74 20 3d 20 5f 6c        start = _l
4c420 61 73 74 49 6e 64 65 78 3b 0a 20 20 20 20 20 20  astIndex;.      
4c430 20 20 7d 0a 20 20 20 20 20 20 20 20 72 65 74 75    }.        retu
4c440 72 6e 20 5f 6c 61 73 74 49 6e 64 65 78 0a 20 20  rn _lastIndex.  
4c450 20 20 20 20 7d 0a 20 20 20 20 7d 3b 0a 0a 20 20      }.    };..  
4c460 20 20 5f 62 72 61 63 6b 65 74 73 2e 68 61 73 45    _brackets.hasE
4c470 78 70 72 20 3d 20 66 75 6e 63 74 69 6f 6e 20 68  xpr = function h
4c480 61 73 45 78 70 72 20 28 73 74 72 29 20 7b 0a 20  asExpr (str) {. 
4c490 20 20 20 20 20 72 65 74 75 72 6e 20 5f 63 61 63       return _cac
4c4a0 68 65 5b 34 5d 2e 74 65 73 74 28 73 74 72 29 0a  he[4].test(str).
4c4b0 20 20 20 20 7d 3b 0a 0a 20 20 20 20 5f 62 72 61      };..    _bra
4c4c0 63 6b 65 74 73 2e 6c 6f 6f 70 4b 65 79 73 20 3d  ckets.loopKeys =
4c4d0 20 66 75 6e 63 74 69 6f 6e 20 6c 6f 6f 70 4b 65   function loopKe
4c4e0 79 73 20 28 65 78 70 72 29 20 7b 0a 20 20 20 20  ys (expr) {.    
4c4f0 20 20 76 61 72 20 6d 20 3d 20 65 78 70 72 2e 6d    var m = expr.m
4c500 61 74 63 68 28 5f 63 61 63 68 65 5b 39 5d 29 3b  atch(_cache[9]);
4c510 0a 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d  ..      return m
4c520 0a 20 20 20 20 20 20 20 20 3f 20 7b 20 6b 65 79  .        ? { key
4c530 3a 20 6d 5b 31 5d 2c 20 70 6f 73 3a 20 6d 5b 32  : m[1], pos: m[2
4c540 5d 2c 20 76 61 6c 3a 20 5f 63 61 63 68 65 5b 30  ], val: _cache[0
4c550 5d 20 2b 20 6d 5b 33 5d 2e 74 72 69 6d 28 29 20  ] + m[3].trim() 
4c560 2b 20 5f 63 61 63 68 65 5b 31 5d 20 7d 0a 20 20  + _cache[1] }.  
4c570 20 20 20 20 20 20 3a 20 7b 20 76 61 6c 3a 20 65        : { val: e
4c580 78 70 72 2e 74 72 69 6d 28 29 20 7d 0a 20 20 20  xpr.trim() }.   
4c590 20 7d 3b 0a 0a 20 20 20 20 5f 62 72 61 63 6b 65   };..    _bracke
4c5a0 74 73 2e 61 72 72 61 79 20 3d 20 66 75 6e 63 74  ts.array = funct
4c5b0 69 6f 6e 20 61 72 72 61 79 20 28 70 61 69 72 29  ion array (pair)
4c5c0 20 7b 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20   {.      return 
4c5d0 70 61 69 72 20 3f 20 5f 63 72 65 61 74 65 28 70  pair ? _create(p
4c5e0 61 69 72 29 20 3a 20 5f 63 61 63 68 65 0a 20 20  air) : _cache.  
4c5f0 20 20 7d 3b 0a 0a 20 20 20 20 66 75 6e 63 74 69    };..    functi
4c600 6f 6e 20 5f 72 65 73 65 74 20 28 70 61 69 72 29  on _reset (pair)
4c610 20 7b 0a 20 20 20 20 20 20 69 66 20 28 28 70 61   {.      if ((pa
4c620 69 72 20 7c 7c 20 28 70 61 69 72 20 3d 20 44 45  ir || (pair = DE
4c630 46 41 55 4c 54 29 29 20 21 3d 3d 20 5f 63 61 63  FAULT)) !== _cac
4c640 68 65 5b 38 5d 29 20 7b 0a 20 20 20 20 20 20 20  he[8]) {.       
4c650 20 5f 63 61 63 68 65 20 3d 20 5f 63 72 65 61 74   _cache = _creat
4c660 65 28 70 61 69 72 29 3b 0a 20 20 20 20 20 20 20  e(pair);.       
4c670 20 5f 72 65 67 65 78 20 3d 20 70 61 69 72 20 3d   _regex = pair =
4c680 3d 3d 20 44 45 46 41 55 4c 54 20 3f 20 5f 6c 6f  == DEFAULT ? _lo
4c690 6f 70 62 61 63 6b 20 3a 20 5f 72 65 77 72 69 74  opback : _rewrit
4c6a0 65 3b 0a 20 20 20 20 20 20 20 20 5f 63 61 63 68  e;.        _cach
4c6b0 65 5b 39 5d 20 3d 20 5f 72 65 67 65 78 28 5f 70  e[9] = _regex(_p
4c6c0 61 69 72 73 5b 39 5d 29 3b 0a 20 20 20 20 20 20  airs[9]);.      
4c6d0 7d 0a 20 20 20 20 20 20 63 61 63 68 65 64 42 72  }.      cachedBr
4c6e0 61 63 6b 65 74 73 20 3d 20 70 61 69 72 3b 0a 20  ackets = pair;. 
4c6f0 20 20 20 7d 0a 0a 20 20 20 20 66 75 6e 63 74 69     }..    functi
4c700 6f 6e 20 5f 73 65 74 53 65 74 74 69 6e 67 73 20  on _setSettings 
4c710 28 6f 29 20 7b 0a 20 20 20 20 20 20 76 61 72 20  (o) {.      var 
4c720 62 3b 0a 0a 20 20 20 20 20 20 6f 20 3d 20 6f 20  b;..      o = o 
4c730 7c 7c 20 7b 7d 3b 0a 20 20 20 20 20 20 62 20 3d  || {};.      b =
4c740 20 6f 2e 62 72 61 63 6b 65 74 73 3b 0a 20 20 20   o.brackets;.   
4c750 20 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65     Object.define
4c760 50 72 6f 70 65 72 74 79 28 6f 2c 20 27 62 72 61  Property(o, 'bra
4c770 63 6b 65 74 73 27 2c 20 7b 0a 20 20 20 20 20 20  ckets', {.      
4c780 20 20 73 65 74 3a 20 5f 72 65 73 65 74 2c 0a 20    set: _reset,. 
4c790 20 20 20 20 20 20 20 67 65 74 3a 20 66 75 6e 63         get: func
4c7a0 74 69 6f 6e 20 28 29 20 7b 20 72 65 74 75 72 6e  tion () { return
4c7b0 20 63 61 63 68 65 64 42 72 61 63 6b 65 74 73 20   cachedBrackets 
4c7c0 7d 2c 0a 20 20 20 20 20 20 20 20 65 6e 75 6d 65  },.        enume
4c7d0 72 61 62 6c 65 3a 20 74 72 75 65 0a 20 20 20 20  rable: true.    
4c7e0 20 20 7d 29 3b 0a 20 20 20 20 20 20 5f 73 65 74    });.      _set
4c7f0 74 69 6e 67 73 20 3d 20 6f 3b 0a 20 20 20 20 20  tings = o;.     
4c800 20 5f 72 65 73 65 74 28 62 29 3b 0a 20 20 20 20   _reset(b);.    
4c810 7d 0a 0a 20 20 20 20 4f 62 6a 65 63 74 2e 64 65  }..    Object.de
4c820 66 69 6e 65 50 72 6f 70 65 72 74 79 28 5f 62 72  fineProperty(_br
4c830 61 63 6b 65 74 73 2c 20 27 73 65 74 74 69 6e 67  ackets, 'setting
4c840 73 27 2c 20 7b 0a 20 20 20 20 20 20 73 65 74 3a  s', {.      set:
4c850 20 5f 73 65 74 53 65 74 74 69 6e 67 73 2c 0a 20   _setSettings,. 
4c860 20 20 20 20 20 67 65 74 3a 20 66 75 6e 63 74 69       get: functi
4c870 6f 6e 20 28 29 20 7b 20 72 65 74 75 72 6e 20 5f  on () { return _
4c880 73 65 74 74 69 6e 67 73 20 7d 0a 20 20 20 20 7d  settings }.    }
4c890 29 3b 0a 0a 20 20 20 20 2f 2a 20 69 73 74 61 6e  );..    /* istan
4c8a0 62 75 6c 20 69 67 6e 6f 72 65 20 6e 65 78 74 3a  bul ignore next:
4c8b0 20 69 6e 20 74 68 65 20 62 72 6f 77 73 65 72 20   in the browser 
4c8c0 72 69 6f 74 20 69 73 20 61 6c 77 61 79 73 20 69  riot is always i
4c8d0 6e 20 74 68 65 20 73 63 6f 70 65 20 2a 2f 0a 20  n the scope */. 
4c8e0 20 20 20 5f 62 72 61 63 6b 65 74 73 2e 73 65 74     _brackets.set
4c8f0 74 69 6e 67 73 20 3d 20 74 79 70 65 6f 66 20 72  tings = typeof r
4c900 69 6f 74 20 21 3d 3d 20 27 75 6e 64 65 66 69 6e  iot !== 'undefin
4c910 65 64 27 20 26 26 20 72 69 6f 74 2e 73 65 74 74  ed' && riot.sett
4c920 69 6e 67 73 20 7c 7c 20 7b 7d 3b 0a 20 20 20 20  ings || {};.    
4c930 5f 62 72 61 63 6b 65 74 73 2e 73 65 74 20 3d 20  _brackets.set = 
4c940 5f 72 65 73 65 74 3b 0a 20 20 20 20 5f 62 72 61  _reset;.    _bra
4c950 63 6b 65 74 73 2e 73 6b 69 70 52 65 67 65 78 20  ckets.skipRegex 
4c960 3d 20 73 6b 69 70 52 65 67 65 78 3b 0a 0a 20 20  = skipRegex;..  
4c970 20 20 5f 62 72 61 63 6b 65 74 73 2e 52 5f 53 54    _brackets.R_ST
4c980 52 49 4e 47 53 20 3d 20 52 5f 53 54 52 49 4e 47  RINGS = R_STRING
4c990 53 3b 0a 20 20 20 20 5f 62 72 61 63 6b 65 74 73  S;.    _brackets
4c9a0 2e 52 5f 4d 4c 43 4f 4d 4d 53 20 3d 20 52 5f 4d  .R_MLCOMMS = R_M
4c9b0 4c 43 4f 4d 4d 53 3b 0a 20 20 20 20 5f 62 72 61  LCOMMS;.    _bra
4c9c0 63 6b 65 74 73 2e 53 5f 51 42 4c 4f 43 4b 53 20  ckets.S_QBLOCKS 
4c9d0 3d 20 53 5f 51 42 4c 4f 43 4b 53 3b 0a 20 20 20  = S_QBLOCKS;.   
4c9e0 20 5f 62 72 61 63 6b 65 74 73 2e 53 5f 51 42 4c   _brackets.S_QBL
4c9f0 4f 43 4b 32 20 3d 20 53 5f 51 42 4c 4f 43 4b 32  OCK2 = S_QBLOCK2
4ca00 3b 0a 0a 20 20 20 20 72 65 74 75 72 6e 20 5f 62  ;..    return _b
4ca10 72 61 63 6b 65 74 73 0a 0a 20 20 7d 29 28 29 3b  rackets..  })();
4ca20 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 40 6d 6f  ..  /**.   * @mo
4ca30 64 75 6c 65 20 74 6d 70 6c 0a 20 20 20 2a 0a 20  dule tmpl.   *. 
4ca40 20 20 2a 20 74 6d 70 6c 20 20 20 20 20 20 20 20    * tmpl        
4ca50 20 20 2d 20 52 6f 6f 74 20 66 75 6e 63 74 69 6f    - Root functio
4ca60 6e 2c 20 72 65 74 75 72 6e 73 20 74 68 65 20 74  n, returns the t
4ca70 65 6d 70 6c 61 74 65 20 76 61 6c 75 65 2c 20 72  emplate value, r
4ca80 65 6e 64 65 72 20 77 69 74 68 20 64 61 74 61 0a  ender with data.
4ca90 20 20 20 2a 20 74 6d 70 6c 2e 68 61 73 45 78 70     * tmpl.hasExp
4caa0 72 20 20 2d 20 54 65 73 74 20 74 68 65 20 65 78  r  - Test the ex
4cab0 69 73 74 65 6e 63 65 20 6f 66 20 61 20 65 78 70  istence of a exp
4cac0 72 65 73 73 69 6f 6e 20 69 6e 73 69 64 65 20 61  ression inside a
4cad0 20 73 74 72 69 6e 67 0a 20 20 20 2a 20 74 6d 70   string.   * tmp
4cae0 6c 2e 6c 6f 6f 70 4b 65 79 73 20 2d 20 47 65 74  l.loopKeys - Get
4caf0 20 74 68 65 20 6b 65 79 73 20 66 6f 72 20 61 6e   the keys for an
4cb00 20 27 65 61 63 68 27 20 6c 6f 6f 70 20 28 75 73   'each' loop (us
4cb10 65 64 20 62 79 20 60 5f 65 61 63 68 60 29 0a 20  ed by `_each`). 
4cb20 20 20 2a 2f 0a 0a 20 20 76 61 72 20 74 6d 70 6c    */..  var tmpl
4cb30 20 3d 20 28 66 75 6e 63 74 69 6f 6e 20 28 29 20   = (function () 
4cb40 7b 0a 0a 20 20 20 20 76 61 72 20 5f 63 61 63 68  {..    var _cach
4cb50 65 20 3d 20 7b 7d 3b 0a 0a 20 20 20 20 66 75 6e  e = {};..    fun
4cb60 63 74 69 6f 6e 20 5f 74 6d 70 6c 20 28 73 74 72  ction _tmpl (str
4cb70 2c 20 64 61 74 61 29 20 7b 0a 20 20 20 20 20 20  , data) {.      
4cb80 69 66 20 28 21 73 74 72 29 20 7b 20 72 65 74 75  if (!str) { retu
4cb90 72 6e 20 73 74 72 20 7d 0a 0a 20 20 20 20 20 20  rn str }..      
4cba0 72 65 74 75 72 6e 20 28 5f 63 61 63 68 65 5b 73  return (_cache[s
4cbb0 74 72 5d 20 7c 7c 20 28 5f 63 61 63 68 65 5b 73  tr] || (_cache[s
4cbc0 74 72 5d 20 3d 20 5f 63 72 65 61 74 65 28 73 74  tr] = _create(st
4cbd0 72 29 29 29 2e 63 61 6c 6c 28 0a 20 20 20 20 20  r))).call(.     
4cbe0 20 20 20 64 61 74 61 2c 20 5f 6c 6f 67 45 72 72     data, _logErr
4cbf0 2e 62 69 6e 64 28 7b 0a 20 20 20 20 20 20 20 20  .bind({.        
4cc00 20 20 64 61 74 61 3a 20 64 61 74 61 2c 0a 20 20    data: data,.  
4cc10 20 20 20 20 20 20 20 20 74 6d 70 6c 3a 20 73 74          tmpl: st
4cc20 72 0a 20 20 20 20 20 20 20 20 7d 29 0a 20 20 20  r.        }).   
4cc30 20 20 20 29 0a 20 20 20 20 7d 0a 0a 20 20 20 20     ).    }..    
4cc40 5f 74 6d 70 6c 2e 68 61 73 45 78 70 72 20 3d 20  _tmpl.hasExpr = 
4cc50 62 72 61 63 6b 65 74 73 2e 68 61 73 45 78 70 72  brackets.hasExpr
4cc60 3b 0a 0a 20 20 20 20 5f 74 6d 70 6c 2e 6c 6f 6f  ;..    _tmpl.loo
4cc70 70 4b 65 79 73 20 3d 20 62 72 61 63 6b 65 74 73  pKeys = brackets
4cc80 2e 6c 6f 6f 70 4b 65 79 73 3b 0a 0a 20 20 20 20  .loopKeys;..    
4cc90 2f 2f 20 69 73 74 61 6e 62 75 6c 20 69 67 6e 6f  // istanbul igno
4cca0 72 65 20 6e 65 78 74 0a 20 20 20 20 5f 74 6d 70  re next.    _tmp
4ccb0 6c 2e 63 6c 65 61 72 43 61 63 68 65 20 3d 20 66  l.clearCache = f
4ccc0 75 6e 63 74 69 6f 6e 20 28 29 20 7b 20 5f 63 61  unction () { _ca
4ccd0 63 68 65 20 3d 20 7b 7d 3b 20 7d 3b 0a 0a 20 20  che = {}; };..  
4cce0 20 20 5f 74 6d 70 6c 2e 65 72 72 6f 72 48 61 6e    _tmpl.errorHan
4ccf0 64 6c 65 72 20 3d 20 6e 75 6c 6c 3b 0a 0a 20 20  dler = null;..  
4cd00 20 20 66 75 6e 63 74 69 6f 6e 20 5f 6c 6f 67 45    function _logE
4cd10 72 72 20 28 65 72 72 2c 20 63 74 78 29 20 7b 0a  rr (err, ctx) {.
4cd20 0a 20 20 20 20 20 20 65 72 72 2e 72 69 6f 74 44  .      err.riotD
4cd30 61 74 61 20 3d 20 7b 0a 20 20 20 20 20 20 20 20  ata = {.        
4cd40 74 61 67 4e 61 6d 65 3a 20 63 74 78 20 26 26 20  tagName: ctx && 
4cd50 63 74 78 2e 5f 5f 20 26 26 20 63 74 78 2e 5f 5f  ctx.__ && ctx.__
4cd60 2e 74 61 67 4e 61 6d 65 2c 0a 20 20 20 20 20 20  .tagName,.      
4cd70 20 20 5f 72 69 6f 74 5f 69 64 3a 20 63 74 78 20    _riot_id: ctx 
4cd80 26 26 20 63 74 78 2e 5f 72 69 6f 74 5f 69 64 20  && ctx._riot_id 
4cd90 20 2f 2f 65 73 6c 69 6e 74 2d 64 69 73 61 62 6c   //eslint-disabl
4cda0 65 2d 6c 69 6e 65 20 63 61 6d 65 6c 63 61 73 65  e-line camelcase
4cdb0 0a 20 20 20 20 20 20 7d 3b 0a 0a 20 20 20 20 20  .      };..     
4cdc0 20 69 66 20 28 5f 74 6d 70 6c 2e 65 72 72 6f 72   if (_tmpl.error
4cdd0 48 61 6e 64 6c 65 72 29 20 7b 20 5f 74 6d 70 6c  Handler) { _tmpl
4cde0 2e 65 72 72 6f 72 48 61 6e 64 6c 65 72 28 65 72  .errorHandler(er
4cdf0 72 29 3b 20 7d 0a 20 20 20 20 20 20 65 6c 73 65  r); }.      else
4ce00 20 69 66 20 28 0a 20 20 20 20 20 20 20 20 74 79   if (.        ty
4ce10 70 65 6f 66 20 63 6f 6e 73 6f 6c 65 20 21 3d 3d  peof console !==
4ce20 20 27 75 6e 64 65 66 69 6e 65 64 27 20 26 26 0a   'undefined' &&.
4ce30 20 20 20 20 20 20 20 20 74 79 70 65 6f 66 20 63          typeof c
4ce40 6f 6e 73 6f 6c 65 2e 65 72 72 6f 72 20 3d 3d 3d  onsole.error ===
4ce50 20 27 66 75 6e 63 74 69 6f 6e 27 0a 20 20 20 20   'function'.    
4ce60 20 20 29 20 7b 0a 20 20 20 20 20 20 20 20 63 6f    ) {.        co
4ce70 6e 73 6f 6c 65 2e 65 72 72 6f 72 28 65 72 72 2e  nsole.error(err.
4ce80 6d 65 73 73 61 67 65 29 3b 0a 20 20 20 20 20 20  message);.      
4ce90 20 20 63 6f 6e 73 6f 6c 65 2e 6c 6f 67 28 27 3c    console.log('<
4cea0 25 73 3e 20 25 73 27 2c 20 65 72 72 2e 72 69 6f  %s> %s', err.rio
4ceb0 74 44 61 74 61 2e 74 61 67 4e 61 6d 65 20 7c 7c  tData.tagName ||
4cec0 20 27 55 6e 6b 6e 6f 77 6e 20 74 61 67 27 2c 20   'Unknown tag', 
4ced0 74 68 69 73 2e 74 6d 70 6c 29 3b 20 2f 2f 20 65  this.tmpl); // e
4cee0 73 6c 69 6e 74 2d 64 69 73 61 62 6c 65 2d 6c 69  slint-disable-li
4cef0 6e 65 0a 20 20 20 20 20 20 20 20 63 6f 6e 73 6f  ne.        conso
4cf00 6c 65 2e 6c 6f 67 28 74 68 69 73 2e 64 61 74 61  le.log(this.data
4cf10 29 3b 20 2f 2f 20 65 73 6c 69 6e 74 2d 64 69 73  ); // eslint-dis
4cf20 61 62 6c 65 2d 6c 69 6e 65 0a 20 20 20 20 20 20  able-line.      
4cf30 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 66 75 6e  }.    }..    fun
4cf40 63 74 69 6f 6e 20 5f 63 72 65 61 74 65 20 28 73  ction _create (s
4cf50 74 72 29 20 7b 0a 20 20 20 20 20 20 76 61 72 20  tr) {.      var 
4cf60 65 78 70 72 20 3d 20 5f 67 65 74 54 6d 70 6c 28  expr = _getTmpl(
4cf70 73 74 72 29 3b 0a 0a 20 20 20 20 20 20 69 66 20  str);..      if 
4cf80 28 65 78 70 72 2e 73 6c 69 63 65 28 30 2c 20 31  (expr.slice(0, 1
4cf90 31 29 20 21 3d 3d 20 27 74 72 79 7b 72 65 74 75  1) !== 'try{retu
4cfa0 72 6e 20 27 29 20 7b 20 65 78 70 72 20 3d 20 27  rn ') { expr = '
4cfb0 72 65 74 75 72 6e 20 27 20 2b 20 65 78 70 72 3b  return ' + expr;
4cfc0 20 7d 0a 0a 20 20 20 20 20 20 72 65 74 75 72 6e   }..      return
4cfd0 20 73 61 66 65 45 76 61 6c 2e 66 75 6e 63 28 27   safeEval.func('
4cfe0 45 27 2c 20 65 78 70 72 20 2b 20 27 3b 27 29 0a  E', expr + ';').
4cff0 20 20 20 20 7d 0a 0a 20 20 20 20 76 61 72 20 52      }..    var R
4d000 45 5f 44 51 55 4f 54 45 20 3d 20 2f 5c 75 32 30  E_DQUOTE = /\u20
4d010 35 37 2f 67 3b 0a 20 20 20 20 76 61 72 20 52 45  57/g;.    var RE
4d020 5f 51 42 4d 41 52 4b 20 3d 20 2f 5c 75 32 30 35  _QBMARK = /\u205
4d030 37 28 5c 64 2b 29 7e 2f 67 3b 0a 0a 20 20 20 20  7(\d+)~/g;..    
4d040 66 75 6e 63 74 69 6f 6e 20 5f 67 65 74 54 6d 70  function _getTmp
4d050 6c 20 28 73 74 72 29 20 7b 0a 20 20 20 20 20 20  l (str) {.      
4d060 76 61 72 20 70 61 72 74 73 20 3d 20 62 72 61 63  var parts = brac
4d070 6b 65 74 73 2e 73 70 6c 69 74 28 73 74 72 2e 72  kets.split(str.r
4d080 65 70 6c 61 63 65 28 52 45 5f 44 51 55 4f 54 45  eplace(RE_DQUOTE
4d090 2c 20 27 22 27 29 2c 20 31 29 3b 0a 20 20 20 20  , '"'), 1);.    
4d0a0 20 20 76 61 72 20 71 73 74 72 20 3d 20 70 61 72    var qstr = par
4d0b0 74 73 2e 71 62 6c 6f 63 6b 73 3b 0a 20 20 20 20  ts.qblocks;.    
4d0c0 20 20 76 61 72 20 65 78 70 72 3b 0a 0a 20 20 20    var expr;..   
4d0d0 20 20 20 69 66 20 28 70 61 72 74 73 2e 6c 65 6e     if (parts.len
4d0e0 67 74 68 20 3e 20 32 20 7c 7c 20 70 61 72 74 73  gth > 2 || parts
4d0f0 5b 30 5d 29 20 7b 0a 20 20 20 20 20 20 20 20 76  [0]) {.        v
4d100 61 72 20 69 2c 20 6a 2c 20 6c 69 73 74 20 3d 20  ar i, j, list = 
4d110 5b 5d 3b 0a 0a 20 20 20 20 20 20 20 20 66 6f 72  [];..        for
4d120 20 28 69 20 3d 20 6a 20 3d 20 30 3b 20 69 20 3c   (i = j = 0; i <
4d130 20 70 61 72 74 73 2e 6c 65 6e 67 74 68 3b 20 2b   parts.length; +
4d140 2b 69 29 20 7b 0a 0a 20 20 20 20 20 20 20 20 20  +i) {..         
4d150 20 65 78 70 72 20 3d 20 70 61 72 74 73 5b 69 5d   expr = parts[i]
4d160 3b 0a 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  ;..          if 
4d170 28 65 78 70 72 20 26 26 20 28 65 78 70 72 20 3d  (expr && (expr =
4d180 20 69 20 26 20 31 0a 0a 20 20 20 20 20 20 20 20   i & 1..        
4d190 20 20 20 20 20 20 3f 20 5f 70 61 72 73 65 45 78        ? _parseEx
4d1a0 70 72 28 65 78 70 72 2c 20 31 2c 20 71 73 74 72  pr(expr, 1, qstr
4d1b0 29 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
4d1c0 20 3a 20 27 22 27 20 2b 20 65 78 70 72 0a 20 20   : '"' + expr.  
4d1d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4d1e0 2e 72 65 70 6c 61 63 65 28 2f 5c 5c 2f 67 2c 20  .replace(/\\/g, 
4d1f0 27 5c 5c 5c 5c 27 29 0a 20 20 20 20 20 20 20 20  '\\\\').        
4d200 20 20 20 20 20 20 20 20 20 20 2e 72 65 70 6c 61            .repla
4d210 63 65 28 2f 5c 72 5c 6e 3f 7c 5c 6e 2f 67 2c 20  ce(/\r\n?|\n/g, 
4d220 27 5c 5c 6e 27 29 0a 20 20 20 20 20 20 20 20 20  '\\n').         
4d230 20 20 20 20 20 20 20 20 20 2e 72 65 70 6c 61 63           .replac
4d240 65 28 2f 22 2f 67 2c 20 27 5c 5c 22 27 29 20 2b  e(/"/g, '\\"') +
4d250 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4d260 20 27 22 27 0a 0a 20 20 20 20 20 20 20 20 20 20   '"'..          
4d270 20 20 29 29 20 7b 20 6c 69 73 74 5b 6a 2b 2b 5d    )) { list[j++]
4d280 20 3d 20 65 78 70 72 3b 20 7d 0a 0a 20 20 20 20   = expr; }..    
4d290 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 65      }..        e
4d2a0 78 70 72 20 3d 20 6a 20 3c 20 32 20 3f 20 6c 69  xpr = j < 2 ? li
4d2b0 73 74 5b 30 5d 0a 20 20 20 20 20 20 20 20 20 20  st[0].          
4d2c0 20 20 20 3a 20 27 5b 27 20 2b 20 6c 69 73 74 2e     : '[' + list.
4d2d0 6a 6f 69 6e 28 27 2c 27 29 20 2b 20 27 5d 2e 6a  join(',') + '].j
4d2e0 6f 69 6e 28 22 22 29 27 3b 0a 0a 20 20 20 20 20  oin("")';..     
4d2f0 20 7d 20 65 6c 73 65 20 7b 0a 0a 20 20 20 20 20   } else {..     
4d300 20 20 20 65 78 70 72 20 3d 20 5f 70 61 72 73 65     expr = _parse
4d310 45 78 70 72 28 70 61 72 74 73 5b 31 5d 2c 20 30  Expr(parts[1], 0
4d320 2c 20 71 73 74 72 29 3b 0a 20 20 20 20 20 20 7d  , qstr);.      }
4d330 0a 0a 20 20 20 20 20 20 69 66 20 28 71 73 74 72  ..      if (qstr
4d340 2e 6c 65 6e 67 74 68 29 20 7b 0a 20 20 20 20 20  .length) {.     
4d350 20 20 20 65 78 70 72 20 3d 20 65 78 70 72 2e 72     expr = expr.r
4d360 65 70 6c 61 63 65 28 52 45 5f 51 42 4d 41 52 4b  eplace(RE_QBMARK
4d370 2c 20 66 75 6e 63 74 69 6f 6e 20 28 5f 2c 20 70  , function (_, p
4d380 6f 73 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20  os) {.          
4d390 72 65 74 75 72 6e 20 71 73 74 72 5b 70 6f 73 5d  return qstr[pos]
4d3a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2e 72 65  .            .re
4d3b0 70 6c 61 63 65 28 2f 5c 72 2f 67 2c 20 27 5c 5c  place(/\r/g, '\\
4d3c0 72 27 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  r').            
4d3d0 2e 72 65 70 6c 61 63 65 28 2f 5c 6e 2f 67 2c 20  .replace(/\n/g, 
4d3e0 27 5c 5c 6e 27 29 0a 20 20 20 20 20 20 20 20 7d  '\\n').        }
4d3f0 29 3b 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 20  );.      }.     
4d400 20 72 65 74 75 72 6e 20 65 78 70 72 0a 20 20 20   return expr.   
4d410 20 7d 0a 0a 20 20 20 20 76 61 72 20 52 45 5f 43   }..    var RE_C
4d420 53 4e 41 4d 45 20 3d 20 2f 5e 28 3f 3a 28 2d 3f  SNAME = /^(?:(-?
4d430 5b 5f 41 2d 5a 61 2d 7a 5c 78 41 30 2d 5c 78 46  [_A-Za-z\xA0-\xF
4d440 46 5d 5b 2d 5c 77 5c 78 41 30 2d 5c 78 46 46 5d  F][-\w\xA0-\xFF]
4d450 2a 29 7c 5c 75 32 30 35 37 28 5c 64 2b 29 7e 29  *)|\u2057(\d+)~)
4d460 3a 2f 3b 0a 20 20 20 20 76 61 72 0a 20 20 20 20  :/;.    var.    
4d470 20 20 52 45 5f 42 52 45 4e 44 20 3d 20 7b 0a 20    RE_BREND = {. 
4d480 20 20 20 20 20 20 20 27 28 27 3a 20 2f 5b 28 29         '(': /[()
4d490 5d 2f 67 2c 0a 20 20 20 20 20 20 20 20 27 5b 27  ]/g,.        '['
4d4a0 3a 20 2f 5b 5b 5c 5d 5d 2f 67 2c 0a 20 20 20 20  : /[[\]]/g,.    
4d4b0 20 20 20 20 27 7b 27 3a 20 2f 5b 7b 7d 5d 2f 67      '{': /[{}]/g
4d4c0 0a 20 20 20 20 20 20 7d 3b 0a 0a 20 20 20 20 66  .      };..    f
4d4d0 75 6e 63 74 69 6f 6e 20 5f 70 61 72 73 65 45 78  unction _parseEx
4d4e0 70 72 20 28 65 78 70 72 2c 20 61 73 54 65 78 74  pr (expr, asText
4d4f0 2c 20 71 73 74 72 29 20 7b 0a 0a 20 20 20 20 20  , qstr) {..     
4d500 20 65 78 70 72 20 3d 20 65 78 70 72 0a 20 20 20   expr = expr.   
4d510 20 20 20 20 20 2e 72 65 70 6c 61 63 65 28 2f 5c       .replace(/\
4d520 73 2b 2f 67 2c 20 27 20 27 29 2e 74 72 69 6d 28  s+/g, ' ').trim(
4d530 29 0a 20 20 20 20 20 20 20 20 2e 72 65 70 6c 61  ).        .repla
4d540 63 65 28 2f 5c 20 3f 28 5b 5b 5c 28 7b 7d 2c 3f  ce(/\ ?([[\({},?
4d550 5c 2e 3a 5d 29 5c 20 3f 2f 67 2c 20 27 24 31 27  \.:])\ ?/g, '$1'
4d560 29 3b 0a 0a 20 20 20 20 20 20 69 66 20 28 65 78  );..      if (ex
4d570 70 72 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61  pr) {.        va
4d580 72 0a 20 20 20 20 20 20 20 20 20 20 6c 69 73 74  r.          list
4d590 20 3d 20 5b 5d 2c 0a 20 20 20 20 20 20 20 20 20   = [],.         
4d5a0 20 63 6e 74 20 3d 20 30 2c 0a 20 20 20 20 20 20   cnt = 0,.      
4d5b0 20 20 20 20 6d 61 74 63 68 3b 0a 0a 20 20 20 20      match;..    
4d5c0 20 20 20 20 77 68 69 6c 65 20 28 65 78 70 72 20      while (expr 
4d5d0 26 26 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  &&.             
4d5e0 20 28 6d 61 74 63 68 20 3d 20 65 78 70 72 2e 6d   (match = expr.m
4d5f0 61 74 63 68 28 52 45 5f 43 53 4e 41 4d 45 29 29  atch(RE_CSNAME))
4d600 20 26 26 0a 20 20 20 20 20 20 20 20 20 20 20 20   &&.            
4d610 20 20 21 6d 61 74 63 68 2e 69 6e 64 65 78 0a 20    !match.index. 
4d620 20 20 20 20 20 20 20 20 20 29 20 7b 0a 20 20 20           ) {.   
4d630 20 20 20 20 20 20 20 76 61 72 0a 20 20 20 20 20         var.     
4d640 20 20 20 20 20 20 20 6b 65 79 2c 0a 20 20 20 20         key,.    
4d650 20 20 20 20 20 20 20 20 6a 73 62 2c 0a 20 20 20          jsb,.   
4d660 20 20 20 20 20 20 20 20 20 72 65 20 3d 20 2f 2c           re = /,
4d670 7c 28 5b 5b 7b 28 5d 29 7c 24 2f 67 3b 0a 0a 20  |([[{(])|$/g;.. 
4d680 20 20 20 20 20 20 20 20 20 65 78 70 72 20 3d 20           expr = 
4d690 52 65 67 45 78 70 2e 72 69 67 68 74 43 6f 6e 74  RegExp.rightCont
4d6a0 65 78 74 3b 0a 20 20 20 20 20 20 20 20 20 20 6b  ext;.          k
4d6b0 65 79 20 20 3d 20 6d 61 74 63 68 5b 32 5d 20 3f  ey  = match[2] ?
4d6c0 20 71 73 74 72 5b 6d 61 74 63 68 5b 32 5d 5d 2e   qstr[match[2]].
4d6d0 73 6c 69 63 65 28 31 2c 20 2d 31 29 2e 74 72 69  slice(1, -1).tri
4d6e0 6d 28 29 2e 72 65 70 6c 61 63 65 28 2f 5c 73 2b  m().replace(/\s+
4d6f0 2f 67 2c 20 27 20 27 29 20 3a 20 6d 61 74 63 68  /g, ' ') : match
4d700 5b 31 5d 3b 0a 0a 20 20 20 20 20 20 20 20 20 20  [1];..          
4d710 77 68 69 6c 65 20 28 6a 73 62 20 3d 20 28 6d 61  while (jsb = (ma
4d720 74 63 68 20 3d 20 72 65 2e 65 78 65 63 28 65 78  tch = re.exec(ex
4d730 70 72 29 29 5b 31 5d 29 20 7b 20 73 6b 69 70 42  pr))[1]) { skipB
4d740 72 61 63 65 73 28 6a 73 62 2c 20 72 65 29 3b 20  races(jsb, re); 
4d750 7d 0a 0a 20 20 20 20 20 20 20 20 20 20 6a 73 62  }..          jsb
4d760 20 20 3d 20 65 78 70 72 2e 73 6c 69 63 65 28 30    = expr.slice(0
4d770 2c 20 6d 61 74 63 68 2e 69 6e 64 65 78 29 3b 0a  , match.index);.
4d780 20 20 20 20 20 20 20 20 20 20 65 78 70 72 20 3d            expr =
4d790 20 52 65 67 45 78 70 2e 72 69 67 68 74 43 6f 6e   RegExp.rightCon
4d7a0 74 65 78 74 3b 0a 0a 20 20 20 20 20 20 20 20 20  text;..         
4d7b0 20 6c 69 73 74 5b 63 6e 74 2b 2b 5d 20 3d 20 5f   list[cnt++] = _
4d7c0 77 72 61 70 45 78 70 72 28 6a 73 62 2c 20 31 2c  wrapExpr(jsb, 1,
4d7d0 20 6b 65 79 29 3b 0a 20 20 20 20 20 20 20 20 7d   key);.        }
4d7e0 0a 0a 20 20 20 20 20 20 20 20 65 78 70 72 20 3d  ..        expr =
4d7f0 20 21 63 6e 74 20 3f 20 5f 77 72 61 70 45 78 70   !cnt ? _wrapExp
4d800 72 28 65 78 70 72 2c 20 61 73 54 65 78 74 29 0a  r(expr, asText).
4d810 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 63               : c
4d820 6e 74 20 3e 20 31 20 3f 20 27 5b 27 20 2b 20 6c  nt > 1 ? '[' + l
4d830 69 73 74 2e 6a 6f 69 6e 28 27 2c 27 29 20 2b 20  ist.join(',') + 
4d840 27 5d 2e 6a 6f 69 6e 28 22 20 22 29 2e 74 72 69  '].join(" ").tri
4d850 6d 28 29 27 20 3a 20 6c 69 73 74 5b 30 5d 3b 0a  m()' : list[0];.
4d860 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 72 65        }.      re
4d870 74 75 72 6e 20 65 78 70 72 0a 0a 20 20 20 20 20  turn expr..     
4d880 20 66 75 6e 63 74 69 6f 6e 20 73 6b 69 70 42 72   function skipBr
4d890 61 63 65 73 20 28 63 68 2c 20 72 65 29 20 7b 0a  aces (ch, re) {.
4d8a0 20 20 20 20 20 20 20 20 76 61 72 0a 20 20 20 20          var.    
4d8b0 20 20 20 20 20 20 6d 6d 2c 0a 20 20 20 20 20 20        mm,.      
4d8c0 20 20 20 20 6c 76 20 3d 20 31 2c 0a 20 20 20 20      lv = 1,.    
4d8d0 20 20 20 20 20 20 69 72 20 3d 20 52 45 5f 42 52        ir = RE_BR
4d8e0 45 4e 44 5b 63 68 5d 3b 0a 0a 20 20 20 20 20 20  END[ch];..      
4d8f0 20 20 69 72 2e 6c 61 73 74 49 6e 64 65 78 20 3d    ir.lastIndex =
4d900 20 72 65 2e 6c 61 73 74 49 6e 64 65 78 3b 0a 20   re.lastIndex;. 
4d910 20 20 20 20 20 20 20 77 68 69 6c 65 20 28 6d 6d         while (mm
4d920 20 3d 20 69 72 2e 65 78 65 63 28 65 78 70 72 29   = ir.exec(expr)
4d930 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 69 66  ) {.          if
4d940 20 28 6d 6d 5b 30 5d 20 3d 3d 3d 20 63 68 29 20   (mm[0] === ch) 
4d950 7b 20 2b 2b 6c 76 3b 20 7d 0a 20 20 20 20 20 20  { ++lv; }.      
4d960 20 20 20 20 65 6c 73 65 20 69 66 20 28 21 2d 2d      else if (!--
4d970 6c 76 29 20 7b 20 62 72 65 61 6b 20 7d 0a 20 20  lv) { break }.  
4d980 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20        }.        
4d990 72 65 2e 6c 61 73 74 49 6e 64 65 78 20 3d 20 6c  re.lastIndex = l
4d9a0 76 20 3f 20 65 78 70 72 2e 6c 65 6e 67 74 68 20  v ? expr.length 
4d9b0 3a 20 69 72 2e 6c 61 73 74 49 6e 64 65 78 3b 0a  : ir.lastIndex;.
4d9c0 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 0a 20        }.    }.. 
4d9d0 20 20 20 2f 2f 20 69 73 74 61 6e 62 75 6c 20 69     // istanbul i
4d9e0 67 6e 6f 72 65 20 6e 65 78 74 3a 20 6e 6f 74 20  gnore next: not 
4d9f0 62 6f 74 68 0a 20 20 20 20 76 61 72 20 2f 2f 20  both.    var // 
4da00 65 73 6c 69 6e 74 2d 64 69 73 61 62 6c 65 2d 6e  eslint-disable-n
4da10 65 78 74 2d 6c 69 6e 65 20 6d 61 78 2d 6c 65 6e  ext-line max-len
4da20 0a 20 20 20 20 20 20 4a 53 5f 43 4f 4e 54 45 58  .      JS_CONTEX
4da30 54 20 3d 20 27 22 69 6e 20 74 68 69 73 3f 74 68  T = '"in this?th
4da40 69 73 3a 27 20 2b 20 28 74 79 70 65 6f 66 20 77  is:' + (typeof w
4da50 69 6e 64 6f 77 20 21 3d 3d 20 27 6f 62 6a 65 63  indow !== 'objec
4da60 74 27 20 3f 20 27 67 6c 6f 62 61 6c 27 20 3a 20  t' ? 'global' : 
4da70 27 77 69 6e 64 6f 77 27 29 20 2b 20 27 29 2e 27  'window') + ').'
4da80 2c 0a 20 20 20 20 20 20 4a 53 5f 56 41 52 4e 41  ,.      JS_VARNA
4da90 4d 45 20 3d 20 2f 5b 2c 7b 5d 5b 5c 24 5c 77 5d  ME = /[,{][\$\w]
4daa0 2b 28 3f 3d 3a 29 7c 28 5e 20 2a 7c 5b 5e 24 5c  +(?=:)|(^ *|[^$\
4dab0 77 5c 2e 7b 5d 29 28 3f 21 28 3f 3a 74 79 70 65  w\.{])(?!(?:type
4dac0 6f 66 7c 74 72 75 65 7c 66 61 6c 73 65 7c 6e 75  of|true|false|nu
4dad0 6c 6c 7c 75 6e 64 65 66 69 6e 65 64 7c 69 6e 7c  ll|undefined|in|
4dae0 69 6e 73 74 61 6e 63 65 6f 66 7c 69 73 28 3f 3a  instanceof|is(?:
4daf0 46 69 6e 69 74 65 7c 4e 61 4e 29 7c 76 6f 69 64  Finite|NaN)|void
4db00 7c 4e 61 4e 7c 6e 65 77 7c 44 61 74 65 7c 52 65  |NaN|new|Date|Re
4db10 67 45 78 70 7c 4d 61 74 68 29 28 3f 21 5b 24 5c  gExp|Math)(?![$\
4db20 77 5d 29 29 28 5b 24 5f 41 2d 5a 61 2d 7a 5d 5b  w]))([$_A-Za-z][
4db30 24 5c 77 5d 2a 29 2f 67 2c 0a 20 20 20 20 20 20  $\w]*)/g,.      
4db40 4a 53 5f 4e 4f 50 52 4f 50 53 20 3d 20 2f 5e 28  JS_NOPROPS = /^(
4db50 3f 3d 28 5c 2e 5b 24 5c 77 5d 2b 29 29 5c 31 28  ?=(\.[$\w]+))\1(
4db60 3f 3a 5b 5e 2e 5b 28 5d 7c 24 29 2f 3b 0a 0a 20  ?:[^.[(]|$)/;.. 
4db70 20 20 20 66 75 6e 63 74 69 6f 6e 20 5f 77 72 61     function _wra
4db80 70 45 78 70 72 20 28 65 78 70 72 2c 20 61 73 54  pExpr (expr, asT
4db90 65 78 74 2c 20 6b 65 79 29 20 7b 0a 20 20 20 20  ext, key) {.    
4dba0 20 20 76 61 72 20 74 62 3b 0a 0a 20 20 20 20 20    var tb;..     
4dbb0 20 65 78 70 72 20 3d 20 65 78 70 72 2e 72 65 70   expr = expr.rep
4dbc0 6c 61 63 65 28 4a 53 5f 56 41 52 4e 41 4d 45 2c  lace(JS_VARNAME,
4dbd0 20 66 75 6e 63 74 69 6f 6e 20 28 6d 61 74 63 68   function (match
4dbe0 2c 20 70 2c 20 6d 76 61 72 2c 20 70 6f 73 2c 20  , p, mvar, pos, 
4dbf0 73 29 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20  s) {.        if 
4dc00 28 6d 76 61 72 29 20 7b 0a 20 20 20 20 20 20 20  (mvar) {.       
4dc10 20 20 20 70 6f 73 20 3d 20 74 62 20 3f 20 30 20     pos = tb ? 0 
4dc20 3a 20 70 6f 73 20 2b 20 6d 61 74 63 68 2e 6c 65  : pos + match.le
4dc30 6e 67 74 68 3b 0a 0a 20 20 20 20 20 20 20 20 20  ngth;..         
4dc40 20 69 66 20 28 6d 76 61 72 20 21 3d 3d 20 27 74   if (mvar !== 't
4dc50 68 69 73 27 20 26 26 20 6d 76 61 72 20 21 3d 3d  his' && mvar !==
4dc60 20 27 67 6c 6f 62 61 6c 27 20 26 26 20 6d 76 61   'global' && mva
4dc70 72 20 21 3d 3d 20 27 77 69 6e 64 6f 77 27 29 20  r !== 'window') 
4dc80 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d 61  {.            ma
4dc90 74 63 68 20 3d 20 70 20 2b 20 27 28 22 27 20 2b  tch = p + '("' +
4dca0 20 6d 76 61 72 20 2b 20 4a 53 5f 43 4f 4e 54 45   mvar + JS_CONTE
4dcb0 58 54 20 2b 20 6d 76 61 72 3b 0a 20 20 20 20 20  XT + mvar;.     
4dcc0 20 20 20 20 20 20 20 69 66 20 28 70 6f 73 29 20         if (pos) 
4dcd0 7b 20 74 62 20 3d 20 28 73 20 3d 20 73 5b 70 6f  { tb = (s = s[po
4dce0 73 5d 29 20 3d 3d 3d 20 27 2e 27 20 7c 7c 20 73  s]) === '.' || s
4dcf0 20 3d 3d 3d 20 27 28 27 20 7c 7c 20 73 20 3d 3d   === '(' || s ==
4dd00 3d 20 27 5b 27 3b 20 7d 0a 20 20 20 20 20 20 20  = '['; }.       
4dd10 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 70 6f     } else if (po
4dd20 73 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  s) {.           
4dd30 20 74 62 20 3d 20 21 4a 53 5f 4e 4f 50 52 4f 50   tb = !JS_NOPROP
4dd40 53 2e 74 65 73 74 28 73 2e 73 6c 69 63 65 28 70  S.test(s.slice(p
4dd50 6f 73 29 29 3b 0a 20 20 20 20 20 20 20 20 20 20  os));.          
4dd60 7d 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20  }.        }.    
4dd70 20 20 20 20 72 65 74 75 72 6e 20 6d 61 74 63 68      return match
4dd80 0a 20 20 20 20 20 20 7d 29 3b 0a 0a 20 20 20 20  .      });..    
4dd90 20 20 69 66 20 28 74 62 29 20 7b 0a 20 20 20 20    if (tb) {.    
4dda0 20 20 20 20 65 78 70 72 20 3d 20 27 74 72 79 7b      expr = 'try{
4ddb0 72 65 74 75 72 6e 20 27 20 2b 20 65 78 70 72 20  return ' + expr 
4ddc0 2b 20 27 7d 63 61 74 63 68 28 65 29 7b 45 28 65  + '}catch(e){E(e
4ddd0 2c 74 68 69 73 29 7d 27 3b 0a 20 20 20 20 20 20  ,this)}';.      
4dde0 7d 0a 0a 20 20 20 20 20 20 69 66 20 28 6b 65 79  }..      if (key
4ddf0 29 20 7b 0a 0a 20 20 20 20 20 20 20 20 65 78 70  ) {..        exp
4de00 72 20 3d 20 28 74 62 0a 20 20 20 20 20 20 20 20  r = (tb.        
4de10 20 20 20 20 3f 20 27 66 75 6e 63 74 69 6f 6e 28      ? 'function(
4de20 29 7b 27 20 2b 20 65 78 70 72 20 2b 20 27 7d 2e  ){' + expr + '}.
4de30 63 61 6c 6c 28 74 68 69 73 29 27 20 3a 20 27 28  call(this)' : '(
4de40 27 20 2b 20 65 78 70 72 20 2b 20 27 29 27 0a 20  ' + expr + ')'. 
4de50 20 20 20 20 20 20 20 20 20 29 20 2b 20 27 3f 22           ) + '?"
4de60 27 20 2b 20 6b 65 79 20 2b 20 27 22 3a 22 22 27  ' + key + '":""'
4de70 3b 0a 0a 20 20 20 20 20 20 7d 20 65 6c 73 65 20  ;..      } else 
4de80 69 66 20 28 61 73 54 65 78 74 29 20 7b 0a 0a 20  if (asText) {.. 
4de90 20 20 20 20 20 20 20 65 78 70 72 20 3d 20 27 66         expr = 'f
4dea0 75 6e 63 74 69 6f 6e 28 76 29 7b 27 20 2b 20 28  unction(v){' + (
4deb0 74 62 0a 20 20 20 20 20 20 20 20 20 20 20 20 3f  tb.            ?
4dec0 20 65 78 70 72 2e 72 65 70 6c 61 63 65 28 27 72   expr.replace('r
4ded0 65 74 75 72 6e 20 27 2c 20 27 76 3d 27 29 20 3a  eturn ', 'v=') :
4dee0 20 27 76 3d 28 27 20 2b 20 65 78 70 72 20 2b 20   'v=(' + expr + 
4def0 27 29 27 0a 20 20 20 20 20 20 20 20 20 20 29 20  ')'.          ) 
4df00 2b 20 27 3b 72 65 74 75 72 6e 20 76 7c 7c 76 3d  + ';return v||v=
4df10 3d 3d 30 3f 76 3a 22 22 7d 2e 63 61 6c 6c 28 74  ==0?v:""}.call(t
4df20 68 69 73 29 27 3b 0a 20 20 20 20 20 20 7d 0a 0a  his)';.      }..
4df30 20 20 20 20 20 20 72 65 74 75 72 6e 20 65 78 70        return exp
4df40 72 0a 20 20 20 20 7d 0a 0a 20 20 20 20 5f 74 6d  r.    }..    _tm
4df50 70 6c 2e 76 65 72 73 69 6f 6e 20 3d 20 62 72 61  pl.version = bra
4df60 63 6b 65 74 73 2e 76 65 72 73 69 6f 6e 20 3d 20  ckets.version = 
4df70 27 76 33 2e 30 2e 38 27 3b 0a 0a 20 20 20 20 72  'v3.0.8';..    r
4df80 65 74 75 72 6e 20 5f 74 6d 70 6c 0a 0a 20 20 7d  eturn _tmpl..  }
4df90 29 28 29 3b 0a 0a 20 20 65 78 70 6f 72 74 73 2e  )();..  exports.
4dfa0 62 72 61 63 6b 65 74 73 20 3d 20 62 72 61 63 6b  brackets = brack
4dfb0 65 74 73 3b 0a 20 20 65 78 70 6f 72 74 73 2e 74  ets;.  exports.t
4dfc0 6d 70 6c 20 3d 20 74 6d 70 6c 3b 0a 0a 20 20 4f  mpl = tmpl;..  O
4dfd0 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 6f 70  bject.defineProp
4dfe0 65 72 74 79 28 65 78 70 6f 72 74 73 2c 20 27 5f  erty(exports, '_
4dff0 5f 65 73 4d 6f 64 75 6c 65 27 2c 20 7b 20 76 61  _esModule', { va
4e000 6c 75 65 3a 20 74 72 75 65 20 7d 29 3b 0a 0a 20  lue: true });.. 
4e010 20 7d 29 29 29 3b 0a 20 20 7d 29 3b 0a 0a 20 20   })));.  });..  
4e020 75 6e 77 72 61 70 45 78 70 6f 72 74 73 28 63 73  unwrapExports(cs
4e030 70 5f 74 6d 70 6c 29 3b 0a 20 20 76 61 72 20 63  p_tmpl);.  var c
4e040 73 70 5f 74 6d 70 6c 5f 31 20 3d 20 63 73 70 5f  sp_tmpl_1 = csp_
4e050 74 6d 70 6c 2e 74 6d 70 6c 3b 0a 20 20 76 61 72  tmpl.tmpl;.  var
4e060 20 63 73 70 5f 74 6d 70 6c 5f 32 20 3d 20 63 73   csp_tmpl_2 = cs
4e070 70 5f 74 6d 70 6c 2e 62 72 61 63 6b 65 74 73 3b  p_tmpl.brackets;
4e080 0a 0a 20 20 76 61 72 20 6f 62 73 65 72 76 61 62  ..  var observab
4e090 6c 65 20 3d 20 66 75 6e 63 74 69 6f 6e 28 65 6c  le = function(el
4e0a0 29 20 7b 0a 0a 20 20 20 20 2f 2a 2a 0a 20 20 20  ) {..    /**.   
4e0b0 20 20 2a 20 45 78 74 65 6e 64 20 74 68 65 20 6f    * Extend the o
4e0c0 72 69 67 69 6e 61 6c 20 6f 62 6a 65 63 74 20 6f  riginal object o
4e0d0 72 20 63 72 65 61 74 65 20 61 20 6e 65 77 20 65  r create a new e
4e0e0 6d 70 74 79 20 6f 6e 65 0a 20 20 20 20 20 2a 20  mpty one.     * 
4e0f0 40 74 79 70 65 20 7b 20 4f 62 6a 65 63 74 20 7d  @type { Object }
4e100 0a 20 20 20 20 20 2a 2f 0a 0a 20 20 20 20 65 6c  .     */..    el
4e110 20 3d 20 65 6c 20 7c 7c 20 7b 7d 3b 0a 0a 20 20   = el || {};..  
4e120 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 50 72 69    /**.     * Pri
4e130 76 61 74 65 20 76 61 72 69 61 62 6c 65 73 0a 20  vate variables. 
4e140 20 20 20 20 2a 2f 0a 20 20 20 20 76 61 72 20 63      */.    var c
4e150 61 6c 6c 62 61 63 6b 73 20 3d 20 7b 7d 2c 0a 20  allbacks = {},. 
4e160 20 20 20 20 20 73 6c 69 63 65 20 3d 20 41 72 72       slice = Arr
4e170 61 79 2e 70 72 6f 74 6f 74 79 70 65 2e 73 6c 69  ay.prototype.sli
4e180 63 65 3b 0a 0a 20 20 20 20 2f 2a 2a 0a 20 20 20  ce;..    /**.   
4e190 20 20 2a 20 50 75 62 6c 69 63 20 41 70 69 0a 20    * Public Api. 
4e1a0 20 20 20 20 2a 2f 0a 0a 20 20 20 20 2f 2f 20 65      */..    // e
4e1b0 78 74 65 6e 64 20 74 68 65 20 65 6c 20 6f 62 6a  xtend the el obj
4e1c0 65 63 74 20 61 64 64 69 6e 67 20 74 68 65 20 6f  ect adding the o
4e1d0 62 73 65 72 76 61 62 6c 65 20 6d 65 74 68 6f 64  bservable method
4e1e0 73 0a 20 20 20 20 4f 62 6a 65 63 74 2e 64 65 66  s.    Object.def
4e1f0 69 6e 65 50 72 6f 70 65 72 74 69 65 73 28 65 6c  ineProperties(el
4e200 2c 20 7b 0a 20 20 20 20 20 20 2f 2a 2a 0a 20 20  , {.      /**.  
4e210 20 20 20 20 20 2a 20 4c 69 73 74 65 6e 20 74 6f       * Listen to
4e220 20 74 68 65 20 67 69 76 65 6e 20 60 65 76 65 6e   the given `even
4e230 74 60 20 61 6e 64 73 0a 20 20 20 20 20 20 20 2a  t` ands.       *
4e240 20 65 78 65 63 75 74 65 20 74 68 65 20 60 63 61   execute the `ca
4e250 6c 6c 62 61 63 6b 60 20 65 61 63 68 20 74 69 6d  llback` each tim
4e260 65 20 61 6e 20 65 76 65 6e 74 20 69 73 20 74 72  e an event is tr
4e270 69 67 67 65 72 65 64 2e 0a 20 20 20 20 20 20 20  iggered..       
4e280 2a 20 40 70 61 72 61 6d 20 20 7b 20 53 74 72 69  * @param  { Stri
4e290 6e 67 20 7d 20 65 76 65 6e 74 20 2d 20 65 76 65  ng } event - eve
4e2a0 6e 74 20 69 64 0a 20 20 20 20 20 20 20 2a 20 40  nt id.       * @
4e2b0 70 61 72 61 6d 20 20 7b 20 46 75 6e 63 74 69 6f  param  { Functio
4e2c0 6e 20 7d 20 66 6e 20 2d 20 63 61 6c 6c 62 61 63  n } fn - callbac
4e2d0 6b 20 66 75 6e 63 74 69 6f 6e 0a 20 20 20 20 20  k function.     
4e2e0 20 20 2a 20 40 72 65 74 75 72 6e 73 20 7b 20 4f    * @returns { O
4e2f0 62 6a 65 63 74 20 7d 20 65 6c 0a 20 20 20 20 20  bject } el.     
4e300 20 20 2a 2f 0a 20 20 20 20 20 20 6f 6e 3a 20 7b    */.      on: {
4e310 0a 20 20 20 20 20 20 20 20 76 61 6c 75 65 3a 20  .        value: 
4e320 66 75 6e 63 74 69 6f 6e 28 65 76 65 6e 74 2c 20  function(event, 
4e330 66 6e 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20  fn) {.          
4e340 69 66 20 28 74 79 70 65 6f 66 20 66 6e 20 3d 3d  if (typeof fn ==
4e350 20 27 66 75 6e 63 74 69 6f 6e 27 29 0a 20 20 20   'function').   
4e360 20 20 20 20 20 20 20 20 20 7b 20 28 63 61 6c 6c           { (call
4e370 62 61 63 6b 73 5b 65 76 65 6e 74 5d 20 3d 20 63  backs[event] = c
4e380 61 6c 6c 62 61 63 6b 73 5b 65 76 65 6e 74 5d 20  allbacks[event] 
4e390 7c 7c 20 5b 5d 29 2e 70 75 73 68 28 66 6e 29 3b  || []).push(fn);
4e3a0 20 7d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74   }.          ret
4e3b0 75 72 6e 20 65 6c 0a 20 20 20 20 20 20 20 20 7d  urn el.        }
4e3c0 2c 0a 20 20 20 20 20 20 20 20 65 6e 75 6d 65 72  ,.        enumer
4e3d0 61 62 6c 65 3a 20 66 61 6c 73 65 2c 0a 20 20 20  able: false,.   
4e3e0 20 20 20 20 20 77 72 69 74 61 62 6c 65 3a 20 66       writable: f
4e3f0 61 6c 73 65 2c 0a 20 20 20 20 20 20 20 20 63 6f  alse,.        co
4e400 6e 66 69 67 75 72 61 62 6c 65 3a 20 66 61 6c 73  nfigurable: fals
4e410 65 0a 20 20 20 20 20 20 7d 2c 0a 0a 20 20 20 20  e.      },..    
4e420 20 20 2f 2a 2a 0a 20 20 20 20 20 20 20 2a 20 52    /**.       * R
4e430 65 6d 6f 76 65 73 20 74 68 65 20 67 69 76 65 6e  emoves the given
4e440 20 60 65 76 65 6e 74 60 20 6c 69 73 74 65 6e 65   `event` listene
4e450 72 73 0a 20 20 20 20 20 20 20 2a 20 40 70 61 72  rs.       * @par
4e460 61 6d 20 20 20 7b 20 53 74 72 69 6e 67 20 7d 20  am   { String } 
4e470 65 76 65 6e 74 20 2d 20 65 76 65 6e 74 20 69 64  event - event id
4e480 0a 20 20 20 20 20 20 20 2a 20 40 70 61 72 61 6d  .       * @param
4e490 20 20 20 7b 20 46 75 6e 63 74 69 6f 6e 20 7d 20     { Function } 
4e4a0 66 6e 20 2d 20 63 61 6c 6c 62 61 63 6b 20 66 75  fn - callback fu
4e4b0 6e 63 74 69 6f 6e 0a 20 20 20 20 20 20 20 2a 20  nction.       * 
4e4c0 40 72 65 74 75 72 6e 73 20 7b 20 4f 62 6a 65 63  @returns { Objec
4e4d0 74 20 7d 20 65 6c 0a 20 20 20 20 20 20 20 2a 2f  t } el.       */
4e4e0 0a 20 20 20 20 20 20 6f 66 66 3a 20 7b 0a 20 20  .      off: {.  
4e4f0 20 20 20 20 20 20 76 61 6c 75 65 3a 20 66 75 6e        value: fun
4e500 63 74 69 6f 6e 28 65 76 65 6e 74 2c 20 66 6e 29  ction(event, fn)
4e510 20 7b 0a 20 20 20 20 20 20 20 20 20 20 69 66 20   {.          if 
4e520 28 65 76 65 6e 74 20 3d 3d 20 27 2a 27 20 26 26  (event == '*' &&
4e530 20 21 66 6e 29 20 7b 20 63 61 6c 6c 62 61 63 6b   !fn) { callback
4e540 73 20 3d 20 7b 7d 3b 20 7d 0a 20 20 20 20 20 20  s = {}; }.      
4e550 20 20 20 20 65 6c 73 65 20 7b 0a 20 20 20 20 20      else {.     
4e560 20 20 20 20 20 20 20 69 66 20 28 66 6e 29 20 7b         if (fn) {
4e570 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76  .              v
4e580 61 72 20 61 72 72 20 3d 20 63 61 6c 6c 62 61 63  ar arr = callbac
4e590 6b 73 5b 65 76 65 6e 74 5d 3b 0a 20 20 20 20 20  ks[event];.     
4e5a0 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 76 61           for (va
4e5b0 72 20 69 20 3d 20 30 2c 20 63 62 3b 20 63 62 20  r i = 0, cb; cb 
4e5c0 3d 20 61 72 72 20 26 26 20 61 72 72 5b 69 5d 3b  = arr && arr[i];
4e5d0 20 2b 2b 69 29 20 7b 0a 20 20 20 20 20 20 20 20   ++i) {.        
4e5e0 20 20 20 20 20 20 20 20 69 66 20 28 63 62 20 3d          if (cb =
4e5f0 3d 20 66 6e 29 20 7b 20 61 72 72 2e 73 70 6c 69  = fn) { arr.spli
4e600 63 65 28 69 2d 2d 2c 20 31 29 3b 20 7d 0a 20 20  ce(i--, 1); }.  
4e610 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20              }.  
4e620 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65            } else
4e630 20 7b 20 64 65 6c 65 74 65 20 63 61 6c 6c 62 61   { delete callba
4e640 63 6b 73 5b 65 76 65 6e 74 5d 3b 20 7d 0a 20 20  cks[event]; }.  
4e650 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20          }.      
4e660 20 20 20 20 72 65 74 75 72 6e 20 65 6c 0a 20 20      return el.  
4e670 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 20        },.       
4e680 20 65 6e 75 6d 65 72 61 62 6c 65 3a 20 66 61 6c   enumerable: fal
4e690 73 65 2c 0a 20 20 20 20 20 20 20 20 77 72 69 74  se,.        writ
4e6a0 61 62 6c 65 3a 20 66 61 6c 73 65 2c 0a 20 20 20  able: false,.   
4e6b0 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 62 6c       configurabl
4e6c0 65 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d  e: false.      }
4e6d0 2c 0a 0a 20 20 20 20 20 20 2f 2a 2a 0a 20 20 20  ,..      /**.   
4e6e0 20 20 20 20 2a 20 4c 69 73 74 65 6e 20 74 6f 20      * Listen to 
4e6f0 74 68 65 20 67 69 76 65 6e 20 60 65 76 65 6e 74  the given `event
4e700 60 20 61 6e 64 0a 20 20 20 20 20 20 20 2a 20 65  ` and.       * e
4e710 78 65 63 75 74 65 20 74 68 65 20 60 63 61 6c 6c  xecute the `call
4e720 62 61 63 6b 60 20 61 74 20 6d 6f 73 74 20 6f 6e  back` at most on
4e730 63 65 0a 20 20 20 20 20 20 20 2a 20 40 70 61 72  ce.       * @par
4e740 61 6d 20 20 20 7b 20 53 74 72 69 6e 67 20 7d 20  am   { String } 
4e750 65 76 65 6e 74 20 2d 20 65 76 65 6e 74 20 69 64  event - event id
4e760 0a 20 20 20 20 20 20 20 2a 20 40 70 61 72 61 6d  .       * @param
4e770 20 20 20 7b 20 46 75 6e 63 74 69 6f 6e 20 7d 20     { Function } 
4e780 66 6e 20 2d 20 63 61 6c 6c 62 61 63 6b 20 66 75  fn - callback fu
4e790 6e 63 74 69 6f 6e 0a 20 20 20 20 20 20 20 2a 20  nction.       * 
4e7a0 40 72 65 74 75 72 6e 73 20 7b 20 4f 62 6a 65 63  @returns { Objec
4e7b0 74 20 7d 20 65 6c 0a 20 20 20 20 20 20 20 2a 2f  t } el.       */
4e7c0 0a 20 20 20 20 20 20 6f 6e 65 3a 20 7b 0a 20 20  .      one: {.  
4e7d0 20 20 20 20 20 20 76 61 6c 75 65 3a 20 66 75 6e        value: fun
4e7e0 63 74 69 6f 6e 28 65 76 65 6e 74 2c 20 66 6e 29  ction(event, fn)
4e7f0 20 7b 0a 20 20 20 20 20 20 20 20 20 20 66 75 6e   {.          fun
4e800 63 74 69 6f 6e 20 6f 6e 28 29 20 7b 0a 20 20 20  ction on() {.   
4e810 20 20 20 20 20 20 20 20 20 65 6c 2e 6f 66 66 28           el.off(
4e820 65 76 65 6e 74 2c 20 6f 6e 29 3b 0a 20 20 20 20  event, on);.    
4e830 20 20 20 20 20 20 20 20 66 6e 2e 61 70 70 6c 79          fn.apply
4e840 28 65 6c 2c 20 61 72 67 75 6d 65 6e 74 73 29 3b  (el, arguments);
4e850 0a 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20  .          }.   
4e860 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 65 6c         return el
4e870 2e 6f 6e 28 65 76 65 6e 74 2c 20 6f 6e 29 0a 20  .on(event, on). 
4e880 20 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20         },.      
4e890 20 20 65 6e 75 6d 65 72 61 62 6c 65 3a 20 66 61    enumerable: fa
4e8a0 6c 73 65 2c 0a 20 20 20 20 20 20 20 20 77 72 69  lse,.        wri
4e8b0 74 61 62 6c 65 3a 20 66 61 6c 73 65 2c 0a 20 20  table: false,.  
4e8c0 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 62        configurab
4e8d0 6c 65 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20  le: false.      
4e8e0 7d 2c 0a 0a 20 20 20 20 20 20 2f 2a 2a 0a 20 20  },..      /**.  
4e8f0 20 20 20 20 20 2a 20 45 78 65 63 75 74 65 20 61       * Execute a
4e900 6c 6c 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63  ll callback func
4e910 74 69 6f 6e 73 20 74 68 61 74 20 6c 69 73 74 65  tions that liste
4e920 6e 20 74 6f 0a 20 20 20 20 20 20 20 2a 20 74 68  n to.       * th
4e930 65 20 67 69 76 65 6e 20 60 65 76 65 6e 74 60 0a  e given `event`.
4e940 20 20 20 20 20 20 20 2a 20 40 70 61 72 61 6d 20         * @param 
4e950 20 20 7b 20 53 74 72 69 6e 67 20 7d 20 65 76 65    { String } eve
4e960 6e 74 20 2d 20 65 76 65 6e 74 20 69 64 0a 20 20  nt - event id.  
4e970 20 20 20 20 20 2a 20 40 72 65 74 75 72 6e 73 20       * @returns 
4e980 7b 20 4f 62 6a 65 63 74 20 7d 20 65 6c 0a 20 20  { Object } el.  
4e990 20 20 20 20 20 2a 2f 0a 20 20 20 20 20 20 74 72       */.      tr
4e9a0 69 67 67 65 72 3a 20 7b 0a 20 20 20 20 20 20 20  igger: {.       
4e9b0 20 76 61 6c 75 65 3a 20 66 75 6e 63 74 69 6f 6e   value: function
4e9c0 28 65 76 65 6e 74 29 20 7b 0a 20 20 20 20 20 20  (event) {.      
4e9d0 20 20 20 20 76 61 72 20 61 72 67 75 6d 65 6e 74      var argument
4e9e0 73 24 31 20 3d 20 61 72 67 75 6d 65 6e 74 73 3b  s$1 = arguments;
4e9f0 0a 0a 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  ...          // 
4ea00 67 65 74 74 69 6e 67 20 74 68 65 20 61 72 67 75  getting the argu
4ea10 6d 65 6e 74 73 0a 20 20 20 20 20 20 20 20 20 20  ments.          
4ea20 76 61 72 20 61 72 67 6c 65 6e 20 3d 20 61 72 67  var arglen = arg
4ea30 75 6d 65 6e 74 73 2e 6c 65 6e 67 74 68 20 2d 20  uments.length - 
4ea40 31 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 61  1,.            a
4ea50 72 67 73 20 3d 20 6e 65 77 20 41 72 72 61 79 28  rgs = new Array(
4ea60 61 72 67 6c 65 6e 29 2c 0a 20 20 20 20 20 20 20  arglen),.       
4ea70 20 20 20 20 20 66 6e 73 2c 0a 20 20 20 20 20 20       fns,.      
4ea80 20 20 20 20 20 20 66 6e 2c 0a 20 20 20 20 20 20        fn,.      
4ea90 20 20 20 20 20 20 69 3b 0a 0a 20 20 20 20 20 20        i;..      
4eaa0 20 20 20 20 66 6f 72 20 28 69 20 3d 20 30 3b 20      for (i = 0; 
4eab0 69 20 3c 20 61 72 67 6c 65 6e 3b 20 69 2b 2b 29  i < arglen; i++)
4eac0 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 61   {.            a
4ead0 72 67 73 5b 69 5d 20 3d 20 61 72 67 75 6d 65 6e  rgs[i] = argumen
4eae0 74 73 24 31 5b 69 20 2b 20 31 5d 3b 20 2f 2f 20  ts$1[i + 1]; // 
4eaf0 73 6b 69 70 20 66 69 72 73 74 20 61 72 67 75 6d  skip first argum
4eb00 65 6e 74 0a 20 20 20 20 20 20 20 20 20 20 7d 0a  ent.          }.
4eb10 0a 20 20 20 20 20 20 20 20 20 20 66 6e 73 20 3d  .          fns =
4eb20 20 73 6c 69 63 65 2e 63 61 6c 6c 28 63 61 6c 6c   slice.call(call
4eb30 62 61 63 6b 73 5b 65 76 65 6e 74 5d 20 7c 7c 20  backs[event] || 
4eb40 5b 5d 2c 20 30 29 3b 0a 0a 20 20 20 20 20 20 20  [], 0);..       
4eb50 20 20 20 66 6f 72 20 28 69 20 3d 20 30 3b 20 66     for (i = 0; f
4eb60 6e 20 3d 20 66 6e 73 5b 69 5d 3b 20 2b 2b 69 29  n = fns[i]; ++i)
4eb70 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 66   {.            f
4eb80 6e 2e 61 70 70 6c 79 28 65 6c 2c 20 61 72 67 73  n.apply(el, args
4eb90 29 3b 0a 20 20 20 20 20 20 20 20 20 20 7d 0a 0a  );.          }..
4eba0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 61            if (ca
4ebb0 6c 6c 62 61 63 6b 73 5b 27 2a 27 5d 20 26 26 20  llbacks['*'] && 
4ebc0 65 76 65 6e 74 20 21 3d 20 27 2a 27 29 0a 20 20  event != '*').  
4ebd0 20 20 20 20 20 20 20 20 20 20 7b 20 65 6c 2e 74            { el.t
4ebe0 72 69 67 67 65 72 2e 61 70 70 6c 79 28 65 6c 2c  rigger.apply(el,
4ebf0 20 5b 27 2a 27 2c 20 65 76 65 6e 74 5d 2e 63 6f   ['*', event].co
4ec00 6e 63 61 74 28 61 72 67 73 29 29 3b 20 7d 0a 0a  ncat(args)); }..
4ec10 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
4ec20 20 65 6c 0a 20 20 20 20 20 20 20 20 7d 2c 0a 20   el.        },. 
4ec30 20 20 20 20 20 20 20 65 6e 75 6d 65 72 61 62 6c         enumerabl
4ec40 65 3a 20 66 61 6c 73 65 2c 0a 20 20 20 20 20 20  e: false,.      
4ec50 20 20 77 72 69 74 61 62 6c 65 3a 20 66 61 6c 73    writable: fals
4ec60 65 2c 0a 20 20 20 20 20 20 20 20 63 6f 6e 66 69  e,.        confi
4ec70 67 75 72 61 62 6c 65 3a 20 66 61 6c 73 65 0a 20  gurable: false. 
4ec80 20 20 20 20 20 7d 0a 20 20 20 20 7d 29 3b 0a 0a       }.    });..
4ec90 20 20 20 20 72 65 74 75 72 6e 20 65 6c 0a 0a 20      return el.. 
4eca0 20 7d 3b 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20   };..  /**.   * 
4ecb0 53 68 6f 72 74 20 61 6c 69 61 73 20 66 6f 72 20  Short alias for 
4ecc0 4f 62 6a 65 63 74 2e 67 65 74 4f 77 6e 50 72 6f  Object.getOwnPro
4ecd0 70 65 72 74 79 44 65 73 63 72 69 70 74 6f 72 0a  pertyDescriptor.
4ece0 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e     */.  function
4ecf0 20 67 65 74 50 72 6f 70 44 65 73 63 72 69 70 74   getPropDescript
4ed00 6f 72 20 28 6f 2c 20 6b 29 20 7b 0a 20 20 20 20  or (o, k) {.    
4ed10 72 65 74 75 72 6e 20 4f 62 6a 65 63 74 2e 67 65  return Object.ge
4ed20 74 4f 77 6e 50 72 6f 70 65 72 74 79 44 65 73 63  tOwnPropertyDesc
4ed30 72 69 70 74 6f 72 28 6f 2c 20 6b 29 0a 20 20 7d  riptor(o, k).  }
4ed40 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 43 68 65  ..  /**.   * Che
4ed50 63 6b 20 69 66 20 70 61 73 73 65 64 20 61 72 67  ck if passed arg
4ed60 75 6d 65 6e 74 20 69 73 20 75 6e 64 65 66 69 6e  ument is undefin
4ed70 65 64 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20  ed.   * @param  
4ed80 20 7b 20 2a 20 7d 20 76 61 6c 75 65 20 2d 0a 20   { * } value -. 
4ed90 20 20 2a 20 40 72 65 74 75 72 6e 73 20 7b 20 42    * @returns { B
4eda0 6f 6f 6c 65 61 6e 20 7d 20 2d 0a 20 20 20 2a 2f  oolean } -.   */
4edb0 0a 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 55 6e  .  function isUn
4edc0 64 65 66 69 6e 65 64 28 76 61 6c 75 65 29 20 7b  defined(value) {
4edd0 0a 20 20 20 20 72 65 74 75 72 6e 20 74 79 70 65  .    return type
4ede0 6f 66 20 76 61 6c 75 65 20 3d 3d 3d 20 54 5f 55  of value === T_U
4edf0 4e 44 45 46 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a  NDEF.  }..  /**.
4ee00 20 20 20 2a 20 43 68 65 63 6b 20 77 68 65 74 68     * Check wheth
4ee10 65 72 20 6f 62 6a 65 63 74 27 73 20 70 72 6f 70  er object's prop
4ee20 65 72 74 79 20 63 6f 75 6c 64 20 62 65 20 6f 76  erty could be ov
4ee30 65 72 72 69 64 64 65 6e 0a 20 20 20 2a 20 40 70  erridden.   * @p
4ee40 61 72 61 6d 20 20 20 7b 20 4f 62 6a 65 63 74 20  aram   { Object 
4ee50 7d 20 20 6f 62 6a 20 2d 20 73 6f 75 72 63 65 20  }  obj - source 
4ee60 6f 62 6a 65 63 74 0a 20 20 20 2a 20 40 70 61 72  object.   * @par
4ee70 61 6d 20 20 20 7b 20 53 74 72 69 6e 67 20 7d 20  am   { String } 
4ee80 20 6b 65 79 20 2d 20 6f 62 6a 65 63 74 20 70 72   key - object pr
4ee90 6f 70 65 72 74 79 0a 20 20 20 2a 20 40 72 65 74  operty.   * @ret
4eea0 75 72 6e 73 20 7b 20 42 6f 6f 6c 65 61 6e 20 7d  urns { Boolean }
4eeb0 20 74 72 75 65 20 69 66 20 77 72 69 74 61 62 6c   true if writabl
4eec0 65 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69  e.   */.  functi
4eed0 6f 6e 20 69 73 57 72 69 74 61 62 6c 65 28 6f 62  on isWritable(ob
4eee0 6a 2c 20 6b 65 79 29 20 7b 0a 20 20 20 20 76 61  j, key) {.    va
4eef0 72 20 64 65 73 63 72 69 70 74 6f 72 20 3d 20 67  r descriptor = g
4ef00 65 74 50 72 6f 70 44 65 73 63 72 69 70 74 6f 72  etPropDescriptor
4ef10 28 6f 62 6a 2c 20 6b 65 79 29 3b 0a 20 20 20 20  (obj, key);.    
4ef20 72 65 74 75 72 6e 20 69 73 55 6e 64 65 66 69 6e  return isUndefin
4ef30 65 64 28 6f 62 6a 5b 6b 65 79 5d 29 20 7c 7c 20  ed(obj[key]) || 
4ef40 64 65 73 63 72 69 70 74 6f 72 20 26 26 20 64 65  descriptor && de
4ef50 73 63 72 69 70 74 6f 72 2e 77 72 69 74 61 62 6c  scriptor.writabl
4ef60 65 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20  e.  }..  /**.   
4ef70 2a 20 45 78 74 65 6e 64 20 61 6e 79 20 6f 62 6a  * Extend any obj
4ef80 65 63 74 20 77 69 74 68 20 6f 74 68 65 72 20 70  ect with other p
4ef90 72 6f 70 65 72 74 69 65 73 0a 20 20 20 2a 20 40  roperties.   * @
4efa0 70 61 72 61 6d 20 20 20 7b 20 4f 62 6a 65 63 74  param   { Object
4efb0 20 7d 20 73 72 63 20 2d 20 73 6f 75 72 63 65 20   } src - source 
4efc0 6f 62 6a 65 63 74 0a 20 20 20 2a 20 40 72 65 74  object.   * @ret
4efd0 75 72 6e 73 20 7b 20 4f 62 6a 65 63 74 20 7d 20  urns { Object } 
4efe0 74 68 65 20 72 65 73 75 6c 74 69 6e 67 20 65 78  the resulting ex
4eff0 74 65 6e 64 65 64 20 6f 62 6a 65 63 74 0a 20 20  tended object.  
4f000 20 2a 0a 20 20 20 2a 20 76 61 72 20 6f 62 6a 20   *.   * var obj 
4f010 3d 20 7b 20 66 6f 6f 3a 20 27 62 61 7a 27 20 7d  = { foo: 'baz' }
4f020 0a 20 20 20 2a 20 65 78 74 65 6e 64 28 6f 62 6a  .   * extend(obj
4f030 2c 20 7b 62 61 72 3a 20 27 62 61 72 27 2c 20 66  , {bar: 'bar', f
4f040 6f 6f 3a 20 27 62 61 72 27 7d 29 0a 20 20 20 2a  oo: 'bar'}).   *
4f050 20 63 6f 6e 73 6f 6c 65 2e 6c 6f 67 28 6f 62 6a   console.log(obj
4f060 29 20 3d 3e 20 7b 62 61 72 3a 20 27 62 61 72 27  ) => {bar: 'bar'
4f070 2c 20 66 6f 6f 3a 20 27 62 61 72 27 7d 0a 20 20  , foo: 'bar'}.  
4f080 20 2a 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74   *.   */.  funct
4f090 69 6f 6e 20 65 78 74 65 6e 64 28 73 72 63 29 20  ion extend(src) 
4f0a0 7b 0a 20 20 20 20 76 61 72 20 6f 62 6a 3b 0a 20  {.    var obj;. 
4f0b0 20 20 20 76 61 72 20 69 20 3d 20 31 3b 0a 20 20     var i = 1;.  
4f0c0 20 20 76 61 72 20 61 72 67 73 20 3d 20 61 72 67    var args = arg
4f0d0 75 6d 65 6e 74 73 3b 0a 20 20 20 20 76 61 72 20  uments;.    var 
4f0e0 6c 20 3d 20 61 72 67 73 2e 6c 65 6e 67 74 68 3b  l = args.length;
4f0f0 0a 0a 20 20 20 20 66 6f 72 20 28 3b 20 69 20 3c  ..    for (; i <
4f100 20 6c 3b 20 69 2b 2b 29 20 7b 0a 20 20 20 20 20   l; i++) {.     
4f110 20 69 66 20 28 6f 62 6a 20 3d 20 61 72 67 73 5b   if (obj = args[
4f120 69 5d 29 20 7b 0a 20 20 20 20 20 20 20 20 66 6f  i]) {.        fo
4f130 72 20 28 76 61 72 20 6b 65 79 20 69 6e 20 6f 62  r (var key in ob
4f140 6a 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 2f  j) {.          /
4f150 2f 20 63 68 65 63 6b 20 69 66 20 74 68 69 73 20  / check if this 
4f160 70 72 6f 70 65 72 74 79 20 6f 66 20 74 68 65 20  property of the 
4f170 73 6f 75 72 63 65 20 6f 62 6a 65 63 74 20 63 6f  source object co
4f180 75 6c 64 20 62 65 20 6f 76 65 72 72 69 64 64 65  uld be overridde
4f190 6e 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  n.          if (
4f1a0 69 73 57 72 69 74 61 62 6c 65 28 73 72 63 2c 20  isWritable(src, 
4f1b0 6b 65 79 29 29 0a 20 20 20 20 20 20 20 20 20 20  key)).          
4f1c0 20 20 7b 20 73 72 63 5b 6b 65 79 5d 20 3d 20 6f    { src[key] = o
4f1d0 62 6a 5b 6b 65 79 5d 3b 20 7d 0a 20 20 20 20 20  bj[key]; }.     
4f1e0 20 20 20 7d 0a 20 20 20 20 20 20 7d 0a 20 20 20     }.      }.   
4f1f0 20 7d 0a 20 20 20 20 72 65 74 75 72 6e 20 73 72   }.    return sr
4f200 63 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20  c.  }..  /**.   
4f210 2a 20 41 6c 69 61 73 20 66 6f 72 20 4f 62 6a 65  * Alias for Obje
4f220 63 74 2e 63 72 65 61 74 65 0a 20 20 20 2a 2f 0a  ct.create.   */.
4f230 20 20 66 75 6e 63 74 69 6f 6e 20 63 72 65 61 74    function creat
4f240 65 28 73 72 63 29 20 7b 0a 20 20 20 20 72 65 74  e(src) {.    ret
4f250 75 72 6e 20 4f 62 6a 65 63 74 2e 63 72 65 61 74  urn Object.creat
4f260 65 28 73 72 63 29 0a 20 20 7d 0a 0a 20 20 76 61  e(src).  }..  va
4f270 72 20 73 65 74 74 69 6e 67 73 20 3d 20 65 78 74  r settings = ext
4f280 65 6e 64 28 63 72 65 61 74 65 28 63 73 70 5f 74  end(create(csp_t
4f290 6d 70 6c 5f 32 2e 73 65 74 74 69 6e 67 73 29 2c  mpl_2.settings),
4f2a0 20 7b 0a 20 20 20 20 73 6b 69 70 41 6e 6f 6e 79   {.    skipAnony
4f2b0 6d 6f 75 73 54 61 67 73 3a 20 74 72 75 65 2c 0a  mousTags: true,.
4f2c0 20 20 20 20 2f 2f 20 74 68 65 20 22 76 61 6c 75      // the "valu
4f2d0 65 22 20 61 74 74 72 69 62 75 74 65 73 20 77 69  e" attributes wi
4f2e0 6c 6c 20 62 65 20 70 72 65 73 65 72 76 65 64 0a  ll be preserved.
4f2f0 20 20 20 20 6b 65 65 70 56 61 6c 75 65 41 74 74      keepValueAtt
4f300 72 69 62 75 74 65 73 3a 20 66 61 6c 73 65 2c 0a  ributes: false,.
4f310 20 20 20 20 2f 2f 20 68 61 6e 64 6c 65 20 74 68      // handle th
4f320 65 20 61 75 74 6f 20 75 70 64 61 74 65 73 20 6f  e auto updates o
4f330 6e 20 61 6e 79 20 44 4f 4d 20 65 76 65 6e 74 0a  n any DOM event.
4f340 20 20 20 20 61 75 74 6f 55 70 64 61 74 65 3a 20      autoUpdate: 
4f350 74 72 75 65 0a 20 20 7d 29 3b 0a 0a 20 20 2f 2a  true.  });..  /*
4f360 2a 0a 20 20 20 2a 20 53 68 6f 72 74 65 72 20 61  *.   * Shorter a
4f370 6e 64 20 66 61 73 74 20 77 61 79 20 74 6f 20 73  nd fast way to s
4f380 65 6c 65 63 74 20 6d 75 6c 74 69 70 6c 65 20 6e  elect multiple n
4f390 6f 64 65 73 20 69 6e 20 74 68 65 20 44 4f 4d 0a  odes in the DOM.
4f3a0 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20     * @param   { 
4f3b0 53 74 72 69 6e 67 20 7d 20 73 65 6c 65 63 74 6f  String } selecto
4f3c0 72 20 2d 20 44 4f 4d 20 73 65 6c 65 63 74 6f 72  r - DOM selector
4f3d0 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b  .   * @param   {
4f3e0 20 4f 62 6a 65 63 74 20 7d 20 63 74 78 20 2d 20   Object } ctx - 
4f3f0 44 4f 4d 20 6e 6f 64 65 20 77 68 65 72 65 20 74  DOM node where t
4f400 68 65 20 74 61 72 67 65 74 73 20 6f 66 20 6f 75  he targets of ou
4f410 72 20 73 65 61 72 63 68 20 77 69 6c 6c 20 69 73  r search will is
4f420 20 6c 6f 63 61 74 65 64 0a 20 20 20 2a 20 40 72   located.   * @r
4f430 65 74 75 72 6e 73 20 7b 20 4f 62 6a 65 63 74 20  eturns { Object 
4f440 7d 20 64 6f 6d 20 6e 6f 64 65 73 20 66 6f 75 6e  } dom nodes foun
4f450 64 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69  d.   */.  functi
4f460 6f 6e 20 24 24 28 73 65 6c 65 63 74 6f 72 2c 20  on $$(selector, 
4f470 63 74 78 29 20 7b 0a 20 20 20 20 72 65 74 75 72  ctx) {.    retur
4f480 6e 20 5b 5d 2e 73 6c 69 63 65 2e 63 61 6c 6c 28  n [].slice.call(
4f490 28 63 74 78 20 7c 7c 20 64 6f 63 75 6d 65 6e 74  (ctx || document
4f4a0 29 2e 71 75 65 72 79 53 65 6c 65 63 74 6f 72 41  ).querySelectorA
4f4b0 6c 6c 28 73 65 6c 65 63 74 6f 72 29 29 0a 20 20  ll(selector)).  
4f4c0 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 43 72  }..  /**.   * Cr
4f4d0 65 61 74 65 20 61 20 64 6f 63 75 6d 65 6e 74 20  eate a document 
4f4e0 74 65 78 74 20 6e 6f 64 65 0a 20 20 20 2a 20 40  text node.   * @
4f4f0 72 65 74 75 72 6e 73 20 7b 20 4f 62 6a 65 63 74  returns { Object
4f500 20 7d 20 63 72 65 61 74 65 20 61 20 74 65 78 74   } create a text
4f510 20 6e 6f 64 65 20 74 6f 20 75 73 65 20 61 73 20   node to use as 
4f520 70 6c 61 63 65 68 6f 6c 64 65 72 0a 20 20 20 2a  placeholder.   *
4f530 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 63 72 65  /.  function cre
4f540 61 74 65 44 4f 4d 50 6c 61 63 65 68 6f 6c 64 65  ateDOMPlaceholde
4f550 72 28 29 20 7b 0a 20 20 20 20 72 65 74 75 72 6e  r() {.    return
4f560 20 64 6f 63 75 6d 65 6e 74 2e 63 72 65 61 74 65   document.create
4f570 54 65 78 74 4e 6f 64 65 28 27 27 29 0a 20 20 7d  TextNode('').  }
4f580 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 54 6f 67  ..  /**.   * Tog
4f590 67 6c 65 20 74 68 65 20 76 69 73 69 62 69 6c 69  gle the visibili
4f5a0 74 79 20 6f 66 20 61 6e 79 20 44 4f 4d 20 6e 6f  ty of any DOM no
4f5b0 64 65 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20  de.   * @param  
4f5c0 20 7b 20 4f 62 6a 65 63 74 20 7d 20 20 64 6f 6d   { Object }  dom
4f5d0 20 2d 20 44 4f 4d 20 6e 6f 64 65 20 77 65 20 77   - DOM node we w
4f5e0 61 6e 74 20 74 6f 20 68 69 64 65 0a 20 20 20 2a  ant to hide.   *
4f5f0 20 40 70 61 72 61 6d 20 20 20 7b 20 42 6f 6f 6c   @param   { Bool
4f600 65 61 6e 20 7d 20 73 68 6f 77 20 2d 20 64 6f 20  ean } show - do 
4f610 77 65 20 77 61 6e 74 20 74 6f 20 73 68 6f 77 20  we want to show 
4f620 69 74 3f 0a 20 20 20 2a 2f 0a 0a 20 20 66 75 6e  it?.   */..  fun
4f630 63 74 69 6f 6e 20 74 6f 67 67 6c 65 56 69 73 69  ction toggleVisi
4f640 62 69 6c 69 74 79 28 64 6f 6d 2c 20 73 68 6f 77  bility(dom, show
4f650 29 20 7b 0a 20 20 20 20 64 6f 6d 2e 73 74 79 6c  ) {.    dom.styl
4f660 65 2e 64 69 73 70 6c 61 79 20 3d 20 73 68 6f 77  e.display = show
4f670 20 3f 20 27 27 20 3a 20 27 6e 6f 6e 65 27 3b 0a   ? '' : 'none';.
4f680 20 20 20 20 64 6f 6d 2e 68 69 64 64 65 6e 20 3d      dom.hidden =
4f690 20 73 68 6f 77 20 3f 20 66 61 6c 73 65 20 3a 20   show ? false : 
4f6a0 74 72 75 65 3b 0a 20 20 7d 0a 0a 20 20 2f 2a 2a  true;.  }..  /**
4f6b0 0a 20 20 20 2a 20 47 65 74 20 74 68 65 20 76 61  .   * Get the va
4f6c0 6c 75 65 20 6f 66 20 61 6e 79 20 44 4f 4d 20 61  lue of any DOM a
4f6d0 74 74 72 69 62 75 74 65 20 6f 6e 20 61 20 6e 6f  ttribute on a no
4f6e0 64 65 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20  de.   * @param  
4f6f0 20 7b 20 4f 62 6a 65 63 74 20 7d 20 64 6f 6d 20   { Object } dom 
4f700 2d 20 44 4f 4d 20 6e 6f 64 65 20 77 65 20 77 61  - DOM node we wa
4f710 6e 74 20 74 6f 20 70 61 72 73 65 0a 20 20 20 2a  nt to parse.   *
4f720 20 40 70 61 72 61 6d 20 20 20 7b 20 53 74 72 69   @param   { Stri
4f730 6e 67 20 7d 20 6e 61 6d 65 20 2d 20 6e 61 6d 65  ng } name - name
4f740 20 6f 66 20 74 68 65 20 61 74 74 72 69 62 75 74   of the attribut
4f750 65 20 77 65 20 77 61 6e 74 20 74 6f 20 67 65 74  e we want to get
4f760 0a 20 20 20 2a 20 40 72 65 74 75 72 6e 73 20 7b  .   * @returns {
4f770 20 53 74 72 69 6e 67 20 7c 20 75 6e 64 65 66 69   String | undefi
4f780 6e 65 64 20 7d 20 6e 61 6d 65 20 6f 66 20 74 68  ned } name of th
4f790 65 20 6e 6f 64 65 20 61 74 74 72 69 62 75 74 65  e node attribute
4f7a0 20 77 68 65 74 68 65 72 20 69 74 20 65 78 69 73   whether it exis
4f7b0 74 73 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74  ts.   */.  funct
4f7c0 69 6f 6e 20 67 65 74 41 74 74 72 69 62 75 74 65  ion getAttribute
4f7d0 28 64 6f 6d 2c 20 6e 61 6d 65 29 20 7b 0a 20 20  (dom, name) {.  
4f7e0 20 20 72 65 74 75 72 6e 20 64 6f 6d 2e 67 65 74    return dom.get
4f7f0 41 74 74 72 69 62 75 74 65 28 6e 61 6d 65 29 0a  Attribute(name).
4f800 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20    }..  /**.   * 
4f810 52 65 6d 6f 76 65 20 61 6e 79 20 44 4f 4d 20 61  Remove any DOM a
4f820 74 74 72 69 62 75 74 65 20 66 72 6f 6d 20 61 20  ttribute from a 
4f830 6e 6f 64 65 0a 20 20 20 2a 20 40 70 61 72 61 6d  node.   * @param
4f840 20 20 20 7b 20 4f 62 6a 65 63 74 20 7d 20 64 6f     { Object } do
4f850 6d 20 2d 20 44 4f 4d 20 6e 6f 64 65 20 77 65 20  m - DOM node we 
4f860 77 61 6e 74 20 74 6f 20 75 70 64 61 74 65 0a 20  want to update. 
4f870 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 53    * @param   { S
4f880 74 72 69 6e 67 20 7d 20 6e 61 6d 65 20 2d 20 6e  tring } name - n
4f890 61 6d 65 20 6f 66 20 74 68 65 20 70 72 6f 70 65  ame of the prope
4f8a0 72 74 79 20 77 65 20 77 61 6e 74 20 74 6f 20 72  rty we want to r
4f8b0 65 6d 6f 76 65 0a 20 20 20 2a 2f 0a 20 20 66 75  emove.   */.  fu
4f8c0 6e 63 74 69 6f 6e 20 72 65 6d 6f 76 65 41 74 74  nction removeAtt
4f8d0 72 69 62 75 74 65 28 64 6f 6d 2c 20 6e 61 6d 65  ribute(dom, name
4f8e0 29 20 7b 0a 20 20 20 20 64 6f 6d 2e 72 65 6d 6f  ) {.    dom.remo
4f8f0 76 65 41 74 74 72 69 62 75 74 65 28 6e 61 6d 65  veAttribute(name
4f900 29 3b 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20  );.  }..  /**.  
4f910 20 2a 20 53 65 74 20 74 68 65 20 69 6e 6e 65 72   * Set the inner
4f920 20 68 74 6d 6c 20 6f 66 20 61 6e 79 20 44 4f 4d   html of any DOM
4f930 20 6e 6f 64 65 20 53 56 47 73 20 69 6e 63 6c 75   node SVGs inclu
4f940 64 65 64 0a 20 20 20 2a 20 40 70 61 72 61 6d 20  ded.   * @param 
4f950 7b 20 4f 62 6a 65 63 74 20 7d 20 63 6f 6e 74 61  { Object } conta
4f960 69 6e 65 72 20 2d 20 44 4f 4d 20 6e 6f 64 65 20  iner - DOM node 
4f970 77 68 65 72 65 20 77 65 27 6c 6c 20 69 6e 6a 65  where we'll inje
4f980 63 74 20 6e 65 77 20 68 74 6d 6c 0a 20 20 20 2a  ct new html.   *
4f990 20 40 70 61 72 61 6d 20 7b 20 53 74 72 69 6e 67   @param { String
4f9a0 20 7d 20 68 74 6d 6c 20 2d 20 68 74 6d 6c 20 74   } html - html t
4f9b0 6f 20 69 6e 6a 65 63 74 0a 20 20 20 2a 20 40 70  o inject.   * @p
4f9c0 61 72 61 6d 20 7b 20 42 6f 6f 6c 65 61 6e 20 7d  aram { Boolean }
4f9d0 20 69 73 53 76 67 20 2d 20 73 76 67 20 74 61 67   isSvg - svg tag
4f9e0 73 20 73 68 6f 75 6c 64 20 62 65 20 74 72 65 61  s should be trea
4f9f0 74 65 64 20 61 20 62 69 74 20 64 69 66 66 65 72  ted a bit differ
4fa00 65 6e 74 6c 79 0a 20 20 20 2a 2f 0a 20 20 2f 2a  ently.   */.  /*
4fa10 20 69 73 74 61 6e 62 75 6c 20 69 67 6e 6f 72 65   istanbul ignore
4fa20 20 6e 65 78 74 20 2a 2f 0a 20 20 66 75 6e 63 74   next */.  funct
4fa30 69 6f 6e 20 73 65 74 49 6e 6e 65 72 48 54 4d 4c  ion setInnerHTML
4fa40 28 63 6f 6e 74 61 69 6e 65 72 2c 20 68 74 6d 6c  (container, html
4fa50 2c 20 69 73 53 76 67 29 20 7b 0a 20 20 20 20 2f  , isSvg) {.    /
4fa60 2f 20 69 6e 6e 65 72 48 54 4d 4c 20 69 73 20 6e  / innerHTML is n
4fa70 6f 74 20 73 75 70 70 6f 72 74 65 64 20 6f 6e 20  ot supported on 
4fa80 73 76 67 20 74 61 67 73 20 73 6f 20 77 65 20 6e  svg tags so we n
4fa90 65 65 74 20 74 6f 20 74 72 65 61 74 20 74 68 65  eet to treat the
4faa0 6d 20 64 69 66 66 65 72 65 6e 74 6c 79 0a 20 20  m differently.  
4fab0 20 20 69 66 20 28 69 73 53 76 67 29 20 7b 0a 20    if (isSvg) {. 
4fac0 20 20 20 20 20 76 61 72 20 6e 6f 64 65 20 3d 20       var node = 
4fad0 63 6f 6e 74 61 69 6e 65 72 2e 6f 77 6e 65 72 44  container.ownerD
4fae0 6f 63 75 6d 65 6e 74 2e 69 6d 70 6f 72 74 4e 6f  ocument.importNo
4faf0 64 65 28 0a 20 20 20 20 20 20 20 20 6e 65 77 20  de(.        new 
4fb00 44 4f 4d 50 61 72 73 65 72 28 29 0a 20 20 20 20  DOMParser().    
4fb10 20 20 20 20 20 20 2e 70 61 72 73 65 46 72 6f 6d        .parseFrom
4fb20 53 74 72 69 6e 67 28 28 22 3c 73 76 67 20 78 6d  String(("<svg xm
4fb30 6c 6e 73 3d 5c 22 22 20 2b 20 53 56 47 5f 4e 53  lns=\"" + SVG_NS
4fb40 20 2b 20 22 5c 22 3e 22 20 2b 20 68 74 6d 6c 20   + "\">" + html 
4fb50 2b 20 22 3c 2f 73 76 67 3e 22 29 2c 20 27 61 70  + "</svg>"), 'ap
4fb60 70 6c 69 63 61 74 69 6f 6e 2f 78 6d 6c 27 29 0a  plication/xml').
4fb70 20 20 20 20 20 20 20 20 20 20 2e 64 6f 63 75 6d            .docum
4fb80 65 6e 74 45 6c 65 6d 65 6e 74 2c 0a 20 20 20 20  entElement,.    
4fb90 20 20 20 20 74 72 75 65 0a 20 20 20 20 20 20 29      true.      )
4fba0 3b 0a 0a 20 20 20 20 20 20 63 6f 6e 74 61 69 6e  ;..      contain
4fbb0 65 72 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 6e  er.appendChild(n
4fbc0 6f 64 65 29 3b 0a 20 20 20 20 7d 20 65 6c 73 65  ode);.    } else
4fbd0 20 7b 0a 20 20 20 20 20 20 63 6f 6e 74 61 69 6e   {.      contain
4fbe0 65 72 2e 69 6e 6e 65 72 48 54 4d 4c 20 3d 20 68  er.innerHTML = h
4fbf0 74 6d 6c 3b 0a 20 20 20 20 7d 0a 20 20 7d 0a 0a  tml;.    }.  }..
4fc00 20 20 2f 2a 2a 0a 20 20 20 2a 20 4d 69 6e 69 6d    /**.   * Minim
4fc10 69 7a 65 20 72 69 73 6b 3a 20 6f 6e 6c 79 20 7a  ize risk: only z
4fc20 65 72 6f 20 6f 72 20 6f 6e 65 20 5f 73 70 61 63  ero or one _spac
4fc30 65 5f 20 62 65 74 77 65 65 6e 20 61 74 74 72 20  e_ between attr 
4fc40 26 20 76 61 6c 75 65 0a 20 20 20 2a 20 40 70 61  & value.   * @pa
4fc50 72 61 6d 20 20 20 7b 20 53 74 72 69 6e 67 20 7d  ram   { String }
4fc60 20 20 20 68 74 6d 6c 20 2d 20 68 74 6d 6c 20 73     html - html s
4fc70 74 72 69 6e 67 20 77 65 20 77 61 6e 74 20 74 6f  tring we want to
4fc80 20 70 61 72 73 65 0a 20 20 20 2a 20 40 70 61 72   parse.   * @par
4fc90 61 6d 20 20 20 7b 20 46 75 6e 63 74 69 6f 6e 20  am   { Function 
4fca0 7d 20 66 6e 20 2d 20 63 61 6c 6c 62 61 63 6b 20  } fn - callback 
4fcb0 66 75 6e 63 74 69 6f 6e 20 74 6f 20 61 70 70 6c  function to appl
4fcc0 79 20 6f 6e 20 61 6e 79 20 61 74 74 72 69 62 75  y on any attribu
4fcd0 74 65 20 66 6f 75 6e 64 0a 20 20 20 2a 2f 0a 20  te found.   */. 
4fce0 20 66 75 6e 63 74 69 6f 6e 20 77 61 6c 6b 41 74   function walkAt
4fcf0 74 72 69 62 75 74 65 73 28 68 74 6d 6c 2c 20 66  tributes(html, f
4fd00 6e 29 20 7b 0a 20 20 20 20 69 66 20 28 21 68 74  n) {.    if (!ht
4fd10 6d 6c 29 20 7b 20 72 65 74 75 72 6e 20 7d 0a 20  ml) { return }. 
4fd20 20 20 20 76 61 72 20 6d 3b 0a 20 20 20 20 77 68     var m;.    wh
4fd30 69 6c 65 20 28 6d 20 3d 20 52 45 5f 48 54 4d 4c  ile (m = RE_HTML
4fd40 5f 41 54 54 52 53 2e 65 78 65 63 28 68 74 6d 6c  _ATTRS.exec(html
4fd50 29 29 0a 20 20 20 20 20 20 7b 20 66 6e 28 6d 5b  )).      { fn(m[
4fd60 31 5d 2e 74 6f 4c 6f 77 65 72 43 61 73 65 28 29  1].toLowerCase()
4fd70 2c 20 6d 5b 32 5d 20 7c 7c 20 6d 5b 33 5d 20 7c  , m[2] || m[3] |
4fd80 7c 20 6d 5b 34 5d 29 3b 20 7d 0a 20 20 7d 0a 0a  | m[4]); }.  }..
4fd90 20 20 2f 2a 2a 0a 20 20 20 2a 20 43 72 65 61 74    /**.   * Creat
4fda0 65 20 61 20 64 6f 63 75 6d 65 6e 74 20 66 72 61  e a document fra
4fdb0 67 6d 65 6e 74 0a 20 20 20 2a 20 40 72 65 74 75  gment.   * @retu
4fdc0 72 6e 73 20 7b 20 4f 62 6a 65 63 74 20 7d 20 64  rns { Object } d
4fdd0 6f 63 75 6d 65 6e 74 20 66 72 61 67 6d 65 6e 74  ocument fragment
4fde0 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f  .   */.  functio
4fdf0 6e 20 63 72 65 61 74 65 46 72 61 67 6d 65 6e 74  n createFragment
4fe00 28 29 20 7b 0a 20 20 20 20 72 65 74 75 72 6e 20  () {.    return 
4fe10 64 6f 63 75 6d 65 6e 74 2e 63 72 65 61 74 65 44  document.createD
4fe20 6f 63 75 6d 65 6e 74 46 72 61 67 6d 65 6e 74 28  ocumentFragment(
4fe30 29 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20  ).  }..  /**.   
4fe40 2a 20 49 6e 73 65 72 74 20 73 61 66 65 6c 79 20  * Insert safely 
4fe50 61 20 74 61 67 20 74 6f 20 66 69 78 20 23 31 39  a tag to fix #19
4fe60 36 32 20 23 31 36 34 39 0a 20 20 20 2a 20 40 70  62 #1649.   * @p
4fe70 61 72 61 6d 20 20 20 7b 20 48 54 4d 4c 45 6c 65  aram   { HTMLEle
4fe80 6d 65 6e 74 20 7d 20 72 6f 6f 74 20 2d 20 63 68  ment } root - ch
4fe90 69 6c 64 72 65 6e 20 63 6f 6e 74 61 69 6e 65 72  ildren container
4fea0 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b  .   * @param   {
4feb0 20 48 54 4d 4c 45 6c 65 6d 65 6e 74 20 7d 20 63   HTMLElement } c
4fec0 75 72 72 20 2d 20 6e 6f 64 65 20 74 6f 20 69 6e  urr - node to in
4fed0 73 65 72 74 0a 20 20 20 2a 20 40 70 61 72 61 6d  sert.   * @param
4fee0 20 20 20 7b 20 48 54 4d 4c 45 6c 65 6d 65 6e 74     { HTMLElement
4fef0 20 7d 20 6e 65 78 74 20 2d 20 6e 6f 64 65 20 74   } next - node t
4ff00 68 61 74 20 73 68 6f 75 6c 64 20 70 72 65 63 65  hat should prece
4ff10 65 64 20 74 68 65 20 63 75 72 72 65 6e 74 20 6e  ed the current n
4ff20 6f 64 65 20 69 6e 73 65 72 74 65 64 0a 20 20 20  ode inserted.   
4ff30 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 73 61  */.  function sa
4ff40 66 65 49 6e 73 65 72 74 28 72 6f 6f 74 2c 20 63  feInsert(root, c
4ff50 75 72 72 2c 20 6e 65 78 74 29 20 7b 0a 20 20 20  urr, next) {.   
4ff60 20 72 6f 6f 74 2e 69 6e 73 65 72 74 42 65 66 6f   root.insertBefo
4ff70 72 65 28 63 75 72 72 2c 20 6e 65 78 74 2e 70 61  re(curr, next.pa
4ff80 72 65 6e 74 4e 6f 64 65 20 26 26 20 6e 65 78 74  rentNode && next
4ff90 29 3b 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20  );.  }..  /**.  
4ffa0 20 2a 20 43 6f 6e 76 65 72 74 20 61 20 73 74 79   * Convert a sty
4ffb0 6c 65 20 6f 62 6a 65 63 74 20 74 6f 20 61 20 73  le object to a s
4ffc0 74 72 69 6e 67 0a 20 20 20 2a 20 40 70 61 72 61  tring.   * @para
4ffd0 6d 20 20 20 7b 20 4f 62 6a 65 63 74 20 7d 20 73  m   { Object } s
4ffe0 74 79 6c 65 20 2d 20 73 74 79 6c 65 20 6f 62 6a  tyle - style obj
4fff0 65 63 74 20 77 65 20 6e 65 65 64 20 74 6f 20 70  ect we need to p
50000 61 72 73 65 0a 20 20 20 2a 20 40 72 65 74 75 72  arse.   * @retur
50010 6e 73 20 7b 20 53 74 72 69 6e 67 20 7d 20 72 65  ns { String } re
50020 73 75 6c 74 69 6e 67 20 63 73 73 20 73 74 72 69  sulting css stri
50030 6e 67 0a 20 20 20 2a 20 40 65 78 61 6d 70 6c 65  ng.   * @example
50040 0a 20 20 20 2a 20 73 74 79 6c 65 4f 62 6a 65 63  .   * styleObjec
50050 74 54 6f 53 74 72 69 6e 67 28 7b 20 63 6f 6c 6f  tToString({ colo
50060 72 3a 20 27 72 65 64 27 2c 20 68 65 69 67 68 74  r: 'red', height
50070 3a 20 27 31 30 70 78 27 7d 29 20 2f 2f 20 3d 3e  : '10px'}) // =>
50080 20 27 63 6f 6c 6f 72 3a 20 72 65 64 3b 20 68 65   'color: red; he
50090 69 67 68 74 3a 20 31 30 70 78 27 0a 20 20 20 2a  ight: 10px'.   *
500a0 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 73 74 79  /.  function sty
500b0 6c 65 4f 62 6a 65 63 74 54 6f 53 74 72 69 6e 67  leObjectToString
500c0 28 73 74 79 6c 65 29 20 7b 0a 20 20 20 20 72 65  (style) {.    re
500d0 74 75 72 6e 20 4f 62 6a 65 63 74 2e 6b 65 79 73  turn Object.keys
500e0 28 73 74 79 6c 65 29 2e 72 65 64 75 63 65 28 66  (style).reduce(f
500f0 75 6e 63 74 69 6f 6e 20 28 61 63 63 2c 20 70 72  unction (acc, pr
50100 6f 70 29 20 7b 0a 20 20 20 20 20 20 72 65 74 75  op) {.      retu
50110 72 6e 20 28 61 63 63 20 2b 20 22 20 22 20 2b 20  rn (acc + " " + 
50120 70 72 6f 70 20 2b 20 22 3a 20 22 20 2b 20 28 73  prop + ": " + (s
50130 74 79 6c 65 5b 70 72 6f 70 5d 29 20 2b 20 22 3b  tyle[prop]) + ";
50140 22 29 0a 20 20 20 20 7d 2c 20 27 27 29 0a 20 20  ").    }, '').  
50150 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 57 61  }..  /**.   * Wa
50160 6c 6b 20 64 6f 77 6e 20 72 65 63 75 72 73 69 76  lk down recursiv
50170 65 6c 79 20 61 6c 6c 20 74 68 65 20 63 68 69 6c  ely all the chil
50180 64 72 65 6e 20 74 61 67 73 20 73 74 61 72 74 69  dren tags starti
50190 6e 67 20 64 6f 6d 20 6e 6f 64 65 0a 20 20 20 2a  ng dom node.   *
501a0 20 40 70 61 72 61 6d 20 20 20 7b 20 4f 62 6a 65   @param   { Obje
501b0 63 74 20 7d 20 20 20 64 6f 6d 20 2d 20 73 74 61  ct }   dom - sta
501c0 72 74 69 6e 67 20 6e 6f 64 65 20 77 68 65 72 65  rting node where
501d0 20 77 65 20 77 69 6c 6c 20 73 74 61 72 74 20 74   we will start t
501e0 68 65 20 72 65 63 75 72 73 69 6f 6e 0a 20 20 20  he recursion.   
501f0 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 46 75 6e  * @param   { Fun
50200 63 74 69 6f 6e 20 7d 20 66 6e 20 2d 20 63 61 6c  ction } fn - cal
50210 6c 62 61 63 6b 20 74 6f 20 74 72 61 6e 73 66 6f  lback to transfo
50220 72 6d 20 74 68 65 20 63 68 69 6c 64 20 6e 6f 64  rm the child nod
50230 65 20 6a 75 73 74 20 66 6f 75 6e 64 0a 20 20 20  e just found.   
50240 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 4f 62 6a  * @param   { Obj
50250 65 63 74 20 7d 20 20 20 63 6f 6e 74 65 78 74 20  ect }   context 
50260 2d 20 66 6e 20 63 61 6e 20 6f 70 74 69 6f 6e 61  - fn can optiona
50270 6c 6c 79 20 72 65 74 75 72 6e 20 61 6e 20 6f 62  lly return an ob
50280 6a 65 63 74 2c 20 77 68 69 63 68 20 69 73 20 70  ject, which is p
50290 61 73 73 65 64 20 74 6f 20 63 68 69 6c 64 72 65  assed to childre
502a0 6e 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69  n.   */.  functi
502b0 6f 6e 20 77 61 6c 6b 4e 6f 64 65 73 28 64 6f 6d  on walkNodes(dom
502c0 2c 20 66 6e 2c 20 63 6f 6e 74 65 78 74 29 20 7b  , fn, context) {
502d0 0a 20 20 20 20 69 66 20 28 64 6f 6d 29 20 7b 0a  .    if (dom) {.
502e0 20 20 20 20 20 20 76 61 72 20 72 65 73 20 3d 20        var res = 
502f0 66 6e 28 64 6f 6d 2c 20 63 6f 6e 74 65 78 74 29  fn(dom, context)
50300 3b 0a 20 20 20 20 20 20 76 61 72 20 6e 65 78 74  ;.      var next
50310 3b 0a 20 20 20 20 20 20 2f 2f 20 73 74 6f 70 20  ;.      // stop 
50320 74 68 65 20 72 65 63 75 72 73 69 6f 6e 0a 20 20  the recursion.  
50330 20 20 20 20 69 66 20 28 72 65 73 20 3d 3d 3d 20      if (res === 
50340 66 61 6c 73 65 29 20 7b 20 72 65 74 75 72 6e 20  false) { return 
50350 7d 0a 0a 20 20 20 20 20 20 64 6f 6d 20 3d 20 64  }..      dom = d
50360 6f 6d 2e 66 69 72 73 74 43 68 69 6c 64 3b 0a 0a  om.firstChild;..
50370 20 20 20 20 20 20 77 68 69 6c 65 20 28 64 6f 6d        while (dom
50380 29 20 7b 0a 20 20 20 20 20 20 20 20 6e 65 78 74  ) {.        next
50390 20 3d 20 64 6f 6d 2e 6e 65 78 74 53 69 62 6c 69   = dom.nextSibli
503a0 6e 67 3b 0a 20 20 20 20 20 20 20 20 77 61 6c 6b  ng;.        walk
503b0 4e 6f 64 65 73 28 64 6f 6d 2c 20 66 6e 2c 20 72  Nodes(dom, fn, r
503c0 65 73 29 3b 0a 20 20 20 20 20 20 20 20 64 6f 6d  es);.        dom
503d0 20 3d 20 6e 65 78 74 3b 0a 20 20 20 20 20 20 7d   = next;.      }
503e0 0a 20 20 20 20 7d 0a 20 20 7d 0a 0a 0a 0a 20 20  .    }.  }....  
503f0 76 61 72 20 64 6f 6d 20 3d 20 2f 2a 23 5f 5f 50  var dom = /*#__P
50400 55 52 45 5f 5f 2a 2f 4f 62 6a 65 63 74 2e 66 72  URE__*/Object.fr
50410 65 65 7a 65 28 7b 0a 20 20 20 20 24 24 3a 20 24  eeze({.    $$: $
50420 24 2c 0a 20 20 20 20 24 3a 20 24 2c 0a 20 20 20  $,.    $: $,.   
50430 20 63 72 65 61 74 65 44 4f 4d 50 6c 61 63 65 68   createDOMPlaceh
50440 6f 6c 64 65 72 3a 20 63 72 65 61 74 65 44 4f 4d  older: createDOM
50450 50 6c 61 63 65 68 6f 6c 64 65 72 2c 0a 20 20 20  Placeholder,.   
50460 20 6d 6b 45 6c 3a 20 6d 61 6b 65 45 6c 65 6d 65   mkEl: makeEleme
50470 6e 74 2c 0a 20 20 20 20 73 65 74 41 74 74 72 3a  nt,.    setAttr:
50480 20 73 65 74 41 74 74 72 69 62 75 74 65 2c 0a 20   setAttribute,. 
50490 20 20 20 74 6f 67 67 6c 65 56 69 73 69 62 69 6c     toggleVisibil
504a0 69 74 79 3a 20 74 6f 67 67 6c 65 56 69 73 69 62  ity: toggleVisib
504b0 69 6c 69 74 79 2c 0a 20 20 20 20 67 65 74 41 74  ility,.    getAt
504c0 74 72 3a 20 67 65 74 41 74 74 72 69 62 75 74 65  tr: getAttribute
504d0 2c 0a 20 20 20 20 72 65 6d 41 74 74 72 3a 20 72  ,.    remAttr: r
504e0 65 6d 6f 76 65 41 74 74 72 69 62 75 74 65 2c 0a  emoveAttribute,.
504f0 20 20 20 20 73 65 74 49 6e 6e 65 72 48 54 4d 4c      setInnerHTML
50500 3a 20 73 65 74 49 6e 6e 65 72 48 54 4d 4c 2c 0a  : setInnerHTML,.
50510 20 20 20 20 77 61 6c 6b 41 74 74 72 73 3a 20 77      walkAttrs: w
50520 61 6c 6b 41 74 74 72 69 62 75 74 65 73 2c 0a 20  alkAttributes,. 
50530 20 20 20 63 72 65 61 74 65 46 72 61 67 3a 20 63     createFrag: c
50540 72 65 61 74 65 46 72 61 67 6d 65 6e 74 2c 0a 20  reateFragment,. 
50550 20 20 20 73 61 66 65 49 6e 73 65 72 74 3a 20 73     safeInsert: s
50560 61 66 65 49 6e 73 65 72 74 2c 0a 20 20 20 20 73  afeInsert,.    s
50570 74 79 6c 65 4f 62 6a 65 63 74 54 6f 53 74 72 69  tyleObjectToStri
50580 6e 67 3a 20 73 74 79 6c 65 4f 62 6a 65 63 74 54  ng: styleObjectT
50590 6f 53 74 72 69 6e 67 2c 0a 20 20 20 20 77 61 6c  oString,.    wal
505a0 6b 4e 6f 64 65 73 3a 20 77 61 6c 6b 4e 6f 64 65  kNodes: walkNode
505b0 73 0a 20 20 7d 29 3b 0a 0a 20 20 2f 2a 2a 0a 20  s.  });..  /**. 
505c0 20 20 2a 20 43 68 65 63 6b 20 61 67 61 69 6e 73    * Check agains
505d0 74 20 74 68 65 20 6e 75 6c 6c 20 61 6e 64 20 75  t the null and u
505e0 6e 64 65 66 69 6e 65 64 20 76 61 6c 75 65 73 0a  ndefined values.
505f0 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20     * @param   { 
50600 2a 20 7d 20 20 76 61 6c 75 65 20 2d 0a 20 20 20  * }  value -.   
50610 2a 20 40 72 65 74 75 72 6e 73 20 7b 42 6f 6f 6c  * @returns {Bool
50620 65 61 6e 7d 20 2d 0a 20 20 20 2a 2f 0a 20 20 66  ean} -.   */.  f
50630 75 6e 63 74 69 6f 6e 20 69 73 4e 69 6c 28 76 61  unction isNil(va
50640 6c 75 65 29 20 7b 0a 20 20 20 20 72 65 74 75 72  lue) {.    retur
50650 6e 20 69 73 55 6e 64 65 66 69 6e 65 64 28 76 61  n isUndefined(va
50660 6c 75 65 29 20 7c 7c 20 76 61 6c 75 65 20 3d 3d  lue) || value ==
50670 3d 20 6e 75 6c 6c 0a 20 20 7d 0a 0a 20 20 2f 2a  = null.  }..  /*
50680 2a 0a 20 20 20 2a 20 43 68 65 63 6b 20 69 66 20  *.   * Check if 
50690 70 61 73 73 65 64 20 61 72 67 75 6d 65 6e 74 20  passed argument 
506a0 69 73 20 65 6d 70 74 79 2e 20 44 69 66 66 65 72  is empty. Differ
506b0 65 6e 74 20 66 72 6f 6d 20 66 61 6c 73 79 2c 20  ent from falsy, 
506c0 62 65 63 61 75 73 65 20 77 65 20 64 6f 6e 74 20  because we dont 
506d0 63 6f 6e 73 69 64 65 72 20 30 20 6f 72 20 66 61  consider 0 or fa
506e0 6c 73 65 20 74 6f 20 62 65 20 62 6c 61 6e 6b 0a  lse to be blank.
506f0 20 20 20 2a 20 40 70 61 72 61 6d 20 7b 20 2a 20     * @param { * 
50700 7d 20 76 61 6c 75 65 20 2d 0a 20 20 20 2a 20 40  } value -.   * @
50710 72 65 74 75 72 6e 73 20 7b 20 42 6f 6f 6c 65 61  returns { Boolea
50720 6e 20 7d 20 2d 0a 20 20 20 2a 2f 0a 20 20 66 75  n } -.   */.  fu
50730 6e 63 74 69 6f 6e 20 69 73 42 6c 61 6e 6b 28 76  nction isBlank(v
50740 61 6c 75 65 29 20 7b 0a 20 20 20 20 72 65 74 75  alue) {.    retu
50750 72 6e 20 69 73 4e 69 6c 28 76 61 6c 75 65 29 20  rn isNil(value) 
50760 7c 7c 20 76 61 6c 75 65 20 3d 3d 3d 20 27 27 0a  || value === ''.
50770 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20    }..  /**.   * 
50780 43 68 65 63 6b 20 69 66 20 70 61 73 73 65 64 20  Check if passed 
50790 61 72 67 75 6d 65 6e 74 20 69 73 20 61 20 66 75  argument is a fu
507a0 6e 63 74 69 6f 6e 0a 20 20 20 2a 20 40 70 61 72  nction.   * @par
507b0 61 6d 20 20 20 7b 20 2a 20 7d 20 76 61 6c 75 65  am   { * } value
507c0 20 2d 0a 20 20 20 2a 20 40 72 65 74 75 72 6e 73   -.   * @returns
507d0 20 7b 20 42 6f 6f 6c 65 61 6e 20 7d 20 2d 0a 20   { Boolean } -. 
507e0 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20    */.  function 
507f0 69 73 46 75 6e 63 74 69 6f 6e 28 76 61 6c 75 65  isFunction(value
50800 29 20 7b 0a 20 20 20 20 72 65 74 75 72 6e 20 74  ) {.    return t
50810 79 70 65 6f 66 20 76 61 6c 75 65 20 3d 3d 3d 20  ypeof value === 
50820 54 5f 46 55 4e 43 54 49 4f 4e 0a 20 20 7d 0a 0a  T_FUNCTION.  }..
50830 20 20 2f 2a 2a 0a 20 20 20 2a 20 43 68 65 63 6b    /**.   * Check
50840 20 69 66 20 70 61 73 73 65 64 20 61 72 67 75 6d   if passed argum
50850 65 6e 74 20 69 73 20 61 6e 20 6f 62 6a 65 63 74  ent is an object
50860 2c 20 65 78 63 6c 75 64 65 20 6e 75 6c 6c 0a 20  , exclude null. 
50870 20 20 2a 20 4e 4f 54 45 3a 20 75 73 65 20 69 73    * NOTE: use is
50880 4f 62 6a 65 63 74 28 78 29 20 26 26 20 21 69 73  Object(x) && !is
50890 41 72 72 61 79 28 78 29 20 74 6f 20 65 78 63 6c  Array(x) to excl
508a0 75 64 65 73 20 61 72 72 61 79 73 2e 0a 20 20 20  udes arrays..   
508b0 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 2a 20 7d  * @param   { * }
508c0 20 76 61 6c 75 65 20 2d 0a 20 20 20 2a 20 40 72   value -.   * @r
508d0 65 74 75 72 6e 73 20 7b 20 42 6f 6f 6c 65 61 6e  eturns { Boolean
508e0 20 7d 20 2d 0a 20 20 20 2a 2f 0a 20 20 66 75 6e   } -.   */.  fun
508f0 63 74 69 6f 6e 20 69 73 4f 62 6a 65 63 74 28 76  ction isObject(v
50900 61 6c 75 65 29 20 7b 0a 20 20 20 20 72 65 74 75  alue) {.    retu
50910 72 6e 20 76 61 6c 75 65 20 26 26 20 74 79 70 65  rn value && type
50920 6f 66 20 76 61 6c 75 65 20 3d 3d 3d 20 54 5f 4f  of value === T_O
50930 42 4a 45 43 54 20 2f 2f 20 74 79 70 65 6f 66 20  BJECT // typeof 
50940 6e 75 6c 6c 20 69 73 20 27 6f 62 6a 65 63 74 27  null is 'object'
50950 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a  .  }..  /**.   *
50960 20 43 68 65 63 6b 20 69 66 20 61 20 44 4f 4d 20   Check if a DOM 
50970 6e 6f 64 65 20 69 73 20 61 6e 20 73 76 67 20 74  node is an svg t
50980 61 67 20 6f 72 20 70 61 72 74 20 6f 66 20 61 6e  ag or part of an
50990 20 73 76 67 0a 20 20 20 2a 20 40 70 61 72 61 6d   svg.   * @param
509a0 20 20 20 7b 20 48 54 4d 4c 45 6c 65 6d 65 6e 74     { HTMLElement
509b0 20 7d 20 20 65 6c 20 2d 20 6e 6f 64 65 20 77 65   }  el - node we
509c0 20 77 61 6e 74 20 74 6f 20 74 65 73 74 0a 20 20   want to test.  
509d0 20 2a 20 40 72 65 74 75 72 6e 73 20 7b 42 6f 6f   * @returns {Boo
509e0 6c 65 61 6e 7d 20 74 72 75 65 20 69 66 20 69 74  lean} true if it
509f0 27 73 20 61 6e 20 73 76 67 20 6e 6f 64 65 0a 20  's an svg node. 
50a00 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20    */.  function 
50a10 69 73 53 76 67 28 65 6c 29 20 7b 0a 20 20 20 20  isSvg(el) {.    
50a20 76 61 72 20 6f 77 6e 65 72 20 3d 20 65 6c 2e 6f  var owner = el.o
50a30 77 6e 65 72 53 56 47 45 6c 65 6d 65 6e 74 3b 0a  wnerSVGElement;.
50a40 20 20 20 20 72 65 74 75 72 6e 20 21 21 6f 77 6e      return !!own
50a50 65 72 20 7c 7c 20 6f 77 6e 65 72 20 3d 3d 3d 20  er || owner === 
50a60 6e 75 6c 6c 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a  null.  }..  /**.
50a70 20 20 20 2a 20 43 68 65 63 6b 20 69 66 20 70 61     * Check if pa
50a80 73 73 65 64 20 61 72 67 75 6d 65 6e 74 20 69 73  ssed argument is
50a90 20 61 20 6b 69 6e 64 20 6f 66 20 61 72 72 61 79   a kind of array
50aa0 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b  .   * @param   {
50ab0 20 2a 20 7d 20 76 61 6c 75 65 20 2d 0a 20 20 20   * } value -.   
50ac0 2a 20 40 72 65 74 75 72 6e 73 20 7b 20 42 6f 6f  * @returns { Boo
50ad0 6c 65 61 6e 20 7d 20 2d 0a 20 20 20 2a 2f 0a 20  lean } -.   */. 
50ae0 20 66 75 6e 63 74 69 6f 6e 20 69 73 41 72 72 61   function isArra
50af0 79 28 76 61 6c 75 65 29 20 7b 0a 20 20 20 20 72  y(value) {.    r
50b00 65 74 75 72 6e 20 41 72 72 61 79 2e 69 73 41 72  eturn Array.isAr
50b10 72 61 79 28 76 61 6c 75 65 29 20 7c 7c 20 76 61  ray(value) || va
50b20 6c 75 65 20 69 6e 73 74 61 6e 63 65 6f 66 20 41  lue instanceof A
50b30 72 72 61 79 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a  rray.  }..  /**.
50b40 20 20 20 2a 20 43 68 65 63 6b 20 69 66 20 74 68     * Check if th
50b50 65 20 70 61 73 73 65 64 20 61 72 67 75 6d 65 6e  e passed argumen
50b60 74 20 69 73 20 61 20 62 6f 6f 6c 65 61 6e 20 61  t is a boolean a
50b70 74 74 72 69 62 75 74 65 0a 20 20 20 2a 20 40 70  ttribute.   * @p
50b80 61 72 61 6d 20 20 20 7b 20 53 74 72 69 6e 67 20  aram   { String 
50b90 7d 20 76 61 6c 75 65 20 2d 0a 20 20 20 2a 20 40  } value -.   * @
50ba0 72 65 74 75 72 6e 73 20 7b 20 42 6f 6f 6c 65 61  returns { Boolea
50bb0 6e 20 7d 20 2d 0a 20 20 20 2a 2f 0a 20 20 66 75  n } -.   */.  fu
50bc0 6e 63 74 69 6f 6e 20 69 73 42 6f 6f 6c 41 74 74  nction isBoolAtt
50bd0 72 28 76 61 6c 75 65 29 20 7b 0a 20 20 20 20 72  r(value) {.    r
50be0 65 74 75 72 6e 20 52 45 5f 42 4f 4f 4c 5f 41 54  eturn RE_BOOL_AT
50bf0 54 52 53 2e 74 65 73 74 28 76 61 6c 75 65 29 0a  TRS.test(value).
50c00 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20    }..  /**.   * 
50c10 43 68 65 63 6b 20 69 66 20 70 61 73 73 65 64 20  Check if passed 
50c20 61 72 67 75 6d 65 6e 74 20 69 73 20 61 20 73 74  argument is a st
50c30 72 69 6e 67 0a 20 20 20 2a 20 40 70 61 72 61 6d  ring.   * @param
50c40 20 20 20 7b 20 2a 20 7d 20 76 61 6c 75 65 20 2d     { * } value -
50c50 0a 20 20 20 2a 20 40 72 65 74 75 72 6e 73 20 7b  .   * @returns {
50c60 20 42 6f 6f 6c 65 61 6e 20 7d 20 2d 0a 20 20 20   Boolean } -.   
50c70 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 69 73  */.  function is
50c80 53 74 72 69 6e 67 28 76 61 6c 75 65 29 20 7b 0a  String(value) {.
50c90 20 20 20 20 72 65 74 75 72 6e 20 74 79 70 65 6f      return typeo
50ca0 66 20 76 61 6c 75 65 20 3d 3d 3d 20 54 5f 53 54  f value === T_ST
50cb0 52 49 4e 47 0a 20 20 7d 0a 0a 0a 0a 20 20 76 61  RING.  }....  va
50cc0 72 20 63 68 65 63 6b 20 3d 20 2f 2a 23 5f 5f 50  r check = /*#__P
50cd0 55 52 45 5f 5f 2a 2f 4f 62 6a 65 63 74 2e 66 72  URE__*/Object.fr
50ce0 65 65 7a 65 28 7b 0a 20 20 20 20 69 73 42 6c 61  eeze({.    isBla
50cf0 6e 6b 3a 20 69 73 42 6c 61 6e 6b 2c 0a 20 20 20  nk: isBlank,.   
50d00 20 69 73 46 75 6e 63 74 69 6f 6e 3a 20 69 73 46   isFunction: isF
50d10 75 6e 63 74 69 6f 6e 2c 0a 20 20 20 20 69 73 4f  unction,.    isO
50d20 62 6a 65 63 74 3a 20 69 73 4f 62 6a 65 63 74 2c  bject: isObject,
50d30 0a 20 20 20 20 69 73 53 76 67 3a 20 69 73 53 76  .    isSvg: isSv
50d40 67 2c 0a 20 20 20 20 69 73 57 72 69 74 61 62 6c  g,.    isWritabl
50d50 65 3a 20 69 73 57 72 69 74 61 62 6c 65 2c 0a 20  e: isWritable,. 
50d60 20 20 20 69 73 41 72 72 61 79 3a 20 69 73 41 72     isArray: isAr
50d70 72 61 79 2c 0a 20 20 20 20 69 73 42 6f 6f 6c 41  ray,.    isBoolA
50d80 74 74 72 3a 20 69 73 42 6f 6f 6c 41 74 74 72 2c  ttr: isBoolAttr,
50d90 0a 20 20 20 20 69 73 4e 69 6c 3a 20 69 73 4e 69  .    isNil: isNi
50da0 6c 2c 0a 20 20 20 20 69 73 53 74 72 69 6e 67 3a  l,.    isString:
50db0 20 69 73 53 74 72 69 6e 67 2c 0a 20 20 20 20 69   isString,.    i
50dc0 73 55 6e 64 65 66 69 6e 65 64 3a 20 69 73 55 6e  sUndefined: isUn
50dd0 64 65 66 69 6e 65 64 0a 20 20 7d 29 3b 0a 0a 20  defined.  });.. 
50de0 20 2f 2a 2a 0a 20 20 20 2a 20 43 68 65 63 6b 20   /**.   * Check 
50df0 77 68 65 74 68 65 72 20 61 6e 20 61 72 72 61 79  whether an array
50e00 20 63 6f 6e 74 61 69 6e 73 20 61 6e 20 69 74 65   contains an ite
50e10 6d 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20  m.   * @param   
50e20 7b 20 41 72 72 61 79 20 7d 20 61 72 72 61 79 20  { Array } array 
50e30 2d 20 74 61 72 67 65 74 20 61 72 72 61 79 0a 20  - target array. 
50e40 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 2a    * @param   { *
50e50 20 7d 20 69 74 65 6d 20 2d 20 69 74 65 6d 20 74   } item - item t
50e60 6f 20 74 65 73 74 0a 20 20 20 2a 20 40 72 65 74  o test.   * @ret
50e70 75 72 6e 73 20 7b 20 42 6f 6f 6c 65 61 6e 20 7d  urns { Boolean }
50e80 20 2d 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74   -.   */.  funct
50e90 69 6f 6e 20 63 6f 6e 74 61 69 6e 73 28 61 72 72  ion contains(arr
50ea0 61 79 2c 20 69 74 65 6d 29 20 7b 0a 20 20 20 20  ay, item) {.    
50eb0 72 65 74 75 72 6e 20 61 72 72 61 79 2e 69 6e 64  return array.ind
50ec0 65 78 4f 66 28 69 74 65 6d 29 20 21 3d 3d 20 2d  exOf(item) !== -
50ed0 31 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20  1.  }..  /**.   
50ee0 2a 20 53 70 65 63 69 61 6c 69 7a 65 64 20 66 75  * Specialized fu
50ef0 6e 63 74 69 6f 6e 20 66 6f 72 20 6c 6f 6f 70 69  nction for loopi
50f00 6e 67 20 61 6e 20 61 72 72 61 79 2d 6c 69 6b 65  ng an array-like
50f10 20 63 6f 6c 6c 65 63 74 69 6f 6e 20 77 69 74 68   collection with
50f20 20 60 65 61 63 68 3d 7b 7d 60 0a 20 20 20 2a 20   `each={}`.   * 
50f30 40 70 61 72 61 6d 20 20 20 7b 20 41 72 72 61 79  @param   { Array
50f40 20 7d 20 6c 69 73 74 20 2d 20 63 6f 6c 6c 65 63   } list - collec
50f50 74 69 6f 6e 20 6f 66 20 69 74 65 6d 73 0a 20 20  tion of items.  
50f60 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 46 75 6e   * @param   {Fun
50f70 63 74 69 6f 6e 7d 20 66 6e 20 2d 20 63 61 6c 6c  ction} fn - call
50f80 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 0a 20 20  back function.  
50f90 20 2a 20 40 72 65 74 75 72 6e 73 20 7b 20 41 72   * @returns { Ar
50fa0 72 61 79 20 7d 20 74 68 65 20 61 72 72 61 79 20  ray } the array 
50fb0 6c 6f 6f 70 65 64 0a 20 20 20 2a 2f 0a 20 20 66  looped.   */.  f
50fc0 75 6e 63 74 69 6f 6e 20 65 61 63 68 28 6c 69 73  unction each(lis
50fd0 74 2c 20 66 6e 29 20 7b 0a 20 20 20 20 76 61 72  t, fn) {.    var
50fe0 20 6c 65 6e 20 3d 20 6c 69 73 74 20 3f 20 6c 69   len = list ? li
50ff0 73 74 2e 6c 65 6e 67 74 68 20 3a 20 30 3b 0a 20  st.length : 0;. 
51000 20 20 20 76 61 72 20 69 20 3d 20 30 3b 0a 20 20     var i = 0;.  
51010 20 20 66 6f 72 20 28 3b 20 69 20 3c 20 6c 65 6e    for (; i < len
51020 3b 20 69 2b 2b 29 20 7b 20 66 6e 28 6c 69 73 74  ; i++) { fn(list
51030 5b 69 5d 2c 20 69 29 3b 20 7d 0a 20 20 20 20 72  [i], i); }.    r
51040 65 74 75 72 6e 20 6c 69 73 74 0a 20 20 7d 0a 0a  eturn list.  }..
51050 20 20 2f 2a 2a 0a 20 20 20 2a 20 46 61 73 74 65    /**.   * Faste
51060 72 20 53 74 72 69 6e 67 20 73 74 61 72 74 73 57  r String startsW
51070 69 74 68 20 61 6c 74 65 72 6e 61 74 69 76 65 0a  ith alternative.
51080 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20     * @param   { 
51090 53 74 72 69 6e 67 20 7d 20 73 74 72 20 2d 20 73  String } str - s
510a0 6f 75 72 63 65 20 73 74 72 69 6e 67 0a 20 20 20  ource string.   
510b0 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 53 74 72  * @param   { Str
510c0 69 6e 67 20 7d 20 76 61 6c 75 65 20 2d 20 74 65  ing } value - te
510d0 73 74 20 73 74 72 69 6e 67 0a 20 20 20 2a 20 40  st string.   * @
510e0 72 65 74 75 72 6e 73 20 7b 20 42 6f 6f 6c 65 61  returns { Boolea
510f0 6e 20 7d 20 2d 0a 20 20 20 2a 2f 0a 20 20 66 75  n } -.   */.  fu
51100 6e 63 74 69 6f 6e 20 73 74 61 72 74 73 57 69 74  nction startsWit
51110 68 28 73 74 72 2c 20 76 61 6c 75 65 29 20 7b 0a  h(str, value) {.
51120 20 20 20 20 72 65 74 75 72 6e 20 73 74 72 2e 73      return str.s
51130 6c 69 63 65 28 30 2c 20 76 61 6c 75 65 2e 6c 65  lice(0, value.le
51140 6e 67 74 68 29 20 3d 3d 3d 20 76 61 6c 75 65 0a  ngth) === value.
51150 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20    }..  /**.   * 
51160 46 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 69  Function returni
51170 6e 67 20 61 6c 77 61 79 73 20 61 20 75 6e 69 71  ng always a uniq
51180 75 65 20 69 64 65 6e 74 69 66 69 65 72 0a 20 20  ue identifier.  
51190 20 2a 20 40 72 65 74 75 72 6e 73 20 7b 20 4e 75   * @returns { Nu
511a0 6d 62 65 72 20 7d 20 2d 20 6e 75 6d 62 65 72 20  mber } - number 
511b0 66 72 6f 6d 20 30 2e 2e 2e 6e 0a 20 20 20 2a 2f  from 0...n.   */
511c0 0a 20 20 76 61 72 20 75 69 64 20 3d 20 28 66 75  .  var uid = (fu
511d0 6e 63 74 69 6f 6e 20 75 69 64 28 29 20 7b 0a 20  nction uid() {. 
511e0 20 20 20 76 61 72 20 69 20 3d 20 2d 31 3b 0a 20     var i = -1;. 
511f0 20 20 20 72 65 74 75 72 6e 20 66 75 6e 63 74 69     return functi
51200 6f 6e 20 28 29 20 7b 20 72 65 74 75 72 6e 20 2b  on () { return +
51210 2b 69 3b 20 7d 0a 20 20 7d 29 28 29 3b 0a 0a 20  +i; }.  })();.. 
51220 20 2f 2a 2a 0a 20 20 20 2a 20 48 65 6c 70 65 72   /**.   * Helper
51230 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 73 65 74   function to set
51240 20 61 6e 20 69 6d 6d 75 74 61 62 6c 65 20 70 72   an immutable pr
51250 6f 70 65 72 74 79 0a 20 20 20 2a 20 40 70 61 72  operty.   * @par
51260 61 6d 20 20 20 7b 20 4f 62 6a 65 63 74 20 7d 20  am   { Object } 
51270 65 6c 20 2d 20 6f 62 6a 65 63 74 20 77 68 65 72  el - object wher
51280 65 20 74 68 65 20 6e 65 77 20 70 72 6f 70 65 72  e the new proper
51290 74 79 20 77 69 6c 6c 20 62 65 20 73 65 74 0a 20  ty will be set. 
512a0 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 53    * @param   { S
512b0 74 72 69 6e 67 20 7d 20 6b 65 79 20 2d 20 6f 62  tring } key - ob
512c0 6a 65 63 74 20 6b 65 79 20 77 68 65 72 65 20 74  ject key where t
512d0 68 65 20 6e 65 77 20 70 72 6f 70 65 72 74 79 20  he new property 
512e0 77 69 6c 6c 20 62 65 20 73 74 6f 72 65 64 0a 20  will be stored. 
512f0 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 2a    * @param   { *
51300 20 7d 20 76 61 6c 75 65 20 2d 20 76 61 6c 75 65   } value - value
51310 20 6f 66 20 74 68 65 20 6e 65 77 20 70 72 6f 70   of the new prop
51320 65 72 74 79 0a 20 20 20 2a 20 40 70 61 72 61 6d  erty.   * @param
51330 20 20 20 7b 20 4f 62 6a 65 63 74 20 7d 20 6f 70     { Object } op
51340 74 69 6f 6e 73 20 2d 20 73 65 74 20 74 68 65 20  tions - set the 
51350 70 72 6f 70 65 72 79 20 6f 76 65 72 72 69 64 69  propery overridi
51360 6e 67 20 74 68 65 20 64 65 66 61 75 6c 74 20 6f  ng the default o
51370 70 74 69 6f 6e 73 0a 20 20 20 2a 20 40 72 65 74  ptions.   * @ret
51380 75 72 6e 73 20 7b 20 4f 62 6a 65 63 74 20 7d 20  urns { Object } 
51390 2d 20 74 68 65 20 69 6e 69 74 69 61 6c 20 6f 62  - the initial ob
513a0 6a 65 63 74 0a 20 20 20 2a 2f 0a 20 20 66 75 6e  ject.   */.  fun
513b0 63 74 69 6f 6e 20 64 65 66 69 6e 65 28 65 6c 2c  ction define(el,
513c0 20 6b 65 79 2c 20 76 61 6c 75 65 2c 20 6f 70 74   key, value, opt
513d0 69 6f 6e 73 29 20 7b 0a 20 20 20 20 4f 62 6a 65  ions) {.    Obje
513e0 63 74 2e 64 65 66 69 6e 65 50 72 6f 70 65 72 74  ct.definePropert
513f0 79 28 65 6c 2c 20 6b 65 79 2c 20 65 78 74 65 6e  y(el, key, exten
51400 64 28 7b 0a 20 20 20 20 20 20 76 61 6c 75 65 3a  d({.      value:
51410 20 76 61 6c 75 65 2c 0a 20 20 20 20 20 20 65 6e   value,.      en
51420 75 6d 65 72 61 62 6c 65 3a 20 66 61 6c 73 65 2c  umerable: false,
51430 0a 20 20 20 20 20 20 77 72 69 74 61 62 6c 65 3a  .      writable:
51440 20 66 61 6c 73 65 2c 0a 20 20 20 20 20 20 63 6f   false,.      co
51450 6e 66 69 67 75 72 61 62 6c 65 3a 20 74 72 75 65  nfigurable: true
51460 0a 20 20 20 20 7d 2c 20 6f 70 74 69 6f 6e 73 29  .    }, options)
51470 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 65 6c  );.    return el
51480 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a  .  }..  /**.   *
51490 20 43 6f 6e 76 65 72 74 20 61 20 73 74 72 69 6e   Convert a strin
514a0 67 20 63 6f 6e 74 61 69 6e 69 6e 67 20 64 61 73  g containing das
514b0 68 65 73 20 74 6f 20 63 61 6d 65 6c 20 63 61 73  hes to camel cas
514c0 65 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20  e.   * @param   
514d0 7b 20 53 74 72 69 6e 67 20 7d 20 73 74 72 20 2d  { String } str -
514e0 20 69 6e 70 75 74 20 73 74 72 69 6e 67 0a 20 20   input string.  
514f0 20 2a 20 40 72 65 74 75 72 6e 73 20 7b 20 53 74   * @returns { St
51500 72 69 6e 67 20 7d 20 6d 79 2d 73 74 72 69 6e 67  ring } my-string
51510 20 2d 3e 20 6d 79 53 74 72 69 6e 67 0a 20 20 20   -> myString.   
51520 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 74 6f  */.  function to
51530 43 61 6d 65 6c 28 73 74 72 29 20 7b 0a 20 20 20  Camel(str) {.   
51540 20 72 65 74 75 72 6e 20 73 74 72 2e 72 65 70 6c   return str.repl
51550 61 63 65 28 2f 2d 28 5c 77 29 2f 67 2c 20 66 75  ace(/-(\w)/g, fu
51560 6e 63 74 69 6f 6e 20 28 5f 2c 20 63 29 20 7b 20  nction (_, c) { 
51570 72 65 74 75 72 6e 20 63 2e 74 6f 55 70 70 65 72  return c.toUpper
51580 43 61 73 65 28 29 3b 20 7d 29 0a 20 20 7d 0a 0a  Case(); }).  }..
51590 20 20 2f 2a 2a 0a 20 20 20 2a 20 57 61 72 6e 20    /**.   * Warn 
515a0 61 20 6d 65 73 73 61 67 65 20 76 69 61 20 63 6f  a message via co
515b0 6e 73 6f 6c 65 0a 20 20 20 2a 20 40 70 61 72 61  nsole.   * @para
515c0 6d 20 20 20 7b 53 74 72 69 6e 67 7d 20 6d 65 73  m   {String} mes
515d0 73 61 67 65 20 2d 20 77 61 72 6e 69 6e 67 20 6d  sage - warning m
515e0 65 73 73 61 67 65 0a 20 20 20 2a 2f 0a 20 20 66  essage.   */.  f
515f0 75 6e 63 74 69 6f 6e 20 77 61 72 6e 28 6d 65 73  unction warn(mes
51600 73 61 67 65 29 20 7b 0a 20 20 20 20 69 66 20 28  sage) {.    if (
51610 63 6f 6e 73 6f 6c 65 20 26 26 20 63 6f 6e 73 6f  console && conso
51620 6c 65 2e 77 61 72 6e 29 20 7b 20 63 6f 6e 73 6f  le.warn) { conso
51630 6c 65 2e 77 61 72 6e 28 6d 65 73 73 61 67 65 29  le.warn(message)
51640 3b 20 7d 0a 20 20 7d 0a 0a 0a 0a 20 20 76 61 72  ; }.  }....  var
51650 20 6d 69 73 63 20 3d 20 2f 2a 23 5f 5f 50 55 52   misc = /*#__PUR
51660 45 5f 5f 2a 2f 4f 62 6a 65 63 74 2e 66 72 65 65  E__*/Object.free
51670 7a 65 28 7b 0a 20 20 20 20 63 6f 6e 74 61 69 6e  ze({.    contain
51680 73 3a 20 63 6f 6e 74 61 69 6e 73 2c 0a 20 20 20  s: contains,.   
51690 20 65 61 63 68 3a 20 65 61 63 68 2c 0a 20 20 20   each: each,.   
516a0 20 67 65 74 50 72 6f 70 44 65 73 63 72 69 70 74   getPropDescript
516b0 6f 72 3a 20 67 65 74 50 72 6f 70 44 65 73 63 72  or: getPropDescr
516c0 69 70 74 6f 72 2c 0a 20 20 20 20 73 74 61 72 74  iptor,.    start
516d0 73 57 69 74 68 3a 20 73 74 61 72 74 73 57 69 74  sWith: startsWit
516e0 68 2c 0a 20 20 20 20 75 69 64 3a 20 75 69 64 2c  h,.    uid: uid,
516f0 0a 20 20 20 20 64 65 66 69 6e 65 50 72 6f 70 65  .    definePrope
51700 72 74 79 3a 20 64 65 66 69 6e 65 2c 0a 20 20 20  rty: define,.   
51710 20 6f 62 6a 65 63 74 43 72 65 61 74 65 3a 20 63   objectCreate: c
51720 72 65 61 74 65 2c 0a 20 20 20 20 65 78 74 65 6e  reate,.    exten
51730 64 3a 20 65 78 74 65 6e 64 2c 0a 20 20 20 20 74  d: extend,.    t
51740 6f 43 61 6d 65 6c 3a 20 74 6f 43 61 6d 65 6c 2c  oCamel: toCamel,
51750 0a 20 20 20 20 77 61 72 6e 3a 20 77 61 72 6e 0a  .    warn: warn.
51760 20 20 7d 29 3b 0a 0a 20 20 2f 2a 2a 0a 20 20 20    });..  /**.   
51770 2a 20 53 65 74 20 74 68 65 20 70 72 6f 70 65 72  * Set the proper
51780 74 79 20 6f 66 20 61 6e 20 6f 62 6a 65 63 74 20  ty of an object 
51790 66 6f 72 20 61 20 67 69 76 65 6e 20 6b 65 79 2e  for a given key.
517a0 20 49 66 20 73 6f 6d 65 74 68 69 6e 67 20 61 6c   If something al
517b0 72 65 61 64 79 0a 20 20 20 2a 20 65 78 69 73 74  ready.   * exist
517c0 73 20 74 68 65 72 65 2c 20 74 68 65 6e 20 69 74  s there, then it
517d0 20 62 65 63 6f 6d 65 73 20 61 6e 20 61 72 72 61   becomes an arra
517e0 79 20 63 6f 6e 74 61 69 6e 69 6e 67 20 62 6f 74  y containing bot
517f0 68 20 74 68 65 20 6f 6c 64 20 61 6e 64 20 6e 65  h the old and ne
51800 77 20 76 61 6c 75 65 2e 0a 20 20 20 2a 20 40 70  w value..   * @p
51810 61 72 61 6d 20 7b 20 4f 62 6a 65 63 74 20 7d 20  aram { Object } 
51820 6f 62 6a 20 2d 20 6f 62 6a 65 63 74 20 6f 6e 20  obj - object on 
51830 77 68 69 63 68 20 74 6f 20 73 65 74 20 74 68 65  which to set the
51840 20 70 72 6f 70 65 72 74 79 0a 20 20 20 2a 20 40   property.   * @
51850 70 61 72 61 6d 20 7b 20 53 74 72 69 6e 67 20 7d  param { String }
51860 20 6b 65 79 20 2d 20 70 72 6f 70 65 72 74 79 20   key - property 
51870 6e 61 6d 65 0a 20 20 20 2a 20 40 70 61 72 61 6d  name.   * @param
51880 20 7b 20 4f 62 6a 65 63 74 20 7d 20 76 61 6c 75   { Object } valu
51890 65 20 2d 20 74 68 65 20 76 61 6c 75 65 20 6f 66  e - the value of
518a0 20 74 68 65 20 70 72 6f 70 65 72 74 79 20 74 6f   the property to
518b0 20 62 65 20 73 65 74 0a 20 20 20 2a 20 40 70 61   be set.   * @pa
518c0 72 61 6d 20 7b 20 42 6f 6f 6c 65 61 6e 20 7d 20  ram { Boolean } 
518d0 65 6e 73 75 72 65 41 72 72 61 79 20 2d 20 65 6e  ensureArray - en
518e0 73 75 72 65 20 74 68 61 74 20 74 68 65 20 70 72  sure that the pr
518f0 6f 70 65 72 74 79 20 72 65 6d 61 69 6e 73 20 61  operty remains a
51900 6e 20 61 72 72 61 79 0a 20 20 20 2a 20 40 70 61  n array.   * @pa
51910 72 61 6d 20 7b 20 4e 75 6d 62 65 72 20 7d 20 69  ram { Number } i
51920 6e 64 65 78 20 2d 20 61 64 64 20 74 68 65 20 6e  ndex - add the n
51930 65 77 20 69 74 65 6d 20 69 6e 20 61 20 63 65 72  ew item in a cer
51940 74 61 69 6e 20 61 72 72 61 79 20 70 6f 73 69 74  tain array posit
51950 69 6f 6e 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63  ion.   */.  func
51960 74 69 6f 6e 20 61 72 72 61 79 69 73 68 41 64 64  tion arrayishAdd
51970 28 6f 62 6a 2c 20 6b 65 79 2c 20 76 61 6c 75 65  (obj, key, value
51980 2c 20 65 6e 73 75 72 65 41 72 72 61 79 2c 20 69  , ensureArray, i
51990 6e 64 65 78 29 20 7b 0a 20 20 20 20 76 61 72 20  ndex) {.    var 
519a0 64 65 73 74 20 3d 20 6f 62 6a 5b 6b 65 79 5d 3b  dest = obj[key];
519b0 0a 20 20 20 20 76 61 72 20 69 73 41 72 72 20 3d  .    var isArr =
519c0 20 69 73 41 72 72 61 79 28 64 65 73 74 29 3b 0a   isArray(dest);.
519d0 20 20 20 20 76 61 72 20 68 61 73 49 6e 64 65 78      var hasIndex
519e0 20 3d 20 21 69 73 55 6e 64 65 66 69 6e 65 64 28   = !isUndefined(
519f0 69 6e 64 65 78 29 3b 0a 0a 20 20 20 20 69 66 20  index);..    if 
51a00 28 64 65 73 74 20 26 26 20 64 65 73 74 20 3d 3d  (dest && dest ==
51a10 3d 20 76 61 6c 75 65 29 20 7b 20 72 65 74 75 72  = value) { retur
51a20 6e 20 7d 0a 0a 20 20 20 20 2f 2f 20 69 66 20 74  n }..    // if t
51a30 68 65 20 6b 65 79 20 77 61 73 20 6e 65 76 65 72  he key was never
51a40 20 73 65 74 2c 20 73 65 74 20 69 74 20 6f 6e 63   set, set it onc
51a50 65 0a 20 20 20 20 69 66 20 28 21 64 65 73 74 20  e.    if (!dest 
51a60 26 26 20 65 6e 73 75 72 65 41 72 72 61 79 29 20  && ensureArray) 
51a70 7b 20 6f 62 6a 5b 6b 65 79 5d 20 3d 20 5b 76 61  { obj[key] = [va
51a80 6c 75 65 5d 3b 20 7d 0a 20 20 20 20 65 6c 73 65  lue]; }.    else
51a90 20 69 66 20 28 21 64 65 73 74 29 20 7b 20 6f 62   if (!dest) { ob
51aa0 6a 5b 6b 65 79 5d 20 3d 20 76 61 6c 75 65 3b 20  j[key] = value; 
51ab0 7d 0a 20 20 20 20 2f 2f 20 69 66 20 69 74 20 77  }.    // if it w
51ac0 61 73 20 61 6e 20 61 72 72 61 79 20 61 6e 64 20  as an array and 
51ad0 6e 6f 74 20 79 65 74 20 73 65 74 0a 20 20 20 20  not yet set.    
51ae0 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 69 66 20  else {.      if 
51af0 28 69 73 41 72 72 29 20 7b 0a 20 20 20 20 20 20  (isArr) {.      
51b00 20 20 76 61 72 20 6f 6c 64 49 6e 64 65 78 20 3d    var oldIndex =
51b10 20 64 65 73 74 2e 69 6e 64 65 78 4f 66 28 76 61   dest.indexOf(va
51b20 6c 75 65 29 3b 0a 20 20 20 20 20 20 20 20 2f 2f  lue);.        //
51b30 20 74 68 69 73 20 69 74 65 6d 20 6e 65 76 65 72   this item never
51b40 20 63 68 61 6e 67 65 64 20 69 74 73 20 70 6f 73   changed its pos
51b50 69 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 69 66  ition.        if
51b60 20 28 6f 6c 64 49 6e 64 65 78 20 3d 3d 3d 20 69   (oldIndex === i
51b70 6e 64 65 78 29 20 7b 20 72 65 74 75 72 6e 20 7d  ndex) { return }
51b80 0a 20 20 20 20 20 20 20 20 2f 2f 20 72 65 6d 6f  .        // remo
51b90 76 65 20 74 68 65 20 69 74 65 6d 20 66 72 6f 6d  ve the item from
51ba0 20 69 74 73 20 6f 6c 64 20 70 6f 73 69 74 69 6f   its old positio
51bb0 6e 0a 20 20 20 20 20 20 20 20 69 66 20 28 6f 6c  n.        if (ol
51bc0 64 49 6e 64 65 78 20 21 3d 3d 20 2d 31 29 20 7b  dIndex !== -1) {
51bd0 20 64 65 73 74 2e 73 70 6c 69 63 65 28 6f 6c 64   dest.splice(old
51be0 49 6e 64 65 78 2c 20 31 29 3b 20 7d 0a 20 20 20  Index, 1); }.   
51bf0 20 20 20 20 20 2f 2f 20 6d 6f 76 65 20 6f 72 20       // move or 
51c00 61 64 64 20 74 68 65 20 69 74 65 6d 0a 20 20 20  add the item.   
51c10 20 20 20 20 20 69 66 20 28 68 61 73 49 6e 64 65       if (hasInde
51c20 78 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 64  x) {.          d
51c30 65 73 74 2e 73 70 6c 69 63 65 28 69 6e 64 65 78  est.splice(index
51c40 2c 20 30 2c 20 76 61 6c 75 65 29 3b 0a 20 20 20  , 0, value);.   
51c50 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20       } else {.  
51c60 20 20 20 20 20 20 20 20 64 65 73 74 2e 70 75 73          dest.pus
51c70 68 28 76 61 6c 75 65 29 3b 0a 20 20 20 20 20 20  h(value);.      
51c80 20 20 7d 0a 20 20 20 20 20 20 7d 20 65 6c 73 65    }.      } else
51c90 20 7b 20 6f 62 6a 5b 6b 65 79 5d 20 3d 20 5b 64   { obj[key] = [d
51ca0 65 73 74 2c 20 76 61 6c 75 65 5d 3b 20 7d 0a 20  est, value]; }. 
51cb0 20 20 20 7d 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a     }.  }..  /**.
51cc0 20 20 20 2a 20 44 65 74 65 63 74 20 74 68 65 20     * Detect the 
51cd0 74 61 67 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  tag implementati
51ce0 6f 6e 20 62 79 20 61 20 44 4f 4d 20 6e 6f 64 65  on by a DOM node
51cf0 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b  .   * @param   {
51d00 20 4f 62 6a 65 63 74 20 7d 20 64 6f 6d 20 2d 20   Object } dom - 
51d10 44 4f 4d 20 6e 6f 64 65 20 77 65 20 6e 65 65 64  DOM node we need
51d20 20 74 6f 20 70 61 72 73 65 20 74 6f 20 67 65 74   to parse to get
51d30 20 69 74 73 20 74 61 67 20 69 6d 70 6c 65 6d 65   its tag impleme
51d40 6e 74 61 74 69 6f 6e 0a 20 20 20 2a 20 40 72 65  ntation.   * @re
51d50 74 75 72 6e 73 20 7b 20 4f 62 6a 65 63 74 20 7d  turns { Object }
51d60 20 69 74 20 72 65 74 75 72 6e 73 20 61 6e 20 6f   it returns an o
51d70 62 6a 65 63 74 20 63 6f 6e 74 61 69 6e 69 6e 67  bject containing
51d80 20 74 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74   the implementat
51d90 69 6f 6e 20 6f 66 20 61 20 63 75 73 74 6f 6d 20  ion of a custom 
51da0 74 61 67 20 28 74 65 6d 70 6c 61 74 65 20 61 6e  tag (template an
51db0 64 20 62 6f 6f 74 20 66 75 6e 63 74 69 6f 6e 29  d boot function)
51dc0 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f  .   */.  functio
51dd0 6e 20 67 65 74 28 64 6f 6d 29 20 7b 0a 20 20 20  n get(dom) {.   
51de0 20 72 65 74 75 72 6e 20 64 6f 6d 2e 74 61 67 4e   return dom.tagN
51df0 61 6d 65 20 26 26 20 5f 5f 54 41 47 5f 49 4d 50  ame && __TAG_IMP
51e00 4c 5b 67 65 74 41 74 74 72 69 62 75 74 65 28 64  L[getAttribute(d
51e10 6f 6d 2c 20 49 53 5f 44 49 52 45 43 54 49 56 45  om, IS_DIRECTIVE
51e20 29 20 7c 7c 0a 20 20 20 20 20 20 67 65 74 41 74  ) ||.      getAt
51e30 74 72 69 62 75 74 65 28 64 6f 6d 2c 20 49 53 5f  tribute(dom, IS_
51e40 44 49 52 45 43 54 49 56 45 29 20 7c 7c 20 64 6f  DIRECTIVE) || do
51e50 6d 2e 74 61 67 4e 61 6d 65 2e 74 6f 4c 6f 77 65  m.tagName.toLowe
51e60 72 43 61 73 65 28 29 5d 0a 20 20 7d 0a 0a 20 20  rCase()].  }..  
51e70 2f 2a 2a 0a 20 20 20 2a 20 47 65 74 20 74 68 65  /**.   * Get the
51e80 20 74 61 67 20 6e 61 6d 65 20 6f 66 20 61 6e 79   tag name of any
51e90 20 44 4f 4d 20 6e 6f 64 65 0a 20 20 20 2a 20 40   DOM node.   * @
51ea0 70 61 72 61 6d 20 20 20 7b 20 4f 62 6a 65 63 74  param   { Object
51eb0 20 7d 20 64 6f 6d 20 2d 20 44 4f 4d 20 6e 6f 64   } dom - DOM nod
51ec0 65 20 77 65 20 77 61 6e 74 20 74 6f 20 70 61 72  e we want to par
51ed0 73 65 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20  se.   * @param  
51ee0 20 7b 20 42 6f 6f 6c 65 61 6e 20 7d 20 73 6b 69   { Boolean } ski
51ef0 70 44 61 74 61 49 73 20 2d 20 68 61 63 6b 20 74  pDataIs - hack t
51f00 6f 20 69 67 6e 6f 72 65 20 74 68 65 20 64 61 74  o ignore the dat
51f10 61 2d 69 73 20 61 74 74 72 69 62 75 74 65 20 77  a-is attribute w
51f20 68 65 6e 20 61 74 74 61 63 68 69 6e 67 20 74 6f  hen attaching to
51f30 20 70 61 72 65 6e 74 0a 20 20 20 2a 20 40 72 65   parent.   * @re
51f40 74 75 72 6e 73 20 7b 20 53 74 72 69 6e 67 20 7d  turns { String }
51f50 20 6e 61 6d 65 20 74 6f 20 69 64 65 6e 74 69 66   name to identif
51f60 79 20 74 68 69 73 20 64 6f 6d 20 6e 6f 64 65 20  y this dom node 
51f70 69 6e 20 72 69 6f 74 0a 20 20 20 2a 2f 0a 20 20  in riot.   */.  
51f80 66 75 6e 63 74 69 6f 6e 20 67 65 74 4e 61 6d 65  function getName
51f90 28 64 6f 6d 2c 20 73 6b 69 70 44 61 74 61 49 73  (dom, skipDataIs
51fa0 29 20 7b 0a 20 20 20 20 76 61 72 20 63 68 69 6c  ) {.    var chil
51fb0 64 20 3d 20 67 65 74 28 64 6f 6d 29 3b 0a 20 20  d = get(dom);.  
51fc0 20 20 76 61 72 20 6e 61 6d 65 64 54 61 67 20 3d    var namedTag =
51fd0 20 21 73 6b 69 70 44 61 74 61 49 73 20 26 26 20   !skipDataIs && 
51fe0 67 65 74 41 74 74 72 69 62 75 74 65 28 64 6f 6d  getAttribute(dom
51ff0 2c 20 49 53 5f 44 49 52 45 43 54 49 56 45 29 3b  , IS_DIRECTIVE);
52000 0a 20 20 20 20 72 65 74 75 72 6e 20 6e 61 6d 65  .    return name
52010 64 54 61 67 20 26 26 20 21 63 73 70 5f 74 6d 70  dTag && !csp_tmp
52020 6c 5f 31 2e 68 61 73 45 78 70 72 28 6e 61 6d 65  l_1.hasExpr(name
52030 64 54 61 67 29 20 3f 0a 20 20 20 20 20 20 6e 61  dTag) ?.      na
52040 6d 65 64 54 61 67 20 3a 20 63 68 69 6c 64 20 3f  medTag : child ?
52050 20 63 68 69 6c 64 2e 6e 61 6d 65 20 3a 20 64 6f   child.name : do
52060 6d 2e 74 61 67 4e 61 6d 65 2e 74 6f 4c 6f 77 65  m.tagName.toLowe
52070 72 43 61 73 65 28 29 0a 20 20 7d 0a 0a 20 20 2f  rCase().  }..  /
52080 2a 2a 0a 20 20 20 2a 20 52 65 74 75 72 6e 20 61  **.   * Return a
52090 20 74 65 6d 70 6f 72 61 72 79 20 63 6f 6e 74 65   temporary conte
520a0 78 74 20 63 6f 6e 74 61 69 6e 69 6e 67 20 61 6c  xt containing al
520b0 73 6f 20 74 68 65 20 70 61 72 65 6e 74 20 70 72  so the parent pr
520c0 6f 70 65 72 74 69 65 73 0a 20 20 20 2a 20 40 74  operties.   * @t
520d0 68 69 73 20 54 61 67 0a 20 20 20 2a 20 40 70 61  his Tag.   * @pa
520e0 72 61 6d 20 7b 20 54 61 67 20 7d 20 2d 20 74 65  ram { Tag } - te
520f0 6d 70 6f 72 61 72 79 20 74 61 67 20 63 6f 6e 74  mporary tag cont
52100 65 78 74 20 63 6f 6e 74 61 69 6e 69 6e 67 20 61  ext containing a
52110 6c 6c 20 74 68 65 20 70 61 72 65 6e 74 20 70 72  ll the parent pr
52120 6f 70 65 72 74 69 65 73 0a 20 20 20 2a 2f 0a 20  operties.   */. 
52130 20 66 75 6e 63 74 69 6f 6e 20 69 6e 68 65 72 69   function inheri
52140 74 50 61 72 65 6e 74 50 72 6f 70 73 28 29 20 7b  tParentProps() {
52150 0a 20 20 20 20 69 66 20 28 74 68 69 73 2e 70 61  .    if (this.pa
52160 72 65 6e 74 29 20 7b 20 72 65 74 75 72 6e 20 65  rent) { return e
52170 78 74 65 6e 64 28 63 72 65 61 74 65 28 74 68 69  xtend(create(thi
52180 73 29 2c 20 74 68 69 73 2e 70 61 72 65 6e 74 29  s), this.parent)
52190 20 7d 0a 20 20 20 20 72 65 74 75 72 6e 20 74 68   }.    return th
521a0 69 73 0a 20 20 7d 0a 0a 20 20 2f 2a 0a 20 20 20  is.  }..  /*.   
521b0 20 49 6e 63 6c 75 64 65 73 20 68 61 63 6b 73 20   Includes hacks 
521c0 6e 65 65 64 65 64 20 66 6f 72 20 74 68 65 20 49  needed for the I
521d0 6e 74 65 72 6e 65 74 20 45 78 70 6c 6f 72 65 72  nternet Explorer
521e0 20 76 65 72 73 69 6f 6e 20 39 20 61 6e 64 20 62   version 9 and b
521f0 65 6c 6f 77 0a 20 20 20 20 53 65 65 3a 20 68 74  elow.    See: ht
52200 74 70 3a 2f 2f 6b 61 6e 67 61 78 2e 67 69 74 68  tp://kangax.gith
52210 75 62 2e 69 6f 2f 63 6f 6d 70 61 74 2d 74 61 62  ub.io/compat-tab
52220 6c 65 2f 65 73 35 2f 23 69 65 38 0a 20 20 20 20  le/es5/#ie8.    
52230 20 20 20 20 20 68 74 74 70 3a 2f 2f 63 6f 64 65       http://code
52240 70 6c 61 6e 65 74 2e 69 6f 2f 64 72 6f 70 70 69  planet.io/droppi
52250 6e 67 2d 69 65 38 2f 0a 20 20 2a 2f 0a 0a 20 20  ng-ie8/.  */..  
52260 76 61 72 0a 20 20 20 20 72 65 48 61 73 59 69 65  var.    reHasYie
52270 6c 64 20 20 3d 20 2f 3c 79 69 65 6c 64 5c 62 2f  ld  = /<yield\b/
52280 69 2c 0a 20 20 20 20 72 65 59 69 65 6c 64 41 6c  i,.    reYieldAl
52290 6c 20 20 3d 20 2f 3c 79 69 65 6c 64 5c 73 2a 28  l  = /<yield\s*(
522a0 3f 3a 5c 2f 3e 7c 3e 28 5b 5c 53 5c 73 5d 2a 3f  ?:\/>|>([\S\s]*?
522b0 29 3c 5c 2f 79 69 65 6c 64 5c 73 2a 3e 7c 3e 29  )<\/yield\s*>|>)
522c0 2f 69 67 2c 0a 20 20 20 20 72 65 59 69 65 6c 64  /ig,.    reYield
522d0 53 72 63 20 20 3d 20 2f 3c 79 69 65 6c 64 5c 73  Src  = /<yield\s
522e0 2b 74 6f 3d 5b 27 22 5d 28 5b 5e 27 22 3e 5d 2a  +to=['"]([^'">]*
522f0 29 5b 27 22 5d 5c 73 2a 3e 28 5b 5c 53 5c 73 5d  )['"]\s*>([\S\s]
52300 2a 3f 29 3c 5c 2f 79 69 65 6c 64 5c 73 2a 3e 2f  *?)<\/yield\s*>/
52310 69 67 2c 0a 20 20 20 20 72 65 59 69 65 6c 64 44  ig,.    reYieldD
52320 65 73 74 20 3d 20 2f 3c 79 69 65 6c 64 5c 73 2b  est = /<yield\s+
52330 66 72 6f 6d 3d 5b 27 22 5d 3f 28 5b 2d 5c 77 5d  from=['"]?([-\w]
52340 2b 29 5b 27 22 5d 3f 5c 73 2a 28 3f 3a 5c 2f 3e  +)['"]?\s*(?:\/>
52350 7c 3e 28 5b 5c 53 5c 73 5d 2a 3f 29 3c 5c 2f 79  |>([\S\s]*?)<\/y
52360 69 65 6c 64 5c 73 2a 3e 29 2f 69 67 2c 0a 20 20  ield\s*>)/ig,.  
52370 20 20 72 6f 6f 74 45 6c 73 20 3d 20 7b 20 74 72    rootEls = { tr
52380 3a 20 27 74 62 6f 64 79 27 2c 20 74 68 3a 20 27  : 'tbody', th: '
52390 74 72 27 2c 20 74 64 3a 20 27 74 72 27 2c 20 63  tr', td: 'tr', c
523a0 6f 6c 3a 20 27 63 6f 6c 67 72 6f 75 70 27 20 7d  ol: 'colgroup' }
523b0 2c 0a 20 20 20 20 74 62 6c 54 61 67 73 20 3d 20  ,.    tblTags = 
523c0 49 45 5f 56 45 52 53 49 4f 4e 20 26 26 20 49 45  IE_VERSION && IE
523d0 5f 56 45 52 53 49 4f 4e 20 3c 20 31 30 20 3f 20  _VERSION < 10 ? 
523e0 52 45 5f 53 50 45 43 49 41 4c 5f 54 41 47 53 20  RE_SPECIAL_TAGS 
523f0 3a 20 52 45 5f 53 50 45 43 49 41 4c 5f 54 41 47  : RE_SPECIAL_TAG
52400 53 5f 4e 4f 5f 4f 50 54 49 4f 4e 2c 0a 20 20 20  S_NO_OPTION,.   
52410 20 47 45 4e 45 52 49 43 20 3d 20 27 64 69 76 27   GENERIC = 'div'
52420 2c 0a 20 20 20 20 53 56 47 20 3d 20 27 73 76 67  ,.    SVG = 'svg
52430 27 3b 0a 0a 0a 20 20 2f 2a 0a 20 20 20 20 43 72  ';...  /*.    Cr
52440 65 61 74 65 73 20 74 68 65 20 72 6f 6f 74 20 65  eates the root e
52450 6c 65 6d 65 6e 74 20 66 6f 72 20 74 61 62 6c 65  lement for table
52460 20 6f 72 20 73 65 6c 65 63 74 20 63 68 69 6c 64   or select child
52470 20 65 6c 65 6d 65 6e 74 73 3a 0a 20 20 20 20 74   elements:.    t
52480 72 2f 74 68 2f 74 64 2f 74 68 65 61 64 2f 74 66  r/th/td/thead/tf
52490 6f 6f 74 2f 74 62 6f 64 79 2f 63 61 70 74 69 6f  oot/tbody/captio
524a0 6e 2f 63 6f 6c 2f 63 6f 6c 67 72 6f 75 70 2f 6f  n/col/colgroup/o
524b0 70 74 69 6f 6e 2f 6f 70 74 67 72 6f 75 70 0a 20  ption/optgroup. 
524c0 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 73   */.  function s
524d0 70 65 63 69 61 6c 54 61 67 73 28 65 6c 2c 20 74  pecialTags(el, t
524e0 6d 70 6c 2c 20 74 61 67 4e 61 6d 65 29 20 7b 0a  mpl, tagName) {.
524f0 0a 20 20 20 20 76 61 72 0a 20 20 20 20 20 20 73  .    var.      s
52500 65 6c 65 63 74 20 3d 20 74 61 67 4e 61 6d 65 5b  elect = tagName[
52510 30 5d 20 3d 3d 3d 20 27 6f 27 2c 0a 20 20 20 20  0] === 'o',.    
52520 20 20 70 61 72 65 6e 74 20 3d 20 73 65 6c 65 63    parent = selec
52530 74 20 3f 20 27 73 65 6c 65 63 74 3e 27 20 3a 20  t ? 'select>' : 
52540 27 74 61 62 6c 65 3e 27 3b 0a 0a 20 20 20 20 2f  'table>';..    /
52550 2f 20 74 72 69 6d 28 29 20 69 73 20 69 6d 70 6f  / trim() is impo
52560 72 74 61 6e 74 20 68 65 72 65 2c 20 74 68 69 73  rtant here, this
52570 20 65 6e 73 75 72 65 73 20 77 65 20 64 6f 6e 27   ensures we don'
52580 74 20 68 61 76 65 20 61 72 74 69 66 61 63 74 73  t have artifacts
52590 2c 0a 20 20 20 20 2f 2f 20 73 6f 20 77 65 20 63  ,.    // so we c
525a0 61 6e 20 63 68 65 63 6b 20 69 66 20 77 65 20 68  an check if we h
525b0 61 76 65 20 6f 6e 6c 79 20 6f 6e 65 20 65 6c 65  ave only one ele
525c0 6d 65 6e 74 20 69 6e 73 69 64 65 20 74 68 65 20  ment inside the 
525d0 70 61 72 65 6e 74 0a 20 20 20 20 65 6c 2e 69 6e  parent.    el.in
525e0 6e 65 72 48 54 4d 4c 20 3d 20 27 3c 27 20 2b 20  nerHTML = '<' + 
525f0 70 61 72 65 6e 74 20 2b 20 74 6d 70 6c 2e 74 72  parent + tmpl.tr
52600 69 6d 28 29 20 2b 20 27 3c 2f 27 20 2b 20 70 61  im() + '</' + pa
52610 72 65 6e 74 3b 0a 20 20 20 20 70 61 72 65 6e 74  rent;.    parent
52620 20 3d 20 65 6c 2e 66 69 72 73 74 43 68 69 6c 64   = el.firstChild
52630 3b 0a 0a 20 20 20 20 2f 2f 20 72 65 74 75 72 6e  ;..    // return
52640 73 20 74 68 65 20 69 6d 6d 65 64 69 61 74 65 20  s the immediate 
52650 70 61 72 65 6e 74 20 69 66 20 74 72 2f 74 68 2f  parent if tr/th/
52660 74 64 2f 63 6f 6c 20 69 73 20 74 68 65 20 6f 6e  td/col is the on
52670 6c 79 20 65 6c 65 6d 65 6e 74 2c 20 69 66 20 6e  ly element, if n
52680 6f 74 0a 20 20 20 20 2f 2f 20 72 65 74 75 72 6e  ot.    // return
52690 73 20 74 68 65 20 77 68 6f 6c 65 20 74 72 65 65  s the whole tree
526a0 2c 20 61 73 20 74 68 69 73 20 63 61 6e 20 69 6e  , as this can in
526b0 63 6c 75 64 65 20 61 64 64 69 74 69 6f 6e 61 6c  clude additional
526c0 20 65 6c 65 6d 65 6e 74 73 0a 20 20 20 20 2f 2a   elements.    /*
526d0 20 69 73 74 61 6e 62 75 6c 20 69 67 6e 6f 72 65   istanbul ignore
526e0 20 6e 65 78 74 20 2a 2f 0a 20 20 20 20 69 66 20   next */.    if 
526f0 28 73 65 6c 65 63 74 29 20 7b 0a 20 20 20 20 20  (select) {.     
52700 20 70 61 72 65 6e 74 2e 73 65 6c 65 63 74 65 64   parent.selected
52710 49 6e 64 65 78 20 3d 20 2d 31 3b 20 20 2f 2f 20  Index = -1;  // 
52720 66 6f 72 20 49 45 39 2c 20 63 6f 6d 70 61 74 69  for IE9, compati
52730 62 6c 65 20 77 2f 63 75 72 72 65 6e 74 20 72 69  ble w/current ri
52740 6f 74 20 62 65 68 61 76 69 6f 72 0a 20 20 20 20  ot behavior.    
52750 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 2f  } else {.      /
52760 2f 20 61 76 6f 69 64 73 20 69 6e 73 65 72 74 69  / avoids inserti
52770 6f 6e 20 6f 66 20 63 6f 69 6e 74 61 69 6e 65 72  on of cointainer
52780 20 69 6e 73 69 64 65 20 63 6f 6e 74 61 69 6e 65   inside containe
52790 72 20 28 65 78 3a 20 74 62 6f 64 79 20 69 6e 73  r (ex: tbody ins
527a0 69 64 65 20 74 62 6f 64 79 29 0a 20 20 20 20 20  ide tbody).     
527b0 20 76 61 72 20 74 6e 61 6d 65 20 3d 20 72 6f 6f   var tname = roo
527c0 74 45 6c 73 5b 74 61 67 4e 61 6d 65 5d 3b 0a 20  tEls[tagName];. 
527d0 20 20 20 20 20 69 66 20 28 74 6e 61 6d 65 20 26       if (tname &
527e0 26 20 70 61 72 65 6e 74 2e 63 68 69 6c 64 45 6c  & parent.childEl
527f0 65 6d 65 6e 74 43 6f 75 6e 74 20 3d 3d 3d 20 31  ementCount === 1
52800 29 20 7b 20 70 61 72 65 6e 74 20 3d 20 24 28 74  ) { parent = $(t
52810 6e 61 6d 65 2c 20 70 61 72 65 6e 74 29 3b 20 7d  name, parent); }
52820 0a 20 20 20 20 7d 0a 20 20 20 20 72 65 74 75 72  .    }.    retur
52830 6e 20 70 61 72 65 6e 74 0a 20 20 7d 0a 0a 20 20  n parent.  }..  
52840 2f 2a 0a 20 20 20 20 52 65 70 6c 61 63 65 20 74  /*.    Replace t
52850 68 65 20 79 69 65 6c 64 20 74 61 67 20 66 72 6f  he yield tag fro
52860 6d 20 61 6e 79 20 74 61 67 20 74 65 6d 70 6c 61  m any tag templa
52870 74 65 20 77 69 74 68 20 74 68 65 20 69 6e 6e 65  te with the inne
52880 72 48 54 4d 4c 20 6f 66 20 74 68 65 0a 20 20 20  rHTML of the.   
52890 20 6f 72 69 67 69 6e 61 6c 20 74 61 67 20 69 6e   original tag in
528a0 20 74 68 65 20 70 61 67 65 0a 20 20 2a 2f 0a 20   the page.  */. 
528b0 20 66 75 6e 63 74 69 6f 6e 20 72 65 70 6c 61 63   function replac
528c0 65 59 69 65 6c 64 28 74 6d 70 6c 2c 20 68 74 6d  eYield(tmpl, htm
528d0 6c 29 20 7b 0a 20 20 20 20 2f 2f 20 64 6f 20 6e  l) {.    // do n
528e0 6f 74 68 69 6e 67 20 69 66 20 6e 6f 20 79 69 65  othing if no yie
528f0 6c 64 0a 20 20 20 20 69 66 20 28 21 72 65 48 61  ld.    if (!reHa
52900 73 59 69 65 6c 64 2e 74 65 73 74 28 74 6d 70 6c  sYield.test(tmpl
52910 29 29 20 7b 20 72 65 74 75 72 6e 20 74 6d 70 6c  )) { return tmpl
52920 20 7d 0a 0a 20 20 20 20 2f 2f 20 62 65 20 63 61   }..    // be ca
52930 72 65 66 75 6c 20 77 69 74 68 20 23 31 33 34 33  reful with #1343
52940 20 2d 20 73 74 72 69 6e 67 20 6f 6e 20 74 68 65   - string on the
52950 20 73 6f 75 72 63 65 20 68 61 76 69 6e 67 20 60   source having `
52960 24 31 60 0a 20 20 20 20 76 61 72 20 73 72 63 20  $1`.    var src 
52970 3d 20 7b 7d 3b 0a 0a 20 20 20 20 68 74 6d 6c 20  = {};..    html 
52980 3d 20 68 74 6d 6c 20 26 26 20 68 74 6d 6c 2e 72  = html && html.r
52990 65 70 6c 61 63 65 28 72 65 59 69 65 6c 64 53 72  eplace(reYieldSr
529a0 63 2c 20 66 75 6e 63 74 69 6f 6e 20 28 5f 2c 20  c, function (_, 
529b0 72 65 66 2c 20 74 65 78 74 29 20 7b 0a 20 20 20  ref, text) {.   
529c0 20 20 20 73 72 63 5b 72 65 66 5d 20 3d 20 73 72     src[ref] = sr
529d0 63 5b 72 65 66 5d 20 7c 7c 20 74 65 78 74 3b 20  c[ref] || text; 
529e0 20 20 2f 2f 20 70 72 65 73 65 72 76 65 20 66 69    // preserve fi
529f0 72 73 74 20 64 65 66 69 6e 69 74 69 6f 6e 0a 20  rst definition. 
52a00 20 20 20 20 20 72 65 74 75 72 6e 20 27 27 0a 20       return ''. 
52a10 20 20 20 7d 29 2e 74 72 69 6d 28 29 3b 0a 0a 20     }).trim();.. 
52a20 20 20 20 72 65 74 75 72 6e 20 74 6d 70 6c 0a 20     return tmpl. 
52a30 20 20 20 20 20 2e 72 65 70 6c 61 63 65 28 72 65       .replace(re
52a40 59 69 65 6c 64 44 65 73 74 2c 20 66 75 6e 63 74  YieldDest, funct
52a50 69 6f 6e 20 28 5f 2c 20 72 65 66 2c 20 64 65 66  ion (_, ref, def
52a60 29 20 7b 20 20 2f 2f 20 79 69 65 6c 64 20 77 69  ) {  // yield wi
52a70 74 68 20 66 72 6f 6d 20 2d 20 74 6f 20 61 74 74  th from - to att
52a80 72 73 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  rs.        retur
52a90 6e 20 73 72 63 5b 72 65 66 5d 20 7c 7c 20 64 65  n src[ref] || de
52aa0 66 20 7c 7c 20 27 27 0a 20 20 20 20 20 20 7d 29  f || ''.      })
52ab0 0a 20 20 20 20 20 20 2e 72 65 70 6c 61 63 65 28  .      .replace(
52ac0 72 65 59 69 65 6c 64 41 6c 6c 2c 20 66 75 6e 63  reYieldAll, func
52ad0 74 69 6f 6e 20 28 5f 2c 20 64 65 66 29 20 7b 20  tion (_, def) { 
52ae0 20 20 20 20 20 20 20 2f 2f 20 79 69 65 6c 64 20         // yield 
52af0 77 69 74 68 6f 75 74 20 61 6e 79 20 22 66 72 6f  without any "fro
52b00 6d 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  m".        retur
52b10 6e 20 68 74 6d 6c 20 7c 7c 20 64 65 66 20 7c 7c  n html || def ||
52b20 20 27 27 0a 20 20 20 20 20 20 7d 29 0a 20 20 7d   ''.      }).  }
52b30 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 43 72 65  ..  /**.   * Cre
52b40 61 74 65 73 20 61 20 44 4f 4d 20 65 6c 65 6d 65  ates a DOM eleme
52b50 6e 74 20 74 6f 20 77 72 61 70 20 74 68 65 20 67  nt to wrap the g
52b60 69 76 65 6e 20 63 6f 6e 74 65 6e 74 2e 20 4e 6f  iven content. No
52b70 72 6d 61 6c 6c 79 20 61 6e 20 60 44 49 56 60 2c  rmally an `DIV`,
52b80 20 62 75 74 20 63 61 6e 20 62 65 0a 20 20 20 2a   but can be.   *
52b90 20 61 6c 73 6f 20 61 20 60 54 41 42 4c 45 60 2c   also a `TABLE`,
52ba0 20 60 53 45 4c 45 43 54 60 2c 20 60 54 42 4f 44   `SELECT`, `TBOD
52bb0 59 60 2c 20 60 54 52 60 2c 20 6f 72 20 60 43 4f  Y`, `TR`, or `CO
52bc0 4c 47 52 4f 55 50 60 20 65 6c 65 6d 65 6e 74 2e  LGROUP` element.
52bd0 0a 20 20 20 2a 0a 20 20 20 2a 20 40 70 61 72 61  .   *.   * @para
52be0 6d 20 20 20 7b 20 53 74 72 69 6e 67 20 7d 20 74  m   { String } t
52bf0 6d 70 6c 20 20 2d 20 54 68 65 20 74 65 6d 70 6c  mpl  - The templ
52c00 61 74 65 20 63 6f 6d 69 6e 67 20 66 72 6f 6d 20  ate coming from 
52c10 74 68 65 20 63 75 73 74 6f 6d 20 74 61 67 20 64  the custom tag d
52c20 65 66 69 6e 69 74 69 6f 6e 0a 20 20 20 2a 20 40  efinition.   * @
52c30 70 61 72 61 6d 20 20 20 7b 20 53 74 72 69 6e 67  param   { String
52c40 20 7d 20 68 74 6d 6c 20 2d 20 48 54 4d 4c 20 63   } html - HTML c
52c50 6f 6e 74 65 6e 74 20 74 68 61 74 20 63 6f 6d 65  ontent that come
52c60 73 20 66 72 6f 6d 20 74 68 65 20 44 4f 4d 20 65  s from the DOM e
52c70 6c 65 6d 65 6e 74 20 77 68 65 72 65 20 79 6f 75  lement where you
52c80 0a 20 20 20 2a 20 20 20 20 20 20 20 20 20 20 20  .   *           
52c90 77 69 6c 6c 20 6d 6f 75 6e 74 20 74 68 65 20 74  will mount the t
52ca0 61 67 2c 20 6d 6f 73 74 6c 79 20 74 68 65 20 6f  ag, mostly the o
52cb0 72 69 67 69 6e 61 6c 20 74 61 67 20 69 6e 20 74  riginal tag in t
52cc0 68 65 20 70 61 67 65 0a 20 20 20 2a 20 40 70 61  he page.   * @pa
52cd0 72 61 6d 20 20 20 7b 20 42 6f 6f 6c 65 61 6e 20  ram   { Boolean 
52ce0 7d 20 69 73 53 76 67 20 2d 20 74 72 75 65 20 69  } isSvg - true i
52cf0 66 20 74 68 65 20 72 6f 6f 74 20 6e 6f 64 65 20  f the root node 
52d00 69 73 20 61 6e 20 73 76 67 0a 20 20 20 2a 20 40  is an svg.   * @
52d10 72 65 74 75 72 6e 73 20 7b 20 48 54 4d 4c 45 6c  returns { HTMLEl
52d20 65 6d 65 6e 74 20 7d 20 44 4f 4d 20 65 6c 65 6d  ement } DOM elem
52d30 65 6e 74 20 77 69 74 68 20 5f 74 6d 70 6c 5f 20  ent with _tmpl_ 
52d40 6d 65 72 67 65 64 20 74 68 72 6f 75 67 68 20 60  merged through `
52d50 59 49 45 4c 44 60 20 77 69 74 68 20 74 68 65 20  YIELD` with the 
52d60 5f 68 74 6d 6c 5f 2e 0a 20 20 20 2a 2f 0a 20 20  _html_..   */.  
52d70 66 75 6e 63 74 69 6f 6e 20 6d 6b 64 6f 6d 28 74  function mkdom(t
52d80 6d 70 6c 2c 20 68 74 6d 6c 2c 20 69 73 53 76 67  mpl, html, isSvg
52d90 29 20 7b 0a 20 20 20 20 76 61 72 20 6d 61 74 63  ) {.    var matc
52da0 68 20 20 20 3d 20 74 6d 70 6c 20 26 26 20 74 6d  h   = tmpl && tm
52db0 70 6c 2e 6d 61 74 63 68 28 2f 5e 5c 73 2a 3c 28  pl.match(/^\s*<(
52dc0 5b 2d 5c 77 5d 2b 29 2f 29 3b 0a 20 20 20 20 76  [-\w]+)/);.    v
52dd0 61 72 20 20 74 61 67 4e 61 6d 65 20 3d 20 6d 61  ar  tagName = ma
52de0 74 63 68 20 26 26 20 6d 61 74 63 68 5b 31 5d 2e  tch && match[1].
52df0 74 6f 4c 6f 77 65 72 43 61 73 65 28 29 3b 0a 20  toLowerCase();. 
52e00 20 20 20 76 61 72 20 65 6c 20 3d 20 6d 61 6b 65     var el = make
52e10 45 6c 65 6d 65 6e 74 28 69 73 53 76 67 20 3f 20  Element(isSvg ? 
52e20 53 56 47 20 3a 20 47 45 4e 45 52 49 43 29 3b 0a  SVG : GENERIC);.
52e30 0a 20 20 20 20 2f 2f 20 72 65 70 6c 61 63 65 20  .    // replace 
52e40 61 6c 6c 20 74 68 65 20 79 69 65 6c 64 20 74 61  all the yield ta
52e50 67 73 20 77 69 74 68 20 74 68 65 20 74 61 67 20  gs with the tag 
52e60 69 6e 6e 65 72 20 68 74 6d 6c 0a 20 20 20 20 74  inner html.    t
52e70 6d 70 6c 20 3d 20 72 65 70 6c 61 63 65 59 69 65  mpl = replaceYie
52e80 6c 64 28 74 6d 70 6c 2c 20 68 74 6d 6c 29 3b 0a  ld(tmpl, html);.
52e90 0a 20 20 20 20 2f 2a 20 69 73 74 61 6e 62 75 6c  .    /* istanbul
52ea0 20 69 67 6e 6f 72 65 20 6e 65 78 74 20 2a 2f 0a   ignore next */.
52eb0 20 20 20 20 69 66 20 28 74 62 6c 54 61 67 73 2e      if (tblTags.
52ec0 74 65 73 74 28 74 61 67 4e 61 6d 65 29 29 0a 20  test(tagName)). 
52ed0 20 20 20 20 20 7b 20 65 6c 20 3d 20 73 70 65 63       { el = spec
52ee0 69 61 6c 54 61 67 73 28 65 6c 2c 20 74 6d 70 6c  ialTags(el, tmpl
52ef0 2c 20 74 61 67 4e 61 6d 65 29 3b 20 7d 0a 20 20  , tagName); }.  
52f00 20 20 65 6c 73 65 0a 20 20 20 20 20 20 7b 20 73    else.      { s
52f10 65 74 49 6e 6e 65 72 48 54 4d 4c 28 65 6c 2c 20  etInnerHTML(el, 
52f20 74 6d 70 6c 2c 20 69 73 53 76 67 29 3b 20 7d 0a  tmpl, isSvg); }.
52f30 0a 20 20 20 20 72 65 74 75 72 6e 20 65 6c 0a 20  .    return el. 
52f40 20 7d 0a 0a 20 20 76 61 72 20 45 56 45 4e 54 5f   }..  var EVENT_
52f50 41 54 54 52 5f 52 45 20 3d 20 2f 5e 6f 6e 2f 3b  ATTR_RE = /^on/;
52f60 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 54 72 75  ..  /**.   * Tru
52f70 65 20 69 66 20 74 68 65 20 65 76 65 6e 74 20 61  e if the event a
52f80 74 74 72 69 62 75 74 65 20 73 74 61 72 74 73 20  ttribute starts 
52f90 77 69 74 68 20 27 6f 6e 27 0a 20 20 20 2a 20 40  with 'on'.   * @
52fa0 70 61 72 61 6d 20 20 20 7b 20 53 74 72 69 6e 67  param   { String
52fb0 20 7d 20 61 74 74 72 69 62 75 74 65 20 2d 20 65   } attribute - e
52fc0 76 65 6e 74 20 61 74 74 72 69 62 75 74 65 0a 20  vent attribute. 
52fd0 20 20 2a 20 40 72 65 74 75 72 6e 73 20 7b 20 42    * @returns { B
52fe0 6f 6f 6c 65 61 6e 20 7d 0a 20 20 20 2a 2f 0a 20  oolean }.   */. 
52ff0 20 66 75 6e 63 74 69 6f 6e 20 69 73 45 76 65 6e   function isEven
53000 74 41 74 74 72 69 62 75 74 65 28 61 74 74 72 69  tAttribute(attri
53010 62 75 74 65 29 20 7b 0a 20 20 20 20 72 65 74 75  bute) {.    retu
53020 72 6e 20 45 56 45 4e 54 5f 41 54 54 52 5f 52 45  rn EVENT_ATTR_RE
53030 2e 74 65 73 74 28 61 74 74 72 69 62 75 74 65 29  .test(attribute)
53040 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a  .  }..  /**.   *
53050 20 4c 6f 6f 70 20 62 61 63 6b 77 61 72 64 20 61   Loop backward a
53060 6c 6c 20 74 68 65 20 70 61 72 65 6e 74 73 20 74  ll the parents t
53070 72 65 65 20 74 6f 20 64 65 74 65 63 74 20 74 68  ree to detect th
53080 65 20 66 69 72 73 74 20 63 75 73 74 6f 6d 20 70  e first custom p
53090 61 72 65 6e 74 20 74 61 67 0a 20 20 20 2a 20 40  arent tag.   * @
530a0 70 61 72 61 6d 20 20 20 7b 20 4f 62 6a 65 63 74  param   { Object
530b0 20 7d 20 74 61 67 20 2d 20 61 20 54 61 67 20 69   } tag - a Tag i
530c0 6e 73 74 61 6e 63 65 0a 20 20 20 2a 20 40 72 65  nstance.   * @re
530d0 74 75 72 6e 73 20 7b 20 4f 62 6a 65 63 74 20 7d  turns { Object }
530e0 20 74 68 65 20 69 6e 73 74 61 6e 63 65 20 6f 66   the instance of
530f0 20 74 68 65 20 66 69 72 73 74 20 63 75 73 74 6f   the first custo
53100 6d 20 70 61 72 65 6e 74 20 74 61 67 20 66 6f 75  m parent tag fou
53110 6e 64 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74  nd.   */.  funct
53120 69 6f 6e 20 67 65 74 49 6d 6d 65 64 69 61 74 65  ion getImmediate
53130 43 75 73 74 6f 6d 50 61 72 65 6e 74 28 74 61 67  CustomParent(tag
53140 29 20 7b 0a 20 20 20 20 76 61 72 20 70 74 61 67  ) {.    var ptag
53150 20 3d 20 74 61 67 3b 0a 20 20 20 20 77 68 69 6c   = tag;.    whil
53160 65 20 28 70 74 61 67 2e 5f 5f 2e 69 73 41 6e 6f  e (ptag.__.isAno
53170 6e 79 6d 6f 75 73 29 20 7b 0a 20 20 20 20 20 20  nymous) {.      
53180 69 66 20 28 21 70 74 61 67 2e 70 61 72 65 6e 74  if (!ptag.parent
53190 29 20 7b 20 62 72 65 61 6b 20 7d 0a 20 20 20 20  ) { break }.    
531a0 20 20 70 74 61 67 20 3d 20 70 74 61 67 2e 70 61    ptag = ptag.pa
531b0 72 65 6e 74 3b 0a 20 20 20 20 7d 0a 20 20 20 20  rent;.    }.    
531c0 72 65 74 75 72 6e 20 70 74 61 67 0a 20 20 7d 0a  return ptag.  }.
531d0 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 54 72 69 67  .  /**.   * Trig
531e0 67 65 72 20 44 4f 4d 20 65 76 65 6e 74 73 0a 20  ger DOM events. 
531f0 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 48    * @param   { H
53200 54 4d 4c 45 6c 65 6d 65 6e 74 20 7d 20 64 6f 6d  TMLElement } dom
53210 20 2d 20 64 6f 6d 20 65 6c 65 6d 65 6e 74 20 74   - dom element t
53220 61 72 67 65 74 20 6f 66 20 74 68 65 20 65 76 65  arget of the eve
53230 6e 74 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20  nt.   * @param  
53240 20 7b 20 46 75 6e 63 74 69 6f 6e 20 7d 20 68 61   { Function } ha
53250 6e 64 6c 65 72 20 2d 20 75 73 65 72 20 66 75 6e  ndler - user fun
53260 63 74 69 6f 6e 0a 20 20 20 2a 20 40 70 61 72 61  ction.   * @para
53270 6d 20 20 20 7b 20 4f 62 6a 65 63 74 20 7d 20 65  m   { Object } e
53280 20 2d 20 65 76 65 6e 74 20 6f 62 6a 65 63 74 0a   - event object.
53290 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e     */.  function
532a0 20 68 61 6e 64 6c 65 45 76 65 6e 74 28 64 6f 6d   handleEvent(dom
532b0 2c 20 68 61 6e 64 6c 65 72 2c 20 65 29 20 7b 0a  , handler, e) {.
532c0 20 20 20 20 76 61 72 20 70 74 61 67 20 3d 20 74      var ptag = t
532d0 68 69 73 2e 5f 5f 2e 70 61 72 65 6e 74 3b 0a 20  his.__.parent;. 
532e0 20 20 20 76 61 72 20 69 74 65 6d 20 3d 20 74 68     var item = th
532f0 69 73 2e 5f 5f 2e 69 74 65 6d 3b 0a 0a 20 20 20  is.__.item;..   
53300 20 69 66 20 28 21 69 74 65 6d 29 0a 20 20 20 20   if (!item).    
53310 20 20 7b 20 77 68 69 6c 65 20 28 70 74 61 67 20    { while (ptag 
53320 26 26 20 21 69 74 65 6d 29 20 7b 0a 20 20 20 20  && !item) {.    
53330 20 20 20 20 69 74 65 6d 20 3d 20 70 74 61 67 2e      item = ptag.
53340 5f 5f 2e 69 74 65 6d 3b 0a 20 20 20 20 20 20 20  __.item;.       
53350 20 70 74 61 67 20 3d 20 70 74 61 67 2e 5f 5f 2e   ptag = ptag.__.
53360 70 61 72 65 6e 74 3b 0a 20 20 20 20 20 20 7d 20  parent;.      } 
53370 7d 0a 0a 20 20 20 20 2f 2f 20 6f 76 65 72 72 69  }..    // overri
53380 64 65 20 74 68 65 20 65 76 65 6e 74 20 70 72 6f  de the event pro
53390 70 65 72 74 69 65 73 0a 20 20 20 20 2f 2a 20 69  perties.    /* i
533a0 73 74 61 6e 62 75 6c 20 69 67 6e 6f 72 65 20 6e  stanbul ignore n
533b0 65 78 74 20 2a 2f 0a 20 20 20 20 69 66 20 28 69  ext */.    if (i
533c0 73 57 72 69 74 61 62 6c 65 28 65 2c 20 27 63 75  sWritable(e, 'cu
533d0 72 72 65 6e 74 54 61 72 67 65 74 27 29 29 20 7b  rrentTarget')) {
533e0 20 65 2e 63 75 72 72 65 6e 74 54 61 72 67 65 74   e.currentTarget
533f0 20 3d 20 64 6f 6d 3b 20 7d 0a 20 20 20 20 2f 2a   = dom; }.    /*
53400 20 69 73 74 61 6e 62 75 6c 20 69 67 6e 6f 72 65   istanbul ignore
53410 20 6e 65 78 74 20 2a 2f 0a 20 20 20 20 69 66 20   next */.    if 
53420 28 69 73 57 72 69 74 61 62 6c 65 28 65 2c 20 27  (isWritable(e, '
53430 74 61 72 67 65 74 27 29 29 20 7b 20 65 2e 74 61  target')) { e.ta
53440 72 67 65 74 20 3d 20 65 2e 73 72 63 45 6c 65 6d  rget = e.srcElem
53450 65 6e 74 3b 20 7d 0a 20 20 20 20 2f 2a 20 69 73  ent; }.    /* is
53460 74 61 6e 62 75 6c 20 69 67 6e 6f 72 65 20 6e 65  tanbul ignore ne
53470 78 74 20 2a 2f 0a 20 20 20 20 69 66 20 28 69 73  xt */.    if (is
53480 57 72 69 74 61 62 6c 65 28 65 2c 20 27 77 68 69  Writable(e, 'whi
53490 63 68 27 29 29 20 7b 20 65 2e 77 68 69 63 68 20  ch')) { e.which 
534a0 3d 20 65 2e 63 68 61 72 43 6f 64 65 20 7c 7c 20  = e.charCode || 
534b0 65 2e 6b 65 79 43 6f 64 65 3b 20 7d 0a 0a 20 20  e.keyCode; }..  
534c0 20 20 65 2e 69 74 65 6d 20 3d 20 69 74 65 6d 3b    e.item = item;
534d0 0a 0a 20 20 20 20 68 61 6e 64 6c 65 72 2e 63 61  ..    handler.ca
534e0 6c 6c 28 74 68 69 73 2c 20 65 29 3b 0a 0a 20 20  ll(this, e);..  
534f0 20 20 2f 2f 20 61 76 6f 69 64 20 61 75 74 6f 20    // avoid auto 
53500 75 70 64 61 74 65 73 0a 20 20 20 20 69 66 20 28  updates.    if (
53510 21 73 65 74 74 69 6e 67 73 2e 61 75 74 6f 55 70  !settings.autoUp
53520 64 61 74 65 29 20 7b 20 72 65 74 75 72 6e 20 7d  date) { return }
53530 0a 0a 20 20 20 20 69 66 20 28 21 65 2e 70 72 65  ..    if (!e.pre
53540 76 65 6e 74 55 70 64 61 74 65 29 20 7b 0a 20 20  ventUpdate) {.  
53550 20 20 20 20 76 61 72 20 70 20 3d 20 67 65 74 49      var p = getI
53560 6d 6d 65 64 69 61 74 65 43 75 73 74 6f 6d 50 61  mmediateCustomPa
53570 72 65 6e 74 28 74 68 69 73 29 3b 0a 20 20 20 20  rent(this);.    
53580 20 20 2f 2f 20 66 69 78 65 73 20 23 32 30 38 33    // fixes #2083
53590 0a 20 20 20 20 20 20 69 66 20 28 70 2e 69 73 4d  .      if (p.isM
535a0 6f 75 6e 74 65 64 29 20 7b 20 70 2e 75 70 64 61  ounted) { p.upda
535b0 74 65 28 29 3b 20 7d 0a 20 20 20 20 7d 0a 20 20  te(); }.    }.  
535c0 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 41 74  }..  /**.   * At
535d0 74 61 63 68 20 61 6e 20 65 76 65 6e 74 20 74 6f  tach an event to
535e0 20 61 20 44 4f 4d 20 6e 6f 64 65 0a 20 20 20 2a   a DOM node.   *
535f0 20 40 70 61 72 61 6d 20 7b 20 53 74 72 69 6e 67   @param { String
53600 20 7d 20 6e 61 6d 65 20 2d 20 65 76 65 6e 74 20   } name - event 
53610 6e 61 6d 65 0a 20 20 20 2a 20 40 70 61 72 61 6d  name.   * @param
53620 20 7b 20 46 75 6e 63 74 69 6f 6e 20 7d 20 68 61   { Function } ha
53630 6e 64 6c 65 72 20 2d 20 65 76 65 6e 74 20 63 61  ndler - event ca
53640 6c 6c 62 61 63 6b 0a 20 20 20 2a 20 40 70 61 72  llback.   * @par
53650 61 6d 20 7b 20 4f 62 6a 65 63 74 20 7d 20 64 6f  am { Object } do
53660 6d 20 2d 20 64 6f 6d 20 6e 6f 64 65 0a 20 20 20  m - dom node.   
53670 2a 20 40 70 61 72 61 6d 20 7b 20 54 61 67 20 7d  * @param { Tag }
53680 20 74 61 67 20 2d 20 74 61 67 20 69 6e 73 74 61   tag - tag insta
53690 6e 63 65 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63  nce.   */.  func
536a0 74 69 6f 6e 20 73 65 74 45 76 65 6e 74 48 61 6e  tion setEventHan
536b0 64 6c 65 72 28 6e 61 6d 65 2c 20 68 61 6e 64 6c  dler(name, handl
536c0 65 72 2c 20 64 6f 6d 2c 20 74 61 67 29 20 7b 0a  er, dom, tag) {.
536d0 20 20 20 20 76 61 72 20 65 76 65 6e 74 4e 61 6d      var eventNam
536e0 65 3b 0a 20 20 20 20 76 61 72 20 63 62 20 3d 20  e;.    var cb = 
536f0 68 61 6e 64 6c 65 45 76 65 6e 74 2e 62 69 6e 64  handleEvent.bind
53700 28 74 61 67 2c 20 64 6f 6d 2c 20 68 61 6e 64 6c  (tag, dom, handl
53710 65 72 29 3b 0a 0a 20 20 20 20 2f 2f 20 61 76 6f  er);..    // avo
53720 69 64 20 74 6f 20 62 69 6e 64 20 74 77 69 63 65  id to bind twice
53730 20 74 68 65 20 73 61 6d 65 20 65 76 65 6e 74 0a   the same event.
53740 20 20 20 20 2f 2f 20 70 6f 73 73 69 62 6c 65 20      // possible 
53750 66 69 78 20 66 6f 72 20 23 32 33 33 32 0a 20 20  fix for #2332.  
53760 20 20 64 6f 6d 5b 6e 61 6d 65 5d 20 3d 20 6e 75    dom[name] = nu
53770 6c 6c 3b 0a 0a 20 20 20 20 2f 2f 20 6e 6f 72 6d  ll;..    // norm
53780 61 6c 69 7a 65 20 65 76 65 6e 74 20 6e 61 6d 65  alize event name
53790 0a 20 20 20 20 65 76 65 6e 74 4e 61 6d 65 20 3d  .    eventName =
537a0 20 6e 61 6d 65 2e 72 65 70 6c 61 63 65 28 52 45   name.replace(RE
537b0 5f 45 56 45 4e 54 53 5f 50 52 45 46 49 58 2c 20  _EVENTS_PREFIX, 
537c0 27 27 29 3b 0a 0a 20 20 20 20 2f 2f 20 63 61 63  '');..    // cac
537d0 68 65 20 74 68 65 20 6c 69 73 74 65 6e 65 72 20  he the listener 
537e0 69 6e 74 6f 20 74 68 65 20 6c 69 73 74 65 6e 65  into the listene
537f0 72 73 20 61 72 72 61 79 0a 20 20 20 20 69 66 20  rs array.    if 
53800 28 21 63 6f 6e 74 61 69 6e 73 28 74 61 67 2e 5f  (!contains(tag._
53810 5f 2e 6c 69 73 74 65 6e 65 72 73 2c 20 64 6f 6d  _.listeners, dom
53820 29 29 20 7b 20 74 61 67 2e 5f 5f 2e 6c 69 73 74  )) { tag.__.list
53830 65 6e 65 72 73 2e 70 75 73 68 28 64 6f 6d 29 3b  eners.push(dom);
53840 20 7d 0a 20 20 20 20 69 66 20 28 21 64 6f 6d 5b   }.    if (!dom[
53850 52 49 4f 54 5f 45 56 45 4e 54 53 5f 4b 45 59 5d  RIOT_EVENTS_KEY]
53860 29 20 7b 20 64 6f 6d 5b 52 49 4f 54 5f 45 56 45  ) { dom[RIOT_EVE
53870 4e 54 53 5f 4b 45 59 5d 20 3d 20 7b 7d 3b 20 7d  NTS_KEY] = {}; }
53880 0a 20 20 20 20 69 66 20 28 64 6f 6d 5b 52 49 4f  .    if (dom[RIO
53890 54 5f 45 56 45 4e 54 53 5f 4b 45 59 5d 5b 6e 61  T_EVENTS_KEY][na
538a0 6d 65 5d 29 20 7b 20 64 6f 6d 2e 72 65 6d 6f 76  me]) { dom.remov
538b0 65 45 76 65 6e 74 4c 69 73 74 65 6e 65 72 28 65  eEventListener(e
538c0 76 65 6e 74 4e 61 6d 65 2c 20 64 6f 6d 5b 52 49  ventName, dom[RI
538d0 4f 54 5f 45 56 45 4e 54 53 5f 4b 45 59 5d 5b 6e  OT_EVENTS_KEY][n
538e0 61 6d 65 5d 29 3b 20 7d 0a 0a 20 20 20 20 64 6f  ame]); }..    do
538f0 6d 5b 52 49 4f 54 5f 45 56 45 4e 54 53 5f 4b 45  m[RIOT_EVENTS_KE
53900 59 5d 5b 6e 61 6d 65 5d 20 3d 20 63 62 3b 0a 20  Y][name] = cb;. 
53910 20 20 20 64 6f 6d 2e 61 64 64 45 76 65 6e 74 4c     dom.addEventL
53920 69 73 74 65 6e 65 72 28 65 76 65 6e 74 4e 61 6d  istener(eventNam
53930 65 2c 20 63 62 2c 20 66 61 6c 73 65 29 3b 0a 20  e, cb, false);. 
53940 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 43   }..  /**.   * C
53950 72 65 61 74 65 20 61 20 6e 65 77 20 63 68 69 6c  reate a new chil
53960 64 20 74 61 67 20 69 6e 63 6c 75 64 69 6e 67 20  d tag including 
53970 69 74 20 63 6f 72 72 65 63 74 6c 79 20 69 6e 74  it correctly int
53980 6f 20 69 74 73 20 70 61 72 65 6e 74 0a 20 20 20  o its parent.   
53990 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 4f 62 6a  * @param   { Obj
539a0 65 63 74 20 7d 20 63 68 69 6c 64 20 2d 20 63 68  ect } child - ch
539b0 69 6c 64 20 74 61 67 20 69 6d 70 6c 65 6d 65 6e  ild tag implemen
539c0 74 61 74 69 6f 6e 0a 20 20 20 2a 20 40 70 61 72  tation.   * @par
539d0 61 6d 20 20 20 7b 20 4f 62 6a 65 63 74 20 7d 20  am   { Object } 
539e0 6f 70 74 73 20 2d 20 74 61 67 20 6f 70 74 69 6f  opts - tag optio
539f0 6e 73 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68  ns containing th
53a00 65 20 44 4f 4d 20 6e 6f 64 65 20 77 68 65 72 65  e DOM node where
53a10 20 74 68 65 20 74 61 67 20 77 69 6c 6c 20 62 65   the tag will be
53a20 20 6d 6f 75 6e 74 65 64 0a 20 20 20 2a 20 40 70   mounted.   * @p
53a30 61 72 61 6d 20 20 20 7b 20 53 74 72 69 6e 67 20  aram   { String 
53a40 7d 20 69 6e 6e 65 72 48 54 4d 4c 20 2d 20 69 6e  } innerHTML - in
53a50 6e 65 72 20 68 74 6d 6c 20 6f 66 20 74 68 65 20  ner html of the 
53a60 63 68 69 6c 64 20 6e 6f 64 65 0a 20 20 20 2a 20  child node.   * 
53a70 40 70 61 72 61 6d 20 20 20 7b 20 4f 62 6a 65 63  @param   { Objec
53a80 74 20 7d 20 70 61 72 65 6e 74 20 2d 20 69 6e 73  t } parent - ins
53a90 74 61 6e 63 65 20 6f 66 20 74 68 65 20 70 61 72  tance of the par
53aa0 65 6e 74 20 74 61 67 20 69 6e 63 6c 75 64 69 6e  ent tag includin
53ab0 67 20 74 68 65 20 63 68 69 6c 64 20 63 75 73 74  g the child cust
53ac0 6f 6d 20 74 61 67 0a 20 20 20 2a 20 40 72 65 74  om tag.   * @ret
53ad0 75 72 6e 73 20 7b 20 4f 62 6a 65 63 74 20 7d 20  urns { Object } 
53ae0 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 65 20  instance of the 
53af0 6e 65 77 20 63 68 69 6c 64 20 74 61 67 20 6a 75  new child tag ju
53b00 73 74 20 63 72 65 61 74 65 64 0a 20 20 20 2a 2f  st created.   */
53b10 0a 20 20 66 75 6e 63 74 69 6f 6e 20 69 6e 69 74  .  function init
53b20 43 68 69 6c 64 28 63 68 69 6c 64 2c 20 6f 70 74  Child(child, opt
53b30 73 2c 20 69 6e 6e 65 72 48 54 4d 4c 2c 20 70 61  s, innerHTML, pa
53b40 72 65 6e 74 29 20 7b 0a 20 20 20 20 76 61 72 20  rent) {.    var 
53b50 74 61 67 20 3d 20 63 72 65 61 74 65 54 61 67 28  tag = createTag(
53b60 63 68 69 6c 64 2c 20 6f 70 74 73 2c 20 69 6e 6e  child, opts, inn
53b70 65 72 48 54 4d 4c 29 3b 0a 20 20 20 20 76 61 72  erHTML);.    var
53b80 20 74 61 67 4e 61 6d 65 20 3d 20 6f 70 74 73 2e   tagName = opts.
53b90 74 61 67 4e 61 6d 65 20 7c 7c 20 67 65 74 4e 61  tagName || getNa
53ba0 6d 65 28 6f 70 74 73 2e 72 6f 6f 74 2c 20 74 72  me(opts.root, tr
53bb0 75 65 29 3b 0a 20 20 20 20 76 61 72 20 70 74 61  ue);.    var pta
53bc0 67 20 3d 20 67 65 74 49 6d 6d 65 64 69 61 74 65  g = getImmediate
53bd0 43 75 73 74 6f 6d 50 61 72 65 6e 74 28 70 61 72  CustomParent(par
53be0 65 6e 74 29 3b 0a 20 20 20 20 2f 2f 20 66 69 78  ent);.    // fix
53bf0 20 66 6f 72 20 74 68 65 20 70 61 72 65 6e 74 20   for the parent 
53c00 61 74 74 72 69 62 75 74 65 20 69 6e 20 74 68 65  attribute in the
53c10 20 6c 6f 6f 70 65 64 20 65 6c 65 6d 65 6e 74 73   looped elements
53c20 0a 20 20 20 20 64 65 66 69 6e 65 28 74 61 67 2c  .    define(tag,
53c30 20 27 70 61 72 65 6e 74 27 2c 20 70 74 61 67 29   'parent', ptag)
53c40 3b 0a 20 20 20 20 2f 2f 20 73 74 6f 72 65 20 74  ;.    // store t
53c50 68 65 20 72 65 61 6c 20 70 61 72 65 6e 74 20 74  he real parent t
53c60 61 67 0a 20 20 20 20 2f 2f 20 69 6e 20 73 6f 6d  ag.    // in som
53c70 65 20 63 61 73 65 73 20 74 68 69 73 20 63 6f 75  e cases this cou
53c80 6c 64 20 62 65 20 64 69 66 66 65 72 65 6e 74 20  ld be different 
53c90 66 72 6f 6d 20 74 68 65 20 63 75 73 74 6f 6d 20  from the custom 
53ca0 70 61 72 65 6e 74 20 74 61 67 0a 20 20 20 20 2f  parent tag.    /
53cb0 2f 20 66 6f 72 20 65 78 61 6d 70 6c 65 20 69 6e  / for example in
53cc0 20 6e 65 73 74 65 64 20 6c 6f 6f 70 73 0a 20 20   nested loops.  
53cd0 20 20 74 61 67 2e 5f 5f 2e 70 61 72 65 6e 74 20    tag.__.parent 
53ce0 3d 20 70 61 72 65 6e 74 3b 0a 0a 20 20 20 20 2f  = parent;..    /
53cf0 2f 20 61 64 64 20 74 68 69 73 20 74 61 67 20 74  / add this tag t
53d00 6f 20 74 68 65 20 63 75 73 74 6f 6d 20 70 61 72  o the custom par
53d10 65 6e 74 20 74 61 67 0a 20 20 20 20 61 72 72 61  ent tag.    arra
53d20 79 69 73 68 41 64 64 28 70 74 61 67 2e 74 61 67  yishAdd(ptag.tag
53d30 73 2c 20 74 61 67 4e 61 6d 65 2c 20 74 61 67 29  s, tagName, tag)
53d40 3b 0a 0a 20 20 20 20 2f 2f 20 61 6e 64 20 61 6c  ;..    // and al
53d50 73 6f 20 74 6f 20 74 68 65 20 72 65 61 6c 20 70  so to the real p
53d60 61 72 65 6e 74 20 74 61 67 0a 20 20 20 20 69 66  arent tag.    if
53d70 20 28 70 74 61 67 20 21 3d 3d 20 70 61 72 65 6e   (ptag !== paren
53d80 74 29 0a 20 20 20 20 20 20 7b 20 61 72 72 61 79  t).      { array
53d90 69 73 68 41 64 64 28 70 61 72 65 6e 74 2e 74 61  ishAdd(parent.ta
53da0 67 73 2c 20 74 61 67 4e 61 6d 65 2c 20 74 61 67  gs, tagName, tag
53db0 29 3b 20 7d 0a 0a 20 20 20 20 72 65 74 75 72 6e  ); }..    return
53dc0 20 74 61 67 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a   tag.  }..  /**.
53dd0 20 20 20 2a 20 52 65 6d 6f 76 65 73 20 61 6e 20     * Removes an 
53de0 69 74 65 6d 20 66 72 6f 6d 20 61 6e 20 6f 62 6a  item from an obj
53df0 65 63 74 20 61 74 20 61 20 67 69 76 65 6e 20 6b  ect at a given k
53e00 65 79 2e 20 49 66 20 74 68 65 20 6b 65 79 20 70  ey. If the key p
53e10 6f 69 6e 74 73 20 74 6f 20 61 6e 20 61 72 72 61  oints to an arra
53e20 79 2c 0a 20 20 20 2a 20 74 68 65 6e 20 74 68 65  y,.   * then the
53e30 20 69 74 65 6d 20 69 73 20 6a 75 73 74 20 72 65   item is just re
53e40 6d 6f 76 65 64 20 66 72 6f 6d 20 74 68 65 20 61  moved from the a
53e50 72 72 61 79 2e 0a 20 20 20 2a 20 40 70 61 72 61  rray..   * @para
53e60 6d 20 7b 20 4f 62 6a 65 63 74 20 7d 20 6f 62 6a  m { Object } obj
53e70 20 2d 20 6f 62 6a 65 63 74 20 6f 6e 20 77 68 69   - object on whi
53e80 63 68 20 74 6f 20 72 65 6d 6f 76 65 20 74 68 65  ch to remove the
53e90 20 70 72 6f 70 65 72 74 79 0a 20 20 20 2a 20 40   property.   * @
53ea0 70 61 72 61 6d 20 7b 20 53 74 72 69 6e 67 20 7d  param { String }
53eb0 20 6b 65 79 20 2d 20 70 72 6f 70 65 72 74 79 20   key - property 
53ec0 6e 61 6d 65 0a 20 20 20 2a 20 40 70 61 72 61 6d  name.   * @param
53ed0 20 7b 20 4f 62 6a 65 63 74 20 7d 20 76 61 6c 75   { Object } valu
53ee0 65 20 2d 20 74 68 65 20 76 61 6c 75 65 20 6f 66  e - the value of
53ef0 20 74 68 65 20 70 72 6f 70 65 72 74 79 20 74 6f   the property to
53f00 20 62 65 20 72 65 6d 6f 76 65 64 0a 20 20 20 2a   be removed.   *
53f10 20 40 70 61 72 61 6d 20 7b 20 42 6f 6f 6c 65 61   @param { Boolea
53f20 6e 20 7d 20 65 6e 73 75 72 65 41 72 72 61 79 20  n } ensureArray 
53f30 2d 20 65 6e 73 75 72 65 20 74 68 61 74 20 74 68  - ensure that th
53f40 65 20 70 72 6f 70 65 72 74 79 20 72 65 6d 61 69  e property remai
53f50 6e 73 20 61 6e 20 61 72 72 61 79 0a 20 20 2a 2f  ns an array.  */
53f60 0a 20 20 66 75 6e 63 74 69 6f 6e 20 61 72 72 61  .  function arra
53f70 79 69 73 68 52 65 6d 6f 76 65 28 6f 62 6a 2c 20  yishRemove(obj, 
53f80 6b 65 79 2c 20 76 61 6c 75 65 2c 20 65 6e 73 75  key, value, ensu
53f90 72 65 41 72 72 61 79 29 20 7b 0a 20 20 20 20 69  reArray) {.    i
53fa0 66 20 28 69 73 41 72 72 61 79 28 6f 62 6a 5b 6b  f (isArray(obj[k
53fb0 65 79 5d 29 29 20 7b 0a 20 20 20 20 20 20 76 61  ey])) {.      va
53fc0 72 20 69 6e 64 65 78 20 3d 20 6f 62 6a 5b 6b 65  r index = obj[ke
53fd0 79 5d 2e 69 6e 64 65 78 4f 66 28 76 61 6c 75 65  y].indexOf(value
53fe0 29 3b 0a 20 20 20 20 20 20 69 66 20 28 69 6e 64  );.      if (ind
53ff0 65 78 20 21 3d 3d 20 2d 31 29 20 7b 20 6f 62 6a  ex !== -1) { obj
54000 5b 6b 65 79 5d 2e 73 70 6c 69 63 65 28 69 6e 64  [key].splice(ind
54010 65 78 2c 20 31 29 3b 20 7d 0a 20 20 20 20 20 20  ex, 1); }.      
54020 69 66 20 28 21 6f 62 6a 5b 6b 65 79 5d 2e 6c 65  if (!obj[key].le
54030 6e 67 74 68 29 20 7b 20 64 65 6c 65 74 65 20 6f  ngth) { delete o
54040 62 6a 5b 6b 65 79 5d 3b 20 7d 0a 20 20 20 20 20  bj[key]; }.     
54050 20 65 6c 73 65 20 69 66 20 28 6f 62 6a 5b 6b 65   else if (obj[ke
54060 79 5d 2e 6c 65 6e 67 74 68 20 3d 3d 3d 20 31 20  y].length === 1 
54070 26 26 20 21 65 6e 73 75 72 65 41 72 72 61 79 29  && !ensureArray)
54080 20 7b 20 6f 62 6a 5b 6b 65 79 5d 20 3d 20 6f 62   { obj[key] = ob
54090 6a 5b 6b 65 79 5d 5b 30 5d 3b 20 7d 0a 20 20 20  j[key][0]; }.   
540a0 20 7d 20 65 6c 73 65 20 69 66 20 28 6f 62 6a 5b   } else if (obj[
540b0 6b 65 79 5d 20 3d 3d 3d 20 76 61 6c 75 65 29 0a  key] === value).
540c0 20 20 20 20 20 20 7b 20 64 65 6c 65 74 65 20 6f        { delete o
540d0 62 6a 5b 6b 65 79 5d 3b 20 7d 20 2f 2f 20 6f 74  bj[key]; } // ot
540e0 68 65 72 77 69 73 65 20 6a 75 73 74 20 64 65 6c  herwise just del
540f0 65 74 65 20 74 68 65 20 6b 65 79 0a 20 20 7d 0a  ete the key.  }.
54100 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 41 64 64 73  .  /**.   * Adds
54110 20 74 68 65 20 65 6c 65 6d 65 6e 74 73 20 66 6f   the elements fo
54120 72 20 61 20 76 69 72 74 75 61 6c 20 74 61 67 0a  r a virtual tag.
54130 20 20 20 2a 20 40 74 68 69 73 20 54 61 67 0a 20     * @this Tag. 
54140 20 20 2a 20 40 70 61 72 61 6d 20 7b 20 4e 6f 64    * @param { Nod
54150 65 20 7d 20 73 72 63 20 2d 20 74 68 65 20 6e 6f  e } src - the no
54160 64 65 20 74 68 61 74 20 77 69 6c 6c 20 64 6f 20  de that will do 
54170 74 68 65 20 69 6e 73 65 72 74 69 6e 67 20 6f 72  the inserting or
54180 20 61 70 70 65 6e 64 69 6e 67 0a 20 20 20 2a 20   appending.   * 
54190 40 70 61 72 61 6d 20 7b 20 54 61 67 20 7d 20 74  @param { Tag } t
541a0 61 72 67 65 74 20 2d 20 6f 6e 6c 79 20 69 66 20  arget - only if 
541b0 69 6e 73 65 72 74 69 6e 67 2c 20 69 6e 73 65 72  inserting, inser
541c0 74 20 62 65 66 6f 72 65 20 74 68 69 73 20 74 61  t before this ta
541d0 67 27 73 20 66 69 72 73 74 20 63 68 69 6c 64 0a  g's first child.
541e0 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e     */.  function
541f0 20 6d 61 6b 65 56 69 72 74 75 61 6c 28 73 72 63   makeVirtual(src
54200 2c 20 74 61 72 67 65 74 29 20 7b 0a 20 20 20 20  , target) {.    
54210 76 61 72 20 74 68 69 73 24 31 20 3d 20 74 68 69  var this$1 = thi
54220 73 3b 0a 0a 20 20 20 20 76 61 72 20 68 65 61 64  s;..    var head
54230 20 3d 20 63 72 65 61 74 65 44 4f 4d 50 6c 61 63   = createDOMPlac
54240 65 68 6f 6c 64 65 72 28 29 3b 0a 20 20 20 20 76  eholder();.    v
54250 61 72 20 74 61 69 6c 20 3d 20 63 72 65 61 74 65  ar tail = create
54260 44 4f 4d 50 6c 61 63 65 68 6f 6c 64 65 72 28 29  DOMPlaceholder()
54270 3b 0a 20 20 20 20 76 61 72 20 66 72 61 67 20 3d  ;.    var frag =
54280 20 63 72 65 61 74 65 46 72 61 67 6d 65 6e 74 28   createFragment(
54290 29 3b 0a 20 20 20 20 76 61 72 20 73 69 62 3b 0a  );.    var sib;.
542a0 20 20 20 20 76 61 72 20 65 6c 3b 0a 0a 20 20 20      var el;..   
542b0 20 74 68 69 73 2e 72 6f 6f 74 2e 69 6e 73 65 72   this.root.inser
542c0 74 42 65 66 6f 72 65 28 68 65 61 64 2c 20 74 68  tBefore(head, th
542d0 69 73 2e 72 6f 6f 74 2e 66 69 72 73 74 43 68 69  is.root.firstChi
542e0 6c 64 29 3b 0a 20 20 20 20 74 68 69 73 2e 72 6f  ld);.    this.ro
542f0 6f 74 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 74  ot.appendChild(t
54300 61 69 6c 29 3b 0a 0a 20 20 20 20 74 68 69 73 2e  ail);..    this.
54310 5f 5f 2e 68 65 61 64 20 3d 20 65 6c 20 3d 20 68  __.head = el = h
54320 65 61 64 3b 0a 20 20 20 20 74 68 69 73 2e 5f 5f  ead;.    this.__
54330 2e 74 61 69 6c 20 3d 20 74 61 69 6c 3b 0a 0a 20  .tail = tail;.. 
54340 20 20 20 77 68 69 6c 65 20 28 65 6c 29 20 7b 0a     while (el) {.
54350 20 20 20 20 20 20 73 69 62 20 3d 20 65 6c 2e 6e        sib = el.n
54360 65 78 74 53 69 62 6c 69 6e 67 3b 0a 20 20 20 20  extSibling;.    
54370 20 20 66 72 61 67 2e 61 70 70 65 6e 64 43 68 69    frag.appendChi
54380 6c 64 28 65 6c 29 3b 0a 20 20 20 20 20 20 74 68  ld(el);.      th
54390 69 73 24 31 2e 5f 5f 2e 76 69 72 74 73 2e 70 75  is$1.__.virts.pu
543a0 73 68 28 65 6c 29 3b 20 2f 2f 20 68 6f 6c 64 20  sh(el); // hold 
543b0 66 6f 72 20 75 6e 6d 6f 75 6e 74 69 6e 67 0a 20  for unmounting. 
543c0 20 20 20 20 20 65 6c 20 3d 20 73 69 62 3b 0a 20       el = sib;. 
543d0 20 20 20 7d 0a 0a 20 20 20 20 69 66 20 28 74 61     }..    if (ta
543e0 72 67 65 74 29 0a 20 20 20 20 20 20 7b 20 73 72  rget).      { sr
543f0 63 2e 69 6e 73 65 72 74 42 65 66 6f 72 65 28 66  c.insertBefore(f
54400 72 61 67 2c 20 74 61 72 67 65 74 2e 5f 5f 2e 68  rag, target.__.h
54410 65 61 64 29 3b 20 7d 0a 20 20 20 20 65 6c 73 65  ead); }.    else
54420 0a 20 20 20 20 20 20 7b 20 73 72 63 2e 61 70 70  .      { src.app
54430 65 6e 64 43 68 69 6c 64 28 66 72 61 67 29 3b 20  endChild(frag); 
54440 7d 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20  }.  }..  /**.   
54450 2a 20 6d 61 6b 65 73 20 61 20 74 61 67 20 76 69  * makes a tag vi
54460 72 74 75 61 6c 20 61 6e 64 20 72 65 70 6c 61 63  rtual and replac
54470 65 73 20 61 20 72 65 66 65 72 65 6e 63 65 20 69  es a reference i
54480 6e 20 74 68 65 20 64 6f 6d 0a 20 20 20 2a 20 40  n the dom.   * @
54490 74 68 69 73 20 54 61 67 0a 20 20 20 2a 20 40 70  this Tag.   * @p
544a0 61 72 61 6d 20 7b 20 74 61 67 20 7d 20 74 68 65  aram { tag } the
544b0 20 74 61 67 20 74 6f 20 6d 61 6b 65 20 76 69 72   tag to make vir
544c0 74 75 61 6c 0a 20 20 20 2a 20 40 70 61 72 61 6d  tual.   * @param
544d0 20 7b 20 72 65 66 20 7d 20 74 68 65 20 64 6f 6d   { ref } the dom
544e0 20 72 65 66 65 72 65 6e 63 65 20 6c 6f 63 61 74   reference locat
544f0 69 6f 6e 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63  ion.   */.  func
54500 74 69 6f 6e 20 6d 61 6b 65 52 65 70 6c 61 63 65  tion makeReplace
54510 56 69 72 74 75 61 6c 28 74 61 67 2c 20 72 65 66  Virtual(tag, ref
54520 29 20 7b 0a 20 20 20 20 69 66 20 28 21 72 65 66  ) {.    if (!ref
54530 2e 70 61 72 65 6e 74 4e 6f 64 65 29 20 7b 20 72  .parentNode) { r
54540 65 74 75 72 6e 20 7d 0a 20 20 20 20 76 61 72 20  eturn }.    var 
54550 66 72 61 67 20 3d 20 63 72 65 61 74 65 46 72 61  frag = createFra
54560 67 6d 65 6e 74 28 29 3b 0a 20 20 20 20 6d 61 6b  gment();.    mak
54570 65 56 69 72 74 75 61 6c 2e 63 61 6c 6c 28 74 61  eVirtual.call(ta
54580 67 2c 20 66 72 61 67 29 3b 0a 20 20 20 20 72 65  g, frag);.    re
54590 66 2e 70 61 72 65 6e 74 4e 6f 64 65 2e 72 65 70  f.parentNode.rep
545a0 6c 61 63 65 43 68 69 6c 64 28 66 72 61 67 2c 20  laceChild(frag, 
545b0 72 65 66 29 3b 0a 20 20 7d 0a 0a 20 20 2f 2a 2a  ref);.  }..  /**
545c0 0a 20 20 20 2a 20 55 70 64 61 74 65 20 64 79 6e  .   * Update dyn
545d0 61 6d 69 63 61 6c 6c 79 20 63 72 65 61 74 65 64  amically created
545e0 20 64 61 74 61 2d 69 73 20 74 61 67 73 20 77 69   data-is tags wi
545f0 74 68 20 63 68 61 6e 67 69 6e 67 20 65 78 70 72  th changing expr
54600 65 73 73 69 6f 6e 73 0a 20 20 20 2a 20 40 70 61  essions.   * @pa
54610 72 61 6d 20 7b 20 4f 62 6a 65 63 74 20 7d 20 65  ram { Object } e
54620 78 70 72 20 2d 20 65 78 70 72 65 73 73 69 6f 6e  xpr - expression
54630 20 74 61 67 20 61 6e 64 20 65 78 70 72 65 73 73   tag and express
54640 69 6f 6e 20 69 6e 66 6f 0a 20 20 20 2a 20 40 70  ion info.   * @p
54650 61 72 61 6d 20 7b 20 54 61 67 20 7d 20 20 20 20  aram { Tag }    
54660 70 61 72 65 6e 74 20 2d 20 70 61 72 65 6e 74 20  parent - parent 
54670 66 6f 72 20 74 61 67 20 63 72 65 61 74 69 6f 6e  for tag creation
54680 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 7b 20 53  .   * @param { S
54690 74 72 69 6e 67 20 7d 20 74 61 67 4e 61 6d 65 20  tring } tagName 
546a0 2d 20 74 61 67 20 69 6d 70 6c 65 6d 65 6e 74 61  - tag implementa
546b0 74 69 6f 6e 20 77 65 20 77 61 6e 74 20 74 6f 20  tion we want to 
546c0 75 73 65 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63  use.   */.  func
546d0 74 69 6f 6e 20 75 70 64 61 74 65 44 61 74 61 49  tion updateDataI
546e0 73 28 65 78 70 72 2c 20 70 61 72 65 6e 74 2c 20  s(expr, parent, 
546f0 74 61 67 4e 61 6d 65 29 20 7b 0a 20 20 20 20 76  tagName) {.    v
54700 61 72 20 74 61 67 20 3d 20 65 78 70 72 2e 74 61  ar tag = expr.ta
54710 67 20 7c 7c 20 65 78 70 72 2e 64 6f 6d 2e 5f 74  g || expr.dom._t
54720 61 67 3b 0a 20 20 20 20 76 61 72 20 72 65 66 3b  ag;.    var ref;
54730 0a 0a 20 20 20 20 76 61 72 20 72 65 66 24 31 20  ..    var ref$1 
54740 3d 20 74 61 67 20 3f 20 74 61 67 2e 5f 5f 20 3a  = tag ? tag.__ :
54750 20 7b 7d 3b 0a 20 20 20 20 76 61 72 20 68 65 61   {};.    var hea
54760 64 20 3d 20 72 65 66 24 31 2e 68 65 61 64 3b 0a  d = ref$1.head;.
54770 20 20 20 20 76 61 72 20 69 73 56 69 72 74 75 61      var isVirtua
54780 6c 20 3d 20 65 78 70 72 2e 64 6f 6d 2e 74 61 67  l = expr.dom.tag
54790 4e 61 6d 65 20 3d 3d 3d 20 27 56 49 52 54 55 41  Name === 'VIRTUA
547a0 4c 27 3b 0a 0a 20 20 20 20 69 66 20 28 74 61 67  L';..    if (tag
547b0 20 26 26 20 65 78 70 72 2e 74 61 67 4e 61 6d 65   && expr.tagName
547c0 20 3d 3d 3d 20 74 61 67 4e 61 6d 65 29 20 7b 0a   === tagName) {.
547d0 20 20 20 20 20 20 74 61 67 2e 75 70 64 61 74 65        tag.update
547e0 28 29 3b 0a 20 20 20 20 20 20 72 65 74 75 72 6e  ();.      return
547f0 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2f 20 73  .    }..    // s
54800 79 6e 63 20 5f 70 61 72 65 6e 74 20 74 6f 20 61  ync _parent to a
54810 63 63 6f 6d 6d 6f 64 61 74 65 20 63 68 61 6e 67  ccommodate chang
54820 69 6e 67 20 74 61 67 6e 61 6d 65 73 0a 20 20 20  ing tagnames.   
54830 20 69 66 20 28 74 61 67 29 20 7b 0a 20 20 20 20   if (tag) {.    
54840 20 20 2f 2f 20 6e 65 65 64 20 70 6c 61 63 65 68    // need placeh
54850 6f 6c 64 65 72 20 62 65 66 6f 72 65 20 75 6e 6d  older before unm
54860 6f 75 6e 74 0a 20 20 20 20 20 20 69 66 28 69 73  ount.      if(is
54870 56 69 72 74 75 61 6c 29 20 7b 0a 20 20 20 20 20  Virtual) {.     
54880 20 20 20 72 65 66 20 3d 20 63 72 65 61 74 65 44     ref = createD
54890 4f 4d 50 6c 61 63 65 68 6f 6c 64 65 72 28 29 3b  OMPlaceholder();
548a0 0a 20 20 20 20 20 20 20 20 68 65 61 64 2e 70 61  .        head.pa
548b0 72 65 6e 74 4e 6f 64 65 2e 69 6e 73 65 72 74 42  rentNode.insertB
548c0 65 66 6f 72 65 28 72 65 66 2c 20 68 65 61 64 29  efore(ref, head)
548d0 3b 0a 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20  ;.      }..     
548e0 20 74 61 67 2e 75 6e 6d 6f 75 6e 74 28 74 72 75   tag.unmount(tru
548f0 65 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f  e);.    }..    /
54900 2f 20 75 6e 61 62 6c 65 20 74 6f 20 67 65 74 20  / unable to get 
54910 74 68 65 20 74 61 67 20 6e 61 6d 65 0a 20 20 20  the tag name.   
54920 20 69 66 20 28 21 69 73 53 74 72 69 6e 67 28 74   if (!isString(t
54930 61 67 4e 61 6d 65 29 29 20 7b 20 72 65 74 75 72  agName)) { retur
54940 6e 20 7d 0a 0a 20 20 20 20 65 78 70 72 2e 69 6d  n }..    expr.im
54950 70 6c 20 3d 20 5f 5f 54 41 47 5f 49 4d 50 4c 5b  pl = __TAG_IMPL[
54960 74 61 67 4e 61 6d 65 5d 3b 0a 0a 20 20 20 20 2f  tagName];..    /
54970 2f 20 75 6e 6b 6e 6f 77 6e 20 69 6d 70 6c 65 6d  / unknown implem
54980 65 6e 74 61 74 69 6f 6e 0a 20 20 20 20 69 66 20  entation.    if 
54990 28 21 65 78 70 72 2e 69 6d 70 6c 29 20 7b 20 72  (!expr.impl) { r
549a0 65 74 75 72 6e 20 7d 0a 0a 20 20 20 20 65 78 70  eturn }..    exp
549b0 72 2e 74 61 67 20 3d 20 74 61 67 20 3d 20 69 6e  r.tag = tag = in
549c0 69 74 43 68 69 6c 64 28 0a 20 20 20 20 20 20 65  itChild(.      e
549d0 78 70 72 2e 69 6d 70 6c 2c 20 7b 0a 20 20 20 20  xpr.impl, {.    
549e0 20 20 20 20 72 6f 6f 74 3a 20 65 78 70 72 2e 64      root: expr.d
549f0 6f 6d 2c 0a 20 20 20 20 20 20 20 20 70 61 72 65  om,.        pare
54a00 6e 74 3a 20 70 61 72 65 6e 74 2c 0a 20 20 20 20  nt: parent,.    
54a10 20 20 20 20 74 61 67 4e 61 6d 65 3a 20 74 61 67      tagName: tag
54a20 4e 61 6d 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20  Name.      },.  
54a30 20 20 20 20 65 78 70 72 2e 64 6f 6d 2e 69 6e 6e      expr.dom.inn
54a40 65 72 48 54 4d 4c 2c 0a 20 20 20 20 20 20 70 61  erHTML,.      pa
54a50 72 65 6e 74 0a 20 20 20 20 29 3b 0a 0a 20 20 20  rent.    );..   
54a60 20 65 61 63 68 28 65 78 70 72 2e 61 74 74 72 73   each(expr.attrs
54a70 2c 20 66 75 6e 63 74 69 6f 6e 20 28 61 29 20 7b  , function (a) {
54a80 20 72 65 74 75 72 6e 20 73 65 74 41 74 74 72 69   return setAttri
54a90 62 75 74 65 28 74 61 67 2e 72 6f 6f 74 2c 20 61  bute(tag.root, a
54aa0 2e 6e 61 6d 65 2c 20 61 2e 76 61 6c 75 65 29 3b  .name, a.value);
54ab0 20 7d 29 3b 0a 20 20 20 20 65 78 70 72 2e 74 61   });.    expr.ta
54ac0 67 4e 61 6d 65 20 3d 20 74 61 67 4e 61 6d 65 3b  gName = tagName;
54ad0 0a 20 20 20 20 74 61 67 2e 6d 6f 75 6e 74 28 29  .    tag.mount()
54ae0 3b 0a 0a 20 20 20 20 2f 2f 20 72 6f 6f 74 20 65  ;..    // root e
54af0 78 69 73 74 20 66 69 72 73 74 20 74 69 6d 65 2c  xist first time,
54b00 20 61 66 74 65 72 20 75 73 65 20 70 6c 61 63 65   after use place
54b10 68 6f 6c 64 65 72 0a 20 20 20 20 69 66 20 28 69  holder.    if (i
54b20 73 56 69 72 74 75 61 6c 29 20 7b 20 6d 61 6b 65  sVirtual) { make
54b30 52 65 70 6c 61 63 65 56 69 72 74 75 61 6c 28 74  ReplaceVirtual(t
54b40 61 67 2c 20 72 65 66 20 7c 7c 20 74 61 67 2e 72  ag, ref || tag.r
54b50 6f 6f 74 29 3b 20 7d 0a 0a 20 20 20 20 2f 2f 20  oot); }..    // 
54b60 70 61 72 65 6e 74 20 69 73 20 74 68 65 20 70 6c  parent is the pl
54b70 61 63 65 68 6f 6c 64 65 72 20 74 61 67 2c 20 6e  aceholder tag, n
54b80 6f 74 20 74 68 65 20 64 79 6e 61 6d 69 63 20 74  ot the dynamic t
54b90 61 67 20 73 6f 20 63 6c 65 61 6e 20 75 70 0a 20  ag so clean up. 
54ba0 20 20 20 70 61 72 65 6e 74 2e 5f 5f 2e 6f 6e 55     parent.__.onU
54bb0 6e 6d 6f 75 6e 74 20 3d 20 66 75 6e 63 74 69 6f  nmount = functio
54bc0 6e 20 28 29 20 7b 0a 20 20 20 20 20 20 76 61 72  n () {.      var
54bd0 20 64 65 6c 4e 61 6d 65 20 3d 20 74 61 67 2e 6f   delName = tag.o
54be0 70 74 73 2e 64 61 74 61 49 73 3b 0a 20 20 20 20  pts.dataIs;.    
54bf0 20 20 61 72 72 61 79 69 73 68 52 65 6d 6f 76 65    arrayishRemove
54c00 28 74 61 67 2e 70 61 72 65 6e 74 2e 74 61 67 73  (tag.parent.tags
54c10 2c 20 64 65 6c 4e 61 6d 65 2c 20 74 61 67 29 3b  , delName, tag);
54c20 0a 20 20 20 20 20 20 61 72 72 61 79 69 73 68 52  .      arrayishR
54c30 65 6d 6f 76 65 28 74 61 67 2e 5f 5f 2e 70 61 72  emove(tag.__.par
54c40 65 6e 74 2e 74 61 67 73 2c 20 64 65 6c 4e 61 6d  ent.tags, delNam
54c50 65 2c 20 74 61 67 29 3b 0a 20 20 20 20 20 20 74  e, tag);.      t
54c60 61 67 2e 75 6e 6d 6f 75 6e 74 28 29 3b 0a 20 20  ag.unmount();.  
54c70 20 20 7d 3b 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a    };.  }..  /**.
54c80 20 20 20 2a 20 4e 6f 6d 61 6c 69 7a 65 20 61 6e     * Nomalize an
54c90 79 20 61 74 74 72 69 62 75 74 65 20 72 65 6d 6f  y attribute remo
54ca0 76 69 6e 67 20 74 68 65 20 22 72 69 6f 74 2d 22  ving the "riot-"
54cb0 20 70 72 65 66 69 78 0a 20 20 20 2a 20 40 70 61   prefix.   * @pa
54cc0 72 61 6d 20 20 20 7b 20 53 74 72 69 6e 67 20 7d  ram   { String }
54cd0 20 61 74 74 72 4e 61 6d 65 20 2d 20 6f 72 69 67   attrName - orig
54ce0 69 6e 61 6c 20 61 74 74 72 69 62 75 74 65 20 6e  inal attribute n
54cf0 61 6d 65 0a 20 20 20 2a 20 40 72 65 74 75 72 6e  ame.   * @return
54d00 73 20 7b 20 53 74 72 69 6e 67 20 7d 20 76 61 6c  s { String } val
54d10 69 64 20 68 74 6d 6c 20 61 74 74 72 69 62 75 74  id html attribut
54d20 65 20 6e 61 6d 65 0a 20 20 20 2a 2f 0a 20 20 66  e name.   */.  f
54d30 75 6e 63 74 69 6f 6e 20 6e 6f 72 6d 61 6c 69 7a  unction normaliz
54d40 65 41 74 74 72 4e 61 6d 65 28 61 74 74 72 4e 61  eAttrName(attrNa
54d50 6d 65 29 20 7b 0a 20 20 20 20 69 66 20 28 21 61  me) {.    if (!a
54d60 74 74 72 4e 61 6d 65 29 20 7b 20 72 65 74 75 72  ttrName) { retur
54d70 6e 20 6e 75 6c 6c 20 7d 0a 20 20 20 20 61 74 74  n null }.    att
54d80 72 4e 61 6d 65 20 3d 20 61 74 74 72 4e 61 6d 65  rName = attrName
54d90 2e 72 65 70 6c 61 63 65 28 41 54 54 52 53 5f 50  .replace(ATTRS_P
54da0 52 45 46 49 58 2c 20 27 27 29 3b 0a 20 20 20 20  REFIX, '');.    
54db0 69 66 20 28 43 41 53 45 5f 53 45 4e 53 49 54 49  if (CASE_SENSITI
54dc0 56 45 5f 41 54 54 52 49 42 55 54 45 53 5b 61 74  VE_ATTRIBUTES[at
54dd0 74 72 4e 61 6d 65 5d 29 20 7b 20 61 74 74 72 4e  trName]) { attrN
54de0 61 6d 65 20 3d 20 43 41 53 45 5f 53 45 4e 53 49  ame = CASE_SENSI
54df0 54 49 56 45 5f 41 54 54 52 49 42 55 54 45 53 5b  TIVE_ATTRIBUTES[
54e00 61 74 74 72 4e 61 6d 65 5d 3b 20 7d 0a 20 20 20  attrName]; }.   
54e10 20 72 65 74 75 72 6e 20 61 74 74 72 4e 61 6d 65   return attrName
54e20 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a  .  }..  /**.   *
54e30 20 55 70 64 61 74 65 20 6f 6e 20 73 69 6e 67 6c   Update on singl
54e40 65 20 74 61 67 20 65 78 70 72 65 73 73 69 6f 6e  e tag expression
54e50 0a 20 20 20 2a 20 40 74 68 69 73 20 54 61 67 0a  .   * @this Tag.
54e60 20 20 20 2a 20 40 70 61 72 61 6d 20 7b 20 4f 62     * @param { Ob
54e70 6a 65 63 74 20 7d 20 65 78 70 72 20 2d 20 65 78  ject } expr - ex
54e80 70 72 65 73 73 69 6f 6e 20 6c 6f 67 69 63 0a 20  pression logic. 
54e90 20 20 2a 20 40 72 65 74 75 72 6e 73 20 7b 20 75    * @returns { u
54ea0 6e 64 65 66 69 6e 65 64 20 7d 0a 20 20 20 2a 2f  ndefined }.   */
54eb0 0a 20 20 66 75 6e 63 74 69 6f 6e 20 75 70 64 61  .  function upda
54ec0 74 65 45 78 70 72 65 73 73 69 6f 6e 28 65 78 70  teExpression(exp
54ed0 72 29 20 7b 0a 20 20 20 20 69 66 20 28 74 68 69  r) {.    if (thi
54ee0 73 2e 72 6f 6f 74 20 26 26 20 67 65 74 41 74 74  s.root && getAtt
54ef0 72 69 62 75 74 65 28 74 68 69 73 2e 72 6f 6f 74  ribute(this.root
54f00 2c 27 76 69 72 74 75 61 6c 69 7a 65 64 27 29 29  ,'virtualized'))
54f10 20 7b 20 72 65 74 75 72 6e 20 7d 0a 0a 20 20 20   { return }..   
54f20 20 76 61 72 20 64 6f 6d 20 3d 20 65 78 70 72 2e   var dom = expr.
54f30 64 6f 6d 3b 0a 20 20 20 20 2f 2f 20 72 65 6d 6f  dom;.    // remo
54f40 76 65 20 74 68 65 20 72 69 6f 74 2d 20 70 72 65  ve the riot- pre
54f50 66 69 78 0a 20 20 20 20 76 61 72 20 61 74 74 72  fix.    var attr
54f60 4e 61 6d 65 20 3d 20 6e 6f 72 6d 61 6c 69 7a 65  Name = normalize
54f70 41 74 74 72 4e 61 6d 65 28 65 78 70 72 2e 61 74  AttrName(expr.at
54f80 74 72 29 3b 0a 20 20 20 20 76 61 72 20 69 73 54  tr);.    var isT
54f90 6f 67 67 6c 65 20 3d 20 63 6f 6e 74 61 69 6e 73  oggle = contains
54fa0 28 5b 53 48 4f 57 5f 44 49 52 45 43 54 49 56 45  ([SHOW_DIRECTIVE
54fb0 2c 20 48 49 44 45 5f 44 49 52 45 43 54 49 56 45  , HIDE_DIRECTIVE
54fc0 5d 2c 20 61 74 74 72 4e 61 6d 65 29 3b 0a 20 20  ], attrName);.  
54fd0 20 20 76 61 72 20 69 73 56 69 72 74 75 61 6c 20    var isVirtual 
54fe0 3d 20 65 78 70 72 2e 72 6f 6f 74 20 26 26 20 65  = expr.root && e
54ff0 78 70 72 2e 72 6f 6f 74 2e 74 61 67 4e 61 6d 65  xpr.root.tagName
55000 20 3d 3d 3d 20 27 56 49 52 54 55 41 4c 27 3b 0a   === 'VIRTUAL';.
55010 20 20 20 20 76 61 72 20 72 65 66 20 3d 20 74 68      var ref = th
55020 69 73 2e 5f 5f 3b 0a 20 20 20 20 76 61 72 20 69  is.__;.    var i
55030 73 41 6e 6f 6e 79 6d 6f 75 73 20 3d 20 72 65 66  sAnonymous = ref
55040 2e 69 73 41 6e 6f 6e 79 6d 6f 75 73 3b 0a 20 20  .isAnonymous;.  
55050 20 20 76 61 72 20 70 61 72 65 6e 74 20 3d 20 64    var parent = d
55060 6f 6d 20 26 26 20 28 65 78 70 72 2e 70 61 72 65  om && (expr.pare
55070 6e 74 20 7c 7c 20 64 6f 6d 2e 70 61 72 65 6e 74  nt || dom.parent
55080 4e 6f 64 65 29 3b 0a 20 20 20 20 76 61 72 20 6b  Node);.    var k
55090 65 65 70 56 61 6c 75 65 41 74 74 72 69 62 75 74  eepValueAttribut
550a0 65 73 20 3d 20 73 65 74 74 69 6e 67 73 2e 6b 65  es = settings.ke
550b0 65 70 56 61 6c 75 65 41 74 74 72 69 62 75 74 65  epValueAttribute
550c0 73 3b 0a 20 20 20 20 2f 2f 20 64 65 74 65 63 74  s;.    // detect
550d0 20 74 68 65 20 73 74 79 6c 65 20 61 74 74 72 69   the style attri
550e0 62 75 74 65 73 0a 20 20 20 20 76 61 72 20 69 73  butes.    var is
550f0 53 74 79 6c 65 41 74 74 72 20 3d 20 61 74 74 72  StyleAttr = attr
55100 4e 61 6d 65 20 3d 3d 3d 20 27 73 74 79 6c 65 27  Name === 'style'
55110 3b 0a 20 20 20 20 76 61 72 20 69 73 43 6c 61 73  ;.    var isClas
55120 73 41 74 74 72 20 3d 20 61 74 74 72 4e 61 6d 65  sAttr = attrName
55130 20 3d 3d 3d 20 27 63 6c 61 73 73 27 3b 0a 20 20   === 'class';.  
55140 20 20 76 61 72 20 69 73 56 61 6c 75 65 41 74 74    var isValueAtt
55150 72 20 3d 20 61 74 74 72 4e 61 6d 65 20 3d 3d 3d  r = attrName ===
55160 20 27 76 61 6c 75 65 27 3b 0a 0a 20 20 20 20 76   'value';..    v
55170 61 72 20 76 61 6c 75 65 3b 0a 0a 20 20 20 20 2f  ar value;..    /
55180 2f 20 69 66 20 69 74 27 73 20 61 20 74 61 67 20  / if it's a tag 
55190 77 65 20 63 6f 75 6c 64 20 74 6f 74 61 6c 6c 79  we could totally
551a0 20 73 6b 69 70 20 74 68 65 20 72 65 73 74 0a 20   skip the rest. 
551b0 20 20 20 69 66 20 28 65 78 70 72 2e 5f 72 69 6f     if (expr._rio
551c0 74 5f 69 64 29 20 7b 0a 20 20 20 20 20 20 69 66  t_id) {.      if
551d0 20 28 65 78 70 72 2e 5f 5f 2e 77 61 73 43 72 65   (expr.__.wasCre
551e0 61 74 65 64 29 20 7b 0a 20 20 20 20 20 20 20 20  ated) {.        
551f0 65 78 70 72 2e 75 70 64 61 74 65 28 29 3b 0a 20  expr.update();. 
55200 20 20 20 20 20 2f 2f 20 69 66 20 69 74 20 68 61       // if it ha
55210 73 6e 27 74 20 62 65 65 6e 20 6d 6f 75 6e 74 65  sn't been mounte
55220 64 20 79 65 74 2c 20 64 6f 20 74 68 61 74 20 6e  d yet, do that n
55230 6f 77 2e 0a 20 20 20 20 20 20 7d 20 65 6c 73 65  ow..      } else
55240 20 7b 0a 20 20 20 20 20 20 20 20 65 78 70 72 2e   {.        expr.
55250 6d 6f 75 6e 74 28 29 3b 0a 20 20 20 20 20 20 20  mount();.       
55260 20 69 66 20 28 69 73 56 69 72 74 75 61 6c 29 20   if (isVirtual) 
55270 7b 0a 20 20 20 20 20 20 20 20 20 20 6d 61 6b 65  {.          make
55280 52 65 70 6c 61 63 65 56 69 72 74 75 61 6c 28 65  ReplaceVirtual(e
55290 78 70 72 2c 20 65 78 70 72 2e 72 6f 6f 74 29 3b  xpr, expr.root);
552a0 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20  .        }.     
552b0 20 7d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 0a   }.      return.
552c0 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2f 20 69 66      }..    // if
552d0 20 74 68 69 73 20 65 78 70 72 65 73 73 69 6f 6e   this expression
552e0 20 68 61 73 20 74 68 65 20 75 70 64 61 74 65 20   has the update 
552f0 6d 65 74 68 6f 64 20 69 74 20 6d 65 61 6e 73 20  method it means 
55300 69 74 20 63 61 6e 20 68 61 6e 64 6c 65 20 74 68  it can handle th
55310 65 20 44 4f 4d 20 63 68 61 6e 67 65 73 20 62 79  e DOM changes by
55320 20 69 74 73 65 6c 66 0a 20 20 20 20 69 66 20 28   itself.    if (
55330 65 78 70 72 2e 75 70 64 61 74 65 29 20 7b 20 72  expr.update) { r
55340 65 74 75 72 6e 20 65 78 70 72 2e 75 70 64 61 74  eturn expr.updat
55350 65 28 29 20 7d 0a 0a 20 20 20 20 76 61 72 20 63  e() }..    var c
55360 6f 6e 74 65 78 74 20 3d 20 69 73 54 6f 67 67 6c  ontext = isToggl
55370 65 20 26 26 20 21 69 73 41 6e 6f 6e 79 6d 6f 75  e && !isAnonymou
55380 73 20 3f 20 69 6e 68 65 72 69 74 50 61 72 65 6e  s ? inheritParen
55390 74 50 72 6f 70 73 2e 63 61 6c 6c 28 74 68 69 73  tProps.call(this
553a0 29 20 3a 20 74 68 69 73 3b 0a 0a 20 20 20 20 2f  ) : this;..    /
553b0 2f 20 2e 2e 2e 69 74 20 73 65 65 6d 73 20 74 6f  / ...it seems to
553c0 20 62 65 20 61 20 73 69 6d 70 6c 65 20 65 78 70   be a simple exp
553d0 72 65 73 73 69 6f 6e 20 73 6f 20 77 65 20 74 72  ression so we tr
553e0 79 20 74 6f 20 63 61 6c 63 75 6c 61 74 65 20 69  y to calculate i
553f0 74 73 20 76 61 6c 75 65 0a 20 20 20 20 76 61 6c  ts value.    val
55400 75 65 20 3d 20 63 73 70 5f 74 6d 70 6c 5f 31 28  ue = csp_tmpl_1(
55410 65 78 70 72 2e 65 78 70 72 2c 20 63 6f 6e 74 65  expr.expr, conte
55420 78 74 29 3b 0a 0a 20 20 20 20 76 61 72 20 68 61  xt);..    var ha
55430 73 56 61 6c 75 65 20 3d 20 21 69 73 42 6c 61 6e  sValue = !isBlan
55440 6b 28 76 61 6c 75 65 29 3b 0a 20 20 20 20 76 61  k(value);.    va
55450 72 20 69 73 4f 62 6a 20 3d 20 69 73 4f 62 6a 65  r isObj = isObje
55460 63 74 28 76 61 6c 75 65 29 3b 0a 0a 20 20 20 20  ct(value);..    
55470 2f 2f 20 63 6f 6e 76 65 72 74 20 74 68 65 20 73  // convert the s
55480 74 79 6c 65 2f 63 6c 61 73 73 20 6f 62 6a 65 63  tyle/class objec
55490 74 73 20 74 6f 20 73 74 72 69 6e 67 73 0a 20 20  ts to strings.  
554a0 20 20 69 66 20 28 69 73 4f 62 6a 29 20 7b 0a 20    if (isObj) {. 
554b0 20 20 20 20 20 69 66 20 28 69 73 43 6c 61 73 73       if (isClass
554c0 41 74 74 72 29 20 7b 0a 20 20 20 20 20 20 20 20  Attr) {.        
554d0 76 61 6c 75 65 20 3d 20 63 73 70 5f 74 6d 70 6c  value = csp_tmpl
554e0 5f 31 28 4a 53 4f 4e 2e 73 74 72 69 6e 67 69 66  _1(JSON.stringif
554f0 79 28 76 61 6c 75 65 29 2c 20 74 68 69 73 29 3b  y(value), this);
55500 0a 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66  .      } else if
55510 20 28 69 73 53 74 79 6c 65 41 74 74 72 29 20 7b   (isStyleAttr) {
55520 0a 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d  .        value =
55530 20 73 74 79 6c 65 4f 62 6a 65 63 74 54 6f 53 74   styleObjectToSt
55540 72 69 6e 67 28 76 61 6c 75 65 29 3b 0a 20 20 20  ring(value);.   
55550 20 20 20 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20     }.    }..    
55560 2f 2f 20 72 65 6d 6f 76 65 20 6f 72 69 67 69 6e  // remove origin
55570 61 6c 20 61 74 74 72 69 62 75 74 65 0a 20 20 20  al attribute.   
55580 20 69 66 20 28 65 78 70 72 2e 61 74 74 72 20 26   if (expr.attr &
55590 26 0a 20 20 20 20 20 20 20 20 28 0a 20 20 20 20  &.        (.    
555a0 20 20 20 20 20 20 2f 2f 20 74 68 65 20 6f 72 69        // the ori
555b0 67 69 6e 61 6c 20 61 74 74 72 69 62 75 74 65 20  ginal attribute 
555c0 63 61 6e 20 62 65 20 72 65 6d 6f 76 65 64 20 6f  can be removed o
555d0 6e 6c 79 20 69 66 20 77 65 20 61 72 65 20 70 61  nly if we are pa
555e0 72 73 69 6e 67 20 74 68 65 20 6f 72 69 67 69 6e  rsing the origin
555f0 61 6c 20 65 78 70 72 65 73 73 69 6f 6e 0a 20 20  al expression.  
55600 20 20 20 20 20 20 20 20 21 65 78 70 72 2e 77 61          !expr.wa
55610 73 50 61 72 73 65 64 4f 6e 63 65 20 7c 7c 0a 20  sParsedOnce ||. 
55620 20 20 20 20 20 20 20 20 20 2f 2f 20 6f 72 20 69           // or i
55630 74 73 20 76 61 6c 75 65 20 69 73 20 66 61 6c 73  ts value is fals
55640 65 0a 20 20 20 20 20 20 20 20 20 20 76 61 6c 75  e.          valu
55650 65 20 3d 3d 3d 20 66 61 6c 73 65 20 7c 7c 0a 20  e === false ||. 
55660 20 20 20 20 20 20 20 20 20 2f 2f 20 6f 72 20 69           // or i
55670 66 20 69 74 73 20 76 61 6c 75 65 20 69 73 20 63  f its value is c
55680 75 72 72 65 6e 74 6c 79 20 66 61 6c 73 79 2e 2e  urrently falsy..
55690 2e 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 57  ..          // W
556a0 65 20 77 69 6c 6c 20 6b 65 65 70 20 74 68 65 20  e will keep the 
556b0 22 76 61 6c 75 65 22 20 61 74 74 72 69 62 75 74  "value" attribut
556c0 65 73 20 69 66 20 74 68 65 20 22 6b 65 65 70 56  es if the "keepV
556d0 61 6c 75 65 41 74 74 72 69 62 75 74 65 73 22 0a  alueAttributes".
556e0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 69 73 20            // is 
556f0 65 6e 61 62 6c 65 64 20 74 68 6f 75 67 68 0a 20  enabled though. 
55700 20 20 20 20 20 20 20 20 20 28 21 68 61 73 56 61           (!hasVa
55710 6c 75 65 20 26 26 20 28 21 69 73 56 61 6c 75 65  lue && (!isValue
55720 41 74 74 72 20 7c 7c 20 69 73 56 61 6c 75 65 41  Attr || isValueA
55730 74 74 72 20 26 26 20 21 6b 65 65 70 56 61 6c 75  ttr && !keepValu
55740 65 41 74 74 72 69 62 75 74 65 73 29 29 0a 20 20  eAttributes)).  
55750 20 20 20 20 20 20 29 0a 20 20 20 20 29 20 7b 0a        ).    ) {.
55760 20 20 20 20 20 20 2f 2f 20 72 65 6d 6f 76 65 20        // remove 
55770 65 69 74 68 65 72 20 72 69 6f 74 2d 2a 20 61 74  either riot-* at
55780 74 72 69 62 75 74 65 73 20 6f 72 20 6a 75 73 74  tributes or just
55790 20 74 68 65 20 61 74 74 72 69 62 75 74 65 20 6e   the attribute n
557a0 61 6d 65 0a 20 20 20 20 20 20 72 65 6d 6f 76 65  ame.      remove
557b0 41 74 74 72 69 62 75 74 65 28 64 6f 6d 2c 20 67  Attribute(dom, g
557c0 65 74 41 74 74 72 69 62 75 74 65 28 64 6f 6d 2c  etAttribute(dom,
557d0 20 65 78 70 72 2e 61 74 74 72 29 20 3f 20 65 78   expr.attr) ? ex
557e0 70 72 2e 61 74 74 72 20 3a 20 61 74 74 72 4e 61  pr.attr : attrNa
557f0 6d 65 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20  me);.    }..    
55800 2f 2f 20 66 6f 72 20 74 68 65 20 62 6f 6f 6c 65  // for the boole
55810 61 6e 20 61 74 74 72 69 62 75 74 65 73 20 77 65  an attributes we
55820 20 64 6f 6e 27 74 20 6e 65 65 64 20 74 68 65 20   don't need the 
55830 76 61 6c 75 65 0a 20 20 20 20 2f 2f 20 77 65 20  value.    // we 
55840 63 61 6e 20 63 6f 6e 76 65 72 74 20 69 74 20 74  can convert it t
55850 6f 20 63 68 65 63 6b 65 64 3d 74 72 75 65 20 74  o checked=true t
55860 6f 20 63 68 65 63 6b 65 64 3d 63 68 65 63 6b 65  o checked=checke
55870 64 0a 20 20 20 20 69 66 20 28 65 78 70 72 2e 62  d.    if (expr.b
55880 6f 6f 6c 29 20 7b 20 76 61 6c 75 65 20 3d 20 76  ool) { value = v
55890 61 6c 75 65 20 3f 20 61 74 74 72 4e 61 6d 65 20  alue ? attrName 
558a0 3a 20 66 61 6c 73 65 3b 20 7d 0a 20 20 20 20 69  : false; }.    i
558b0 66 20 28 65 78 70 72 2e 69 73 52 74 61 67 29 20  f (expr.isRtag) 
558c0 7b 20 72 65 74 75 72 6e 20 75 70 64 61 74 65 44  { return updateD
558d0 61 74 61 49 73 28 65 78 70 72 2c 20 74 68 69 73  ataIs(expr, this
558e0 2c 20 76 61 6c 75 65 29 20 7d 0a 20 20 20 20 69  , value) }.    i
558f0 66 20 28 65 78 70 72 2e 77 61 73 50 61 72 73 65  f (expr.wasParse
55900 64 4f 6e 63 65 20 26 26 20 65 78 70 72 2e 76 61  dOnce && expr.va
55910 6c 75 65 20 3d 3d 3d 20 76 61 6c 75 65 29 20 7b  lue === value) {
55920 20 72 65 74 75 72 6e 20 7d 0a 0a 20 20 20 20 2f   return }..    /
55930 2f 20 75 70 64 61 74 65 20 74 68 65 20 65 78 70  / update the exp
55940 72 65 73 73 69 6f 6e 20 76 61 6c 75 65 0a 20 20  ression value.  
55950 20 20 65 78 70 72 2e 76 61 6c 75 65 20 3d 20 76    expr.value = v
55960 61 6c 75 65 3b 0a 20 20 20 20 65 78 70 72 2e 77  alue;.    expr.w
55970 61 73 50 61 72 73 65 64 4f 6e 63 65 20 3d 20 74  asParsedOnce = t
55980 72 75 65 3b 0a 0a 20 20 20 20 2f 2f 20 69 66 20  rue;..    // if 
55990 74 68 65 20 76 61 6c 75 65 20 69 73 20 61 6e 20  the value is an 
559a0 6f 62 6a 65 63 74 20 28 61 6e 64 20 69 74 27 73  object (and it's
559b0 20 6e 6f 74 20 61 20 73 74 79 6c 65 20 6f 72 20   not a style or 
559c0 63 6c 61 73 73 20 61 74 74 72 69 62 75 74 65 29  class attribute)
559d0 20 77 65 20 63 61 6e 20 6e 6f 74 20 64 6f 20 6d   we can not do m
559e0 75 63 68 20 6d 6f 72 65 20 77 69 74 68 20 69 74  uch more with it
559f0 0a 20 20 20 20 69 66 20 28 69 73 4f 62 6a 20 26  .    if (isObj &
55a00 26 20 21 69 73 43 6c 61 73 73 41 74 74 72 20 26  & !isClassAttr &
55a10 26 20 21 69 73 53 74 79 6c 65 41 74 74 72 20 26  & !isStyleAttr &
55a20 26 20 21 69 73 54 6f 67 67 6c 65 29 20 7b 20 72  & !isToggle) { r
55a30 65 74 75 72 6e 20 7d 0a 20 20 20 20 2f 2f 20 61  eturn }.    // a
55a40 76 6f 69 64 20 74 6f 20 72 65 6e 64 65 72 20 75  void to render u
55a50 6e 64 65 66 69 6e 65 64 2f 6e 75 6c 6c 20 76 61  ndefined/null va
55a60 6c 75 65 73 0a 20 20 20 20 69 66 20 28 21 68 61  lues.    if (!ha
55a70 73 56 61 6c 75 65 29 20 7b 20 76 61 6c 75 65 20  sValue) { value 
55a80 3d 20 27 27 3b 20 7d 0a 0a 20 20 20 20 2f 2f 20  = ''; }..    // 
55a90 74 65 78 74 61 72 65 61 20 61 6e 64 20 74 65 78  textarea and tex
55aa0 74 20 6e 6f 64 65 73 20 68 61 76 65 20 6e 6f 20  t nodes have no 
55ab0 61 74 74 72 69 62 75 74 65 20 6e 61 6d 65 0a 20  attribute name. 
55ac0 20 20 20 69 66 20 28 21 61 74 74 72 4e 61 6d 65     if (!attrName
55ad0 29 20 7b 0a 20 20 20 20 20 20 2f 2f 20 61 62 6f  ) {.      // abo
55ae0 75 74 20 23 38 31 35 20 77 2f 6f 20 72 65 70 6c  ut #815 w/o repl
55af0 61 63 65 3a 20 74 68 65 20 62 72 6f 77 73 65 72  ace: the browser
55b00 20 63 6f 6e 76 65 72 74 73 20 74 68 65 20 76 61   converts the va
55b10 6c 75 65 20 74 6f 20 61 20 73 74 72 69 6e 67 2c  lue to a string,
55b20 0a 20 20 20 20 20 20 2f 2f 20 74 68 65 20 63 6f  .      // the co
55b30 6d 70 61 72 69 73 6f 6e 20 62 79 20 22 3d 3d 22  mparison by "=="
55b40 20 64 6f 65 73 20 74 6f 6f 2c 20 62 75 74 20 6e   does too, but n
55b50 6f 74 20 69 6e 20 74 68 65 20 73 65 72 76 65 72  ot in the server
55b60 0a 20 20 20 20 20 20 76 61 6c 75 65 20 2b 3d 20  .      value += 
55b70 27 27 3b 0a 20 20 20 20 20 20 2f 2f 20 74 65 73  '';.      // tes
55b80 74 20 66 6f 72 20 70 61 72 65 6e 74 20 61 76 6f  t for parent avo
55b90 69 64 73 20 65 72 72 6f 72 20 77 69 74 68 20 69  ids error with i
55ba0 6e 76 61 6c 69 64 20 61 73 73 69 67 6e 6d 65 6e  nvalid assignmen
55bb0 74 20 74 6f 20 6e 6f 64 65 56 61 6c 75 65 0a 20  t to nodeValue. 
55bc0 20 20 20 20 20 69 66 20 28 70 61 72 65 6e 74 29       if (parent)
55bd0 20 7b 0a 20 20 20 20 20 20 20 20 2f 2f 20 63 61   {.        // ca
55be0 63 68 65 20 74 68 65 20 70 61 72 65 6e 74 20 6e  che the parent n
55bf0 6f 64 65 20 62 65 63 61 75 73 65 20 73 6f 6d 65  ode because some
55c00 68 6f 77 20 69 74 20 77 69 6c 6c 20 62 65 63 6f  how it will beco
55c10 6d 65 20 6e 75 6c 6c 20 6f 6e 20 49 45 0a 20 20  me null on IE.  
55c20 20 20 20 20 20 20 2f 2f 20 6f 6e 20 74 68 65 20        // on the 
55c30 6e 65 78 74 20 69 74 65 72 61 74 69 6f 6e 0a 20  next iteration. 
55c40 20 20 20 20 20 20 20 65 78 70 72 2e 70 61 72 65         expr.pare
55c50 6e 74 20 3d 20 70 61 72 65 6e 74 3b 0a 20 20 20  nt = parent;.   
55c60 20 20 20 20 20 69 66 20 28 70 61 72 65 6e 74 2e       if (parent.
55c70 74 61 67 4e 61 6d 65 20 3d 3d 3d 20 27 54 45 58  tagName === 'TEX
55c80 54 41 52 45 41 27 29 20 7b 0a 20 20 20 20 20 20  TAREA') {.      
55c90 20 20 20 20 70 61 72 65 6e 74 2e 76 61 6c 75 65      parent.value
55ca0 20 3d 20 76 61 6c 75 65 3b 20 20 20 20 20 20 20   = value;       
55cb0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
55cc0 23 31 31 31 33 0a 20 20 20 20 20 20 20 20 20 20  #1113.          
55cd0 69 66 20 28 21 49 45 5f 56 45 52 53 49 4f 4e 29  if (!IE_VERSION)
55ce0 20 7b 20 64 6f 6d 2e 6e 6f 64 65 56 61 6c 75 65   { dom.nodeValue
55cf0 20 3d 20 76 61 6c 75 65 3b 20 7d 20 20 2f 2f 20   = value; }  // 
55d00 23 31 36 32 35 20 49 45 20 74 68 72 6f 77 73 20  #1625 IE throws 
55d10 68 65 72 65 2c 20 6e 6f 64 65 56 61 6c 75 65 0a  here, nodeValue.
55d20 20 20 20 20 20 20 20 20 7d 20 20 20 20 20 20 20          }       
55d30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
55d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
55d50 20 20 2f 2f 20 77 69 6c 6c 20 62 65 20 61 76 61    // will be ava
55d60 69 6c 61 62 6c 65 20 6f 6e 20 27 75 70 64 61 74  ilable on 'updat
55d70 65 64 27 0a 20 20 20 20 20 20 20 20 65 6c 73 65  ed'.        else
55d80 20 7b 20 64 6f 6d 2e 6e 6f 64 65 56 61 6c 75 65   { dom.nodeValue
55d90 20 3d 20 76 61 6c 75 65 3b 20 7d 0a 20 20 20 20   = value; }.    
55da0 20 20 7d 0a 20 20 20 20 20 20 72 65 74 75 72 6e    }.      return
55db0 0a 20 20 20 20 7d 0a 0a 20 20 20 20 73 77 69 74  .    }..    swit
55dc0 63 68 20 28 74 72 75 65 29 20 7b 0a 20 20 20 20  ch (true) {.    
55dd0 2f 2f 20 68 61 6e 64 6c 65 20 65 76 65 6e 74 73  // handle events
55de0 20 62 69 6e 64 69 6e 67 0a 20 20 20 20 63 61 73   binding.    cas
55df0 65 20 69 73 46 75 6e 63 74 69 6f 6e 28 76 61 6c  e isFunction(val
55e00 75 65 29 3a 0a 20 20 20 20 20 20 69 66 20 28 69  ue):.      if (i
55e10 73 45 76 65 6e 74 41 74 74 72 69 62 75 74 65 28  sEventAttribute(
55e20 61 74 74 72 4e 61 6d 65 29 29 20 7b 0a 20 20 20  attrName)) {.   
55e30 20 20 20 20 20 73 65 74 45 76 65 6e 74 48 61 6e       setEventHan
55e40 64 6c 65 72 28 61 74 74 72 4e 61 6d 65 2c 20 76  dler(attrName, v
55e50 61 6c 75 65 2c 20 64 6f 6d 2c 20 74 68 69 73 29  alue, dom, this)
55e60 3b 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20  ;.      }.      
55e70 62 72 65 61 6b 0a 20 20 20 20 2f 2f 20 73 68 6f  break.    // sho
55e80 77 20 2f 20 68 69 64 65 0a 20 20 20 20 63 61 73  w / hide.    cas
55e90 65 20 69 73 54 6f 67 67 6c 65 3a 0a 20 20 20 20  e isToggle:.    
55ea0 20 20 74 6f 67 67 6c 65 56 69 73 69 62 69 6c 69    toggleVisibili
55eb0 74 79 28 64 6f 6d 2c 20 61 74 74 72 4e 61 6d 65  ty(dom, attrName
55ec0 20 3d 3d 3d 20 48 49 44 45 5f 44 49 52 45 43 54   === HIDE_DIRECT
55ed0 49 56 45 20 3f 20 21 76 61 6c 75 65 20 3a 20 76  IVE ? !value : v
55ee0 61 6c 75 65 29 3b 0a 20 20 20 20 20 20 62 72 65  alue);.      bre
55ef0 61 6b 0a 20 20 20 20 2f 2f 20 68 61 6e 64 6c 65  ak.    // handle
55f00 20 61 74 74 72 69 62 75 74 65 73 0a 20 20 20 20   attributes.    
55f10 64 65 66 61 75 6c 74 3a 0a 20 20 20 20 20 20 69  default:.      i
55f20 66 20 28 65 78 70 72 2e 62 6f 6f 6c 29 20 7b 0a  f (expr.bool) {.
55f30 20 20 20 20 20 20 20 20 64 6f 6d 5b 61 74 74 72          dom[attr
55f40 4e 61 6d 65 5d 20 3d 20 76 61 6c 75 65 3b 0a 20  Name] = value;. 
55f50 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 69 66       }..      if
55f60 20 28 69 73 56 61 6c 75 65 41 74 74 72 20 26 26   (isValueAttr &&
55f70 20 64 6f 6d 2e 76 61 6c 75 65 20 21 3d 3d 20 76   dom.value !== v
55f80 61 6c 75 65 29 20 7b 0a 20 20 20 20 20 20 20 20  alue) {.        
55f90 64 6f 6d 2e 76 61 6c 75 65 20 3d 20 76 61 6c 75  dom.value = valu
55fa0 65 3b 0a 20 20 20 20 20 20 7d 20 65 6c 73 65 20  e;.      } else 
55fb0 69 66 20 28 68 61 73 56 61 6c 75 65 20 26 26 20  if (hasValue && 
55fc0 76 61 6c 75 65 20 21 3d 3d 20 66 61 6c 73 65 29  value !== false)
55fd0 20 7b 0a 20 20 20 20 20 20 20 20 73 65 74 41 74   {.        setAt
55fe0 74 72 69 62 75 74 65 28 64 6f 6d 2c 20 61 74 74  tribute(dom, att
55ff0 72 4e 61 6d 65 2c 20 76 61 6c 75 65 29 3b 0a 20  rName, value);. 
56000 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 2f 2f       }..      //
56010 20 6d 61 6b 65 20 73 75 72 65 20 74 68 61 74 20   make sure that 
56020 69 6e 20 63 61 73 65 20 6f 66 20 73 74 79 6c 65  in case of style
56030 20 63 68 61 6e 67 65 73 0a 20 20 20 20 20 20 2f   changes.      /
56040 2f 20 74 68 65 20 65 6c 65 6d 65 6e 74 20 73 74  / the element st
56050 61 79 73 20 68 69 64 64 65 6e 0a 20 20 20 20 20  ays hidden.     
56060 20 69 66 20 28 69 73 53 74 79 6c 65 41 74 74 72   if (isStyleAttr
56070 20 26 26 20 64 6f 6d 2e 68 69 64 64 65 6e 29 20   && dom.hidden) 
56080 7b 20 74 6f 67 67 6c 65 56 69 73 69 62 69 6c 69  { toggleVisibili
56090 74 79 28 64 6f 6d 2c 20 66 61 6c 73 65 29 3b 20  ty(dom, false); 
560a0 7d 0a 20 20 20 20 7d 0a 20 20 7d 0a 0a 20 20 2f  }.    }.  }..  /
560b0 2a 2a 0a 20 20 20 2a 20 55 70 64 61 74 65 20 61  **.   * Update a
560c0 6c 6c 20 74 68 65 20 65 78 70 72 65 73 73 69 6f  ll the expressio
560d0 6e 73 20 69 6e 20 61 20 54 61 67 20 69 6e 73 74  ns in a Tag inst
560e0 61 6e 63 65 0a 20 20 20 2a 20 40 74 68 69 73 20  ance.   * @this 
560f0 54 61 67 0a 20 20 20 2a 20 40 70 61 72 61 6d 20  Tag.   * @param 
56100 7b 20 41 72 72 61 79 20 7d 20 65 78 70 72 65 73  { Array } expres
56110 73 69 6f 6e 73 20 2d 20 65 78 70 72 65 73 73 69  sions - expressi
56120 6f 6e 20 74 68 61 74 20 6d 75 73 74 20 62 65 20  on that must be 
56130 72 65 20 65 76 61 6c 75 61 74 65 64 0a 20 20 20  re evaluated.   
56140 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 75 70  */.  function up
56150 64 61 74 65 28 65 78 70 72 65 73 73 69 6f 6e 73  date(expressions
56160 29 20 7b 0a 20 20 20 20 65 61 63 68 28 65 78 70  ) {.    each(exp
56170 72 65 73 73 69 6f 6e 73 2c 20 75 70 64 61 74 65  ressions, update
56180 45 78 70 72 65 73 73 69 6f 6e 2e 62 69 6e 64 28  Expression.bind(
56190 74 68 69 73 29 29 3b 0a 20 20 7d 0a 0a 20 20 2f  this));.  }..  /
561a0 2a 2a 0a 20 20 20 2a 20 57 65 20 6e 65 65 64 20  **.   * We need 
561b0 74 6f 20 75 70 64 61 74 65 20 6f 70 74 73 20 66  to update opts f
561c0 6f 72 20 74 68 69 73 20 74 61 67 2e 20 54 68 61  or this tag. Tha
561d0 74 20 72 65 71 75 69 72 65 73 20 75 70 64 61 74  t requires updat
561e0 69 6e 67 20 74 68 65 20 65 78 70 72 65 73 73 69  ing the expressi
561f0 6f 6e 73 0a 20 20 20 2a 20 69 6e 20 61 6e 79 20  ons.   * in any 
56200 61 74 74 72 69 62 75 74 65 73 20 6f 6e 20 74 68  attributes on th
56210 65 20 74 61 67 2c 20 61 6e 64 20 74 68 65 6e 20  e tag, and then 
56220 63 6f 70 79 69 6e 67 20 74 68 65 20 72 65 73 75  copying the resu
56230 6c 74 20 6f 6e 74 6f 20 6f 70 74 73 2e 0a 20 20  lt onto opts..  
56240 20 2a 20 40 74 68 69 73 20 54 61 67 0a 20 20 20   * @this Tag.   
56250 2a 20 40 70 61 72 61 6d 20 20 20 7b 42 6f 6f 6c  * @param   {Bool
56260 65 61 6e 7d 20 69 73 4c 6f 6f 70 20 2d 20 69 73  ean} isLoop - is
56270 20 69 74 20 61 20 6c 6f 6f 70 20 74 61 67 3f 0a   it a loop tag?.
56280 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20     * @param   { 
56290 54 61 67 20 7d 20 20 70 61 72 65 6e 74 20 2d 20  Tag }  parent - 
562a0 70 61 72 65 6e 74 20 74 61 67 20 6e 6f 64 65 0a  parent tag node.
562b0 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20     * @param   { 
562c0 42 6f 6f 6c 65 61 6e 20 7d 20 20 69 73 41 6e 6f  Boolean }  isAno
562d0 6e 79 6d 6f 75 73 20 2d 20 69 73 20 69 74 20 61  nymous - is it a
562e0 20 74 61 67 20 77 69 74 68 6f 75 74 20 61 6e 79   tag without any
562f0 20 69 6d 70 6c 3f 20 28 61 20 74 61 67 20 6e 6f   impl? (a tag no
56300 74 20 72 65 67 69 73 74 65 72 65 64 29 0a 20 20  t registered).  
56310 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 4f 62   * @param   { Ob
56320 6a 65 63 74 20 7d 20 20 6f 70 74 73 20 2d 20 74  ject }  opts - t
56330 61 67 20 6f 70 74 69 6f 6e 73 0a 20 20 20 2a 20  ag options.   * 
56340 40 70 61 72 61 6d 20 20 20 7b 20 41 72 72 61 79  @param   { Array
56350 20 7d 20 20 69 6e 73 74 41 74 74 72 73 20 2d 20   }  instAttrs - 
56360 74 61 67 20 61 74 74 72 69 62 75 74 65 73 20 61  tag attributes a
56370 72 72 61 79 0a 20 20 20 2a 2f 0a 20 20 66 75 6e  rray.   */.  fun
56380 63 74 69 6f 6e 20 75 70 64 61 74 65 4f 70 74 73  ction updateOpts
56390 28 69 73 4c 6f 6f 70 2c 20 70 61 72 65 6e 74 2c  (isLoop, parent,
563a0 20 69 73 41 6e 6f 6e 79 6d 6f 75 73 2c 20 6f 70   isAnonymous, op
563b0 74 73 2c 20 69 6e 73 74 41 74 74 72 73 29 20 7b  ts, instAttrs) {
563c0 0a 20 20 20 20 2f 2f 20 69 73 41 6e 6f 6e 79 6d  .    // isAnonym
563d0 6f 75 73 20 60 65 61 63 68 60 20 74 61 67 73 20  ous `each` tags 
563e0 74 72 65 61 74 20 60 64 6f 6d 60 20 61 6e 64 20  treat `dom` and 
563f0 60 72 6f 6f 74 60 20 64 69 66 66 65 72 65 6e 74  `root` different
56400 6c 79 2e 20 49 6e 20 74 68 69 73 20 63 61 73 65  ly. In this case
56410 0a 20 20 20 20 2f 2f 20 28 61 6e 64 20 6f 6e 6c  .    // (and onl
56420 79 20 74 68 69 73 20 63 61 73 65 29 20 77 65 20  y this case) we 
56430 64 6f 6e 27 74 20 6e 65 65 64 20 74 6f 20 64 6f  don't need to do
56440 20 75 70 64 61 74 65 4f 70 74 73 2c 20 62 65 63   updateOpts, bec
56450 61 75 73 65 20 74 68 65 20 72 65 67 75 6c 61 72  ause the regular
56460 20 70 61 72 73 65 0a 20 20 20 20 2f 2f 20 77 69   parse.    // wi
56470 6c 6c 20 75 70 64 61 74 65 20 74 68 6f 73 65 20  ll update those 
56480 61 74 74 72 73 2e 20 50 6c 75 73 2c 20 69 73 41  attrs. Plus, isA
56490 6e 6f 6e 79 6d 6f 75 73 20 74 61 67 73 20 64 6f  nonymous tags do
564a0 6e 27 74 20 6e 65 65 64 20 6f 70 74 73 20 61 6e  n't need opts an
564b0 79 77 61 79 0a 20 20 20 20 69 66 20 28 69 73 4c  yway.    if (isL
564c0 6f 6f 70 20 26 26 20 69 73 41 6e 6f 6e 79 6d 6f  oop && isAnonymo
564d0 75 73 29 20 7b 20 72 65 74 75 72 6e 20 7d 0a 20  us) { return }. 
564e0 20 20 20 76 61 72 20 63 74 78 20 3d 20 69 73 4c     var ctx = isL
564f0 6f 6f 70 20 3f 20 69 6e 68 65 72 69 74 50 61 72  oop ? inheritPar
56500 65 6e 74 50 72 6f 70 73 2e 63 61 6c 6c 28 74 68  entProps.call(th
56510 69 73 29 20 3a 20 70 61 72 65 6e 74 20 7c 7c 20  is) : parent || 
56520 74 68 69 73 3b 0a 0a 20 20 20 20 65 61 63 68 28  this;..    each(
56530 69 6e 73 74 41 74 74 72 73 2c 20 66 75 6e 63 74  instAttrs, funct
56540 69 6f 6e 20 28 61 74 74 72 29 20 7b 0a 20 20 20  ion (attr) {.   
56550 20 20 20 69 66 20 28 61 74 74 72 2e 65 78 70 72     if (attr.expr
56560 29 20 7b 20 75 70 64 61 74 65 45 78 70 72 65 73  ) { updateExpres
56570 73 69 6f 6e 2e 63 61 6c 6c 28 63 74 78 2c 20 61  sion.call(ctx, a
56580 74 74 72 2e 65 78 70 72 29 3b 20 7d 0a 20 20 20  ttr.expr); }.   
56590 20 20 20 2f 2f 20 6e 6f 72 6d 61 6c 69 7a 65 20     // normalize 
565a0 74 68 65 20 61 74 74 72 69 62 75 74 65 20 6e 61  the attribute na
565b0 6d 65 73 0a 20 20 20 20 20 20 6f 70 74 73 5b 74  mes.      opts[t
565c0 6f 43 61 6d 65 6c 28 61 74 74 72 2e 6e 61 6d 65  oCamel(attr.name
565d0 29 2e 72 65 70 6c 61 63 65 28 41 54 54 52 53 5f  ).replace(ATTRS_
565e0 50 52 45 46 49 58 2c 20 27 27 29 5d 20 3d 20 61  PREFIX, '')] = a
565f0 74 74 72 2e 65 78 70 72 20 3f 20 61 74 74 72 2e  ttr.expr ? attr.
56600 65 78 70 72 2e 76 61 6c 75 65 20 3a 20 61 74 74  expr.value : att
56610 72 2e 76 61 6c 75 65 3b 0a 20 20 20 20 7d 29 3b  r.value;.    });
56620 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a  .  }..  /**.   *
56630 20 55 70 64 61 74 65 20 74 68 65 20 74 61 67 20   Update the tag 
56640 65 78 70 72 65 73 73 69 6f 6e 73 20 61 6e 64 20  expressions and 
56650 6f 70 74 69 6f 6e 73 0a 20 20 20 2a 20 40 70 61  options.   * @pa
56660 72 61 6d 20 7b 20 54 61 67 20 7d 20 74 61 67 20  ram { Tag } tag 
56670 2d 20 74 61 67 20 6f 62 6a 65 63 74 0a 20 20 20  - tag object.   
56680 2a 20 40 70 61 72 61 6d 20 7b 20 2a 20 7d 20 64  * @param { * } d
56690 61 74 61 20 2d 20 64 61 74 61 20 77 65 20 77 61  ata - data we wa
566a0 6e 74 20 74 6f 20 75 73 65 20 74 6f 20 65 78 74  nt to use to ext
566b0 65 6e 64 20 74 68 65 20 74 61 67 20 70 72 6f 70  end the tag prop
566c0 65 72 74 69 65 73 0a 20 20 20 2a 20 40 70 61 72  erties.   * @par
566d0 61 6d 20 7b 20 41 72 72 61 79 20 7d 20 65 78 70  am { Array } exp
566e0 72 65 73 73 69 6f 6e 73 20 2d 20 63 6f 6d 70 6f  ressions - compo
566f0 6e 65 6e 74 20 65 78 70 72 65 73 73 69 6f 6e 73  nent expressions
56700 20 61 72 72 61 79 0a 20 20 20 2a 20 40 72 65 74   array.   * @ret
56710 75 72 6e 73 20 7b 20 54 61 67 20 7d 20 74 68 65  urns { Tag } the
56720 20 63 75 72 72 65 6e 74 20 74 61 67 20 69 6e 73   current tag ins
56730 74 61 6e 63 65 0a 20 20 20 2a 2f 0a 20 20 66 75  tance.   */.  fu
56740 6e 63 74 69 6f 6e 20 63 6f 6d 70 6f 6e 65 6e 74  nction component
56750 55 70 64 61 74 65 28 74 61 67 2c 20 64 61 74 61  Update(tag, data
56760 2c 20 65 78 70 72 65 73 73 69 6f 6e 73 29 20 7b  , expressions) {
56770 0a 20 20 20 20 76 61 72 20 5f 5f 20 3d 20 74 61  .    var __ = ta
56780 67 2e 5f 5f 3b 0a 20 20 20 20 76 61 72 20 6e 65  g.__;.    var ne
56790 78 74 4f 70 74 73 20 3d 20 7b 7d 3b 0a 20 20 20  xtOpts = {};.   
567a0 20 76 61 72 20 63 61 6e 54 72 69 67 67 65 72 20   var canTrigger 
567b0 3d 20 74 61 67 2e 69 73 4d 6f 75 6e 74 65 64 20  = tag.isMounted 
567c0 26 26 20 21 5f 5f 2e 73 6b 69 70 41 6e 6f 6e 79  && !__.skipAnony
567d0 6d 6f 75 73 3b 0a 0a 20 20 20 20 2f 2f 20 69 6e  mous;..    // in
567e0 68 65 72 69 74 20 70 72 6f 70 65 72 74 69 65 73  herit properties
567f0 20 66 72 6f 6d 20 74 68 65 20 70 61 72 65 6e 74   from the parent
56800 20 74 61 67 0a 20 20 20 20 69 66 20 28 5f 5f 2e   tag.    if (__.
56810 69 73 41 6e 6f 6e 79 6d 6f 75 73 20 26 26 20 5f  isAnonymous && _
56820 5f 2e 70 61 72 65 6e 74 29 20 7b 20 65 78 74 65  _.parent) { exte
56830 6e 64 28 74 61 67 2c 20 5f 5f 2e 70 61 72 65 6e  nd(tag, __.paren
56840 74 29 3b 20 7d 0a 20 20 20 20 65 78 74 65 6e 64  t); }.    extend
56850 28 74 61 67 2c 20 64 61 74 61 29 3b 0a 0a 20 20  (tag, data);..  
56860 20 20 75 70 64 61 74 65 4f 70 74 73 2e 61 70 70    updateOpts.app
56870 6c 79 28 74 61 67 2c 20 5b 5f 5f 2e 69 73 4c 6f  ly(tag, [__.isLo
56880 6f 70 2c 20 5f 5f 2e 70 61 72 65 6e 74 2c 20 5f  op, __.parent, _
56890 5f 2e 69 73 41 6e 6f 6e 79 6d 6f 75 73 2c 20 6e  _.isAnonymous, n
568a0 65 78 74 4f 70 74 73 2c 20 5f 5f 2e 69 6e 73 74  extOpts, __.inst
568b0 41 74 74 72 73 5d 29 3b 0a 0a 20 20 20 20 69 66  Attrs]);..    if
568c0 20 28 0a 20 20 20 20 20 20 63 61 6e 54 72 69 67   (.      canTrig
568d0 67 65 72 20 26 26 0a 20 20 20 20 20 20 74 61 67  ger &&.      tag
568e0 2e 69 73 4d 6f 75 6e 74 65 64 20 26 26 0a 20 20  .isMounted &&.  
568f0 20 20 20 20 69 73 46 75 6e 63 74 69 6f 6e 28 74      isFunction(t
56900 61 67 2e 73 68 6f 75 6c 64 55 70 64 61 74 65 29  ag.shouldUpdate)
56910 20 26 26 20 21 74 61 67 2e 73 68 6f 75 6c 64 55   && !tag.shouldU
56920 70 64 61 74 65 28 64 61 74 61 2c 20 6e 65 78 74  pdate(data, next
56930 4f 70 74 73 29 0a 20 20 20 20 29 20 7b 0a 20 20  Opts).    ) {.  
56940 20 20 20 20 72 65 74 75 72 6e 20 74 61 67 0a 20      return tag. 
56950 20 20 20 7d 0a 0a 20 20 20 20 65 78 74 65 6e 64     }..    extend
56960 28 74 61 67 2e 6f 70 74 73 2c 20 6e 65 78 74 4f  (tag.opts, nextO
56970 70 74 73 29 3b 0a 0a 20 20 20 20 69 66 20 28 63  pts);..    if (c
56980 61 6e 54 72 69 67 67 65 72 29 20 7b 20 74 61 67  anTrigger) { tag
56990 2e 74 72 69 67 67 65 72 28 27 75 70 64 61 74 65  .trigger('update
569a0 27 2c 20 64 61 74 61 29 3b 20 7d 0a 20 20 20 20  ', data); }.    
569b0 75 70 64 61 74 65 2e 63 61 6c 6c 28 74 61 67 2c  update.call(tag,
569c0 20 65 78 70 72 65 73 73 69 6f 6e 73 29 3b 0a 20   expressions);. 
569d0 20 20 20 69 66 20 28 63 61 6e 54 72 69 67 67 65     if (canTrigge
569e0 72 29 20 7b 20 74 61 67 2e 74 72 69 67 67 65 72  r) { tag.trigger
569f0 28 27 75 70 64 61 74 65 64 27 29 3b 20 7d 0a 0a  ('updated'); }..
56a00 20 20 20 20 72 65 74 75 72 6e 20 74 61 67 0a 20      return tag. 
56a10 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 47   }..  /**.   * G
56a20 65 74 20 73 65 6c 65 63 74 6f 72 73 20 66 6f 72  et selectors for
56a30 20 74 61 67 73 0a 20 20 20 2a 20 40 70 61 72 61   tags.   * @para
56a40 6d 20 20 20 7b 20 41 72 72 61 79 20 7d 20 74 61  m   { Array } ta
56a50 67 73 20 2d 20 74 61 67 20 6e 61 6d 65 73 20 74  gs - tag names t
56a60 6f 20 73 65 6c 65 63 74 0a 20 20 20 2a 20 40 72  o select.   * @r
56a70 65 74 75 72 6e 73 20 7b 20 53 74 72 69 6e 67 20  eturns { String 
56a80 7d 20 73 65 6c 65 63 74 6f 72 0a 20 20 20 2a 2f  } selector.   */
56a90 0a 20 20 66 75 6e 63 74 69 6f 6e 20 71 75 65 72  .  function quer
56aa0 79 28 74 61 67 73 29 20 7b 0a 20 20 20 20 2f 2f  y(tags) {.    //
56ab0 20 73 65 6c 65 63 74 20 61 6c 6c 20 74 61 67 73   select all tags
56ac0 0a 20 20 20 20 69 66 20 28 21 74 61 67 73 29 20  .    if (!tags) 
56ad0 7b 0a 20 20 20 20 20 20 76 61 72 20 6b 65 79 73  {.      var keys
56ae0 20 3d 20 4f 62 6a 65 63 74 2e 6b 65 79 73 28 5f   = Object.keys(_
56af0 5f 54 41 47 5f 49 4d 50 4c 29 3b 0a 20 20 20 20  _TAG_IMPL);.    
56b00 20 20 72 65 74 75 72 6e 20 6b 65 79 73 20 2b 20    return keys + 
56b10 71 75 65 72 79 28 6b 65 79 73 29 0a 20 20 20 20  query(keys).    
56b20 7d 0a 0a 20 20 20 20 72 65 74 75 72 6e 20 74 61  }..    return ta
56b30 67 73 0a 20 20 20 20 20 20 2e 66 69 6c 74 65 72  gs.      .filter
56b40 28 66 75 6e 63 74 69 6f 6e 20 28 74 29 20 7b 20  (function (t) { 
56b50 72 65 74 75 72 6e 20 21 2f 5b 5e 2d 5c 77 5d 2f  return !/[^-\w]/
56b60 2e 74 65 73 74 28 74 29 3b 20 7d 29 0a 20 20 20  .test(t); }).   
56b70 20 20 20 2e 72 65 64 75 63 65 28 66 75 6e 63 74     .reduce(funct
56b80 69 6f 6e 20 28 6c 69 73 74 2c 20 74 29 20 7b 0a  ion (list, t) {.
56b90 20 20 20 20 20 20 20 20 76 61 72 20 6e 61 6d 65          var name
56ba0 20 3d 20 74 2e 74 72 69 6d 28 29 2e 74 6f 4c 6f   = t.trim().toLo
56bb0 77 65 72 43 61 73 65 28 29 3b 0a 20 20 20 20 20  werCase();.     
56bc0 20 20 20 72 65 74 75 72 6e 20 6c 69 73 74 20 2b     return list +
56bd0 20 22 2c 5b 22 20 2b 20 49 53 5f 44 49 52 45 43   ",[" + IS_DIREC
56be0 54 49 56 45 20 2b 20 22 3d 5c 22 22 20 2b 20 6e  TIVE + "=\"" + n
56bf0 61 6d 65 20 2b 20 22 5c 22 5d 22 0a 20 20 20 20  ame + "\"]".    
56c00 20 20 7d 2c 20 27 27 29 0a 20 20 7d 0a 0a 20 20    }, '').  }..  
56c10 2f 2a 2a 0a 20 20 20 2a 20 41 6e 6f 74 68 65 72  /**.   * Another
56c20 20 77 61 79 20 74 6f 20 63 72 65 61 74 65 20 61   way to create a
56c30 20 72 69 6f 74 20 74 61 67 20 61 20 62 69 74 20   riot tag a bit 
56c40 6d 6f 72 65 20 65 73 36 20 66 72 69 65 6e 64 6c  more es6 friendl
56c50 79 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 7b 20  y.   * @param { 
56c60 48 54 4d 4c 45 6c 65 6d 65 6e 74 20 7d 20 65 6c  HTMLElement } el
56c70 20 2d 20 74 61 67 20 44 4f 4d 20 73 65 6c 65 63   - tag DOM selec
56c80 74 6f 72 20 6f 72 20 44 4f 4d 20 6e 6f 64 65 2f  tor or DOM node/
56c90 73 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 7b 20  s.   * @param { 
56ca0 4f 62 6a 65 63 74 20 7d 20 6f 70 74 73 20 2d 20  Object } opts - 
56cb0 74 61 67 20 6c 6f 67 69 63 0a 20 20 20 2a 20 40  tag logic.   * @
56cc0 72 65 74 75 72 6e 73 20 7b 20 54 61 67 20 7d 20  returns { Tag } 
56cd0 6e 65 77 20 72 69 6f 74 20 74 61 67 20 69 6e 73  new riot tag ins
56ce0 74 61 6e 63 65 0a 20 20 20 2a 2f 0a 20 20 66 75  tance.   */.  fu
56cf0 6e 63 74 69 6f 6e 20 54 61 67 28 65 6c 2c 20 6f  nction Tag(el, o
56d00 70 74 73 29 20 7b 0a 20 20 20 20 2f 2f 20 67 65  pts) {.    // ge
56d10 74 20 74 68 65 20 74 61 67 20 70 72 6f 70 65 72  t the tag proper
56d20 74 69 65 73 20 66 72 6f 6d 20 74 68 65 20 63 6c  ties from the cl
56d30 61 73 73 20 63 6f 6e 73 74 72 75 63 74 6f 72 0a  ass constructor.
56d40 20 20 20 20 76 61 72 20 72 65 66 20 3d 20 74 68      var ref = th
56d50 69 73 3b 0a 20 20 20 20 76 61 72 20 6e 61 6d 65  is;.    var name
56d60 20 3d 20 72 65 66 2e 6e 61 6d 65 3b 0a 20 20 20   = ref.name;.   
56d70 20 76 61 72 20 74 6d 70 6c 20 3d 20 72 65 66 2e   var tmpl = ref.
56d80 74 6d 70 6c 3b 0a 20 20 20 20 76 61 72 20 63 73  tmpl;.    var cs
56d90 73 20 3d 20 72 65 66 2e 63 73 73 3b 0a 20 20 20  s = ref.css;.   
56da0 20 76 61 72 20 61 74 74 72 73 20 3d 20 72 65 66   var attrs = ref
56db0 2e 61 74 74 72 73 3b 0a 20 20 20 20 76 61 72 20  .attrs;.    var 
56dc0 6f 6e 43 72 65 61 74 65 20 3d 20 72 65 66 2e 6f  onCreate = ref.o
56dd0 6e 43 72 65 61 74 65 3b 0a 20 20 20 20 2f 2f 20  nCreate;.    // 
56de0 72 65 67 69 73 74 65 72 20 61 20 6e 65 77 20 74  register a new t
56df0 61 67 20 61 6e 64 20 63 61 63 68 65 20 74 68 65  ag and cache the
56e00 20 63 6c 61 73 73 20 70 72 6f 74 6f 74 79 70 65   class prototype
56e10 0a 20 20 20 20 69 66 20 28 21 5f 5f 54 41 47 5f  .    if (!__TAG_
56e20 49 4d 50 4c 5b 6e 61 6d 65 5d 29 20 7b 0a 20 20  IMPL[name]) {.  
56e30 20 20 20 20 74 61 67 28 6e 61 6d 65 2c 20 74 6d      tag(name, tm
56e40 70 6c 2c 20 63 73 73 2c 20 61 74 74 72 73 2c 20  pl, css, attrs, 
56e50 6f 6e 43 72 65 61 74 65 29 3b 0a 20 20 20 20 20  onCreate);.     
56e60 20 2f 2f 20 63 61 63 68 65 20 74 68 65 20 63 6c   // cache the cl
56e70 61 73 73 20 63 6f 6e 73 74 72 75 63 74 6f 72 0a  ass constructor.
56e80 20 20 20 20 20 20 5f 5f 54 41 47 5f 49 4d 50 4c        __TAG_IMPL
56e90 5b 6e 61 6d 65 5d 2e 63 6c 61 73 73 20 3d 20 74  [name].class = t
56ea0 68 69 73 2e 63 6f 6e 73 74 72 75 63 74 6f 72 3b  his.constructor;
56eb0 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2f 20 6d  .    }..    // m
56ec0 6f 75 6e 74 20 74 68 65 20 74 61 67 20 75 73 69  ount the tag usi
56ed0 6e 67 20 74 68 65 20 63 6c 61 73 73 20 69 6e 73  ng the class ins
56ee0 74 61 6e 63 65 0a 20 20 20 20 6d 6f 75 6e 74 24  tance.    mount$
56ef0 31 28 65 6c 2c 20 6e 61 6d 65 2c 20 6f 70 74 73  1(el, name, opts
56f00 2c 20 74 68 69 73 29 3b 0a 20 20 20 20 2f 2f 20  , this);.    // 
56f10 69 6e 6a 65 63 74 20 74 68 65 20 63 6f 6d 70 6f  inject the compo
56f20 6e 65 6e 74 20 63 73 73 0a 20 20 20 20 69 66 20  nent css.    if 
56f30 28 63 73 73 29 20 7b 20 73 74 79 6c 65 4d 61 6e  (css) { styleMan
56f40 61 67 65 72 2e 69 6e 6a 65 63 74 28 29 3b 20 7d  ager.inject(); }
56f50 0a 0a 20 20 20 20 72 65 74 75 72 6e 20 74 68 69  ..    return thi
56f60 73 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20  s.  }..  /**.   
56f70 2a 20 43 72 65 61 74 65 20 61 20 6e 65 77 20 72  * Create a new r
56f80 69 6f 74 20 74 61 67 20 69 6d 70 6c 65 6d 65 6e  iot tag implemen
56f90 74 61 74 69 6f 6e 0a 20 20 20 2a 20 40 70 61 72  tation.   * @par
56fa0 61 6d 20 20 20 7b 20 53 74 72 69 6e 67 20 7d 20  am   { String } 
56fb0 20 20 6e 61 6d 65 20 2d 20 6e 61 6d 65 2f 69 64    name - name/id
56fc0 20 6f 66 20 74 68 65 20 6e 65 77 20 72 69 6f 74   of the new riot
56fd0 20 74 61 67 0a 20 20 20 2a 20 40 70 61 72 61 6d   tag.   * @param
56fe0 20 20 20 7b 20 53 74 72 69 6e 67 20 7d 20 20 20     { String }   
56ff0 74 6d 70 6c 20 2d 20 74 61 67 20 74 65 6d 70 6c  tmpl - tag templ
57000 61 74 65 0a 20 20 20 2a 20 40 70 61 72 61 6d 20  ate.   * @param 
57010 20 20 7b 20 53 74 72 69 6e 67 20 7d 20 20 20 63    { String }   c
57020 73 73 20 2d 20 63 75 73 74 6f 6d 20 74 61 67 20  ss - custom tag 
57030 63 73 73 0a 20 20 20 2a 20 40 70 61 72 61 6d 20  css.   * @param 
57040 20 20 7b 20 53 74 72 69 6e 67 20 7d 20 20 20 61    { String }   a
57050 74 74 72 73 20 2d 20 72 6f 6f 74 20 74 61 67 20  ttrs - root tag 
57060 61 74 74 72 69 62 75 74 65 73 0a 20 20 20 2a 20  attributes.   * 
57070 40 70 61 72 61 6d 20 20 20 7b 20 46 75 6e 63 74  @param   { Funct
57080 69 6f 6e 20 7d 20 66 6e 20 2d 20 75 73 65 72 20  ion } fn - user 
57090 66 75 6e 63 74 69 6f 6e 0a 20 20 20 2a 20 40 72  function.   * @r
570a0 65 74 75 72 6e 73 20 7b 20 53 74 72 69 6e 67 20  eturns { String 
570b0 7d 20 6e 61 6d 65 2f 69 64 20 6f 66 20 74 68 65  } name/id of the
570c0 20 74 61 67 20 6a 75 73 74 20 63 72 65 61 74 65   tag just create
570d0 64 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69  d.   */.  functi
570e0 6f 6e 20 74 61 67 28 6e 61 6d 65 2c 20 74 6d 70  on tag(name, tmp
570f0 6c 2c 20 63 73 73 2c 20 61 74 74 72 73 2c 20 66  l, css, attrs, f
57100 6e 29 20 7b 0a 20 20 20 20 69 66 20 28 69 73 46  n) {.    if (isF
57110 75 6e 63 74 69 6f 6e 28 61 74 74 72 73 29 29 20  unction(attrs)) 
57120 7b 0a 20 20 20 20 20 20 66 6e 20 3d 20 61 74 74  {.      fn = att
57130 72 73 3b 0a 0a 20 20 20 20 20 20 69 66 20 28 2f  rs;..      if (/
57140 5e 5b 5c 77 2d 5d 2b 5c 73 3f 3d 2f 2e 74 65 73  ^[\w-]+\s?=/.tes
57150 74 28 63 73 73 29 29 20 7b 0a 20 20 20 20 20 20  t(css)) {.      
57160 20 20 61 74 74 72 73 20 3d 20 63 73 73 3b 0a 20    attrs = css;. 
57170 20 20 20 20 20 20 20 63 73 73 20 3d 20 27 27 3b         css = '';
57180 0a 20 20 20 20 20 20 7d 20 65 6c 73 65 0a 20 20  .      } else.  
57190 20 20 20 20 20 20 7b 20 61 74 74 72 73 20 3d 20        { attrs = 
571a0 27 27 3b 20 7d 0a 20 20 20 20 7d 0a 0a 20 20 20  ''; }.    }..   
571b0 20 69 66 20 28 63 73 73 29 20 7b 0a 20 20 20 20   if (css) {.    
571c0 20 20 69 66 20 28 69 73 46 75 6e 63 74 69 6f 6e    if (isFunction
571d0 28 63 73 73 29 29 0a 20 20 20 20 20 20 20 20 7b  (css)).        {
571e0 20 66 6e 20 3d 20 63 73 73 3b 20 7d 0a 20 20 20   fn = css; }.   
571f0 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 20 20     else.        
57200 7b 20 73 74 79 6c 65 4d 61 6e 61 67 65 72 2e 61  { styleManager.a
57210 64 64 28 63 73 73 2c 20 6e 61 6d 65 29 3b 20 7d  dd(css, name); }
57220 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6e 61 6d 65  .    }..    name
57230 20 3d 20 6e 61 6d 65 2e 74 6f 4c 6f 77 65 72 43   = name.toLowerC
57240 61 73 65 28 29 3b 0a 20 20 20 20 5f 5f 54 41 47  ase();.    __TAG
57250 5f 49 4d 50 4c 5b 6e 61 6d 65 5d 20 3d 20 7b 20  _IMPL[name] = { 
57260 6e 61 6d 65 3a 20 6e 61 6d 65 2c 20 74 6d 70 6c  name: name, tmpl
57270 3a 20 74 6d 70 6c 2c 20 61 74 74 72 73 3a 20 61  : tmpl, attrs: a
57280 74 74 72 73 2c 20 66 6e 3a 20 66 6e 20 7d 3b 0a  ttrs, fn: fn };.
57290 0a 20 20 20 20 72 65 74 75 72 6e 20 6e 61 6d 65  .    return name
572a0 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a  .  }..  /**.   *
572b0 20 43 72 65 61 74 65 20 61 20 6e 65 77 20 72 69   Create a new ri
572c0 6f 74 20 74 61 67 20 69 6d 70 6c 65 6d 65 6e 74  ot tag implement
572d0 61 74 69 6f 6e 20 28 66 6f 72 20 75 73 65 20 62  ation (for use b
572e0 79 20 74 68 65 20 63 6f 6d 70 69 6c 65 72 29 0a  y the compiler).
572f0 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20     * @param   { 
57300 53 74 72 69 6e 67 20 7d 20 20 20 6e 61 6d 65 20  String }   name 
57310 2d 20 6e 61 6d 65 2f 69 64 20 6f 66 20 74 68 65  - name/id of the
57320 20 6e 65 77 20 72 69 6f 74 20 74 61 67 0a 20 20   new riot tag.  
57330 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 53 74   * @param   { St
57340 72 69 6e 67 20 7d 20 20 20 74 6d 70 6c 20 2d 20  ring }   tmpl - 
57350 74 61 67 20 74 65 6d 70 6c 61 74 65 0a 20 20 20  tag template.   
57360 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 53 74 72  * @param   { Str
57370 69 6e 67 20 7d 20 20 20 63 73 73 20 2d 20 63 75  ing }   css - cu
57380 73 74 6f 6d 20 74 61 67 20 63 73 73 0a 20 20 20  stom tag css.   
57390 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 53 74 72  * @param   { Str
573a0 69 6e 67 20 7d 20 20 20 61 74 74 72 73 20 2d 20  ing }   attrs - 
573b0 72 6f 6f 74 20 74 61 67 20 61 74 74 72 69 62 75  root tag attribu
573c0 74 65 73 0a 20 20 20 2a 20 40 70 61 72 61 6d 20  tes.   * @param 
573d0 20 20 7b 20 46 75 6e 63 74 69 6f 6e 20 7d 20 66    { Function } f
573e0 6e 20 2d 20 75 73 65 72 20 66 75 6e 63 74 69 6f  n - user functio
573f0 6e 0a 20 20 20 2a 20 40 72 65 74 75 72 6e 73 20  n.   * @returns 
57400 7b 20 53 74 72 69 6e 67 20 7d 20 6e 61 6d 65 2f  { String } name/
57410 69 64 20 6f 66 20 74 68 65 20 74 61 67 20 6a 75  id of the tag ju
57420 73 74 20 63 72 65 61 74 65 64 0a 20 20 20 2a 2f  st created.   */
57430 0a 20 20 66 75 6e 63 74 69 6f 6e 20 74 61 67 32  .  function tag2
57440 28 6e 61 6d 65 2c 20 74 6d 70 6c 2c 20 63 73 73  (name, tmpl, css
57450 2c 20 61 74 74 72 73 2c 20 66 6e 29 20 7b 0a 20  , attrs, fn) {. 
57460 20 20 20 69 66 20 28 63 73 73 29 20 7b 20 73 74     if (css) { st
57470 79 6c 65 4d 61 6e 61 67 65 72 2e 61 64 64 28 63  yleManager.add(c
57480 73 73 2c 20 6e 61 6d 65 29 3b 20 7d 0a 0a 20 20  ss, name); }..  
57490 20 20 5f 5f 54 41 47 5f 49 4d 50 4c 5b 6e 61 6d    __TAG_IMPL[nam
574a0 65 5d 20 3d 20 7b 20 6e 61 6d 65 3a 20 6e 61 6d  e] = { name: nam
574b0 65 2c 20 74 6d 70 6c 3a 20 74 6d 70 6c 2c 20 61  e, tmpl: tmpl, a
574c0 74 74 72 73 3a 20 61 74 74 72 73 2c 20 66 6e 3a  ttrs: attrs, fn:
574d0 20 66 6e 20 7d 3b 0a 0a 20 20 20 20 72 65 74 75   fn };..    retu
574e0 72 6e 20 6e 61 6d 65 0a 20 20 7d 0a 0a 20 20 2f  rn name.  }..  /
574f0 2a 2a 0a 20 20 20 2a 20 4d 6f 75 6e 74 20 61 20  **.   * Mount a 
57500 74 61 67 20 75 73 69 6e 67 20 61 20 73 70 65 63  tag using a spec
57510 69 66 69 63 20 74 61 67 20 69 6d 70 6c 65 6d 65  ific tag impleme
57520 6e 74 61 74 69 6f 6e 0a 20 20 20 2a 20 40 70 61  ntation.   * @pa
57530 72 61 6d 20 20 20 7b 20 2a 20 7d 20 73 65 6c 65  ram   { * } sele
57540 63 74 6f 72 20 2d 20 74 61 67 20 44 4f 4d 20 73  ctor - tag DOM s
57550 65 6c 65 63 74 6f 72 20 6f 72 20 44 4f 4d 20 6e  elector or DOM n
57560 6f 64 65 2f 73 0a 20 20 20 2a 20 40 70 61 72 61  ode/s.   * @para
57570 6d 20 20 20 7b 20 53 74 72 69 6e 67 20 7d 20 74  m   { String } t
57580 61 67 4e 61 6d 65 20 2d 20 74 61 67 20 69 6d 70  agName - tag imp
57590 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6e 61 6d 65  lementation name
575a0 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b  .   * @param   {
575b0 20 4f 62 6a 65 63 74 20 7d 20 6f 70 74 73 20 2d   Object } opts -
575c0 20 74 61 67 20 6c 6f 67 69 63 0a 20 20 20 2a 20   tag logic.   * 
575d0 40 72 65 74 75 72 6e 73 20 7b 20 41 72 72 61 79  @returns { Array
575e0 20 7d 20 6e 65 77 20 74 61 67 73 20 69 6e 73 74   } new tags inst
575f0 61 6e 63 65 73 0a 20 20 20 2a 2f 0a 20 20 66 75  ances.   */.  fu
57600 6e 63 74 69 6f 6e 20 6d 6f 75 6e 74 28 73 65 6c  nction mount(sel
57610 65 63 74 6f 72 2c 20 74 61 67 4e 61 6d 65 2c 20  ector, tagName, 
57620 6f 70 74 73 29 20 7b 0a 20 20 20 20 76 61 72 20  opts) {.    var 
57630 74 61 67 73 20 3d 20 5b 5d 3b 0a 20 20 20 20 76  tags = [];.    v
57640 61 72 20 65 6c 65 6d 2c 20 61 6c 6c 54 61 67 73  ar elem, allTags
57650 3b 0a 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20  ;..    function 
57660 70 75 73 68 54 61 67 73 54 6f 28 72 6f 6f 74 29  pushTagsTo(root)
57670 20 7b 0a 20 20 20 20 20 20 69 66 20 28 72 6f 6f   {.      if (roo
57680 74 2e 74 61 67 4e 61 6d 65 29 20 7b 0a 20 20 20  t.tagName) {.   
57690 20 20 20 20 20 76 61 72 20 72 69 6f 74 54 61 67       var riotTag
576a0 20 3d 20 67 65 74 41 74 74 72 69 62 75 74 65 28   = getAttribute(
576b0 72 6f 6f 74 2c 20 49 53 5f 44 49 52 45 43 54 49  root, IS_DIRECTI
576c0 56 45 29 2c 20 74 61 67 3b 0a 0a 20 20 20 20 20  VE), tag;..     
576d0 20 20 20 2f 2f 20 68 61 76 65 20 74 61 67 4e 61     // have tagNa
576e0 6d 65 3f 20 66 6f 72 63 65 20 72 69 6f 74 2d 74  me? force riot-t
576f0 61 67 20 74 6f 20 62 65 20 74 68 65 20 73 61 6d  ag to be the sam
57700 65 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 61  e.        if (ta
57710 67 4e 61 6d 65 20 26 26 20 72 69 6f 74 54 61 67  gName && riotTag
57720 20 21 3d 3d 20 74 61 67 4e 61 6d 65 29 20 7b 0a   !== tagName) {.
57730 20 20 20 20 20 20 20 20 20 20 72 69 6f 74 54 61            riotTa
57740 67 20 3d 20 74 61 67 4e 61 6d 65 3b 0a 20 20 20  g = tagName;.   
57750 20 20 20 20 20 20 20 73 65 74 41 74 74 72 69 62         setAttrib
57760 75 74 65 28 72 6f 6f 74 2c 20 49 53 5f 44 49 52  ute(root, IS_DIR
57770 45 43 54 49 56 45 2c 20 74 61 67 4e 61 6d 65 29  ECTIVE, tagName)
57780 3b 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20  ;.        }..   
57790 20 20 20 20 20 74 61 67 20 3d 20 6d 6f 75 6e 74       tag = mount
577a0 24 31 28 0a 20 20 20 20 20 20 20 20 20 20 72 6f  $1(.          ro
577b0 6f 74 2c 0a 20 20 20 20 20 20 20 20 20 20 72 69  ot,.          ri
577c0 6f 74 54 61 67 20 7c 7c 20 72 6f 6f 74 2e 74 61  otTag || root.ta
577d0 67 4e 61 6d 65 2e 74 6f 4c 6f 77 65 72 43 61 73  gName.toLowerCas
577e0 65 28 29 2c 0a 20 20 20 20 20 20 20 20 20 20 69  e(),.          i
577f0 73 46 75 6e 63 74 69 6f 6e 28 6f 70 74 73 29 20  sFunction(opts) 
57800 3f 20 6f 70 74 73 28 29 20 3a 20 6f 70 74 73 0a  ? opts() : opts.
57810 20 20 20 20 20 20 20 20 29 3b 0a 0a 20 20 20 20          );..    
57820 20 20 20 20 69 66 20 28 74 61 67 29 0a 20 20 20      if (tag).   
57830 20 20 20 20 20 20 20 7b 20 74 61 67 73 2e 70 75         { tags.pu
57840 73 68 28 74 61 67 29 3b 20 7d 0a 20 20 20 20 20  sh(tag); }.     
57850 20 7d 20 65 6c 73 65 20 69 66 20 28 72 6f 6f 74   } else if (root
57860 2e 6c 65 6e 67 74 68 29 0a 20 20 20 20 20 20 20  .length).       
57870 20 7b 20 65 61 63 68 28 72 6f 6f 74 2c 20 70 75   { each(root, pu
57880 73 68 54 61 67 73 54 6f 29 3b 20 7d 20 2f 2f 20  shTagsTo); } // 
57890 61 73 73 75 6d 65 20 6e 6f 64 65 4c 69 73 74 0a  assume nodeList.
578a0 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2f 20 69 6e      }..    // in
578b0 6a 65 63 74 20 73 74 79 6c 65 73 20 69 6e 74 6f  ject styles into
578c0 20 44 4f 4d 0a 20 20 20 20 73 74 79 6c 65 4d 61   DOM.    styleMa
578d0 6e 61 67 65 72 2e 69 6e 6a 65 63 74 28 29 3b 0a  nager.inject();.
578e0 0a 20 20 20 20 69 66 20 28 69 73 4f 62 6a 65 63  .    if (isObjec
578f0 74 28 74 61 67 4e 61 6d 65 29 20 7c 7c 20 69 73  t(tagName) || is
57900 46 75 6e 63 74 69 6f 6e 28 74 61 67 4e 61 6d 65  Function(tagName
57910 29 29 20 7b 0a 20 20 20 20 20 20 6f 70 74 73 20  )) {.      opts 
57920 3d 20 74 61 67 4e 61 6d 65 3b 0a 20 20 20 20 20  = tagName;.     
57930 20 74 61 67 4e 61 6d 65 20 3d 20 30 3b 0a 20 20   tagName = 0;.  
57940 20 20 7d 0a 0a 20 20 20 20 2f 2f 20 63 72 61 77    }..    // craw
57950 6c 20 74 68 65 20 44 4f 4d 20 74 6f 20 66 69 6e  l the DOM to fin
57960 64 20 74 68 65 20 74 61 67 0a 20 20 20 20 69 66  d the tag.    if
57970 20 28 69 73 53 74 72 69 6e 67 28 73 65 6c 65 63   (isString(selec
57980 74 6f 72 29 29 20 7b 0a 20 20 20 20 20 20 73 65  tor)) {.      se
57990 6c 65 63 74 6f 72 20 3d 20 73 65 6c 65 63 74 6f  lector = selecto
579a0 72 20 3d 3d 3d 20 27 2a 27 20 3f 0a 20 20 20 20  r === '*' ?.    
579b0 20 20 20 20 2f 2f 20 73 65 6c 65 63 74 20 61 6c      // select al
579c0 6c 20 72 65 67 69 73 74 65 72 65 64 20 74 61 67  l registered tag
579d0 73 0a 20 20 20 20 20 20 20 20 2f 2f 20 26 20 74  s.        // & t
579e0 61 67 73 20 66 6f 75 6e 64 20 77 69 74 68 20 74  ags found with t
579f0 68 65 20 72 69 6f 74 2d 74 61 67 20 61 74 74 72  he riot-tag attr
57a00 69 62 75 74 65 20 73 65 74 0a 20 20 20 20 20 20  ibute set.      
57a10 20 20 61 6c 6c 54 61 67 73 20 3d 20 71 75 65 72    allTags = quer
57a20 79 28 29 20 3a 0a 20 20 20 20 20 20 20 20 2f 2f  y() :.        //
57a30 20 6f 72 20 6a 75 73 74 20 74 68 65 20 6f 6e 65   or just the one
57a40 73 20 6e 61 6d 65 64 20 6c 69 6b 65 20 74 68 65  s named like the
57a50 20 73 65 6c 65 63 74 6f 72 0a 20 20 20 20 20 20   selector.      
57a60 20 20 73 65 6c 65 63 74 6f 72 20 2b 20 71 75 65    selector + que
57a70 72 79 28 73 65 6c 65 63 74 6f 72 2e 73 70 6c 69  ry(selector.spli
57a80 74 28 2f 2c 20 2a 2f 29 29 3b 0a 0a 20 20 20 20  t(/, */));..    
57a90 20 20 2f 2f 20 6d 61 6b 65 20 73 75 72 65 20 74    // make sure t
57aa0 6f 20 70 61 73 73 20 61 6c 77 61 79 73 20 61 20  o pass always a 
57ab0 73 65 6c 65 63 74 6f 72 0a 20 20 20 20 20 20 2f  selector.      /
57ac0 2f 20 74 6f 20 74 68 65 20 71 75 65 72 79 53 65  / to the querySe
57ad0 6c 65 63 74 6f 72 41 6c 6c 20 66 75 6e 63 74 69  lectorAll functi
57ae0 6f 6e 0a 20 20 20 20 20 20 65 6c 65 6d 20 3d 20  on.      elem = 
57af0 73 65 6c 65 63 74 6f 72 20 3f 20 24 24 28 73 65  selector ? $$(se
57b00 6c 65 63 74 6f 72 29 20 3a 20 5b 5d 3b 0a 20 20  lector) : [];.  
57b10 20 20 7d 0a 20 20 20 20 65 6c 73 65 0a 20 20 20    }.    else.   
57b20 20 20 20 2f 2f 20 70 72 6f 62 61 62 6c 79 20 79     // probably y
57b30 6f 75 20 68 61 76 65 20 70 61 73 73 65 64 20 61  ou have passed a
57b40 6c 72 65 61 64 79 20 61 20 74 61 67 20 6f 72 20  lready a tag or 
57b50 61 20 4e 6f 64 65 4c 69 73 74 0a 20 20 20 20 20  a NodeList.     
57b60 20 7b 20 65 6c 65 6d 20 3d 20 73 65 6c 65 63 74   { elem = select
57b70 6f 72 3b 20 7d 0a 0a 20 20 20 20 2f 2f 20 73 65  or; }..    // se
57b80 6c 65 63 74 20 61 6c 6c 20 74 68 65 20 72 65 67  lect all the reg
57b90 69 73 74 65 72 65 64 20 61 6e 64 20 6d 6f 75 6e  istered and moun
57ba0 74 20 74 68 65 6d 20 69 6e 73 69 64 65 20 74 68  t them inside th
57bb0 65 69 72 20 72 6f 6f 74 20 65 6c 65 6d 65 6e 74  eir root element
57bc0 73 0a 20 20 20 20 69 66 20 28 74 61 67 4e 61 6d  s.    if (tagNam
57bd0 65 20 3d 3d 3d 20 27 2a 27 29 20 7b 0a 20 20 20  e === '*') {.   
57be0 20 20 20 2f 2f 20 67 65 74 20 61 6c 6c 20 63 75     // get all cu
57bf0 73 74 6f 6d 20 74 61 67 73 0a 20 20 20 20 20 20  stom tags.      
57c00 74 61 67 4e 61 6d 65 20 3d 20 61 6c 6c 54 61 67  tagName = allTag
57c10 73 20 7c 7c 20 71 75 65 72 79 28 29 3b 0a 20 20  s || query();.  
57c20 20 20 20 20 2f 2f 20 69 66 20 74 68 65 20 72 6f      // if the ro
57c30 6f 74 20 65 6c 73 20 69 74 27 73 20 6a 75 73 74  ot els it's just
57c40 20 61 20 73 69 6e 67 6c 65 20 74 61 67 0a 20 20   a single tag.  
57c50 20 20 20 20 69 66 20 28 65 6c 65 6d 2e 74 61 67      if (elem.tag
57c60 4e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 7b 20  Name).        { 
57c70 65 6c 65 6d 20 3d 20 24 24 28 74 61 67 4e 61 6d  elem = $$(tagNam
57c80 65 2c 20 65 6c 65 6d 29 3b 20 7d 0a 20 20 20 20  e, elem); }.    
57c90 20 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20    else {.       
57ca0 20 2f 2f 20 73 65 6c 65 63 74 20 61 6c 6c 20 74   // select all t
57cb0 68 65 20 63 68 69 6c 64 72 65 6e 20 66 6f 72 20  he children for 
57cc0 61 6c 6c 20 74 68 65 20 64 69 66 66 65 72 65 6e  all the differen
57cd0 74 20 72 6f 6f 74 20 65 6c 65 6d 65 6e 74 73 0a  t root elements.
57ce0 20 20 20 20 20 20 20 20 76 61 72 20 6e 6f 64 65          var node
57cf0 4c 69 73 74 20 3d 20 5b 5d 3b 0a 0a 20 20 20 20  List = [];..    
57d00 20 20 20 20 65 61 63 68 28 65 6c 65 6d 2c 20 66      each(elem, f
57d10 75 6e 63 74 69 6f 6e 20 28 5f 65 6c 29 20 7b 20  unction (_el) { 
57d20 72 65 74 75 72 6e 20 6e 6f 64 65 4c 69 73 74 2e  return nodeList.
57d30 70 75 73 68 28 24 24 28 74 61 67 4e 61 6d 65 2c  push($$(tagName,
57d40 20 5f 65 6c 29 29 3b 20 7d 29 3b 0a 0a 20 20 20   _el)); });..   
57d50 20 20 20 20 20 65 6c 65 6d 20 3d 20 6e 6f 64 65       elem = node
57d60 4c 69 73 74 3b 0a 20 20 20 20 20 20 7d 0a 20 20  List;.      }.  
57d70 20 20 20 20 2f 2f 20 67 65 74 20 72 69 64 20 6f      // get rid o
57d80 66 20 74 68 65 20 74 61 67 4e 61 6d 65 0a 20 20  f the tagName.  
57d90 20 20 20 20 74 61 67 4e 61 6d 65 20 3d 20 30 3b      tagName = 0;
57da0 0a 20 20 20 20 7d 0a 0a 20 20 20 20 70 75 73 68  .    }..    push
57db0 54 61 67 73 54 6f 28 65 6c 65 6d 29 3b 0a 0a 20  TagsTo(elem);.. 
57dc0 20 20 20 72 65 74 75 72 6e 20 74 61 67 73 0a 20     return tags. 
57dd0 20 7d 0a 0a 20 20 2f 2f 20 43 72 65 61 74 65 20   }..  // Create 
57de0 61 20 6d 69 78 69 6e 20 74 68 61 74 20 63 6f 75  a mixin that cou
57df0 6c 64 20 62 65 20 67 6c 6f 62 61 6c 6c 79 20 73  ld be globally s
57e00 68 61 72 65 64 20 61 63 72 6f 73 73 20 61 6c 6c  hared across all
57e10 20 74 68 65 20 74 61 67 73 0a 20 20 76 61 72 20   the tags.  var 
57e20 6d 69 78 69 6e 73 20 3d 20 7b 7d 3b 0a 20 20 76  mixins = {};.  v
57e30 61 72 20 67 6c 6f 62 61 6c 73 20 3d 20 6d 69 78  ar globals = mix
57e40 69 6e 73 5b 47 4c 4f 42 41 4c 5f 4d 49 58 49 4e  ins[GLOBAL_MIXIN
57e50 5d 20 3d 20 7b 7d 3b 0a 20 20 76 61 72 20 6d 69  ] = {};.  var mi
57e60 78 69 6e 73 5f 69 64 20 3d 20 30 3b 0a 0a 20 20  xins_id = 0;..  
57e70 2f 2a 2a 0a 20 20 20 2a 20 43 72 65 61 74 65 2f  /**.   * Create/
57e80 52 65 74 75 72 6e 20 61 20 6d 69 78 69 6e 20 62  Return a mixin b
57e90 79 20 69 74 73 20 6e 61 6d 65 0a 20 20 20 2a 20  y its name.   * 
57ea0 40 70 61 72 61 6d 20 20 20 7b 20 53 74 72 69 6e  @param   { Strin
57eb0 67 20 7d 20 20 6e 61 6d 65 20 2d 20 6d 69 78 69  g }  name - mixi
57ec0 6e 20 6e 61 6d 65 20 28 67 6c 6f 62 61 6c 20 6d  n name (global m
57ed0 69 78 69 6e 20 69 66 20 6f 62 6a 65 63 74 29 0a  ixin if object).
57ee0 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20     * @param   { 
57ef0 4f 62 6a 65 63 74 20 7d 20 20 6d 69 78 20 2d 20  Object }  mix - 
57f00 6d 69 78 69 6e 20 6c 6f 67 69 63 0a 20 20 20 2a  mixin logic.   *
57f10 20 40 70 61 72 61 6d 20 20 20 7b 20 42 6f 6f 6c   @param   { Bool
57f20 65 61 6e 20 7d 20 67 20 2d 20 69 73 20 67 6c 6f  ean } g - is glo
57f30 62 61 6c 3f 0a 20 20 20 2a 20 40 72 65 74 75 72  bal?.   * @retur
57f40 6e 73 20 7b 20 4f 62 6a 65 63 74 20 7d 20 20 74  ns { Object }  t
57f50 68 65 20 6d 69 78 69 6e 20 6c 6f 67 69 63 0a 20  he mixin logic. 
57f60 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20    */.  function 
57f70 6d 69 78 69 6e 28 6e 61 6d 65 2c 20 6d 69 78 2c  mixin(name, mix,
57f80 20 67 29 20 7b 0a 20 20 20 20 2f 2f 20 55 6e 6e   g) {.    // Unn
57f90 61 6d 65 64 20 67 6c 6f 62 61 6c 0a 20 20 20 20  amed global.    
57fa0 69 66 20 28 69 73 4f 62 6a 65 63 74 28 6e 61 6d  if (isObject(nam
57fb0 65 29 29 20 7b 0a 20 20 20 20 20 20 6d 69 78 69  e)) {.      mixi
57fc0 6e 28 28 22 5f 5f 22 20 2b 20 28 6d 69 78 69 6e  n(("__" + (mixin
57fd0 73 5f 69 64 2b 2b 29 20 2b 20 22 5f 5f 22 29 2c  s_id++) + "__"),
57fe0 20 6e 61 6d 65 2c 20 74 72 75 65 29 3b 0a 20 20   name, true);.  
57ff0 20 20 20 20 72 65 74 75 72 6e 0a 20 20 20 20 7d      return.    }
58000 0a 0a 20 20 20 20 76 61 72 20 73 74 6f 72 65 20  ..    var store 
58010 3d 20 67 20 3f 20 67 6c 6f 62 61 6c 73 20 3a 20  = g ? globals : 
58020 6d 69 78 69 6e 73 3b 0a 0a 20 20 20 20 2f 2f 20  mixins;..    // 
58030 47 65 74 74 65 72 0a 20 20 20 20 69 66 20 28 21  Getter.    if (!
58040 6d 69 78 29 20 7b 0a 20 20 20 20 20 20 69 66 20  mix) {.      if 
58050 28 69 73 55 6e 64 65 66 69 6e 65 64 28 73 74 6f  (isUndefined(sto
58060 72 65 5b 6e 61 6d 65 5d 29 29 0a 20 20 20 20 20  re[name])).     
58070 20 20 20 7b 20 74 68 72 6f 77 20 6e 65 77 20 45     { throw new E
58080 72 72 6f 72 28 28 22 55 6e 72 65 67 69 73 74 65  rror(("Unregiste
58090 72 65 64 20 6d 69 78 69 6e 3a 20 22 20 2b 20 6e  red mixin: " + n
580a0 61 6d 65 29 29 20 7d 0a 0a 20 20 20 20 20 20 72  ame)) }..      r
580b0 65 74 75 72 6e 20 73 74 6f 72 65 5b 6e 61 6d 65  eturn store[name
580c0 5d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2f 20  ].    }..    // 
580d0 53 65 74 74 65 72 0a 20 20 20 20 73 74 6f 72 65  Setter.    store
580e0 5b 6e 61 6d 65 5d 20 3d 20 69 73 46 75 6e 63 74  [name] = isFunct
580f0 69 6f 6e 28 6d 69 78 29 20 3f 0a 20 20 20 20 20  ion(mix) ?.     
58100 20 65 78 74 65 6e 64 28 6d 69 78 2e 70 72 6f 74   extend(mix.prot
58110 6f 74 79 70 65 2c 20 73 74 6f 72 65 5b 6e 61 6d  otype, store[nam
58120 65 5d 20 7c 7c 20 7b 7d 29 20 26 26 20 6d 69 78  e] || {}) && mix
58130 20 3a 0a 20 20 20 20 20 20 65 78 74 65 6e 64 28   :.      extend(
58140 73 74 6f 72 65 5b 6e 61 6d 65 5d 20 7c 7c 20 7b  store[name] || {
58150 7d 2c 20 6d 69 78 29 3b 0a 20 20 7d 0a 0a 20 20  }, mix);.  }..  
58160 2f 2a 2a 0a 20 20 20 2a 20 55 70 64 61 74 65 20  /**.   * Update 
58170 61 6c 6c 20 74 68 65 20 74 61 67 73 20 69 6e 73  all the tags ins
58180 74 61 6e 63 65 73 20 63 72 65 61 74 65 64 0a 20  tances created. 
58190 20 20 2a 20 40 72 65 74 75 72 6e 73 20 7b 20 41    * @returns { A
581a0 72 72 61 79 20 7d 20 61 6c 6c 20 74 68 65 20 74  rray } all the t
581b0 61 67 73 20 69 6e 73 74 61 6e 63 65 73 0a 20 20  ags instances.  
581c0 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 75   */.  function u
581d0 70 64 61 74 65 24 31 28 29 20 7b 0a 20 20 20 20  pdate$1() {.    
581e0 72 65 74 75 72 6e 20 65 61 63 68 28 5f 5f 54 41  return each(__TA
581f0 47 53 5f 43 41 43 48 45 2c 20 66 75 6e 63 74 69  GS_CACHE, functi
58200 6f 6e 20 28 74 61 67 29 20 7b 20 72 65 74 75 72  on (tag) { retur
58210 6e 20 74 61 67 2e 75 70 64 61 74 65 28 29 3b 20  n tag.update(); 
58220 7d 29 0a 20 20 7d 0a 0a 20 20 66 75 6e 63 74 69  }).  }..  functi
58230 6f 6e 20 75 6e 72 65 67 69 73 74 65 72 28 6e 61  on unregister(na
58240 6d 65 29 20 7b 0a 20 20 20 20 73 74 79 6c 65 4d  me) {.    styleM
58250 61 6e 61 67 65 72 2e 72 65 6d 6f 76 65 28 6e 61  anager.remove(na
58260 6d 65 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20  me);.    return 
58270 64 65 6c 65 74 65 20 5f 5f 54 41 47 5f 49 4d 50  delete __TAG_IMP
58280 4c 5b 6e 61 6d 65 5d 0a 20 20 7d 0a 0a 20 20 76  L[name].  }..  v
58290 61 72 20 76 65 72 73 69 6f 6e 20 3d 20 27 76 33  ar version = 'v3
582a0 2e 31 33 2e 32 27 3b 0a 0a 20 20 76 61 72 20 63  .13.2';..  var c
582b0 6f 72 65 20 3d 20 2f 2a 23 5f 5f 50 55 52 45 5f  ore = /*#__PURE_
582c0 5f 2a 2f 4f 62 6a 65 63 74 2e 66 72 65 65 7a 65  _*/Object.freeze
582d0 28 7b 0a 20 20 20 20 54 61 67 3a 20 54 61 67 2c  ({.    Tag: Tag,
582e0 0a 20 20 20 20 74 61 67 3a 20 74 61 67 2c 0a 20  .    tag: tag,. 
582f0 20 20 20 74 61 67 32 3a 20 74 61 67 32 2c 0a 20     tag2: tag2,. 
58300 20 20 20 6d 6f 75 6e 74 3a 20 6d 6f 75 6e 74 2c     mount: mount,
58310 0a 20 20 20 20 6d 69 78 69 6e 3a 20 6d 69 78 69  .    mixin: mixi
58320 6e 2c 0a 20 20 20 20 75 70 64 61 74 65 3a 20 75  n,.    update: u
58330 70 64 61 74 65 24 31 2c 0a 20 20 20 20 75 6e 72  pdate$1,.    unr
58340 65 67 69 73 74 65 72 3a 20 75 6e 72 65 67 69 73  egister: unregis
58350 74 65 72 2c 0a 20 20 20 20 76 65 72 73 69 6f 6e  ter,.    version
58360 3a 20 76 65 72 73 69 6f 6e 0a 20 20 7d 29 3b 0a  : version.  });.
58370 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 41 64 64 20  .  /**.   * Add 
58380 61 20 6d 69 78 69 6e 20 74 6f 20 74 68 69 73 20  a mixin to this 
58390 74 61 67 0a 20 20 20 2a 20 40 72 65 74 75 72 6e  tag.   * @return
583a0 73 20 7b 20 54 61 67 20 7d 20 74 68 65 20 63 75  s { Tag } the cu
583b0 72 72 65 6e 74 20 74 61 67 20 69 6e 73 74 61 6e  rrent tag instan
583c0 63 65 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74  ce.   */.  funct
583d0 69 6f 6e 20 63 6f 6d 70 6f 6e 65 6e 74 4d 69 78  ion componentMix
583e0 69 6e 28 74 61 67 24 24 31 29 20 7b 0a 20 20 20  in(tag$$1) {.   
583f0 20 76 61 72 20 6d 69 78 69 6e 73 20 3d 20 5b 5d   var mixins = []
58400 2c 20 6c 65 6e 20 3d 20 61 72 67 75 6d 65 6e 74  , len = argument
58410 73 2e 6c 65 6e 67 74 68 20 2d 20 31 3b 0a 20 20  s.length - 1;.  
58420 20 20 77 68 69 6c 65 20 28 20 6c 65 6e 2d 2d 20    while ( len-- 
58430 3e 20 30 20 29 20 6d 69 78 69 6e 73 5b 20 6c 65  > 0 ) mixins[ le
58440 6e 20 5d 20 3d 20 61 72 67 75 6d 65 6e 74 73 5b  n ] = arguments[
58450 20 6c 65 6e 20 2b 20 31 20 5d 3b 0a 0a 20 20 20   len + 1 ];..   
58460 20 65 61 63 68 28 6d 69 78 69 6e 73 2c 20 66 75   each(mixins, fu
58470 6e 63 74 69 6f 6e 20 28 6d 69 78 29 20 7b 0a 20  nction (mix) {. 
58480 20 20 20 20 20 76 61 72 20 69 6e 73 74 61 6e 63       var instanc
58490 65 3b 0a 20 20 20 20 20 20 76 61 72 20 6f 62 6a  e;.      var obj
584a0 3b 0a 20 20 20 20 20 20 76 61 72 20 70 72 6f 70  ;.      var prop
584b0 73 20 3d 20 5b 5d 3b 0a 0a 20 20 20 20 20 20 2f  s = [];..      /
584c0 2f 20 70 72 6f 70 65 72 74 69 65 73 20 62 6c 61  / properties bla
584d0 63 6b 6c 69 73 74 65 64 20 61 6e 64 20 77 69 6c  cklisted and wil
584e0 6c 20 6e 6f 74 20 62 65 20 62 6f 75 6e 64 20 74  l not be bound t
584f0 6f 20 74 68 65 20 74 61 67 20 69 6e 73 74 61 6e  o the tag instan
58500 63 65 0a 20 20 20 20 20 20 76 61 72 20 70 72 6f  ce.      var pro
58510 70 73 42 6c 61 63 6b 6c 69 73 74 20 3d 20 5b 27  psBlacklist = ['
58520 69 6e 69 74 27 2c 20 27 5f 5f 70 72 6f 74 6f 5f  init', '__proto_
58530 5f 27 5d 3b 0a 0a 20 20 20 20 20 20 6d 69 78 20  _'];..      mix 
58540 3d 20 69 73 53 74 72 69 6e 67 28 6d 69 78 29 20  = isString(mix) 
58550 3f 20 6d 69 78 69 6e 28 6d 69 78 29 20 3a 20 6d  ? mixin(mix) : m
58560 69 78 3b 0a 0a 20 20 20 20 20 20 2f 2f 20 63 68  ix;..      // ch
58570 65 63 6b 20 69 66 20 74 68 65 20 6d 69 78 69 6e  eck if the mixin
58580 20 69 73 20 61 20 66 75 6e 63 74 69 6f 6e 0a 20   is a function. 
58590 20 20 20 20 20 69 66 20 28 69 73 46 75 6e 63 74       if (isFunct
585a0 69 6f 6e 28 6d 69 78 29 29 20 7b 0a 20 20 20 20  ion(mix)) {.    
585b0 20 20 20 20 2f 2f 20 63 72 65 61 74 65 20 74 68      // create th
585c0 65 20 6e 65 77 20 6d 69 78 69 6e 20 69 6e 73 74  e new mixin inst
585d0 61 6e 63 65 0a 20 20 20 20 20 20 20 20 69 6e 73  ance.        ins
585e0 74 61 6e 63 65 20 3d 20 6e 65 77 20 6d 69 78 28  tance = new mix(
585f0 29 3b 0a 20 20 20 20 20 20 7d 20 65 6c 73 65 20  );.      } else 
58600 7b 20 69 6e 73 74 61 6e 63 65 20 3d 20 6d 69 78  { instance = mix
58610 3b 20 7d 0a 0a 20 20 20 20 20 20 76 61 72 20 70  ; }..      var p
58620 72 6f 74 6f 20 3d 20 4f 62 6a 65 63 74 2e 67 65  roto = Object.ge
58630 74 50 72 6f 74 6f 74 79 70 65 4f 66 28 69 6e 73  tPrototypeOf(ins
58640 74 61 6e 63 65 29 3b 0a 0a 20 20 20 20 20 20 2f  tance);..      /
58650 2f 20 62 75 69 6c 64 20 6d 75 6c 74 69 6c 65 76  / build multilev
58660 65 6c 20 70 72 6f 74 6f 74 79 70 65 20 69 6e 68  el prototype inh
58670 65 72 69 74 61 6e 63 65 20 63 68 61 69 6e 20 70  eritance chain p
58680 72 6f 70 65 72 74 79 20 6c 69 73 74 0a 20 20 20  roperty list.   
58690 20 20 20 64 6f 20 7b 20 70 72 6f 70 73 20 3d 20     do { props = 
586a0 70 72 6f 70 73 2e 63 6f 6e 63 61 74 28 4f 62 6a  props.concat(Obj
586b0 65 63 74 2e 67 65 74 4f 77 6e 50 72 6f 70 65 72  ect.getOwnProper
586c0 74 79 4e 61 6d 65 73 28 6f 62 6a 20 7c 7c 20 69  tyNames(obj || i
586d0 6e 73 74 61 6e 63 65 29 29 3b 20 7d 0a 20 20 20  nstance)); }.   
586e0 20 20 20 77 68 69 6c 65 20 28 6f 62 6a 20 3d 20     while (obj = 
586f0 4f 62 6a 65 63 74 2e 67 65 74 50 72 6f 74 6f 74  Object.getProtot
58700 79 70 65 4f 66 28 6f 62 6a 20 7c 7c 20 69 6e 73  ypeOf(obj || ins
58710 74 61 6e 63 65 29 29 0a 0a 20 20 20 20 20 20 2f  tance))..      /
58720 2f 20 6c 6f 6f 70 20 74 68 65 20 6b 65 79 73 20  / loop the keys 
58730 69 6e 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20  in the function 
58740 70 72 6f 74 6f 74 79 70 65 20 6f 72 20 74 68 65  prototype or the
58750 20 61 6c 6c 20 6f 62 6a 65 63 74 20 6b 65 79 73   all object keys
58760 0a 20 20 20 20 20 20 65 61 63 68 28 70 72 6f 70  .      each(prop
58770 73 2c 20 66 75 6e 63 74 69 6f 6e 20 28 6b 65 79  s, function (key
58780 29 20 7b 0a 20 20 20 20 20 20 20 20 2f 2f 20 62  ) {.        // b
58790 69 6e 64 20 6d 65 74 68 6f 64 73 20 74 6f 20 74  ind methods to t
587a0 61 67 0a 20 20 20 20 20 20 20 20 2f 2f 20 61 6c  ag.        // al
587b0 6c 6f 77 20 6d 69 78 69 6e 73 20 74 6f 20 6f 76  low mixins to ov
587c0 65 72 72 69 64 65 20 6f 74 68 65 72 20 70 72 6f  erride other pro
587d0 70 65 72 74 69 65 73 2f 70 61 72 65 6e 74 20 6d  perties/parent m
587e0 69 78 69 6e 73 0a 20 20 20 20 20 20 20 20 69 66  ixins.        if
587f0 20 28 21 63 6f 6e 74 61 69 6e 73 28 70 72 6f 70   (!contains(prop
58800 73 42 6c 61 63 6b 6c 69 73 74 2c 20 6b 65 79 29  sBlacklist, key)
58810 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  ) {.          //
58820 20 63 68 65 63 6b 20 66 6f 72 20 67 65 74 74 65   check for gette
58830 72 73 2f 73 65 74 74 65 72 73 0a 20 20 20 20 20  rs/setters.     
58840 20 20 20 20 20 76 61 72 20 64 65 73 63 72 69 70       var descrip
58850 74 6f 72 20 3d 20 67 65 74 50 72 6f 70 44 65 73  tor = getPropDes
58860 63 72 69 70 74 6f 72 28 69 6e 73 74 61 6e 63 65  criptor(instance
58870 2c 20 6b 65 79 29 20 7c 7c 20 67 65 74 50 72 6f  , key) || getPro
58880 70 44 65 73 63 72 69 70 74 6f 72 28 70 72 6f 74  pDescriptor(prot
58890 6f 2c 20 6b 65 79 29 3b 0a 20 20 20 20 20 20 20  o, key);.       
588a0 20 20 20 76 61 72 20 68 61 73 47 65 74 74 65 72     var hasGetter
588b0 53 65 74 74 65 72 20 3d 20 64 65 73 63 72 69 70  Setter = descrip
588c0 74 6f 72 20 26 26 20 28 64 65 73 63 72 69 70 74  tor && (descript
588d0 6f 72 2e 67 65 74 20 7c 7c 20 64 65 73 63 72 69  or.get || descri
588e0 70 74 6f 72 2e 73 65 74 29 3b 0a 0a 20 20 20 20  ptor.set);..    
588f0 20 20 20 20 20 20 2f 2f 20 61 70 70 6c 79 20 6d        // apply m
58900 65 74 68 6f 64 20 6f 6e 6c 79 20 69 66 20 69 74  ethod only if it
58910 20 64 6f 65 73 20 6e 6f 74 20 61 6c 72 65 61 64   does not alread
58920 79 20 65 78 69 73 74 20 6f 6e 20 74 68 65 20 69  y exist on the i
58930 6e 73 74 61 6e 63 65 0a 20 20 20 20 20 20 20 20  nstance.        
58940 20 20 69 66 20 28 21 74 61 67 24 24 31 2e 68 61    if (!tag$$1.ha
58950 73 4f 77 6e 50 72 6f 70 65 72 74 79 28 6b 65 79  sOwnProperty(key
58960 29 20 26 26 20 68 61 73 47 65 74 74 65 72 53 65  ) && hasGetterSe
58970 74 74 65 72 29 20 7b 0a 20 20 20 20 20 20 20 20  tter) {.        
58980 20 20 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e      Object.defin
58990 65 50 72 6f 70 65 72 74 79 28 74 61 67 24 24 31  eProperty(tag$$1
589a0 2c 20 6b 65 79 2c 20 64 65 73 63 72 69 70 74 6f  , key, descripto
589b0 72 29 3b 0a 20 20 20 20 20 20 20 20 20 20 7d 20  r);.          } 
589c0 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20  else {.         
589d0 20 20 20 74 61 67 24 24 31 5b 6b 65 79 5d 20 3d     tag$$1[key] =
589e0 20 69 73 46 75 6e 63 74 69 6f 6e 28 69 6e 73 74   isFunction(inst
589f0 61 6e 63 65 5b 6b 65 79 5d 29 20 3f 0a 20 20 20  ance[key]) ?.   
58a00 20 20 20 20 20 20 20 20 20 20 20 69 6e 73 74 61             insta
58a10 6e 63 65 5b 6b 65 79 5d 2e 62 69 6e 64 28 74 61  nce[key].bind(ta
58a20 67 24 24 31 29 20 3a 0a 20 20 20 20 20 20 20 20  g$$1) :.        
58a30 20 20 20 20 20 20 69 6e 73 74 61 6e 63 65 5b 6b        instance[k
58a40 65 79 5d 3b 0a 20 20 20 20 20 20 20 20 20 20 7d  ey];.          }
58a50 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20  .        }.     
58a60 20 7d 29 3b 0a 0a 20 20 20 20 20 20 2f 2f 20 69   });..      // i
58a70 6e 69 74 20 6d 65 74 68 6f 64 20 77 69 6c 6c 20  nit method will 
58a80 62 65 20 63 61 6c 6c 65 64 20 61 75 74 6f 6d 61  be called automa
58a90 74 69 63 61 6c 6c 79 0a 20 20 20 20 20 20 69 66  tically.      if
58aa0 20 28 69 6e 73 74 61 6e 63 65 2e 69 6e 69 74 29   (instance.init)
58ab0 0a 20 20 20 20 20 20 20 20 7b 20 69 6e 73 74 61  .        { insta
58ac0 6e 63 65 2e 69 6e 69 74 2e 62 69 6e 64 28 74 61  nce.init.bind(ta
58ad0 67 24 24 31 29 28 74 61 67 24 24 31 2e 6f 70 74  g$$1)(tag$$1.opt
58ae0 73 29 3b 20 7d 0a 20 20 20 20 7d 29 3b 0a 0a 20  s); }.    });.. 
58af0 20 20 20 72 65 74 75 72 6e 20 74 61 67 24 24 31     return tag$$1
58b00 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a  .  }..  /**.   *
58b10 20 4d 6f 76 65 20 74 68 65 20 70 6f 73 69 74 69   Move the positi
58b20 6f 6e 20 6f 66 20 61 20 63 75 73 74 6f 6d 20 74  on of a custom t
58b30 61 67 20 69 6e 20 69 74 73 20 70 61 72 65 6e 74  ag in its parent
58b40 20 74 61 67 0a 20 20 20 2a 20 40 74 68 69 73 20   tag.   * @this 
58b50 54 61 67 0a 20 20 20 2a 20 40 70 61 72 61 6d 20  Tag.   * @param 
58b60 20 20 7b 20 53 74 72 69 6e 67 20 7d 20 74 61 67    { String } tag
58b70 4e 61 6d 65 20 2d 20 6b 65 79 20 77 68 65 72 65  Name - key where
58b80 20 74 68 65 20 74 61 67 20 77 61 73 20 73 74 6f   the tag was sto
58b90 72 65 64 0a 20 20 20 2a 20 40 70 61 72 61 6d 20  red.   * @param 
58ba0 20 20 7b 20 4e 75 6d 62 65 72 20 7d 20 6e 65 77    { Number } new
58bb0 50 6f 73 20 2d 20 69 6e 64 65 78 20 77 68 65 72  Pos - index wher
58bc0 65 20 74 68 65 20 6e 65 77 20 74 61 67 20 77 69  e the new tag wi
58bd0 6c 6c 20 62 65 20 73 74 6f 72 65 64 0a 20 20 20  ll be stored.   
58be0 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 6d 6f  */.  function mo
58bf0 76 65 43 68 69 6c 64 28 74 61 67 4e 61 6d 65 2c  veChild(tagName,
58c00 20 6e 65 77 50 6f 73 29 20 7b 0a 20 20 20 20 76   newPos) {.    v
58c10 61 72 20 70 61 72 65 6e 74 20 3d 20 74 68 69 73  ar parent = this
58c20 2e 70 61 72 65 6e 74 3b 0a 20 20 20 20 76 61 72  .parent;.    var
58c30 20 74 61 67 73 3b 0a 20 20 20 20 2f 2f 20 6e 6f   tags;.    // no
58c40 20 70 61 72 65 6e 74 20 6e 6f 20 6d 6f 76 65 0a   parent no move.
58c50 20 20 20 20 69 66 20 28 21 70 61 72 65 6e 74 29      if (!parent)
58c60 20 7b 20 72 65 74 75 72 6e 20 7d 0a 0a 20 20 20   { return }..   
58c70 20 74 61 67 73 20 3d 20 70 61 72 65 6e 74 2e 74   tags = parent.t
58c80 61 67 73 5b 74 61 67 4e 61 6d 65 5d 3b 0a 0a 20  ags[tagName];.. 
58c90 20 20 20 69 66 20 28 69 73 41 72 72 61 79 28 74     if (isArray(t
58ca0 61 67 73 29 29 0a 20 20 20 20 20 20 7b 20 74 61  ags)).      { ta
58cb0 67 73 2e 73 70 6c 69 63 65 28 6e 65 77 50 6f 73  gs.splice(newPos
58cc0 2c 20 30 2c 20 74 61 67 73 2e 73 70 6c 69 63 65  , 0, tags.splice
58cd0 28 74 61 67 73 2e 69 6e 64 65 78 4f 66 28 74 68  (tags.indexOf(th
58ce0 69 73 29 2c 20 31 29 5b 30 5d 29 3b 20 7d 0a 20  is), 1)[0]); }. 
58cf0 20 20 20 65 6c 73 65 20 7b 20 61 72 72 61 79 69     else { arrayi
58d00 73 68 41 64 64 28 70 61 72 65 6e 74 2e 74 61 67  shAdd(parent.tag
58d10 73 2c 20 74 61 67 4e 61 6d 65 2c 20 74 68 69 73  s, tagName, this
58d20 29 3b 20 7d 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a  ); }.  }..  /**.
58d30 20 20 20 2a 20 4d 6f 76 65 20 76 69 72 74 75 61     * Move virtua
58d40 6c 20 74 61 67 20 61 6e 64 20 61 6c 6c 20 63 68  l tag and all ch
58d50 69 6c 64 20 6e 6f 64 65 73 0a 20 20 20 2a 20 40  ild nodes.   * @
58d60 74 68 69 73 20 54 61 67 0a 20 20 20 2a 20 40 70  this Tag.   * @p
58d70 61 72 61 6d 20 7b 20 4e 6f 64 65 20 7d 20 73 72  aram { Node } sr
58d80 63 20 20 2d 20 74 68 65 20 6e 6f 64 65 20 74 68  c  - the node th
58d90 61 74 20 77 69 6c 6c 20 64 6f 20 74 68 65 20 69  at will do the i
58da0 6e 73 65 72 74 69 6e 67 0a 20 20 20 2a 20 40 70  nserting.   * @p
58db0 61 72 61 6d 20 7b 20 54 61 67 20 7d 20 74 61 72  aram { Tag } tar
58dc0 67 65 74 20 2d 20 69 6e 73 65 72 74 20 62 65 66  get - insert bef
58dd0 6f 72 65 20 74 68 69 73 20 74 61 67 27 73 20 66  ore this tag's f
58de0 69 72 73 74 20 63 68 69 6c 64 0a 20 20 20 2a 2f  irst child.   */
58df0 0a 20 20 66 75 6e 63 74 69 6f 6e 20 6d 6f 76 65  .  function move
58e00 56 69 72 74 75 61 6c 28 73 72 63 2c 20 74 61 72  Virtual(src, tar
58e10 67 65 74 29 20 7b 0a 20 20 20 20 76 61 72 20 74  get) {.    var t
58e20 68 69 73 24 31 20 3d 20 74 68 69 73 3b 0a 0a 20  his$1 = this;.. 
58e30 20 20 20 76 61 72 20 65 6c 20 3d 20 74 68 69 73     var el = this
58e40 2e 5f 5f 2e 68 65 61 64 3b 0a 20 20 20 20 76 61  .__.head;.    va
58e50 72 20 73 69 62 3b 0a 20 20 20 20 76 61 72 20 66  r sib;.    var f
58e60 72 61 67 20 3d 20 63 72 65 61 74 65 46 72 61 67  rag = createFrag
58e70 6d 65 6e 74 28 29 3b 0a 0a 20 20 20 20 77 68 69  ment();..    whi
58e80 6c 65 20 28 65 6c 29 20 7b 0a 20 20 20 20 20 20  le (el) {.      
58e90 73 69 62 20 3d 20 65 6c 2e 6e 65 78 74 53 69 62  sib = el.nextSib
58ea0 6c 69 6e 67 3b 0a 20 20 20 20 20 20 66 72 61 67  ling;.      frag
58eb0 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 65 6c 29  .appendChild(el)
58ec0 3b 0a 20 20 20 20 20 20 65 6c 20 3d 20 73 69 62  ;.      el = sib
58ed0 3b 0a 20 20 20 20 20 20 69 66 20 28 65 6c 20 3d  ;.      if (el =
58ee0 3d 3d 20 74 68 69 73 24 31 2e 5f 5f 2e 74 61 69  == this$1.__.tai
58ef0 6c 29 20 7b 0a 20 20 20 20 20 20 20 20 66 72 61  l) {.        fra
58f00 67 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 65 6c  g.appendChild(el
58f10 29 3b 0a 20 20 20 20 20 20 20 20 73 72 63 2e 69  );.        src.i
58f20 6e 73 65 72 74 42 65 66 6f 72 65 28 66 72 61 67  nsertBefore(frag
58f30 2c 20 74 61 72 67 65 74 2e 5f 5f 2e 68 65 61 64  , target.__.head
58f40 29 3b 0a 20 20 20 20 20 20 20 20 62 72 65 61 6b  );.        break
58f50 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20  .      }.    }. 
58f60 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 43   }..  /**.   * C
58f70 6f 6e 76 65 72 74 20 74 68 65 20 69 74 65 6d 20  onvert the item 
58f80 6c 6f 6f 70 65 64 20 69 6e 74 6f 20 61 6e 20 6f  looped into an o
58f90 62 6a 65 63 74 20 75 73 65 64 20 74 6f 20 65 78  bject used to ex
58fa0 74 65 6e 64 20 74 68 65 20 63 68 69 6c 64 20 74  tend the child t
58fb0 61 67 20 70 72 6f 70 65 72 74 69 65 73 0a 20 20  ag properties.  
58fc0 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 4f 62   * @param   { Ob
58fd0 6a 65 63 74 20 7d 20 65 78 70 72 20 2d 20 6f 62  ject } expr - ob
58fe0 6a 65 63 74 20 63 6f 6e 74 61 69 6e 69 6e 67 20  ject containing 
58ff0 74 68 65 20 6b 65 79 73 20 75 73 65 64 20 74 6f  the keys used to
59000 20 65 78 74 65 6e 64 20 74 68 65 20 63 68 69 6c   extend the chil
59010 64 72 65 6e 20 74 61 67 73 0a 20 20 20 2a 20 40  dren tags.   * @
59020 70 61 72 61 6d 20 20 20 7b 20 2a 20 7d 20 6b 65  param   { * } ke
59030 79 20 2d 20 76 61 6c 75 65 20 74 6f 20 61 73 73  y - value to ass
59040 69 67 6e 20 74 6f 20 74 68 65 20 6e 65 77 20 6f  ign to the new o
59050 62 6a 65 63 74 20 72 65 74 75 72 6e 65 64 0a 20  bject returned. 
59060 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 2a    * @param   { *
59070 20 7d 20 76 61 6c 20 2d 20 76 61 6c 75 65 20 63   } val - value c
59080 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 70 6f  ontaining the po
59090 73 69 74 69 6f 6e 20 6f 66 20 74 68 65 20 69 74  sition of the it
590a0 65 6d 20 69 6e 20 74 68 65 20 61 72 72 61 79 0a  em in the array.
590b0 20 20 20 2a 20 40 72 65 74 75 72 6e 73 20 7b 20     * @returns { 
590c0 4f 62 6a 65 63 74 20 7d 20 2d 20 6e 65 77 20 6f  Object } - new o
590d0 62 6a 65 63 74 20 63 6f 6e 74 61 69 6e 69 6e 67  bject containing
590e0 20 74 68 65 20 76 61 6c 75 65 73 20 6f 66 20 74   the values of t
590f0 68 65 20 6f 72 69 67 69 6e 61 6c 20 69 74 65 6d  he original item
59100 0a 20 20 20 2a 0a 20 20 20 2a 20 54 68 65 20 76  .   *.   * The v
59110 61 72 69 61 62 6c 65 73 20 27 6b 65 79 27 20 61  ariables 'key' a
59120 6e 64 20 27 76 61 6c 27 20 61 72 65 20 61 72 62  nd 'val' are arb
59130 69 74 72 61 72 79 2e 0a 20 20 20 2a 20 54 68 65  itrary..   * The
59140 79 20 64 65 70 65 6e 64 20 6f 6e 20 74 68 65 20  y depend on the 
59150 63 6f 6c 6c 65 63 74 69 6f 6e 20 74 79 70 65 20  collection type 
59160 6c 6f 6f 70 65 64 20 28 41 72 72 61 79 2c 20 4f  looped (Array, O
59170 62 6a 65 63 74 29 0a 20 20 20 2a 20 61 6e 64 20  bject).   * and 
59180 6f 6e 20 74 68 65 20 65 78 70 72 65 73 73 69 6f  on the expressio
59190 6e 20 75 73 65 64 20 6f 6e 20 74 68 65 20 65 61  n used on the ea
591a0 63 68 20 74 61 67 0a 20 20 20 2a 0a 20 20 20 2a  ch tag.   *.   *
591b0 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 6d 6b 69  /.  function mki
591c0 74 65 6d 28 65 78 70 72 2c 20 6b 65 79 2c 20 76  tem(expr, key, v
591d0 61 6c 29 20 7b 0a 20 20 20 20 76 61 72 20 69 74  al) {.    var it
591e0 65 6d 20 3d 20 7b 7d 3b 0a 20 20 20 20 69 74 65  em = {};.    ite
591f0 6d 5b 65 78 70 72 2e 6b 65 79 5d 20 3d 20 6b 65  m[expr.key] = ke
59200 79 3b 0a 20 20 20 20 69 66 20 28 65 78 70 72 2e  y;.    if (expr.
59210 70 6f 73 29 20 7b 20 69 74 65 6d 5b 65 78 70 72  pos) { item[expr
59220 2e 70 6f 73 5d 20 3d 20 76 61 6c 3b 20 7d 0a 20  .pos] = val; }. 
59230 20 20 20 72 65 74 75 72 6e 20 69 74 65 6d 0a 20     return item. 
59240 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 55   }..  /**.   * U
59250 6e 6d 6f 75 6e 74 20 74 68 65 20 72 65 64 75 6e  nmount the redun
59260 64 61 6e 74 20 74 61 67 73 0a 20 20 20 2a 20 40  dant tags.   * @
59270 70 61 72 61 6d 20 20 20 7b 20 41 72 72 61 79 20  param   { Array 
59280 7d 20 69 74 65 6d 73 20 2d 20 61 72 72 61 79 20  } items - array 
59290 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 63  containing the c
592a0 75 72 72 65 6e 74 20 69 74 65 6d 73 20 74 6f 20  urrent items to 
592b0 6c 6f 6f 70 0a 20 20 20 2a 20 40 70 61 72 61 6d  loop.   * @param
592c0 20 20 20 7b 20 41 72 72 61 79 20 7d 20 74 61 67     { Array } tag
592d0 73 20 2d 20 61 72 72 61 79 20 63 6f 6e 74 61 69  s - array contai
592e0 6e 69 6e 67 20 61 6c 6c 20 74 68 65 20 63 68 69  ning all the chi
592f0 6c 64 72 65 6e 20 74 61 67 73 0a 20 20 20 2a 2f  ldren tags.   */
59300 0a 20 20 66 75 6e 63 74 69 6f 6e 20 75 6e 6d 6f  .  function unmo
59310 75 6e 74 52 65 64 75 6e 64 61 6e 74 28 69 74 65  untRedundant(ite
59320 6d 73 2c 20 74 61 67 73 2c 20 66 69 6c 74 65 72  ms, tags, filter
59330 65 64 49 74 65 6d 73 43 6f 75 6e 74 29 20 7b 0a  edItemsCount) {.
59340 20 20 20 20 76 61 72 20 69 20 3d 20 74 61 67 73      var i = tags
59350 2e 6c 65 6e 67 74 68 3b 0a 20 20 20 20 76 61 72  .length;.    var
59360 20 6a 20 3d 20 69 74 65 6d 73 2e 6c 65 6e 67 74   j = items.lengt
59370 68 20 2d 20 66 69 6c 74 65 72 65 64 49 74 65 6d  h - filteredItem
59380 73 43 6f 75 6e 74 3b 0a 0a 20 20 20 20 77 68 69  sCount;..    whi
59390 6c 65 20 28 69 20 3e 20 6a 29 20 7b 0a 20 20 20  le (i > j) {.   
593a0 20 20 20 69 2d 2d 3b 0a 20 20 20 20 20 20 72 65     i--;.      re
593b0 6d 6f 76 65 2e 61 70 70 6c 79 28 74 61 67 73 5b  move.apply(tags[
593c0 69 5d 2c 20 5b 74 61 67 73 2c 20 69 5d 29 3b 0a  i], [tags, i]);.
593d0 20 20 20 20 7d 0a 20 20 7d 0a 0a 0a 20 20 2f 2a      }.  }...  /*
593e0 2a 0a 20 20 20 2a 20 52 65 6d 6f 76 65 20 61 20  *.   * Remove a 
593f0 63 68 69 6c 64 20 74 61 67 0a 20 20 20 2a 20 40  child tag.   * @
59400 74 68 69 73 20 54 61 67 0a 20 20 20 2a 20 40 70  this Tag.   * @p
59410 61 72 61 6d 20 20 20 7b 20 41 72 72 61 79 20 7d  aram   { Array }
59420 20 74 61 67 73 20 2d 20 74 61 67 73 20 63 6f 6c   tags - tags col
59430 6c 65 63 74 69 6f 6e 0a 20 20 20 2a 20 40 70 61  lection.   * @pa
59440 72 61 6d 20 20 20 7b 20 4e 75 6d 62 65 72 20 7d  ram   { Number }
59450 20 69 20 2d 20 69 6e 64 65 78 20 6f 66 20 74 68   i - index of th
59460 65 20 74 61 67 20 74 6f 20 72 65 6d 6f 76 65 0a  e tag to remove.
59470 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e     */.  function
59480 20 72 65 6d 6f 76 65 28 74 61 67 73 2c 20 69 29   remove(tags, i)
59490 20 7b 0a 20 20 20 20 74 61 67 73 2e 73 70 6c 69   {.    tags.spli
594a0 63 65 28 69 2c 20 31 29 3b 0a 20 20 20 20 74 68  ce(i, 1);.    th
594b0 69 73 2e 75 6e 6d 6f 75 6e 74 28 29 3b 0a 20 20  is.unmount();.  
594c0 20 20 61 72 72 61 79 69 73 68 52 65 6d 6f 76 65    arrayishRemove
594d0 28 74 68 69 73 2e 70 61 72 65 6e 74 2c 20 74 68  (this.parent, th
594e0 69 73 2c 20 74 68 69 73 2e 5f 5f 2e 74 61 67 4e  is, this.__.tagN
594f0 61 6d 65 2c 20 74 72 75 65 29 3b 0a 20 20 7d 0a  ame, true);.  }.
59500 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 4d 6f 76 65  .  /**.   * Move
59510 20 74 68 65 20 6e 65 73 74 65 64 20 63 75 73 74   the nested cust
59520 6f 6d 20 74 61 67 73 20 69 6e 20 6e 6f 6e 20 63  om tags in non c
59530 75 73 74 6f 6d 20 6c 6f 6f 70 20 74 61 67 73 0a  ustom loop tags.
59540 20 20 20 2a 20 40 74 68 69 73 20 54 61 67 0a 20     * @this Tag. 
59550 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 4e    * @param   { N
59560 75 6d 62 65 72 20 7d 20 69 20 2d 20 63 75 72 72  umber } i - curr
59570 65 6e 74 20 70 6f 73 69 74 69 6f 6e 20 6f 66 20  ent position of 
59580 74 68 65 20 6c 6f 6f 70 20 74 61 67 0a 20 20 20  the loop tag.   
59590 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 6d 6f  */.  function mo
595a0 76 65 4e 65 73 74 65 64 54 61 67 73 28 69 29 20  veNestedTags(i) 
595b0 7b 0a 20 20 20 20 76 61 72 20 74 68 69 73 24 31  {.    var this$1
595c0 20 3d 20 74 68 69 73 3b 0a 0a 20 20 20 20 65 61   = this;..    ea
595d0 63 68 28 4f 62 6a 65 63 74 2e 6b 65 79 73 28 74  ch(Object.keys(t
595e0 68 69 73 2e 74 61 67 73 29 2c 20 66 75 6e 63 74  his.tags), funct
595f0 69 6f 6e 20 28 74 61 67 4e 61 6d 65 29 20 7b 0a  ion (tagName) {.
59600 20 20 20 20 20 20 6d 6f 76 65 43 68 69 6c 64 2e        moveChild.
59610 61 70 70 6c 79 28 74 68 69 73 24 31 2e 74 61 67  apply(this$1.tag
59620 73 5b 74 61 67 4e 61 6d 65 5d 2c 20 5b 74 61 67  s[tagName], [tag
59630 4e 61 6d 65 2c 20 69 5d 29 3b 0a 20 20 20 20 7d  Name, i]);.    }
59640 29 3b 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20  );.  }..  /**.  
59650 20 2a 20 4d 6f 76 65 20 61 20 63 68 69 6c 64 20   * Move a child 
59660 74 61 67 0a 20 20 20 2a 20 40 74 68 69 73 20 54  tag.   * @this T
59670 61 67 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20  ag.   * @param  
59680 20 7b 20 48 54 4d 4c 45 6c 65 6d 65 6e 74 20 7d   { HTMLElement }
59690 20 72 6f 6f 74 20 2d 20 64 6f 6d 20 6e 6f 64 65   root - dom node
596a0 20 63 6f 6e 74 61 69 6e 69 6e 67 20 61 6c 6c 20   containing all 
596b0 74 68 65 20 6c 6f 6f 70 20 63 68 69 6c 64 72 65  the loop childre
596c0 6e 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20  n.   * @param   
596d0 7b 20 54 61 67 20 7d 20 6e 65 78 74 54 61 67 20  { Tag } nextTag 
596e0 2d 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68  - instance of th
596f0 65 20 6e 65 78 74 20 74 61 67 20 70 72 65 63 65  e next tag prece
59700 64 69 6e 67 20 74 68 65 20 6f 6e 65 20 77 65 20  ding the one we 
59710 77 61 6e 74 20 74 6f 20 6d 6f 76 65 0a 20 20 20  want to move.   
59720 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 42 6f 6f  * @param   { Boo
59730 6c 65 61 6e 20 7d 20 69 73 56 69 72 74 75 61 6c  lean } isVirtual
59740 20 2d 20 69 73 20 69 74 20 61 20 76 69 72 74 75   - is it a virtu
59750 61 6c 20 74 61 67 3f 0a 20 20 20 2a 2f 0a 20 20  al tag?.   */.  
59760 66 75 6e 63 74 69 6f 6e 20 6d 6f 76 65 28 72 6f  function move(ro
59770 6f 74 2c 20 6e 65 78 74 54 61 67 2c 20 69 73 56  ot, nextTag, isV
59780 69 72 74 75 61 6c 29 20 7b 0a 20 20 20 20 69 66  irtual) {.    if
59790 20 28 69 73 56 69 72 74 75 61 6c 29 0a 20 20 20   (isVirtual).   
597a0 20 20 20 7b 20 6d 6f 76 65 56 69 72 74 75 61 6c     { moveVirtual
597b0 2e 61 70 70 6c 79 28 74 68 69 73 2c 20 5b 72 6f  .apply(this, [ro
597c0 6f 74 2c 20 6e 65 78 74 54 61 67 5d 29 3b 20 7d  ot, nextTag]); }
597d0 0a 20 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20  .    else.      
597e0 7b 20 73 61 66 65 49 6e 73 65 72 74 28 72 6f 6f  { safeInsert(roo
597f0 74 2c 20 74 68 69 73 2e 72 6f 6f 74 2c 20 6e 65  t, this.root, ne
59800 78 74 54 61 67 2e 72 6f 6f 74 29 3b 20 7d 0a 20  xtTag.root); }. 
59810 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 49   }..  /**.   * I
59820 6e 73 65 72 74 20 61 6e 64 20 6d 6f 75 6e 74 20  nsert and mount 
59830 61 20 63 68 69 6c 64 20 74 61 67 0a 20 20 20 2a  a child tag.   *
59840 20 40 74 68 69 73 20 54 61 67 0a 20 20 20 2a 20   @this Tag.   * 
59850 40 70 61 72 61 6d 20 20 20 7b 20 48 54 4d 4c 45  @param   { HTMLE
59860 6c 65 6d 65 6e 74 20 7d 20 72 6f 6f 74 20 2d 20  lement } root - 
59870 64 6f 6d 20 6e 6f 64 65 20 63 6f 6e 74 61 69 6e  dom node contain
59880 69 6e 67 20 61 6c 6c 20 74 68 65 20 6c 6f 6f 70  ing all the loop
59890 20 63 68 69 6c 64 72 65 6e 0a 20 20 20 2a 20 40   children.   * @
598a0 70 61 72 61 6d 20 20 20 7b 20 54 61 67 20 7d 20  param   { Tag } 
598b0 6e 65 78 74 54 61 67 20 2d 20 69 6e 73 74 61 6e  nextTag - instan
598c0 63 65 20 6f 66 20 74 68 65 20 6e 65 78 74 20 74  ce of the next t
598d0 61 67 20 70 72 65 63 65 64 69 6e 67 20 74 68 65  ag preceding the
598e0 20 6f 6e 65 20 77 65 20 77 61 6e 74 20 74 6f 20   one we want to 
598f0 69 6e 73 65 72 74 0a 20 20 20 2a 20 40 70 61 72  insert.   * @par
59900 61 6d 20 20 20 7b 20 42 6f 6f 6c 65 61 6e 20 7d  am   { Boolean }
59910 20 69 73 56 69 72 74 75 61 6c 20 2d 20 69 73 20   isVirtual - is 
59920 69 74 20 61 20 76 69 72 74 75 61 6c 20 74 61 67  it a virtual tag
59930 3f 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69  ?.   */.  functi
59940 6f 6e 20 69 6e 73 65 72 74 28 72 6f 6f 74 2c 20  on insert(root, 
59950 6e 65 78 74 54 61 67 2c 20 69 73 56 69 72 74 75  nextTag, isVirtu
59960 61 6c 29 20 7b 0a 20 20 20 20 69 66 20 28 69 73  al) {.    if (is
59970 56 69 72 74 75 61 6c 29 0a 20 20 20 20 20 20 7b  Virtual).      {
59980 20 6d 61 6b 65 56 69 72 74 75 61 6c 2e 61 70 70   makeVirtual.app
59990 6c 79 28 74 68 69 73 2c 20 5b 72 6f 6f 74 2c 20  ly(this, [root, 
599a0 6e 65 78 74 54 61 67 5d 29 3b 20 7d 0a 20 20 20  nextTag]); }.   
599b0 20 65 6c 73 65 0a 20 20 20 20 20 20 7b 20 73 61   else.      { sa
599c0 66 65 49 6e 73 65 72 74 28 72 6f 6f 74 2c 20 74  feInsert(root, t
599d0 68 69 73 2e 72 6f 6f 74 2c 20 6e 65 78 74 54 61  his.root, nextTa
599e0 67 2e 72 6f 6f 74 29 3b 20 7d 0a 20 20 7d 0a 0a  g.root); }.  }..
599f0 20 20 2f 2a 2a 0a 20 20 20 2a 20 41 70 70 65 6e    /**.   * Appen
59a00 64 20 61 20 6e 65 77 20 74 61 67 20 69 6e 74 6f  d a new tag into
59a10 20 74 68 65 20 44 4f 4d 0a 20 20 20 2a 20 40 74   the DOM.   * @t
59a20 68 69 73 20 54 61 67 0a 20 20 20 2a 20 40 70 61  his Tag.   * @pa
59a30 72 61 6d 20 20 20 7b 20 48 54 4d 4c 45 6c 65 6d  ram   { HTMLElem
59a40 65 6e 74 20 7d 20 72 6f 6f 74 20 2d 20 64 6f 6d  ent } root - dom
59a50 20 6e 6f 64 65 20 63 6f 6e 74 61 69 6e 69 6e 67   node containing
59a60 20 61 6c 6c 20 74 68 65 20 6c 6f 6f 70 20 63 68   all the loop ch
59a70 69 6c 64 72 65 6e 0a 20 20 20 2a 20 40 70 61 72  ildren.   * @par
59a80 61 6d 20 20 20 7b 20 42 6f 6f 6c 65 61 6e 20 7d  am   { Boolean }
59a90 20 69 73 56 69 72 74 75 61 6c 20 2d 20 69 73 20   isVirtual - is 
59aa0 69 74 20 61 20 76 69 72 74 75 61 6c 20 74 61 67  it a virtual tag
59ab0 3f 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69  ?.   */.  functi
59ac0 6f 6e 20 61 70 70 65 6e 64 28 72 6f 6f 74 2c 20  on append(root, 
59ad0 69 73 56 69 72 74 75 61 6c 29 20 7b 0a 20 20 20  isVirtual) {.   
59ae0 20 69 66 20 28 69 73 56 69 72 74 75 61 6c 29 0a   if (isVirtual).
59af0 20 20 20 20 20 20 7b 20 6d 61 6b 65 56 69 72 74        { makeVirt
59b00 75 61 6c 2e 63 61 6c 6c 28 74 68 69 73 2c 20 72  ual.call(this, r
59b10 6f 6f 74 29 3b 20 7d 0a 20 20 20 20 65 6c 73 65  oot); }.    else
59b20 0a 20 20 20 20 20 20 7b 20 72 6f 6f 74 2e 61 70  .      { root.ap
59b30 70 65 6e 64 43 68 69 6c 64 28 74 68 69 73 2e 72  pendChild(this.r
59b40 6f 6f 74 29 3b 20 7d 0a 20 20 7d 0a 0a 20 20 2f  oot); }.  }..  /
59b50 2a 2a 0a 20 20 20 2a 20 52 65 74 75 72 6e 20 74  **.   * Return t
59b60 68 65 20 76 61 6c 75 65 20 77 65 20 77 61 6e 74  he value we want
59b70 20 74 6f 20 75 73 65 20 74 6f 20 6c 6f 6f 6b 75   to use to looku
59b80 70 20 74 68 65 20 70 6f 73 74 69 6f 6e 20 6f 66  p the postion of
59b90 20 6f 75 72 20 69 74 65 6d 73 20 69 6e 20 74 68   our items in th
59ba0 65 20 63 6f 6c 6c 65 63 74 69 6f 6e 0a 20 20 20  e collection.   
59bb0 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 53 74 72  * @param   { Str
59bc0 69 6e 67 20 7d 20 20 6b 65 79 41 74 74 72 20 20  ing }  keyAttr  
59bd0 20 20 20 20 20 20 20 2d 20 6c 6f 6f 6b 75 70 20         - lookup 
59be0 73 74 72 69 6e 67 20 6f 72 20 65 78 70 72 65 73  string or expres
59bf0 73 69 6f 6e 0a 20 20 20 2a 20 40 70 61 72 61 6d  sion.   * @param
59c00 20 20 20 7b 20 2a 20 7d 20 20 20 20 20 20 20 6f     { * }       o
59c10 72 69 67 69 6e 61 6c 49 74 65 6d 20 20 20 20 2d  riginalItem    -
59c20 20 6f 72 69 67 69 6e 61 6c 20 69 74 65 6d 20 66   original item f
59c30 72 6f 6d 20 74 68 65 20 63 6f 6c 6c 65 63 74 69  rom the collecti
59c40 6f 6e 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20  on.   * @param  
59c50 20 7b 20 4f 62 6a 65 63 74 20 7d 20 20 6b 65 79   { Object }  key
59c60 65 64 49 74 65 6d 20 20 20 20 20 20 20 2d 20 6f  edItem       - o
59c70 62 6a 65 63 74 20 63 72 65 61 74 65 64 20 62 79  bject created by
59c80 20 72 69 6f 74 20 76 69 61 20 7b 20 69 74 65 6d   riot via { item
59c90 2c 20 69 20 69 6e 20 63 6f 6c 6c 65 63 74 69 6f  , i in collectio
59ca0 6e 20 7d 0a 20 20 20 2a 20 40 70 61 72 61 6d 20  n }.   * @param 
59cb0 20 20 7b 20 42 6f 6f 6c 65 61 6e 20 7d 20 68 61    { Boolean } ha
59cc0 73 4b 65 79 41 74 74 72 45 78 70 72 20 20 2d 20  sKeyAttrExpr  - 
59cd0 66 6c 61 67 20 74 6f 20 63 68 65 63 6b 20 77 68  flag to check wh
59ce0 65 74 68 65 72 20 74 68 65 20 6b 65 79 20 69 73  ether the key is
59cf0 20 61 6e 20 65 78 70 72 65 73 73 69 6f 6e 0a 20   an expression. 
59d00 20 20 2a 20 40 72 65 74 75 72 6e 73 20 7b 20 2a    * @returns { *
59d10 20 7d 20 76 61 6c 75 65 20 74 68 61 74 20 77 65   } value that we
59d20 20 77 69 6c 6c 20 75 73 65 20 74 6f 20 66 69 67   will use to fig
59d30 75 72 65 20 6f 75 74 20 74 68 65 20 69 74 65 6d  ure out the item
59d40 20 70 6f 73 69 74 69 6f 6e 20 76 69 61 20 63 6f   position via co
59d50 6c 6c 65 63 74 69 6f 6e 2e 69 6e 64 65 78 4f 66  llection.indexOf
59d60 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f  .   */.  functio
59d70 6e 20 67 65 74 49 74 65 6d 49 64 28 6b 65 79 41  n getItemId(keyA
59d80 74 74 72 2c 20 6f 72 69 67 69 6e 61 6c 49 74 65  ttr, originalIte
59d90 6d 2c 20 6b 65 79 65 64 49 74 65 6d 2c 20 68 61  m, keyedItem, ha
59da0 73 4b 65 79 41 74 74 72 45 78 70 72 29 20 7b 0a  sKeyAttrExpr) {.
59db0 20 20 20 20 69 66 20 28 6b 65 79 41 74 74 72 29      if (keyAttr)
59dc0 20 7b 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20   {.      return 
59dd0 68 61 73 4b 65 79 41 74 74 72 45 78 70 72 20 3f  hasKeyAttrExpr ?
59de0 20 20 63 73 70 5f 74 6d 70 6c 5f 31 28 6b 65 79    csp_tmpl_1(key
59df0 41 74 74 72 2c 20 6b 65 79 65 64 49 74 65 6d 29  Attr, keyedItem)
59e00 20 3a 20 20 6f 72 69 67 69 6e 61 6c 49 74 65 6d   :  originalItem
59e10 5b 6b 65 79 41 74 74 72 5d 0a 20 20 20 20 7d 0a  [keyAttr].    }.
59e20 0a 20 20 20 20 72 65 74 75 72 6e 20 6f 72 69 67  .    return orig
59e30 69 6e 61 6c 49 74 65 6d 0a 20 20 7d 0a 0a 20 20  inalItem.  }..  
59e40 2f 2a 2a 0a 20 20 20 2a 20 4d 61 6e 61 67 65 20  /**.   * Manage 
59e50 74 61 67 73 20 68 61 76 69 6e 67 20 74 68 65 20  tags having the 
59e60 27 65 61 63 68 27 0a 20 20 20 2a 20 40 70 61 72  'each'.   * @par
59e70 61 6d 20 20 20 7b 20 48 54 4d 4c 45 6c 65 6d 65  am   { HTMLEleme
59e80 6e 74 20 7d 20 64 6f 6d 20 2d 20 44 4f 4d 20 6e  nt } dom - DOM n
59e90 6f 64 65 20 77 65 20 6e 65 65 64 20 74 6f 20 6c  ode we need to l
59ea0 6f 6f 70 0a 20 20 20 2a 20 40 70 61 72 61 6d 20  oop.   * @param 
59eb0 20 20 7b 20 54 61 67 20 7d 20 70 61 72 65 6e 74    { Tag } parent
59ec0 20 2d 20 70 61 72 65 6e 74 20 74 61 67 20 69 6e   - parent tag in
59ed0 73 74 61 6e 63 65 20 77 68 65 72 65 20 74 68 65  stance where the
59ee0 20 64 6f 6d 20 6e 6f 64 65 20 69 73 20 63 6f 6e   dom node is con
59ef0 74 61 69 6e 65 64 0a 20 20 20 2a 20 40 70 61 72  tained.   * @par
59f00 61 6d 20 20 20 7b 20 53 74 72 69 6e 67 20 7d 20  am   { String } 
59f10 65 78 70 72 20 2d 20 73 74 72 69 6e 67 20 63 6f  expr - string co
59f20 6e 74 61 69 6e 65 64 20 69 6e 20 74 68 65 20 27  ntained in the '
59f30 65 61 63 68 27 20 61 74 74 72 69 62 75 74 65 0a  each' attribute.
59f40 20 20 20 2a 20 40 72 65 74 75 72 6e 73 20 7b 20     * @returns { 
59f50 4f 62 6a 65 63 74 20 7d 20 65 78 70 72 65 73 73  Object } express
59f60 69 6f 6e 20 6f 62 6a 65 63 74 20 66 6f 72 20 74  ion object for t
59f70 68 69 73 20 65 61 63 68 20 6c 6f 6f 70 0a 20 20  his each loop.  
59f80 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 5f   */.  function _
59f90 65 61 63 68 28 64 6f 6d 2c 20 70 61 72 65 6e 74  each(dom, parent
59fa0 2c 20 65 78 70 72 29 20 7b 0a 20 20 20 20 76 61  , expr) {.    va
59fb0 72 20 6d 75 73 74 52 65 6f 72 64 65 72 20 3d 20  r mustReorder = 
59fc0 74 79 70 65 6f 66 20 67 65 74 41 74 74 72 69 62  typeof getAttrib
59fd0 75 74 65 28 64 6f 6d 2c 20 4c 4f 4f 50 5f 4e 4f  ute(dom, LOOP_NO
59fe0 5f 52 45 4f 52 44 45 52 5f 44 49 52 45 43 54 49  _REORDER_DIRECTI
59ff0 56 45 29 20 21 3d 3d 20 54 5f 53 54 52 49 4e 47  VE) !== T_STRING
5a000 20 7c 7c 20 72 65 6d 6f 76 65 41 74 74 72 69 62   || removeAttrib
5a010 75 74 65 28 64 6f 6d 2c 20 4c 4f 4f 50 5f 4e 4f  ute(dom, LOOP_NO
5a020 5f 52 45 4f 52 44 45 52 5f 44 49 52 45 43 54 49  _REORDER_DIRECTI
5a030 56 45 29 3b 0a 20 20 20 20 76 61 72 20 6b 65 79  VE);.    var key
5a040 41 74 74 72 20 3d 20 67 65 74 41 74 74 72 69 62  Attr = getAttrib
5a050 75 74 65 28 64 6f 6d 2c 20 4b 45 59 5f 44 49 52  ute(dom, KEY_DIR
5a060 45 43 54 49 56 45 29 3b 0a 20 20 20 20 76 61 72  ECTIVE);.    var
5a070 20 68 61 73 4b 65 79 41 74 74 72 45 78 70 72 20   hasKeyAttrExpr 
5a080 3d 20 6b 65 79 41 74 74 72 20 3f 20 63 73 70 5f  = keyAttr ? csp_
5a090 74 6d 70 6c 5f 31 2e 68 61 73 45 78 70 72 28 6b  tmpl_1.hasExpr(k
5a0a0 65 79 41 74 74 72 29 20 3a 20 66 61 6c 73 65 3b  eyAttr) : false;
5a0b0 0a 20 20 20 20 76 61 72 20 74 61 67 4e 61 6d 65  .    var tagName
5a0c0 20 3d 20 67 65 74 4e 61 6d 65 28 64 6f 6d 29 3b   = getName(dom);
5a0d0 0a 20 20 20 20 76 61 72 20 69 6d 70 6c 20 3d 20  .    var impl = 
5a0e0 5f 5f 54 41 47 5f 49 4d 50 4c 5b 74 61 67 4e 61  __TAG_IMPL[tagNa
5a0f0 6d 65 5d 3b 0a 20 20 20 20 76 61 72 20 70 61 72  me];.    var par
5a100 65 6e 74 4e 6f 64 65 20 3d 20 64 6f 6d 2e 70 61  entNode = dom.pa
5a110 72 65 6e 74 4e 6f 64 65 3b 0a 20 20 20 20 76 61  rentNode;.    va
5a120 72 20 70 6c 61 63 65 68 6f 6c 64 65 72 20 3d 20  r placeholder = 
5a130 63 72 65 61 74 65 44 4f 4d 50 6c 61 63 65 68 6f  createDOMPlaceho
5a140 6c 64 65 72 28 29 3b 0a 20 20 20 20 76 61 72 20  lder();.    var 
5a150 63 68 69 6c 64 20 3d 20 67 65 74 28 64 6f 6d 29  child = get(dom)
5a160 3b 0a 20 20 20 20 76 61 72 20 69 66 45 78 70 72  ;.    var ifExpr
5a170 20 3d 20 67 65 74 41 74 74 72 69 62 75 74 65 28   = getAttribute(
5a180 64 6f 6d 2c 20 43 4f 4e 44 49 54 49 4f 4e 41 4c  dom, CONDITIONAL
5a190 5f 44 49 52 45 43 54 49 56 45 29 3b 0a 20 20 20  _DIRECTIVE);.   
5a1a0 20 76 61 72 20 74 61 67 73 20 3d 20 5b 5d 3b 0a   var tags = [];.
5a1b0 20 20 20 20 76 61 72 20 69 73 4c 6f 6f 70 20 3d      var isLoop =
5a1c0 20 74 72 75 65 3b 0a 20 20 20 20 76 61 72 20 69   true;.    var i
5a1d0 6e 6e 65 72 48 54 4d 4c 20 3d 20 64 6f 6d 2e 69  nnerHTML = dom.i
5a1e0 6e 6e 65 72 48 54 4d 4c 3b 0a 20 20 20 20 76 61  nnerHTML;.    va
5a1f0 72 20 69 73 41 6e 6f 6e 79 6d 6f 75 73 20 3d 20  r isAnonymous = 
5a200 21 5f 5f 54 41 47 5f 49 4d 50 4c 5b 74 61 67 4e  !__TAG_IMPL[tagN
5a210 61 6d 65 5d 3b 0a 20 20 20 20 76 61 72 20 69 73  ame];.    var is
5a220 56 69 72 74 75 61 6c 20 3d 20 64 6f 6d 2e 74 61  Virtual = dom.ta
5a230 67 4e 61 6d 65 20 3d 3d 3d 20 27 56 49 52 54 55  gName === 'VIRTU
5a240 41 4c 27 3b 0a 20 20 20 20 76 61 72 20 6f 6c 64  AL';.    var old
5a250 49 74 65 6d 73 20 3d 20 5b 5d 3b 0a 0a 20 20 20  Items = [];..   
5a260 20 2f 2f 20 72 65 6d 6f 76 65 20 74 68 65 20 65   // remove the e
5a270 61 63 68 20 70 72 6f 70 65 72 74 79 20 66 72 6f  ach property fro
5a280 6d 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 74  m the original t
5a290 61 67 0a 20 20 20 20 72 65 6d 6f 76 65 41 74 74  ag.    removeAtt
5a2a0 72 69 62 75 74 65 28 64 6f 6d 2c 20 4c 4f 4f 50  ribute(dom, LOOP
5a2b0 5f 44 49 52 45 43 54 49 56 45 29 3b 0a 20 20 20  _DIRECTIVE);.   
5a2c0 20 72 65 6d 6f 76 65 41 74 74 72 69 62 75 74 65   removeAttribute
5a2d0 28 64 6f 6d 2c 20 4b 45 59 5f 44 49 52 45 43 54  (dom, KEY_DIRECT
5a2e0 49 56 45 29 3b 0a 0a 20 20 20 20 2f 2f 20 70 61  IVE);..    // pa
5a2f0 72 73 65 20 74 68 65 20 65 61 63 68 20 65 78 70  rse the each exp
5a300 72 65 73 73 69 6f 6e 0a 20 20 20 20 65 78 70 72  ression.    expr
5a310 20 3d 20 63 73 70 5f 74 6d 70 6c 5f 31 2e 6c 6f   = csp_tmpl_1.lo
5a320 6f 70 4b 65 79 73 28 65 78 70 72 29 3b 0a 20 20  opKeys(expr);.  
5a330 20 20 65 78 70 72 2e 69 73 4c 6f 6f 70 20 3d 20    expr.isLoop = 
5a340 74 72 75 65 3b 0a 0a 20 20 20 20 69 66 20 28 69  true;..    if (i
5a350 66 45 78 70 72 29 20 7b 20 72 65 6d 6f 76 65 41  fExpr) { removeA
5a360 74 74 72 69 62 75 74 65 28 64 6f 6d 2c 20 43 4f  ttribute(dom, CO
5a370 4e 44 49 54 49 4f 4e 41 4c 5f 44 49 52 45 43 54  NDITIONAL_DIRECT
5a380 49 56 45 29 3b 20 7d 0a 0a 20 20 20 20 2f 2f 20  IVE); }..    // 
5a390 69 6e 73 65 72 74 20 61 20 6d 61 72 6b 65 64 20  insert a marked 
5a3a0 77 68 65 72 65 20 74 68 65 20 6c 6f 6f 70 20 74  where the loop t
5a3b0 61 67 73 20 77 69 6c 6c 20 62 65 20 69 6e 6a 65  ags will be inje
5a3c0 63 74 65 64 0a 20 20 20 20 70 61 72 65 6e 74 4e  cted.    parentN
5a3d0 6f 64 65 2e 69 6e 73 65 72 74 42 65 66 6f 72 65  ode.insertBefore
5a3e0 28 70 6c 61 63 65 68 6f 6c 64 65 72 2c 20 64 6f  (placeholder, do
5a3f0 6d 29 3b 0a 20 20 20 20 70 61 72 65 6e 74 4e 6f  m);.    parentNo
5a400 64 65 2e 72 65 6d 6f 76 65 43 68 69 6c 64 28 64  de.removeChild(d
5a410 6f 6d 29 3b 0a 0a 20 20 20 20 65 78 70 72 2e 75  om);..    expr.u
5a420 70 64 61 74 65 20 3d 20 66 75 6e 63 74 69 6f 6e  pdate = function
5a430 20 75 70 64 61 74 65 45 61 63 68 28 29 20 7b 0a   updateEach() {.
5a440 20 20 20 20 20 20 2f 2f 20 67 65 74 20 74 68 65        // get the
5a450 20 6e 65 77 20 69 74 65 6d 73 20 63 6f 6c 6c 65   new items colle
5a460 63 74 69 6f 6e 0a 20 20 20 20 20 20 65 78 70 72  ction.      expr
5a470 2e 76 61 6c 75 65 20 3d 20 63 73 70 5f 74 6d 70  .value = csp_tmp
5a480 6c 5f 31 28 65 78 70 72 2e 76 61 6c 2c 20 70 61  l_1(expr.val, pa
5a490 72 65 6e 74 29 3b 0a 0a 20 20 20 20 20 20 76 61  rent);..      va
5a4a0 72 20 69 74 65 6d 73 20 3d 20 65 78 70 72 2e 76  r items = expr.v
5a4b0 61 6c 75 65 3b 0a 20 20 20 20 20 20 76 61 72 20  alue;.      var 
5a4c0 66 72 61 67 20 3d 20 63 72 65 61 74 65 46 72 61  frag = createFra
5a4d0 67 6d 65 6e 74 28 29 3b 0a 20 20 20 20 20 20 76  gment();.      v
5a4e0 61 72 20 69 73 4f 62 6a 65 63 74 20 3d 20 21 69  ar isObject = !i
5a4f0 73 41 72 72 61 79 28 69 74 65 6d 73 29 20 26 26  sArray(items) &&
5a500 20 21 69 73 53 74 72 69 6e 67 28 69 74 65 6d 73   !isString(items
5a510 29 3b 0a 20 20 20 20 20 20 76 61 72 20 72 6f 6f  );.      var roo
5a520 74 20 3d 20 70 6c 61 63 65 68 6f 6c 64 65 72 2e  t = placeholder.
5a530 70 61 72 65 6e 74 4e 6f 64 65 3b 0a 20 20 20 20  parentNode;.    
5a540 20 20 76 61 72 20 74 6d 70 49 74 65 6d 73 20 3d    var tmpItems =
5a550 20 5b 5d 3b 0a 20 20 20 20 20 20 76 61 72 20 68   [];.      var h
5a560 61 73 4b 65 79 73 20 3d 20 69 73 4f 62 6a 65 63  asKeys = isObjec
5a570 74 20 26 26 20 21 21 69 74 65 6d 73 3b 0a 0a 20  t && !!items;.. 
5a580 20 20 20 20 20 2f 2f 20 69 66 20 74 68 69 73 20       // if this 
5a590 44 4f 4d 20 77 61 73 20 72 65 6d 6f 76 65 64 20  DOM was removed 
5a5a0 74 68 65 20 75 70 64 61 74 65 20 68 65 72 65 20  the update here 
5a5b0 69 73 20 75 73 65 6c 65 73 73 0a 20 20 20 20 20  is useless.     
5a5c0 20 2f 2f 20 74 68 69 73 20 63 6f 6e 64 69 74 69   // this conditi
5a5d0 6f 6e 20 66 69 78 65 73 20 61 6c 73 6f 20 61 20  on fixes also a 
5a5e0 77 65 69 72 64 20 61 73 79 6e 63 20 69 73 73 75  weird async issu
5a5f0 65 20 6f 6e 20 49 45 20 69 6e 20 6f 75 72 20 75  e on IE in our u
5a600 6e 69 74 20 74 65 73 74 0a 20 20 20 20 20 20 69  nit test.      i
5a610 66 20 28 21 72 6f 6f 74 29 20 7b 20 72 65 74 75  f (!root) { retu
5a620 72 6e 20 7d 0a 0a 20 20 20 20 20 20 2f 2f 20 6f  rn }..      // o
5a630 62 6a 65 63 74 20 6c 6f 6f 70 2e 20 61 6e 79 20  bject loop. any 
5a640 63 68 61 6e 67 65 73 20 63 61 75 73 65 20 66 75  changes cause fu
5a650 6c 6c 20 72 65 64 72 61 77 0a 20 20 20 20 20 20  ll redraw.      
5a660 69 66 20 28 69 73 4f 62 6a 65 63 74 29 20 7b 0a  if (isObject) {.
5a670 20 20 20 20 20 20 20 20 69 74 65 6d 73 20 3d 20          items = 
5a680 69 74 65 6d 73 20 3f 20 4f 62 6a 65 63 74 2e 6b  items ? Object.k
5a690 65 79 73 28 69 74 65 6d 73 29 2e 6d 61 70 28 66  eys(items).map(f
5a6a0 75 6e 63 74 69 6f 6e 20 28 6b 65 79 29 20 7b 20  unction (key) { 
5a6b0 72 65 74 75 72 6e 20 6d 6b 69 74 65 6d 28 65 78  return mkitem(ex
5a6c0 70 72 2c 20 69 74 65 6d 73 5b 6b 65 79 5d 2c 20  pr, items[key], 
5a6d0 6b 65 79 29 3b 20 7d 29 20 3a 20 5b 5d 3b 0a 20  key); }) : [];. 
5a6e0 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 2f 2f       }..      //
5a6f0 20 73 74 6f 72 65 20 74 68 65 20 61 6d 6f 75 6e   store the amoun
5a700 74 20 6f 66 20 66 69 6c 74 65 72 65 64 20 69 74  t of filtered it
5a710 65 6d 73 0a 20 20 20 20 20 20 76 61 72 20 66 69  ems.      var fi
5a720 6c 74 65 72 65 64 49 74 65 6d 73 43 6f 75 6e 74  lteredItemsCount
5a730 20 3d 20 30 3b 0a 0a 20 20 20 20 20 20 2f 2f 20   = 0;..      // 
5a740 6c 6f 6f 70 20 61 6c 6c 20 74 68 65 20 6e 65 77  loop all the new
5a750 20 69 74 65 6d 73 0a 20 20 20 20 20 20 65 61 63   items.      eac
5a760 68 28 69 74 65 6d 73 2c 20 66 75 6e 63 74 69 6f  h(items, functio
5a770 6e 20 28 5f 69 74 65 6d 2c 20 69 6e 64 65 78 29  n (_item, index)
5a780 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 69   {.        var i
5a790 20 3d 20 69 6e 64 65 78 20 2d 20 66 69 6c 74 65   = index - filte
5a7a0 72 65 64 49 74 65 6d 73 43 6f 75 6e 74 3b 0a 20  redItemsCount;. 
5a7b0 20 20 20 20 20 20 20 76 61 72 20 69 74 65 6d 20         var item 
5a7c0 3d 20 21 68 61 73 4b 65 79 73 20 26 26 20 65 78  = !hasKeys && ex
5a7d0 70 72 2e 6b 65 79 20 3f 20 6d 6b 69 74 65 6d 28  pr.key ? mkitem(
5a7e0 65 78 70 72 2c 20 5f 69 74 65 6d 2c 20 69 6e 64  expr, _item, ind
5a7f0 65 78 29 20 3a 20 5f 69 74 65 6d 3b 0a 0a 20 20  ex) : _item;..  
5a800 20 20 20 20 20 20 2f 2f 20 73 6b 69 70 20 74 68        // skip th
5a810 69 73 20 69 74 65 6d 20 62 65 63 61 75 73 65 20  is item because 
5a820 69 74 20 6d 75 73 74 20 62 65 20 66 69 6c 74 65  it must be filte
5a830 72 65 64 0a 20 20 20 20 20 20 20 20 69 66 20 28  red.        if (
5a840 69 66 45 78 70 72 20 26 26 20 21 63 73 70 5f 74  ifExpr && !csp_t
5a850 6d 70 6c 5f 31 28 69 66 45 78 70 72 2c 20 65 78  mpl_1(ifExpr, ex
5a860 74 65 6e 64 28 63 72 65 61 74 65 28 70 61 72 65  tend(create(pare
5a870 6e 74 29 2c 20 69 74 65 6d 29 29 29 20 7b 0a 20  nt), item))) {. 
5a880 20 20 20 20 20 20 20 20 20 66 69 6c 74 65 72 65           filtere
5a890 64 49 74 65 6d 73 43 6f 75 6e 74 20 2b 2b 3b 0a  dItemsCount ++;.
5a8a0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
5a8b0 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20  .        }..    
5a8c0 20 20 20 20 76 61 72 20 69 74 65 6d 49 64 20 3d      var itemId =
5a8d0 20 67 65 74 49 74 65 6d 49 64 28 6b 65 79 41 74   getItemId(keyAt
5a8e0 74 72 2c 20 5f 69 74 65 6d 2c 20 69 74 65 6d 2c  tr, _item, item,
5a8f0 20 68 61 73 4b 65 79 41 74 74 72 45 78 70 72 29   hasKeyAttrExpr)
5a900 3b 0a 20 20 20 20 20 20 20 20 2f 2f 20 72 65 6f  ;.        // reo
5a910 72 64 65 72 20 6f 6e 6c 79 20 69 66 20 74 68 65  rder only if the
5a920 20 69 74 65 6d 73 20 61 72 65 20 6e 6f 74 20 6f   items are not o
5a930 62 6a 65 63 74 73 0a 20 20 20 20 20 20 20 20 2f  bjects.        /
5a940 2f 20 6f 72 20 61 20 6b 65 79 20 61 74 74 72 69  / or a key attri
5a950 62 75 74 65 20 68 61 73 20 62 65 65 6e 20 70 72  bute has been pr
5a960 6f 76 69 64 65 64 0a 20 20 20 20 20 20 20 20 76  ovided.        v
5a970 61 72 20 64 6f 52 65 6f 72 64 65 72 20 3d 20 21  ar doReorder = !
5a980 69 73 4f 62 6a 65 63 74 20 26 26 20 6d 75 73 74  isObject && must
5a990 52 65 6f 72 64 65 72 20 26 26 20 74 79 70 65 6f  Reorder && typeo
5a9a0 66 20 5f 69 74 65 6d 20 3d 3d 3d 20 54 5f 4f 42  f _item === T_OB
5a9b0 4a 45 43 54 20 7c 7c 20 6b 65 79 41 74 74 72 3b  JECT || keyAttr;
5a9c0 0a 20 20 20 20 20 20 20 20 76 61 72 20 6f 6c 64  .        var old
5a9d0 50 6f 73 20 3d 20 6f 6c 64 49 74 65 6d 73 2e 69  Pos = oldItems.i
5a9e0 6e 64 65 78 4f 66 28 69 74 65 6d 49 64 29 3b 0a  ndexOf(itemId);.
5a9f0 20 20 20 20 20 20 20 20 76 61 72 20 69 73 4e 65          var isNe
5aa00 77 20 3d 20 6f 6c 64 50 6f 73 20 3d 3d 3d 20 2d  w = oldPos === -
5aa10 31 3b 0a 20 20 20 20 20 20 20 20 76 61 72 20 70  1;.        var p
5aa20 6f 73 20 3d 20 21 69 73 4e 65 77 20 26 26 20 64  os = !isNew && d
5aa30 6f 52 65 6f 72 64 65 72 20 3f 20 6f 6c 64 50 6f  oReorder ? oldPo
5aa40 73 20 3a 20 69 3b 0a 20 20 20 20 20 20 20 20 2f  s : i;.        /
5aa50 2f 20 64 6f 65 73 20 61 20 74 61 67 20 65 78 69  / does a tag exi
5aa60 73 74 20 69 6e 20 74 68 69 73 20 70 6f 73 69 74  st in this posit
5aa70 69 6f 6e 3f 0a 20 20 20 20 20 20 20 20 76 61 72  ion?.        var
5aa80 20 74 61 67 20 3d 20 74 61 67 73 5b 70 6f 73 5d   tag = tags[pos]
5aa90 3b 0a 20 20 20 20 20 20 20 20 76 61 72 20 6d 75  ;.        var mu
5aaa0 73 74 41 70 70 65 6e 64 20 3d 20 69 20 3e 3d 20  stAppend = i >= 
5aab0 6f 6c 64 49 74 65 6d 73 2e 6c 65 6e 67 74 68 3b  oldItems.length;
5aac0 0a 20 20 20 20 20 20 20 20 76 61 72 20 6d 75 73  .        var mus
5aad0 74 43 72 65 61 74 65 20 3d 20 64 6f 52 65 6f 72  tCreate = doReor
5aae0 64 65 72 20 26 26 20 69 73 4e 65 77 20 7c 7c 20  der && isNew || 
5aaf0 21 64 6f 52 65 6f 72 64 65 72 20 26 26 20 21 74  !doReorder && !t
5ab00 61 67 20 7c 7c 20 21 74 61 67 73 5b 69 5d 3b 0a  ag || !tags[i];.
5ab10 0a 20 20 20 20 20 20 20 20 2f 2f 20 6e 65 77 20  .        // new 
5ab20 74 61 67 0a 20 20 20 20 20 20 20 20 69 66 20 28  tag.        if (
5ab30 6d 75 73 74 43 72 65 61 74 65 29 20 7b 0a 20 20  mustCreate) {.  
5ab40 20 20 20 20 20 20 20 20 74 61 67 20 3d 20 63 72          tag = cr
5ab50 65 61 74 65 54 61 67 28 69 6d 70 6c 2c 20 7b 0a  eateTag(impl, {.
5ab60 20 20 20 20 20 20 20 20 20 20 20 20 70 61 72 65              pare
5ab70 6e 74 3a 20 70 61 72 65 6e 74 2c 0a 20 20 20 20  nt: parent,.    
5ab80 20 20 20 20 20 20 20 20 69 73 4c 6f 6f 70 3a 20          isLoop: 
5ab90 69 73 4c 6f 6f 70 2c 0a 20 20 20 20 20 20 20 20  isLoop,.        
5aba0 20 20 20 20 69 73 41 6e 6f 6e 79 6d 6f 75 73 3a      isAnonymous:
5abb0 20 69 73 41 6e 6f 6e 79 6d 6f 75 73 2c 0a 20 20   isAnonymous,.  
5abc0 20 20 20 20 20 20 20 20 20 20 74 61 67 4e 61 6d            tagNam
5abd0 65 3a 20 74 61 67 4e 61 6d 65 2c 0a 20 20 20 20  e: tagName,.    
5abe0 20 20 20 20 20 20 20 20 72 6f 6f 74 3a 20 64 6f          root: do
5abf0 6d 2e 63 6c 6f 6e 65 4e 6f 64 65 28 69 73 41 6e  m.cloneNode(isAn
5ac00 6f 6e 79 6d 6f 75 73 29 2c 0a 20 20 20 20 20 20  onymous),.      
5ac10 20 20 20 20 20 20 69 74 65 6d 3a 20 69 74 65 6d        item: item
5ac20 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ,.            in
5ac30 64 65 78 3a 20 69 2c 0a 20 20 20 20 20 20 20 20  dex: i,.        
5ac40 20 20 7d 2c 20 69 6e 6e 65 72 48 54 4d 4c 29 3b    }, innerHTML);
5ac50 0a 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 6d  ..          // m
5ac60 6f 75 6e 74 20 74 68 65 20 74 61 67 0a 20 20 20  ount the tag.   
5ac70 20 20 20 20 20 20 20 74 61 67 2e 6d 6f 75 6e 74         tag.mount
5ac80 28 29 3b 0a 0a 20 20 20 20 20 20 20 20 20 20 69  ();..          i
5ac90 66 20 28 6d 75 73 74 41 70 70 65 6e 64 29 0a 20  f (mustAppend). 
5aca0 20 20 20 20 20 20 20 20 20 20 20 7b 20 61 70 70             { app
5acb0 65 6e 64 2e 61 70 70 6c 79 28 74 61 67 2c 20 5b  end.apply(tag, [
5acc0 66 72 61 67 20 7c 7c 20 72 6f 6f 74 2c 20 69 73  frag || root, is
5acd0 56 69 72 74 75 61 6c 5d 29 3b 20 7d 0a 20 20 20  Virtual]); }.   
5ace0 20 20 20 20 20 20 20 65 6c 73 65 0a 20 20 20 20         else.    
5acf0 20 20 20 20 20 20 20 20 7b 20 69 6e 73 65 72 74          { insert
5ad00 2e 61 70 70 6c 79 28 74 61 67 2c 20 5b 72 6f 6f  .apply(tag, [roo
5ad10 74 2c 20 74 61 67 73 5b 69 5d 2c 20 69 73 56 69  t, tags[i], isVi
5ad20 72 74 75 61 6c 5d 29 3b 20 7d 0a 0a 20 20 20 20  rtual]); }..    
5ad30 20 20 20 20 20 20 69 66 20 28 21 6d 75 73 74 41        if (!mustA
5ad40 70 70 65 6e 64 29 20 7b 20 6f 6c 64 49 74 65 6d  ppend) { oldItem
5ad50 73 2e 73 70 6c 69 63 65 28 69 2c 20 30 2c 20 69  s.splice(i, 0, i
5ad60 74 65 6d 29 3b 20 7d 0a 20 20 20 20 20 20 20 20  tem); }.        
5ad70 20 20 74 61 67 73 2e 73 70 6c 69 63 65 28 69 2c    tags.splice(i,
5ad80 20 30 2c 20 74 61 67 29 3b 0a 20 20 20 20 20 20   0, tag);.      
5ad90 20 20 20 20 69 66 20 28 63 68 69 6c 64 29 20 7b      if (child) {
5ada0 20 61 72 72 61 79 69 73 68 41 64 64 28 70 61 72   arrayishAdd(par
5adb0 65 6e 74 2e 74 61 67 73 2c 20 74 61 67 4e 61 6d  ent.tags, tagNam
5adc0 65 2c 20 74 61 67 2c 20 74 72 75 65 29 3b 20 7d  e, tag, true); }
5add0 0a 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20  .        } else 
5ade0 69 66 20 28 70 6f 73 20 21 3d 3d 20 69 20 26 26  if (pos !== i &&
5adf0 20 64 6f 52 65 6f 72 64 65 72 29 20 7b 0a 20 20   doReorder) {.  
5ae00 20 20 20 20 20 20 20 20 2f 2f 20 6d 6f 76 65 0a          // move.
5ae10 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6b 65            if (ke
5ae20 79 41 74 74 72 20 7c 7c 20 63 6f 6e 74 61 69 6e  yAttr || contain
5ae30 73 28 69 74 65 6d 73 2c 20 6f 6c 64 49 74 65 6d  s(items, oldItem
5ae40 73 5b 70 6f 73 5d 29 29 20 7b 0a 20 20 20 20 20  s[pos])) {.     
5ae50 20 20 20 20 20 20 20 6d 6f 76 65 2e 61 70 70 6c         move.appl
5ae60 79 28 74 61 67 2c 20 5b 72 6f 6f 74 2c 20 74 61  y(tag, [root, ta
5ae70 67 73 5b 69 5d 2c 20 69 73 56 69 72 74 75 61 6c  gs[i], isVirtual
5ae80 5d 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ]);.            
5ae90 2f 2f 20 6d 6f 76 65 20 74 68 65 20 6f 6c 64 20  // move the old 
5aea0 74 61 67 20 69 6e 73 74 61 6e 63 65 0a 20 20 20  tag instance.   
5aeb0 20 20 20 20 20 20 20 20 20 74 61 67 73 2e 73 70           tags.sp
5aec0 6c 69 63 65 28 69 2c 20 30 2c 20 74 61 67 73 2e  lice(i, 0, tags.
5aed0 73 70 6c 69 63 65 28 70 6f 73 2c 20 31 29 5b 30  splice(pos, 1)[0
5aee0 5d 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ]);.            
5aef0 2f 2f 20 6d 6f 76 65 20 74 68 65 20 6f 6c 64 20  // move the old 
5af00 69 74 65 6d 0a 20 20 20 20 20 20 20 20 20 20 20  item.           
5af10 20 6f 6c 64 49 74 65 6d 73 2e 73 70 6c 69 63 65   oldItems.splice
5af20 28 69 2c 20 30 2c 20 6f 6c 64 49 74 65 6d 73 2e  (i, 0, oldItems.
5af30 73 70 6c 69 63 65 28 70 6f 73 2c 20 31 29 5b 30  splice(pos, 1)[0
5af40 5d 29 3b 0a 20 20 20 20 20 20 20 20 20 20 7d 0a  ]);.          }.
5af50 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 75 70  .          // up
5af60 64 61 74 65 20 74 68 65 20 70 6f 73 69 74 69 6f  date the positio
5af70 6e 20 61 74 74 72 69 62 75 74 65 20 69 66 20 69  n attribute if i
5af80 74 20 65 78 69 73 74 73 0a 20 20 20 20 20 20 20  t exists.       
5af90 20 20 20 69 66 20 28 65 78 70 72 2e 70 6f 73 29     if (expr.pos)
5afa0 20 7b 20 74 61 67 5b 65 78 70 72 2e 70 6f 73 5d   { tag[expr.pos]
5afb0 20 3d 20 69 3b 20 7d 0a 0a 20 20 20 20 20 20 20   = i; }..       
5afc0 20 20 20 2f 2f 20 69 66 20 74 68 65 20 6c 6f 6f     // if the loo
5afd0 70 20 74 61 67 73 20 61 72 65 20 6e 6f 74 20 63  p tags are not c
5afe0 75 73 74 6f 6d 0a 20 20 20 20 20 20 20 20 20 20  ustom.          
5aff0 2f 2f 20 77 65 20 6e 65 65 64 20 74 6f 20 6d 6f  // we need to mo
5b000 76 65 20 61 6c 6c 20 74 68 65 69 72 20 63 75 73  ve all their cus
5b010 74 6f 6d 20 74 61 67 73 20 69 6e 74 6f 20 74 68  tom tags into th
5b020 65 20 72 69 67 68 74 20 70 6f 73 69 74 69 6f 6e  e right position
5b030 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21  .          if (!
5b040 63 68 69 6c 64 20 26 26 20 74 61 67 2e 74 61 67  child && tag.tag
5b050 73 29 20 7b 20 6d 6f 76 65 4e 65 73 74 65 64 54  s) { moveNestedT
5b060 61 67 73 2e 63 61 6c 6c 28 74 61 67 2c 20 69 29  ags.call(tag, i)
5b070 3b 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20  ; }.        }.. 
5b080 20 20 20 20 20 20 20 2f 2f 20 63 61 63 68 65 20         // cache 
5b090 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 69 74 65  the original ite
5b0a0 6d 20 74 6f 20 75 73 65 20 69 74 20 69 6e 20 74  m to use it in t
5b0b0 68 65 20 65 76 65 6e 74 73 20 62 6f 75 6e 64 20  he events bound 
5b0c0 74 6f 20 74 68 69 73 20 6e 6f 64 65 0a 20 20 20  to this node.   
5b0d0 20 20 20 20 20 2f 2f 20 61 6e 64 20 69 74 73 20       // and its 
5b0e0 63 68 69 6c 64 72 65 6e 0a 20 20 20 20 20 20 20  children.       
5b0f0 20 65 78 74 65 6e 64 28 74 61 67 2e 5f 5f 2c 20   extend(tag.__, 
5b100 7b 0a 20 20 20 20 20 20 20 20 20 20 69 74 65 6d  {.          item
5b110 3a 20 69 74 65 6d 2c 0a 20 20 20 20 20 20 20 20  : item,.        
5b120 20 20 69 6e 64 65 78 3a 20 69 2c 0a 20 20 20 20    index: i,.    
5b130 20 20 20 20 20 20 70 61 72 65 6e 74 3a 20 70 61        parent: pa
5b140 72 65 6e 74 0a 20 20 20 20 20 20 20 20 7d 29 3b  rent.        });
5b150 0a 0a 20 20 20 20 20 20 20 20 74 6d 70 49 74 65  ..        tmpIte
5b160 6d 73 5b 69 5d 20 3d 20 69 74 65 6d 49 64 3b 0a  ms[i] = itemId;.
5b170 0a 20 20 20 20 20 20 20 20 69 66 20 28 21 6d 75  .        if (!mu
5b180 73 74 43 72 65 61 74 65 29 20 7b 20 74 61 67 2e  stCreate) { tag.
5b190 75 70 64 61 74 65 28 69 74 65 6d 29 3b 20 7d 0a  update(item); }.
5b1a0 20 20 20 20 20 20 7d 29 3b 0a 0a 20 20 20 20 20        });..     
5b1b0 20 2f 2f 20 72 65 6d 6f 76 65 20 74 68 65 20 72   // remove the r
5b1c0 65 64 75 6e 64 61 6e 74 20 74 61 67 73 0a 20 20  edundant tags.  
5b1d0 20 20 20 20 75 6e 6d 6f 75 6e 74 52 65 64 75 6e      unmountRedun
5b1e0 64 61 6e 74 28 69 74 65 6d 73 2c 20 74 61 67 73  dant(items, tags
5b1f0 2c 20 66 69 6c 74 65 72 65 64 49 74 65 6d 73 43  , filteredItemsC
5b200 6f 75 6e 74 29 3b 0a 0a 20 20 20 20 20 20 2f 2f  ount);..      //
5b210 20 63 6c 6f 6e 65 20 74 68 65 20 69 74 65 6d 73   clone the items
5b220 20 61 72 72 61 79 0a 20 20 20 20 20 20 6f 6c 64   array.      old
5b230 49 74 65 6d 73 20 3d 20 74 6d 70 49 74 65 6d 73  Items = tmpItems
5b240 2e 73 6c 69 63 65 28 29 3b 0a 0a 20 20 20 20 20  .slice();..     
5b250 20 72 6f 6f 74 2e 69 6e 73 65 72 74 42 65 66 6f   root.insertBefo
5b260 72 65 28 66 72 61 67 2c 20 70 6c 61 63 65 68 6f  re(frag, placeho
5b270 6c 64 65 72 29 3b 0a 20 20 20 20 7d 3b 0a 0a 20  lder);.    };.. 
5b280 20 20 20 65 78 70 72 2e 75 6e 6d 6f 75 6e 74 20     expr.unmount 
5b290 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a  = function () {.
5b2a0 20 20 20 20 20 20 65 61 63 68 28 74 61 67 73 2c        each(tags,
5b2b0 20 66 75 6e 63 74 69 6f 6e 20 28 74 29 20 7b 20   function (t) { 
5b2c0 74 2e 75 6e 6d 6f 75 6e 74 28 29 3b 20 7d 29 3b  t.unmount(); });
5b2d0 0a 20 20 20 20 7d 3b 0a 0a 20 20 20 20 72 65 74  .    };..    ret
5b2e0 75 72 6e 20 65 78 70 72 0a 20 20 7d 0a 0a 20 20  urn expr.  }..  
5b2f0 76 61 72 20 52 65 66 45 78 70 72 20 3d 20 7b 0a  var RefExpr = {.
5b300 20 20 20 20 69 6e 69 74 3a 20 66 75 6e 63 74 69      init: functi
5b310 6f 6e 20 69 6e 69 74 28 64 6f 6d 2c 20 70 61 72  on init(dom, par
5b320 65 6e 74 2c 20 61 74 74 72 4e 61 6d 65 2c 20 61  ent, attrName, a
5b330 74 74 72 56 61 6c 75 65 29 20 7b 0a 20 20 20 20  ttrValue) {.    
5b340 20 20 74 68 69 73 2e 64 6f 6d 20 3d 20 64 6f 6d    this.dom = dom
5b350 3b 0a 20 20 20 20 20 20 74 68 69 73 2e 61 74 74  ;.      this.att
5b360 72 20 3d 20 61 74 74 72 4e 61 6d 65 3b 0a 20 20  r = attrName;.  
5b370 20 20 20 20 74 68 69 73 2e 72 61 77 56 61 6c 75      this.rawValu
5b380 65 20 3d 20 61 74 74 72 56 61 6c 75 65 3b 0a 20  e = attrValue;. 
5b390 20 20 20 20 20 74 68 69 73 2e 70 61 72 65 6e 74       this.parent
5b3a0 20 3d 20 70 61 72 65 6e 74 3b 0a 20 20 20 20 20   = parent;.     
5b3b0 20 74 68 69 73 2e 68 61 73 45 78 70 20 3d 20 63   this.hasExp = c
5b3c0 73 70 5f 74 6d 70 6c 5f 31 2e 68 61 73 45 78 70  sp_tmpl_1.hasExp
5b3d0 72 28 61 74 74 72 56 61 6c 75 65 29 3b 0a 20 20  r(attrValue);.  
5b3e0 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 0a      return this.
5b3f0 20 20 20 20 7d 2c 0a 20 20 20 20 75 70 64 61 74      },.    updat
5b400 65 3a 20 66 75 6e 63 74 69 6f 6e 20 75 70 64 61  e: function upda
5b410 74 65 28 29 20 7b 0a 20 20 20 20 20 20 76 61 72  te() {.      var
5b420 20 6f 6c 64 20 3d 20 74 68 69 73 2e 76 61 6c 75   old = this.valu
5b430 65 3b 0a 20 20 20 20 20 20 76 61 72 20 63 75 73  e;.      var cus
5b440 74 6f 6d 50 61 72 65 6e 74 20 3d 20 74 68 69 73  tomParent = this
5b450 2e 70 61 72 65 6e 74 20 26 26 20 67 65 74 49 6d  .parent && getIm
5b460 6d 65 64 69 61 74 65 43 75 73 74 6f 6d 50 61 72  mediateCustomPar
5b470 65 6e 74 28 74 68 69 73 2e 70 61 72 65 6e 74 29  ent(this.parent)
5b480 3b 0a 20 20 20 20 20 20 2f 2f 20 69 66 20 74 68  ;.      // if th
5b490 65 20 72 65 66 65 72 65 6e 63 65 64 20 65 6c 65  e referenced ele
5b4a0 6d 65 6e 74 20 69 73 20 61 20 63 75 73 74 6f 6d  ment is a custom
5b4b0 20 74 61 67 2c 20 74 68 65 6e 20 77 65 20 73 65   tag, then we se
5b4c0 74 20 74 68 65 20 74 61 67 20 69 74 73 65 6c 66  t the tag itself
5b4d0 2c 20 72 61 74 68 65 72 20 74 68 61 6e 20 44 4f  , rather than DO
5b4e0 4d 0a 20 20 20 20 20 20 76 61 72 20 74 61 67 4f  M.      var tagO
5b4f0 72 44 6f 6d 20 3d 20 74 68 69 73 2e 64 6f 6d 2e  rDom = this.dom.
5b500 5f 5f 72 65 66 20 7c 7c 20 74 68 69 73 2e 74 61  __ref || this.ta
5b510 67 20 7c 7c 20 74 68 69 73 2e 64 6f 6d 3b 0a 0a  g || this.dom;..
5b520 20 20 20 20 20 20 74 68 69 73 2e 76 61 6c 75 65        this.value
5b530 20 3d 20 74 68 69 73 2e 68 61 73 45 78 70 20 3f   = this.hasExp ?
5b540 20 63 73 70 5f 74 6d 70 6c 5f 31 28 74 68 69 73   csp_tmpl_1(this
5b550 2e 72 61 77 56 61 6c 75 65 2c 20 74 68 69 73 2e  .rawValue, this.
5b560 70 61 72 65 6e 74 29 20 3a 20 74 68 69 73 2e 72  parent) : this.r
5b570 61 77 56 61 6c 75 65 3b 0a 0a 20 20 20 20 20 20  awValue;..      
5b580 2f 2f 20 74 68 65 20 6e 61 6d 65 20 63 68 61 6e  // the name chan
5b590 67 65 64 2c 20 73 6f 20 77 65 20 6e 65 65 64 20  ged, so we need 
5b5a0 74 6f 20 72 65 6d 6f 76 65 20 69 74 20 66 72 6f  to remove it fro
5b5b0 6d 20 74 68 65 20 6f 6c 64 20 6b 65 79 20 28 69  m the old key (i
5b5c0 66 20 70 72 65 73 65 6e 74 29 0a 20 20 20 20 20  f present).     
5b5d0 20 69 66 20 28 21 69 73 42 6c 61 6e 6b 28 6f 6c   if (!isBlank(ol
5b5e0 64 29 20 26 26 20 63 75 73 74 6f 6d 50 61 72 65  d) && customPare
5b5f0 6e 74 29 20 7b 20 61 72 72 61 79 69 73 68 52 65  nt) { arrayishRe
5b600 6d 6f 76 65 28 63 75 73 74 6f 6d 50 61 72 65 6e  move(customParen
5b610 74 2e 72 65 66 73 2c 20 6f 6c 64 2c 20 74 61 67  t.refs, old, tag
5b620 4f 72 44 6f 6d 29 3b 20 7d 0a 20 20 20 20 20 20  OrDom); }.      
5b630 69 66 20 28 21 69 73 42 6c 61 6e 6b 28 74 68 69  if (!isBlank(thi
5b640 73 2e 76 61 6c 75 65 29 20 26 26 20 69 73 53 74  s.value) && isSt
5b650 72 69 6e 67 28 74 68 69 73 2e 76 61 6c 75 65 29  ring(this.value)
5b660 29 20 7b 0a 20 20 20 20 20 20 20 20 2f 2f 20 61  ) {.        // a
5b670 64 64 20 69 74 20 74 6f 20 74 68 65 20 72 65 66  dd it to the ref
5b680 73 20 6f 66 20 70 61 72 65 6e 74 20 74 61 67 20  s of parent tag 
5b690 28 74 68 69 73 20 62 65 68 61 76 69 6f 72 20 77  (this behavior w
5b6a0 61 73 20 63 68 61 6e 67 65 64 20 3e 3d 33 2e 30  as changed >=3.0
5b6b0 29 0a 20 20 20 20 20 20 20 20 69 66 20 28 63 75  ).        if (cu
5b6c0 73 74 6f 6d 50 61 72 65 6e 74 29 20 7b 20 61 72  stomParent) { ar
5b6d0 72 61 79 69 73 68 41 64 64 28 0a 20 20 20 20 20  rayishAdd(.     
5b6e0 20 20 20 20 20 63 75 73 74 6f 6d 50 61 72 65 6e       customParen
5b6f0 74 2e 72 65 66 73 2c 0a 20 20 20 20 20 20 20 20  t.refs,.        
5b700 20 20 74 68 69 73 2e 76 61 6c 75 65 2c 0a 20 20    this.value,.  
5b710 20 20 20 20 20 20 20 20 74 61 67 4f 72 44 6f 6d          tagOrDom
5b720 2c 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 75  ,.          // u
5b730 73 65 20 61 6e 20 61 72 72 61 79 20 69 66 20 69  se an array if i
5b740 74 27 73 20 61 20 6c 6f 6f 70 65 64 20 6e 6f 64  t's a looped nod
5b750 65 20 61 6e 64 20 74 68 65 20 72 65 66 20 69 73  e and the ref is
5b760 20 6e 6f 74 20 61 6e 20 65 78 70 72 65 73 73 69   not an expressi
5b770 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 6e 75 6c  on.          nul
5b780 6c 2c 0a 20 20 20 20 20 20 20 20 20 20 74 68 69  l,.          thi
5b790 73 2e 70 61 72 65 6e 74 2e 5f 5f 2e 69 6e 64 65  s.parent.__.inde
5b7a0 78 0a 20 20 20 20 20 20 20 20 29 3b 20 7d 0a 0a  x.        ); }..
5b7b0 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73          if (this
5b7c0 2e 76 61 6c 75 65 20 21 3d 3d 20 6f 6c 64 29 20  .value !== old) 
5b7d0 7b 0a 20 20 20 20 20 20 20 20 20 20 73 65 74 41  {.          setA
5b7e0 74 74 72 69 62 75 74 65 28 74 68 69 73 2e 64 6f  ttribute(this.do
5b7f0 6d 2c 20 74 68 69 73 2e 61 74 74 72 2c 20 74 68  m, this.attr, th
5b800 69 73 2e 76 61 6c 75 65 29 3b 0a 20 20 20 20 20  is.value);.     
5b810 20 20 20 7d 0a 20 20 20 20 20 20 7d 20 65 6c 73     }.      } els
5b820 65 20 7b 0a 20 20 20 20 20 20 20 20 72 65 6d 6f  e {.        remo
5b830 76 65 41 74 74 72 69 62 75 74 65 28 74 68 69 73  veAttribute(this
5b840 2e 64 6f 6d 2c 20 74 68 69 73 2e 61 74 74 72 29  .dom, this.attr)
5b850 3b 0a 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20  ;.      }..     
5b860 20 2f 2f 20 63 61 63 68 65 20 74 68 65 20 72 65   // cache the re
5b870 66 20 62 6f 75 6e 64 20 74 6f 20 74 68 69 73 20  f bound to this 
5b880 64 6f 6d 20 6e 6f 64 65 0a 20 20 20 20 20 20 2f  dom node.      /
5b890 2f 20 74 6f 20 72 65 75 73 65 20 69 74 20 69 6e  / to reuse it in
5b8a0 20 66 75 74 75 72 65 20 28 73 65 65 20 61 6c 73   future (see als
5b8b0 6f 20 23 32 33 32 39 29 0a 20 20 20 20 20 20 69  o #2329).      i
5b8c0 66 20 28 21 74 68 69 73 2e 64 6f 6d 2e 5f 5f 72  f (!this.dom.__r
5b8d0 65 66 29 20 7b 20 74 68 69 73 2e 64 6f 6d 2e 5f  ef) { this.dom._
5b8e0 5f 72 65 66 20 3d 20 74 61 67 4f 72 44 6f 6d 3b  _ref = tagOrDom;
5b8f0 20 7d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 75 6e   }.    },.    un
5b900 6d 6f 75 6e 74 3a 20 66 75 6e 63 74 69 6f 6e 20  mount: function 
5b910 75 6e 6d 6f 75 6e 74 28 29 20 7b 0a 20 20 20 20  unmount() {.    
5b920 20 20 76 61 72 20 74 61 67 4f 72 44 6f 6d 20 3d    var tagOrDom =
5b930 20 74 68 69 73 2e 74 61 67 20 7c 7c 20 74 68 69   this.tag || thi
5b940 73 2e 64 6f 6d 3b 0a 20 20 20 20 20 20 76 61 72  s.dom;.      var
5b950 20 63 75 73 74 6f 6d 50 61 72 65 6e 74 20 3d 20   customParent = 
5b960 74 68 69 73 2e 70 61 72 65 6e 74 20 26 26 20 67  this.parent && g
5b970 65 74 49 6d 6d 65 64 69 61 74 65 43 75 73 74 6f  etImmediateCusto
5b980 6d 50 61 72 65 6e 74 28 74 68 69 73 2e 70 61 72  mParent(this.par
5b990 65 6e 74 29 3b 0a 20 20 20 20 20 20 69 66 20 28  ent);.      if (
5b9a0 21 69 73 42 6c 61 6e 6b 28 74 68 69 73 2e 76 61  !isBlank(this.va
5b9b0 6c 75 65 29 20 26 26 20 63 75 73 74 6f 6d 50 61  lue) && customPa
5b9c0 72 65 6e 74 29 0a 20 20 20 20 20 20 20 20 7b 20  rent).        { 
5b9d0 61 72 72 61 79 69 73 68 52 65 6d 6f 76 65 28 63  arrayishRemove(c
5b9e0 75 73 74 6f 6d 50 61 72 65 6e 74 2e 72 65 66 73  ustomParent.refs
5b9f0 2c 20 74 68 69 73 2e 76 61 6c 75 65 2c 20 74 61  , this.value, ta
5ba00 67 4f 72 44 6f 6d 29 3b 20 7d 0a 20 20 20 20 7d  gOrDom); }.    }
5ba10 0a 20 20 7d 3b 0a 0a 20 20 2f 2a 2a 0a 20 20 20  .  };..  /**.   
5ba20 2a 20 43 72 65 61 74 65 20 61 20 6e 65 77 20 72  * Create a new r
5ba30 65 66 20 64 69 72 65 63 74 69 76 65 0a 20 20 20  ef directive.   
5ba40 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 48 54 4d  * @param   { HTM
5ba50 4c 45 6c 65 6d 65 6e 74 20 7d 20 64 6f 6d 20 2d  LElement } dom -
5ba60 20 64 6f 6d 20 6e 6f 64 65 20 68 61 76 69 6e 67   dom node having
5ba70 20 74 68 65 20 72 65 66 20 61 74 74 72 69 62 75   the ref attribu
5ba80 74 65 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20  te.   * @param  
5ba90 20 7b 20 54 61 67 20 7d 20 63 6f 6e 74 65 78 74   { Tag } context
5baa0 20 2d 20 74 61 67 20 69 6e 73 74 61 6e 63 65 20   - tag instance 
5bab0 77 68 65 72 65 20 74 68 65 20 44 4f 4d 20 6e 6f  where the DOM no
5bac0 64 65 20 69 73 20 6c 6f 63 61 74 65 64 0a 20 20  de is located.  
5bad0 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 53 74   * @param   { St
5bae0 72 69 6e 67 20 7d 20 61 74 74 72 4e 61 6d 65 20  ring } attrName 
5baf0 2d 20 65 69 74 68 65 72 20 27 72 65 66 27 20 6f  - either 'ref' o
5bb00 72 20 27 64 61 74 61 2d 72 65 66 27 0a 20 20 20  r 'data-ref'.   
5bb10 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 53 74 72  * @param   { Str
5bb20 69 6e 67 20 7d 20 61 74 74 72 56 61 6c 75 65 20  ing } attrValue 
5bb30 2d 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 72  - value of the r
5bb40 65 66 20 61 74 74 72 69 62 75 74 65 0a 20 20 20  ef attribute.   
5bb50 2a 20 40 72 65 74 75 72 6e 73 20 7b 20 52 65 66  * @returns { Ref
5bb60 45 78 70 72 20 7d 20 61 20 6e 65 77 20 52 65 66  Expr } a new Ref
5bb70 45 78 70 72 20 6f 62 6a 65 63 74 0a 20 20 20 2a  Expr object.   *
5bb80 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 63 72 65  /.  function cre
5bb90 61 74 65 52 65 66 44 69 72 65 63 74 69 76 65 28  ateRefDirective(
5bba0 64 6f 6d 2c 20 74 61 67 2c 20 61 74 74 72 4e 61  dom, tag, attrNa
5bbb0 6d 65 2c 20 61 74 74 72 56 61 6c 75 65 29 20 7b  me, attrValue) {
5bbc0 0a 20 20 20 20 72 65 74 75 72 6e 20 63 72 65 61  .    return crea
5bbd0 74 65 28 52 65 66 45 78 70 72 29 2e 69 6e 69 74  te(RefExpr).init
5bbe0 28 64 6f 6d 2c 20 74 61 67 2c 20 61 74 74 72 4e  (dom, tag, attrN
5bbf0 61 6d 65 2c 20 61 74 74 72 56 61 6c 75 65 29 0a  ame, attrValue).
5bc00 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20    }..  /**.   * 
5bc10 54 72 69 67 67 65 72 20 74 68 65 20 75 6e 6d 6f  Trigger the unmo
5bc20 75 6e 74 20 6d 65 74 68 6f 64 20 6f 6e 20 61 6c  unt method on al
5bc30 6c 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e  l the expression
5bc40 73 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20  s.   * @param   
5bc50 7b 20 41 72 72 61 79 20 7d 20 65 78 70 72 65 73  { Array } expres
5bc60 73 69 6f 6e 73 20 2d 20 44 4f 4d 20 65 78 70 72  sions - DOM expr
5bc70 65 73 73 69 6f 6e 73 0a 20 20 20 2a 2f 0a 20 20  essions.   */.  
5bc80 66 75 6e 63 74 69 6f 6e 20 75 6e 6d 6f 75 6e 74  function unmount
5bc90 41 6c 6c 28 65 78 70 72 65 73 73 69 6f 6e 73 29  All(expressions)
5bca0 20 7b 0a 20 20 20 20 65 61 63 68 28 65 78 70 72   {.    each(expr
5bcb0 65 73 73 69 6f 6e 73 2c 20 66 75 6e 63 74 69 6f  essions, functio
5bcc0 6e 20 28 65 78 70 72 29 20 7b 0a 20 20 20 20 20  n (expr) {.     
5bcd0 20 69 66 20 28 65 78 70 72 2e 75 6e 6d 6f 75 6e   if (expr.unmoun
5bce0 74 29 20 7b 20 65 78 70 72 2e 75 6e 6d 6f 75 6e  t) { expr.unmoun
5bcf0 74 28 74 72 75 65 29 3b 20 7d 0a 20 20 20 20 20  t(true); }.     
5bd00 20 65 6c 73 65 20 69 66 20 28 65 78 70 72 2e 74   else if (expr.t
5bd10 61 67 4e 61 6d 65 29 20 7b 20 65 78 70 72 2e 74  agName) { expr.t
5bd20 61 67 2e 75 6e 6d 6f 75 6e 74 28 74 72 75 65 29  ag.unmount(true)
5bd30 3b 20 7d 0a 20 20 20 20 20 20 65 6c 73 65 20 69  ; }.      else i
5bd40 66 20 28 65 78 70 72 2e 75 6e 6d 6f 75 6e 74 29  f (expr.unmount)
5bd50 20 7b 20 65 78 70 72 2e 75 6e 6d 6f 75 6e 74 28   { expr.unmount(
5bd60 29 3b 20 7d 0a 20 20 20 20 7d 29 3b 0a 20 20 7d  ); }.    });.  }
5bd70 0a 0a 20 20 76 61 72 20 49 66 45 78 70 72 20 3d  ..  var IfExpr =
5bd80 20 7b 0a 20 20 20 20 69 6e 69 74 3a 20 66 75 6e   {.    init: fun
5bd90 63 74 69 6f 6e 20 69 6e 69 74 28 64 6f 6d 2c 20  ction init(dom, 
5bda0 74 61 67 2c 20 65 78 70 72 29 20 7b 0a 20 20 20  tag, expr) {.   
5bdb0 20 20 20 72 65 6d 6f 76 65 41 74 74 72 69 62 75     removeAttribu
5bdc0 74 65 28 64 6f 6d 2c 20 43 4f 4e 44 49 54 49 4f  te(dom, CONDITIO
5bdd0 4e 41 4c 5f 44 49 52 45 43 54 49 56 45 29 3b 0a  NAL_DIRECTIVE);.
5bde0 20 20 20 20 20 20 65 78 74 65 6e 64 28 74 68 69        extend(thi
5bdf0 73 2c 20 7b 20 74 61 67 3a 20 74 61 67 2c 20 65  s, { tag: tag, e
5be00 78 70 72 3a 20 65 78 70 72 2c 20 73 74 75 62 3a  xpr: expr, stub:
5be10 20 63 72 65 61 74 65 44 4f 4d 50 6c 61 63 65 68   createDOMPlaceh
5be20 6f 6c 64 65 72 28 29 2c 20 70 72 69 73 74 69 6e  older(), pristin
5be30 65 3a 20 64 6f 6d 20 7d 29 3b 0a 20 20 20 20 20  e: dom });.     
5be40 20 76 61 72 20 70 20 3d 20 64 6f 6d 2e 70 61 72   var p = dom.par
5be50 65 6e 74 4e 6f 64 65 3b 0a 20 20 20 20 20 20 70  entNode;.      p
5be60 2e 69 6e 73 65 72 74 42 65 66 6f 72 65 28 74 68  .insertBefore(th
5be70 69 73 2e 73 74 75 62 2c 20 64 6f 6d 29 3b 0a 20  is.stub, dom);. 
5be80 20 20 20 20 20 70 2e 72 65 6d 6f 76 65 43 68 69       p.removeChi
5be90 6c 64 28 64 6f 6d 29 3b 0a 0a 20 20 20 20 20 20  ld(dom);..      
5bea0 72 65 74 75 72 6e 20 74 68 69 73 0a 20 20 20 20  return this.    
5beb0 7d 2c 0a 20 20 20 20 75 70 64 61 74 65 3a 20 66  },.    update: f
5bec0 75 6e 63 74 69 6f 6e 20 75 70 64 61 74 65 24 24  unction update$$
5bed0 31 28 29 20 7b 0a 20 20 20 20 20 20 74 68 69 73  1() {.      this
5bee0 2e 76 61 6c 75 65 20 3d 20 63 73 70 5f 74 6d 70  .value = csp_tmp
5bef0 6c 5f 31 28 74 68 69 73 2e 65 78 70 72 2c 20 74  l_1(this.expr, t
5bf00 68 69 73 2e 74 61 67 29 3b 0a 0a 20 20 20 20 20  his.tag);..     
5bf10 20 69 66 20 28 21 74 68 69 73 2e 73 74 75 62 2e   if (!this.stub.
5bf20 70 61 72 65 6e 74 4e 6f 64 65 29 20 7b 20 72 65  parentNode) { re
5bf30 74 75 72 6e 20 7d 0a 0a 20 20 20 20 20 20 69 66  turn }..      if
5bf40 20 28 74 68 69 73 2e 76 61 6c 75 65 20 26 26 20   (this.value && 
5bf50 21 74 68 69 73 2e 63 75 72 72 65 6e 74 29 20 7b  !this.current) {
5bf60 20 2f 2f 20 69 6e 73 65 72 74 0a 20 20 20 20 20   // insert.     
5bf70 20 20 20 74 68 69 73 2e 63 75 72 72 65 6e 74 20     this.current 
5bf80 3d 20 74 68 69 73 2e 70 72 69 73 74 69 6e 65 2e  = this.pristine.
5bf90 63 6c 6f 6e 65 4e 6f 64 65 28 74 72 75 65 29 3b  cloneNode(true);
5bfa0 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 73 74  .        this.st
5bfb0 75 62 2e 70 61 72 65 6e 74 4e 6f 64 65 2e 69 6e  ub.parentNode.in
5bfc0 73 65 72 74 42 65 66 6f 72 65 28 74 68 69 73 2e  sertBefore(this.
5bfd0 63 75 72 72 65 6e 74 2c 20 74 68 69 73 2e 73 74  current, this.st
5bfe0 75 62 29 3b 0a 20 20 20 20 20 20 20 20 74 68 69  ub);.        thi
5bff0 73 2e 65 78 70 72 65 73 73 69 6f 6e 73 20 3d 20  s.expressions = 
5c000 70 61 72 73 65 45 78 70 72 65 73 73 69 6f 6e 73  parseExpressions
5c010 2e 61 70 70 6c 79 28 74 68 69 73 2e 74 61 67 2c  .apply(this.tag,
5c020 20 5b 74 68 69 73 2e 63 75 72 72 65 6e 74 2c 20   [this.current, 
5c030 74 72 75 65 5d 29 3b 0a 20 20 20 20 20 20 7d 20  true]);.      } 
5c040 65 6c 73 65 20 69 66 20 28 21 74 68 69 73 2e 76  else if (!this.v
5c050 61 6c 75 65 20 26 26 20 74 68 69 73 2e 63 75 72  alue && this.cur
5c060 72 65 6e 74 29 20 7b 20 2f 2f 20 72 65 6d 6f 76  rent) { // remov
5c070 65 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 75  e.        this.u
5c080 6e 6d 6f 75 6e 74 28 29 3b 0a 20 20 20 20 20 20  nmount();.      
5c090 20 20 74 68 69 73 2e 63 75 72 72 65 6e 74 20 3d    this.current =
5c0a0 20 6e 75 6c 6c 3b 0a 20 20 20 20 20 20 20 20 74   null;.        t
5c0b0 68 69 73 2e 65 78 70 72 65 73 73 69 6f 6e 73 20  his.expressions 
5c0c0 3d 20 5b 5d 3b 0a 20 20 20 20 20 20 7d 0a 0a 20  = [];.      }.. 
5c0d0 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 76 61       if (this.va
5c0e0 6c 75 65 29 20 7b 20 75 70 64 61 74 65 2e 63 61  lue) { update.ca
5c0f0 6c 6c 28 74 68 69 73 2e 74 61 67 2c 20 74 68 69  ll(this.tag, thi
5c100 73 2e 65 78 70 72 65 73 73 69 6f 6e 73 29 3b 20  s.expressions); 
5c110 7d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 75 6e 6d  }.    },.    unm
5c120 6f 75 6e 74 3a 20 66 75 6e 63 74 69 6f 6e 20 75  ount: function u
5c130 6e 6d 6f 75 6e 74 28 29 20 7b 0a 20 20 20 20 20  nmount() {.     
5c140 20 69 66 20 28 74 68 69 73 2e 63 75 72 72 65 6e   if (this.curren
5c150 74 29 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20  t) {.        if 
5c160 28 74 68 69 73 2e 63 75 72 72 65 6e 74 2e 5f 74  (this.current._t
5c170 61 67 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20  ag) {.          
5c180 74 68 69 73 2e 63 75 72 72 65 6e 74 2e 5f 74 61  this.current._ta
5c190 67 2e 75 6e 6d 6f 75 6e 74 28 29 3b 0a 20 20 20  g.unmount();.   
5c1a0 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28       } else if (
5c1b0 74 68 69 73 2e 63 75 72 72 65 6e 74 2e 70 61 72  this.current.par
5c1c0 65 6e 74 4e 6f 64 65 29 20 7b 0a 20 20 20 20 20  entNode) {.     
5c1d0 20 20 20 20 20 74 68 69 73 2e 63 75 72 72 65 6e       this.curren
5c1e0 74 2e 70 61 72 65 6e 74 4e 6f 64 65 2e 72 65 6d  t.parentNode.rem
5c1f0 6f 76 65 43 68 69 6c 64 28 74 68 69 73 2e 63 75  oveChild(this.cu
5c200 72 72 65 6e 74 29 3b 0a 20 20 20 20 20 20 20 20  rrent);.        
5c210 7d 0a 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20  }.      }..     
5c220 20 75 6e 6d 6f 75 6e 74 41 6c 6c 28 74 68 69 73   unmountAll(this
5c230 2e 65 78 70 72 65 73 73 69 6f 6e 73 20 7c 7c 20  .expressions || 
5c240 5b 5d 29 3b 0a 20 20 20 20 7d 0a 20 20 7d 3b 0a  []);.    }.  };.
5c250 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 43 72 65 61  .  /**.   * Crea
5c260 74 65 20 61 20 6e 65 77 20 69 66 20 64 69 72 65  te a new if dire
5c270 63 74 69 76 65 0a 20 20 20 2a 20 40 70 61 72 61  ctive.   * @para
5c280 6d 20 20 20 7b 20 48 54 4d 4c 45 6c 65 6d 65 6e  m   { HTMLElemen
5c290 74 20 7d 20 64 6f 6d 20 2d 20 69 66 20 72 6f 6f  t } dom - if roo
5c2a0 74 20 64 6f 6d 20 6e 6f 64 65 0a 20 20 20 2a 20  t dom node.   * 
5c2b0 40 70 61 72 61 6d 20 20 20 7b 20 54 61 67 20 7d  @param   { Tag }
5c2c0 20 63 6f 6e 74 65 78 74 20 2d 20 74 61 67 20 69   context - tag i
5c2d0 6e 73 74 61 6e 63 65 20 77 68 65 72 65 20 74 68  nstance where th
5c2e0 65 20 44 4f 4d 20 6e 6f 64 65 20 69 73 20 6c 6f  e DOM node is lo
5c2f0 63 61 74 65 64 0a 20 20 20 2a 20 40 70 61 72 61  cated.   * @para
5c300 6d 20 20 20 7b 20 53 74 72 69 6e 67 20 7d 20 61  m   { String } a
5c310 74 74 72 20 2d 20 69 66 20 65 78 70 72 65 73 73  ttr - if express
5c320 69 6f 6e 0a 20 20 20 2a 20 40 72 65 74 75 72 6e  ion.   * @return
5c330 73 20 7b 20 49 46 45 78 70 72 20 7d 20 61 20 6e  s { IFExpr } a n
5c340 65 77 20 49 66 45 78 70 72 20 6f 62 6a 65 63 74  ew IfExpr object
5c350 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f  .   */.  functio
5c360 6e 20 63 72 65 61 74 65 49 66 44 69 72 65 63 74  n createIfDirect
5c370 69 76 65 28 64 6f 6d 2c 20 74 61 67 2c 20 61 74  ive(dom, tag, at
5c380 74 72 29 20 7b 0a 20 20 20 20 72 65 74 75 72 6e  tr) {.    return
5c390 20 63 72 65 61 74 65 28 49 66 45 78 70 72 29 2e   create(IfExpr).
5c3a0 69 6e 69 74 28 64 6f 6d 2c 20 74 61 67 2c 20 61  init(dom, tag, a
5c3b0 74 74 72 29 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a  ttr).  }..  /**.
5c3c0 20 20 20 2a 20 57 61 6c 6b 20 74 68 65 20 74 61     * Walk the ta
5c3d0 67 20 44 4f 4d 20 74 6f 20 64 65 74 65 63 74 20  g DOM to detect 
5c3e0 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 73 20  the expressions 
5c3f0 74 6f 20 65 76 61 6c 75 61 74 65 0a 20 20 20 2a  to evaluate.   *
5c400 20 40 74 68 69 73 20 54 61 67 0a 20 20 20 2a 20   @this Tag.   * 
5c410 40 70 61 72 61 6d 20 20 20 7b 20 48 54 4d 4c 45  @param   { HTMLE
5c420 6c 65 6d 65 6e 74 20 7d 20 72 6f 6f 74 20 2d 20  lement } root - 
5c430 72 6f 6f 74 20 74 61 67 20 77 68 65 72 65 20 77  root tag where w
5c440 65 20 77 69 6c 6c 20 73 74 61 72 74 20 64 69 67  e will start dig
5c450 67 69 6e 67 20 74 68 65 20 65 78 70 72 65 73 73  ging the express
5c460 69 6f 6e 73 0a 20 20 20 2a 20 40 70 61 72 61 6d  ions.   * @param
5c470 20 20 20 7b 20 42 6f 6f 6c 65 61 6e 20 7d 20 6d     { Boolean } m
5c480 75 73 74 49 6e 63 6c 75 64 65 52 6f 6f 74 20 2d  ustIncludeRoot -
5c490 20 66 6c 61 67 20 74 6f 20 64 65 63 69 64 65 20   flag to decide 
5c4a0 77 68 65 74 68 65 72 20 74 68 65 20 72 6f 6f 74  whether the root
5c4b0 20 6d 75 73 74 20 62 65 20 70 61 72 73 65 64 20   must be parsed 
5c4c0 61 73 20 77 65 6c 6c 0a 20 20 20 2a 20 40 72 65  as well.   * @re
5c4d0 74 75 72 6e 73 20 7b 20 41 72 72 61 79 20 7d 20  turns { Array } 
5c4e0 61 6c 6c 20 74 68 65 20 65 78 70 72 65 73 73 69  all the expressi
5c4f0 6f 6e 73 20 66 6f 75 6e 64 0a 20 20 20 2a 2f 0a  ons found.   */.
5c500 20 20 66 75 6e 63 74 69 6f 6e 20 70 61 72 73 65    function parse
5c510 45 78 70 72 65 73 73 69 6f 6e 73 28 72 6f 6f 74  Expressions(root
5c520 2c 20 6d 75 73 74 49 6e 63 6c 75 64 65 52 6f 6f  , mustIncludeRoo
5c530 74 29 20 7b 0a 20 20 20 20 76 61 72 20 74 68 69  t) {.    var thi
5c540 73 24 31 20 3d 20 74 68 69 73 3b 0a 0a 20 20 20  s$1 = this;..   
5c550 20 76 61 72 20 65 78 70 72 65 73 73 69 6f 6e 73   var expressions
5c560 20 3d 20 5b 5d 3b 0a 0a 20 20 20 20 77 61 6c 6b   = [];..    walk
5c570 4e 6f 64 65 73 28 72 6f 6f 74 2c 20 66 75 6e 63  Nodes(root, func
5c580 74 69 6f 6e 20 28 64 6f 6d 29 20 7b 0a 20 20 20  tion (dom) {.   
5c590 20 20 20 76 61 72 20 74 79 70 65 20 3d 20 64 6f     var type = do
5c5a0 6d 2e 6e 6f 64 65 54 79 70 65 3b 0a 20 20 20 20  m.nodeType;.    
5c5b0 20 20 76 61 72 20 61 74 74 72 3b 0a 20 20 20 20    var attr;.    
5c5c0 20 20 76 61 72 20 74 61 67 49 6d 70 6c 3b 0a 0a    var tagImpl;..
5c5d0 20 20 20 20 20 20 69 66 20 28 21 6d 75 73 74 49        if (!mustI
5c5e0 6e 63 6c 75 64 65 52 6f 6f 74 20 26 26 20 64 6f  ncludeRoot && do
5c5f0 6d 20 3d 3d 3d 20 72 6f 6f 74 29 20 7b 20 72 65  m === root) { re
5c600 74 75 72 6e 20 7d 0a 0a 20 20 20 20 20 20 2f 2f  turn }..      //
5c610 20 74 65 78 74 20 6e 6f 64 65 0a 20 20 20 20 20   text node.     
5c620 20 69 66 20 28 74 79 70 65 20 3d 3d 3d 20 33 20   if (type === 3 
5c630 26 26 20 64 6f 6d 2e 70 61 72 65 6e 74 4e 6f 64  && dom.parentNod
5c640 65 2e 74 61 67 4e 61 6d 65 20 21 3d 3d 20 27 53  e.tagName !== 'S
5c650 54 59 4c 45 27 20 26 26 20 63 73 70 5f 74 6d 70  TYLE' && csp_tmp
5c660 6c 5f 31 2e 68 61 73 45 78 70 72 28 64 6f 6d 2e  l_1.hasExpr(dom.
5c670 6e 6f 64 65 56 61 6c 75 65 29 29 0a 20 20 20 20  nodeValue)).    
5c680 20 20 20 20 7b 20 65 78 70 72 65 73 73 69 6f 6e      { expression
5c690 73 2e 70 75 73 68 28 7b 64 6f 6d 3a 20 64 6f 6d  s.push({dom: dom
5c6a0 2c 20 65 78 70 72 3a 20 64 6f 6d 2e 6e 6f 64 65  , expr: dom.node
5c6b0 56 61 6c 75 65 7d 29 3b 20 7d 0a 0a 20 20 20 20  Value}); }..    
5c6c0 20 20 69 66 20 28 74 79 70 65 20 21 3d 3d 20 31    if (type !== 1
5c6d0 29 20 7b 20 72 65 74 75 72 6e 20 7d 0a 0a 20 20  ) { return }..  
5c6e0 20 20 20 20 76 61 72 20 69 73 56 69 72 74 75 61      var isVirtua
5c6f0 6c 20 3d 20 64 6f 6d 2e 74 61 67 4e 61 6d 65 20  l = dom.tagName 
5c700 3d 3d 3d 20 27 56 49 52 54 55 41 4c 27 3b 0a 0a  === 'VIRTUAL';..
5c710 20 20 20 20 20 20 2f 2f 20 6c 6f 6f 70 2e 20 65        // loop. e
5c720 61 63 68 20 64 6f 65 73 20 69 74 27 73 20 6f 77  ach does it's ow
5c730 6e 20 74 68 69 6e 67 20 28 66 6f 72 20 6e 6f 77  n thing (for now
5c740 29 0a 20 20 20 20 20 20 69 66 20 28 61 74 74 72  ).      if (attr
5c750 20 3d 20 67 65 74 41 74 74 72 69 62 75 74 65 28   = getAttribute(
5c760 64 6f 6d 2c 20 4c 4f 4f 50 5f 44 49 52 45 43 54  dom, LOOP_DIRECT
5c770 49 56 45 29 29 20 7b 0a 20 20 20 20 20 20 20 20  IVE)) {.        
5c780 69 66 28 69 73 56 69 72 74 75 61 6c 29 20 7b 20  if(isVirtual) { 
5c790 73 65 74 41 74 74 72 69 62 75 74 65 28 64 6f 6d  setAttribute(dom
5c7a0 2c 20 27 6c 6f 6f 70 56 69 72 74 75 61 6c 27 2c  , 'loopVirtual',
5c7b0 20 74 72 75 65 29 3b 20 7d 20 2f 2f 20 69 67 6e   true); } // ign
5c7c0 6f 72 65 20 68 65 72 65 2c 20 68 61 6e 64 6c 65  ore here, handle
5c7d0 64 20 69 6e 20 5f 65 61 63 68 0a 20 20 20 20 20  d in _each.     
5c7e0 20 20 20 65 78 70 72 65 73 73 69 6f 6e 73 2e 70     expressions.p
5c7f0 75 73 68 28 5f 65 61 63 68 28 64 6f 6d 2c 20 74  ush(_each(dom, t
5c800 68 69 73 24 31 2c 20 61 74 74 72 29 29 3b 0a 20  his$1, attr));. 
5c810 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
5c820 6c 73 65 0a 20 20 20 20 20 20 7d 0a 0a 20 20 20  lse.      }..   
5c830 20 20 20 2f 2f 20 69 66 2d 61 74 74 72 73 20 62     // if-attrs b
5c840 65 63 6f 6d 65 20 74 68 65 20 6e 65 77 20 70 61  ecome the new pa
5c850 72 65 6e 74 2e 20 41 6e 79 20 66 6f 6c 6c 6f 77  rent. Any follow
5c860 69 6e 67 20 65 78 70 72 65 73 73 69 6f 6e 73 20  ing expressions 
5c870 28 65 69 74 68 65 72 20 6f 6e 20 74 68 65 20 63  (either on the c
5c880 75 72 72 65 6e 74 0a 20 20 20 20 20 20 2f 2f 20  urrent.      // 
5c890 65 6c 65 6d 65 6e 74 2c 20 6f 72 20 62 65 6c 6f  element, or belo
5c8a0 77 20 69 74 29 20 62 65 63 6f 6d 65 20 63 68 69  w it) become chi
5c8b0 6c 64 72 65 6e 20 6f 66 20 74 68 69 73 20 65 78  ldren of this ex
5c8c0 70 72 65 73 73 69 6f 6e 2e 0a 20 20 20 20 20 20  pression..      
5c8d0 69 66 20 28 61 74 74 72 20 3d 20 67 65 74 41 74  if (attr = getAt
5c8e0 74 72 69 62 75 74 65 28 64 6f 6d 2c 20 43 4f 4e  tribute(dom, CON
5c8f0 44 49 54 49 4f 4e 41 4c 5f 44 49 52 45 43 54 49  DITIONAL_DIRECTI
5c900 56 45 29 29 20 7b 0a 20 20 20 20 20 20 20 20 65  VE)) {.        e
5c910 78 70 72 65 73 73 69 6f 6e 73 2e 70 75 73 68 28  xpressions.push(
5c920 63 72 65 61 74 65 49 66 44 69 72 65 63 74 69 76  createIfDirectiv
5c930 65 28 64 6f 6d 2c 20 74 68 69 73 24 31 2c 20 61  e(dom, this$1, a
5c940 74 74 72 29 29 3b 0a 20 20 20 20 20 20 20 20 72  ttr));.        r
5c950 65 74 75 72 6e 20 66 61 6c 73 65 0a 20 20 20 20  eturn false.    
5c960 20 20 7d 0a 0a 20 20 20 20 20 20 69 66 20 28 61    }..      if (a
5c970 74 74 72 20 3d 20 67 65 74 41 74 74 72 69 62 75  ttr = getAttribu
5c980 74 65 28 64 6f 6d 2c 20 49 53 5f 44 49 52 45 43  te(dom, IS_DIREC
5c990 54 49 56 45 29 29 20 7b 0a 20 20 20 20 20 20 20  TIVE)) {.       
5c9a0 20 69 66 20 28 63 73 70 5f 74 6d 70 6c 5f 31 2e   if (csp_tmpl_1.
5c9b0 68 61 73 45 78 70 72 28 61 74 74 72 29 29 20 7b  hasExpr(attr)) {
5c9c0 0a 20 20 20 20 20 20 20 20 20 20 65 78 70 72 65  .          expre
5c9d0 73 73 69 6f 6e 73 2e 70 75 73 68 28 7b 0a 20 20  ssions.push({.  
5c9e0 20 20 20 20 20 20 20 20 20 20 69 73 52 74 61 67            isRtag
5c9f0 3a 20 74 72 75 65 2c 0a 20 20 20 20 20 20 20 20  : true,.        
5ca00 20 20 20 20 65 78 70 72 3a 20 61 74 74 72 2c 0a      expr: attr,.
5ca10 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 6d 3a              dom:
5ca20 20 64 6f 6d 2c 0a 20 20 20 20 20 20 20 20 20 20   dom,.          
5ca30 20 20 61 74 74 72 73 3a 20 5b 5d 2e 73 6c 69 63    attrs: [].slic
5ca40 65 2e 63 61 6c 6c 28 64 6f 6d 2e 61 74 74 72 69  e.call(dom.attri
5ca50 62 75 74 65 73 29 0a 20 20 20 20 20 20 20 20 20  butes).         
5ca60 20 7d 29 3b 0a 0a 20 20 20 20 20 20 20 20 20 20   });..          
5ca70 72 65 74 75 72 6e 20 66 61 6c 73 65 0a 20 20 20  return false.   
5ca80 20 20 20 20 20 7d 0a 20 20 20 20 20 20 7d 0a 0a       }.      }..
5ca90 20 20 20 20 20 20 2f 2f 20 69 66 20 74 68 69 73        // if this
5caa0 20 69 73 20 61 20 74 61 67 2c 20 73 74 6f 70 20   is a tag, stop 
5cab0 74 72 61 76 65 72 73 69 6e 67 20 68 65 72 65 2e  traversing here.
5cac0 0a 20 20 20 20 20 20 2f 2f 20 77 65 20 69 67 6e  .      // we ign
5cad0 6f 72 65 20 74 68 65 20 72 6f 6f 74 2c 20 73 69  ore the root, si
5cae0 6e 63 65 20 70 61 72 73 65 45 78 70 72 65 73 73  nce parseExpress
5caf0 69 6f 6e 73 20 69 73 20 63 61 6c 6c 65 64 20 77  ions is called w
5cb00 68 69 6c 65 20 77 65 27 72 65 20 6d 6f 75 6e 74  hile we're mount
5cb10 69 6e 67 20 74 68 61 74 20 72 6f 6f 74 0a 20 20  ing that root.  
5cb20 20 20 20 20 74 61 67 49 6d 70 6c 20 3d 20 67 65      tagImpl = ge
5cb30 74 28 64 6f 6d 29 3b 0a 0a 20 20 20 20 20 20 69  t(dom);..      i
5cb40 66 28 69 73 56 69 72 74 75 61 6c 29 20 7b 0a 20  f(isVirtual) {. 
5cb50 20 20 20 20 20 20 20 69 66 28 67 65 74 41 74 74         if(getAtt
5cb60 72 69 62 75 74 65 28 64 6f 6d 2c 20 27 76 69 72  ribute(dom, 'vir
5cb70 74 75 61 6c 69 7a 65 64 27 29 29 20 7b 64 6f 6d  tualized')) {dom
5cb80 2e 70 61 72 65 6e 74 45 6c 65 6d 65 6e 74 2e 72  .parentElement.r
5cb90 65 6d 6f 76 65 43 68 69 6c 64 28 64 6f 6d 29 3b  emoveChild(dom);
5cba0 20 7d 20 2f 2f 20 74 61 67 20 63 72 65 61 74 65   } // tag create
5cbb0 64 2c 20 72 65 6d 6f 76 65 20 66 72 6f 6d 20 64  d, remove from d
5cbc0 6f 6d 0a 20 20 20 20 20 20 20 20 69 66 28 21 74  om.        if(!t
5cbd0 61 67 49 6d 70 6c 20 26 26 20 21 67 65 74 41 74  agImpl && !getAt
5cbe0 74 72 69 62 75 74 65 28 64 6f 6d 2c 20 27 76 69  tribute(dom, 'vi
5cbf0 72 74 75 61 6c 69 7a 65 64 27 29 20 26 26 20 21  rtualized') && !
5cc00 67 65 74 41 74 74 72 69 62 75 74 65 28 64 6f 6d  getAttribute(dom
5cc10 2c 20 27 6c 6f 6f 70 56 69 72 74 75 61 6c 27 29  , 'loopVirtual')
5cc20 29 20 20 2f 2f 20 6f 6b 20 74 6f 20 63 72 65 61  )  // ok to crea
5cc30 74 65 20 76 69 72 74 75 61 6c 20 74 61 67 0a 20  te virtual tag. 
5cc40 20 20 20 20 20 20 20 20 20 7b 20 74 61 67 49 6d           { tagIm
5cc50 70 6c 20 3d 20 7b 20 74 6d 70 6c 3a 20 64 6f 6d  pl = { tmpl: dom
5cc60 2e 6f 75 74 65 72 48 54 4d 4c 20 7d 3b 20 7d 0a  .outerHTML }; }.
5cc70 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 69        }..      i
5cc80 66 20 28 74 61 67 49 6d 70 6c 20 26 26 20 28 64  f (tagImpl && (d
5cc90 6f 6d 20 21 3d 3d 20 72 6f 6f 74 20 7c 7c 20 6d  om !== root || m
5cca0 75 73 74 49 6e 63 6c 75 64 65 52 6f 6f 74 29 29  ustIncludeRoot))
5ccb0 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 68   {.        var h
5ccc0 61 73 49 73 44 69 72 65 63 74 69 76 65 20 3d 20  asIsDirective = 
5ccd0 67 65 74 41 74 74 72 69 62 75 74 65 28 64 6f 6d  getAttribute(dom
5cce0 2c 20 49 53 5f 44 49 52 45 43 54 49 56 45 29 3b  , IS_DIRECTIVE);
5ccf0 0a 20 20 20 20 20 20 20 20 69 66 28 69 73 56 69  .        if(isVi
5cd00 72 74 75 61 6c 20 26 26 20 21 68 61 73 49 73 44  rtual && !hasIsD
5cd10 69 72 65 63 74 69 76 65 29 20 7b 20 2f 2f 20 68  irective) { // h
5cd20 61 6e 64 6c 65 64 20 69 6e 20 75 70 64 61 74 65  andled in update
5cd30 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 63 61  .          // ca
5cd40 6e 20 6e 6f 74 20 72 65 6d 6f 76 65 20 61 74 74  n not remove att
5cd50 72 69 62 75 74 65 20 6c 69 6b 65 20 64 69 72 65  ribute like dire
5cd60 63 74 69 76 65 73 0a 20 20 20 20 20 20 20 20 20  ctives.         
5cd70 20 2f 2f 20 73 6f 20 66 6c 61 67 20 66 6f 72 20   // so flag for 
5cd80 72 65 6d 6f 76 61 6c 20 61 66 74 65 72 20 63 72  removal after cr
5cd90 65 61 74 69 6f 6e 20 74 6f 20 70 72 65 76 65 6e  eation to preven
5cda0 74 20 6d 61 78 69 6d 75 6d 20 73 74 61 63 6b 20  t maximum stack 
5cdb0 65 72 72 6f 72 0a 20 20 20 20 20 20 20 20 20 20  error.          
5cdc0 73 65 74 41 74 74 72 69 62 75 74 65 28 64 6f 6d  setAttribute(dom
5cdd0 2c 20 27 76 69 72 74 75 61 6c 69 7a 65 64 27 2c  , 'virtualized',
5cde0 20 74 72 75 65 29 3b 0a 20 20 20 20 20 20 20 20   true);.        
5cdf0 20 20 76 61 72 20 74 61 67 20 3d 20 63 72 65 61    var tag = crea
5ce00 74 65 54 61 67 28 0a 20 20 20 20 20 20 20 20 20  teTag(.         
5ce10 20 20 20 7b 74 6d 70 6c 3a 20 64 6f 6d 2e 6f 75     {tmpl: dom.ou
5ce20 74 65 72 48 54 4d 4c 7d 2c 0a 20 20 20 20 20 20  terHTML},.      
5ce30 20 20 20 20 20 20 7b 72 6f 6f 74 3a 20 64 6f 6d        {root: dom
5ce40 2c 20 70 61 72 65 6e 74 3a 20 74 68 69 73 24 31  , parent: this$1
5ce50 7d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 64  },.            d
5ce60 6f 6d 2e 69 6e 6e 65 72 48 54 4d 4c 0a 20 20 20  om.innerHTML.   
5ce70 20 20 20 20 20 20 20 29 3b 0a 0a 20 20 20 20 20         );..     
5ce80 20 20 20 20 20 65 78 70 72 65 73 73 69 6f 6e 73       expressions
5ce90 2e 70 75 73 68 28 74 61 67 29 3b 20 2f 2f 20 6e  .push(tag); // n
5cea0 6f 20 72 65 74 75 72 6e 2c 20 61 6e 6f 6e 79 6d  o return, anonym
5ceb0 6f 75 73 20 74 61 67 2c 20 6b 65 65 70 20 70 61  ous tag, keep pa
5cec0 72 73 69 6e 67 0a 20 20 20 20 20 20 20 20 7d 20  rsing.        } 
5ced0 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20  else {.         
5cee0 20 69 66 20 28 68 61 73 49 73 44 69 72 65 63 74   if (hasIsDirect
5cef0 69 76 65 20 26 26 20 69 73 56 69 72 74 75 61 6c  ive && isVirtual
5cf00 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 20  ).            { 
5cf10 77 61 72 6e 28 28 22 56 69 72 74 75 61 6c 20 74  warn(("Virtual t
5cf20 61 67 73 20 73 68 6f 75 6c 64 6e 27 74 20 62 65  ags shouldn't be
5cf30 20 75 73 65 64 20 74 6f 67 65 74 68 65 72 20 77   used together w
5cf40 69 74 68 20 74 68 65 20 5c 22 22 20 2b 20 49 53  ith the \"" + IS
5cf50 5f 44 49 52 45 43 54 49 56 45 20 2b 20 22 5c 22  _DIRECTIVE + "\"
5cf60 20 61 74 74 72 69 62 75 74 65 20 2d 20 68 74 74   attribute - htt
5cf70 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f  ps://github.com/
5cf80 72 69 6f 74 2f 72 69 6f 74 2f 69 73 73 75 65 73  riot/riot/issues
5cf90 2f 32 35 31 31 22 29 29 3b 20 7d 0a 0a 20 20 20  /2511")); }..   
5cfa0 20 20 20 20 20 20 20 65 78 70 72 65 73 73 69 6f         expressio
5cfb0 6e 73 2e 70 75 73 68 28 0a 20 20 20 20 20 20 20  ns.push(.       
5cfc0 20 20 20 20 20 69 6e 69 74 43 68 69 6c 64 28 0a       initChild(.
5cfd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 61                ta
5cfe0 67 49 6d 70 6c 2c 0a 20 20 20 20 20 20 20 20 20  gImpl,.         
5cff0 20 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20 20       {.         
5d000 20 20 20 20 20 20 20 72 6f 6f 74 3a 20 64 6f 6d         root: dom
5d010 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ,.              
5d020 20 20 70 61 72 65 6e 74 3a 20 74 68 69 73 24 31    parent: this$1
5d030 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
5d040 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ,.              
5d050 64 6f 6d 2e 69 6e 6e 65 72 48 54 4d 4c 2c 0a 20  dom.innerHTML,. 
5d060 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
5d070 73 24 31 0a 20 20 20 20 20 20 20 20 20 20 20 20  s$1.            
5d080 29 0a 20 20 20 20 20 20 20 20 20 20 29 3b 0a 20  ).          );. 
5d090 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
5d0a0 66 61 6c 73 65 0a 20 20 20 20 20 20 20 20 7d 0a  false.        }.
5d0b0 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 2f        }..      /
5d0c0 2f 20 61 74 74 72 69 62 75 74 65 20 65 78 70 72  / attribute expr
5d0d0 65 73 73 69 6f 6e 73 0a 20 20 20 20 20 20 70 61  essions.      pa
5d0e0 72 73 65 41 74 74 72 69 62 75 74 65 73 2e 61 70  rseAttributes.ap
5d0f0 70 6c 79 28 74 68 69 73 24 31 2c 20 5b 64 6f 6d  ply(this$1, [dom
5d100 2c 20 64 6f 6d 2e 61 74 74 72 69 62 75 74 65 73  , dom.attributes
5d110 2c 20 66 75 6e 63 74 69 6f 6e 20 28 61 74 74 72  , function (attr
5d120 2c 20 65 78 70 72 29 20 7b 0a 20 20 20 20 20 20  , expr) {.      
5d130 20 20 69 66 20 28 21 65 78 70 72 29 20 7b 20 72    if (!expr) { r
5d140 65 74 75 72 6e 20 7d 0a 20 20 20 20 20 20 20 20  eturn }.        
5d150 65 78 70 72 65 73 73 69 6f 6e 73 2e 70 75 73 68  expressions.push
5d160 28 65 78 70 72 29 3b 0a 20 20 20 20 20 20 7d 5d  (expr);.      }]
5d170 29 3b 0a 20 20 20 20 7d 29 3b 0a 0a 20 20 20 20  );.    });..    
5d180 72 65 74 75 72 6e 20 65 78 70 72 65 73 73 69 6f  return expressio
5d190 6e 73 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20  ns.  }..  /**.  
5d1a0 20 2a 20 43 61 6c 6c 73 20 60 66 6e 60 20 66 6f   * Calls `fn` fo
5d1b0 72 20 65 76 65 72 79 20 61 74 74 72 69 62 75 74  r every attribut
5d1c0 65 20 6f 6e 20 61 6e 20 65 6c 65 6d 65 6e 74 2e  e on an element.
5d1d0 20 49 66 20 74 68 61 74 20 61 74 74 72 20 68 61   If that attr ha
5d1e0 73 20 61 6e 20 65 78 70 72 65 73 73 69 6f 6e 2c  s an expression,
5d1f0 0a 20 20 20 2a 20 69 74 20 69 73 20 61 6c 73 6f  .   * it is also
5d200 20 70 61 73 73 65 64 20 74 6f 20 66 6e 2e 0a 20   passed to fn.. 
5d210 20 20 2a 20 40 74 68 69 73 20 54 61 67 0a 20 20    * @this Tag.  
5d220 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 48 54   * @param   { HT
5d230 4d 4c 45 6c 65 6d 65 6e 74 20 7d 20 64 6f 6d 20  MLElement } dom 
5d240 2d 20 64 6f 6d 20 6e 6f 64 65 20 74 6f 20 70 61  - dom node to pa
5d250 72 73 65 0a 20 20 20 2a 20 40 70 61 72 61 6d 20  rse.   * @param 
5d260 20 20 7b 20 41 72 72 61 79 20 7d 20 61 74 74 72    { Array } attr
5d270 73 20 2d 20 61 72 72 61 79 20 6f 66 20 61 74 74  s - array of att
5d280 72 69 62 75 74 65 73 0a 20 20 20 2a 20 40 70 61  ributes.   * @pa
5d290 72 61 6d 20 20 20 7b 20 46 75 6e 63 74 69 6f 6e  ram   { Function
5d2a0 20 7d 20 66 6e 20 2d 20 63 61 6c 6c 62 61 63 6b   } fn - callback
5d2b0 20 74 6f 20 65 78 65 63 20 6f 6e 20 61 6e 79 20   to exec on any 
5d2c0 69 74 65 72 61 74 69 6f 6e 0a 20 20 20 2a 2f 0a  iteration.   */.
5d2d0 20 20 66 75 6e 63 74 69 6f 6e 20 70 61 72 73 65    function parse
5d2e0 41 74 74 72 69 62 75 74 65 73 28 64 6f 6d 2c 20  Attributes(dom, 
5d2f0 61 74 74 72 73 2c 20 66 6e 29 20 7b 0a 20 20 20  attrs, fn) {.   
5d300 20 76 61 72 20 74 68 69 73 24 31 20 3d 20 74 68   var this$1 = th
5d310 69 73 3b 0a 0a 20 20 20 20 65 61 63 68 28 61 74  is;..    each(at
5d320 74 72 73 2c 20 66 75 6e 63 74 69 6f 6e 20 28 61  trs, function (a
5d330 74 74 72 29 20 7b 0a 20 20 20 20 20 20 69 66 20  ttr) {.      if 
5d340 28 21 61 74 74 72 29 20 7b 20 72 65 74 75 72 6e  (!attr) { return
5d350 20 66 61 6c 73 65 20 7d 0a 0a 20 20 20 20 20 20   false }..      
5d360 76 61 72 20 6e 61 6d 65 20 3d 20 61 74 74 72 2e  var name = attr.
5d370 6e 61 6d 65 3b 0a 20 20 20 20 20 20 76 61 72 20  name;.      var 
5d380 62 6f 6f 6c 20 3d 20 69 73 42 6f 6f 6c 41 74 74  bool = isBoolAtt
5d390 72 28 6e 61 6d 65 29 3b 0a 20 20 20 20 20 20 76  r(name);.      v
5d3a0 61 72 20 65 78 70 72 3b 0a 0a 20 20 20 20 20 20  ar expr;..      
5d3b0 69 66 20 28 63 6f 6e 74 61 69 6e 73 28 52 45 46  if (contains(REF
5d3c0 5f 44 49 52 45 43 54 49 56 45 53 2c 20 6e 61 6d  _DIRECTIVES, nam
5d3d0 65 29 20 26 26 20 64 6f 6d 2e 74 61 67 4e 61 6d  e) && dom.tagNam
5d3e0 65 2e 74 6f 4c 6f 77 65 72 43 61 73 65 28 29 20  e.toLowerCase() 
5d3f0 21 3d 3d 20 59 49 45 4c 44 5f 54 41 47 29 20 7b  !== YIELD_TAG) {
5d400 0a 20 20 20 20 20 20 20 20 65 78 70 72 20 3d 20  .        expr = 
5d410 20 63 72 65 61 74 65 52 65 66 44 69 72 65 63 74   createRefDirect
5d420 69 76 65 28 64 6f 6d 2c 20 74 68 69 73 24 31 2c  ive(dom, this$1,
5d430 20 6e 61 6d 65 2c 20 61 74 74 72 2e 76 61 6c 75   name, attr.valu
5d440 65 29 3b 0a 20 20 20 20 20 20 7d 20 65 6c 73 65  e);.      } else
5d450 20 69 66 20 28 63 73 70 5f 74 6d 70 6c 5f 31 2e   if (csp_tmpl_1.
5d460 68 61 73 45 78 70 72 28 61 74 74 72 2e 76 61 6c  hasExpr(attr.val
5d470 75 65 29 29 20 7b 0a 20 20 20 20 20 20 20 20 65  ue)) {.        e
5d480 78 70 72 20 3d 20 7b 64 6f 6d 3a 20 64 6f 6d 2c  xpr = {dom: dom,
5d490 20 65 78 70 72 3a 20 61 74 74 72 2e 76 61 6c 75   expr: attr.valu
5d4a0 65 2c 20 61 74 74 72 3a 20 6e 61 6d 65 2c 20 62  e, attr: name, b
5d4b0 6f 6f 6c 3a 20 62 6f 6f 6c 7d 3b 0a 20 20 20 20  ool: bool};.    
5d4c0 20 20 7d 0a 0a 20 20 20 20 20 20 66 6e 28 61 74    }..      fn(at
5d4d0 74 72 2c 20 65 78 70 72 29 3b 0a 20 20 20 20 7d  tr, expr);.    }
5d4e0 29 3b 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20  );.  }..  /**.  
5d4f0 20 2a 20 4d 61 6e 61 67 65 20 74 68 65 20 6d 6f   * Manage the mo
5d500 75 6e 74 20 73 74 61 74 65 20 6f 66 20 61 20 74  unt state of a t
5d510 61 67 20 74 72 69 67 67 65 72 69 6e 67 20 61 6c  ag triggering al
5d520 73 6f 20 74 68 65 20 6f 62 73 65 72 76 61 62 6c  so the observabl
5d530 65 20 65 76 65 6e 74 73 0a 20 20 20 2a 20 40 74  e events.   * @t
5d540 68 69 73 20 54 61 67 0a 20 20 20 2a 20 40 70 61  his Tag.   * @pa
5d550 72 61 6d 20 7b 20 42 6f 6f 6c 65 61 6e 20 7d 20  ram { Boolean } 
5d560 76 61 6c 75 65 20 2d 20 2e 2e 6f 66 20 74 68 65  value - ..of the
5d570 20 69 73 4d 6f 75 6e 74 65 64 20 66 6c 61 67 0a   isMounted flag.
5d580 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e     */.  function
5d590 20 73 65 74 4d 6f 75 6e 74 53 74 61 74 65 28 76   setMountState(v
5d5a0 61 6c 75 65 29 20 7b 0a 20 20 20 20 76 61 72 20  alue) {.    var 
5d5b0 72 65 66 20 3d 20 74 68 69 73 2e 5f 5f 3b 0a 20  ref = this.__;. 
5d5c0 20 20 20 76 61 72 20 69 73 41 6e 6f 6e 79 6d 6f     var isAnonymo
5d5d0 75 73 20 3d 20 72 65 66 2e 69 73 41 6e 6f 6e 79  us = ref.isAnony
5d5e0 6d 6f 75 73 3b 0a 20 20 20 20 76 61 72 20 73 6b  mous;.    var sk
5d5f0 69 70 41 6e 6f 6e 79 6d 6f 75 73 20 3d 20 72 65  ipAnonymous = re
5d600 66 2e 73 6b 69 70 41 6e 6f 6e 79 6d 6f 75 73 3b  f.skipAnonymous;
5d610 0a 0a 20 20 20 20 64 65 66 69 6e 65 28 74 68 69  ..    define(thi
5d620 73 2c 20 27 69 73 4d 6f 75 6e 74 65 64 27 2c 20  s, 'isMounted', 
5d630 76 61 6c 75 65 29 3b 0a 0a 20 20 20 20 69 66 20  value);..    if 
5d640 28 21 69 73 41 6e 6f 6e 79 6d 6f 75 73 20 7c 7c  (!isAnonymous ||
5d650 20 21 73 6b 69 70 41 6e 6f 6e 79 6d 6f 75 73 29   !skipAnonymous)
5d660 20 7b 0a 20 20 20 20 20 20 69 66 20 28 76 61 6c   {.      if (val
5d670 75 65 29 20 7b 20 74 68 69 73 2e 74 72 69 67 67  ue) { this.trigg
5d680 65 72 28 27 6d 6f 75 6e 74 27 29 3b 20 7d 0a 20  er('mount'); }. 
5d690 20 20 20 20 20 65 6c 73 65 20 7b 0a 20 20 20 20       else {.    
5d6a0 20 20 20 20 74 68 69 73 2e 74 72 69 67 67 65 72      this.trigger
5d6b0 28 27 75 6e 6d 6f 75 6e 74 27 29 3b 0a 20 20 20  ('unmount');.   
5d6c0 20 20 20 20 20 74 68 69 73 2e 6f 66 66 28 27 2a       this.off('*
5d6d0 27 29 3b 0a 20 20 20 20 20 20 20 20 74 68 69 73  ');.        this
5d6e0 2e 5f 5f 2e 77 61 73 43 72 65 61 74 65 64 20 3d  .__.wasCreated =
5d6f0 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 20 7d 0a   false;.      }.
5d700 20 20 20 20 7d 0a 20 20 7d 0a 0a 20 20 2f 2a 2a      }.  }..  /**
5d710 0a 20 20 20 2a 20 4d 6f 75 6e 74 20 74 68 65 20  .   * Mount the 
5d720 63 75 72 72 65 6e 74 20 74 61 67 20 69 6e 73 74  current tag inst
5d730 61 6e 63 65 0a 20 20 20 2a 20 40 72 65 74 75 72  ance.   * @retur
5d740 6e 73 20 7b 20 54 61 67 20 7d 20 74 68 65 20 63  ns { Tag } the c
5d750 75 72 72 65 6e 74 20 74 61 67 20 69 6e 73 74 61  urrent tag insta
5d760 6e 63 65 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63  nce.   */.  func
5d770 74 69 6f 6e 20 63 6f 6d 70 6f 6e 65 6e 74 4d 6f  tion componentMo
5d780 75 6e 74 28 74 61 67 24 24 31 2c 20 64 6f 6d 2c  unt(tag$$1, dom,
5d790 20 65 78 70 72 65 73 73 69 6f 6e 73 2c 20 6f 70   expressions, op
5d7a0 74 73 29 20 7b 0a 20 20 20 20 76 61 72 20 5f 5f  ts) {.    var __
5d7b0 20 3d 20 74 61 67 24 24 31 2e 5f 5f 3b 0a 20 20   = tag$$1.__;.  
5d7c0 20 20 76 61 72 20 72 6f 6f 74 20 3d 20 5f 5f 2e    var root = __.
5d7d0 72 6f 6f 74 3b 0a 20 20 20 20 72 6f 6f 74 2e 5f  root;.    root._
5d7e0 74 61 67 20 3d 20 74 61 67 24 24 31 3b 20 2f 2f  tag = tag$$1; //
5d7f0 20 6b 65 65 70 20 61 20 72 65 66 65 72 65 6e 63   keep a referenc
5d800 65 20 74 6f 20 74 68 65 20 74 61 67 20 6a 75 73  e to the tag jus
5d810 74 20 63 72 65 61 74 65 64 0a 0a 20 20 20 20 2f  t created..    /
5d820 2f 20 52 65 61 64 20 61 6c 6c 20 74 68 65 20 61  / Read all the a
5d830 74 74 72 73 20 6f 6e 20 74 68 69 73 20 69 6e 73  ttrs on this ins
5d840 74 61 6e 63 65 2e 20 54 68 69 73 20 67 69 76 65  tance. This give
5d850 20 75 73 20 74 68 65 20 69 6e 66 6f 20 77 65 20   us the info we 
5d860 6e 65 65 64 20 66 6f 72 20 75 70 64 61 74 65 4f  need for updateO
5d870 70 74 73 0a 20 20 20 20 70 61 72 73 65 41 74 74  pts.    parseAtt
5d880 72 69 62 75 74 65 73 2e 61 70 70 6c 79 28 5f 5f  ributes.apply(__
5d890 2e 70 61 72 65 6e 74 2c 20 5b 72 6f 6f 74 2c 20  .parent, [root, 
5d8a0 72 6f 6f 74 2e 61 74 74 72 69 62 75 74 65 73 2c  root.attributes,
5d8b0 20 66 75 6e 63 74 69 6f 6e 20 28 61 74 74 72 2c   function (attr,
5d8c0 20 65 78 70 72 29 20 7b 0a 20 20 20 20 20 20 69   expr) {.      i
5d8d0 66 20 28 21 5f 5f 2e 69 73 41 6e 6f 6e 79 6d 6f  f (!__.isAnonymo
5d8e0 75 73 20 26 26 20 52 65 66 45 78 70 72 2e 69 73  us && RefExpr.is
5d8f0 50 72 6f 74 6f 74 79 70 65 4f 66 28 65 78 70 72  PrototypeOf(expr
5d900 29 29 20 7b 20 65 78 70 72 2e 74 61 67 20 3d 20  )) { expr.tag = 
5d910 74 61 67 24 24 31 3b 20 7d 0a 20 20 20 20 20 20  tag$$1; }.      
5d920 61 74 74 72 2e 65 78 70 72 20 3d 20 65 78 70 72  attr.expr = expr
5d930 3b 0a 20 20 20 20 20 20 5f 5f 2e 69 6e 73 74 41  ;.      __.instA
5d940 74 74 72 73 2e 70 75 73 68 28 61 74 74 72 29 3b  ttrs.push(attr);
5d950 0a 20 20 20 20 7d 5d 29 3b 0a 0a 20 20 20 20 2f  .    }]);..    /
5d960 2f 20 75 70 64 61 74 65 20 74 68 65 20 72 6f 6f  / update the roo
5d970 74 20 61 64 64 69 6e 67 20 63 75 73 74 6f 6d 20  t adding custom 
5d980 61 74 74 72 69 62 75 74 65 73 20 63 6f 6d 69 6e  attributes comin
5d990 67 20 66 72 6f 6d 20 74 68 65 20 63 6f 6d 70 69  g from the compi
5d9a0 6c 65 72 0a 20 20 20 20 77 61 6c 6b 41 74 74 72  ler.    walkAttr
5d9b0 69 62 75 74 65 73 28 5f 5f 2e 69 6d 70 6c 2e 61  ibutes(__.impl.a
5d9c0 74 74 72 73 2c 20 66 75 6e 63 74 69 6f 6e 20 28  ttrs, function (
5d9d0 6b 2c 20 76 29 20 7b 20 5f 5f 2e 69 6d 70 6c 41  k, v) { __.implA
5d9e0 74 74 72 73 2e 70 75 73 68 28 7b 6e 61 6d 65 3a  ttrs.push({name:
5d9f0 20 6b 2c 20 76 61 6c 75 65 3a 20 76 7d 29 3b 20   k, value: v}); 
5da00 7d 29 3b 0a 20 20 20 20 70 61 72 73 65 41 74 74  });.    parseAtt
5da10 72 69 62 75 74 65 73 2e 61 70 70 6c 79 28 74 61  ributes.apply(ta
5da20 67 24 24 31 2c 20 5b 72 6f 6f 74 2c 20 5f 5f 2e  g$$1, [root, __.
5da30 69 6d 70 6c 41 74 74 72 73 2c 20 66 75 6e 63 74  implAttrs, funct
5da40 69 6f 6e 20 28 61 74 74 72 2c 20 65 78 70 72 29  ion (attr, expr)
5da50 20 7b 0a 20 20 20 20 20 20 69 66 20 28 65 78 70   {.      if (exp
5da60 72 29 20 7b 20 65 78 70 72 65 73 73 69 6f 6e 73  r) { expressions
5da70 2e 70 75 73 68 28 65 78 70 72 29 3b 20 7d 0a 20  .push(expr); }. 
5da80 20 20 20 20 20 65 6c 73 65 20 7b 20 73 65 74 41       else { setA
5da90 74 74 72 69 62 75 74 65 28 72 6f 6f 74 2c 20 61  ttribute(root, a
5daa0 74 74 72 2e 6e 61 6d 65 2c 20 61 74 74 72 2e 76  ttr.name, attr.v
5dab0 61 6c 75 65 29 3b 20 7d 0a 20 20 20 20 7d 5d 29  alue); }.    }])
5dac0 3b 0a 0a 20 20 20 20 2f 2f 20 69 6e 69 74 69 61  ;..    // initia
5dad0 6c 69 61 74 69 6f 6e 0a 20 20 20 20 75 70 64 61  liation.    upda
5dae0 74 65 4f 70 74 73 2e 61 70 70 6c 79 28 74 61 67  teOpts.apply(tag
5daf0 24 24 31 2c 20 5b 5f 5f 2e 69 73 4c 6f 6f 70 2c  $$1, [__.isLoop,
5db00 20 5f 5f 2e 70 61 72 65 6e 74 2c 20 5f 5f 2e 69   __.parent, __.i
5db10 73 41 6e 6f 6e 79 6d 6f 75 73 2c 20 6f 70 74 73  sAnonymous, opts
5db20 2c 20 5f 5f 2e 69 6e 73 74 41 74 74 72 73 5d 29  , __.instAttrs])
5db30 3b 0a 0a 20 20 20 20 2f 2f 20 61 64 64 20 67 6c  ;..    // add gl
5db40 6f 62 61 6c 20 6d 69 78 69 6e 73 0a 20 20 20 20  obal mixins.    
5db50 76 61 72 20 67 6c 6f 62 61 6c 4d 69 78 69 6e 20  var globalMixin 
5db60 3d 20 6d 69 78 69 6e 28 47 4c 4f 42 41 4c 5f 4d  = mixin(GLOBAL_M
5db70 49 58 49 4e 29 3b 0a 0a 20 20 20 20 69 66 20 28  IXIN);..    if (
5db80 67 6c 6f 62 61 6c 4d 69 78 69 6e 20 26 26 20 21  globalMixin && !
5db90 5f 5f 2e 73 6b 69 70 41 6e 6f 6e 79 6d 6f 75 73  __.skipAnonymous
5dba0 29 20 7b 0a 20 20 20 20 20 20 66 6f 72 20 28 76  ) {.      for (v
5dbb0 61 72 20 69 20 69 6e 20 67 6c 6f 62 61 6c 4d 69  ar i in globalMi
5dbc0 78 69 6e 29 20 7b 0a 20 20 20 20 20 20 20 20 69  xin) {.        i
5dbd0 66 20 28 67 6c 6f 62 61 6c 4d 69 78 69 6e 2e 68  f (globalMixin.h
5dbe0 61 73 4f 77 6e 50 72 6f 70 65 72 74 79 28 69 29  asOwnProperty(i)
5dbf0 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 74 61  ) {.          ta
5dc00 67 24 24 31 2e 6d 69 78 69 6e 28 67 6c 6f 62 61  g$$1.mixin(globa
5dc10 6c 4d 69 78 69 6e 5b 69 5d 29 3b 0a 20 20 20 20  lMixin[i]);.    
5dc20 20 20 20 20 7d 0a 20 20 20 20 20 20 7d 0a 20 20      }.      }.  
5dc30 20 20 7d 0a 0a 20 20 20 20 69 66 20 28 5f 5f 2e    }..    if (__.
5dc40 69 6d 70 6c 2e 66 6e 29 20 7b 20 5f 5f 2e 69 6d  impl.fn) { __.im
5dc50 70 6c 2e 66 6e 2e 63 61 6c 6c 28 74 61 67 24 24  pl.fn.call(tag$$
5dc60 31 2c 20 6f 70 74 73 29 3b 20 7d 0a 0a 20 20 20  1, opts); }..   
5dc70 20 69 66 20 28 21 5f 5f 2e 73 6b 69 70 41 6e 6f   if (!__.skipAno
5dc80 6e 79 6d 6f 75 73 29 20 7b 20 74 61 67 24 24 31  nymous) { tag$$1
5dc90 2e 74 72 69 67 67 65 72 28 27 62 65 66 6f 72 65  .trigger('before
5dca0 2d 6d 6f 75 6e 74 27 29 3b 20 7d 0a 0a 20 20 20  -mount'); }..   
5dcb0 20 2f 2f 20 70 61 72 73 65 20 6c 61 79 6f 75 74   // parse layout
5dcc0 20 61 66 74 65 72 20 69 6e 69 74 2e 20 66 6e 20   after init. fn 
5dcd0 6d 61 79 20 63 61 6c 63 75 6c 61 74 65 20 61 72  may calculate ar
5dce0 67 73 20 66 6f 72 20 6e 65 73 74 65 64 20 63 75  gs for nested cu
5dcf0 73 74 6f 6d 20 74 61 67 73 0a 20 20 20 20 65 61  stom tags.    ea
5dd00 63 68 28 70 61 72 73 65 45 78 70 72 65 73 73 69  ch(parseExpressi
5dd10 6f 6e 73 2e 61 70 70 6c 79 28 74 61 67 24 24 31  ons.apply(tag$$1
5dd20 2c 20 5b 64 6f 6d 2c 20 5f 5f 2e 69 73 41 6e 6f  , [dom, __.isAno
5dd30 6e 79 6d 6f 75 73 5d 29 2c 20 66 75 6e 63 74 69  nymous]), functi
5dd40 6f 6e 20 28 65 29 20 7b 20 72 65 74 75 72 6e 20  on (e) { return 
5dd50 65 78 70 72 65 73 73 69 6f 6e 73 2e 70 75 73 68  expressions.push
5dd60 28 65 29 3b 20 7d 29 3b 0a 0a 20 20 20 20 74 61  (e); });..    ta
5dd70 67 24 24 31 2e 75 70 64 61 74 65 28 5f 5f 2e 69  g$$1.update(__.i
5dd80 74 65 6d 29 3b 0a 0a 20 20 20 20 69 66 20 28 21  tem);..    if (!
5dd90 5f 5f 2e 69 73 41 6e 6f 6e 79 6d 6f 75 73 20 26  __.isAnonymous &
5dda0 26 20 21 5f 5f 2e 69 73 49 6e 6c 69 6e 65 29 20  & !__.isInline) 
5ddb0 7b 0a 20 20 20 20 20 20 77 68 69 6c 65 20 28 64  {.      while (d
5ddc0 6f 6d 2e 66 69 72 73 74 43 68 69 6c 64 29 20 7b  om.firstChild) {
5ddd0 20 72 6f 6f 74 2e 61 70 70 65 6e 64 43 68 69 6c   root.appendChil
5dde0 64 28 64 6f 6d 2e 66 69 72 73 74 43 68 69 6c 64  d(dom.firstChild
5ddf0 29 3b 20 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20  ); }.    }..    
5de00 64 65 66 69 6e 65 28 74 61 67 24 24 31 2c 20 27  define(tag$$1, '
5de10 72 6f 6f 74 27 2c 20 72 6f 6f 74 29 3b 0a 0a 20  root', root);.. 
5de20 20 20 20 2f 2f 20 69 66 20 77 65 20 6e 65 65 64     // if we need
5de30 20 74 6f 20 77 61 69 74 20 74 68 61 74 20 74 68   to wait that th
5de40 65 20 70 61 72 65 6e 74 20 22 6d 6f 75 6e 74 22  e parent "mount"
5de50 20 6f 72 20 22 75 70 64 61 74 65 64 22 20 65 76   or "updated" ev
5de60 65 6e 74 20 67 65 74 73 20 74 72 69 67 67 65 72  ent gets trigger
5de70 65 64 0a 20 20 20 20 69 66 20 28 21 5f 5f 2e 73  ed.    if (!__.s
5de80 6b 69 70 41 6e 6f 6e 79 6d 6f 75 73 20 26 26 20  kipAnonymous && 
5de90 74 61 67 24 24 31 2e 70 61 72 65 6e 74 29 20 7b  tag$$1.parent) {
5dea0 0a 20 20 20 20 20 20 76 61 72 20 70 20 3d 20 67  .      var p = g
5deb0 65 74 49 6d 6d 65 64 69 61 74 65 43 75 73 74 6f  etImmediateCusto
5dec0 6d 50 61 72 65 6e 74 28 74 61 67 24 24 31 2e 70  mParent(tag$$1.p
5ded0 61 72 65 6e 74 29 3b 0a 20 20 20 20 20 20 70 2e  arent);.      p.
5dee0 6f 6e 65 28 21 70 2e 69 73 4d 6f 75 6e 74 65 64  one(!p.isMounted
5def0 20 3f 20 27 6d 6f 75 6e 74 27 20 3a 20 27 75 70   ? 'mount' : 'up
5df00 64 61 74 65 64 27 2c 20 66 75 6e 63 74 69 6f 6e  dated', function
5df10 20 28 29 20 7b 0a 20 20 20 20 20 20 20 20 73 65   () {.        se
5df20 74 4d 6f 75 6e 74 53 74 61 74 65 2e 63 61 6c 6c  tMountState.call
5df30 28 74 61 67 24 24 31 2c 20 74 72 75 65 29 3b 0a  (tag$$1, true);.
5df40 20 20 20 20 20 20 7d 29 3b 0a 20 20 20 20 7d 20        });.    } 
5df50 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 2f 2f 20  else {.      // 
5df60 6f 74 68 65 72 77 69 73 65 20 69 74 27 73 20 6e  otherwise it's n
5df70 6f 74 20 61 20 63 68 69 6c 64 20 74 61 67 20 77  ot a child tag w
5df80 65 20 63 61 6e 20 74 72 69 67 67 65 72 20 69 74  e can trigger it
5df90 73 20 6d 6f 75 6e 74 20 65 76 65 6e 74 0a 20 20  s mount event.  
5dfa0 20 20 20 20 73 65 74 4d 6f 75 6e 74 53 74 61 74      setMountStat
5dfb0 65 2e 63 61 6c 6c 28 74 61 67 24 24 31 2c 20 74  e.call(tag$$1, t
5dfc0 72 75 65 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20  rue);.    }..   
5dfd0 20 74 61 67 24 24 31 2e 5f 5f 2e 77 61 73 43 72   tag$$1.__.wasCr
5dfe0 65 61 74 65 64 20 3d 20 74 72 75 65 3b 0a 0a 20  eated = true;.. 
5dff0 20 20 20 72 65 74 75 72 6e 20 74 61 67 24 24 31     return tag$$1
5e000 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a  .  }..  /**.   *
5e010 20 55 6e 6d 6f 75 6e 74 20 74 68 65 20 74 61 67   Unmount the tag
5e020 20 69 6e 73 74 61 6e 63 65 0a 20 20 20 2a 20 40   instance.   * @
5e030 70 61 72 61 6d 20 7b 20 42 6f 6f 6c 65 61 6e 20  param { Boolean 
5e040 7d 20 6d 75 73 74 4b 65 65 70 52 6f 6f 74 20 2d  } mustKeepRoot -
5e050 20 69 66 20 69 74 27 73 20 74 72 75 65 20 74 68   if it's true th
5e060 65 20 72 6f 6f 74 20 6e 6f 64 65 20 77 69 6c 6c  e root node will
5e070 20 6e 6f 74 20 62 65 20 72 65 6d 6f 76 65 64 0a   not be removed.
5e080 20 20 20 2a 20 40 72 65 74 75 72 6e 73 20 7b 20     * @returns { 
5e090 54 61 67 20 7d 20 74 68 65 20 63 75 72 72 65 6e  Tag } the curren
5e0a0 74 20 74 61 67 20 69 6e 73 74 61 6e 63 65 0a 20  t tag instance. 
5e0b0 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20    */.  function 
5e0c0 74 61 67 55 6e 6d 6f 75 6e 74 28 74 61 67 2c 20  tagUnmount(tag, 
5e0d0 6d 75 73 74 4b 65 65 70 52 6f 6f 74 2c 20 65 78  mustKeepRoot, ex
5e0e0 70 72 65 73 73 69 6f 6e 73 29 20 7b 0a 20 20 20  pressions) {.   
5e0f0 20 76 61 72 20 5f 5f 20 3d 20 74 61 67 2e 5f 5f   var __ = tag.__
5e100 3b 0a 20 20 20 20 76 61 72 20 72 6f 6f 74 20 3d  ;.    var root =
5e110 20 5f 5f 2e 72 6f 6f 74 3b 0a 20 20 20 20 76 61   __.root;.    va
5e120 72 20 74 61 67 49 6e 64 65 78 20 3d 20 5f 5f 54  r tagIndex = __T
5e130 41 47 53 5f 43 41 43 48 45 2e 69 6e 64 65 78 4f  AGS_CACHE.indexO
5e140 66 28 74 61 67 29 3b 0a 20 20 20 20 76 61 72 20  f(tag);.    var 
5e150 70 20 3d 20 72 6f 6f 74 2e 70 61 72 65 6e 74 4e  p = root.parentN
5e160 6f 64 65 3b 0a 0a 20 20 20 20 69 66 20 28 21 5f  ode;..    if (!_
5e170 5f 2e 73 6b 69 70 41 6e 6f 6e 79 6d 6f 75 73 29  _.skipAnonymous)
5e180 20 7b 20 74 61 67 2e 74 72 69 67 67 65 72 28 27   { tag.trigger('
5e190 62 65 66 6f 72 65 2d 75 6e 6d 6f 75 6e 74 27 29  before-unmount')
5e1a0 3b 20 7d 0a 0a 20 20 20 20 2f 2f 20 63 6c 65 61  ; }..    // clea
5e1b0 72 20 61 6c 6c 20 61 74 74 72 69 62 75 74 65 73  r all attributes
5e1c0 20 63 6f 6d 69 6e 67 20 66 72 6f 6d 20 74 68 65   coming from the
5e1d0 20 6d 6f 75 6e 74 65 64 20 74 61 67 0a 20 20 20   mounted tag.   
5e1e0 20 77 61 6c 6b 41 74 74 72 69 62 75 74 65 73 28   walkAttributes(
5e1f0 5f 5f 2e 69 6d 70 6c 2e 61 74 74 72 73 2c 20 66  __.impl.attrs, f
5e200 75 6e 63 74 69 6f 6e 20 28 6e 61 6d 65 29 20 7b  unction (name) {
5e210 0a 20 20 20 20 20 20 69 66 20 28 73 74 61 72 74  .      if (start
5e220 73 57 69 74 68 28 6e 61 6d 65 2c 20 41 54 54 52  sWith(name, ATTR
5e230 53 5f 50 52 45 46 49 58 29 29 0a 20 20 20 20 20  S_PREFIX)).     
5e240 20 20 20 7b 20 6e 61 6d 65 20 3d 20 6e 61 6d 65     { name = name
5e250 2e 73 6c 69 63 65 28 41 54 54 52 53 5f 50 52 45  .slice(ATTRS_PRE
5e260 46 49 58 2e 6c 65 6e 67 74 68 29 3b 20 7d 0a 0a  FIX.length); }..
5e270 20 20 20 20 20 20 72 65 6d 6f 76 65 41 74 74 72        removeAttr
5e280 69 62 75 74 65 28 72 6f 6f 74 2c 20 6e 61 6d 65  ibute(root, name
5e290 29 3b 0a 20 20 20 20 7d 29 3b 0a 0a 20 20 20 20  );.    });..    
5e2a0 2f 2f 20 72 65 6d 6f 76 65 20 61 6c 6c 20 74 68  // remove all th
5e2b0 65 20 65 76 65 6e 74 20 6c 69 73 74 65 6e 65 72  e event listener
5e2c0 73 0a 20 20 20 20 74 61 67 2e 5f 5f 2e 6c 69 73  s.    tag.__.lis
5e2d0 74 65 6e 65 72 73 2e 66 6f 72 45 61 63 68 28 66  teners.forEach(f
5e2e0 75 6e 63 74 69 6f 6e 20 28 64 6f 6d 29 20 7b 0a  unction (dom) {.
5e2f0 20 20 20 20 20 20 4f 62 6a 65 63 74 2e 6b 65 79        Object.key
5e300 73 28 64 6f 6d 5b 52 49 4f 54 5f 45 56 45 4e 54  s(dom[RIOT_EVENT
5e310 53 5f 4b 45 59 5d 29 2e 66 6f 72 45 61 63 68 28  S_KEY]).forEach(
5e320 66 75 6e 63 74 69 6f 6e 20 28 65 76 65 6e 74 4e  function (eventN
5e330 61 6d 65 29 20 7b 0a 20 20 20 20 20 20 20 20 64  ame) {.        d
5e340 6f 6d 2e 72 65 6d 6f 76 65 45 76 65 6e 74 4c 69  om.removeEventLi
5e350 73 74 65 6e 65 72 28 65 76 65 6e 74 4e 61 6d 65  stener(eventName
5e360 2c 20 64 6f 6d 5b 52 49 4f 54 5f 45 56 45 4e 54  , dom[RIOT_EVENT
5e370 53 5f 4b 45 59 5d 5b 65 76 65 6e 74 4e 61 6d 65  S_KEY][eventName
5e380 5d 29 3b 0a 20 20 20 20 20 20 7d 29 3b 0a 20 20  ]);.      });.  
5e390 20 20 7d 29 3b 0a 0a 20 20 20 20 2f 2f 20 72 65    });..    // re
5e3a0 6d 6f 76 65 20 74 61 67 20 69 6e 73 74 61 6e 63  move tag instanc
5e3b0 65 20 66 72 6f 6d 20 74 68 65 20 67 6c 6f 62 61  e from the globa
5e3c0 6c 20 74 61 67 73 20 63 61 63 68 65 20 63 6f 6c  l tags cache col
5e3d0 6c 65 63 74 69 6f 6e 0a 20 20 20 20 69 66 20 28  lection.    if (
5e3e0 74 61 67 49 6e 64 65 78 20 21 3d 3d 20 2d 31 29  tagIndex !== -1)
5e3f0 20 7b 20 5f 5f 54 41 47 53 5f 43 41 43 48 45 2e   { __TAGS_CACHE.
5e400 73 70 6c 69 63 65 28 74 61 67 49 6e 64 65 78 2c  splice(tagIndex,
5e410 20 31 29 3b 20 7d 0a 0a 20 20 20 20 2f 2f 20 63   1); }..    // c
5e420 6c 65 61 6e 20 75 70 20 74 68 65 20 70 61 72 65  lean up the pare
5e430 6e 74 20 74 61 67 73 20 6f 62 6a 65 63 74 0a 20  nt tags object. 
5e440 20 20 20 69 66 20 28 5f 5f 2e 70 61 72 65 6e 74     if (__.parent
5e450 20 26 26 20 21 5f 5f 2e 69 73 41 6e 6f 6e 79 6d   && !__.isAnonym
5e460 6f 75 73 29 20 7b 0a 20 20 20 20 20 20 76 61 72  ous) {.      var
5e470 20 70 74 61 67 20 3d 20 67 65 74 49 6d 6d 65 64   ptag = getImmed
5e480 69 61 74 65 43 75 73 74 6f 6d 50 61 72 65 6e 74  iateCustomParent
5e490 28 5f 5f 2e 70 61 72 65 6e 74 29 3b 0a 0a 20 20  (__.parent);..  
5e4a0 20 20 20 20 69 66 20 28 5f 5f 2e 69 73 56 69 72      if (__.isVir
5e4b0 74 75 61 6c 29 20 7b 0a 20 20 20 20 20 20 20 20  tual) {.        
5e4c0 4f 62 6a 65 63 74 0a 20 20 20 20 20 20 20 20 20  Object.         
5e4d0 20 2e 6b 65 79 73 28 74 61 67 2e 74 61 67 73 29   .keys(tag.tags)
5e4e0 0a 20 20 20 20 20 20 20 20 20 20 2e 66 6f 72 45  .          .forE
5e4f0 61 63 68 28 66 75 6e 63 74 69 6f 6e 20 28 74 61  ach(function (ta
5e500 67 4e 61 6d 65 29 20 7b 20 72 65 74 75 72 6e 20  gName) { return 
5e510 61 72 72 61 79 69 73 68 52 65 6d 6f 76 65 28 70  arrayishRemove(p
5e520 74 61 67 2e 74 61 67 73 2c 20 74 61 67 4e 61 6d  tag.tags, tagNam
5e530 65 2c 20 74 61 67 2e 74 61 67 73 5b 74 61 67 4e  e, tag.tags[tagN
5e540 61 6d 65 5d 29 3b 20 7d 29 3b 0a 20 20 20 20 20  ame]); });.     
5e550 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20   } else {.      
5e560 20 20 61 72 72 61 79 69 73 68 52 65 6d 6f 76 65    arrayishRemove
5e570 28 70 74 61 67 2e 74 61 67 73 2c 20 5f 5f 2e 74  (ptag.tags, __.t
5e580 61 67 4e 61 6d 65 2c 20 74 61 67 29 3b 0a 20 20  agName, tag);.  
5e590 20 20 20 20 7d 0a 20 20 20 20 7d 0a 0a 20 20 20      }.    }..   
5e5a0 20 2f 2f 20 75 6e 6d 6f 75 6e 74 20 61 6c 6c 20   // unmount all 
5e5b0 74 68 65 20 76 69 72 74 75 61 6c 20 64 69 72 65  the virtual dire
5e5c0 63 74 69 76 65 73 0a 20 20 20 20 69 66 20 28 74  ctives.    if (t
5e5d0 61 67 2e 5f 5f 2e 76 69 72 74 73 29 20 7b 0a 20  ag.__.virts) {. 
5e5e0 20 20 20 20 20 65 61 63 68 28 74 61 67 2e 5f 5f       each(tag.__
5e5f0 2e 76 69 72 74 73 2c 20 66 75 6e 63 74 69 6f 6e  .virts, function
5e600 20 28 76 29 20 7b 0a 20 20 20 20 20 20 20 20 69   (v) {.        i
5e610 66 20 28 76 2e 70 61 72 65 6e 74 4e 6f 64 65 29  f (v.parentNode)
5e620 20 7b 20 76 2e 70 61 72 65 6e 74 4e 6f 64 65 2e   { v.parentNode.
5e630 72 65 6d 6f 76 65 43 68 69 6c 64 28 76 29 3b 20  removeChild(v); 
5e640 7d 0a 20 20 20 20 20 20 7d 29 3b 0a 20 20 20 20  }.      });.    
5e650 7d 0a 0a 20 20 20 20 2f 2f 20 61 6c 6c 6f 77 20  }..    // allow 
5e660 65 78 70 72 65 73 73 69 6f 6e 73 20 74 6f 20 75  expressions to u
5e670 6e 6d 6f 75 6e 74 20 74 68 65 6d 73 65 6c 76 65  nmount themselve
5e680 73 0a 20 20 20 20 75 6e 6d 6f 75 6e 74 41 6c 6c  s.    unmountAll
5e690 28 65 78 70 72 65 73 73 69 6f 6e 73 29 3b 0a 20  (expressions);. 
5e6a0 20 20 20 65 61 63 68 28 5f 5f 2e 69 6e 73 74 41     each(__.instA
5e6b0 74 74 72 73 2c 20 66 75 6e 63 74 69 6f 6e 20 28  ttrs, function (
5e6c0 61 29 20 7b 20 72 65 74 75 72 6e 20 61 2e 65 78  a) { return a.ex
5e6d0 70 72 20 26 26 20 61 2e 65 78 70 72 2e 75 6e 6d  pr && a.expr.unm
5e6e0 6f 75 6e 74 20 26 26 20 61 2e 65 78 70 72 2e 75  ount && a.expr.u
5e6f0 6e 6d 6f 75 6e 74 28 29 3b 20 7d 29 3b 0a 0a 20  nmount(); });.. 
5e700 20 20 20 2f 2f 20 63 6c 65 61 72 20 74 68 65 20     // clear the 
5e710 74 61 67 20 68 74 6d 6c 20 69 66 20 69 74 27 73  tag html if it's
5e720 20 6e 65 63 65 73 73 61 72 79 0a 20 20 20 20 69   necessary.    i
5e730 66 20 28 6d 75 73 74 4b 65 65 70 52 6f 6f 74 29  f (mustKeepRoot)
5e740 20 7b 20 73 65 74 49 6e 6e 65 72 48 54 4d 4c 28   { setInnerHTML(
5e750 72 6f 6f 74 2c 20 27 27 29 3b 20 7d 0a 20 20 20  root, ''); }.   
5e760 20 2f 2f 20 6f 74 68 65 72 77 69 73 65 20 64 65   // otherwise de
5e770 74 61 63 68 20 74 68 65 20 72 6f 6f 74 20 74 61  tach the root ta
5e780 67 20 66 72 6f 6d 20 74 68 65 20 44 4f 4d 0a 20  g from the DOM. 
5e790 20 20 20 65 6c 73 65 20 69 66 20 28 70 29 20 7b     else if (p) {
5e7a0 20 70 2e 72 65 6d 6f 76 65 43 68 69 6c 64 28 72   p.removeChild(r
5e7b0 6f 6f 74 29 3b 20 7d 0a 0a 20 20 20 20 2f 2f 20  oot); }..    // 
5e7c0 63 75 73 74 6f 6d 20 69 6e 74 65 72 6e 61 6c 20  custom internal 
5e7d0 75 6e 6d 6f 75 6e 74 20 66 75 6e 63 74 69 6f 6e  unmount function
5e7e0 20 74 6f 20 61 76 6f 69 64 20 72 65 6c 79 69 6e   to avoid relyin
5e7f0 67 20 6f 6e 20 74 68 65 20 6f 62 73 65 72 76 61  g on the observa
5e800 62 6c 65 0a 20 20 20 20 69 66 20 28 5f 5f 2e 6f  ble.    if (__.o
5e810 6e 55 6e 6d 6f 75 6e 74 29 20 7b 20 5f 5f 2e 6f  nUnmount) { __.o
5e820 6e 55 6e 6d 6f 75 6e 74 28 29 3b 20 7d 0a 0a 20  nUnmount(); }.. 
5e830 20 20 20 2f 2f 20 77 65 69 72 64 20 66 69 78 20     // weird fix 
5e840 66 6f 72 20 61 20 77 65 69 72 64 20 65 64 67 65  for a weird edge
5e850 20 63 61 73 65 20 23 32 34 30 39 20 61 6e 64 20   case #2409 and 
5e860 23 32 34 33 36 0a 20 20 20 20 2f 2f 20 73 6f 6d  #2436.    // som
5e870 65 20 75 73 65 72 73 20 6d 69 67 68 74 20 75 73  e users might us
5e880 65 20 79 6f 75 72 20 73 6f 66 74 77 61 72 65 20  e your software 
5e890 6e 6f 74 20 61 73 20 79 6f 75 27 76 65 20 65 78  not as you've ex
5e8a0 70 65 63 74 65 64 0a 20 20 20 20 2f 2f 20 73 6f  pected.    // so
5e8b0 20 49 20 6e 65 65 64 20 74 6f 20 61 64 64 20 74   I need to add t
5e8c0 68 65 73 65 20 64 69 72 74 79 20 68 61 63 6b 73  hese dirty hacks
5e8d0 20 74 6f 20 6d 69 74 69 67 61 74 65 20 75 6e 65   to mitigate une
5e8e0 78 70 65 63 74 65 64 20 69 73 73 75 65 73 0a 20  xpected issues. 
5e8f0 20 20 20 69 66 20 28 21 74 61 67 2e 69 73 4d 6f     if (!tag.isMo
5e900 75 6e 74 65 64 29 20 7b 20 73 65 74 4d 6f 75 6e  unted) { setMoun
5e910 74 53 74 61 74 65 2e 63 61 6c 6c 28 74 61 67 2c  tState.call(tag,
5e920 20 74 72 75 65 29 3b 20 7d 0a 0a 20 20 20 20 73   true); }..    s
5e930 65 74 4d 6f 75 6e 74 53 74 61 74 65 2e 63 61 6c  etMountState.cal
5e940 6c 28 74 61 67 2c 20 66 61 6c 73 65 29 3b 0a 0a  l(tag, false);..
5e950 20 20 20 20 64 65 6c 65 74 65 20 72 6f 6f 74 2e      delete root.
5e960 5f 74 61 67 3b 0a 0a 20 20 20 20 72 65 74 75 72  _tag;..    retur
5e970 6e 20 74 61 67 0a 20 20 7d 0a 0a 20 20 2f 2a 2a  n tag.  }..  /**
5e980 0a 20 20 20 2a 20 54 61 67 20 63 72 65 61 74 69  .   * Tag creati
5e990 6f 6e 20 66 61 63 74 6f 72 79 20 66 75 6e 63 74  on factory funct
5e9a0 69 6f 6e 0a 20 20 20 2a 20 40 63 6f 6e 73 74 72  ion.   * @constr
5e9b0 75 63 74 6f 72 0a 20 20 20 2a 20 40 70 61 72 61  uctor.   * @para
5e9c0 6d 20 7b 20 4f 62 6a 65 63 74 20 7d 20 69 6d 70  m { Object } imp
5e9d0 6c 20 2d 20 69 74 20 63 6f 6e 74 61 69 6e 73 20  l - it contains 
5e9e0 74 68 65 20 74 61 67 20 74 65 6d 70 6c 61 74 65  the tag template
5e9f0 2c 20 61 6e 64 20 6c 6f 67 69 63 0a 20 20 20 2a  , and logic.   *
5ea00 20 40 70 61 72 61 6d 20 7b 20 4f 62 6a 65 63 74   @param { Object
5ea10 20 7d 20 63 6f 6e 66 20 2d 20 74 61 67 20 6f 70   } conf - tag op
5ea20 74 69 6f 6e 73 0a 20 20 20 2a 20 40 70 61 72 61  tions.   * @para
5ea30 6d 20 7b 20 53 74 72 69 6e 67 20 7d 20 69 6e 6e  m { String } inn
5ea40 65 72 48 54 4d 4c 20 2d 20 68 74 6d 6c 20 74 68  erHTML - html th
5ea50 61 74 20 65 76 65 6e 74 75 61 6c 6c 79 20 77 65  at eventually we
5ea60 20 6e 65 65 64 20 74 6f 20 69 6e 6a 65 63 74 20   need to inject 
5ea70 69 6e 20 74 68 65 20 74 61 67 0a 20 20 20 2a 2f  in the tag.   */
5ea80 0a 20 20 66 75 6e 63 74 69 6f 6e 20 63 72 65 61  .  function crea
5ea90 74 65 54 61 67 28 69 6d 70 6c 2c 20 63 6f 6e 66  teTag(impl, conf
5eaa0 2c 20 69 6e 6e 65 72 48 54 4d 4c 29 20 7b 0a 20  , innerHTML) {. 
5eab0 20 20 20 69 66 20 28 20 69 6d 70 6c 20 3d 3d 3d     if ( impl ===
5eac0 20 76 6f 69 64 20 30 20 29 20 69 6d 70 6c 20 3d   void 0 ) impl =
5ead0 20 7b 7d 3b 0a 20 20 20 20 69 66 20 28 20 63 6f   {};.    if ( co
5eae0 6e 66 20 3d 3d 3d 20 76 6f 69 64 20 30 20 29 20  nf === void 0 ) 
5eaf0 63 6f 6e 66 20 3d 20 7b 7d 3b 0a 0a 20 20 20 20  conf = {};..    
5eb00 76 61 72 20 74 61 67 20 3d 20 63 6f 6e 66 2e 63  var tag = conf.c
5eb10 6f 6e 74 65 78 74 20 7c 7c 20 7b 7d 3b 0a 20 20  ontext || {};.  
5eb20 20 20 76 61 72 20 6f 70 74 73 20 3d 20 63 6f 6e    var opts = con
5eb30 66 2e 6f 70 74 73 20 7c 7c 20 7b 7d 3b 0a 20 20  f.opts || {};.  
5eb40 20 20 76 61 72 20 70 61 72 65 6e 74 20 3d 20 63    var parent = c
5eb50 6f 6e 66 2e 70 61 72 65 6e 74 3b 0a 20 20 20 20  onf.parent;.    
5eb60 76 61 72 20 69 73 4c 6f 6f 70 20 3d 20 63 6f 6e  var isLoop = con
5eb70 66 2e 69 73 4c 6f 6f 70 3b 0a 20 20 20 20 76 61  f.isLoop;.    va
5eb80 72 20 69 73 41 6e 6f 6e 79 6d 6f 75 73 20 3d 20  r isAnonymous = 
5eb90 21 21 63 6f 6e 66 2e 69 73 41 6e 6f 6e 79 6d 6f  !!conf.isAnonymo
5eba0 75 73 3b 0a 20 20 20 20 76 61 72 20 73 6b 69 70  us;.    var skip
5ebb0 41 6e 6f 6e 79 6d 6f 75 73 20 3d 20 73 65 74 74  Anonymous = sett
5ebc0 69 6e 67 73 2e 73 6b 69 70 41 6e 6f 6e 79 6d 6f  ings.skipAnonymo
5ebd0 75 73 54 61 67 73 20 26 26 20 69 73 41 6e 6f 6e  usTags && isAnon
5ebe0 79 6d 6f 75 73 3b 0a 20 20 20 20 76 61 72 20 69  ymous;.    var i
5ebf0 74 65 6d 20 3d 20 63 6f 6e 66 2e 69 74 65 6d 3b  tem = conf.item;
5ec00 0a 20 20 20 20 2f 2f 20 61 76 61 69 6c 61 62 6c  .    // availabl
5ec10 65 20 6f 6e 6c 79 20 66 6f 72 20 74 68 65 20 6c  e only for the l
5ec20 6f 6f 70 65 64 20 6e 6f 64 65 73 0a 20 20 20 20  ooped nodes.    
5ec30 76 61 72 20 69 6e 64 65 78 20 3d 20 63 6f 6e 66  var index = conf
5ec40 2e 69 6e 64 65 78 3b 0a 20 20 20 20 2f 2f 20 41  .index;.    // A
5ec50 6c 6c 20 61 74 74 72 69 62 75 74 65 73 20 6f 6e  ll attributes on
5ec60 20 74 68 65 20 54 61 67 20 77 68 65 6e 20 69 74   the Tag when it
5ec70 27 73 20 66 69 72 73 74 20 70 61 72 73 65 64 0a  's first parsed.
5ec80 20 20 20 20 76 61 72 20 69 6e 73 74 41 74 74 72      var instAttr
5ec90 73 20 3d 20 5b 5d 3b 0a 20 20 20 20 2f 2f 20 65  s = [];.    // e
5eca0 78 70 72 65 73 73 69 6f 6e 73 20 6f 6e 20 74 68  xpressions on th
5ecb0 69 73 20 74 79 70 65 20 6f 66 20 54 61 67 0a 20  is type of Tag. 
5ecc0 20 20 20 76 61 72 20 69 6d 70 6c 41 74 74 72 73     var implAttrs
5ecd0 20 3d 20 5b 5d 3b 0a 20 20 20 20 76 61 72 20 74   = [];.    var t
5ece0 6d 70 6c 20 3d 20 69 6d 70 6c 2e 74 6d 70 6c 3b  mpl = impl.tmpl;
5ecf0 0a 20 20 20 20 76 61 72 20 65 78 70 72 65 73 73  .    var express
5ed00 69 6f 6e 73 20 3d 20 5b 5d 3b 0a 20 20 20 20 76  ions = [];.    v
5ed10 61 72 20 72 6f 6f 74 20 3d 20 63 6f 6e 66 2e 72  ar root = conf.r
5ed20 6f 6f 74 3b 0a 20 20 20 20 76 61 72 20 74 61 67  oot;.    var tag
5ed30 4e 61 6d 65 20 3d 20 63 6f 6e 66 2e 74 61 67 4e  Name = conf.tagN
5ed40 61 6d 65 20 7c 7c 20 67 65 74 4e 61 6d 65 28 72  ame || getName(r
5ed50 6f 6f 74 29 3b 0a 20 20 20 20 76 61 72 20 69 73  oot);.    var is
5ed60 56 69 72 74 75 61 6c 20 3d 20 74 61 67 4e 61 6d  Virtual = tagNam
5ed70 65 20 3d 3d 3d 20 27 76 69 72 74 75 61 6c 27 3b  e === 'virtual';
5ed80 0a 20 20 20 20 76 61 72 20 69 73 49 6e 6c 69 6e  .    var isInlin
5ed90 65 20 3d 20 21 69 73 56 69 72 74 75 61 6c 20 26  e = !isVirtual &
5eda0 26 20 21 74 6d 70 6c 3b 0a 20 20 20 20 76 61 72  & !tmpl;.    var
5edb0 20 64 6f 6d 3b 0a 0a 20 20 20 20 69 66 20 28 69   dom;..    if (i
5edc0 73 49 6e 6c 69 6e 65 20 7c 7c 20 69 73 4c 6f 6f  sInline || isLoo
5edd0 70 20 26 26 20 69 73 41 6e 6f 6e 79 6d 6f 75 73  p && isAnonymous
5ede0 29 20 7b 0a 20 20 20 20 20 20 64 6f 6d 20 3d 20  ) {.      dom = 
5edf0 72 6f 6f 74 3b 0a 20 20 20 20 7d 20 65 6c 73 65  root;.    } else
5ee00 20 7b 0a 20 20 20 20 20 20 69 66 20 28 21 69 73   {.      if (!is
5ee10 56 69 72 74 75 61 6c 29 20 7b 20 72 6f 6f 74 2e  Virtual) { root.
5ee20 69 6e 6e 65 72 48 54 4d 4c 20 3d 20 27 27 3b 20  innerHTML = ''; 
5ee30 7d 0a 20 20 20 20 20 20 64 6f 6d 20 3d 20 6d 6b  }.      dom = mk
5ee40 64 6f 6d 28 74 6d 70 6c 2c 20 69 6e 6e 65 72 48  dom(tmpl, innerH
5ee50 54 4d 4c 2c 20 69 73 53 76 67 28 72 6f 6f 74 29  TML, isSvg(root)
5ee60 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2f  );.    }..    //
5ee70 20 6d 61 6b 65 20 74 68 69 73 20 74 61 67 20 6f   make this tag o
5ee80 62 73 65 72 76 61 62 6c 65 0a 20 20 20 20 69 66  bservable.    if
5ee90 20 28 21 73 6b 69 70 41 6e 6f 6e 79 6d 6f 75 73   (!skipAnonymous
5eea0 29 20 7b 20 6f 62 73 65 72 76 61 62 6c 65 28 74  ) { observable(t
5eeb0 61 67 29 3b 20 7d 0a 0a 20 20 20 20 2f 2f 20 6f  ag); }..    // o
5eec0 6e 6c 79 20 63 61 6c 6c 20 75 6e 6d 6f 75 6e 74  nly call unmount
5eed0 20 69 66 20 77 65 20 68 61 76 65 20 61 20 76 61   if we have a va
5eee0 6c 69 64 20 5f 5f 54 41 47 5f 49 4d 50 4c 20 28  lid __TAG_IMPL (
5eef0 68 61 73 20 6e 61 6d 65 20 70 72 6f 70 65 72 74  has name propert
5ef00 79 29 0a 20 20 20 20 69 66 20 28 69 6d 70 6c 2e  y).    if (impl.
5ef10 6e 61 6d 65 20 26 26 20 72 6f 6f 74 2e 5f 74 61  name && root._ta
5ef20 67 29 20 7b 20 72 6f 6f 74 2e 5f 74 61 67 2e 75  g) { root._tag.u
5ef30 6e 6d 6f 75 6e 74 28 74 72 75 65 29 3b 20 7d 0a  nmount(true); }.
5ef40 0a 20 20 20 20 64 65 66 69 6e 65 28 74 61 67 2c  .    define(tag,
5ef50 20 27 5f 5f 27 2c 20 7b 0a 20 20 20 20 20 20 69   '__', {.      i
5ef60 6d 70 6c 3a 20 69 6d 70 6c 2c 0a 20 20 20 20 20  mpl: impl,.     
5ef70 20 72 6f 6f 74 3a 20 72 6f 6f 74 2c 0a 20 20 20   root: root,.   
5ef80 20 20 20 73 6b 69 70 41 6e 6f 6e 79 6d 6f 75 73     skipAnonymous
5ef90 3a 20 73 6b 69 70 41 6e 6f 6e 79 6d 6f 75 73 2c  : skipAnonymous,
5efa0 0a 20 20 20 20 20 20 69 6d 70 6c 41 74 74 72 73  .      implAttrs
5efb0 3a 20 69 6d 70 6c 41 74 74 72 73 2c 0a 20 20 20  : implAttrs,.   
5efc0 20 20 20 69 73 41 6e 6f 6e 79 6d 6f 75 73 3a 20     isAnonymous: 
5efd0 69 73 41 6e 6f 6e 79 6d 6f 75 73 2c 0a 20 20 20  isAnonymous,.   
5efe0 20 20 20 69 6e 73 74 41 74 74 72 73 3a 20 69 6e     instAttrs: in
5eff0 73 74 41 74 74 72 73 2c 0a 20 20 20 20 20 20 69  stAttrs,.      i
5f000 6e 6e 65 72 48 54 4d 4c 3a 20 69 6e 6e 65 72 48  nnerHTML: innerH
5f010 54 4d 4c 2c 0a 20 20 20 20 20 20 74 61 67 4e 61  TML,.      tagNa
5f020 6d 65 3a 20 74 61 67 4e 61 6d 65 2c 0a 20 20 20  me: tagName,.   
5f030 20 20 20 69 6e 64 65 78 3a 20 69 6e 64 65 78 2c     index: index,
5f040 0a 20 20 20 20 20 20 69 73 4c 6f 6f 70 3a 20 69  .      isLoop: i
5f050 73 4c 6f 6f 70 2c 0a 20 20 20 20 20 20 69 73 49  sLoop,.      isI
5f060 6e 6c 69 6e 65 3a 20 69 73 49 6e 6c 69 6e 65 2c  nline: isInline,
5f070 0a 20 20 20 20 20 20 69 74 65 6d 3a 20 69 74 65  .      item: ite
5f080 6d 2c 0a 20 20 20 20 20 20 70 61 72 65 6e 74 3a  m,.      parent:
5f090 20 70 61 72 65 6e 74 2c 0a 20 20 20 20 20 20 2f   parent,.      /
5f0a0 2f 20 74 61 67 73 20 68 61 76 69 6e 67 20 65 76  / tags having ev
5f0b0 65 6e 74 20 6c 69 73 74 65 6e 65 72 73 0a 20 20  ent listeners.  
5f0c0 20 20 20 20 2f 2f 20 69 74 20 77 6f 75 6c 64 20      // it would 
5f0d0 62 65 20 62 65 74 74 65 72 20 74 6f 20 75 73 65  be better to use
5f0e0 20 77 65 61 6b 20 6d 61 70 73 20 68 65 72 65 20   weak maps here 
5f0f0 62 75 74 20 77 65 20 63 61 6e 20 6e 6f 74 20 69  but we can not i
5f100 6e 74 72 6f 64 75 63 65 20 62 72 65 61 6b 69 6e  ntroduce breakin
5f110 67 20 63 68 61 6e 67 65 73 20 6e 6f 77 0a 20 20  g changes now.  
5f120 20 20 20 20 6c 69 73 74 65 6e 65 72 73 3a 20 5b      listeners: [
5f130 5d 2c 0a 20 20 20 20 20 20 2f 2f 20 74 68 65 73  ],.      // thes
5f140 65 20 76 61 72 73 20 77 69 6c 6c 20 62 65 20 6e  e vars will be n
5f150 65 65 64 65 64 20 6f 6e 6c 79 20 66 6f 72 20 74  eeded only for t
5f160 68 65 20 76 69 72 74 75 61 6c 20 74 61 67 73 0a  he virtual tags.
5f170 20 20 20 20 20 20 76 69 72 74 73 3a 20 5b 5d 2c        virts: [],
5f180 0a 20 20 20 20 20 20 77 61 73 43 72 65 61 74 65  .      wasCreate
5f190 64 3a 20 66 61 6c 73 65 2c 0a 20 20 20 20 20 20  d: false,.      
5f1a0 74 61 69 6c 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20  tail: null,.    
5f1b0 20 20 68 65 61 64 3a 20 6e 75 6c 6c 0a 20 20 20    head: null.   
5f1c0 20 7d 29 3b 0a 0a 20 20 20 20 2f 2f 20 74 61 67   });..    // tag
5f1d0 20 70 72 6f 74 65 63 74 65 64 20 70 72 6f 70 65   protected prope
5f1e0 72 74 69 65 73 0a 20 20 20 20 72 65 74 75 72 6e  rties.    return
5f1f0 20 5b 0a 20 20 20 20 20 20 5b 27 69 73 4d 6f 75   [.      ['isMou
5f200 6e 74 65 64 27 2c 20 66 61 6c 73 65 5d 2c 0a 20  nted', false],. 
5f210 20 20 20 20 20 2f 2f 20 63 72 65 61 74 65 20 61       // create a
5f220 20 75 6e 69 71 75 65 20 69 64 20 74 6f 20 74 68   unique id to th
5f230 69 73 20 74 61 67 0a 20 20 20 20 20 20 2f 2f 20  is tag.      // 
5f240 69 74 20 63 6f 75 6c 64 20 62 65 20 68 61 6e 64  it could be hand
5f250 79 20 74 6f 20 75 73 65 20 69 74 20 61 6c 73 6f  y to use it also
5f260 20 74 6f 20 69 6d 70 72 6f 76 65 20 74 68 65 20   to improve the 
5f270 76 69 72 74 75 61 6c 20 64 6f 6d 20 72 65 6e 64  virtual dom rend
5f280 65 72 69 6e 67 20 73 70 65 65 64 0a 20 20 20 20  ering speed.    
5f290 20 20 5b 27 5f 72 69 6f 74 5f 69 64 27 2c 20 75    ['_riot_id', u
5f2a0 69 64 28 29 5d 2c 0a 20 20 20 20 20 20 5b 27 72  id()],.      ['r
5f2b0 6f 6f 74 27 2c 20 72 6f 6f 74 5d 2c 0a 20 20 20  oot', root],.   
5f2c0 20 20 20 5b 27 6f 70 74 73 27 2c 20 6f 70 74 73     ['opts', opts
5f2d0 2c 20 7b 20 77 72 69 74 61 62 6c 65 3a 20 74 72  , { writable: tr
5f2e0 75 65 2c 20 65 6e 75 6d 65 72 61 62 6c 65 3a 20  ue, enumerable: 
5f2f0 74 72 75 65 20 7d 5d 2c 0a 20 20 20 20 20 20 5b  true }],.      [
5f300 27 70 61 72 65 6e 74 27 2c 20 70 61 72 65 6e 74  'parent', parent
5f310 20 7c 7c 20 6e 75 6c 6c 5d 2c 0a 20 20 20 20 20   || null],.     
5f320 20 2f 2f 20 70 72 6f 74 65 63 74 20 74 68 65 20   // protect the 
5f330 22 74 61 67 73 22 20 61 6e 64 20 22 72 65 66 73  "tags" and "refs
5f340 22 20 70 72 6f 70 65 72 74 79 20 66 72 6f 6d 20  " property from 
5f350 62 65 69 6e 67 20 6f 76 65 72 72 69 64 64 65 6e  being overridden
5f360 0a 20 20 20 20 20 20 5b 27 74 61 67 73 27 2c 20  .      ['tags', 
5f370 7b 7d 5d 2c 0a 20 20 20 20 20 20 5b 27 72 65 66  {}],.      ['ref
5f380 73 27 2c 20 7b 7d 5d 2c 0a 20 20 20 20 20 20 5b  s', {}],.      [
5f390 27 75 70 64 61 74 65 27 2c 20 66 75 6e 63 74 69  'update', functi
5f3a0 6f 6e 20 28 64 61 74 61 29 20 7b 20 72 65 74 75  on (data) { retu
5f3b0 72 6e 20 63 6f 6d 70 6f 6e 65 6e 74 55 70 64 61  rn componentUpda
5f3c0 74 65 28 74 61 67 2c 20 64 61 74 61 2c 20 65 78  te(tag, data, ex
5f3d0 70 72 65 73 73 69 6f 6e 73 29 3b 20 7d 5d 2c 0a  pressions); }],.
5f3e0 20 20 20 20 20 20 5b 27 6d 69 78 69 6e 27 2c 20        ['mixin', 
5f3f0 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20  function () {.  
5f400 20 20 20 20 20 20 76 61 72 20 6d 69 78 69 6e 73        var mixins
5f410 20 3d 20 5b 5d 2c 20 6c 65 6e 20 3d 20 61 72 67   = [], len = arg
5f420 75 6d 65 6e 74 73 2e 6c 65 6e 67 74 68 3b 0a 20  uments.length;. 
5f430 20 20 20 20 20 20 20 77 68 69 6c 65 20 28 20 6c         while ( l
5f440 65 6e 2d 2d 20 29 20 6d 69 78 69 6e 73 5b 20 6c  en-- ) mixins[ l
5f450 65 6e 20 5d 20 3d 20 61 72 67 75 6d 65 6e 74 73  en ] = arguments
5f460 5b 20 6c 65 6e 20 5d 3b 0a 0a 20 20 20 20 20 20  [ len ];..      
5f470 20 20 72 65 74 75 72 6e 20 63 6f 6d 70 6f 6e 65    return compone
5f480 6e 74 4d 69 78 69 6e 2e 61 70 70 6c 79 28 76 6f  ntMixin.apply(vo
5f490 69 64 20 30 2c 20 5b 20 74 61 67 20 5d 2e 63 6f  id 0, [ tag ].co
5f4a0 6e 63 61 74 28 20 6d 69 78 69 6e 73 20 29 29 3b  ncat( mixins ));
5f4b0 0a 20 20 20 20 7d 5d 2c 0a 20 20 20 20 20 20 5b  .    }],.      [
5f4c0 27 6d 6f 75 6e 74 27 2c 20 66 75 6e 63 74 69 6f  'mount', functio
5f4d0 6e 20 28 29 20 7b 20 72 65 74 75 72 6e 20 63 6f  n () { return co
5f4e0 6d 70 6f 6e 65 6e 74 4d 6f 75 6e 74 28 74 61 67  mponentMount(tag
5f4f0 2c 20 64 6f 6d 2c 20 65 78 70 72 65 73 73 69 6f  , dom, expressio
5f500 6e 73 2c 20 6f 70 74 73 29 3b 20 7d 5d 2c 0a 20  ns, opts); }],. 
5f510 20 20 20 20 20 5b 27 75 6e 6d 6f 75 6e 74 27 2c       ['unmount',
5f520 20 66 75 6e 63 74 69 6f 6e 20 28 6d 75 73 74 4b   function (mustK
5f530 65 65 70 52 6f 6f 74 29 20 7b 20 72 65 74 75 72  eepRoot) { retur
5f540 6e 20 74 61 67 55 6e 6d 6f 75 6e 74 28 74 61 67  n tagUnmount(tag
5f550 2c 20 6d 75 73 74 4b 65 65 70 52 6f 6f 74 2c 20  , mustKeepRoot, 
5f560 65 78 70 72 65 73 73 69 6f 6e 73 29 3b 20 7d 5d  expressions); }]
5f570 0a 20 20 20 20 5d 2e 72 65 64 75 63 65 28 66 75  .    ].reduce(fu
5f580 6e 63 74 69 6f 6e 20 28 61 63 63 2c 20 72 65 66  nction (acc, ref
5f590 29 20 7b 0a 20 20 20 20 20 20 76 61 72 20 6b 65  ) {.      var ke
5f5a0 79 20 3d 20 72 65 66 5b 30 5d 3b 0a 20 20 20 20  y = ref[0];.    
5f5b0 20 20 76 61 72 20 76 61 6c 75 65 20 3d 20 72 65    var value = re
5f5c0 66 5b 31 5d 3b 0a 20 20 20 20 20 20 76 61 72 20  f[1];.      var 
5f5d0 6f 70 74 73 20 3d 20 72 65 66 5b 32 5d 3b 0a 0a  opts = ref[2];..
5f5e0 20 20 20 20 20 20 64 65 66 69 6e 65 28 74 61 67        define(tag
5f5f0 2c 20 6b 65 79 2c 20 76 61 6c 75 65 2c 20 6f 70  , key, value, op
5f600 74 73 29 3b 0a 20 20 20 20 20 20 72 65 74 75 72  ts);.      retur
5f610 6e 20 61 63 63 0a 20 20 20 20 7d 2c 20 65 78 74  n acc.    }, ext
5f620 65 6e 64 28 74 61 67 2c 20 69 74 65 6d 29 29 0a  end(tag, item)).
5f630 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20    }..  /**.   * 
5f640 4d 6f 75 6e 74 20 61 20 74 61 67 20 63 72 65 61  Mount a tag crea
5f650 74 69 6e 67 20 6e 65 77 20 54 61 67 20 69 6e 73  ting new Tag ins
5f660 74 61 6e 63 65 0a 20 20 20 2a 20 40 70 61 72 61  tance.   * @para
5f670 6d 20 20 20 7b 20 4f 62 6a 65 63 74 20 7d 20 72  m   { Object } r
5f680 6f 6f 74 20 2d 20 64 6f 6d 20 6e 6f 64 65 20 77  oot - dom node w
5f690 68 65 72 65 20 74 68 65 20 74 61 67 20 77 69 6c  here the tag wil
5f6a0 6c 20 62 65 20 6d 6f 75 6e 74 65 64 0a 20 20 20  l be mounted.   
5f6b0 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 53 74 72  * @param   { Str
5f6c0 69 6e 67 20 7d 20 74 61 67 4e 61 6d 65 20 2d 20  ing } tagName - 
5f6d0 6e 61 6d 65 20 6f 66 20 74 68 65 20 72 69 6f 74  name of the riot
5f6e0 20 74 61 67 20 77 65 20 77 61 6e 74 20 74 6f 20   tag we want to 
5f6f0 6d 6f 75 6e 74 0a 20 20 20 2a 20 40 70 61 72 61  mount.   * @para
5f700 6d 20 20 20 7b 20 4f 62 6a 65 63 74 20 7d 20 6f  m   { Object } o
5f710 70 74 73 20 2d 20 6f 70 74 69 6f 6e 73 20 74 6f  pts - options to
5f720 20 70 61 73 73 20 74 6f 20 74 68 65 20 54 61 67   pass to the Tag
5f730 20 69 6e 73 74 61 6e 63 65 0a 20 20 20 2a 20 40   instance.   * @
5f740 70 61 72 61 6d 20 20 20 7b 20 4f 62 6a 65 63 74  param   { Object
5f750 20 7d 20 63 74 78 20 2d 20 6f 70 74 69 6f 6e 61   } ctx - optiona
5f760 6c 20 63 6f 6e 74 65 78 74 20 74 68 61 74 20 77  l context that w
5f770 69 6c 6c 20 62 65 20 75 73 65 64 20 74 6f 20 65  ill be used to e
5f780 78 74 65 6e 64 20 61 6e 20 65 78 69 73 74 69 6e  xtend an existin
5f790 67 20 63 6c 61 73 73 20 28 20 75 73 65 64 20 69  g class ( used i
5f7a0 6e 20 72 69 6f 74 2e 54 61 67 20 29 0a 20 20 20  n riot.Tag ).   
5f7b0 2a 20 40 72 65 74 75 72 6e 73 20 7b 20 54 61 67  * @returns { Tag
5f7c0 20 7d 20 61 20 6e 65 77 20 54 61 67 20 69 6e 73   } a new Tag ins
5f7d0 74 61 6e 63 65 0a 20 20 20 2a 2f 0a 20 20 66 75  tance.   */.  fu
5f7e0 6e 63 74 69 6f 6e 20 6d 6f 75 6e 74 24 31 28 72  nction mount$1(r
5f7f0 6f 6f 74 2c 20 74 61 67 4e 61 6d 65 2c 20 6f 70  oot, tagName, op
5f800 74 73 2c 20 63 74 78 29 20 7b 0a 20 20 20 20 76  ts, ctx) {.    v
5f810 61 72 20 69 6d 70 6c 20 3d 20 5f 5f 54 41 47 5f  ar impl = __TAG_
5f820 49 4d 50 4c 5b 74 61 67 4e 61 6d 65 5d 3b 0a 20  IMPL[tagName];. 
5f830 20 20 20 76 61 72 20 69 6d 70 6c 43 6c 61 73 73     var implClass
5f840 20 3d 20 5f 5f 54 41 47 5f 49 4d 50 4c 5b 74 61   = __TAG_IMPL[ta
5f850 67 4e 61 6d 65 5d 2e 63 6c 61 73 73 3b 0a 20 20  gName].class;.  
5f860 20 20 76 61 72 20 63 6f 6e 74 65 78 74 20 3d 20    var context = 
5f870 63 74 78 20 7c 7c 20 28 69 6d 70 6c 43 6c 61 73  ctx || (implClas
5f880 73 20 3f 20 63 72 65 61 74 65 28 69 6d 70 6c 43  s ? create(implC
5f890 6c 61 73 73 2e 70 72 6f 74 6f 74 79 70 65 29 20  lass.prototype) 
5f8a0 3a 20 7b 7d 29 3b 0a 20 20 20 20 2f 2f 20 63 61  : {});.    // ca
5f8b0 63 68 65 20 74 68 65 20 69 6e 6e 65 72 20 48 54  che the inner HT
5f8c0 4d 4c 20 74 6f 20 66 69 78 20 23 38 35 35 0a 20  ML to fix #855. 
5f8d0 20 20 20 76 61 72 20 69 6e 6e 65 72 48 54 4d 4c     var innerHTML
5f8e0 20 3d 20 72 6f 6f 74 2e 5f 69 6e 6e 65 72 48 54   = root._innerHT
5f8f0 4d 4c 20 3d 20 72 6f 6f 74 2e 5f 69 6e 6e 65 72  ML = root._inner
5f900 48 54 4d 4c 20 7c 7c 20 72 6f 6f 74 2e 69 6e 6e  HTML || root.inn
5f910 65 72 48 54 4d 4c 3b 0a 20 20 20 20 76 61 72 20  erHTML;.    var 
5f920 63 6f 6e 66 20 3d 20 65 78 74 65 6e 64 28 7b 20  conf = extend({ 
5f930 72 6f 6f 74 3a 20 72 6f 6f 74 2c 20 6f 70 74 73  root: root, opts
5f940 3a 20 6f 70 74 73 2c 20 63 6f 6e 74 65 78 74 3a  : opts, context:
5f950 20 63 6f 6e 74 65 78 74 20 7d 2c 20 7b 20 70 61   context }, { pa
5f960 72 65 6e 74 3a 20 6f 70 74 73 20 3f 20 6f 70 74  rent: opts ? opt
5f970 73 2e 70 61 72 65 6e 74 20 3a 20 6e 75 6c 6c 20  s.parent : null 
5f980 7d 29 3b 0a 20 20 20 20 76 61 72 20 74 61 67 3b  });.    var tag;
5f990 0a 0a 20 20 20 20 69 66 20 28 69 6d 70 6c 20 26  ..    if (impl &
5f9a0 26 20 72 6f 6f 74 29 20 7b 20 74 61 67 20 3d 20  & root) { tag = 
5f9b0 63 72 65 61 74 65 54 61 67 28 69 6d 70 6c 2c 20  createTag(impl, 
5f9c0 63 6f 6e 66 2c 20 69 6e 6e 65 72 48 54 4d 4c 29  conf, innerHTML)
5f9d0 3b 20 7d 0a 0a 20 20 20 20 69 66 20 28 74 61 67  ; }..    if (tag
5f9e0 20 26 26 20 74 61 67 2e 6d 6f 75 6e 74 29 20 7b   && tag.mount) {
5f9f0 0a 20 20 20 20 20 20 74 61 67 2e 6d 6f 75 6e 74  .      tag.mount
5fa00 28 74 72 75 65 29 3b 0a 20 20 20 20 20 20 2f 2f  (true);.      //
5fa10 20 61 64 64 20 74 68 69 73 20 74 61 67 20 74 6f   add this tag to
5fa20 20 74 68 65 20 76 69 72 74 75 61 6c 44 6f 6d 20   the virtualDom 
5fa30 76 61 72 69 61 62 6c 65 0a 20 20 20 20 20 20 69  variable.      i
5fa40 66 20 28 21 63 6f 6e 74 61 69 6e 73 28 5f 5f 54  f (!contains(__T
5fa50 41 47 53 5f 43 41 43 48 45 2c 20 74 61 67 29 29  AGS_CACHE, tag))
5fa60 20 7b 20 5f 5f 54 41 47 53 5f 43 41 43 48 45 2e   { __TAGS_CACHE.
5fa70 70 75 73 68 28 74 61 67 29 3b 20 7d 0a 20 20 20  push(tag); }.   
5fa80 20 7d 0a 0a 20 20 20 20 72 65 74 75 72 6e 20 74   }..    return t
5fa90 61 67 0a 20 20 7d 0a 0a 0a 0a 20 20 76 61 72 20  ag.  }....  var 
5faa0 74 61 67 73 20 3d 20 2f 2a 23 5f 5f 50 55 52 45  tags = /*#__PURE
5fab0 5f 5f 2a 2f 4f 62 6a 65 63 74 2e 66 72 65 65 7a  __*/Object.freez
5fac0 65 28 7b 0a 20 20 20 20 61 72 72 61 79 69 73 68  e({.    arrayish
5fad0 41 64 64 3a 20 61 72 72 61 79 69 73 68 41 64 64  Add: arrayishAdd
5fae0 2c 0a 20 20 20 20 67 65 74 54 61 67 4e 61 6d 65  ,.    getTagName
5faf0 3a 20 67 65 74 4e 61 6d 65 2c 0a 20 20 20 20 69  : getName,.    i
5fb00 6e 68 65 72 69 74 50 61 72 65 6e 74 50 72 6f 70  nheritParentProp
5fb10 73 3a 20 69 6e 68 65 72 69 74 50 61 72 65 6e 74  s: inheritParent
5fb20 50 72 6f 70 73 2c 0a 20 20 20 20 6d 6f 75 6e 74  Props,.    mount
5fb30 54 6f 3a 20 6d 6f 75 6e 74 24 31 2c 0a 20 20 20  To: mount$1,.   
5fb40 20 73 65 6c 65 63 74 54 61 67 73 3a 20 71 75 65   selectTags: que
5fb50 72 79 2c 0a 20 20 20 20 61 72 72 61 79 69 73 68  ry,.    arrayish
5fb60 52 65 6d 6f 76 65 3a 20 61 72 72 61 79 69 73 68  Remove: arrayish
5fb70 52 65 6d 6f 76 65 2c 0a 20 20 20 20 67 65 74 54  Remove,.    getT
5fb80 61 67 3a 20 67 65 74 2c 0a 20 20 20 20 69 6e 69  ag: get,.    ini
5fb90 74 43 68 69 6c 64 54 61 67 3a 20 69 6e 69 74 43  tChildTag: initC
5fba0 68 69 6c 64 2c 0a 20 20 20 20 6d 6f 76 65 43 68  hild,.    moveCh
5fbb0 69 6c 64 54 61 67 3a 20 6d 6f 76 65 43 68 69 6c  ildTag: moveChil
5fbc0 64 2c 0a 20 20 20 20 6d 61 6b 65 52 65 70 6c 61  d,.    makeRepla
5fbd0 63 65 56 69 72 74 75 61 6c 3a 20 6d 61 6b 65 52  ceVirtual: makeR
5fbe0 65 70 6c 61 63 65 56 69 72 74 75 61 6c 2c 0a 20  eplaceVirtual,. 
5fbf0 20 20 20 67 65 74 49 6d 6d 65 64 69 61 74 65 43     getImmediateC
5fc00 75 73 74 6f 6d 50 61 72 65 6e 74 54 61 67 3a 20  ustomParentTag: 
5fc10 67 65 74 49 6d 6d 65 64 69 61 74 65 43 75 73 74  getImmediateCust
5fc20 6f 6d 50 61 72 65 6e 74 2c 0a 20 20 20 20 6d 61  omParent,.    ma
5fc30 6b 65 56 69 72 74 75 61 6c 3a 20 6d 61 6b 65 56  keVirtual: makeV
5fc40 69 72 74 75 61 6c 2c 0a 20 20 20 20 6d 6f 76 65  irtual,.    move
5fc50 56 69 72 74 75 61 6c 3a 20 6d 6f 76 65 56 69 72  Virtual: moveVir
5fc60 74 75 61 6c 2c 0a 20 20 20 20 75 6e 6d 6f 75 6e  tual,.    unmoun
5fc70 74 41 6c 6c 3a 20 75 6e 6d 6f 75 6e 74 41 6c 6c  tAll: unmountAll
5fc80 2c 0a 20 20 20 20 63 72 65 61 74 65 49 66 44 69  ,.    createIfDi
5fc90 72 65 63 74 69 76 65 3a 20 63 72 65 61 74 65 49  rective: createI
5fca0 66 44 69 72 65 63 74 69 76 65 2c 0a 20 20 20 20  fDirective,.    
5fcb0 63 72 65 61 74 65 52 65 66 44 69 72 65 63 74 69  createRefDirecti
5fcc0 76 65 3a 20 63 72 65 61 74 65 52 65 66 44 69 72  ve: createRefDir
5fcd0 65 63 74 69 76 65 0a 20 20 7d 29 3b 0a 0a 20 20  ective.  });..  
5fce0 2f 2a 2a 0a 20 20 20 2a 20 52 69 6f 74 20 70 75  /**.   * Riot pu
5fcf0 62 6c 69 63 20 61 70 69 0a 20 20 20 2a 2f 0a 20  blic api.   */. 
5fd00 20 76 61 72 20 73 65 74 74 69 6e 67 73 24 31 20   var settings$1 
5fd10 3d 20 73 65 74 74 69 6e 67 73 3b 0a 20 20 76 61  = settings;.  va
5fd20 72 20 75 74 69 6c 20 3d 20 7b 0a 20 20 20 20 74  r util = {.    t
5fd30 6d 70 6c 3a 20 63 73 70 5f 74 6d 70 6c 5f 31 2c  mpl: csp_tmpl_1,
5fd40 0a 20 20 20 20 62 72 61 63 6b 65 74 73 3a 20 63  .    brackets: c
5fd50 73 70 5f 74 6d 70 6c 5f 32 2c 0a 20 20 20 20 73  sp_tmpl_2,.    s
5fd60 74 79 6c 65 4d 61 6e 61 67 65 72 3a 20 73 74 79  tyleManager: sty
5fd70 6c 65 4d 61 6e 61 67 65 72 2c 0a 20 20 20 20 76  leManager,.    v
5fd80 64 6f 6d 3a 20 5f 5f 54 41 47 53 5f 43 41 43 48  dom: __TAGS_CACH
5fd90 45 2c 0a 20 20 20 20 73 74 79 6c 65 4e 6f 64 65  E,.    styleNode
5fda0 3a 20 73 74 79 6c 65 4d 61 6e 61 67 65 72 2e 73  : styleManager.s
5fdb0 74 79 6c 65 4e 6f 64 65 2c 0a 20 20 20 20 2f 2f  tyleNode,.    //
5fdc0 20 65 78 70 6f 72 74 20 74 68 65 20 72 69 6f 74   export the riot
5fdd0 20 69 6e 74 65 72 6e 61 6c 20 75 74 69 6c 73 20   internal utils 
5fde0 61 73 20 77 65 6c 6c 0a 20 20 20 20 64 6f 6d 3a  as well.    dom:
5fdf0 20 64 6f 6d 2c 0a 20 20 20 20 63 68 65 63 6b 3a   dom,.    check:
5fe00 20 63 68 65 63 6b 2c 0a 20 20 20 20 6d 69 73 63   check,.    misc
5fe10 3a 20 6d 69 73 63 2c 0a 20 20 20 20 74 61 67 73  : misc,.    tags
5fe20 3a 20 74 61 67 73 0a 20 20 7d 3b 0a 0a 20 20 2f  : tags.  };..  /
5fe30 2f 20 65 78 70 6f 72 74 20 74 68 65 20 63 6f 72  / export the cor
5fe40 65 20 70 72 6f 70 73 2f 6d 65 74 68 6f 64 73 0a  e props/methods.
5fe50 20 20 76 61 72 20 54 61 67 24 31 20 3d 20 54 61    var Tag$1 = Ta
5fe60 67 3b 0a 20 20 76 61 72 20 74 61 67 24 31 20 3d  g;.  var tag$1 =
5fe70 20 74 61 67 3b 0a 20 20 76 61 72 20 74 61 67 32   tag;.  var tag2
5fe80 24 31 20 3d 20 74 61 67 32 3b 0a 20 20 76 61 72  $1 = tag2;.  var
5fe90 20 6d 6f 75 6e 74 24 32 20 3d 20 6d 6f 75 6e 74   mount$2 = mount
5fea0 3b 0a 20 20 76 61 72 20 6d 69 78 69 6e 24 31 20  ;.  var mixin$1 
5feb0 3d 20 6d 69 78 69 6e 3b 0a 20 20 76 61 72 20 75  = mixin;.  var u
5fec0 70 64 61 74 65 24 32 20 3d 20 75 70 64 61 74 65  pdate$2 = update
5fed0 24 31 3b 0a 20 20 76 61 72 20 75 6e 72 65 67 69  $1;.  var unregi
5fee0 73 74 65 72 24 31 20 3d 20 75 6e 72 65 67 69 73  ster$1 = unregis
5fef0 74 65 72 3b 0a 20 20 76 61 72 20 76 65 72 73 69  ter;.  var versi
5ff00 6f 6e 24 31 20 3d 20 76 65 72 73 69 6f 6e 3b 0a  on$1 = version;.
5ff10 20 20 76 61 72 20 6f 62 73 65 72 76 61 62 6c 65    var observable
5ff20 24 31 20 3d 20 6f 62 73 65 72 76 61 62 6c 65 3b  $1 = observable;
5ff30 0a 0a 20 20 76 61 72 20 72 69 6f 74 24 31 20 3d  ..  var riot$1 =
5ff40 20 65 78 74 65 6e 64 28 7b 7d 2c 20 63 6f 72 65   extend({}, core
5ff50 2c 20 7b 0a 20 20 20 20 6f 62 73 65 72 76 61 62  , {.    observab
5ff60 6c 65 3a 20 6f 62 73 65 72 76 61 62 6c 65 2c 0a  le: observable,.
5ff70 20 20 20 20 73 65 74 74 69 6e 67 73 3a 20 73 65      settings: se
5ff80 74 74 69 6e 67 73 24 31 2c 0a 20 20 20 20 75 74  ttings$1,.    ut
5ff90 69 6c 3a 20 75 74 69 6c 2c 0a 20 20 7d 29 3b 0a  il: util,.  });.
5ffa0 0a 20 20 65 78 70 6f 72 74 73 2e 73 65 74 74 69  .  exports.setti
5ffb0 6e 67 73 20 3d 20 73 65 74 74 69 6e 67 73 24 31  ngs = settings$1
5ffc0 3b 0a 20 20 65 78 70 6f 72 74 73 2e 75 74 69 6c  ;.  exports.util
5ffd0 20 3d 20 75 74 69 6c 3b 0a 20 20 65 78 70 6f 72   = util;.  expor
5ffe0 74 73 2e 54 61 67 20 3d 20 54 61 67 24 31 3b 0a  ts.Tag = Tag$1;.
5fff0 20 20 65 78 70 6f 72 74 73 2e 74 61 67 20 3d 20    exports.tag = 
60000 74 61 67 24 31 3b 0a 20 20 65 78 70 6f 72 74 73  tag$1;.  exports
60010 2e 74 61 67 32 20 3d 20 74 61 67 32 24 31 3b 0a  .tag2 = tag2$1;.
60020 20 20 65 78 70 6f 72 74 73 2e 6d 6f 75 6e 74 20    exports.mount 
60030 3d 20 6d 6f 75 6e 74 24 32 3b 0a 20 20 65 78 70  = mount$2;.  exp
60040 6f 72 74 73 2e 6d 69 78 69 6e 20 3d 20 6d 69 78  orts.mixin = mix
60050 69 6e 24 31 3b 0a 20 20 65 78 70 6f 72 74 73 2e  in$1;.  exports.
60060 75 70 64 61 74 65 20 3d 20 75 70 64 61 74 65 24  update = update$
60070 32 3b 0a 20 20 65 78 70 6f 72 74 73 2e 75 6e 72  2;.  exports.unr
60080 65 67 69 73 74 65 72 20 3d 20 75 6e 72 65 67 69  egister = unregi
60090 73 74 65 72 24 31 3b 0a 20 20 65 78 70 6f 72 74  ster$1;.  export
600a0 73 2e 76 65 72 73 69 6f 6e 20 3d 20 76 65 72 73  s.version = vers
600b0 69 6f 6e 24 31 3b 0a 20 20 65 78 70 6f 72 74 73  ion$1;.  exports
600c0 2e 6f 62 73 65 72 76 61 62 6c 65 20 3d 20 6f 62  .observable = ob
600d0 73 65 72 76 61 62 6c 65 24 31 3b 0a 20 20 65 78  servable$1;.  ex
600e0 70 6f 72 74 73 2e 64 65 66 61 75 6c 74 20 3d 20  ports.default = 
600f0 72 69 6f 74 24 31 3b 0a 0a 20 20 4f 62 6a 65 63  riot$1;..  Objec
60100 74 2e 64 65 66 69 6e 65 50 72 6f 70 65 72 74 79  t.defineProperty
60110 28 65 78 70 6f 72 74 73 2c 20 27 5f 5f 65 73 4d  (exports, '__esM
60120 6f 64 75 6c 65 27 2c 20 7b 20 76 61 6c 75 65 3a  odule', { value:
60130 20 74 72 75 65 20 7d 29 3b 0a 0a 7d 29 29 29 3b   true });..})));
60140 0a                                               .