⌈⌋ ⎇ branch:  Bitrhythm


Hex Artifact Content

Artifact f7f12a3fc07725e5d67dd4bba93b16bf8d544aa505cdcc9299007912bac9a003:


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: 6d 6f 64 75 6c 65 2e 65 78 70 6f 72 74 73 20 3d  module.exports =
0090: 20 66 61 63 74 6f 72 79 28 29 20 3a 0a 20 20 74   factory() :.  t
00a0: 79 70 65 6f 66 20 64 65 66 69 6e 65 20 3d 3d 3d  ypeof define ===
00b0: 20 27 66 75 6e 63 74 69 6f 6e 27 20 26 26 20 64   'function' && d
00c0: 65 66 69 6e 65 2e 61 6d 64 20 3f 20 64 65 66 69  efine.amd ? defi
00d0: 6e 65 28 66 61 63 74 6f 72 79 29 20 3a 0a 20 20  ne(factory) :.  
00e0: 28 67 6c 6f 62 61 6c 2e 72 69 6f 74 20 3d 20 66  (global.riot = f
00f0: 61 63 74 6f 72 79 28 29 29 3b 0a 7d 28 74 68 69  actory());.}(thi
0100: 73 2c 20 28 66 75 6e 63 74 69 6f 6e 20 28 29 20  s, (function () 
0110: 7b 20 27 75 73 65 20 73 74 72 69 63 74 27 3b 0a  { 'use strict';.
0120: 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 53 68 6f 72  .  /**.   * Shor
0130: 74 65 72 20 61 6e 64 20 66 61 73 74 20 77 61 79  ter and fast way
0140: 20 74 6f 20 73 65 6c 65 63 74 20 61 20 73 69 6e   to select a sin
0150: 67 6c 65 20 6e 6f 64 65 20 69 6e 20 74 68 65 20  gle node in the 
0160: 44 4f 4d 0a 20 20 20 2a 20 40 70 61 72 61 6d 20  DOM.   * @param 
0170: 20 20 7b 20 53 74 72 69 6e 67 20 7d 20 73 65 6c    { String } sel
0180: 65 63 74 6f 72 20 2d 20 75 6e 69 71 75 65 20 64  ector - unique d
0190: 6f 6d 20 73 65 6c 65 63 74 6f 72 0a 20 20 20 2a  om selector.   *
01a0: 20 40 70 61 72 61 6d 20 20 20 7b 20 4f 62 6a 65   @param   { Obje
01b0: 63 74 20 7d 20 63 74 78 20 2d 20 44 4f 4d 20 6e  ct } ctx - DOM n
01c0: 6f 64 65 20 77 68 65 72 65 20 74 68 65 20 74 61  ode where the ta
01d0: 72 67 65 74 20 6f 66 20 6f 75 72 20 73 65 61 72  rget of our sear
01e0: 63 68 20 77 69 6c 6c 20 69 73 20 6c 6f 63 61 74  ch will is locat
01f0: 65 64 0a 20 20 20 2a 20 40 72 65 74 75 72 6e 73  ed.   * @returns
0200: 20 7b 20 4f 62 6a 65 63 74 20 7d 20 64 6f 6d 20   { Object } dom 
0210: 6e 6f 64 65 20 66 6f 75 6e 64 0a 20 20 20 2a 2f  node found.   */
0220: 0a 20 20 66 75 6e 63 74 69 6f 6e 20 24 28 73 65  .  function $(se
0230: 6c 65 63 74 6f 72 2c 20 63 74 78 29 20 7b 0a 20  lector, ctx) {. 
0240: 20 20 20 72 65 74 75 72 6e 20 28 63 74 78 20 7c     return (ctx |
0250: 7c 20 64 6f 63 75 6d 65 6e 74 29 2e 71 75 65 72  | document).quer
0260: 79 53 65 6c 65 63 74 6f 72 28 73 65 6c 65 63 74  ySelector(select
0270: 6f 72 29 0a 20 20 7d 0a 0a 20 20 76 61 72 0a 20  or).  }..  var. 
0280: 20 20 20 2f 2f 20 62 65 20 61 77 61 72 65 2c 20     // be aware, 
0290: 69 6e 74 65 72 6e 61 6c 20 75 73 61 67 65 0a 20  internal usage. 
02a0: 20 20 20 2f 2f 20 41 54 54 45 4e 54 49 4f 4e 3a     // ATTENTION:
02b0: 20 70 72 65 66 69 78 20 74 68 65 20 67 6c 6f 62   prefix the glob
02c0: 61 6c 20 64 79 6e 61 6d 69 63 20 76 61 72 69 61  al dynamic varia
02d0: 62 6c 65 73 20 77 69 74 68 20 60 5f 5f 60 0a 20  bles with `__`. 
02e0: 20 20 20 2f 2f 20 74 61 67 73 20 69 6e 73 74 61     // tags insta
02f0: 6e 63 65 73 20 63 61 63 68 65 0a 20 20 20 20 5f  nces cache.    _
0300: 5f 54 41 47 53 5f 43 41 43 48 45 20 3d 20 5b 5d  _TAGS_CACHE = []
0310: 2c 0a 20 20 20 20 2f 2f 20 74 61 67 73 20 69 6d  ,.    // tags im
0320: 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 63 61 63  plementation cac
0330: 68 65 0a 20 20 20 20 5f 5f 54 41 47 5f 49 4d 50  he.    __TAG_IMP
0340: 4c 20 3d 20 7b 7d 2c 0a 20 20 20 20 59 49 45 4c  L = {},.    YIEL
0350: 44 5f 54 41 47 20 3d 20 27 79 69 65 6c 64 27 2c  D_TAG = 'yield',
0360: 0a 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a  ..    /**.     *
0370: 20 43 6f 6e 73 74 0a 20 20 20 20 20 2a 2f 0a 20   Const.     */. 
0380: 20 20 20 47 4c 4f 42 41 4c 5f 4d 49 58 49 4e 20     GLOBAL_MIXIN 
0390: 3d 20 27 5f 5f 67 6c 6f 62 61 6c 5f 6d 69 78 69  = '__global_mixi
03a0: 6e 27 2c 0a 0a 20 20 20 20 2f 2f 20 72 69 6f 74  n',..    // riot
03b0: 20 73 70 65 63 69 66 69 63 20 70 72 65 66 69 78   specific prefix
03c0: 65 73 20 6f 72 20 61 74 74 72 69 62 75 74 65 73  es or attributes
03d0: 0a 20 20 20 20 41 54 54 52 53 5f 50 52 45 46 49  .    ATTRS_PREFI
03e0: 58 20 3d 20 27 72 69 6f 74 2d 27 2c 0a 0a 20 20  X = 'riot-',..  
03f0: 20 20 2f 2f 20 52 69 6f 74 20 44 69 72 65 63 74    // Riot Direct
0400: 69 76 65 73 0a 20 20 20 20 52 45 46 5f 44 49 52  ives.    REF_DIR
0410: 45 43 54 49 56 45 53 20 3d 20 5b 27 72 65 66 27  ECTIVES = ['ref'
0420: 2c 20 27 64 61 74 61 2d 72 65 66 27 5d 2c 0a 20  , 'data-ref'],. 
0430: 20 20 20 49 53 5f 44 49 52 45 43 54 49 56 45 20     IS_DIRECTIVE 
0440: 3d 20 27 64 61 74 61 2d 69 73 27 2c 0a 20 20 20  = 'data-is',.   
0450: 20 43 4f 4e 44 49 54 49 4f 4e 41 4c 5f 44 49 52   CONDITIONAL_DIR
0460: 45 43 54 49 56 45 20 3d 20 27 69 66 27 2c 0a 20  ECTIVE = 'if',. 
0470: 20 20 20 4c 4f 4f 50 5f 44 49 52 45 43 54 49 56     LOOP_DIRECTIV
0480: 45 20 3d 20 27 65 61 63 68 27 2c 0a 20 20 20 20  E = 'each',.    
0490: 4c 4f 4f 50 5f 4e 4f 5f 52 45 4f 52 44 45 52 5f  LOOP_NO_REORDER_
04a0: 44 49 52 45 43 54 49 56 45 20 3d 20 27 6e 6f 2d  DIRECTIVE = 'no-
04b0: 72 65 6f 72 64 65 72 27 2c 0a 20 20 20 20 53 48  reorder',.    SH
04c0: 4f 57 5f 44 49 52 45 43 54 49 56 45 20 3d 20 27  OW_DIRECTIVE = '
04d0: 73 68 6f 77 27 2c 0a 20 20 20 20 48 49 44 45 5f  show',.    HIDE_
04e0: 44 49 52 45 43 54 49 56 45 20 3d 20 27 68 69 64  DIRECTIVE = 'hid
04f0: 65 27 2c 0a 20 20 20 20 4b 45 59 5f 44 49 52 45  e',.    KEY_DIRE
0500: 43 54 49 56 45 20 3d 20 27 6b 65 79 27 2c 0a 20  CTIVE = 'key',. 
0510: 20 20 20 52 49 4f 54 5f 45 56 45 4e 54 53 5f 4b     RIOT_EVENTS_K
0520: 45 59 20 3d 20 27 5f 5f 72 69 6f 74 2d 65 76 65  EY = '__riot-eve
0530: 6e 74 73 5f 5f 27 2c 0a 0a 20 20 20 20 2f 2f 20  nts__',..    // 
0540: 66 6f 72 20 74 79 70 65 6f 66 20 3d 3d 20 27 27  for typeof == ''
0550: 20 63 6f 6d 70 61 72 69 73 6f 6e 73 0a 20 20 20   comparisons.   
0560: 20 54 5f 53 54 52 49 4e 47 20 3d 20 27 73 74 72   T_STRING = 'str
0570: 69 6e 67 27 2c 0a 20 20 20 20 54 5f 4f 42 4a 45  ing',.    T_OBJE
0580: 43 54 20 3d 20 27 6f 62 6a 65 63 74 27 2c 0a 20  CT = 'object',. 
0590: 20 20 20 54 5f 55 4e 44 45 46 20 20 3d 20 27 75     T_UNDEF  = 'u
05a0: 6e 64 65 66 69 6e 65 64 27 2c 0a 20 20 20 20 54  ndefined',.    T
05b0: 5f 46 55 4e 43 54 49 4f 4e 20 3d 20 27 66 75 6e  _FUNCTION = 'fun
05c0: 63 74 69 6f 6e 27 2c 0a 0a 20 20 20 20 58 4c 49  ction',..    XLI
05d0: 4e 4b 5f 4e 53 20 3d 20 27 68 74 74 70 3a 2f 2f  NK_NS = 'http://
05e0: 77 77 77 2e 77 33 2e 6f 72 67 2f 31 39 39 39 2f  www.w3.org/1999/
05f0: 78 6c 69 6e 6b 27 2c 0a 20 20 20 20 53 56 47 5f  xlink',.    SVG_
0600: 4e 53 20 3d 20 27 68 74 74 70 3a 2f 2f 77 77 77  NS = 'http://www
0610: 2e 77 33 2e 6f 72 67 2f 32 30 30 30 2f 73 76 67  .w3.org/2000/svg
0620: 27 2c 0a 20 20 20 20 58 4c 49 4e 4b 5f 52 45 47  ',.    XLINK_REG
0630: 45 58 20 3d 20 2f 5e 78 6c 69 6e 6b 3a 28 5c 77  EX = /^xlink:(\w
0640: 2b 29 2f 2c 0a 0a 20 20 20 20 57 49 4e 20 3d 20  +)/,..    WIN = 
0650: 74 79 70 65 6f 66 20 77 69 6e 64 6f 77 20 3d 3d  typeof window ==
0660: 3d 20 54 5f 55 4e 44 45 46 20 3f 20 2f 2a 20 69  = T_UNDEF ? /* i
0670: 73 74 61 6e 62 75 6c 20 69 67 6e 6f 72 65 20 6e  stanbul ignore n
0680: 65 78 74 20 2a 2f 20 75 6e 64 65 66 69 6e 65 64  ext */ undefined
0690: 20 3a 20 77 69 6e 64 6f 77 2c 0a 0a 20 20 20 20   : window,..    
06a0: 2f 2f 20 73 70 65 63 69 61 6c 20 6e 61 74 69 76  // special nativ
06b0: 65 20 74 61 67 73 20 74 68 61 74 20 63 61 6e 6e  e tags that cann
06c0: 6f 74 20 62 65 20 74 72 65 61 74 65 64 20 6c 69  ot be treated li
06d0: 6b 65 20 74 68 65 20 6f 74 68 65 72 73 0a 20 20  ke the others.  
06e0: 20 20 52 45 5f 53 50 45 43 49 41 4c 5f 54 41 47    RE_SPECIAL_TAG
06f0: 53 20 3d 20 2f 5e 28 3f 3a 74 28 3f 3a 62 6f 64  S = /^(?:t(?:bod
0700: 79 7c 68 65 61 64 7c 66 6f 6f 74 7c 5b 72 68 64  y|head|foot|[rhd
0710: 5d 29 7c 63 61 70 74 69 6f 6e 7c 63 6f 6c 28 3f  ])|caption|col(?
0720: 3a 67 72 6f 75 70 29 3f 7c 6f 70 74 28 3f 3a 69  :group)?|opt(?:i
0730: 6f 6e 7c 67 72 6f 75 70 29 29 24 2f 2c 0a 20 20  on|group))$/,.  
0740: 20 20 52 45 5f 53 50 45 43 49 41 4c 5f 54 41 47    RE_SPECIAL_TAG
0750: 53 5f 4e 4f 5f 4f 50 54 49 4f 4e 20 3d 20 2f 5e  S_NO_OPTION = /^
0760: 28 3f 3a 74 28 3f 3a 62 6f 64 79 7c 68 65 61 64  (?:t(?:body|head
0770: 7c 66 6f 6f 74 7c 5b 72 68 64 5d 29 7c 63 61 70  |foot|[rhd])|cap
0780: 74 69 6f 6e 7c 63 6f 6c 28 3f 3a 67 72 6f 75 70  tion|col(?:group
0790: 29 3f 29 24 2f 2c 0a 20 20 20 20 52 45 5f 45 56  )?)$/,.    RE_EV
07a0: 45 4e 54 53 5f 50 52 45 46 49 58 20 3d 20 2f 5e  ENTS_PREFIX = /^
07b0: 6f 6e 2f 2c 0a 20 20 20 20 52 45 5f 48 54 4d 4c  on/,.    RE_HTML
07c0: 5f 41 54 54 52 53 20 3d 20 2f 28 5b 2d 5c 77 5d  _ATTRS = /([-\w]
07d0: 2b 29 20 3f 3d 20 3f 28 3f 3a 22 28 5b 5e 22 5d  +) ?= ?(?:"([^"]
07e0: 2a 29 7c 27 28 5b 5e 27 5d 2a 29 7c 28 7b 5b 5e  *)|'([^']*)|({[^
07f0: 7d 5d 2a 7d 29 29 2f 67 2c 0a 20 20 20 20 2f 2f  }]*}))/g,.    //
0800: 20 73 6f 6d 65 20 44 4f 4d 20 61 74 74 72 69 62   some DOM attrib
0810: 75 74 65 73 20 6d 75 73 74 20 62 65 20 6e 6f 72  utes must be nor
0820: 6d 61 6c 69 7a 65 64 0a 20 20 20 20 43 41 53 45  malized.    CASE
0830: 5f 53 45 4e 53 49 54 49 56 45 5f 41 54 54 52 49  _SENSITIVE_ATTRI
0840: 42 55 54 45 53 20 3d 20 7b 0a 20 20 20 20 20 20  BUTES = {.      
0850: 27 76 69 65 77 62 6f 78 27 3a 20 27 76 69 65 77  'viewbox': 'view
0860: 42 6f 78 27 2c 0a 20 20 20 20 20 20 27 70 72 65  Box',.      'pre
0870: 73 65 72 76 65 61 73 70 65 63 74 72 61 74 69 6f  serveaspectratio
0880: 27 3a 20 27 70 72 65 73 65 72 76 65 41 73 70 65  ': 'preserveAspe
0890: 63 74 52 61 74 69 6f 27 0a 20 20 20 20 7d 2c 0a  ctRatio'.    },.
08a0: 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 4d      /**.     * M
08b0: 61 74 63 68 65 73 20 62 6f 6f 6c 65 61 6e 20 48  atches boolean H
08c0: 54 4d 4c 20 61 74 74 72 69 62 75 74 65 73 20 69  TML attributes i
08d0: 6e 20 74 68 65 20 72 69 6f 74 20 74 61 67 20 64  n the riot tag d
08e0: 65 66 69 6e 69 74 69 6f 6e 2e 0a 20 20 20 20 20  efinition..     
08f0: 2a 20 57 69 74 68 20 61 20 6c 6f 6e 67 20 6c 69  * With a long li
0900: 73 74 20 6c 69 6b 65 20 74 68 69 73 2c 20 61 20  st like this, a 
0910: 72 65 67 65 78 20 69 73 20 66 61 73 74 65 72 20  regex is faster 
0920: 74 68 61 6e 20 60 5b 5d 2e 69 6e 64 65 78 4f 66  than `[].indexOf
0930: 60 20 69 6e 20 6d 6f 73 74 20 62 72 6f 77 73 65  ` in most browse
0940: 72 73 2e 0a 20 20 20 20 20 2a 20 40 63 6f 6e 73  rs..     * @cons
0950: 74 20 7b 52 65 67 45 78 70 7d 0a 20 20 20 20 20  t {RegExp}.     
0960: 2a 20 40 73 65 65 20 5b 61 74 74 72 69 62 75 74  * @see [attribut
0970: 65 73 2e 6d 64 5d 28 68 74 74 70 73 3a 2f 2f 67  es.md](https://g
0980: 69 74 68 75 62 2e 63 6f 6d 2f 72 69 6f 74 2f 63  ithub.com/riot/c
0990: 6f 6d 70 69 6c 65 72 2f 62 6c 6f 62 2f 64 65 76  ompiler/blob/dev
09a0: 2f 64 6f 63 2f 61 74 74 72 69 62 75 74 65 73 2e  /doc/attributes.
09b0: 6d 64 29 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20  md).     */.    
09c0: 52 45 5f 42 4f 4f 4c 5f 41 54 54 52 53 20 3d 20  RE_BOOL_ATTRS = 
09d0: 2f 5e 28 3f 3a 64 69 73 61 62 6c 65 64 7c 63 68  /^(?:disabled|ch
09e0: 65 63 6b 65 64 7c 72 65 61 64 6f 6e 6c 79 7c 72  ecked|readonly|r
09f0: 65 71 75 69 72 65 64 7c 61 6c 6c 6f 77 66 75 6c  equired|allowful
0a00: 6c 73 63 72 65 65 6e 7c 61 75 74 6f 28 3f 3a 66  lscreen|auto(?:f
0a10: 6f 63 75 73 7c 70 6c 61 79 29 7c 63 6f 6d 70 61  ocus|play)|compa
0a20: 63 74 7c 63 6f 6e 74 72 6f 6c 73 7c 64 65 66 61  ct|controls|defa
0a30: 75 6c 74 7c 66 6f 72 6d 6e 6f 76 61 6c 69 64 61  ult|formnovalida
0a40: 74 65 7c 68 69 64 64 65 6e 7c 69 73 6d 61 70 7c  te|hidden|ismap|
0a50: 69 74 65 6d 73 63 6f 70 65 7c 6c 6f 6f 70 7c 6d  itemscope|loop|m
0a60: 75 6c 74 69 70 6c 65 7c 6d 75 74 65 64 7c 6e 6f  ultiple|muted|no
0a70: 28 3f 3a 72 65 73 69 7a 65 7c 73 68 61 64 65 7c  (?:resize|shade|
0a80: 76 61 6c 69 64 61 74 65 7c 77 72 61 70 29 3f 7c  validate|wrap)?|
0a90: 6f 70 65 6e 7c 72 65 76 65 72 73 65 64 7c 73 65  open|reversed|se
0aa0: 61 6d 6c 65 73 73 7c 73 65 6c 65 63 74 65 64 7c  amless|selected|
0ab0: 73 6f 72 74 61 62 6c 65 7c 74 72 75 65 73 70 65  sortable|truespe
0ac0: 65 64 7c 74 79 70 65 6d 75 73 74 6d 61 74 63 68  ed|typemustmatch
0ad0: 29 24 2f 2c 0a 20 20 20 20 2f 2f 20 76 65 72 73  )$/,.    // vers
0ae0: 69 6f 6e 23 20 66 6f 72 20 49 45 20 38 2d 31 31  ion# for IE 8-11
0af0: 2c 20 30 20 66 6f 72 20 6f 74 68 65 72 73 0a 20  , 0 for others. 
0b00: 20 20 20 49 45 5f 56 45 52 53 49 4f 4e 20 3d 20     IE_VERSION = 
0b10: 28 57 49 4e 20 26 26 20 57 49 4e 2e 64 6f 63 75  (WIN && WIN.docu
0b20: 6d 65 6e 74 20 7c 7c 20 2f 2a 20 69 73 74 61 6e  ment || /* istan
0b30: 62 75 6c 20 69 67 6e 6f 72 65 20 6e 65 78 74 20  bul ignore next 
0b40: 2a 2f 20 7b 7d 29 2e 64 6f 63 75 6d 65 6e 74 4d  */ {}).documentM
0b50: 6f 64 65 20 7c 20 30 3b 0a 0a 20 20 2f 2a 2a 0a  ode | 0;..  /**.
0b60: 20 20 20 2a 20 43 72 65 61 74 65 20 61 20 67 65     * Create a ge
0b70: 6e 65 72 69 63 20 44 4f 4d 20 6e 6f 64 65 0a 20  neric DOM node. 
0b80: 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 53    * @param   { S
0b90: 74 72 69 6e 67 20 7d 20 6e 61 6d 65 20 2d 20 6e  tring } name - n
0ba0: 61 6d 65 20 6f 66 20 74 68 65 20 44 4f 4d 20 6e  ame of the DOM n
0bb0: 6f 64 65 20 77 65 20 77 61 6e 74 20 74 6f 20 63  ode we want to c
0bc0: 72 65 61 74 65 0a 20 20 20 2a 20 40 72 65 74 75  reate.   * @retu
0bd0: 72 6e 73 20 7b 20 4f 62 6a 65 63 74 20 7d 20 44  rns { Object } D
0be0: 4f 4d 20 6e 6f 64 65 20 6a 75 73 74 20 63 72 65  OM node just cre
0bf0: 61 74 65 64 0a 20 20 20 2a 2f 0a 20 20 66 75 6e  ated.   */.  fun
0c00: 63 74 69 6f 6e 20 6d 61 6b 65 45 6c 65 6d 65 6e  ction makeElemen
0c10: 74 28 6e 61 6d 65 29 20 7b 0a 20 20 20 20 72 65  t(name) {.    re
0c20: 74 75 72 6e 20 6e 61 6d 65 20 3d 3d 3d 20 27 73  turn name === 's
0c30: 76 67 27 20 3f 20 64 6f 63 75 6d 65 6e 74 2e 63  vg' ? document.c
0c40: 72 65 61 74 65 45 6c 65 6d 65 6e 74 4e 53 28 53  reateElementNS(S
0c50: 56 47 5f 4e 53 2c 20 6e 61 6d 65 29 20 3a 20 64  VG_NS, name) : d
0c60: 6f 63 75 6d 65 6e 74 2e 63 72 65 61 74 65 45 6c  ocument.createEl
0c70: 65 6d 65 6e 74 28 6e 61 6d 65 29 0a 20 20 7d 0a  ement(name).  }.
0c80: 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 53 65 74 20  .  /**.   * Set 
0c90: 61 6e 79 20 44 4f 4d 20 61 74 74 72 69 62 75 74  any DOM attribut
0ca0: 65 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 7b 20  e.   * @param { 
0cb0: 4f 62 6a 65 63 74 20 7d 20 64 6f 6d 20 2d 20 44  Object } dom - D
0cc0: 4f 4d 20 6e 6f 64 65 20 77 65 20 77 61 6e 74 20  OM node we want 
0cd0: 74 6f 20 75 70 64 61 74 65 0a 20 20 20 2a 20 40  to update.   * @
0ce0: 70 61 72 61 6d 20 7b 20 53 74 72 69 6e 67 20 7d  param { String }
0cf0: 20 6e 61 6d 65 20 2d 20 6e 61 6d 65 20 6f 66 20   name - name of 
0d00: 74 68 65 20 70 72 6f 70 65 72 74 79 20 77 65 20  the property we 
0d10: 77 61 6e 74 20 74 6f 20 73 65 74 0a 20 20 20 2a  want to set.   *
0d20: 20 40 70 61 72 61 6d 20 7b 20 53 74 72 69 6e 67   @param { String
0d30: 20 7d 20 76 61 6c 20 2d 20 76 61 6c 75 65 20 6f   } val - value o
0d40: 66 20 74 68 65 20 70 72 6f 70 65 72 74 79 20 77  f the property w
0d50: 65 20 77 61 6e 74 20 74 6f 20 73 65 74 0a 20 20  e want to set.  
0d60: 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 73   */.  function s
0d70: 65 74 41 74 74 72 69 62 75 74 65 28 64 6f 6d 2c  etAttribute(dom,
0d80: 20 6e 61 6d 65 2c 20 76 61 6c 29 20 7b 0a 20 20   name, val) {.  
0d90: 20 20 76 61 72 20 78 6c 69 6e 6b 20 3d 20 58 4c    var xlink = XL
0da0: 49 4e 4b 5f 52 45 47 45 58 2e 65 78 65 63 28 6e  INK_REGEX.exec(n
0db0: 61 6d 65 29 3b 0a 20 20 20 20 69 66 20 28 78 6c  ame);.    if (xl
0dc0: 69 6e 6b 20 26 26 20 78 6c 69 6e 6b 5b 31 5d 29  ink && xlink[1])
0dd0: 0a 20 20 20 20 20 20 7b 20 64 6f 6d 2e 73 65 74  .      { dom.set
0de0: 41 74 74 72 69 62 75 74 65 4e 53 28 58 4c 49 4e  AttributeNS(XLIN
0df0: 4b 5f 4e 53 2c 20 78 6c 69 6e 6b 5b 31 5d 2c 20  K_NS, xlink[1], 
0e00: 76 61 6c 29 3b 20 7d 0a 20 20 20 20 65 6c 73 65  val); }.    else
0e10: 0a 20 20 20 20 20 20 7b 20 64 6f 6d 2e 73 65 74  .      { dom.set
0e20: 41 74 74 72 69 62 75 74 65 28 6e 61 6d 65 2c 20  Attribute(name, 
0e30: 76 61 6c 29 3b 20 7d 0a 20 20 7d 0a 0a 20 20 76  val); }.  }..  v
0e40: 61 72 20 73 74 79 6c 65 4e 6f 64 65 3b 0a 20 20  ar styleNode;.  
0e50: 2f 2f 20 43 72 65 61 74 65 20 63 61 63 68 65 20  // Create cache 
0e60: 61 6e 64 20 73 68 6f 72 74 63 75 74 20 74 6f 20  and shortcut to 
0e70: 74 68 65 20 63 6f 72 72 65 63 74 20 70 72 6f 70  the correct prop
0e80: 65 72 74 79 0a 20 20 76 61 72 20 63 73 73 54 65  erty.  var cssTe
0e90: 78 74 50 72 6f 70 3b 0a 20 20 76 61 72 20 62 79  xtProp;.  var by
0ea0: 4e 61 6d 65 20 3d 20 7b 7d 3b 0a 20 20 76 61 72  Name = {};.  var
0eb0: 20 6e 65 65 64 73 49 6e 6a 65 63 74 20 3d 20 66   needsInject = f
0ec0: 61 6c 73 65 3b 0a 0a 20 20 2f 2f 20 73 6b 69 70  alse;..  // skip
0ed0: 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 63   the following c
0ee0: 6f 64 65 20 6f 6e 20 74 68 65 20 73 65 72 76 65  ode on the serve
0ef0: 72 0a 20 20 69 66 20 28 57 49 4e 29 20 7b 0a 20  r.  if (WIN) {. 
0f00: 20 20 20 73 74 79 6c 65 4e 6f 64 65 20 3d 20 28     styleNode = (
0f10: 28 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20  (function () {. 
0f20: 20 20 20 20 20 2f 2f 20 63 72 65 61 74 65 20 61       // create a
0f30: 20 6e 65 77 20 73 74 79 6c 65 20 65 6c 65 6d 65   new style eleme
0f40: 6e 74 20 77 69 74 68 20 74 68 65 20 63 6f 72 72  nt with the corr
0f50: 65 63 74 20 74 79 70 65 0a 20 20 20 20 20 20 76  ect type.      v
0f60: 61 72 20 6e 65 77 4e 6f 64 65 20 3d 20 6d 61 6b  ar newNode = mak
0f70: 65 45 6c 65 6d 65 6e 74 28 27 73 74 79 6c 65 27  eElement('style'
0f80: 29 3b 0a 20 20 20 20 20 20 2f 2f 20 72 65 70 6c  );.      // repl
0f90: 61 63 65 20 61 6e 79 20 75 73 65 72 20 6e 6f 64  ace any user nod
0fa0: 65 20 6f 72 20 69 6e 73 65 72 74 20 74 68 65 20  e or insert the 
0fb0: 6e 65 77 20 6f 6e 65 20 69 6e 74 6f 20 74 68 65  new one into the
0fc0: 20 68 65 61 64 0a 20 20 20 20 20 20 76 61 72 20   head.      var 
0fd0: 75 73 65 72 4e 6f 64 65 20 3d 20 24 28 27 73 74  userNode = $('st
0fe0: 79 6c 65 5b 74 79 70 65 3d 72 69 6f 74 5d 27 29  yle[type=riot]')
0ff0: 3b 0a 0a 20 20 20 20 20 20 73 65 74 41 74 74 72  ;..      setAttr
1000: 69 62 75 74 65 28 6e 65 77 4e 6f 64 65 2c 20 27  ibute(newNode, '
1010: 74 79 70 65 27 2c 20 27 74 65 78 74 2f 63 73 73  type', 'text/css
1020: 27 29 3b 0a 20 20 20 20 20 20 2f 2a 20 69 73 74  ');.      /* ist
1030: 61 6e 62 75 6c 20 69 67 6e 6f 72 65 20 6e 65 78  anbul ignore nex
1040: 74 20 2a 2f 0a 20 20 20 20 20 20 69 66 20 28 75  t */.      if (u
1050: 73 65 72 4e 6f 64 65 29 20 7b 0a 20 20 20 20 20  serNode) {.     
1060: 20 20 20 69 66 20 28 75 73 65 72 4e 6f 64 65 2e     if (userNode.
1070: 69 64 29 20 7b 20 6e 65 77 4e 6f 64 65 2e 69 64  id) { newNode.id
1080: 20 3d 20 75 73 65 72 4e 6f 64 65 2e 69 64 3b 20   = userNode.id; 
1090: 7d 0a 20 20 20 20 20 20 20 20 75 73 65 72 4e 6f  }.        userNo
10a0: 64 65 2e 70 61 72 65 6e 74 4e 6f 64 65 2e 72 65  de.parentNode.re
10b0: 70 6c 61 63 65 43 68 69 6c 64 28 6e 65 77 4e 6f  placeChild(newNo
10c0: 64 65 2c 20 75 73 65 72 4e 6f 64 65 29 3b 0a 20  de, userNode);. 
10d0: 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 20 64 6f       } else { do
10e0: 63 75 6d 65 6e 74 2e 68 65 61 64 2e 61 70 70 65  cument.head.appe
10f0: 6e 64 43 68 69 6c 64 28 6e 65 77 4e 6f 64 65 29  ndChild(newNode)
1100: 3b 20 7d 0a 0a 20 20 20 20 20 20 72 65 74 75 72  ; }..      retur
1110: 6e 20 6e 65 77 4e 6f 64 65 0a 20 20 20 20 7d 29  n newNode.    })
1120: 29 28 29 3b 0a 20 20 20 20 63 73 73 54 65 78 74  )();.    cssText
1130: 50 72 6f 70 20 3d 20 73 74 79 6c 65 4e 6f 64 65  Prop = styleNode
1140: 2e 73 74 79 6c 65 53 68 65 65 74 3b 0a 20 20 7d  .styleSheet;.  }
1150: 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 4f 62 6a  ..  /**.   * Obj
1160: 65 63 74 20 74 68 61 74 20 77 69 6c 6c 20 62 65  ect that will be
1170: 20 75 73 65 64 20 74 6f 20 69 6e 6a 65 63 74 20   used to inject 
1180: 61 6e 64 20 6d 61 6e 61 67 65 20 74 68 65 20 63  and manage the c
1190: 73 73 20 6f 66 20 65 76 65 72 79 20 74 61 67 20  ss of every tag 
11a0: 69 6e 73 74 61 6e 63 65 0a 20 20 20 2a 2f 0a 20  instance.   */. 
11b0: 20 76 61 72 20 73 74 79 6c 65 4d 61 6e 61 67 65   var styleManage
11c0: 72 20 3d 20 7b 0a 20 20 20 20 73 74 79 6c 65 4e  r = {.    styleN
11d0: 6f 64 65 3a 20 73 74 79 6c 65 4e 6f 64 65 2c 0a  ode: styleNode,.
11e0: 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 53      /**.     * S
11f0: 61 76 65 20 61 20 74 61 67 20 73 74 79 6c 65 20  ave a tag style 
1200: 74 6f 20 62 65 20 6c 61 74 65 72 20 69 6e 6a 65  to be later inje
1210: 63 74 65 64 20 69 6e 74 6f 20 44 4f 4d 0a 20 20  cted into DOM.  
1220: 20 20 20 2a 20 40 70 61 72 61 6d 20 7b 20 53 74     * @param { St
1230: 72 69 6e 67 20 7d 20 63 73 73 20 2d 20 63 73 73  ring } css - css
1240: 20 73 74 72 69 6e 67 0a 20 20 20 20 20 2a 20 40   string.     * @
1250: 70 61 72 61 6d 20 7b 20 53 74 72 69 6e 67 20 7d  param { String }
1260: 20 6e 61 6d 65 20 2d 20 69 66 20 69 74 27 73 20   name - if it's 
1270: 70 61 73 73 65 64 20 77 65 20 77 69 6c 6c 20 6d  passed we will m
1280: 61 70 20 74 68 65 20 63 73 73 20 74 6f 20 61 20  ap the css to a 
1290: 74 61 67 6e 61 6d 65 0a 20 20 20 20 20 2a 2f 0a  tagname.     */.
12a0: 20 20 20 20 61 64 64 3a 20 66 75 6e 63 74 69 6f      add: functio
12b0: 6e 20 61 64 64 28 63 73 73 2c 20 6e 61 6d 65 29  n add(css, name)
12c0: 20 7b 0a 20 20 20 20 20 20 62 79 4e 61 6d 65 5b   {.      byName[
12d0: 6e 61 6d 65 5d 20 3d 20 63 73 73 3b 0a 20 20 20  name] = css;.   
12e0: 20 20 20 6e 65 65 64 73 49 6e 6a 65 63 74 20 3d     needsInject =
12f0: 20 74 72 75 65 3b 0a 20 20 20 20 7d 2c 0a 20 20   true;.    },.  
1300: 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 49 6e 6a    /**.     * Inj
1310: 65 63 74 20 61 6c 6c 20 70 72 65 76 69 6f 75 73  ect all previous
1320: 6c 79 20 73 61 76 65 64 20 74 61 67 20 73 74 79  ly saved tag sty
1330: 6c 65 73 20 69 6e 74 6f 20 44 4f 4d 0a 20 20 20  les into DOM.   
1340: 20 20 2a 20 69 6e 6e 65 72 48 54 4d 4c 20 73 65    * innerHTML se
1350: 65 6d 73 20 73 6c 6f 77 3a 20 68 74 74 70 3a 2f  ems slow: http:/
1360: 2f 6a 73 70 65 72 66 2e 63 6f 6d 2f 72 69 6f 74  /jsperf.com/riot
1370: 2d 69 6e 73 65 72 74 2d 73 74 79 6c 65 0a 20 20  -insert-style.  
1380: 20 20 20 2a 2f 0a 20 20 20 20 69 6e 6a 65 63 74     */.    inject
1390: 3a 20 66 75 6e 63 74 69 6f 6e 20 69 6e 6a 65 63  : function injec
13a0: 74 28 29 20 7b 0a 20 20 20 20 20 20 69 66 20 28  t() {.      if (
13b0: 21 57 49 4e 20 7c 7c 20 21 6e 65 65 64 73 49 6e  !WIN || !needsIn
13c0: 6a 65 63 74 29 20 7b 20 72 65 74 75 72 6e 20 7d  ject) { return }
13d0: 0a 20 20 20 20 20 20 6e 65 65 64 73 49 6e 6a 65  .      needsInje
13e0: 63 74 20 3d 20 66 61 6c 73 65 3b 0a 20 20 20 20  ct = false;.    
13f0: 20 20 76 61 72 20 73 74 79 6c 65 20 3d 20 4f 62    var style = Ob
1400: 6a 65 63 74 2e 6b 65 79 73 28 62 79 4e 61 6d 65  ject.keys(byName
1410: 29 0a 20 20 20 20 20 20 20 20 2e 6d 61 70 28 66  ).        .map(f
1420: 75 6e 63 74 69 6f 6e 20 28 6b 29 20 7b 20 72 65  unction (k) { re
1430: 74 75 72 6e 20 62 79 4e 61 6d 65 5b 6b 5d 3b 20  turn byName[k]; 
1440: 7d 29 0a 20 20 20 20 20 20 20 20 2e 6a 6f 69 6e  }).        .join
1450: 28 27 5c 6e 27 29 3b 0a 20 20 20 20 20 20 2f 2a  ('\n');.      /*
1460: 20 69 73 74 61 6e 62 75 6c 20 69 67 6e 6f 72 65   istanbul ignore
1470: 20 6e 65 78 74 20 2a 2f 0a 20 20 20 20 20 20 69   next */.      i
1480: 66 20 28 63 73 73 54 65 78 74 50 72 6f 70 29 20  f (cssTextProp) 
1490: 7b 20 63 73 73 54 65 78 74 50 72 6f 70 2e 63 73  { cssTextProp.cs
14a0: 73 54 65 78 74 20 3d 20 73 74 79 6c 65 3b 20 7d  sText = style; }
14b0: 0a 20 20 20 20 20 20 65 6c 73 65 20 7b 20 73 74  .      else { st
14c0: 79 6c 65 4e 6f 64 65 2e 69 6e 6e 65 72 48 54 4d  yleNode.innerHTM
14d0: 4c 20 3d 20 73 74 79 6c 65 3b 20 7d 0a 20 20 20  L = style; }.   
14e0: 20 7d 2c 0a 0a 20 20 20 20 2f 2a 2a 0a 20 20 20   },..    /**.   
14f0: 20 20 2a 20 52 65 6d 6f 76 65 20 61 20 74 61 67    * Remove a tag
1500: 20 73 74 79 6c 65 20 6f 66 20 69 6e 6a 65 63 74   style of inject
1510: 65 64 20 44 4f 4d 20 6c 61 74 65 72 2e 0a 20 20  ed DOM later..  
1520: 20 20 20 2a 20 40 70 61 72 61 6d 20 7b 53 74 72     * @param {Str
1530: 69 6e 67 7d 20 6e 61 6d 65 20 61 20 72 65 67 69  ing} name a regi
1540: 73 74 65 72 65 64 20 74 61 67 6e 61 6d 65 0a 20  stered tagname. 
1550: 20 20 20 20 2a 2f 0a 20 20 20 20 72 65 6d 6f 76      */.    remov
1560: 65 3a 20 66 75 6e 63 74 69 6f 6e 20 72 65 6d 6f  e: function remo
1570: 76 65 28 6e 61 6d 65 29 20 7b 0a 20 20 20 20 20  ve(name) {.     
1580: 20 64 65 6c 65 74 65 20 62 79 4e 61 6d 65 5b 6e   delete byName[n
1590: 61 6d 65 5d 3b 0a 20 20 20 20 20 20 6e 65 65 64  ame];.      need
15a0: 73 49 6e 6a 65 63 74 20 3d 20 74 72 75 65 3b 0a  sInject = true;.
15b0: 20 20 20 20 7d 0a 20 20 7d 3b 0a 0a 20 20 2f 2a      }.  };..  /*
15c0: 2a 0a 20 20 20 2a 20 54 68 65 20 72 69 6f 74 20  *.   * The riot 
15d0: 74 65 6d 70 6c 61 74 65 20 65 6e 67 69 6e 65 0a  template engine.
15e0: 20 20 20 2a 20 40 76 65 72 73 69 6f 6e 20 76 33     * @version v3
15f0: 2e 30 2e 38 0a 20 20 20 2a 2f 0a 0a 20 20 2f 2a  .0.8.   */..  /*
1600: 20 69 73 74 61 6e 62 75 6c 20 69 67 6e 6f 72 65   istanbul ignore
1610: 20 6e 65 78 74 20 2a 2f 0a 20 20 76 61 72 20 73   next */.  var s
1620: 6b 69 70 52 65 67 65 78 20 3d 20 28 66 75 6e 63  kipRegex = (func
1630: 74 69 6f 6e 20 28 29 20 7b 20 2f 2f 65 73 6c 69  tion () { //esli
1640: 6e 74 2d 64 69 73 61 62 6c 65 2d 6c 69 6e 65 20  nt-disable-line 
1650: 6e 6f 2d 75 6e 75 73 65 64 2d 76 61 72 73 0a 0a  no-unused-vars..
1660: 20 20 20 20 76 61 72 20 62 65 66 6f 72 65 52 65      var beforeRe
1670: 43 68 61 72 73 20 3d 20 27 5b 7b 28 2c 3b 3a 3f  Chars = '[{(,;:?
1680: 3d 7c 26 21 5e 7e 3e 25 2a 2f 27 3b 0a 0a 20 20  =|&!^~>%*/';..  
1690: 20 20 76 61 72 20 62 65 66 6f 72 65 52 65 57 6f    var beforeReWo
16a0: 72 64 73 20 3d 20 5b 0a 20 20 20 20 20 20 27 63  rds = [.      'c
16b0: 61 73 65 27 2c 0a 20 20 20 20 20 20 27 64 65 66  ase',.      'def
16c0: 61 75 6c 74 27 2c 0a 20 20 20 20 20 20 27 64 6f  ault',.      'do
16d0: 27 2c 0a 20 20 20 20 20 20 27 65 6c 73 65 27 2c  ',.      'else',
16e0: 0a 20 20 20 20 20 20 27 69 6e 27 2c 0a 20 20 20  .      'in',.   
16f0: 20 20 20 27 69 6e 73 74 61 6e 63 65 6f 66 27 2c     'instanceof',
1700: 0a 20 20 20 20 20 20 27 70 72 65 66 69 78 27 2c  .      'prefix',
1710: 0a 20 20 20 20 20 20 27 72 65 74 75 72 6e 27 2c  .      'return',
1720: 0a 20 20 20 20 20 20 27 74 79 70 65 6f 66 27 2c  .      'typeof',
1730: 0a 20 20 20 20 20 20 27 76 6f 69 64 27 2c 0a 20  .      'void',. 
1740: 20 20 20 20 20 27 79 69 65 6c 64 27 0a 20 20 20       'yield'.   
1750: 20 5d 3b 0a 0a 20 20 20 20 76 61 72 20 77 6f 72   ];..    var wor
1760: 64 73 4c 61 73 74 43 68 61 72 20 3d 20 62 65 66  dsLastChar = bef
1770: 6f 72 65 52 65 57 6f 72 64 73 2e 72 65 64 75 63  oreReWords.reduc
1780: 65 28 66 75 6e 63 74 69 6f 6e 20 28 73 2c 20 77  e(function (s, w
1790: 29 20 7b 0a 20 20 20 20 20 20 72 65 74 75 72 6e  ) {.      return
17a0: 20 73 20 2b 20 77 2e 73 6c 69 63 65 28 2d 31 29   s + w.slice(-1)
17b0: 0a 20 20 20 20 7d 2c 20 27 27 29 3b 0a 0a 20 20  .    }, '');..  
17c0: 20 20 76 61 72 20 52 45 5f 52 45 47 45 58 20 3d    var RE_REGEX =
17d0: 20 2f 5e 5c 2f 28 3f 3d 5b 5e 2a 3e 2f 5d 29 5b   /^\/(?=[^*>/])[
17e0: 5e 5b 2f 5c 5c 5d 2a 28 3f 3a 28 3f 3a 5c 5c 2e  ^[/\\]*(?:(?:\\.
17f0: 7c 5c 5b 28 3f 3a 5c 5c 2e 7c 5b 5e 5c 5d 5c 5c  |\[(?:\\.|[^\]\\
1800: 5d 2a 29 2a 5c 5d 29 5b 5e 5b 5c 5c 2f 5d 2a 29  ]*)*\])[^[\\/]*)
1810: 2a 3f 5c 2f 5b 67 69 6d 75 79 5d 2a 2f 3b 0a 20  *?\/[gimuy]*/;. 
1820: 20 20 20 76 61 72 20 52 45 5f 56 4e 5f 43 48 41     var RE_VN_CHA
1830: 52 20 3d 20 2f 5b 24 5c 77 5d 2f 3b 0a 0a 20 20  R = /[$\w]/;..  
1840: 20 20 66 75 6e 63 74 69 6f 6e 20 70 72 65 76 20    function prev 
1850: 28 63 6f 64 65 2c 20 70 6f 73 29 20 7b 0a 20 20  (code, pos) {.  
1860: 20 20 20 20 77 68 69 6c 65 20 28 2d 2d 70 6f 73      while (--pos
1870: 20 3e 3d 20 30 20 26 26 20 2f 5c 73 2f 2e 74 65   >= 0 && /\s/.te
1880: 73 74 28 63 6f 64 65 5b 70 6f 73 5d 29 29 7b 20  st(code[pos])){ 
1890: 7d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 70  }.      return p
18a0: 6f 73 0a 20 20 20 20 7d 0a 0a 20 20 20 20 66 75  os.    }..    fu
18b0: 6e 63 74 69 6f 6e 20 5f 73 6b 69 70 52 65 67 65  nction _skipRege
18c0: 78 20 28 63 6f 64 65 2c 20 73 74 61 72 74 29 20  x (code, start) 
18d0: 7b 0a 0a 20 20 20 20 20 20 76 61 72 20 72 65 20  {..      var re 
18e0: 3d 20 2f 2e 2a 2f 67 3b 0a 20 20 20 20 20 20 76  = /.*/g;.      v
18f0: 61 72 20 70 6f 73 20 3d 20 72 65 2e 6c 61 73 74  ar pos = re.last
1900: 49 6e 64 65 78 20 3d 20 73 74 61 72 74 2b 2b 3b  Index = start++;
1910: 0a 20 20 20 20 20 20 76 61 72 20 6d 61 74 63 68  .      var match
1920: 20 3d 20 72 65 2e 65 78 65 63 28 63 6f 64 65 29   = re.exec(code)
1930: 5b 30 5d 2e 6d 61 74 63 68 28 52 45 5f 52 45 47  [0].match(RE_REG
1940: 45 58 29 3b 0a 0a 20 20 20 20 20 20 69 66 20 28  EX);..      if (
1950: 6d 61 74 63 68 29 20 7b 0a 20 20 20 20 20 20 20  match) {.       
1960: 20 76 61 72 20 6e 65 78 74 20 3d 20 70 6f 73 20   var next = pos 
1970: 2b 20 6d 61 74 63 68 5b 30 5d 2e 6c 65 6e 67 74  + match[0].lengt
1980: 68 3b 0a 0a 20 20 20 20 20 20 20 20 70 6f 73 20  h;..        pos 
1990: 3d 20 70 72 65 76 28 63 6f 64 65 2c 20 70 6f 73  = prev(code, pos
19a0: 29 3b 0a 20 20 20 20 20 20 20 20 76 61 72 20 63  );.        var c
19b0: 20 3d 20 63 6f 64 65 5b 70 6f 73 5d 3b 0a 0a 20   = code[pos];.. 
19c0: 20 20 20 20 20 20 20 69 66 20 28 70 6f 73 20 3c         if (pos <
19d0: 20 30 20 7c 7c 20 7e 62 65 66 6f 72 65 52 65 43   0 || ~beforeReC
19e0: 68 61 72 73 2e 69 6e 64 65 78 4f 66 28 63 29 29  hars.indexOf(c))
19f0: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 72 65 74   {.          ret
1a00: 75 72 6e 20 6e 65 78 74 0a 20 20 20 20 20 20 20  urn next.       
1a10: 20 7d 0a 0a 20 20 20 20 20 20 20 20 69 66 20 28   }..        if (
1a20: 63 20 3d 3d 3d 20 27 2e 27 29 20 7b 0a 0a 20 20  c === '.') {..  
1a30: 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 64 65          if (code
1a40: 5b 70 6f 73 20 2d 20 31 5d 20 3d 3d 3d 20 27 2e  [pos - 1] === '.
1a50: 27 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  ') {.           
1a60: 20 73 74 61 72 74 20 3d 20 6e 65 78 74 3b 0a 20   start = next;. 
1a70: 20 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20           }..    
1a80: 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 63      } else if (c
1a90: 20 3d 3d 3d 20 27 2b 27 20 7c 7c 20 63 20 3d 3d   === '+' || c ==
1aa0: 3d 20 27 2d 27 29 20 7b 0a 0a 20 20 20 20 20 20  = '-') {..      
1ab0: 20 20 20 20 69 66 20 28 63 6f 64 65 5b 2d 2d 70      if (code[--p
1ac0: 6f 73 5d 20 21 3d 3d 20 63 20 7c 7c 0a 20 20 20  os] !== c ||.   
1ad0: 20 20 20 20 20 20 20 20 20 20 20 28 70 6f 73 20             (pos 
1ae0: 3d 20 70 72 65 76 28 63 6f 64 65 2c 20 70 6f 73  = prev(code, pos
1af0: 29 29 20 3c 20 30 20 7c 7c 0a 20 20 20 20 20 20  )) < 0 ||.      
1b00: 20 20 20 20 20 20 20 20 21 52 45 5f 56 4e 5f 43          !RE_VN_C
1b10: 48 41 52 2e 74 65 73 74 28 63 6f 64 65 5b 70 6f  HAR.test(code[po
1b20: 73 5d 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20  s])) {.         
1b30: 20 20 20 73 74 61 72 74 20 3d 20 6e 65 78 74 3b     start = next;
1b40: 0a 20 20 20 20 20 20 20 20 20 20 7d 0a 0a 20 20  .          }..  
1b50: 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20        } else if 
1b60: 28 7e 77 6f 72 64 73 4c 61 73 74 43 68 61 72 2e  (~wordsLastChar.
1b70: 69 6e 64 65 78 4f 66 28 63 29 29 20 7b 0a 0a 20  indexOf(c)) {.. 
1b80: 20 20 20 20 20 20 20 20 20 76 61 72 20 65 6e 64           var end
1b90: 20 3d 20 70 6f 73 20 2b 20 31 3b 0a 0a 20 20 20   = pos + 1;..   
1ba0: 20 20 20 20 20 20 20 77 68 69 6c 65 20 28 2d 2d         while (--
1bb0: 70 6f 73 20 3e 3d 20 30 20 26 26 20 52 45 5f 56  pos >= 0 && RE_V
1bc0: 4e 5f 43 48 41 52 2e 74 65 73 74 28 63 6f 64 65  N_CHAR.test(code
1bd0: 5b 70 6f 73 5d 29 29 7b 20 7d 0a 20 20 20 20 20  [pos])){ }.     
1be0: 20 20 20 20 20 69 66 20 28 7e 62 65 66 6f 72 65       if (~before
1bf0: 52 65 57 6f 72 64 73 2e 69 6e 64 65 78 4f 66 28  ReWords.indexOf(
1c00: 63 6f 64 65 2e 73 6c 69 63 65 28 70 6f 73 20 2b  code.slice(pos +
1c10: 20 31 2c 20 65 6e 64 29 29 29 20 7b 0a 20 20 20   1, end))) {.   
1c20: 20 20 20 20 20 20 20 20 20 73 74 61 72 74 20 3d           start =
1c30: 20 6e 65 78 74 3b 0a 20 20 20 20 20 20 20 20 20   next;.         
1c40: 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20   }.        }.   
1c50: 20 20 20 7d 0a 0a 20 20 20 20 20 20 72 65 74 75     }..      retu
1c60: 72 6e 20 73 74 61 72 74 0a 20 20 20 20 7d 0a 0a  rn start.    }..
1c70: 20 20 20 20 72 65 74 75 72 6e 20 5f 73 6b 69 70      return _skip
1c80: 52 65 67 65 78 0a 0a 20 20 7d 29 28 29 3b 0a 0a  Regex..  })();..
1c90: 20 20 2f 2a 2a 0a 20 20 20 2a 20 72 69 6f 74 2e    /**.   * riot.
1ca0: 75 74 69 6c 2e 62 72 61 63 6b 65 74 73 0a 20 20  util.brackets.  
1cb0: 20 2a 0a 20 20 20 2a 20 2d 20 60 62 72 61 63 6b   *.   * - `brack
1cc0: 65 74 73 20 20 20 20 60 20 2d 20 52 65 74 75 72  ets    ` - Retur
1cd0: 6e 73 20 61 20 73 74 72 69 6e 67 20 6f 72 20 72  ns a string or r
1ce0: 65 67 65 78 20 62 61 73 65 64 20 6f 6e 20 69 74  egex based on it
1cf0: 73 20 70 61 72 61 6d 65 74 65 72 0a 20 20 20 2a  s parameter.   *
1d00: 20 2d 20 60 62 72 61 63 6b 65 74 73 2e 73 65 74   - `brackets.set
1d10: 60 20 2d 20 43 68 61 6e 67 65 20 74 68 65 20 63  ` - Change the c
1d20: 75 72 72 65 6e 74 20 72 69 6f 74 20 62 72 61 63  urrent riot brac
1d30: 6b 65 74 73 0a 20 20 20 2a 0a 20 20 20 2a 20 40  kets.   *.   * @
1d40: 6d 6f 64 75 6c 65 0a 20 20 20 2a 2f 0a 0a 20 20  module.   */..  
1d50: 2f 2a 20 67 6c 6f 62 61 6c 20 72 69 6f 74 20 2a  /* global riot *
1d60: 2f 0a 0a 20 20 2f 2a 20 69 73 74 61 6e 62 75 6c  /..  /* istanbul
1d70: 20 69 67 6e 6f 72 65 20 6e 65 78 74 20 2a 2f 0a   ignore next */.
1d80: 20 20 76 61 72 20 62 72 61 63 6b 65 74 73 20 3d    var brackets =
1d90: 20 28 66 75 6e 63 74 69 6f 6e 20 28 55 4e 44 45   (function (UNDE
1da0: 46 29 20 7b 0a 0a 20 20 20 20 76 61 72 0a 20 20  F) {..    var.  
1db0: 20 20 20 20 52 45 47 4c 4f 42 20 3d 20 27 67 27      REGLOB = 'g'
1dc0: 2c 0a 0a 20 20 20 20 20 20 52 5f 4d 4c 43 4f 4d  ,..      R_MLCOM
1dd0: 4d 53 20 3d 20 2f 5c 2f 5c 2a 5b 5e 2a 5d 2a 5c  MS = /\/\*[^*]*\
1de0: 2a 2b 28 3f 3a 5b 5e 2a 5c 2f 5d 5b 5e 2a 5d 2a  *+(?:[^*\/][^*]*
1df0: 5c 2a 2b 29 2a 5c 2f 2f 67 2c 0a 0a 20 20 20 20  \*+)*\//g,..    
1e00: 20 20 52 5f 53 54 52 49 4e 47 53 20 3d 20 2f 22    R_STRINGS = /"
1e10: 5b 5e 22 5c 5c 5d 2a 28 3f 3a 5c 5c 5b 5c 53 5c  [^"\\]*(?:\\[\S\
1e20: 73 5d 5b 5e 22 5c 5c 5d 2a 29 2a 22 7c 27 5b 5e  s][^"\\]*)*"|'[^
1e30: 27 5c 5c 5d 2a 28 3f 3a 5c 5c 5b 5c 53 5c 73 5d  '\\]*(?:\\[\S\s]
1e40: 5b 5e 27 5c 5c 5d 2a 29 2a 27 7c 60 5b 5e 60 5c  [^'\\]*)*'|`[^`\
1e50: 5c 5d 2a 28 3f 3a 5c 5c 5b 5c 53 5c 73 5d 5b 5e  \]*(?:\\[\S\s][^
1e60: 60 5c 5c 5d 2a 29 2a 60 2f 67 2c 0a 0a 20 20 20  `\\]*)*`/g,..   
1e70: 20 20 20 53 5f 51 42 4c 4f 43 4b 53 20 3d 20 52     S_QBLOCKS = R
1e80: 5f 53 54 52 49 4e 47 53 2e 73 6f 75 72 63 65 20  _STRINGS.source 
1e90: 2b 20 27 7c 27 20 2b 0a 20 20 20 20 20 20 20 20  + '|' +.        
1ea0: 2f 28 3f 3a 5c 62 72 65 74 75 72 6e 5c 73 2b 7c  /(?:\breturn\s+|
1eb0: 28 3f 3a 5b 24 5c 77 5c 29 5c 5d 5d 7c 5c 2b 5c  (?:[$\w\)\]]|\+\
1ec0: 2b 7c 2d 2d 29 5c 73 2a 28 5c 2f 29 28 3f 21 5b  +|--)\s*(\/)(?![
1ed0: 2a 5c 2f 5d 29 29 2f 2e 73 6f 75 72 63 65 20 2b  *\/]))/.source +
1ee0: 20 27 7c 27 20 2b 0a 20 20 20 20 20 20 20 20 2f   '|' +.        /
1ef0: 5c 2f 28 3f 3d 5b 5e 2a 5c 2f 5d 29 5b 5e 5b 5c  \/(?=[^*\/])[^[\
1f00: 2f 5c 5c 5d 2a 28 3f 3a 28 3f 3a 5c 5b 28 3f 3a  /\\]*(?:(?:\[(?:
1f10: 5c 5c 2e 7c 5b 5e 5c 5d 5c 5c 5d 2a 29 2a 5c 5d  \\.|[^\]\\]*)*\]
1f20: 7c 5c 5c 2e 29 5b 5e 5b 5c 2f 5c 5c 5d 2a 29 2a  |\\.)[^[\/\\]*)*
1f30: 3f 28 5b 5e 3c 5d 5c 2f 29 5b 67 69 6d 5d 2a 2f  ?([^<]\/)[gim]*/
1f40: 2e 73 6f 75 72 63 65 2c 0a 0a 20 20 20 20 20 20  .source,..      
1f50: 55 4e 53 55 50 50 4f 52 54 45 44 20 3d 20 52 65  UNSUPPORTED = Re
1f60: 67 45 78 70 28 27 5b 5c 5c 27 20 2b 20 27 78 30  gExp('[\\' + 'x0
1f70: 30 2d 5c 5c 78 31 46 3c 3e 61 2d 7a 41 2d 5a 30  0-\\x1F<>a-zA-Z0
1f80: 2d 39 5c 27 22 2c 3b 5c 5c 5c 5c 5d 27 29 2c 0a  -9\'",;\\\\]'),.
1f90: 0a 20 20 20 20 20 20 4e 45 45 44 5f 45 53 43 41  .      NEED_ESCA
1fa0: 50 45 20 3d 20 2f 28 3f 3d 5b 5b 5c 5d 28 29 2a  PE = /(?=[[\]()*
1fb0: 2b 3f 2e 5e 24 7c 5d 29 2f 67 2c 0a 0a 20 20 20  +?.^$|])/g,..   
1fc0: 20 20 20 53 5f 51 42 4c 4f 43 4b 32 20 3d 20 52     S_QBLOCK2 = R
1fd0: 5f 53 54 52 49 4e 47 53 2e 73 6f 75 72 63 65 20  _STRINGS.source 
1fe0: 2b 20 27 7c 27 20 2b 20 2f 28 5c 2f 29 28 3f 21  + '|' + /(\/)(?!
1ff0: 5b 2a 5c 2f 5d 29 2f 2e 73 6f 75 72 63 65 2c 0a  [*\/])/.source,.
2000: 0a 20 20 20 20 20 20 46 49 4e 44 42 52 41 43 45  .      FINDBRACE
2010: 53 20 3d 20 7b 0a 20 20 20 20 20 20 20 20 27 28  S = {.        '(
2020: 27 3a 20 52 65 67 45 78 70 28 27 28 5b 28 29 5d  ': RegExp('([()]
2030: 29 7c 27 20 20 20 2b 20 53 5f 51 42 4c 4f 43 4b  )|'   + S_QBLOCK
2040: 32 2c 20 52 45 47 4c 4f 42 29 2c 0a 20 20 20 20  2, REGLOB),.    
2050: 20 20 20 20 27 5b 27 3a 20 52 65 67 45 78 70 28      '[': RegExp(
2060: 27 28 5b 5b 5c 5c 5d 5d 29 7c 27 20 2b 20 53 5f  '([[\\]])|' + S_
2070: 51 42 4c 4f 43 4b 32 2c 20 52 45 47 4c 4f 42 29  QBLOCK2, REGLOB)
2080: 2c 0a 20 20 20 20 20 20 20 20 27 7b 27 3a 20 52  ,.        '{': R
2090: 65 67 45 78 70 28 27 28 5b 7b 7d 5d 29 7c 27 20  egExp('([{}])|' 
20a0: 20 20 2b 20 53 5f 51 42 4c 4f 43 4b 32 2c 20 52    + S_QBLOCK2, R
20b0: 45 47 4c 4f 42 29 0a 20 20 20 20 20 20 7d 2c 0a  EGLOB).      },.
20c0: 0a 20 20 20 20 20 20 44 45 46 41 55 4c 54 20 3d  .      DEFAULT =
20d0: 20 27 7b 20 7d 27 3b 0a 0a 20 20 20 20 76 61 72   '{ }';..    var
20e0: 20 5f 70 61 69 72 73 20 3d 20 5b 0a 20 20 20 20   _pairs = [.    
20f0: 20 20 27 7b 27 2c 20 27 7d 27 2c 0a 20 20 20 20    '{', '}',.    
2100: 20 20 27 7b 27 2c 20 27 7d 27 2c 0a 20 20 20 20    '{', '}',.    
2110: 20 20 2f 7b 5b 5e 7d 5d 2a 7d 2f 2c 0a 20 20 20    /{[^}]*}/,.   
2120: 20 20 20 2f 5c 5c 28 5b 7b 7d 5d 29 2f 67 2c 0a     /\\([{}])/g,.
2130: 20 20 20 20 20 20 2f 5c 5c 28 7b 29 7c 7b 2f 67        /\\({)|{/g
2140: 2c 0a 20 20 20 20 20 20 52 65 67 45 78 70 28 27  ,.      RegExp('
2150: 5c 5c 5c 5c 28 7d 29 7c 28 5b 5b 28 7b 5d 29 7c  \\\\(})|([[({])|
2160: 28 7d 29 7c 27 20 2b 20 53 5f 51 42 4c 4f 43 4b  (})|' + S_QBLOCK
2170: 32 2c 20 52 45 47 4c 4f 42 29 2c 0a 20 20 20 20  2, REGLOB),.    
2180: 20 20 44 45 46 41 55 4c 54 2c 0a 20 20 20 20 20    DEFAULT,.     
2190: 20 2f 5e 5c 73 2a 7b 5c 5e 3f 5c 73 2a 28 5b 24   /^\s*{\^?\s*([$
21a0: 5c 77 5d 2b 29 28 3f 3a 5c 73 2a 2c 5c 73 2a 28  \w]+)(?:\s*,\s*(
21b0: 5c 53 2b 29 29 3f 5c 73 2b 69 6e 5c 73 2b 28 5c  \S+))?\s+in\s+(\
21c0: 53 2e 2a 29 5c 73 2a 7d 2f 2c 0a 20 20 20 20 20  S.*)\s*}/,.     
21d0: 20 2f 28 5e 7c 5b 5e 5c 5c 5d 29 7b 3d 5b 5c 53   /(^|[^\\]){=[\S
21e0: 5c 73 5d 2a 3f 7d 2f 0a 20 20 20 20 5d 3b 0a 0a  \s]*?}/.    ];..
21f0: 20 20 20 20 76 61 72 0a 20 20 20 20 20 20 63 61      var.      ca
2200: 63 68 65 64 42 72 61 63 6b 65 74 73 20 3d 20 55  chedBrackets = U
2210: 4e 44 45 46 2c 0a 20 20 20 20 20 20 5f 72 65 67  NDEF,.      _reg
2220: 65 78 2c 0a 20 20 20 20 20 20 5f 63 61 63 68 65  ex,.      _cache
2230: 20 3d 20 5b 5d 2c 0a 20 20 20 20 20 20 5f 73 65   = [],.      _se
2240: 74 74 69 6e 67 73 3b 0a 0a 20 20 20 20 66 75 6e  ttings;..    fun
2250: 63 74 69 6f 6e 20 5f 6c 6f 6f 70 62 61 63 6b 20  ction _loopback 
2260: 28 72 65 29 20 7b 20 72 65 74 75 72 6e 20 72 65  (re) { return re
2270: 20 7d 0a 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e   }..    function
2280: 20 5f 72 65 77 72 69 74 65 20 28 72 65 2c 20 62   _rewrite (re, b
2290: 70 29 20 7b 0a 20 20 20 20 20 20 69 66 20 28 21  p) {.      if (!
22a0: 62 70 29 20 7b 20 62 70 20 3d 20 5f 63 61 63 68  bp) { bp = _cach
22b0: 65 3b 20 7d 0a 20 20 20 20 20 20 72 65 74 75 72  e; }.      retur
22c0: 6e 20 6e 65 77 20 52 65 67 45 78 70 28 0a 20 20  n new RegExp(.  
22d0: 20 20 20 20 20 20 72 65 2e 73 6f 75 72 63 65 2e        re.source.
22e0: 72 65 70 6c 61 63 65 28 2f 7b 2f 67 2c 20 62 70  replace(/{/g, bp
22f0: 5b 32 5d 29 2e 72 65 70 6c 61 63 65 28 2f 7d 2f  [2]).replace(/}/
2300: 67 2c 20 62 70 5b 33 5d 29 2c 20 72 65 2e 67 6c  g, bp[3]), re.gl
2310: 6f 62 61 6c 20 3f 20 52 45 47 4c 4f 42 20 3a 20  obal ? REGLOB : 
2320: 27 27 0a 20 20 20 20 20 20 29 0a 20 20 20 20 7d  ''.      ).    }
2330: 0a 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 5f  ..    function _
2340: 63 72 65 61 74 65 20 28 70 61 69 72 29 20 7b 0a  create (pair) {.
2350: 20 20 20 20 20 20 69 66 20 28 70 61 69 72 20 3d        if (pair =
2360: 3d 3d 20 44 45 46 41 55 4c 54 29 20 7b 20 72 65  == DEFAULT) { re
2370: 74 75 72 6e 20 5f 70 61 69 72 73 20 7d 0a 0a 20  turn _pairs }.. 
2380: 20 20 20 20 20 76 61 72 20 61 72 72 20 3d 20 70       var arr = p
2390: 61 69 72 2e 73 70 6c 69 74 28 27 20 27 29 3b 0a  air.split(' ');.
23a0: 0a 20 20 20 20 20 20 69 66 20 28 61 72 72 2e 6c  .      if (arr.l
23b0: 65 6e 67 74 68 20 21 3d 3d 20 32 20 7c 7c 20 55  ength !== 2 || U
23c0: 4e 53 55 50 50 4f 52 54 45 44 2e 74 65 73 74 28  NSUPPORTED.test(
23d0: 70 61 69 72 29 29 20 7b 0a 20 20 20 20 20 20 20  pair)) {.       
23e0: 20 74 68 72 6f 77 20 6e 65 77 20 45 72 72 6f 72   throw new Error
23f0: 28 27 55 6e 73 75 70 70 6f 72 74 65 64 20 62 72  ('Unsupported br
2400: 61 63 6b 65 74 73 20 22 27 20 2b 20 70 61 69 72  ackets "' + pair
2410: 20 2b 20 27 22 27 29 0a 20 20 20 20 20 20 7d 0a   + '"').      }.
2420: 20 20 20 20 20 20 61 72 72 20 3d 20 61 72 72 2e        arr = arr.
2430: 63 6f 6e 63 61 74 28 70 61 69 72 2e 72 65 70 6c  concat(pair.repl
2440: 61 63 65 28 4e 45 45 44 5f 45 53 43 41 50 45 2c  ace(NEED_ESCAPE,
2450: 20 27 5c 5c 27 29 2e 73 70 6c 69 74 28 27 20 27   '\\').split(' '
2460: 29 29 3b 0a 0a 20 20 20 20 20 20 61 72 72 5b 34  ));..      arr[4
2470: 5d 20 3d 20 5f 72 65 77 72 69 74 65 28 61 72 72  ] = _rewrite(arr
2480: 5b 31 5d 2e 6c 65 6e 67 74 68 20 3e 20 31 20 3f  [1].length > 1 ?
2490: 20 2f 7b 5b 5c 53 5c 73 5d 2a 3f 7d 2f 20 3a 20   /{[\S\s]*?}/ : 
24a0: 5f 70 61 69 72 73 5b 34 5d 2c 20 61 72 72 29 3b  _pairs[4], arr);
24b0: 0a 20 20 20 20 20 20 61 72 72 5b 35 5d 20 3d 20  .      arr[5] = 
24c0: 5f 72 65 77 72 69 74 65 28 70 61 69 72 2e 6c 65  _rewrite(pair.le
24d0: 6e 67 74 68 20 3e 20 33 20 3f 20 2f 5c 5c 28 7b  ngth > 3 ? /\\({
24e0: 7c 7d 29 2f 67 20 3a 20 5f 70 61 69 72 73 5b 35  |})/g : _pairs[5
24f0: 5d 2c 20 61 72 72 29 3b 0a 20 20 20 20 20 20 61  ], arr);.      a
2500: 72 72 5b 36 5d 20 3d 20 5f 72 65 77 72 69 74 65  rr[6] = _rewrite
2510: 28 5f 70 61 69 72 73 5b 36 5d 2c 20 61 72 72 29  (_pairs[6], arr)
2520: 3b 0a 20 20 20 20 20 20 61 72 72 5b 37 5d 20 3d  ;.      arr[7] =
2530: 20 52 65 67 45 78 70 28 27 5c 5c 5c 5c 28 27 20   RegExp('\\\\(' 
2540: 2b 20 61 72 72 5b 33 5d 20 2b 20 27 29 7c 28 5b  + arr[3] + ')|([
2550: 5b 28 7b 5d 29 7c 28 27 20 2b 20 61 72 72 5b 33  [({])|(' + arr[3
2560: 5d 20 2b 20 27 29 7c 27 20 2b 20 53 5f 51 42 4c  ] + ')|' + S_QBL
2570: 4f 43 4b 32 2c 20 52 45 47 4c 4f 42 29 3b 0a 20  OCK2, REGLOB);. 
2580: 20 20 20 20 20 61 72 72 5b 38 5d 20 3d 20 70 61       arr[8] = pa
2590: 69 72 3b 0a 20 20 20 20 20 20 72 65 74 75 72 6e  ir;.      return
25a0: 20 61 72 72 0a 20 20 20 20 7d 0a 0a 20 20 20 20   arr.    }..    
25b0: 66 75 6e 63 74 69 6f 6e 20 5f 62 72 61 63 6b 65  function _bracke
25c0: 74 73 20 28 72 65 4f 72 49 64 78 29 20 7b 0a 20  ts (reOrIdx) {. 
25d0: 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 4f 72       return reOr
25e0: 49 64 78 20 69 6e 73 74 61 6e 63 65 6f 66 20 52  Idx instanceof R
25f0: 65 67 45 78 70 20 3f 20 5f 72 65 67 65 78 28 72  egExp ? _regex(r
2600: 65 4f 72 49 64 78 29 20 3a 20 5f 63 61 63 68 65  eOrIdx) : _cache
2610: 5b 72 65 4f 72 49 64 78 5d 0a 20 20 20 20 7d 0a  [reOrIdx].    }.
2620: 0a 20 20 20 20 5f 62 72 61 63 6b 65 74 73 2e 73  .    _brackets.s
2630: 70 6c 69 74 20 3d 20 66 75 6e 63 74 69 6f 6e 20  plit = function 
2640: 73 70 6c 69 74 20 28 73 74 72 2c 20 74 6d 70 6c  split (str, tmpl
2650: 2c 20 5f 62 70 29 20 7b 0a 20 20 20 20 20 20 2f  , _bp) {.      /
2660: 2f 20 69 73 74 61 6e 62 75 6c 20 69 67 6e 6f 72  / istanbul ignor
2670: 65 20 6e 65 78 74 3a 20 5f 62 70 20 69 73 20 66  e next: _bp is f
2680: 6f 72 20 74 68 65 20 63 6f 6d 70 69 6c 65 72 0a  or the compiler.
2690: 20 20 20 20 20 20 69 66 20 28 21 5f 62 70 29 20        if (!_bp) 
26a0: 7b 20 5f 62 70 20 3d 20 5f 63 61 63 68 65 3b 20  { _bp = _cache; 
26b0: 7d 0a 0a 20 20 20 20 20 20 76 61 72 0a 20 20 20  }..      var.   
26c0: 20 20 20 20 20 70 61 72 74 73 20 3d 20 5b 5d 2c       parts = [],
26d0: 0a 20 20 20 20 20 20 20 20 6d 61 74 63 68 2c 0a  .        match,.
26e0: 20 20 20 20 20 20 20 20 69 73 65 78 70 72 2c 0a          isexpr,.
26f0: 20 20 20 20 20 20 20 20 73 74 61 72 74 2c 0a 20          start,. 
2700: 20 20 20 20 20 20 20 70 6f 73 2c 0a 20 20 20 20         pos,.    
2710: 20 20 20 20 72 65 20 3d 20 5f 62 70 5b 36 5d 3b      re = _bp[6];
2720: 0a 0a 20 20 20 20 20 20 76 61 72 20 71 62 6c 6f  ..      var qblo
2730: 63 6b 73 20 3d 20 5b 5d 3b 0a 20 20 20 20 20 20  cks = [];.      
2740: 76 61 72 20 70 72 65 76 53 74 72 20 3d 20 27 27  var prevStr = ''
2750: 3b 0a 20 20 20 20 20 20 76 61 72 20 6d 61 72 6b  ;.      var mark
2760: 2c 20 6c 61 73 74 49 6e 64 65 78 3b 0a 0a 20 20  , lastIndex;..  
2770: 20 20 20 20 69 73 65 78 70 72 20 3d 20 73 74 61      isexpr = sta
2780: 72 74 20 3d 20 72 65 2e 6c 61 73 74 49 6e 64 65  rt = re.lastInde
2790: 78 20 3d 20 30 3b 0a 0a 20 20 20 20 20 20 77 68  x = 0;..      wh
27a0: 69 6c 65 20 28 28 6d 61 74 63 68 20 3d 20 72 65  ile ((match = re
27b0: 2e 65 78 65 63 28 73 74 72 29 29 29 20 7b 0a 0a  .exec(str))) {..
27c0: 20 20 20 20 20 20 20 20 6c 61 73 74 49 6e 64 65          lastInde
27d0: 78 20 3d 20 72 65 2e 6c 61 73 74 49 6e 64 65 78  x = re.lastIndex
27e0: 3b 0a 20 20 20 20 20 20 20 20 70 6f 73 20 3d 20  ;.        pos = 
27f0: 6d 61 74 63 68 2e 69 6e 64 65 78 3b 0a 0a 20 20  match.index;..  
2800: 20 20 20 20 20 20 69 66 20 28 69 73 65 78 70 72        if (isexpr
2810: 29 20 7b 0a 0a 20 20 20 20 20 20 20 20 20 20 69  ) {..          i
2820: 66 20 28 6d 61 74 63 68 5b 32 5d 29 20 7b 0a 0a  f (match[2]) {..
2830: 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20              var 
2840: 63 68 20 3d 20 6d 61 74 63 68 5b 32 5d 3b 0a 20  ch = match[2];. 
2850: 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 72             var r
2860: 65 63 68 20 3d 20 46 49 4e 44 42 52 41 43 45 53  ech = FINDBRACES
2870: 5b 63 68 5d 3b 0a 20 20 20 20 20 20 20 20 20 20  [ch];.          
2880: 20 20 76 61 72 20 69 78 20 3d 20 31 3b 0a 0a 20    var ix = 1;.. 
2890: 20 20 20 20 20 20 20 20 20 20 20 72 65 63 68 2e             rech.
28a0: 6c 61 73 74 49 6e 64 65 78 20 3d 20 6c 61 73 74  lastIndex = last
28b0: 49 6e 64 65 78 3b 0a 20 20 20 20 20 20 20 20 20  Index;.         
28c0: 20 20 20 77 68 69 6c 65 20 28 28 6d 61 74 63 68     while ((match
28d0: 20 3d 20 72 65 63 68 2e 65 78 65 63 28 73 74 72   = rech.exec(str
28e0: 29 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20  ))) {.          
28f0: 20 20 20 20 69 66 20 28 6d 61 74 63 68 5b 31 5d      if (match[1]
2900: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ) {.            
2910: 20 20 20 20 69 66 20 28 6d 61 74 63 68 5b 31 5d      if (match[1]
2920: 20 3d 3d 3d 20 63 68 29 20 7b 20 2b 2b 69 78 3b   === ch) { ++ix;
2930: 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   }.             
2940: 20 20 20 65 6c 73 65 20 69 66 20 28 21 2d 2d 69     else if (!--i
2950: 78 29 20 7b 20 62 72 65 61 6b 20 7d 0a 20 20 20  x) { break }.   
2960: 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73             } els
2970: 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  e {.            
2980: 20 20 20 20 72 65 63 68 2e 6c 61 73 74 49 6e 64      rech.lastInd
2990: 65 78 20 3d 20 70 75 73 68 51 42 6c 6f 63 6b 28  ex = pushQBlock(
29a0: 6d 61 74 63 68 2e 69 6e 64 65 78 2c 20 72 65 63  match.index, rec
29b0: 68 2e 6c 61 73 74 49 6e 64 65 78 2c 20 6d 61 74  h.lastIndex, mat
29c0: 63 68 5b 32 5d 29 3b 0a 20 20 20 20 20 20 20 20  ch[2]);.        
29d0: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20        }.        
29e0: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20      }.          
29f0: 20 20 72 65 2e 6c 61 73 74 49 6e 64 65 78 20 3d    re.lastIndex =
2a00: 20 69 78 20 3f 20 73 74 72 2e 6c 65 6e 67 74 68   ix ? str.length
2a10: 20 3a 20 72 65 63 68 2e 6c 61 73 74 49 6e 64 65   : rech.lastInde
2a20: 78 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  x;.            c
2a30: 6f 6e 74 69 6e 75 65 0a 20 20 20 20 20 20 20 20  ontinue.        
2a40: 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 20 20 69    }..          i
2a50: 66 20 28 21 6d 61 74 63 68 5b 33 5d 29 20 7b 0a  f (!match[3]) {.
2a60: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 2e 6c              re.l
2a70: 61 73 74 49 6e 64 65 78 20 3d 20 70 75 73 68 51  astIndex = pushQ
2a80: 42 6c 6f 63 6b 28 70 6f 73 2c 20 6c 61 73 74 49  Block(pos, lastI
2a90: 6e 64 65 78 2c 20 6d 61 74 63 68 5b 34 5d 29 3b  ndex, match[4]);
2aa0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e  .            con
2ab0: 74 69 6e 75 65 0a 20 20 20 20 20 20 20 20 20 20  tinue.          
2ac0: 7d 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20  }.        }..   
2ad0: 20 20 20 20 20 69 66 20 28 21 6d 61 74 63 68 5b       if (!match[
2ae0: 31 5d 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20  1]) {.          
2af0: 75 6e 65 73 63 61 70 65 53 74 72 28 73 74 72 2e  unescapeStr(str.
2b00: 73 6c 69 63 65 28 73 74 61 72 74 2c 20 70 6f 73  slice(start, pos
2b10: 29 29 3b 0a 20 20 20 20 20 20 20 20 20 20 73 74  ));.          st
2b20: 61 72 74 20 3d 20 72 65 2e 6c 61 73 74 49 6e 64  art = re.lastInd
2b30: 65 78 3b 0a 20 20 20 20 20 20 20 20 20 20 72 65  ex;.          re
2b40: 20 3d 20 5f 62 70 5b 36 20 2b 20 28 69 73 65 78   = _bp[6 + (isex
2b50: 70 72 20 5e 3d 20 31 29 5d 3b 0a 20 20 20 20 20  pr ^= 1)];.     
2b60: 20 20 20 20 20 72 65 2e 6c 61 73 74 49 6e 64 65       re.lastInde
2b70: 78 20 3d 20 73 74 61 72 74 3b 0a 20 20 20 20 20  x = start;.     
2b80: 20 20 20 7d 0a 20 20 20 20 20 20 7d 0a 0a 20 20     }.      }..  
2b90: 20 20 20 20 69 66 20 28 73 74 72 20 26 26 20 73      if (str && s
2ba0: 74 61 72 74 20 3c 20 73 74 72 2e 6c 65 6e 67 74  tart < str.lengt
2bb0: 68 29 20 7b 0a 20 20 20 20 20 20 20 20 75 6e 65  h) {.        une
2bc0: 73 63 61 70 65 53 74 72 28 73 74 72 2e 73 6c 69  scapeStr(str.sli
2bd0: 63 65 28 73 74 61 72 74 29 29 3b 0a 20 20 20 20  ce(start));.    
2be0: 20 20 7d 0a 0a 20 20 20 20 20 20 70 61 72 74 73    }..      parts
2bf0: 2e 71 62 6c 6f 63 6b 73 20 3d 20 71 62 6c 6f 63  .qblocks = qbloc
2c00: 6b 73 3b 0a 0a 20 20 20 20 20 20 72 65 74 75 72  ks;..      retur
2c10: 6e 20 70 61 72 74 73 0a 0a 20 20 20 20 20 20 66  n parts..      f
2c20: 75 6e 63 74 69 6f 6e 20 75 6e 65 73 63 61 70 65  unction unescape
2c30: 53 74 72 20 28 73 29 20 7b 0a 20 20 20 20 20 20  Str (s) {.      
2c40: 20 20 69 66 20 28 70 72 65 76 53 74 72 29 20 7b    if (prevStr) {
2c50: 0a 20 20 20 20 20 20 20 20 20 20 73 20 3d 20 70  .          s = p
2c60: 72 65 76 53 74 72 20 2b 20 73 3b 0a 20 20 20 20  revStr + s;.    
2c70: 20 20 20 20 20 20 70 72 65 76 53 74 72 20 3d 20        prevStr = 
2c80: 27 27 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20  '';.        }.  
2c90: 20 20 20 20 20 20 69 66 20 28 74 6d 70 6c 20 7c        if (tmpl |
2ca0: 7c 20 69 73 65 78 70 72 29 20 7b 0a 20 20 20 20  | isexpr) {.    
2cb0: 20 20 20 20 20 20 70 61 72 74 73 2e 70 75 73 68        parts.push
2cc0: 28 73 20 26 26 20 73 2e 72 65 70 6c 61 63 65 28  (s && s.replace(
2cd0: 5f 62 70 5b 35 5d 2c 20 27 24 31 27 29 29 3b 0a  _bp[5], '$1'));.
2ce0: 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b          } else {
2cf0: 0a 20 20 20 20 20 20 20 20 20 20 70 61 72 74 73  .          parts
2d00: 2e 70 75 73 68 28 73 29 3b 0a 20 20 20 20 20 20  .push(s);.      
2d10: 20 20 7d 0a 20 20 20 20 20 20 7d 0a 0a 20 20 20    }.      }..   
2d20: 20 20 20 66 75 6e 63 74 69 6f 6e 20 70 75 73 68     function push
2d30: 51 42 6c 6f 63 6b 28 5f 70 6f 73 2c 20 5f 6c 61  QBlock(_pos, _la
2d40: 73 74 49 6e 64 65 78 2c 20 73 6c 61 73 68 29 20  stIndex, slash) 
2d50: 7b 20 2f 2f 65 73 6c 69 6e 74 2d 64 69 73 61 62  { //eslint-disab
2d60: 6c 65 2d 6c 69 6e 65 0a 20 20 20 20 20 20 20 20  le-line.        
2d70: 69 66 20 28 73 6c 61 73 68 29 20 7b 0a 20 20 20  if (slash) {.   
2d80: 20 20 20 20 20 20 20 5f 6c 61 73 74 49 6e 64 65         _lastInde
2d90: 78 20 3d 20 73 6b 69 70 52 65 67 65 78 28 73 74  x = skipRegex(st
2da0: 72 2c 20 5f 70 6f 73 29 3b 0a 20 20 20 20 20 20  r, _pos);.      
2db0: 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 69 66 20    }..        if 
2dc0: 28 74 6d 70 6c 20 26 26 20 5f 6c 61 73 74 49 6e  (tmpl && _lastIn
2dd0: 64 65 78 20 3e 20 5f 70 6f 73 20 2b 20 32 29 20  dex > _pos + 2) 
2de0: 7b 0a 20 20 20 20 20 20 20 20 20 20 6d 61 72 6b  {.          mark
2df0: 20 3d 20 27 5c 75 32 30 35 37 27 20 2b 20 71 62   = '\u2057' + qb
2e00: 6c 6f 63 6b 73 2e 6c 65 6e 67 74 68 20 2b 20 27  locks.length + '
2e10: 7e 27 3b 0a 20 20 20 20 20 20 20 20 20 20 71 62  ~';.          qb
2e20: 6c 6f 63 6b 73 2e 70 75 73 68 28 73 74 72 2e 73  locks.push(str.s
2e30: 6c 69 63 65 28 5f 70 6f 73 2c 20 5f 6c 61 73 74  lice(_pos, _last
2e40: 49 6e 64 65 78 29 29 3b 0a 20 20 20 20 20 20 20  Index));.       
2e50: 20 20 20 70 72 65 76 53 74 72 20 2b 3d 20 73 74     prevStr += st
2e60: 72 2e 73 6c 69 63 65 28 73 74 61 72 74 2c 20 5f  r.slice(start, _
2e70: 70 6f 73 29 20 2b 20 6d 61 72 6b 3b 0a 20 20 20  pos) + mark;.   
2e80: 20 20 20 20 20 20 20 73 74 61 72 74 20 3d 20 5f         start = _
2e90: 6c 61 73 74 49 6e 64 65 78 3b 0a 20 20 20 20 20  lastIndex;.     
2ea0: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 72 65 74     }.        ret
2eb0: 75 72 6e 20 5f 6c 61 73 74 49 6e 64 65 78 0a 20  urn _lastIndex. 
2ec0: 20 20 20 20 20 7d 0a 20 20 20 20 7d 3b 0a 0a 20       }.    };.. 
2ed0: 20 20 20 5f 62 72 61 63 6b 65 74 73 2e 68 61 73     _brackets.has
2ee0: 45 78 70 72 20 3d 20 66 75 6e 63 74 69 6f 6e 20  Expr = function 
2ef0: 68 61 73 45 78 70 72 20 28 73 74 72 29 20 7b 0a  hasExpr (str) {.
2f00: 20 20 20 20 20 20 72 65 74 75 72 6e 20 5f 63 61        return _ca
2f10: 63 68 65 5b 34 5d 2e 74 65 73 74 28 73 74 72 29  che[4].test(str)
2f20: 0a 20 20 20 20 7d 3b 0a 0a 20 20 20 20 5f 62 72  .    };..    _br
2f30: 61 63 6b 65 74 73 2e 6c 6f 6f 70 4b 65 79 73 20  ackets.loopKeys 
2f40: 3d 20 66 75 6e 63 74 69 6f 6e 20 6c 6f 6f 70 4b  = function loopK
2f50: 65 79 73 20 28 65 78 70 72 29 20 7b 0a 20 20 20  eys (expr) {.   
2f60: 20 20 20 76 61 72 20 6d 20 3d 20 65 78 70 72 2e     var m = expr.
2f70: 6d 61 74 63 68 28 5f 63 61 63 68 65 5b 39 5d 29  match(_cache[9])
2f80: 3b 0a 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20  ;..      return 
2f90: 6d 0a 20 20 20 20 20 20 20 20 3f 20 7b 20 6b 65  m.        ? { ke
2fa0: 79 3a 20 6d 5b 31 5d 2c 20 70 6f 73 3a 20 6d 5b  y: m[1], pos: m[
2fb0: 32 5d 2c 20 76 61 6c 3a 20 5f 63 61 63 68 65 5b  2], val: _cache[
2fc0: 30 5d 20 2b 20 6d 5b 33 5d 2e 74 72 69 6d 28 29  0] + m[3].trim()
2fd0: 20 2b 20 5f 63 61 63 68 65 5b 31 5d 20 7d 0a 20   + _cache[1] }. 
2fe0: 20 20 20 20 20 20 20 3a 20 7b 20 76 61 6c 3a 20         : { val: 
2ff0: 65 78 70 72 2e 74 72 69 6d 28 29 20 7d 0a 20 20  expr.trim() }.  
3000: 20 20 7d 3b 0a 0a 20 20 20 20 5f 62 72 61 63 6b    };..    _brack
3010: 65 74 73 2e 61 72 72 61 79 20 3d 20 66 75 6e 63  ets.array = func
3020: 74 69 6f 6e 20 61 72 72 61 79 20 28 70 61 69 72  tion array (pair
3030: 29 20 7b 0a 20 20 20 20 20 20 72 65 74 75 72 6e  ) {.      return
3040: 20 70 61 69 72 20 3f 20 5f 63 72 65 61 74 65 28   pair ? _create(
3050: 70 61 69 72 29 20 3a 20 5f 63 61 63 68 65 0a 20  pair) : _cache. 
3060: 20 20 20 7d 3b 0a 0a 20 20 20 20 66 75 6e 63 74     };..    funct
3070: 69 6f 6e 20 5f 72 65 73 65 74 20 28 70 61 69 72  ion _reset (pair
3080: 29 20 7b 0a 20 20 20 20 20 20 69 66 20 28 28 70  ) {.      if ((p
3090: 61 69 72 20 7c 7c 20 28 70 61 69 72 20 3d 20 44  air || (pair = D
30a0: 45 46 41 55 4c 54 29 29 20 21 3d 3d 20 5f 63 61  EFAULT)) !== _ca
30b0: 63 68 65 5b 38 5d 29 20 7b 0a 20 20 20 20 20 20  che[8]) {.      
30c0: 20 20 5f 63 61 63 68 65 20 3d 20 5f 63 72 65 61    _cache = _crea
30d0: 74 65 28 70 61 69 72 29 3b 0a 20 20 20 20 20 20  te(pair);.      
30e0: 20 20 5f 72 65 67 65 78 20 3d 20 70 61 69 72 20    _regex = pair 
30f0: 3d 3d 3d 20 44 45 46 41 55 4c 54 20 3f 20 5f 6c  === DEFAULT ? _l
3100: 6f 6f 70 62 61 63 6b 20 3a 20 5f 72 65 77 72 69  oopback : _rewri
3110: 74 65 3b 0a 20 20 20 20 20 20 20 20 5f 63 61 63  te;.        _cac
3120: 68 65 5b 39 5d 20 3d 20 5f 72 65 67 65 78 28 5f  he[9] = _regex(_
3130: 70 61 69 72 73 5b 39 5d 29 3b 0a 20 20 20 20 20  pairs[9]);.     
3140: 20 7d 0a 20 20 20 20 20 20 63 61 63 68 65 64 42   }.      cachedB
3150: 72 61 63 6b 65 74 73 20 3d 20 70 61 69 72 3b 0a  rackets = pair;.
3160: 20 20 20 20 7d 0a 0a 20 20 20 20 66 75 6e 63 74      }..    funct
3170: 69 6f 6e 20 5f 73 65 74 53 65 74 74 69 6e 67 73  ion _setSettings
3180: 20 28 6f 29 20 7b 0a 20 20 20 20 20 20 76 61 72   (o) {.      var
3190: 20 62 3b 0a 0a 20 20 20 20 20 20 6f 20 3d 20 6f   b;..      o = o
31a0: 20 7c 7c 20 7b 7d 3b 0a 20 20 20 20 20 20 62 20   || {};.      b 
31b0: 3d 20 6f 2e 62 72 61 63 6b 65 74 73 3b 0a 20 20  = o.brackets;.  
31c0: 20 20 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e      Object.defin
31d0: 65 50 72 6f 70 65 72 74 79 28 6f 2c 20 27 62 72  eProperty(o, 'br
31e0: 61 63 6b 65 74 73 27 2c 20 7b 0a 20 20 20 20 20  ackets', {.     
31f0: 20 20 20 73 65 74 3a 20 5f 72 65 73 65 74 2c 0a     set: _reset,.
3200: 20 20 20 20 20 20 20 20 67 65 74 3a 20 66 75 6e          get: fun
3210: 63 74 69 6f 6e 20 28 29 20 7b 20 72 65 74 75 72  ction () { retur
3220: 6e 20 63 61 63 68 65 64 42 72 61 63 6b 65 74 73  n cachedBrackets
3230: 20 7d 2c 0a 20 20 20 20 20 20 20 20 65 6e 75 6d   },.        enum
3240: 65 72 61 62 6c 65 3a 20 74 72 75 65 0a 20 20 20  erable: true.   
3250: 20 20 20 7d 29 3b 0a 20 20 20 20 20 20 5f 73 65     });.      _se
3260: 74 74 69 6e 67 73 20 3d 20 6f 3b 0a 20 20 20 20  ttings = o;.    
3270: 20 20 5f 72 65 73 65 74 28 62 29 3b 0a 20 20 20    _reset(b);.   
3280: 20 7d 0a 0a 20 20 20 20 4f 62 6a 65 63 74 2e 64   }..    Object.d
3290: 65 66 69 6e 65 50 72 6f 70 65 72 74 79 28 5f 62  efineProperty(_b
32a0: 72 61 63 6b 65 74 73 2c 20 27 73 65 74 74 69 6e  rackets, 'settin
32b0: 67 73 27 2c 20 7b 0a 20 20 20 20 20 20 73 65 74  gs', {.      set
32c0: 3a 20 5f 73 65 74 53 65 74 74 69 6e 67 73 2c 0a  : _setSettings,.
32d0: 20 20 20 20 20 20 67 65 74 3a 20 66 75 6e 63 74        get: funct
32e0: 69 6f 6e 20 28 29 20 7b 20 72 65 74 75 72 6e 20  ion () { return 
32f0: 5f 73 65 74 74 69 6e 67 73 20 7d 0a 20 20 20 20  _settings }.    
3300: 7d 29 3b 0a 0a 20 20 20 20 2f 2a 20 69 73 74 61  });..    /* ista
3310: 6e 62 75 6c 20 69 67 6e 6f 72 65 20 6e 65 78 74  nbul ignore next
3320: 3a 20 69 6e 20 74 68 65 20 62 72 6f 77 73 65 72  : in the browser
3330: 20 72 69 6f 74 20 69 73 20 61 6c 77 61 79 73 20   riot is always 
3340: 69 6e 20 74 68 65 20 73 63 6f 70 65 20 2a 2f 0a  in the scope */.
3350: 20 20 20 20 5f 62 72 61 63 6b 65 74 73 2e 73 65      _brackets.se
3360: 74 74 69 6e 67 73 20 3d 20 74 79 70 65 6f 66 20  ttings = typeof 
3370: 72 69 6f 74 20 21 3d 3d 20 27 75 6e 64 65 66 69  riot !== 'undefi
3380: 6e 65 64 27 20 26 26 20 72 69 6f 74 2e 73 65 74  ned' && riot.set
3390: 74 69 6e 67 73 20 7c 7c 20 7b 7d 3b 0a 20 20 20  tings || {};.   
33a0: 20 5f 62 72 61 63 6b 65 74 73 2e 73 65 74 20 3d   _brackets.set =
33b0: 20 5f 72 65 73 65 74 3b 0a 20 20 20 20 5f 62 72   _reset;.    _br
33c0: 61 63 6b 65 74 73 2e 73 6b 69 70 52 65 67 65 78  ackets.skipRegex
33d0: 20 3d 20 73 6b 69 70 52 65 67 65 78 3b 0a 0a 20   = skipRegex;.. 
33e0: 20 20 20 5f 62 72 61 63 6b 65 74 73 2e 52 5f 53     _brackets.R_S
33f0: 54 52 49 4e 47 53 20 3d 20 52 5f 53 54 52 49 4e  TRINGS = R_STRIN
3400: 47 53 3b 0a 20 20 20 20 5f 62 72 61 63 6b 65 74  GS;.    _bracket
3410: 73 2e 52 5f 4d 4c 43 4f 4d 4d 53 20 3d 20 52 5f  s.R_MLCOMMS = R_
3420: 4d 4c 43 4f 4d 4d 53 3b 0a 20 20 20 20 5f 62 72  MLCOMMS;.    _br
3430: 61 63 6b 65 74 73 2e 53 5f 51 42 4c 4f 43 4b 53  ackets.S_QBLOCKS
3440: 20 3d 20 53 5f 51 42 4c 4f 43 4b 53 3b 0a 20 20   = S_QBLOCKS;.  
3450: 20 20 5f 62 72 61 63 6b 65 74 73 2e 53 5f 51 42    _brackets.S_QB
3460: 4c 4f 43 4b 32 20 3d 20 53 5f 51 42 4c 4f 43 4b  LOCK2 = S_QBLOCK
3470: 32 3b 0a 0a 20 20 20 20 72 65 74 75 72 6e 20 5f  2;..    return _
3480: 62 72 61 63 6b 65 74 73 0a 0a 20 20 7d 29 28 29  brackets..  })()
3490: 3b 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 40 6d  ;..  /**.   * @m
34a0: 6f 64 75 6c 65 20 74 6d 70 6c 0a 20 20 20 2a 0a  odule tmpl.   *.
34b0: 20 20 20 2a 20 74 6d 70 6c 20 20 20 20 20 20 20     * tmpl       
34c0: 20 20 20 2d 20 52 6f 6f 74 20 66 75 6e 63 74 69     - Root functi
34d0: 6f 6e 2c 20 72 65 74 75 72 6e 73 20 74 68 65 20  on, returns the 
34e0: 74 65 6d 70 6c 61 74 65 20 76 61 6c 75 65 2c 20  template value, 
34f0: 72 65 6e 64 65 72 20 77 69 74 68 20 64 61 74 61  render with data
3500: 0a 20 20 20 2a 20 74 6d 70 6c 2e 68 61 73 45 78  .   * tmpl.hasEx
3510: 70 72 20 20 2d 20 54 65 73 74 20 74 68 65 20 65  pr  - Test the e
3520: 78 69 73 74 65 6e 63 65 20 6f 66 20 61 20 65 78  xistence of a ex
3530: 70 72 65 73 73 69 6f 6e 20 69 6e 73 69 64 65 20  pression inside 
3540: 61 20 73 74 72 69 6e 67 0a 20 20 20 2a 20 74 6d  a string.   * tm
3550: 70 6c 2e 6c 6f 6f 70 4b 65 79 73 20 2d 20 47 65  pl.loopKeys - Ge
3560: 74 20 74 68 65 20 6b 65 79 73 20 66 6f 72 20 61  t the keys for a
3570: 6e 20 27 65 61 63 68 27 20 6c 6f 6f 70 20 28 75  n 'each' loop (u
3580: 73 65 64 20 62 79 20 60 5f 65 61 63 68 60 29 0a  sed by `_each`).
3590: 20 20 20 2a 2f 0a 0a 20 20 2f 2a 20 69 73 74 61     */..  /* ista
35a0: 6e 62 75 6c 20 69 67 6e 6f 72 65 20 6e 65 78 74  nbul ignore next
35b0: 20 2a 2f 0a 20 20 76 61 72 20 74 6d 70 6c 20 3d   */.  var tmpl =
35c0: 20 28 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a   (function () {.
35d0: 0a 20 20 20 20 76 61 72 20 5f 63 61 63 68 65 20  .    var _cache 
35e0: 3d 20 7b 7d 3b 0a 0a 20 20 20 20 66 75 6e 63 74  = {};..    funct
35f0: 69 6f 6e 20 5f 74 6d 70 6c 20 28 73 74 72 2c 20  ion _tmpl (str, 
3600: 64 61 74 61 29 20 7b 0a 20 20 20 20 20 20 69 66  data) {.      if
3610: 20 28 21 73 74 72 29 20 7b 20 72 65 74 75 72 6e   (!str) { return
3620: 20 73 74 72 20 7d 0a 0a 20 20 20 20 20 20 72 65   str }..      re
3630: 74 75 72 6e 20 28 5f 63 61 63 68 65 5b 73 74 72  turn (_cache[str
3640: 5d 20 7c 7c 20 28 5f 63 61 63 68 65 5b 73 74 72  ] || (_cache[str
3650: 5d 20 3d 20 5f 63 72 65 61 74 65 28 73 74 72 29  ] = _create(str)
3660: 29 29 2e 63 61 6c 6c 28 0a 20 20 20 20 20 20 20  )).call(.       
3670: 20 64 61 74 61 2c 20 5f 6c 6f 67 45 72 72 2e 62   data, _logErr.b
3680: 69 6e 64 28 7b 0a 20 20 20 20 20 20 20 20 20 20  ind({.          
3690: 64 61 74 61 3a 20 64 61 74 61 2c 0a 20 20 20 20  data: data,.    
36a0: 20 20 20 20 20 20 74 6d 70 6c 3a 20 73 74 72 0a        tmpl: str.
36b0: 20 20 20 20 20 20 20 20 7d 29 0a 20 20 20 20 20          }).     
36c0: 20 29 0a 20 20 20 20 7d 0a 0a 20 20 20 20 5f 74   ).    }..    _t
36d0: 6d 70 6c 2e 68 61 73 45 78 70 72 20 3d 20 62 72  mpl.hasExpr = br
36e0: 61 63 6b 65 74 73 2e 68 61 73 45 78 70 72 3b 0a  ackets.hasExpr;.
36f0: 0a 20 20 20 20 5f 74 6d 70 6c 2e 6c 6f 6f 70 4b  .    _tmpl.loopK
3700: 65 79 73 20 3d 20 62 72 61 63 6b 65 74 73 2e 6c  eys = brackets.l
3710: 6f 6f 70 4b 65 79 73 3b 0a 0a 20 20 20 20 2f 2f  oopKeys;..    //
3720: 20 69 73 74 61 6e 62 75 6c 20 69 67 6e 6f 72 65   istanbul ignore
3730: 20 6e 65 78 74 0a 20 20 20 20 5f 74 6d 70 6c 2e   next.    _tmpl.
3740: 63 6c 65 61 72 43 61 63 68 65 20 3d 20 66 75 6e  clearCache = fun
3750: 63 74 69 6f 6e 20 28 29 20 7b 20 5f 63 61 63 68  ction () { _cach
3760: 65 20 3d 20 7b 7d 3b 20 7d 3b 0a 0a 20 20 20 20  e = {}; };..    
3770: 5f 74 6d 70 6c 2e 65 72 72 6f 72 48 61 6e 64 6c  _tmpl.errorHandl
3780: 65 72 20 3d 20 6e 75 6c 6c 3b 0a 0a 20 20 20 20  er = null;..    
3790: 66 75 6e 63 74 69 6f 6e 20 5f 6c 6f 67 45 72 72  function _logErr
37a0: 20 28 65 72 72 2c 20 63 74 78 29 20 7b 0a 0a 20   (err, ctx) {.. 
37b0: 20 20 20 20 20 65 72 72 2e 72 69 6f 74 44 61 74       err.riotDat
37c0: 61 20 3d 20 7b 0a 20 20 20 20 20 20 20 20 74 61  a = {.        ta
37d0: 67 4e 61 6d 65 3a 20 63 74 78 20 26 26 20 63 74  gName: ctx && ct
37e0: 78 2e 5f 5f 20 26 26 20 63 74 78 2e 5f 5f 2e 74  x.__ && ctx.__.t
37f0: 61 67 4e 61 6d 65 2c 0a 20 20 20 20 20 20 20 20  agName,.        
3800: 5f 72 69 6f 74 5f 69 64 3a 20 63 74 78 20 26 26  _riot_id: ctx &&
3810: 20 63 74 78 2e 5f 72 69 6f 74 5f 69 64 20 20 2f   ctx._riot_id  /
3820: 2f 65 73 6c 69 6e 74 2d 64 69 73 61 62 6c 65 2d  /eslint-disable-
3830: 6c 69 6e 65 20 63 61 6d 65 6c 63 61 73 65 0a 20  line camelcase. 
3840: 20 20 20 20 20 7d 3b 0a 0a 20 20 20 20 20 20 69       };..      i
3850: 66 20 28 5f 74 6d 70 6c 2e 65 72 72 6f 72 48 61  f (_tmpl.errorHa
3860: 6e 64 6c 65 72 29 20 7b 20 5f 74 6d 70 6c 2e 65  ndler) { _tmpl.e
3870: 72 72 6f 72 48 61 6e 64 6c 65 72 28 65 72 72 29  rrorHandler(err)
3880: 3b 20 7d 0a 20 20 20 20 20 20 65 6c 73 65 20 69  ; }.      else i
3890: 66 20 28 0a 20 20 20 20 20 20 20 20 74 79 70 65  f (.        type
38a0: 6f 66 20 63 6f 6e 73 6f 6c 65 20 21 3d 3d 20 27  of console !== '
38b0: 75 6e 64 65 66 69 6e 65 64 27 20 26 26 0a 20 20  undefined' &&.  
38c0: 20 20 20 20 20 20 74 79 70 65 6f 66 20 63 6f 6e        typeof con
38d0: 73 6f 6c 65 2e 65 72 72 6f 72 20 3d 3d 3d 20 27  sole.error === '
38e0: 66 75 6e 63 74 69 6f 6e 27 0a 20 20 20 20 20 20  function'.      
38f0: 29 20 7b 0a 20 20 20 20 20 20 20 20 63 6f 6e 73  ) {.        cons
3900: 6f 6c 65 2e 65 72 72 6f 72 28 65 72 72 2e 6d 65  ole.error(err.me
3910: 73 73 61 67 65 29 3b 0a 20 20 20 20 20 20 20 20  ssage);.        
3920: 63 6f 6e 73 6f 6c 65 2e 6c 6f 67 28 27 3c 25 73  console.log('<%s
3930: 3e 20 25 73 27 2c 20 65 72 72 2e 72 69 6f 74 44  > %s', err.riotD
3940: 61 74 61 2e 74 61 67 4e 61 6d 65 20 7c 7c 20 27  ata.tagName || '
3950: 55 6e 6b 6e 6f 77 6e 20 74 61 67 27 2c 20 74 68  Unknown tag', th
3960: 69 73 2e 74 6d 70 6c 29 3b 20 2f 2f 20 65 73 6c  is.tmpl); // esl
3970: 69 6e 74 2d 64 69 73 61 62 6c 65 2d 6c 69 6e 65  int-disable-line
3980: 0a 20 20 20 20 20 20 20 20 63 6f 6e 73 6f 6c 65  .        console
3990: 2e 6c 6f 67 28 74 68 69 73 2e 64 61 74 61 29 3b  .log(this.data);
39a0: 20 2f 2f 20 65 73 6c 69 6e 74 2d 64 69 73 61 62   // eslint-disab
39b0: 6c 65 2d 6c 69 6e 65 0a 20 20 20 20 20 20 7d 0a  le-line.      }.
39c0: 20 20 20 20 7d 0a 0a 20 20 20 20 66 75 6e 63 74      }..    funct
39d0: 69 6f 6e 20 5f 63 72 65 61 74 65 20 28 73 74 72  ion _create (str
39e0: 29 20 7b 0a 20 20 20 20 20 20 76 61 72 20 65 78  ) {.      var ex
39f0: 70 72 20 3d 20 5f 67 65 74 54 6d 70 6c 28 73 74  pr = _getTmpl(st
3a00: 72 29 3b 0a 0a 20 20 20 20 20 20 69 66 20 28 65  r);..      if (e
3a10: 78 70 72 2e 73 6c 69 63 65 28 30 2c 20 31 31 29  xpr.slice(0, 11)
3a20: 20 21 3d 3d 20 27 74 72 79 7b 72 65 74 75 72 6e   !== 'try{return
3a30: 20 27 29 20 7b 20 65 78 70 72 20 3d 20 27 72 65   ') { expr = 're
3a40: 74 75 72 6e 20 27 20 2b 20 65 78 70 72 3b 20 7d  turn ' + expr; }
3a50: 0a 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e  ..      return n
3a60: 65 77 20 46 75 6e 63 74 69 6f 6e 28 27 45 27 2c  ew Function('E',
3a70: 20 65 78 70 72 20 2b 20 27 3b 27 29 20 20 20 20   expr + ';')    
3a80: 2f 2f 20 65 73 6c 69 6e 74 2d 64 69 73 61 62 6c  // eslint-disabl
3a90: 65 2d 6c 69 6e 65 20 6e 6f 2d 6e 65 77 2d 66 75  e-line no-new-fu
3aa0: 6e 63 0a 20 20 20 20 7d 0a 0a 20 20 20 20 76 61  nc.    }..    va
3ab0: 72 20 52 45 5f 44 51 55 4f 54 45 20 3d 20 2f 5c  r RE_DQUOTE = /\
3ac0: 75 32 30 35 37 2f 67 3b 0a 20 20 20 20 76 61 72  u2057/g;.    var
3ad0: 20 52 45 5f 51 42 4d 41 52 4b 20 3d 20 2f 5c 75   RE_QBMARK = /\u
3ae0: 32 30 35 37 28 5c 64 2b 29 7e 2f 67 3b 0a 0a 20  2057(\d+)~/g;.. 
3af0: 20 20 20 66 75 6e 63 74 69 6f 6e 20 5f 67 65 74     function _get
3b00: 54 6d 70 6c 20 28 73 74 72 29 20 7b 0a 20 20 20  Tmpl (str) {.   
3b10: 20 20 20 76 61 72 20 70 61 72 74 73 20 3d 20 62     var parts = b
3b20: 72 61 63 6b 65 74 73 2e 73 70 6c 69 74 28 73 74  rackets.split(st
3b30: 72 2e 72 65 70 6c 61 63 65 28 52 45 5f 44 51 55  r.replace(RE_DQU
3b40: 4f 54 45 2c 20 27 22 27 29 2c 20 31 29 3b 0a 20  OTE, '"'), 1);. 
3b50: 20 20 20 20 20 76 61 72 20 71 73 74 72 20 3d 20       var qstr = 
3b60: 70 61 72 74 73 2e 71 62 6c 6f 63 6b 73 3b 0a 20  parts.qblocks;. 
3b70: 20 20 20 20 20 76 61 72 20 65 78 70 72 3b 0a 0a       var expr;..
3b80: 20 20 20 20 20 20 69 66 20 28 70 61 72 74 73 2e        if (parts.
3b90: 6c 65 6e 67 74 68 20 3e 20 32 20 7c 7c 20 70 61  length > 2 || pa
3ba0: 72 74 73 5b 30 5d 29 20 7b 0a 20 20 20 20 20 20  rts[0]) {.      
3bb0: 20 20 76 61 72 20 69 2c 20 6a 2c 20 6c 69 73 74    var i, j, list
3bc0: 20 3d 20 5b 5d 3b 0a 0a 20 20 20 20 20 20 20 20   = [];..        
3bd0: 66 6f 72 20 28 69 20 3d 20 6a 20 3d 20 30 3b 20  for (i = j = 0; 
3be0: 69 20 3c 20 70 61 72 74 73 2e 6c 65 6e 67 74 68  i < parts.length
3bf0: 3b 20 2b 2b 69 29 20 7b 0a 0a 20 20 20 20 20 20  ; ++i) {..      
3c00: 20 20 20 20 65 78 70 72 20 3d 20 70 61 72 74 73      expr = parts
3c10: 5b 69 5d 3b 0a 0a 20 20 20 20 20 20 20 20 20 20  [i];..          
3c20: 69 66 20 28 65 78 70 72 20 26 26 20 28 65 78 70  if (expr && (exp
3c30: 72 20 3d 20 69 20 26 20 31 0a 0a 20 20 20 20 20  r = i & 1..     
3c40: 20 20 20 20 20 20 20 20 20 3f 20 5f 70 61 72 73           ? _pars
3c50: 65 45 78 70 72 28 65 78 70 72 2c 20 31 2c 20 71  eExpr(expr, 1, q
3c60: 73 74 72 29 0a 0a 20 20 20 20 20 20 20 20 20 20  str)..          
3c70: 20 20 20 20 3a 20 27 22 27 20 2b 20 65 78 70 72      : '"' + expr
3c80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3c90: 20 20 20 2e 72 65 70 6c 61 63 65 28 2f 5c 5c 2f     .replace(/\\/
3ca0: 67 2c 20 27 5c 5c 5c 5c 27 29 0a 20 20 20 20 20  g, '\\\\').     
3cb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2e 72 65               .re
3cc0: 70 6c 61 63 65 28 2f 5c 72 5c 6e 3f 7c 5c 6e 2f  place(/\r\n?|\n/
3cd0: 67 2c 20 27 5c 5c 6e 27 29 0a 20 20 20 20 20 20  g, '\\n').      
3ce0: 20 20 20 20 20 20 20 20 20 20 20 20 2e 72 65 70              .rep
3cf0: 6c 61 63 65 28 2f 22 2f 67 2c 20 27 5c 5c 22 27  lace(/"/g, '\\"'
3d00: 29 20 2b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ) +.            
3d10: 20 20 20 20 27 22 27 0a 0a 20 20 20 20 20 20 20      '"'..       
3d20: 20 20 20 20 20 29 29 20 7b 20 6c 69 73 74 5b 6a       )) { list[j
3d30: 2b 2b 5d 20 3d 20 65 78 70 72 3b 20 7d 0a 0a 20  ++] = expr; }.. 
3d40: 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20         }..      
3d50: 20 20 65 78 70 72 20 3d 20 6a 20 3c 20 32 20 3f    expr = j < 2 ?
3d60: 20 6c 69 73 74 5b 30 5d 0a 20 20 20 20 20 20 20   list[0].       
3d70: 20 20 20 20 20 20 3a 20 27 5b 27 20 2b 20 6c 69        : '[' + li
3d80: 73 74 2e 6a 6f 69 6e 28 27 2c 27 29 20 2b 20 27  st.join(',') + '
3d90: 5d 2e 6a 6f 69 6e 28 22 22 29 27 3b 0a 0a 20 20  ].join("")';..  
3da0: 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 0a 20 20      } else {..  
3db0: 20 20 20 20 20 20 65 78 70 72 20 3d 20 5f 70 61        expr = _pa
3dc0: 72 73 65 45 78 70 72 28 70 61 72 74 73 5b 31 5d  rseExpr(parts[1]
3dd0: 2c 20 30 2c 20 71 73 74 72 29 3b 0a 20 20 20 20  , 0, qstr);.    
3de0: 20 20 7d 0a 0a 20 20 20 20 20 20 69 66 20 28 71    }..      if (q
3df0: 73 74 72 2e 6c 65 6e 67 74 68 29 20 7b 0a 20 20  str.length) {.  
3e00: 20 20 20 20 20 20 65 78 70 72 20 3d 20 65 78 70        expr = exp
3e10: 72 2e 72 65 70 6c 61 63 65 28 52 45 5f 51 42 4d  r.replace(RE_QBM
3e20: 41 52 4b 2c 20 66 75 6e 63 74 69 6f 6e 20 28 5f  ARK, function (_
3e30: 2c 20 70 6f 73 29 20 7b 0a 20 20 20 20 20 20 20  , pos) {.       
3e40: 20 20 20 72 65 74 75 72 6e 20 71 73 74 72 5b 70     return qstr[p
3e50: 6f 73 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20  os].            
3e60: 2e 72 65 70 6c 61 63 65 28 2f 5c 72 2f 67 2c 20  .replace(/\r/g, 
3e70: 27 5c 5c 72 27 29 0a 20 20 20 20 20 20 20 20 20  '\\r').         
3e80: 20 20 20 2e 72 65 70 6c 61 63 65 28 2f 5c 6e 2f     .replace(/\n/
3e90: 67 2c 20 27 5c 5c 6e 27 29 0a 20 20 20 20 20 20  g, '\\n').      
3ea0: 20 20 7d 29 3b 0a 20 20 20 20 20 20 7d 0a 20 20    });.      }.  
3eb0: 20 20 20 20 72 65 74 75 72 6e 20 65 78 70 72 0a      return expr.
3ec0: 20 20 20 20 7d 0a 0a 20 20 20 20 76 61 72 20 52      }..    var R
3ed0: 45 5f 43 53 4e 41 4d 45 20 3d 20 2f 5e 28 3f 3a  E_CSNAME = /^(?:
3ee0: 28 2d 3f 5b 5f 41 2d 5a 61 2d 7a 5c 78 41 30 2d  (-?[_A-Za-z\xA0-
3ef0: 5c 78 46 46 5d 5b 2d 5c 77 5c 78 41 30 2d 5c 78  \xFF][-\w\xA0-\x
3f00: 46 46 5d 2a 29 7c 5c 75 32 30 35 37 28 5c 64 2b  FF]*)|\u2057(\d+
3f10: 29 7e 29 3a 2f 3b 0a 20 20 20 20 76 61 72 0a 20  )~):/;.    var. 
3f20: 20 20 20 20 20 52 45 5f 42 52 45 4e 44 20 3d 20       RE_BREND = 
3f30: 7b 0a 20 20 20 20 20 20 20 20 27 28 27 3a 20 2f  {.        '(': /
3f40: 5b 28 29 5d 2f 67 2c 0a 20 20 20 20 20 20 20 20  [()]/g,.        
3f50: 27 5b 27 3a 20 2f 5b 5b 5c 5d 5d 2f 67 2c 0a 20  '[': /[[\]]/g,. 
3f60: 20 20 20 20 20 20 20 27 7b 27 3a 20 2f 5b 7b 7d         '{': /[{}
3f70: 5d 2f 67 0a 20 20 20 20 20 20 7d 3b 0a 0a 20 20  ]/g.      };..  
3f80: 20 20 66 75 6e 63 74 69 6f 6e 20 5f 70 61 72 73    function _pars
3f90: 65 45 78 70 72 20 28 65 78 70 72 2c 20 61 73 54  eExpr (expr, asT
3fa0: 65 78 74 2c 20 71 73 74 72 29 20 7b 0a 0a 20 20  ext, qstr) {..  
3fb0: 20 20 20 20 65 78 70 72 20 3d 20 65 78 70 72 0a      expr = expr.
3fc0: 20 20 20 20 20 20 20 20 2e 72 65 70 6c 61 63 65          .replace
3fd0: 28 2f 5c 73 2b 2f 67 2c 20 27 20 27 29 2e 74 72  (/\s+/g, ' ').tr
3fe0: 69 6d 28 29 0a 20 20 20 20 20 20 20 20 2e 72 65  im().        .re
3ff0: 70 6c 61 63 65 28 2f 5c 20 3f 28 5b 5b 5c 28 7b  place(/\ ?([[\({
4000: 7d 2c 3f 5c 2e 3a 5d 29 5c 20 3f 2f 67 2c 20 27  },?\.:])\ ?/g, '
4010: 24 31 27 29 3b 0a 0a 20 20 20 20 20 20 69 66 20  $1');..      if 
4020: 28 65 78 70 72 29 20 7b 0a 20 20 20 20 20 20 20  (expr) {.       
4030: 20 76 61 72 0a 20 20 20 20 20 20 20 20 20 20 6c   var.          l
4040: 69 73 74 20 3d 20 5b 5d 2c 0a 20 20 20 20 20 20  ist = [],.      
4050: 20 20 20 20 63 6e 74 20 3d 20 30 2c 0a 20 20 20      cnt = 0,.   
4060: 20 20 20 20 20 20 20 6d 61 74 63 68 3b 0a 0a 20         match;.. 
4070: 20 20 20 20 20 20 20 77 68 69 6c 65 20 28 65 78         while (ex
4080: 70 72 20 26 26 0a 20 20 20 20 20 20 20 20 20 20  pr &&.          
4090: 20 20 20 20 28 6d 61 74 63 68 20 3d 20 65 78 70      (match = exp
40a0: 72 2e 6d 61 74 63 68 28 52 45 5f 43 53 4e 41 4d  r.match(RE_CSNAM
40b0: 45 29 29 20 26 26 0a 20 20 20 20 20 20 20 20 20  E)) &&.         
40c0: 20 20 20 20 20 21 6d 61 74 63 68 2e 69 6e 64 65       !match.inde
40d0: 78 0a 20 20 20 20 20 20 20 20 20 20 29 20 7b 0a  x.          ) {.
40e0: 20 20 20 20 20 20 20 20 20 20 76 61 72 0a 20 20            var.  
40f0: 20 20 20 20 20 20 20 20 20 20 6b 65 79 2c 0a 20            key,. 
4100: 20 20 20 20 20 20 20 20 20 20 20 6a 73 62 2c 0a             jsb,.
4110: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 20 3d              re =
4120: 20 2f 2c 7c 28 5b 5b 7b 28 5d 29 7c 24 2f 67 3b   /,|([[{(])|$/g;
4130: 0a 0a 20 20 20 20 20 20 20 20 20 20 65 78 70 72  ..          expr
4140: 20 3d 20 52 65 67 45 78 70 2e 72 69 67 68 74 43   = RegExp.rightC
4150: 6f 6e 74 65 78 74 3b 0a 20 20 20 20 20 20 20 20  ontext;.        
4160: 20 20 6b 65 79 20 20 3d 20 6d 61 74 63 68 5b 32    key  = match[2
4170: 5d 20 3f 20 71 73 74 72 5b 6d 61 74 63 68 5b 32  ] ? qstr[match[2
4180: 5d 5d 2e 73 6c 69 63 65 28 31 2c 20 2d 31 29 2e  ]].slice(1, -1).
4190: 74 72 69 6d 28 29 2e 72 65 70 6c 61 63 65 28 2f  trim().replace(/
41a0: 5c 73 2b 2f 67 2c 20 27 20 27 29 20 3a 20 6d 61  \s+/g, ' ') : ma
41b0: 74 63 68 5b 31 5d 3b 0a 0a 20 20 20 20 20 20 20  tch[1];..       
41c0: 20 20 20 77 68 69 6c 65 20 28 6a 73 62 20 3d 20     while (jsb = 
41d0: 28 6d 61 74 63 68 20 3d 20 72 65 2e 65 78 65 63  (match = re.exec
41e0: 28 65 78 70 72 29 29 5b 31 5d 29 20 7b 20 73 6b  (expr))[1]) { sk
41f0: 69 70 42 72 61 63 65 73 28 6a 73 62 2c 20 72 65  ipBraces(jsb, re
4200: 29 3b 20 7d 0a 0a 20 20 20 20 20 20 20 20 20 20  ); }..          
4210: 6a 73 62 20 20 3d 20 65 78 70 72 2e 73 6c 69 63  jsb  = expr.slic
4220: 65 28 30 2c 20 6d 61 74 63 68 2e 69 6e 64 65 78  e(0, match.index
4230: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 65 78 70  );.          exp
4240: 72 20 3d 20 52 65 67 45 78 70 2e 72 69 67 68 74  r = RegExp.right
4250: 43 6f 6e 74 65 78 74 3b 0a 0a 20 20 20 20 20 20  Context;..      
4260: 20 20 20 20 6c 69 73 74 5b 63 6e 74 2b 2b 5d 20      list[cnt++] 
4270: 3d 20 5f 77 72 61 70 45 78 70 72 28 6a 73 62 2c  = _wrapExpr(jsb,
4280: 20 31 2c 20 6b 65 79 29 3b 0a 20 20 20 20 20 20   1, key);.      
4290: 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 65 78 70    }..        exp
42a0: 72 20 3d 20 21 63 6e 74 20 3f 20 5f 77 72 61 70  r = !cnt ? _wrap
42b0: 45 78 70 72 28 65 78 70 72 2c 20 61 73 54 65 78  Expr(expr, asTex
42c0: 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  t).             
42d0: 3a 20 63 6e 74 20 3e 20 31 20 3f 20 27 5b 27 20  : cnt > 1 ? '[' 
42e0: 2b 20 6c 69 73 74 2e 6a 6f 69 6e 28 27 2c 27 29  + list.join(',')
42f0: 20 2b 20 27 5d 2e 6a 6f 69 6e 28 22 20 22 29 2e   + '].join(" ").
4300: 74 72 69 6d 28 29 27 20 3a 20 6c 69 73 74 5b 30  trim()' : list[0
4310: 5d 3b 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 20  ];.      }.     
4320: 20 72 65 74 75 72 6e 20 65 78 70 72 0a 0a 20 20   return expr..  
4330: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 73 6b 69      function ski
4340: 70 42 72 61 63 65 73 20 28 63 68 2c 20 72 65 29  pBraces (ch, re)
4350: 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 0a 20   {.        var. 
4360: 20 20 20 20 20 20 20 20 20 6d 6d 2c 0a 20 20 20           mm,.   
4370: 20 20 20 20 20 20 20 6c 76 20 3d 20 31 2c 0a 20         lv = 1,. 
4380: 20 20 20 20 20 20 20 20 20 69 72 20 3d 20 52 45           ir = RE
4390: 5f 42 52 45 4e 44 5b 63 68 5d 3b 0a 0a 20 20 20  _BREND[ch];..   
43a0: 20 20 20 20 20 69 72 2e 6c 61 73 74 49 6e 64 65       ir.lastInde
43b0: 78 20 3d 20 72 65 2e 6c 61 73 74 49 6e 64 65 78  x = re.lastIndex
43c0: 3b 0a 20 20 20 20 20 20 20 20 77 68 69 6c 65 20  ;.        while 
43d0: 28 6d 6d 20 3d 20 69 72 2e 65 78 65 63 28 65 78  (mm = ir.exec(ex
43e0: 70 72 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20  pr)) {.         
43f0: 20 69 66 20 28 6d 6d 5b 30 5d 20 3d 3d 3d 20 63   if (mm[0] === c
4400: 68 29 20 7b 20 2b 2b 6c 76 3b 20 7d 0a 20 20 20  h) { ++lv; }.   
4410: 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28         else if (
4420: 21 2d 2d 6c 76 29 20 7b 20 62 72 65 61 6b 20 7d  !--lv) { break }
4430: 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20  .        }.     
4440: 20 20 20 72 65 2e 6c 61 73 74 49 6e 64 65 78 20     re.lastIndex 
4450: 3d 20 6c 76 20 3f 20 65 78 70 72 2e 6c 65 6e 67  = lv ? expr.leng
4460: 74 68 20 3a 20 69 72 2e 6c 61 73 74 49 6e 64 65  th : ir.lastInde
4470: 78 3b 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d  x;.      }.    }
4480: 0a 0a 20 20 20 20 2f 2f 20 69 73 74 61 6e 62 75  ..    // istanbu
4490: 6c 20 69 67 6e 6f 72 65 20 6e 65 78 74 3a 20 6e  l ignore next: n
44a0: 6f 74 20 62 6f 74 68 0a 20 20 20 20 76 61 72 20  ot both.    var 
44b0: 2f 2f 20 65 73 6c 69 6e 74 2d 64 69 73 61 62 6c  // eslint-disabl
44c0: 65 2d 6e 65 78 74 2d 6c 69 6e 65 20 6d 61 78 2d  e-next-line max-
44d0: 6c 65 6e 0a 20 20 20 20 20 20 4a 53 5f 43 4f 4e  len.      JS_CON
44e0: 54 45 58 54 20 3d 20 27 22 69 6e 20 74 68 69 73  TEXT = '"in this
44f0: 3f 74 68 69 73 3a 27 20 2b 20 28 74 79 70 65 6f  ?this:' + (typeo
4500: 66 20 77 69 6e 64 6f 77 20 21 3d 3d 20 27 6f 62  f window !== 'ob
4510: 6a 65 63 74 27 20 3f 20 27 67 6c 6f 62 61 6c 27  ject' ? 'global'
4520: 20 3a 20 27 77 69 6e 64 6f 77 27 29 20 2b 20 27   : 'window') + '
4530: 29 2e 27 2c 0a 20 20 20 20 20 20 4a 53 5f 56 41  ).',.      JS_VA
4540: 52 4e 41 4d 45 20 3d 20 2f 5b 2c 7b 5d 5b 5c 24  RNAME = /[,{][\$
4550: 5c 77 5d 2b 28 3f 3d 3a 29 7c 28 5e 20 2a 7c 5b  \w]+(?=:)|(^ *|[
4560: 5e 24 5c 77 5c 2e 7b 5d 29 28 3f 21 28 3f 3a 74  ^$\w\.{])(?!(?:t
4570: 79 70 65 6f 66 7c 74 72 75 65 7c 66 61 6c 73 65  ypeof|true|false
4580: 7c 6e 75 6c 6c 7c 75 6e 64 65 66 69 6e 65 64 7c  |null|undefined|
4590: 69 6e 7c 69 6e 73 74 61 6e 63 65 6f 66 7c 69 73  in|instanceof|is
45a0: 28 3f 3a 46 69 6e 69 74 65 7c 4e 61 4e 29 7c 76  (?:Finite|NaN)|v
45b0: 6f 69 64 7c 4e 61 4e 7c 6e 65 77 7c 44 61 74 65  oid|NaN|new|Date
45c0: 7c 52 65 67 45 78 70 7c 4d 61 74 68 29 28 3f 21  |RegExp|Math)(?!
45d0: 5b 24 5c 77 5d 29 29 28 5b 24 5f 41 2d 5a 61 2d  [$\w]))([$_A-Za-
45e0: 7a 5d 5b 24 5c 77 5d 2a 29 2f 67 2c 0a 20 20 20  z][$\w]*)/g,.   
45f0: 20 20 20 4a 53 5f 4e 4f 50 52 4f 50 53 20 3d 20     JS_NOPROPS = 
4600: 2f 5e 28 3f 3d 28 5c 2e 5b 24 5c 77 5d 2b 29 29  /^(?=(\.[$\w]+))
4610: 5c 31 28 3f 3a 5b 5e 2e 5b 28 5d 7c 24 29 2f 3b  \1(?:[^.[(]|$)/;
4620: 0a 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 5f  ..    function _
4630: 77 72 61 70 45 78 70 72 20 28 65 78 70 72 2c 20  wrapExpr (expr, 
4640: 61 73 54 65 78 74 2c 20 6b 65 79 29 20 7b 0a 20  asText, key) {. 
4650: 20 20 20 20 20 76 61 72 20 74 62 3b 0a 0a 20 20       var tb;..  
4660: 20 20 20 20 65 78 70 72 20 3d 20 65 78 70 72 2e      expr = expr.
4670: 72 65 70 6c 61 63 65 28 4a 53 5f 56 41 52 4e 41  replace(JS_VARNA
4680: 4d 45 2c 20 66 75 6e 63 74 69 6f 6e 20 28 6d 61  ME, function (ma
4690: 74 63 68 2c 20 70 2c 20 6d 76 61 72 2c 20 70 6f  tch, p, mvar, po
46a0: 73 2c 20 73 29 20 7b 0a 20 20 20 20 20 20 20 20  s, s) {.        
46b0: 69 66 20 28 6d 76 61 72 29 20 7b 0a 20 20 20 20  if (mvar) {.    
46c0: 20 20 20 20 20 20 70 6f 73 20 3d 20 74 62 20 3f        pos = tb ?
46d0: 20 30 20 3a 20 70 6f 73 20 2b 20 6d 61 74 63 68   0 : pos + match
46e0: 2e 6c 65 6e 67 74 68 3b 0a 0a 20 20 20 20 20 20  .length;..      
46f0: 20 20 20 20 69 66 20 28 6d 76 61 72 20 21 3d 3d      if (mvar !==
4700: 20 27 74 68 69 73 27 20 26 26 20 6d 76 61 72 20   'this' && mvar 
4710: 21 3d 3d 20 27 67 6c 6f 62 61 6c 27 20 26 26 20  !== 'global' && 
4720: 6d 76 61 72 20 21 3d 3d 20 27 77 69 6e 64 6f 77  mvar !== 'window
4730: 27 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  ') {.           
4740: 20 6d 61 74 63 68 20 3d 20 70 20 2b 20 27 28 22   match = p + '("
4750: 27 20 2b 20 6d 76 61 72 20 2b 20 4a 53 5f 43 4f  ' + mvar + JS_CO
4760: 4e 54 45 58 54 20 2b 20 6d 76 61 72 3b 0a 20 20  NTEXT + mvar;.  
4770: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 6f            if (po
4780: 73 29 20 7b 20 74 62 20 3d 20 28 73 20 3d 20 73  s) { tb = (s = s
4790: 5b 70 6f 73 5d 29 20 3d 3d 3d 20 27 2e 27 20 7c  [pos]) === '.' |
47a0: 7c 20 73 20 3d 3d 3d 20 27 28 27 20 7c 7c 20 73  | s === '(' || s
47b0: 20 3d 3d 3d 20 27 5b 27 3b 20 7d 0a 20 20 20 20   === '['; }.    
47c0: 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20        } else if 
47d0: 28 70 6f 73 29 20 7b 0a 20 20 20 20 20 20 20 20  (pos) {.        
47e0: 20 20 20 20 74 62 20 3d 20 21 4a 53 5f 4e 4f 50      tb = !JS_NOP
47f0: 52 4f 50 53 2e 74 65 73 74 28 73 2e 73 6c 69 63  ROPS.test(s.slic
4800: 65 28 70 6f 73 29 29 3b 0a 20 20 20 20 20 20 20  e(pos));.       
4810: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a 20     }.        }. 
4820: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 61         return ma
4830: 74 63 68 0a 20 20 20 20 20 20 7d 29 3b 0a 0a 20  tch.      });.. 
4840: 20 20 20 20 20 69 66 20 28 74 62 29 20 7b 0a 20       if (tb) {. 
4850: 20 20 20 20 20 20 20 65 78 70 72 20 3d 20 27 74         expr = 't
4860: 72 79 7b 72 65 74 75 72 6e 20 27 20 2b 20 65 78  ry{return ' + ex
4870: 70 72 20 2b 20 27 7d 63 61 74 63 68 28 65 29 7b  pr + '}catch(e){
4880: 45 28 65 2c 74 68 69 73 29 7d 27 3b 0a 20 20 20  E(e,this)}';.   
4890: 20 20 20 7d 0a 0a 20 20 20 20 20 20 69 66 20 28     }..      if (
48a0: 6b 65 79 29 20 7b 0a 0a 20 20 20 20 20 20 20 20  key) {..        
48b0: 65 78 70 72 20 3d 20 28 74 62 0a 20 20 20 20 20  expr = (tb.     
48c0: 20 20 20 20 20 20 20 3f 20 27 66 75 6e 63 74 69         ? 'functi
48d0: 6f 6e 28 29 7b 27 20 2b 20 65 78 70 72 20 2b 20  on(){' + expr + 
48e0: 27 7d 2e 63 61 6c 6c 28 74 68 69 73 29 27 20 3a  '}.call(this)' :
48f0: 20 27 28 27 20 2b 20 65 78 70 72 20 2b 20 27 29   '(' + expr + ')
4900: 27 0a 20 20 20 20 20 20 20 20 20 20 29 20 2b 20  '.          ) + 
4910: 27 3f 22 27 20 2b 20 6b 65 79 20 2b 20 27 22 3a  '?"' + key + '":
4920: 22 22 27 3b 0a 0a 20 20 20 20 20 20 7d 20 65 6c  ""';..      } el
4930: 73 65 20 69 66 20 28 61 73 54 65 78 74 29 20 7b  se if (asText) {
4940: 0a 0a 20 20 20 20 20 20 20 20 65 78 70 72 20 3d  ..        expr =
4950: 20 27 66 75 6e 63 74 69 6f 6e 28 76 29 7b 27 20   'function(v){' 
4960: 2b 20 28 74 62 0a 20 20 20 20 20 20 20 20 20 20  + (tb.          
4970: 20 20 3f 20 65 78 70 72 2e 72 65 70 6c 61 63 65    ? expr.replace
4980: 28 27 72 65 74 75 72 6e 20 27 2c 20 27 76 3d 27  ('return ', 'v='
4990: 29 20 3a 20 27 76 3d 28 27 20 2b 20 65 78 70 72  ) : 'v=(' + expr
49a0: 20 2b 20 27 29 27 0a 20 20 20 20 20 20 20 20 20   + ')'.         
49b0: 20 29 20 2b 20 27 3b 72 65 74 75 72 6e 20 76 7c   ) + ';return v|
49c0: 7c 76 3d 3d 3d 30 3f 76 3a 22 22 7d 2e 63 61 6c  |v===0?v:""}.cal
49d0: 6c 28 74 68 69 73 29 27 3b 0a 20 20 20 20 20 20  l(this)';.      
49e0: 7d 0a 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20  }..      return 
49f0: 65 78 70 72 0a 20 20 20 20 7d 0a 0a 20 20 20 20  expr.    }..    
4a00: 5f 74 6d 70 6c 2e 76 65 72 73 69 6f 6e 20 3d 20  _tmpl.version = 
4a10: 62 72 61 63 6b 65 74 73 2e 76 65 72 73 69 6f 6e  brackets.version
4a20: 20 3d 20 27 76 33 2e 30 2e 38 27 3b 0a 0a 20 20   = 'v3.0.8';..  
4a30: 20 20 72 65 74 75 72 6e 20 5f 74 6d 70 6c 0a 0a    return _tmpl..
4a40: 20 20 7d 29 28 29 3b 0a 0a 20 20 2f 2a 20 69 73    })();..  /* is
4a50: 74 61 6e 62 75 6c 20 69 67 6e 6f 72 65 20 6e 65  tanbul ignore ne
4a60: 78 74 20 2a 2f 0a 20 20 76 61 72 20 6f 62 73 65  xt */.  var obse
4a70: 72 76 61 62 6c 65 20 3d 20 66 75 6e 63 74 69 6f  rvable = functio
4a80: 6e 28 65 6c 29 20 7b 0a 0a 20 20 20 20 2f 2a 2a  n(el) {..    /**
4a90: 0a 20 20 20 20 20 2a 20 45 78 74 65 6e 64 20 74  .     * Extend t
4aa0: 68 65 20 6f 72 69 67 69 6e 61 6c 20 6f 62 6a 65  he original obje
4ab0: 63 74 20 6f 72 20 63 72 65 61 74 65 20 61 20 6e  ct or create a n
4ac0: 65 77 20 65 6d 70 74 79 20 6f 6e 65 0a 20 20 20  ew empty one.   
4ad0: 20 20 2a 20 40 74 79 70 65 20 7b 20 4f 62 6a 65    * @type { Obje
4ae0: 63 74 20 7d 0a 20 20 20 20 20 2a 2f 0a 0a 20 20  ct }.     */..  
4af0: 20 20 65 6c 20 3d 20 65 6c 20 7c 7c 20 7b 7d 3b    el = el || {};
4b00: 0a 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a  ..    /**.     *
4b10: 20 50 72 69 76 61 74 65 20 76 61 72 69 61 62 6c   Private variabl
4b20: 65 73 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 76  es.     */.    v
4b30: 61 72 20 63 61 6c 6c 62 61 63 6b 73 20 3d 20 7b  ar callbacks = {
4b40: 7d 2c 0a 20 20 20 20 20 20 73 6c 69 63 65 20 3d  },.      slice =
4b50: 20 41 72 72 61 79 2e 70 72 6f 74 6f 74 79 70 65   Array.prototype
4b60: 2e 73 6c 69 63 65 3b 0a 0a 20 20 20 20 2f 2a 2a  .slice;..    /**
4b70: 0a 20 20 20 20 20 2a 20 50 75 62 6c 69 63 20 41  .     * Public A
4b80: 70 69 0a 20 20 20 20 20 2a 2f 0a 0a 20 20 20 20  pi.     */..    
4b90: 2f 2f 20 65 78 74 65 6e 64 20 74 68 65 20 65 6c  // extend the el
4ba0: 20 6f 62 6a 65 63 74 20 61 64 64 69 6e 67 20 74   object adding t
4bb0: 68 65 20 6f 62 73 65 72 76 61 62 6c 65 20 6d 65  he observable me
4bc0: 74 68 6f 64 73 0a 20 20 20 20 4f 62 6a 65 63 74  thods.    Object
4bd0: 2e 64 65 66 69 6e 65 50 72 6f 70 65 72 74 69 65  .definePropertie
4be0: 73 28 65 6c 2c 20 7b 0a 20 20 20 20 20 20 2f 2a  s(el, {.      /*
4bf0: 2a 0a 20 20 20 20 20 20 20 2a 20 4c 69 73 74 65  *.       * Liste
4c00: 6e 20 74 6f 20 74 68 65 20 67 69 76 65 6e 20 60  n to the given `
4c10: 65 76 65 6e 74 60 20 61 6e 64 73 0a 20 20 20 20  event` ands.    
4c20: 20 20 20 2a 20 65 78 65 63 75 74 65 20 74 68 65     * execute the
4c30: 20 60 63 61 6c 6c 62 61 63 6b 60 20 65 61 63 68   `callback` each
4c40: 20 74 69 6d 65 20 61 6e 20 65 76 65 6e 74 20 69   time an event i
4c50: 73 20 74 72 69 67 67 65 72 65 64 2e 0a 20 20 20  s triggered..   
4c60: 20 20 20 20 2a 20 40 70 61 72 61 6d 20 20 7b 20      * @param  { 
4c70: 53 74 72 69 6e 67 20 7d 20 65 76 65 6e 74 20 2d  String } event -
4c80: 20 65 76 65 6e 74 20 69 64 0a 20 20 20 20 20 20   event id.      
4c90: 20 2a 20 40 70 61 72 61 6d 20 20 7b 20 46 75 6e   * @param  { Fun
4ca0: 63 74 69 6f 6e 20 7d 20 66 6e 20 2d 20 63 61 6c  ction } fn - cal
4cb0: 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 0a 20  lback function. 
4cc0: 20 20 20 20 20 20 2a 20 40 72 65 74 75 72 6e 73        * @returns
4cd0: 20 7b 20 4f 62 6a 65 63 74 20 7d 20 65 6c 0a 20   { Object } el. 
4ce0: 20 20 20 20 20 20 2a 2f 0a 20 20 20 20 20 20 6f        */.      o
4cf0: 6e 3a 20 7b 0a 20 20 20 20 20 20 20 20 76 61 6c  n: {.        val
4d00: 75 65 3a 20 66 75 6e 63 74 69 6f 6e 28 65 76 65  ue: function(eve
4d10: 6e 74 2c 20 66 6e 29 20 7b 0a 20 20 20 20 20 20  nt, fn) {.      
4d20: 20 20 20 20 69 66 20 28 74 79 70 65 6f 66 20 66      if (typeof f
4d30: 6e 20 3d 3d 20 27 66 75 6e 63 74 69 6f 6e 27 29  n == 'function')
4d40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 20 28  .            { (
4d50: 63 61 6c 6c 62 61 63 6b 73 5b 65 76 65 6e 74 5d  callbacks[event]
4d60: 20 3d 20 63 61 6c 6c 62 61 63 6b 73 5b 65 76 65   = callbacks[eve
4d70: 6e 74 5d 20 7c 7c 20 5b 5d 29 2e 70 75 73 68 28  nt] || []).push(
4d80: 66 6e 29 3b 20 7d 0a 20 20 20 20 20 20 20 20 20  fn); }.         
4d90: 20 72 65 74 75 72 6e 20 65 6c 0a 20 20 20 20 20   return el.     
4da0: 20 20 20 7d 2c 0a 20 20 20 20 20 20 20 20 65 6e     },.        en
4db0: 75 6d 65 72 61 62 6c 65 3a 20 66 61 6c 73 65 2c  umerable: false,
4dc0: 0a 20 20 20 20 20 20 20 20 77 72 69 74 61 62 6c  .        writabl
4dd0: 65 3a 20 66 61 6c 73 65 2c 0a 20 20 20 20 20 20  e: false,.      
4de0: 20 20 63 6f 6e 66 69 67 75 72 61 62 6c 65 3a 20    configurable: 
4df0: 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 0a  false.      },..
4e00: 20 20 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 20        /**.      
4e10: 20 2a 20 52 65 6d 6f 76 65 73 20 74 68 65 20 67   * Removes the g
4e20: 69 76 65 6e 20 60 65 76 65 6e 74 60 20 6c 69 73  iven `event` lis
4e30: 74 65 6e 65 72 73 0a 20 20 20 20 20 20 20 2a 20  teners.       * 
4e40: 40 70 61 72 61 6d 20 20 20 7b 20 53 74 72 69 6e  @param   { Strin
4e50: 67 20 7d 20 65 76 65 6e 74 20 2d 20 65 76 65 6e  g } event - even
4e60: 74 20 69 64 0a 20 20 20 20 20 20 20 2a 20 40 70  t id.       * @p
4e70: 61 72 61 6d 20 20 20 7b 20 46 75 6e 63 74 69 6f  aram   { Functio
4e80: 6e 20 7d 20 66 6e 20 2d 20 63 61 6c 6c 62 61 63  n } fn - callbac
4e90: 6b 20 66 75 6e 63 74 69 6f 6e 0a 20 20 20 20 20  k function.     
4ea0: 20 20 2a 20 40 72 65 74 75 72 6e 73 20 7b 20 4f    * @returns { O
4eb0: 62 6a 65 63 74 20 7d 20 65 6c 0a 20 20 20 20 20  bject } el.     
4ec0: 20 20 2a 2f 0a 20 20 20 20 20 20 6f 66 66 3a 20    */.      off: 
4ed0: 7b 0a 20 20 20 20 20 20 20 20 76 61 6c 75 65 3a  {.        value:
4ee0: 20 66 75 6e 63 74 69 6f 6e 28 65 76 65 6e 74 2c   function(event,
4ef0: 20 66 6e 29 20 7b 0a 20 20 20 20 20 20 20 20 20   fn) {.         
4f00: 20 69 66 20 28 65 76 65 6e 74 20 3d 3d 20 27 2a   if (event == '*
4f10: 27 20 26 26 20 21 66 6e 29 20 7b 20 63 61 6c 6c  ' && !fn) { call
4f20: 62 61 63 6b 73 20 3d 20 7b 7d 3b 20 7d 0a 20 20  backs = {}; }.  
4f30: 20 20 20 20 20 20 20 20 65 6c 73 65 20 7b 0a 20          else {. 
4f40: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 66             if (f
4f50: 6e 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  n) {.           
4f60: 20 20 20 76 61 72 20 61 72 72 20 3d 20 63 61 6c     var arr = cal
4f70: 6c 62 61 63 6b 73 5b 65 76 65 6e 74 5d 3b 0a 20  lbacks[event];. 
4f80: 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72               for
4f90: 20 28 76 61 72 20 69 20 3d 20 30 2c 20 63 62 3b   (var i = 0, cb;
4fa0: 20 63 62 20 3d 20 61 72 72 20 26 26 20 61 72 72   cb = arr && arr
4fb0: 5b 69 5d 3b 20 2b 2b 69 29 20 7b 0a 20 20 20 20  [i]; ++i) {.    
4fc0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
4fd0: 63 62 20 3d 3d 20 66 6e 29 20 7b 20 61 72 72 2e  cb == fn) { arr.
4fe0: 73 70 6c 69 63 65 28 69 2d 2d 2c 20 31 29 3b 20  splice(i--, 1); 
4ff0: 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  }.              
5000: 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 20  }.            } 
5010: 65 6c 73 65 20 7b 20 64 65 6c 65 74 65 20 63 61  else { delete ca
5020: 6c 6c 62 61 63 6b 73 5b 65 76 65 6e 74 5d 3b 20  llbacks[event]; 
5030: 7d 0a 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20  }.          }.  
5040: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 65          return e
5050: 6c 0a 20 20 20 20 20 20 20 20 7d 2c 0a 20 20 20  l.        },.   
5060: 20 20 20 20 20 65 6e 75 6d 65 72 61 62 6c 65 3a       enumerable:
5070: 20 66 61 6c 73 65 2c 0a 20 20 20 20 20 20 20 20   false,.        
5080: 77 72 69 74 61 62 6c 65 3a 20 66 61 6c 73 65 2c  writable: false,
5090: 0a 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75  .        configu
50a0: 72 61 62 6c 65 3a 20 66 61 6c 73 65 0a 20 20 20  rable: false.   
50b0: 20 20 20 7d 2c 0a 0a 20 20 20 20 20 20 2f 2a 2a     },..      /**
50c0: 0a 20 20 20 20 20 20 20 2a 20 4c 69 73 74 65 6e  .       * Listen
50d0: 20 74 6f 20 74 68 65 20 67 69 76 65 6e 20 60 65   to the given `e
50e0: 76 65 6e 74 60 20 61 6e 64 0a 20 20 20 20 20 20  vent` and.      
50f0: 20 2a 20 65 78 65 63 75 74 65 20 74 68 65 20 60   * execute the `
5100: 63 61 6c 6c 62 61 63 6b 60 20 61 74 20 6d 6f 73  callback` at mos
5110: 74 20 6f 6e 63 65 0a 20 20 20 20 20 20 20 2a 20  t once.       * 
5120: 40 70 61 72 61 6d 20 20 20 7b 20 53 74 72 69 6e  @param   { Strin
5130: 67 20 7d 20 65 76 65 6e 74 20 2d 20 65 76 65 6e  g } event - even
5140: 74 20 69 64 0a 20 20 20 20 20 20 20 2a 20 40 70  t id.       * @p
5150: 61 72 61 6d 20 20 20 7b 20 46 75 6e 63 74 69 6f  aram   { Functio
5160: 6e 20 7d 20 66 6e 20 2d 20 63 61 6c 6c 62 61 63  n } fn - callbac
5170: 6b 20 66 75 6e 63 74 69 6f 6e 0a 20 20 20 20 20  k function.     
5180: 20 20 2a 20 40 72 65 74 75 72 6e 73 20 7b 20 4f    * @returns { O
5190: 62 6a 65 63 74 20 7d 20 65 6c 0a 20 20 20 20 20  bject } el.     
51a0: 20 20 2a 2f 0a 20 20 20 20 20 20 6f 6e 65 3a 20    */.      one: 
51b0: 7b 0a 20 20 20 20 20 20 20 20 76 61 6c 75 65 3a  {.        value:
51c0: 20 66 75 6e 63 74 69 6f 6e 28 65 76 65 6e 74 2c   function(event,
51d0: 20 66 6e 29 20 7b 0a 20 20 20 20 20 20 20 20 20   fn) {.         
51e0: 20 66 75 6e 63 74 69 6f 6e 20 6f 6e 28 29 20 7b   function on() {
51f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 2e  .            el.
5200: 6f 66 66 28 65 76 65 6e 74 2c 20 6f 6e 29 3b 0a  off(event, on);.
5210: 20 20 20 20 20 20 20 20 20 20 20 20 66 6e 2e 61              fn.a
5220: 70 70 6c 79 28 65 6c 2c 20 61 72 67 75 6d 65 6e  pply(el, argumen
5230: 74 73 29 3b 0a 20 20 20 20 20 20 20 20 20 20 7d  ts);.          }
5240: 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
5250: 6e 20 65 6c 2e 6f 6e 28 65 76 65 6e 74 2c 20 6f  n el.on(event, o
5260: 6e 29 0a 20 20 20 20 20 20 20 20 7d 2c 0a 20 20  n).        },.  
5270: 20 20 20 20 20 20 65 6e 75 6d 65 72 61 62 6c 65        enumerable
5280: 3a 20 66 61 6c 73 65 2c 0a 20 20 20 20 20 20 20  : false,.       
5290: 20 77 72 69 74 61 62 6c 65 3a 20 66 61 6c 73 65   writable: false
52a0: 2c 0a 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67  ,.        config
52b0: 75 72 61 62 6c 65 3a 20 66 61 6c 73 65 0a 20 20  urable: false.  
52c0: 20 20 20 20 7d 2c 0a 0a 20 20 20 20 20 20 2f 2a      },..      /*
52d0: 2a 0a 20 20 20 20 20 20 20 2a 20 45 78 65 63 75  *.       * Execu
52e0: 74 65 20 61 6c 6c 20 63 61 6c 6c 62 61 63 6b 20  te all callback 
52f0: 66 75 6e 63 74 69 6f 6e 73 20 74 68 61 74 20 6c  functions that l
5300: 69 73 74 65 6e 20 74 6f 0a 20 20 20 20 20 20 20  isten to.       
5310: 2a 20 74 68 65 20 67 69 76 65 6e 20 60 65 76 65  * the given `eve
5320: 6e 74 60 0a 20 20 20 20 20 20 20 2a 20 40 70 61  nt`.       * @pa
5330: 72 61 6d 20 20 20 7b 20 53 74 72 69 6e 67 20 7d  ram   { String }
5340: 20 65 76 65 6e 74 20 2d 20 65 76 65 6e 74 20 69   event - event i
5350: 64 0a 20 20 20 20 20 20 20 2a 20 40 72 65 74 75  d.       * @retu
5360: 72 6e 73 20 7b 20 4f 62 6a 65 63 74 20 7d 20 65  rns { Object } e
5370: 6c 0a 20 20 20 20 20 20 20 2a 2f 0a 20 20 20 20  l.       */.    
5380: 20 20 74 72 69 67 67 65 72 3a 20 7b 0a 20 20 20    trigger: {.   
5390: 20 20 20 20 20 76 61 6c 75 65 3a 20 66 75 6e 63       value: func
53a0: 74 69 6f 6e 28 65 76 65 6e 74 29 20 7b 0a 20 20  tion(event) {.  
53b0: 20 20 20 20 20 20 20 20 76 61 72 20 61 72 67 75          var argu
53c0: 6d 65 6e 74 73 24 31 20 3d 20 61 72 67 75 6d 65  ments$1 = argume
53d0: 6e 74 73 3b 0a 0a 0a 20 20 20 20 20 20 20 20 20  nts;...         
53e0: 20 2f 2f 20 67 65 74 74 69 6e 67 20 74 68 65 20   // getting the 
53f0: 61 72 67 75 6d 65 6e 74 73 0a 20 20 20 20 20 20  arguments.      
5400: 20 20 20 20 76 61 72 20 61 72 67 6c 65 6e 20 3d      var arglen =
5410: 20 61 72 67 75 6d 65 6e 74 73 2e 6c 65 6e 67 74   arguments.lengt
5420: 68 20 2d 20 31 2c 0a 20 20 20 20 20 20 20 20 20  h - 1,.         
5430: 20 20 20 61 72 67 73 20 3d 20 6e 65 77 20 41 72     args = new Ar
5440: 72 61 79 28 61 72 67 6c 65 6e 29 2c 0a 20 20 20  ray(arglen),.   
5450: 20 20 20 20 20 20 20 20 20 66 6e 73 2c 0a 20 20           fns,.  
5460: 20 20 20 20 20 20 20 20 20 20 66 6e 2c 0a 20 20            fn,.  
5470: 20 20 20 20 20 20 20 20 20 20 69 3b 0a 0a 20 20            i;..  
5480: 20 20 20 20 20 20 20 20 66 6f 72 20 28 69 20 3d          for (i =
5490: 20 30 3b 20 69 20 3c 20 61 72 67 6c 65 6e 3b 20   0; i < arglen; 
54a0: 69 2b 2b 29 20 7b 0a 20 20 20 20 20 20 20 20 20  i++) {.         
54b0: 20 20 20 61 72 67 73 5b 69 5d 20 3d 20 61 72 67     args[i] = arg
54c0: 75 6d 65 6e 74 73 24 31 5b 69 20 2b 20 31 5d 3b  uments$1[i + 1];
54d0: 20 2f 2f 20 73 6b 69 70 20 66 69 72 73 74 20 61   // skip first a
54e0: 72 67 75 6d 65 6e 74 0a 20 20 20 20 20 20 20 20  rgument.        
54f0: 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 20 20 66    }..          f
5500: 6e 73 20 3d 20 73 6c 69 63 65 2e 63 61 6c 6c 28  ns = slice.call(
5510: 63 61 6c 6c 62 61 63 6b 73 5b 65 76 65 6e 74 5d  callbacks[event]
5520: 20 7c 7c 20 5b 5d 2c 20 30 29 3b 0a 0a 20 20 20   || [], 0);..   
5530: 20 20 20 20 20 20 20 66 6f 72 20 28 69 20 3d 20         for (i = 
5540: 30 3b 20 66 6e 20 3d 20 66 6e 73 5b 69 5d 3b 20  0; fn = fns[i]; 
5550: 2b 2b 69 29 20 7b 0a 20 20 20 20 20 20 20 20 20  ++i) {.         
5560: 20 20 20 66 6e 2e 61 70 70 6c 79 28 65 6c 2c 20     fn.apply(el, 
5570: 61 72 67 73 29 3b 0a 20 20 20 20 20 20 20 20 20  args);.         
5580: 20 7d 0a 0a 20 20 20 20 20 20 20 20 20 20 69 66   }..          if
5590: 20 28 63 61 6c 6c 62 61 63 6b 73 5b 27 2a 27 5d   (callbacks['*']
55a0: 20 26 26 20 65 76 65 6e 74 20 21 3d 20 27 2a 27   && event != '*'
55b0: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 20  ).            { 
55c0: 65 6c 2e 74 72 69 67 67 65 72 2e 61 70 70 6c 79  el.trigger.apply
55d0: 28 65 6c 2c 20 5b 27 2a 27 2c 20 65 76 65 6e 74  (el, ['*', event
55e0: 5d 2e 63 6f 6e 63 61 74 28 61 72 67 73 29 29 3b  ].concat(args));
55f0: 20 7d 0a 0a 20 20 20 20 20 20 20 20 20 20 72 65   }..          re
5600: 74 75 72 6e 20 65 6c 0a 20 20 20 20 20 20 20 20  turn el.        
5610: 7d 2c 0a 20 20 20 20 20 20 20 20 65 6e 75 6d 65  },.        enume
5620: 72 61 62 6c 65 3a 20 66 61 6c 73 65 2c 0a 20 20  rable: false,.  
5630: 20 20 20 20 20 20 77 72 69 74 61 62 6c 65 3a 20        writable: 
5640: 66 61 6c 73 65 2c 0a 20 20 20 20 20 20 20 20 63  false,.        c
5650: 6f 6e 66 69 67 75 72 61 62 6c 65 3a 20 66 61 6c  onfigurable: fal
5660: 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d  se.      }.    }
5670: 29 3b 0a 0a 20 20 20 20 72 65 74 75 72 6e 20 65  );..    return e
5680: 6c 0a 0a 20 20 7d 3b 0a 0a 20 20 2f 2a 2a 0a 20  l..  };..  /**. 
5690: 20 20 2a 20 53 68 6f 72 74 20 61 6c 69 61 73 20    * Short alias 
56a0: 66 6f 72 20 4f 62 6a 65 63 74 2e 67 65 74 4f 77  for Object.getOw
56b0: 6e 50 72 6f 70 65 72 74 79 44 65 73 63 72 69 70  nPropertyDescrip
56c0: 74 6f 72 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63  tor.   */.  func
56d0: 74 69 6f 6e 20 67 65 74 50 72 6f 70 44 65 73 63  tion getPropDesc
56e0: 72 69 70 74 6f 72 20 28 6f 2c 20 6b 29 20 7b 0a  riptor (o, k) {.
56f0: 20 20 20 20 72 65 74 75 72 6e 20 4f 62 6a 65 63      return Objec
5700: 74 2e 67 65 74 4f 77 6e 50 72 6f 70 65 72 74 79  t.getOwnProperty
5710: 44 65 73 63 72 69 70 74 6f 72 28 6f 2c 20 6b 29  Descriptor(o, k)
5720: 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a  .  }..  /**.   *
5730: 20 43 68 65 63 6b 20 69 66 20 70 61 73 73 65 64   Check if passed
5740: 20 61 72 67 75 6d 65 6e 74 20 69 73 20 75 6e 64   argument is und
5750: 65 66 69 6e 65 64 0a 20 20 20 2a 20 40 70 61 72  efined.   * @par
5760: 61 6d 20 20 20 7b 20 2a 20 7d 20 76 61 6c 75 65  am   { * } value
5770: 20 2d 0a 20 20 20 2a 20 40 72 65 74 75 72 6e 73   -.   * @returns
5780: 20 7b 20 42 6f 6f 6c 65 61 6e 20 7d 20 2d 0a 20   { Boolean } -. 
5790: 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20    */.  function 
57a0: 69 73 55 6e 64 65 66 69 6e 65 64 28 76 61 6c 75  isUndefined(valu
57b0: 65 29 20 7b 0a 20 20 20 20 72 65 74 75 72 6e 20  e) {.    return 
57c0: 74 79 70 65 6f 66 20 76 61 6c 75 65 20 3d 3d 3d  typeof value ===
57d0: 20 54 5f 55 4e 44 45 46 0a 20 20 7d 0a 0a 20 20   T_UNDEF.  }..  
57e0: 2f 2a 2a 0a 20 20 20 2a 20 43 68 65 63 6b 20 77  /**.   * Check w
57f0: 68 65 74 68 65 72 20 6f 62 6a 65 63 74 27 73 20  hether object's 
5800: 70 72 6f 70 65 72 74 79 20 63 6f 75 6c 64 20 62  property could b
5810: 65 20 6f 76 65 72 72 69 64 64 65 6e 0a 20 20 20  e overridden.   
5820: 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 4f 62 6a  * @param   { Obj
5830: 65 63 74 20 7d 20 20 6f 62 6a 20 2d 20 73 6f 75  ect }  obj - sou
5840: 72 63 65 20 6f 62 6a 65 63 74 0a 20 20 20 2a 20  rce object.   * 
5850: 40 70 61 72 61 6d 20 20 20 7b 20 53 74 72 69 6e  @param   { Strin
5860: 67 20 7d 20 20 6b 65 79 20 2d 20 6f 62 6a 65 63  g }  key - objec
5870: 74 20 70 72 6f 70 65 72 74 79 0a 20 20 20 2a 20  t property.   * 
5880: 40 72 65 74 75 72 6e 73 20 7b 20 42 6f 6f 6c 65  @returns { Boole
5890: 61 6e 20 7d 20 74 72 75 65 20 69 66 20 77 72 69  an } true if wri
58a0: 74 61 62 6c 65 0a 20 20 20 2a 2f 0a 20 20 66 75  table.   */.  fu
58b0: 6e 63 74 69 6f 6e 20 69 73 57 72 69 74 61 62 6c  nction isWritabl
58c0: 65 28 6f 62 6a 2c 20 6b 65 79 29 20 7b 0a 20 20  e(obj, key) {.  
58d0: 20 20 76 61 72 20 64 65 73 63 72 69 70 74 6f 72    var descriptor
58e0: 20 3d 20 67 65 74 50 72 6f 70 44 65 73 63 72 69   = getPropDescri
58f0: 70 74 6f 72 28 6f 62 6a 2c 20 6b 65 79 29 3b 0a  ptor(obj, key);.
5900: 20 20 20 20 72 65 74 75 72 6e 20 69 73 55 6e 64      return isUnd
5910: 65 66 69 6e 65 64 28 6f 62 6a 5b 6b 65 79 5d 29  efined(obj[key])
5920: 20 7c 7c 20 64 65 73 63 72 69 70 74 6f 72 20 26   || descriptor &
5930: 26 20 64 65 73 63 72 69 70 74 6f 72 2e 77 72 69  & descriptor.wri
5940: 74 61 62 6c 65 0a 20 20 7d 0a 0a 20 20 2f 2a 2a  table.  }..  /**
5950: 0a 20 20 20 2a 20 45 78 74 65 6e 64 20 61 6e 79  .   * Extend any
5960: 20 6f 62 6a 65 63 74 20 77 69 74 68 20 6f 74 68   object with oth
5970: 65 72 20 70 72 6f 70 65 72 74 69 65 73 0a 20 20  er properties.  
5980: 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 4f 62   * @param   { Ob
5990: 6a 65 63 74 20 7d 20 73 72 63 20 2d 20 73 6f 75  ject } src - sou
59a0: 72 63 65 20 6f 62 6a 65 63 74 0a 20 20 20 2a 20  rce object.   * 
59b0: 40 72 65 74 75 72 6e 73 20 7b 20 4f 62 6a 65 63  @returns { Objec
59c0: 74 20 7d 20 74 68 65 20 72 65 73 75 6c 74 69 6e  t } the resultin
59d0: 67 20 65 78 74 65 6e 64 65 64 20 6f 62 6a 65 63  g extended objec
59e0: 74 0a 20 20 20 2a 0a 20 20 20 2a 20 76 61 72 20  t.   *.   * var 
59f0: 6f 62 6a 20 3d 20 7b 20 66 6f 6f 3a 20 27 62 61  obj = { foo: 'ba
5a00: 7a 27 20 7d 0a 20 20 20 2a 20 65 78 74 65 6e 64  z' }.   * extend
5a10: 28 6f 62 6a 2c 20 7b 62 61 72 3a 20 27 62 61 72  (obj, {bar: 'bar
5a20: 27 2c 20 66 6f 6f 3a 20 27 62 61 72 27 7d 29 0a  ', foo: 'bar'}).
5a30: 20 20 20 2a 20 63 6f 6e 73 6f 6c 65 2e 6c 6f 67     * console.log
5a40: 28 6f 62 6a 29 20 3d 3e 20 7b 62 61 72 3a 20 27  (obj) => {bar: '
5a50: 62 61 72 27 2c 20 66 6f 6f 3a 20 27 62 61 72 27  bar', foo: 'bar'
5a60: 7d 0a 20 20 20 2a 0a 20 20 20 2a 2f 0a 20 20 66  }.   *.   */.  f
5a70: 75 6e 63 74 69 6f 6e 20 65 78 74 65 6e 64 28 73  unction extend(s
5a80: 72 63 29 20 7b 0a 20 20 20 20 76 61 72 20 6f 62  rc) {.    var ob
5a90: 6a 3b 0a 20 20 20 20 76 61 72 20 69 20 3d 20 31  j;.    var i = 1
5aa0: 3b 0a 20 20 20 20 76 61 72 20 61 72 67 73 20 3d  ;.    var args =
5ab0: 20 61 72 67 75 6d 65 6e 74 73 3b 0a 20 20 20 20   arguments;.    
5ac0: 76 61 72 20 6c 20 3d 20 61 72 67 73 2e 6c 65 6e  var l = args.len
5ad0: 67 74 68 3b 0a 0a 20 20 20 20 66 6f 72 20 28 3b  gth;..    for (;
5ae0: 20 69 20 3c 20 6c 3b 20 69 2b 2b 29 20 7b 0a 20   i < l; i++) {. 
5af0: 20 20 20 20 20 69 66 20 28 6f 62 6a 20 3d 20 61       if (obj = a
5b00: 72 67 73 5b 69 5d 29 20 7b 0a 20 20 20 20 20 20  rgs[i]) {.      
5b10: 20 20 66 6f 72 20 28 76 61 72 20 6b 65 79 20 69    for (var key i
5b20: 6e 20 6f 62 6a 29 20 7b 0a 20 20 20 20 20 20 20  n obj) {.       
5b30: 20 20 20 2f 2f 20 63 68 65 63 6b 20 69 66 20 74     // check if t
5b40: 68 69 73 20 70 72 6f 70 65 72 74 79 20 6f 66 20  his property of 
5b50: 74 68 65 20 73 6f 75 72 63 65 20 6f 62 6a 65 63  the source objec
5b60: 74 20 63 6f 75 6c 64 20 62 65 20 6f 76 65 72 72  t could be overr
5b70: 69 64 64 65 6e 0a 20 20 20 20 20 20 20 20 20 20  idden.          
5b80: 69 66 20 28 69 73 57 72 69 74 61 62 6c 65 28 73  if (isWritable(s
5b90: 72 63 2c 20 6b 65 79 29 29 0a 20 20 20 20 20 20  rc, key)).      
5ba0: 20 20 20 20 20 20 7b 20 73 72 63 5b 6b 65 79 5d        { src[key]
5bb0: 20 3d 20 6f 62 6a 5b 6b 65 79 5d 3b 20 7d 0a 20   = obj[key]; }. 
5bc0: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 7d         }.      }
5bd0: 0a 20 20 20 20 7d 0a 20 20 20 20 72 65 74 75 72  .    }.    retur
5be0: 6e 20 73 72 63 0a 20 20 7d 0a 0a 20 20 2f 2a 2a  n src.  }..  /**
5bf0: 0a 20 20 20 2a 20 41 6c 69 61 73 20 66 6f 72 20  .   * Alias for 
5c00: 4f 62 6a 65 63 74 2e 63 72 65 61 74 65 0a 20 20  Object.create.  
5c10: 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 63   */.  function c
5c20: 72 65 61 74 65 28 73 72 63 29 20 7b 0a 20 20 20  reate(src) {.   
5c30: 20 72 65 74 75 72 6e 20 4f 62 6a 65 63 74 2e 63   return Object.c
5c40: 72 65 61 74 65 28 73 72 63 29 0a 20 20 7d 0a 0a  reate(src).  }..
5c50: 20 20 76 61 72 20 73 65 74 74 69 6e 67 73 20 3d    var settings =
5c60: 20 65 78 74 65 6e 64 28 63 72 65 61 74 65 28 62   extend(create(b
5c70: 72 61 63 6b 65 74 73 2e 73 65 74 74 69 6e 67 73  rackets.settings
5c80: 29 2c 20 7b 0a 20 20 20 20 73 6b 69 70 41 6e 6f  ), {.    skipAno
5c90: 6e 79 6d 6f 75 73 54 61 67 73 3a 20 74 72 75 65  nymousTags: true
5ca0: 2c 0a 20 20 20 20 2f 2f 20 74 68 65 20 22 76 61  ,.    // the "va
5cb0: 6c 75 65 22 20 61 74 74 72 69 62 75 74 65 73 20  lue" attributes 
5cc0: 77 69 6c 6c 20 62 65 20 70 72 65 73 65 72 76 65  will be preserve
5cd0: 64 0a 20 20 20 20 6b 65 65 70 56 61 6c 75 65 41  d.    keepValueA
5ce0: 74 74 72 69 62 75 74 65 73 3a 20 66 61 6c 73 65  ttributes: false
5cf0: 2c 0a 20 20 20 20 2f 2f 20 68 61 6e 64 6c 65 20  ,.    // handle 
5d00: 74 68 65 20 61 75 74 6f 20 75 70 64 61 74 65 73  the auto updates
5d10: 20 6f 6e 20 61 6e 79 20 44 4f 4d 20 65 76 65 6e   on any DOM even
5d20: 74 0a 20 20 20 20 61 75 74 6f 55 70 64 61 74 65  t.    autoUpdate
5d30: 3a 20 74 72 75 65 0a 20 20 7d 29 3b 0a 0a 20 20  : true.  });..  
5d40: 2f 2a 2a 0a 20 20 20 2a 20 53 68 6f 72 74 65 72  /**.   * Shorter
5d50: 20 61 6e 64 20 66 61 73 74 20 77 61 79 20 74 6f   and fast way to
5d60: 20 73 65 6c 65 63 74 20 6d 75 6c 74 69 70 6c 65   select multiple
5d70: 20 6e 6f 64 65 73 20 69 6e 20 74 68 65 20 44 4f   nodes in the DO
5d80: 4d 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20  M.   * @param   
5d90: 7b 20 53 74 72 69 6e 67 20 7d 20 73 65 6c 65 63  { String } selec
5da0: 74 6f 72 20 2d 20 44 4f 4d 20 73 65 6c 65 63 74  tor - DOM select
5db0: 6f 72 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20  or.   * @param  
5dc0: 20 7b 20 4f 62 6a 65 63 74 20 7d 20 63 74 78 20   { Object } ctx 
5dd0: 2d 20 44 4f 4d 20 6e 6f 64 65 20 77 68 65 72 65  - DOM node where
5de0: 20 74 68 65 20 74 61 72 67 65 74 73 20 6f 66 20   the targets of 
5df0: 6f 75 72 20 73 65 61 72 63 68 20 77 69 6c 6c 20  our search will 
5e00: 69 73 20 6c 6f 63 61 74 65 64 0a 20 20 20 2a 20  is located.   * 
5e10: 40 72 65 74 75 72 6e 73 20 7b 20 4f 62 6a 65 63  @returns { Objec
5e20: 74 20 7d 20 64 6f 6d 20 6e 6f 64 65 73 20 66 6f  t } dom nodes fo
5e30: 75 6e 64 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63  und.   */.  func
5e40: 74 69 6f 6e 20 24 24 28 73 65 6c 65 63 74 6f 72  tion $$(selector
5e50: 2c 20 63 74 78 29 20 7b 0a 20 20 20 20 72 65 74  , ctx) {.    ret
5e60: 75 72 6e 20 5b 5d 2e 73 6c 69 63 65 2e 63 61 6c  urn [].slice.cal
5e70: 6c 28 28 63 74 78 20 7c 7c 20 64 6f 63 75 6d 65  l((ctx || docume
5e80: 6e 74 29 2e 71 75 65 72 79 53 65 6c 65 63 74 6f  nt).querySelecto
5e90: 72 41 6c 6c 28 73 65 6c 65 63 74 6f 72 29 29 0a  rAll(selector)).
5ea0: 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20    }..  /**.   * 
5eb0: 43 72 65 61 74 65 20 61 20 64 6f 63 75 6d 65 6e  Create a documen
5ec0: 74 20 74 65 78 74 20 6e 6f 64 65 0a 20 20 20 2a  t text node.   *
5ed0: 20 40 72 65 74 75 72 6e 73 20 7b 20 4f 62 6a 65   @returns { Obje
5ee0: 63 74 20 7d 20 63 72 65 61 74 65 20 61 20 74 65  ct } create a te
5ef0: 78 74 20 6e 6f 64 65 20 74 6f 20 75 73 65 20 61  xt node to use a
5f00: 73 20 70 6c 61 63 65 68 6f 6c 64 65 72 0a 20 20  s placeholder.  
5f10: 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 63   */.  function c
5f20: 72 65 61 74 65 44 4f 4d 50 6c 61 63 65 68 6f 6c  reateDOMPlacehol
5f30: 64 65 72 28 29 20 7b 0a 20 20 20 20 72 65 74 75  der() {.    retu
5f40: 72 6e 20 64 6f 63 75 6d 65 6e 74 2e 63 72 65 61  rn document.crea
5f50: 74 65 54 65 78 74 4e 6f 64 65 28 27 27 29 0a 20  teTextNode(''). 
5f60: 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 54   }..  /**.   * T
5f70: 6f 67 67 6c 65 20 74 68 65 20 76 69 73 69 62 69  oggle the visibi
5f80: 6c 69 74 79 20 6f 66 20 61 6e 79 20 44 4f 4d 20  lity of any DOM 
5f90: 6e 6f 64 65 0a 20 20 20 2a 20 40 70 61 72 61 6d  node.   * @param
5fa0: 20 20 20 7b 20 4f 62 6a 65 63 74 20 7d 20 20 64     { Object }  d
5fb0: 6f 6d 20 2d 20 44 4f 4d 20 6e 6f 64 65 20 77 65  om - DOM node we
5fc0: 20 77 61 6e 74 20 74 6f 20 68 69 64 65 0a 20 20   want to hide.  
5fd0: 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 42 6f   * @param   { Bo
5fe0: 6f 6c 65 61 6e 20 7d 20 73 68 6f 77 20 2d 20 64  olean } show - d
5ff0: 6f 20 77 65 20 77 61 6e 74 20 74 6f 20 73 68 6f  o we want to sho
6000: 77 20 69 74 3f 0a 20 20 20 2a 2f 0a 0a 20 20 66  w it?.   */..  f
6010: 75 6e 63 74 69 6f 6e 20 74 6f 67 67 6c 65 56 69  unction toggleVi
6020: 73 69 62 69 6c 69 74 79 28 64 6f 6d 2c 20 73 68  sibility(dom, sh
6030: 6f 77 29 20 7b 0a 20 20 20 20 64 6f 6d 2e 73 74  ow) {.    dom.st
6040: 79 6c 65 2e 64 69 73 70 6c 61 79 20 3d 20 73 68  yle.display = sh
6050: 6f 77 20 3f 20 27 27 20 3a 20 27 6e 6f 6e 65 27  ow ? '' : 'none'
6060: 3b 0a 20 20 20 20 64 6f 6d 2e 68 69 64 64 65 6e  ;.    dom.hidden
6070: 20 3d 20 73 68 6f 77 20 3f 20 66 61 6c 73 65 20   = show ? false 
6080: 3a 20 74 72 75 65 3b 0a 20 20 7d 0a 0a 20 20 2f  : true;.  }..  /
6090: 2a 2a 0a 20 20 20 2a 20 47 65 74 20 74 68 65 20  **.   * Get the 
60a0: 76 61 6c 75 65 20 6f 66 20 61 6e 79 20 44 4f 4d  value of any DOM
60b0: 20 61 74 74 72 69 62 75 74 65 20 6f 6e 20 61 20   attribute on a 
60c0: 6e 6f 64 65 0a 20 20 20 2a 20 40 70 61 72 61 6d  node.   * @param
60d0: 20 20 20 7b 20 4f 62 6a 65 63 74 20 7d 20 64 6f     { Object } do
60e0: 6d 20 2d 20 44 4f 4d 20 6e 6f 64 65 20 77 65 20  m - DOM node we 
60f0: 77 61 6e 74 20 74 6f 20 70 61 72 73 65 0a 20 20  want to parse.  
6100: 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 53 74   * @param   { St
6110: 72 69 6e 67 20 7d 20 6e 61 6d 65 20 2d 20 6e 61  ring } name - na
6120: 6d 65 20 6f 66 20 74 68 65 20 61 74 74 72 69 62  me of the attrib
6130: 75 74 65 20 77 65 20 77 61 6e 74 20 74 6f 20 67  ute we want to g
6140: 65 74 0a 20 20 20 2a 20 40 72 65 74 75 72 6e 73  et.   * @returns
6150: 20 7b 20 53 74 72 69 6e 67 20 7c 20 75 6e 64 65   { String | unde
6160: 66 69 6e 65 64 20 7d 20 6e 61 6d 65 20 6f 66 20  fined } name of 
6170: 74 68 65 20 6e 6f 64 65 20 61 74 74 72 69 62 75  the node attribu
6180: 74 65 20 77 68 65 74 68 65 72 20 69 74 20 65 78  te whether it ex
6190: 69 73 74 73 0a 20 20 20 2a 2f 0a 20 20 66 75 6e  ists.   */.  fun
61a0: 63 74 69 6f 6e 20 67 65 74 41 74 74 72 69 62 75  ction getAttribu
61b0: 74 65 28 64 6f 6d 2c 20 6e 61 6d 65 29 20 7b 0a  te(dom, name) {.
61c0: 20 20 20 20 72 65 74 75 72 6e 20 64 6f 6d 2e 67      return dom.g
61d0: 65 74 41 74 74 72 69 62 75 74 65 28 6e 61 6d 65  etAttribute(name
61e0: 29 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20  ).  }..  /**.   
61f0: 2a 20 52 65 6d 6f 76 65 20 61 6e 79 20 44 4f 4d  * Remove any DOM
6200: 20 61 74 74 72 69 62 75 74 65 20 66 72 6f 6d 20   attribute from 
6210: 61 20 6e 6f 64 65 0a 20 20 20 2a 20 40 70 61 72  a node.   * @par
6220: 61 6d 20 20 20 7b 20 4f 62 6a 65 63 74 20 7d 20  am   { Object } 
6230: 64 6f 6d 20 2d 20 44 4f 4d 20 6e 6f 64 65 20 77  dom - DOM node w
6240: 65 20 77 61 6e 74 20 74 6f 20 75 70 64 61 74 65  e want to update
6250: 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b  .   * @param   {
6260: 20 53 74 72 69 6e 67 20 7d 20 6e 61 6d 65 20 2d   String } name -
6270: 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 70 72 6f   name of the pro
6280: 70 65 72 74 79 20 77 65 20 77 61 6e 74 20 74 6f  perty we want to
6290: 20 72 65 6d 6f 76 65 0a 20 20 20 2a 2f 0a 20 20   remove.   */.  
62a0: 66 75 6e 63 74 69 6f 6e 20 72 65 6d 6f 76 65 41  function removeA
62b0: 74 74 72 69 62 75 74 65 28 64 6f 6d 2c 20 6e 61  ttribute(dom, na
62c0: 6d 65 29 20 7b 0a 20 20 20 20 64 6f 6d 2e 72 65  me) {.    dom.re
62d0: 6d 6f 76 65 41 74 74 72 69 62 75 74 65 28 6e 61  moveAttribute(na
62e0: 6d 65 29 3b 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a  me);.  }..  /**.
62f0: 20 20 20 2a 20 53 65 74 20 74 68 65 20 69 6e 6e     * Set the inn
6300: 65 72 20 68 74 6d 6c 20 6f 66 20 61 6e 79 20 44  er html of any D
6310: 4f 4d 20 6e 6f 64 65 20 53 56 47 73 20 69 6e 63  OM node SVGs inc
6320: 6c 75 64 65 64 0a 20 20 20 2a 20 40 70 61 72 61  luded.   * @para
6330: 6d 20 7b 20 4f 62 6a 65 63 74 20 7d 20 63 6f 6e  m { Object } con
6340: 74 61 69 6e 65 72 20 2d 20 44 4f 4d 20 6e 6f 64  tainer - DOM nod
6350: 65 20 77 68 65 72 65 20 77 65 27 6c 6c 20 69 6e  e where we'll in
6360: 6a 65 63 74 20 6e 65 77 20 68 74 6d 6c 0a 20 20  ject new html.  
6370: 20 2a 20 40 70 61 72 61 6d 20 7b 20 53 74 72 69   * @param { Stri
6380: 6e 67 20 7d 20 68 74 6d 6c 20 2d 20 68 74 6d 6c  ng } html - html
6390: 20 74 6f 20 69 6e 6a 65 63 74 0a 20 20 20 2a 20   to inject.   * 
63a0: 40 70 61 72 61 6d 20 7b 20 42 6f 6f 6c 65 61 6e  @param { Boolean
63b0: 20 7d 20 69 73 53 76 67 20 2d 20 73 76 67 20 74   } isSvg - svg t
63c0: 61 67 73 20 73 68 6f 75 6c 64 20 62 65 20 74 72  ags should be tr
63d0: 65 61 74 65 64 20 61 20 62 69 74 20 64 69 66 66  eated a bit diff
63e0: 65 72 65 6e 74 6c 79 0a 20 20 20 2a 2f 0a 20 20  erently.   */.  
63f0: 2f 2a 20 69 73 74 61 6e 62 75 6c 20 69 67 6e 6f  /* istanbul igno
6400: 72 65 20 6e 65 78 74 20 2a 2f 0a 20 20 66 75 6e  re next */.  fun
6410: 63 74 69 6f 6e 20 73 65 74 49 6e 6e 65 72 48 54  ction setInnerHT
6420: 4d 4c 28 63 6f 6e 74 61 69 6e 65 72 2c 20 68 74  ML(container, ht
6430: 6d 6c 2c 20 69 73 53 76 67 29 20 7b 0a 20 20 20  ml, isSvg) {.   
6440: 20 2f 2f 20 69 6e 6e 65 72 48 54 4d 4c 20 69 73   // innerHTML is
6450: 20 6e 6f 74 20 73 75 70 70 6f 72 74 65 64 20 6f   not supported o
6460: 6e 20 73 76 67 20 74 61 67 73 20 73 6f 20 77 65  n svg tags so we
6470: 20 6e 65 65 74 20 74 6f 20 74 72 65 61 74 20 74   neet to treat t
6480: 68 65 6d 20 64 69 66 66 65 72 65 6e 74 6c 79 0a  hem differently.
6490: 20 20 20 20 69 66 20 28 69 73 53 76 67 29 20 7b      if (isSvg) {
64a0: 0a 20 20 20 20 20 20 76 61 72 20 6e 6f 64 65 20  .      var node 
64b0: 3d 20 63 6f 6e 74 61 69 6e 65 72 2e 6f 77 6e 65  = container.owne
64c0: 72 44 6f 63 75 6d 65 6e 74 2e 69 6d 70 6f 72 74  rDocument.import
64d0: 4e 6f 64 65 28 0a 20 20 20 20 20 20 20 20 6e 65  Node(.        ne
64e0: 77 20 44 4f 4d 50 61 72 73 65 72 28 29 0a 20 20  w DOMParser().  
64f0: 20 20 20 20 20 20 20 20 2e 70 61 72 73 65 46 72          .parseFr
6500: 6f 6d 53 74 72 69 6e 67 28 28 22 3c 73 76 67 20  omString(("<svg 
6510: 78 6d 6c 6e 73 3d 5c 22 22 20 2b 20 53 56 47 5f  xmlns=\"" + SVG_
6520: 4e 53 20 2b 20 22 5c 22 3e 22 20 2b 20 68 74 6d  NS + "\">" + htm
6530: 6c 20 2b 20 22 3c 2f 73 76 67 3e 22 29 2c 20 27  l + "</svg>"), '
6540: 61 70 70 6c 69 63 61 74 69 6f 6e 2f 78 6d 6c 27  application/xml'
6550: 29 0a 20 20 20 20 20 20 20 20 20 20 2e 64 6f 63  ).          .doc
6560: 75 6d 65 6e 74 45 6c 65 6d 65 6e 74 2c 0a 20 20  umentElement,.  
6570: 20 20 20 20 20 20 74 72 75 65 0a 20 20 20 20 20        true.     
6580: 20 29 3b 0a 0a 20 20 20 20 20 20 63 6f 6e 74 61   );..      conta
6590: 69 6e 65 72 2e 61 70 70 65 6e 64 43 68 69 6c 64  iner.appendChild
65a0: 28 6e 6f 64 65 29 3b 0a 20 20 20 20 7d 20 65 6c  (node);.    } el
65b0: 73 65 20 7b 0a 20 20 20 20 20 20 63 6f 6e 74 61  se {.      conta
65c0: 69 6e 65 72 2e 69 6e 6e 65 72 48 54 4d 4c 20 3d  iner.innerHTML =
65d0: 20 68 74 6d 6c 3b 0a 20 20 20 20 7d 0a 20 20 7d   html;.    }.  }
65e0: 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 4d 69 6e  ..  /**.   * Min
65f0: 69 6d 69 7a 65 20 72 69 73 6b 3a 20 6f 6e 6c 79  imize risk: only
6600: 20 7a 65 72 6f 20 6f 72 20 6f 6e 65 20 5f 73 70   zero or one _sp
6610: 61 63 65 5f 20 62 65 74 77 65 65 6e 20 61 74 74  ace_ between att
6620: 72 20 26 20 76 61 6c 75 65 0a 20 20 20 2a 20 40  r & value.   * @
6630: 70 61 72 61 6d 20 20 20 7b 20 53 74 72 69 6e 67  param   { String
6640: 20 7d 20 20 20 68 74 6d 6c 20 2d 20 68 74 6d 6c   }   html - html
6650: 20 73 74 72 69 6e 67 20 77 65 20 77 61 6e 74 20   string we want 
6660: 74 6f 20 70 61 72 73 65 0a 20 20 20 2a 20 40 70  to parse.   * @p
6670: 61 72 61 6d 20 20 20 7b 20 46 75 6e 63 74 69 6f  aram   { Functio
6680: 6e 20 7d 20 66 6e 20 2d 20 63 61 6c 6c 62 61 63  n } fn - callbac
6690: 6b 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 61 70  k function to ap
66a0: 70 6c 79 20 6f 6e 20 61 6e 79 20 61 74 74 72 69  ply on any attri
66b0: 62 75 74 65 20 66 6f 75 6e 64 0a 20 20 20 2a 2f  bute found.   */
66c0: 0a 20 20 66 75 6e 63 74 69 6f 6e 20 77 61 6c 6b  .  function walk
66d0: 41 74 74 72 69 62 75 74 65 73 28 68 74 6d 6c 2c  Attributes(html,
66e0: 20 66 6e 29 20 7b 0a 20 20 20 20 69 66 20 28 21   fn) {.    if (!
66f0: 68 74 6d 6c 29 20 7b 20 72 65 74 75 72 6e 20 7d  html) { return }
6700: 0a 20 20 20 20 76 61 72 20 6d 3b 0a 20 20 20 20  .    var m;.    
6710: 77 68 69 6c 65 20 28 6d 20 3d 20 52 45 5f 48 54  while (m = RE_HT
6720: 4d 4c 5f 41 54 54 52 53 2e 65 78 65 63 28 68 74  ML_ATTRS.exec(ht
6730: 6d 6c 29 29 0a 20 20 20 20 20 20 7b 20 66 6e 28  ml)).      { fn(
6740: 6d 5b 31 5d 2e 74 6f 4c 6f 77 65 72 43 61 73 65  m[1].toLowerCase
6750: 28 29 2c 20 6d 5b 32 5d 20 7c 7c 20 6d 5b 33 5d  (), m[2] || m[3]
6760: 20 7c 7c 20 6d 5b 34 5d 29 3b 20 7d 0a 20 20 7d   || m[4]); }.  }
6770: 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 43 72 65  ..  /**.   * Cre
6780: 61 74 65 20 61 20 64 6f 63 75 6d 65 6e 74 20 66  ate a document f
6790: 72 61 67 6d 65 6e 74 0a 20 20 20 2a 20 40 72 65  ragment.   * @re
67a0: 74 75 72 6e 73 20 7b 20 4f 62 6a 65 63 74 20 7d  turns { Object }
67b0: 20 64 6f 63 75 6d 65 6e 74 20 66 72 61 67 6d 65   document fragme
67c0: 6e 74 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74  nt.   */.  funct
67d0: 69 6f 6e 20 63 72 65 61 74 65 46 72 61 67 6d 65  ion createFragme
67e0: 6e 74 28 29 20 7b 0a 20 20 20 20 72 65 74 75 72  nt() {.    retur
67f0: 6e 20 64 6f 63 75 6d 65 6e 74 2e 63 72 65 61 74  n document.creat
6800: 65 44 6f 63 75 6d 65 6e 74 46 72 61 67 6d 65 6e  eDocumentFragmen
6810: 74 28 29 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20  t().  }..  /**. 
6820: 20 20 2a 20 49 6e 73 65 72 74 20 73 61 66 65 6c    * Insert safel
6830: 79 20 61 20 74 61 67 20 74 6f 20 66 69 78 20 23  y a tag to fix #
6840: 31 39 36 32 20 23 31 36 34 39 0a 20 20 20 2a 20  1962 #1649.   * 
6850: 40 70 61 72 61 6d 20 20 20 7b 20 48 54 4d 4c 45  @param   { HTMLE
6860: 6c 65 6d 65 6e 74 20 7d 20 72 6f 6f 74 20 2d 20  lement } root - 
6870: 63 68 69 6c 64 72 65 6e 20 63 6f 6e 74 61 69 6e  children contain
6880: 65 72 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20  er.   * @param  
6890: 20 7b 20 48 54 4d 4c 45 6c 65 6d 65 6e 74 20 7d   { HTMLElement }
68a0: 20 63 75 72 72 20 2d 20 6e 6f 64 65 20 74 6f 20   curr - node to 
68b0: 69 6e 73 65 72 74 0a 20 20 20 2a 20 40 70 61 72  insert.   * @par
68c0: 61 6d 20 20 20 7b 20 48 54 4d 4c 45 6c 65 6d 65  am   { HTMLEleme
68d0: 6e 74 20 7d 20 6e 65 78 74 20 2d 20 6e 6f 64 65  nt } next - node
68e0: 20 74 68 61 74 20 73 68 6f 75 6c 64 20 70 72 65   that should pre
68f0: 63 65 65 64 20 74 68 65 20 63 75 72 72 65 6e 74  ceed the current
6900: 20 6e 6f 64 65 20 69 6e 73 65 72 74 65 64 0a 20   node inserted. 
6910: 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20    */.  function 
6920: 73 61 66 65 49 6e 73 65 72 74 28 72 6f 6f 74 2c  safeInsert(root,
6930: 20 63 75 72 72 2c 20 6e 65 78 74 29 20 7b 0a 20   curr, next) {. 
6940: 20 20 20 72 6f 6f 74 2e 69 6e 73 65 72 74 42 65     root.insertBe
6950: 66 6f 72 65 28 63 75 72 72 2c 20 6e 65 78 74 2e  fore(curr, next.
6960: 70 61 72 65 6e 74 4e 6f 64 65 20 26 26 20 6e 65  parentNode && ne
6970: 78 74 29 3b 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a  xt);.  }..  /**.
6980: 20 20 20 2a 20 43 6f 6e 76 65 72 74 20 61 20 73     * Convert a s
6990: 74 79 6c 65 20 6f 62 6a 65 63 74 20 74 6f 20 61  tyle object to a
69a0: 20 73 74 72 69 6e 67 0a 20 20 20 2a 20 40 70 61   string.   * @pa
69b0: 72 61 6d 20 20 20 7b 20 4f 62 6a 65 63 74 20 7d  ram   { Object }
69c0: 20 73 74 79 6c 65 20 2d 20 73 74 79 6c 65 20 6f   style - style o
69d0: 62 6a 65 63 74 20 77 65 20 6e 65 65 64 20 74 6f  bject we need to
69e0: 20 70 61 72 73 65 0a 20 20 20 2a 20 40 72 65 74   parse.   * @ret
69f0: 75 72 6e 73 20 7b 20 53 74 72 69 6e 67 20 7d 20  urns { String } 
6a00: 72 65 73 75 6c 74 69 6e 67 20 63 73 73 20 73 74  resulting css st
6a10: 72 69 6e 67 0a 20 20 20 2a 20 40 65 78 61 6d 70  ring.   * @examp
6a20: 6c 65 0a 20 20 20 2a 20 73 74 79 6c 65 4f 62 6a  le.   * styleObj
6a30: 65 63 74 54 6f 53 74 72 69 6e 67 28 7b 20 63 6f  ectToString({ co
6a40: 6c 6f 72 3a 20 27 72 65 64 27 2c 20 68 65 69 67  lor: 'red', heig
6a50: 68 74 3a 20 27 31 30 70 78 27 7d 29 20 2f 2f 20  ht: '10px'}) // 
6a60: 3d 3e 20 27 63 6f 6c 6f 72 3a 20 72 65 64 3b 20  => 'color: red; 
6a70: 68 65 69 67 68 74 3a 20 31 30 70 78 27 0a 20 20  height: 10px'.  
6a80: 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 73   */.  function s
6a90: 74 79 6c 65 4f 62 6a 65 63 74 54 6f 53 74 72 69  tyleObjectToStri
6aa0: 6e 67 28 73 74 79 6c 65 29 20 7b 0a 20 20 20 20  ng(style) {.    
6ab0: 72 65 74 75 72 6e 20 4f 62 6a 65 63 74 2e 6b 65  return Object.ke
6ac0: 79 73 28 73 74 79 6c 65 29 2e 72 65 64 75 63 65  ys(style).reduce
6ad0: 28 66 75 6e 63 74 69 6f 6e 20 28 61 63 63 2c 20  (function (acc, 
6ae0: 70 72 6f 70 29 20 7b 0a 20 20 20 20 20 20 72 65  prop) {.      re
6af0: 74 75 72 6e 20 28 61 63 63 20 2b 20 22 20 22 20  turn (acc + " " 
6b00: 2b 20 70 72 6f 70 20 2b 20 22 3a 20 22 20 2b 20  + prop + ": " + 
6b10: 28 73 74 79 6c 65 5b 70 72 6f 70 5d 29 20 2b 20  (style[prop]) + 
6b20: 22 3b 22 29 0a 20 20 20 20 7d 2c 20 27 27 29 0a  ";").    }, '').
6b30: 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20    }..  /**.   * 
6b40: 57 61 6c 6b 20 64 6f 77 6e 20 72 65 63 75 72 73  Walk down recurs
6b50: 69 76 65 6c 79 20 61 6c 6c 20 74 68 65 20 63 68  ively all the ch
6b60: 69 6c 64 72 65 6e 20 74 61 67 73 20 73 74 61 72  ildren tags star
6b70: 74 69 6e 67 20 64 6f 6d 20 6e 6f 64 65 0a 20 20  ting dom node.  
6b80: 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 4f 62   * @param   { Ob
6b90: 6a 65 63 74 20 7d 20 20 20 64 6f 6d 20 2d 20 73  ject }   dom - s
6ba0: 74 61 72 74 69 6e 67 20 6e 6f 64 65 20 77 68 65  tarting node whe
6bb0: 72 65 20 77 65 20 77 69 6c 6c 20 73 74 61 72 74  re we will start
6bc0: 20 74 68 65 20 72 65 63 75 72 73 69 6f 6e 0a 20   the recursion. 
6bd0: 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 46    * @param   { F
6be0: 75 6e 63 74 69 6f 6e 20 7d 20 66 6e 20 2d 20 63  unction } fn - c
6bf0: 61 6c 6c 62 61 63 6b 20 74 6f 20 74 72 61 6e 73  allback to trans
6c00: 66 6f 72 6d 20 74 68 65 20 63 68 69 6c 64 20 6e  form the child n
6c10: 6f 64 65 20 6a 75 73 74 20 66 6f 75 6e 64 0a 20  ode just found. 
6c20: 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 4f    * @param   { O
6c30: 62 6a 65 63 74 20 7d 20 20 20 63 6f 6e 74 65 78  bject }   contex
6c40: 74 20 2d 20 66 6e 20 63 61 6e 20 6f 70 74 69 6f  t - fn can optio
6c50: 6e 61 6c 6c 79 20 72 65 74 75 72 6e 20 61 6e 20  nally return an 
6c60: 6f 62 6a 65 63 74 2c 20 77 68 69 63 68 20 69 73  object, which is
6c70: 20 70 61 73 73 65 64 20 74 6f 20 63 68 69 6c 64   passed to child
6c80: 72 65 6e 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63  ren.   */.  func
6c90: 74 69 6f 6e 20 77 61 6c 6b 4e 6f 64 65 73 28 64  tion walkNodes(d
6ca0: 6f 6d 2c 20 66 6e 2c 20 63 6f 6e 74 65 78 74 29  om, fn, context)
6cb0: 20 7b 0a 20 20 20 20 69 66 20 28 64 6f 6d 29 20   {.    if (dom) 
6cc0: 7b 0a 20 20 20 20 20 20 76 61 72 20 72 65 73 20  {.      var res 
6cd0: 3d 20 66 6e 28 64 6f 6d 2c 20 63 6f 6e 74 65 78  = fn(dom, contex
6ce0: 74 29 3b 0a 20 20 20 20 20 20 76 61 72 20 6e 65  t);.      var ne
6cf0: 78 74 3b 0a 20 20 20 20 20 20 2f 2f 20 73 74 6f  xt;.      // sto
6d00: 70 20 74 68 65 20 72 65 63 75 72 73 69 6f 6e 0a  p the recursion.
6d10: 20 20 20 20 20 20 69 66 20 28 72 65 73 20 3d 3d        if (res ==
6d20: 3d 20 66 61 6c 73 65 29 20 7b 20 72 65 74 75 72  = false) { retur
6d30: 6e 20 7d 0a 0a 20 20 20 20 20 20 64 6f 6d 20 3d  n }..      dom =
6d40: 20 64 6f 6d 2e 66 69 72 73 74 43 68 69 6c 64 3b   dom.firstChild;
6d50: 0a 0a 20 20 20 20 20 20 77 68 69 6c 65 20 28 64  ..      while (d
6d60: 6f 6d 29 20 7b 0a 20 20 20 20 20 20 20 20 6e 65  om) {.        ne
6d70: 78 74 20 3d 20 64 6f 6d 2e 6e 65 78 74 53 69 62  xt = dom.nextSib
6d80: 6c 69 6e 67 3b 0a 20 20 20 20 20 20 20 20 77 61  ling;.        wa
6d90: 6c 6b 4e 6f 64 65 73 28 64 6f 6d 2c 20 66 6e 2c  lkNodes(dom, fn,
6da0: 20 72 65 73 29 3b 0a 20 20 20 20 20 20 20 20 64   res);.        d
6db0: 6f 6d 20 3d 20 6e 65 78 74 3b 0a 20 20 20 20 20  om = next;.     
6dc0: 20 7d 0a 20 20 20 20 7d 0a 20 20 7d 0a 0a 0a 0a   }.    }.  }....
6dd0: 20 20 76 61 72 20 64 6f 6d 20 3d 20 2f 2a 23 5f    var dom = /*#_
6de0: 5f 50 55 52 45 5f 5f 2a 2f 4f 62 6a 65 63 74 2e  _PURE__*/Object.
6df0: 66 72 65 65 7a 65 28 7b 0a 20 20 20 20 24 24 3a  freeze({.    $$:
6e00: 20 24 24 2c 0a 20 20 20 20 24 3a 20 24 2c 0a 20   $$,.    $: $,. 
6e10: 20 20 20 63 72 65 61 74 65 44 4f 4d 50 6c 61 63     createDOMPlac
6e20: 65 68 6f 6c 64 65 72 3a 20 63 72 65 61 74 65 44  eholder: createD
6e30: 4f 4d 50 6c 61 63 65 68 6f 6c 64 65 72 2c 0a 20  OMPlaceholder,. 
6e40: 20 20 20 6d 6b 45 6c 3a 20 6d 61 6b 65 45 6c 65     mkEl: makeEle
6e50: 6d 65 6e 74 2c 0a 20 20 20 20 73 65 74 41 74 74  ment,.    setAtt
6e60: 72 3a 20 73 65 74 41 74 74 72 69 62 75 74 65 2c  r: setAttribute,
6e70: 0a 20 20 20 20 74 6f 67 67 6c 65 56 69 73 69 62  .    toggleVisib
6e80: 69 6c 69 74 79 3a 20 74 6f 67 67 6c 65 56 69 73  ility: toggleVis
6e90: 69 62 69 6c 69 74 79 2c 0a 20 20 20 20 67 65 74  ibility,.    get
6ea0: 41 74 74 72 3a 20 67 65 74 41 74 74 72 69 62 75  Attr: getAttribu
6eb0: 74 65 2c 0a 20 20 20 20 72 65 6d 41 74 74 72 3a  te,.    remAttr:
6ec0: 20 72 65 6d 6f 76 65 41 74 74 72 69 62 75 74 65   removeAttribute
6ed0: 2c 0a 20 20 20 20 73 65 74 49 6e 6e 65 72 48 54  ,.    setInnerHT
6ee0: 4d 4c 3a 20 73 65 74 49 6e 6e 65 72 48 54 4d 4c  ML: setInnerHTML
6ef0: 2c 0a 20 20 20 20 77 61 6c 6b 41 74 74 72 73 3a  ,.    walkAttrs:
6f00: 20 77 61 6c 6b 41 74 74 72 69 62 75 74 65 73 2c   walkAttributes,
6f10: 0a 20 20 20 20 63 72 65 61 74 65 46 72 61 67 3a  .    createFrag:
6f20: 20 63 72 65 61 74 65 46 72 61 67 6d 65 6e 74 2c   createFragment,
6f30: 0a 20 20 20 20 73 61 66 65 49 6e 73 65 72 74 3a  .    safeInsert:
6f40: 20 73 61 66 65 49 6e 73 65 72 74 2c 0a 20 20 20   safeInsert,.   
6f50: 20 73 74 79 6c 65 4f 62 6a 65 63 74 54 6f 53 74   styleObjectToSt
6f60: 72 69 6e 67 3a 20 73 74 79 6c 65 4f 62 6a 65 63  ring: styleObjec
6f70: 74 54 6f 53 74 72 69 6e 67 2c 0a 20 20 20 20 77  tToString,.    w
6f80: 61 6c 6b 4e 6f 64 65 73 3a 20 77 61 6c 6b 4e 6f  alkNodes: walkNo
6f90: 64 65 73 0a 20 20 7d 29 3b 0a 0a 20 20 2f 2a 2a  des.  });..  /**
6fa0: 0a 20 20 20 2a 20 43 68 65 63 6b 20 61 67 61 69  .   * Check agai
6fb0: 6e 73 74 20 74 68 65 20 6e 75 6c 6c 20 61 6e 64  nst the null and
6fc0: 20 75 6e 64 65 66 69 6e 65 64 20 76 61 6c 75 65   undefined value
6fd0: 73 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20  s.   * @param   
6fe0: 7b 20 2a 20 7d 20 20 76 61 6c 75 65 20 2d 0a 20  { * }  value -. 
6ff0: 20 20 2a 20 40 72 65 74 75 72 6e 73 20 7b 42 6f    * @returns {Bo
7000: 6f 6c 65 61 6e 7d 20 2d 0a 20 20 20 2a 2f 0a 20  olean} -.   */. 
7010: 20 66 75 6e 63 74 69 6f 6e 20 69 73 4e 69 6c 28   function isNil(
7020: 76 61 6c 75 65 29 20 7b 0a 20 20 20 20 72 65 74  value) {.    ret
7030: 75 72 6e 20 69 73 55 6e 64 65 66 69 6e 65 64 28  urn isUndefined(
7040: 76 61 6c 75 65 29 20 7c 7c 20 76 61 6c 75 65 20  value) || value 
7050: 3d 3d 3d 20 6e 75 6c 6c 0a 20 20 7d 0a 0a 20 20  === null.  }..  
7060: 2f 2a 2a 0a 20 20 20 2a 20 43 68 65 63 6b 20 69  /**.   * Check i
7070: 66 20 70 61 73 73 65 64 20 61 72 67 75 6d 65 6e  f passed argumen
7080: 74 20 69 73 20 65 6d 70 74 79 2e 20 44 69 66 66  t is empty. Diff
7090: 65 72 65 6e 74 20 66 72 6f 6d 20 66 61 6c 73 79  erent from falsy
70a0: 2c 20 62 65 63 61 75 73 65 20 77 65 20 64 6f 6e  , because we don
70b0: 74 20 63 6f 6e 73 69 64 65 72 20 30 20 6f 72 20  t consider 0 or 
70c0: 66 61 6c 73 65 20 74 6f 20 62 65 20 62 6c 61 6e  false to be blan
70d0: 6b 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 7b 20  k.   * @param { 
70e0: 2a 20 7d 20 76 61 6c 75 65 20 2d 0a 20 20 20 2a  * } value -.   *
70f0: 20 40 72 65 74 75 72 6e 73 20 7b 20 42 6f 6f 6c   @returns { Bool
7100: 65 61 6e 20 7d 20 2d 0a 20 20 20 2a 2f 0a 20 20  ean } -.   */.  
7110: 66 75 6e 63 74 69 6f 6e 20 69 73 42 6c 61 6e 6b  function isBlank
7120: 28 76 61 6c 75 65 29 20 7b 0a 20 20 20 20 72 65  (value) {.    re
7130: 74 75 72 6e 20 69 73 4e 69 6c 28 76 61 6c 75 65  turn isNil(value
7140: 29 20 7c 7c 20 76 61 6c 75 65 20 3d 3d 3d 20 27  ) || value === '
7150: 27 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20  '.  }..  /**.   
7160: 2a 20 43 68 65 63 6b 20 69 66 20 70 61 73 73 65  * Check if passe
7170: 64 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61 20  d argument is a 
7180: 66 75 6e 63 74 69 6f 6e 0a 20 20 20 2a 20 40 70  function.   * @p
7190: 61 72 61 6d 20 20 20 7b 20 2a 20 7d 20 76 61 6c  aram   { * } val
71a0: 75 65 20 2d 0a 20 20 20 2a 20 40 72 65 74 75 72  ue -.   * @retur
71b0: 6e 73 20 7b 20 42 6f 6f 6c 65 61 6e 20 7d 20 2d  ns { Boolean } -
71c0: 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f  .   */.  functio
71d0: 6e 20 69 73 46 75 6e 63 74 69 6f 6e 28 76 61 6c  n isFunction(val
71e0: 75 65 29 20 7b 0a 20 20 20 20 72 65 74 75 72 6e  ue) {.    return
71f0: 20 74 79 70 65 6f 66 20 76 61 6c 75 65 20 3d 3d   typeof value ==
7200: 3d 20 54 5f 46 55 4e 43 54 49 4f 4e 0a 20 20 7d  = T_FUNCTION.  }
7210: 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 43 68 65  ..  /**.   * Che
7220: 63 6b 20 69 66 20 70 61 73 73 65 64 20 61 72 67  ck if passed arg
7230: 75 6d 65 6e 74 20 69 73 20 61 6e 20 6f 62 6a 65  ument is an obje
7240: 63 74 2c 20 65 78 63 6c 75 64 65 20 6e 75 6c 6c  ct, exclude null
7250: 0a 20 20 20 2a 20 4e 4f 54 45 3a 20 75 73 65 20  .   * NOTE: use 
7260: 69 73 4f 62 6a 65 63 74 28 78 29 20 26 26 20 21  isObject(x) && !
7270: 69 73 41 72 72 61 79 28 78 29 20 74 6f 20 65 78  isArray(x) to ex
7280: 63 6c 75 64 65 73 20 61 72 72 61 79 73 2e 0a 20  cludes arrays.. 
7290: 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 2a    * @param   { *
72a0: 20 7d 20 76 61 6c 75 65 20 2d 0a 20 20 20 2a 20   } value -.   * 
72b0: 40 72 65 74 75 72 6e 73 20 7b 20 42 6f 6f 6c 65  @returns { Boole
72c0: 61 6e 20 7d 20 2d 0a 20 20 20 2a 2f 0a 20 20 66  an } -.   */.  f
72d0: 75 6e 63 74 69 6f 6e 20 69 73 4f 62 6a 65 63 74  unction isObject
72e0: 28 76 61 6c 75 65 29 20 7b 0a 20 20 20 20 72 65  (value) {.    re
72f0: 74 75 72 6e 20 76 61 6c 75 65 20 26 26 20 74 79  turn value && ty
7300: 70 65 6f 66 20 76 61 6c 75 65 20 3d 3d 3d 20 54  peof value === T
7310: 5f 4f 42 4a 45 43 54 20 2f 2f 20 74 79 70 65 6f  _OBJECT // typeo
7320: 66 20 6e 75 6c 6c 20 69 73 20 27 6f 62 6a 65 63  f null is 'objec
7330: 74 27 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20  t'.  }..  /**.  
7340: 20 2a 20 43 68 65 63 6b 20 69 66 20 61 20 44 4f   * Check if a DO
7350: 4d 20 6e 6f 64 65 20 69 73 20 61 6e 20 73 76 67  M node is an svg
7360: 20 74 61 67 20 6f 72 20 70 61 72 74 20 6f 66 20   tag or part of 
7370: 61 6e 20 73 76 67 0a 20 20 20 2a 20 40 70 61 72  an svg.   * @par
7380: 61 6d 20 20 20 7b 20 48 54 4d 4c 45 6c 65 6d 65  am   { HTMLEleme
7390: 6e 74 20 7d 20 20 65 6c 20 2d 20 6e 6f 64 65 20  nt }  el - node 
73a0: 77 65 20 77 61 6e 74 20 74 6f 20 74 65 73 74 0a  we want to test.
73b0: 20 20 20 2a 20 40 72 65 74 75 72 6e 73 20 7b 42     * @returns {B
73c0: 6f 6f 6c 65 61 6e 7d 20 74 72 75 65 20 69 66 20  oolean} true if 
73d0: 69 74 27 73 20 61 6e 20 73 76 67 20 6e 6f 64 65  it's an svg node
73e0: 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f  .   */.  functio
73f0: 6e 20 69 73 53 76 67 28 65 6c 29 20 7b 0a 20 20  n isSvg(el) {.  
7400: 20 20 76 61 72 20 6f 77 6e 65 72 20 3d 20 65 6c    var owner = el
7410: 2e 6f 77 6e 65 72 53 56 47 45 6c 65 6d 65 6e 74  .ownerSVGElement
7420: 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 21 21 6f  ;.    return !!o
7430: 77 6e 65 72 20 7c 7c 20 6f 77 6e 65 72 20 3d 3d  wner || owner ==
7440: 3d 20 6e 75 6c 6c 0a 20 20 7d 0a 0a 20 20 2f 2a  = null.  }..  /*
7450: 2a 0a 20 20 20 2a 20 43 68 65 63 6b 20 69 66 20  *.   * Check if 
7460: 70 61 73 73 65 64 20 61 72 67 75 6d 65 6e 74 20  passed argument 
7470: 69 73 20 61 20 6b 69 6e 64 20 6f 66 20 61 72 72  is a kind of arr
7480: 61 79 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20  ay.   * @param  
7490: 20 7b 20 2a 20 7d 20 76 61 6c 75 65 20 2d 0a 20   { * } value -. 
74a0: 20 20 2a 20 40 72 65 74 75 72 6e 73 20 7b 20 42    * @returns { B
74b0: 6f 6f 6c 65 61 6e 20 7d 20 2d 0a 20 20 20 2a 2f  oolean } -.   */
74c0: 0a 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 41 72  .  function isAr
74d0: 72 61 79 28 76 61 6c 75 65 29 20 7b 0a 20 20 20  ray(value) {.   
74e0: 20 72 65 74 75 72 6e 20 41 72 72 61 79 2e 69 73   return Array.is
74f0: 41 72 72 61 79 28 76 61 6c 75 65 29 20 7c 7c 20  Array(value) || 
7500: 76 61 6c 75 65 20 69 6e 73 74 61 6e 63 65 6f 66  value instanceof
7510: 20 41 72 72 61 79 0a 20 20 7d 0a 0a 20 20 2f 2a   Array.  }..  /*
7520: 2a 0a 20 20 20 2a 20 43 68 65 63 6b 20 69 66 20  *.   * Check if 
7530: 74 68 65 20 70 61 73 73 65 64 20 61 72 67 75 6d  the passed argum
7540: 65 6e 74 20 69 73 20 61 20 62 6f 6f 6c 65 61 6e  ent is a boolean
7550: 20 61 74 74 72 69 62 75 74 65 0a 20 20 20 2a 20   attribute.   * 
7560: 40 70 61 72 61 6d 20 20 20 7b 20 53 74 72 69 6e  @param   { Strin
7570: 67 20 7d 20 76 61 6c 75 65 20 2d 0a 20 20 20 2a  g } value -.   *
7580: 20 40 72 65 74 75 72 6e 73 20 7b 20 42 6f 6f 6c   @returns { Bool
7590: 65 61 6e 20 7d 20 2d 0a 20 20 20 2a 2f 0a 20 20  ean } -.   */.  
75a0: 66 75 6e 63 74 69 6f 6e 20 69 73 42 6f 6f 6c 41  function isBoolA
75b0: 74 74 72 28 76 61 6c 75 65 29 20 7b 0a 20 20 20  ttr(value) {.   
75c0: 20 72 65 74 75 72 6e 20 52 45 5f 42 4f 4f 4c 5f   return RE_BOOL_
75d0: 41 54 54 52 53 2e 74 65 73 74 28 76 61 6c 75 65  ATTRS.test(value
75e0: 29 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20  ).  }..  /**.   
75f0: 2a 20 43 68 65 63 6b 20 69 66 20 70 61 73 73 65  * Check if passe
7600: 64 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61 20  d argument is a 
7610: 73 74 72 69 6e 67 0a 20 20 20 2a 20 40 70 61 72  string.   * @par
7620: 61 6d 20 20 20 7b 20 2a 20 7d 20 76 61 6c 75 65  am   { * } value
7630: 20 2d 0a 20 20 20 2a 20 40 72 65 74 75 72 6e 73   -.   * @returns
7640: 20 7b 20 42 6f 6f 6c 65 61 6e 20 7d 20 2d 0a 20   { Boolean } -. 
7650: 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20    */.  function 
7660: 69 73 53 74 72 69 6e 67 28 76 61 6c 75 65 29 20  isString(value) 
7670: 7b 0a 20 20 20 20 72 65 74 75 72 6e 20 74 79 70  {.    return typ
7680: 65 6f 66 20 76 61 6c 75 65 20 3d 3d 3d 20 54 5f  eof value === T_
7690: 53 54 52 49 4e 47 0a 20 20 7d 0a 0a 0a 0a 20 20  STRING.  }....  
76a0: 76 61 72 20 63 68 65 63 6b 20 3d 20 2f 2a 23 5f  var check = /*#_
76b0: 5f 50 55 52 45 5f 5f 2a 2f 4f 62 6a 65 63 74 2e  _PURE__*/Object.
76c0: 66 72 65 65 7a 65 28 7b 0a 20 20 20 20 69 73 42  freeze({.    isB
76d0: 6c 61 6e 6b 3a 20 69 73 42 6c 61 6e 6b 2c 0a 20  lank: isBlank,. 
76e0: 20 20 20 69 73 46 75 6e 63 74 69 6f 6e 3a 20 69     isFunction: i
76f0: 73 46 75 6e 63 74 69 6f 6e 2c 0a 20 20 20 20 69  sFunction,.    i
7700: 73 4f 62 6a 65 63 74 3a 20 69 73 4f 62 6a 65 63  sObject: isObjec
7710: 74 2c 0a 20 20 20 20 69 73 53 76 67 3a 20 69 73  t,.    isSvg: is
7720: 53 76 67 2c 0a 20 20 20 20 69 73 57 72 69 74 61  Svg,.    isWrita
7730: 62 6c 65 3a 20 69 73 57 72 69 74 61 62 6c 65 2c  ble: isWritable,
7740: 0a 20 20 20 20 69 73 41 72 72 61 79 3a 20 69 73  .    isArray: is
7750: 41 72 72 61 79 2c 0a 20 20 20 20 69 73 42 6f 6f  Array,.    isBoo
7760: 6c 41 74 74 72 3a 20 69 73 42 6f 6f 6c 41 74 74  lAttr: isBoolAtt
7770: 72 2c 0a 20 20 20 20 69 73 4e 69 6c 3a 20 69 73  r,.    isNil: is
7780: 4e 69 6c 2c 0a 20 20 20 20 69 73 53 74 72 69 6e  Nil,.    isStrin
7790: 67 3a 20 69 73 53 74 72 69 6e 67 2c 0a 20 20 20  g: isString,.   
77a0: 20 69 73 55 6e 64 65 66 69 6e 65 64 3a 20 69 73   isUndefined: is
77b0: 55 6e 64 65 66 69 6e 65 64 0a 20 20 7d 29 3b 0a  Undefined.  });.
77c0: 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 43 68 65 63  .  /**.   * Chec
77d0: 6b 20 77 68 65 74 68 65 72 20 61 6e 20 61 72 72  k whether an arr
77e0: 61 79 20 63 6f 6e 74 61 69 6e 73 20 61 6e 20 69  ay contains an i
77f0: 74 65 6d 0a 20 20 20 2a 20 40 70 61 72 61 6d 20  tem.   * @param 
7800: 20 20 7b 20 41 72 72 61 79 20 7d 20 61 72 72 61    { Array } arra
7810: 79 20 2d 20 74 61 72 67 65 74 20 61 72 72 61 79  y - target array
7820: 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b  .   * @param   {
7830: 20 2a 20 7d 20 69 74 65 6d 20 2d 20 69 74 65 6d   * } item - item
7840: 20 74 6f 20 74 65 73 74 0a 20 20 20 2a 20 40 72   to test.   * @r
7850: 65 74 75 72 6e 73 20 7b 20 42 6f 6f 6c 65 61 6e  eturns { Boolean
7860: 20 7d 20 2d 0a 20 20 20 2a 2f 0a 20 20 66 75 6e   } -.   */.  fun
7870: 63 74 69 6f 6e 20 63 6f 6e 74 61 69 6e 73 28 61  ction contains(a
7880: 72 72 61 79 2c 20 69 74 65 6d 29 20 7b 0a 20 20  rray, item) {.  
7890: 20 20 72 65 74 75 72 6e 20 61 72 72 61 79 2e 69    return array.i
78a0: 6e 64 65 78 4f 66 28 69 74 65 6d 29 20 21 3d 3d  ndexOf(item) !==
78b0: 20 2d 31 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20   -1.  }..  /**. 
78c0: 20 20 2a 20 53 70 65 63 69 61 6c 69 7a 65 64 20    * Specialized 
78d0: 66 75 6e 63 74 69 6f 6e 20 66 6f 72 20 6c 6f 6f  function for loo
78e0: 70 69 6e 67 20 61 6e 20 61 72 72 61 79 2d 6c 69  ping an array-li
78f0: 6b 65 20 63 6f 6c 6c 65 63 74 69 6f 6e 20 77 69  ke collection wi
7900: 74 68 20 60 65 61 63 68 3d 7b 7d 60 0a 20 20 20  th `each={}`.   
7910: 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 41 72 72  * @param   { Arr
7920: 61 79 20 7d 20 6c 69 73 74 20 2d 20 63 6f 6c 6c  ay } list - coll
7930: 65 63 74 69 6f 6e 20 6f 66 20 69 74 65 6d 73 0a  ection of items.
7940: 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 46     * @param   {F
7950: 75 6e 63 74 69 6f 6e 7d 20 66 6e 20 2d 20 63 61  unction} fn - ca
7960: 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 0a  llback function.
7970: 20 20 20 2a 20 40 72 65 74 75 72 6e 73 20 7b 20     * @returns { 
7980: 41 72 72 61 79 20 7d 20 74 68 65 20 61 72 72 61  Array } the arra
7990: 79 20 6c 6f 6f 70 65 64 0a 20 20 20 2a 2f 0a 20  y looped.   */. 
79a0: 20 66 75 6e 63 74 69 6f 6e 20 65 61 63 68 28 6c   function each(l
79b0: 69 73 74 2c 20 66 6e 29 20 7b 0a 20 20 20 20 76  ist, fn) {.    v
79c0: 61 72 20 6c 65 6e 20 3d 20 6c 69 73 74 20 3f 20  ar len = list ? 
79d0: 6c 69 73 74 2e 6c 65 6e 67 74 68 20 3a 20 30 3b  list.length : 0;
79e0: 0a 20 20 20 20 76 61 72 20 69 20 3d 20 30 3b 0a  .    var i = 0;.
79f0: 20 20 20 20 66 6f 72 20 28 3b 20 69 20 3c 20 6c      for (; i < l
7a00: 65 6e 3b 20 69 2b 2b 29 20 7b 20 66 6e 28 6c 69  en; i++) { fn(li
7a10: 73 74 5b 69 5d 2c 20 69 29 3b 20 7d 0a 20 20 20  st[i], i); }.   
7a20: 20 72 65 74 75 72 6e 20 6c 69 73 74 0a 20 20 7d   return list.  }
7a30: 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 46 61 73  ..  /**.   * Fas
7a40: 74 65 72 20 53 74 72 69 6e 67 20 73 74 61 72 74  ter String start
7a50: 73 57 69 74 68 20 61 6c 74 65 72 6e 61 74 69 76  sWith alternativ
7a60: 65 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20  e.   * @param   
7a70: 7b 20 53 74 72 69 6e 67 20 7d 20 73 74 72 20 2d  { String } str -
7a80: 20 73 6f 75 72 63 65 20 73 74 72 69 6e 67 0a 20   source string. 
7a90: 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 53    * @param   { S
7aa0: 74 72 69 6e 67 20 7d 20 76 61 6c 75 65 20 2d 20  tring } value - 
7ab0: 74 65 73 74 20 73 74 72 69 6e 67 0a 20 20 20 2a  test string.   *
7ac0: 20 40 72 65 74 75 72 6e 73 20 7b 20 42 6f 6f 6c   @returns { Bool
7ad0: 65 61 6e 20 7d 20 2d 0a 20 20 20 2a 2f 0a 20 20  ean } -.   */.  
7ae0: 66 75 6e 63 74 69 6f 6e 20 73 74 61 72 74 73 57  function startsW
7af0: 69 74 68 28 73 74 72 2c 20 76 61 6c 75 65 29 20  ith(str, value) 
7b00: 7b 0a 20 20 20 20 72 65 74 75 72 6e 20 73 74 72  {.    return str
7b10: 2e 73 6c 69 63 65 28 30 2c 20 76 61 6c 75 65 2e  .slice(0, value.
7b20: 6c 65 6e 67 74 68 29 20 3d 3d 3d 20 76 61 6c 75  length) === valu
7b30: 65 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20  e.  }..  /**.   
7b40: 2a 20 46 75 6e 63 74 69 6f 6e 20 72 65 74 75 72  * Function retur
7b50: 6e 69 6e 67 20 61 6c 77 61 79 73 20 61 20 75 6e  ning always a un
7b60: 69 71 75 65 20 69 64 65 6e 74 69 66 69 65 72 0a  ique identifier.
7b70: 20 20 20 2a 20 40 72 65 74 75 72 6e 73 20 7b 20     * @returns { 
7b80: 4e 75 6d 62 65 72 20 7d 20 2d 20 6e 75 6d 62 65  Number } - numbe
7b90: 72 20 66 72 6f 6d 20 30 2e 2e 2e 6e 0a 20 20 20  r from 0...n.   
7ba0: 2a 2f 0a 20 20 76 61 72 20 75 69 64 20 3d 20 28  */.  var uid = (
7bb0: 66 75 6e 63 74 69 6f 6e 20 75 69 64 28 29 20 7b  function uid() {
7bc0: 0a 20 20 20 20 76 61 72 20 69 20 3d 20 2d 31 3b  .    var i = -1;
7bd0: 0a 20 20 20 20 72 65 74 75 72 6e 20 66 75 6e 63  .    return func
7be0: 74 69 6f 6e 20 28 29 20 7b 20 72 65 74 75 72 6e  tion () { return
7bf0: 20 2b 2b 69 3b 20 7d 0a 20 20 7d 29 28 29 3b 0a   ++i; }.  })();.
7c00: 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 48 65 6c 70  .  /**.   * Help
7c10: 65 72 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 73  er function to s
7c20: 65 74 20 61 6e 20 69 6d 6d 75 74 61 62 6c 65 20  et an immutable 
7c30: 70 72 6f 70 65 72 74 79 0a 20 20 20 2a 20 40 70  property.   * @p
7c40: 61 72 61 6d 20 20 20 7b 20 4f 62 6a 65 63 74 20  aram   { Object 
7c50: 7d 20 65 6c 20 2d 20 6f 62 6a 65 63 74 20 77 68  } el - object wh
7c60: 65 72 65 20 74 68 65 20 6e 65 77 20 70 72 6f 70  ere the new prop
7c70: 65 72 74 79 20 77 69 6c 6c 20 62 65 20 73 65 74  erty will be set
7c80: 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b  .   * @param   {
7c90: 20 53 74 72 69 6e 67 20 7d 20 6b 65 79 20 2d 20   String } key - 
7ca0: 6f 62 6a 65 63 74 20 6b 65 79 20 77 68 65 72 65  object key where
7cb0: 20 74 68 65 20 6e 65 77 20 70 72 6f 70 65 72 74   the new propert
7cc0: 79 20 77 69 6c 6c 20 62 65 20 73 74 6f 72 65 64  y will be stored
7cd0: 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b  .   * @param   {
7ce0: 20 2a 20 7d 20 76 61 6c 75 65 20 2d 20 76 61 6c   * } value - val
7cf0: 75 65 20 6f 66 20 74 68 65 20 6e 65 77 20 70 72  ue of the new pr
7d00: 6f 70 65 72 74 79 0a 20 20 20 2a 20 40 70 61 72  operty.   * @par
7d10: 61 6d 20 20 20 7b 20 4f 62 6a 65 63 74 20 7d 20  am   { Object } 
7d20: 6f 70 74 69 6f 6e 73 20 2d 20 73 65 74 20 74 68  options - set th
7d30: 65 20 70 72 6f 70 65 72 79 20 6f 76 65 72 72 69  e propery overri
7d40: 64 69 6e 67 20 74 68 65 20 64 65 66 61 75 6c 74  ding the default
7d50: 20 6f 70 74 69 6f 6e 73 0a 20 20 20 2a 20 40 72   options.   * @r
7d60: 65 74 75 72 6e 73 20 7b 20 4f 62 6a 65 63 74 20  eturns { Object 
7d70: 7d 20 2d 20 74 68 65 20 69 6e 69 74 69 61 6c 20  } - the initial 
7d80: 6f 62 6a 65 63 74 0a 20 20 20 2a 2f 0a 20 20 66  object.   */.  f
7d90: 75 6e 63 74 69 6f 6e 20 64 65 66 69 6e 65 28 65  unction define(e
7da0: 6c 2c 20 6b 65 79 2c 20 76 61 6c 75 65 2c 20 6f  l, key, value, o
7db0: 70 74 69 6f 6e 73 29 20 7b 0a 20 20 20 20 4f 62  ptions) {.    Ob
7dc0: 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 6f 70 65  ject.definePrope
7dd0: 72 74 79 28 65 6c 2c 20 6b 65 79 2c 20 65 78 74  rty(el, key, ext
7de0: 65 6e 64 28 7b 0a 20 20 20 20 20 20 76 61 6c 75  end({.      valu
7df0: 65 3a 20 76 61 6c 75 65 2c 0a 20 20 20 20 20 20  e: value,.      
7e00: 65 6e 75 6d 65 72 61 62 6c 65 3a 20 66 61 6c 73  enumerable: fals
7e10: 65 2c 0a 20 20 20 20 20 20 77 72 69 74 61 62 6c  e,.      writabl
7e20: 65 3a 20 66 61 6c 73 65 2c 0a 20 20 20 20 20 20  e: false,.      
7e30: 63 6f 6e 66 69 67 75 72 61 62 6c 65 3a 20 74 72  configurable: tr
7e40: 75 65 0a 20 20 20 20 7d 2c 20 6f 70 74 69 6f 6e  ue.    }, option
7e50: 73 29 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20  s));.    return 
7e60: 65 6c 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20  el.  }..  /**.  
7e70: 20 2a 20 43 6f 6e 76 65 72 74 20 61 20 73 74 72   * Convert a str
7e80: 69 6e 67 20 63 6f 6e 74 61 69 6e 69 6e 67 20 64  ing containing d
7e90: 61 73 68 65 73 20 74 6f 20 63 61 6d 65 6c 20 63  ashes to camel c
7ea0: 61 73 65 0a 20 20 20 2a 20 40 70 61 72 61 6d 20  ase.   * @param 
7eb0: 20 20 7b 20 53 74 72 69 6e 67 20 7d 20 73 74 72    { String } str
7ec0: 20 2d 20 69 6e 70 75 74 20 73 74 72 69 6e 67 0a   - input string.
7ed0: 20 20 20 2a 20 40 72 65 74 75 72 6e 73 20 7b 20     * @returns { 
7ee0: 53 74 72 69 6e 67 20 7d 20 6d 79 2d 73 74 72 69  String } my-stri
7ef0: 6e 67 20 2d 3e 20 6d 79 53 74 72 69 6e 67 0a 20  ng -> myString. 
7f00: 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20    */.  function 
7f10: 74 6f 43 61 6d 65 6c 28 73 74 72 29 20 7b 0a 20  toCamel(str) {. 
7f20: 20 20 20 72 65 74 75 72 6e 20 73 74 72 2e 72 65     return str.re
7f30: 70 6c 61 63 65 28 2f 2d 28 5c 77 29 2f 67 2c 20  place(/-(\w)/g, 
7f40: 66 75 6e 63 74 69 6f 6e 20 28 5f 2c 20 63 29 20  function (_, c) 
7f50: 7b 20 72 65 74 75 72 6e 20 63 2e 74 6f 55 70 70  { return c.toUpp
7f60: 65 72 43 61 73 65 28 29 3b 20 7d 29 0a 20 20 7d  erCase(); }).  }
7f70: 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 57 61 72  ..  /**.   * War
7f80: 6e 20 61 20 6d 65 73 73 61 67 65 20 76 69 61 20  n a message via 
7f90: 63 6f 6e 73 6f 6c 65 0a 20 20 20 2a 20 40 70 61  console.   * @pa
7fa0: 72 61 6d 20 20 20 7b 53 74 72 69 6e 67 7d 20 6d  ram   {String} m
7fb0: 65 73 73 61 67 65 20 2d 20 77 61 72 6e 69 6e 67  essage - warning
7fc0: 20 6d 65 73 73 61 67 65 0a 20 20 20 2a 2f 0a 20   message.   */. 
7fd0: 20 66 75 6e 63 74 69 6f 6e 20 77 61 72 6e 28 6d   function warn(m
7fe0: 65 73 73 61 67 65 29 20 7b 0a 20 20 20 20 69 66  essage) {.    if
7ff0: 20 28 63 6f 6e 73 6f 6c 65 20 26 26 20 63 6f 6e   (console && con
8000: 73 6f 6c 65 2e 77 61 72 6e 29 20 7b 20 63 6f 6e  sole.warn) { con
8010: 73 6f 6c 65 2e 77 61 72 6e 28 6d 65 73 73 61 67  sole.warn(messag
8020: 65 29 3b 20 7d 0a 20 20 7d 0a 0a 0a 0a 20 20 76  e); }.  }....  v
8030: 61 72 20 6d 69 73 63 20 3d 20 2f 2a 23 5f 5f 50  ar misc = /*#__P
8040: 55 52 45 5f 5f 2a 2f 4f 62 6a 65 63 74 2e 66 72  URE__*/Object.fr
8050: 65 65 7a 65 28 7b 0a 20 20 20 20 63 6f 6e 74 61  eeze({.    conta
8060: 69 6e 73 3a 20 63 6f 6e 74 61 69 6e 73 2c 0a 20  ins: contains,. 
8070: 20 20 20 65 61 63 68 3a 20 65 61 63 68 2c 0a 20     each: each,. 
8080: 20 20 20 67 65 74 50 72 6f 70 44 65 73 63 72 69     getPropDescri
8090: 70 74 6f 72 3a 20 67 65 74 50 72 6f 70 44 65 73  ptor: getPropDes
80a0: 63 72 69 70 74 6f 72 2c 0a 20 20 20 20 73 74 61  criptor,.    sta
80b0: 72 74 73 57 69 74 68 3a 20 73 74 61 72 74 73 57  rtsWith: startsW
80c0: 69 74 68 2c 0a 20 20 20 20 75 69 64 3a 20 75 69  ith,.    uid: ui
80d0: 64 2c 0a 20 20 20 20 64 65 66 69 6e 65 50 72 6f  d,.    definePro
80e0: 70 65 72 74 79 3a 20 64 65 66 69 6e 65 2c 0a 20  perty: define,. 
80f0: 20 20 20 6f 62 6a 65 63 74 43 72 65 61 74 65 3a     objectCreate:
8100: 20 63 72 65 61 74 65 2c 0a 20 20 20 20 65 78 74   create,.    ext
8110: 65 6e 64 3a 20 65 78 74 65 6e 64 2c 0a 20 20 20  end: extend,.   
8120: 20 74 6f 43 61 6d 65 6c 3a 20 74 6f 43 61 6d 65   toCamel: toCame
8130: 6c 2c 0a 20 20 20 20 77 61 72 6e 3a 20 77 61 72  l,.    warn: war
8140: 6e 0a 20 20 7d 29 3b 0a 0a 20 20 2f 2a 2a 0a 20  n.  });..  /**. 
8150: 20 20 2a 20 53 65 74 20 74 68 65 20 70 72 6f 70    * Set the prop
8160: 65 72 74 79 20 6f 66 20 61 6e 20 6f 62 6a 65 63  erty of an objec
8170: 74 20 66 6f 72 20 61 20 67 69 76 65 6e 20 6b 65  t for a given ke
8180: 79 2e 20 49 66 20 73 6f 6d 65 74 68 69 6e 67 20  y. If something 
8190: 61 6c 72 65 61 64 79 0a 20 20 20 2a 20 65 78 69  already.   * exi
81a0: 73 74 73 20 74 68 65 72 65 2c 20 74 68 65 6e 20  sts there, then 
81b0: 69 74 20 62 65 63 6f 6d 65 73 20 61 6e 20 61 72  it becomes an ar
81c0: 72 61 79 20 63 6f 6e 74 61 69 6e 69 6e 67 20 62  ray containing b
81d0: 6f 74 68 20 74 68 65 20 6f 6c 64 20 61 6e 64 20  oth the old and 
81e0: 6e 65 77 20 76 61 6c 75 65 2e 0a 20 20 20 2a 20  new value..   * 
81f0: 40 70 61 72 61 6d 20 7b 20 4f 62 6a 65 63 74 20  @param { Object 
8200: 7d 20 6f 62 6a 20 2d 20 6f 62 6a 65 63 74 20 6f  } obj - object o
8210: 6e 20 77 68 69 63 68 20 74 6f 20 73 65 74 20 74  n which to set t
8220: 68 65 20 70 72 6f 70 65 72 74 79 0a 20 20 20 2a  he property.   *
8230: 20 40 70 61 72 61 6d 20 7b 20 53 74 72 69 6e 67   @param { String
8240: 20 7d 20 6b 65 79 20 2d 20 70 72 6f 70 65 72 74   } key - propert
8250: 79 20 6e 61 6d 65 0a 20 20 20 2a 20 40 70 61 72  y name.   * @par
8260: 61 6d 20 7b 20 4f 62 6a 65 63 74 20 7d 20 76 61  am { Object } va
8270: 6c 75 65 20 2d 20 74 68 65 20 76 61 6c 75 65 20  lue - the value 
8280: 6f 66 20 74 68 65 20 70 72 6f 70 65 72 74 79 20  of the property 
8290: 74 6f 20 62 65 20 73 65 74 0a 20 20 20 2a 20 40  to be set.   * @
82a0: 70 61 72 61 6d 20 7b 20 42 6f 6f 6c 65 61 6e 20  param { Boolean 
82b0: 7d 20 65 6e 73 75 72 65 41 72 72 61 79 20 2d 20  } ensureArray - 
82c0: 65 6e 73 75 72 65 20 74 68 61 74 20 74 68 65 20  ensure that the 
82d0: 70 72 6f 70 65 72 74 79 20 72 65 6d 61 69 6e 73  property remains
82e0: 20 61 6e 20 61 72 72 61 79 0a 20 20 20 2a 20 40   an array.   * @
82f0: 70 61 72 61 6d 20 7b 20 4e 75 6d 62 65 72 20 7d  param { Number }
8300: 20 69 6e 64 65 78 20 2d 20 61 64 64 20 74 68 65   index - add the
8310: 20 6e 65 77 20 69 74 65 6d 20 69 6e 20 61 20 63   new item in a c
8320: 65 72 74 61 69 6e 20 61 72 72 61 79 20 70 6f 73  ertain array pos
8330: 69 74 69 6f 6e 0a 20 20 20 2a 2f 0a 20 20 66 75  ition.   */.  fu
8340: 6e 63 74 69 6f 6e 20 61 72 72 61 79 69 73 68 41  nction arrayishA
8350: 64 64 28 6f 62 6a 2c 20 6b 65 79 2c 20 76 61 6c  dd(obj, key, val
8360: 75 65 2c 20 65 6e 73 75 72 65 41 72 72 61 79 2c  ue, ensureArray,
8370: 20 69 6e 64 65 78 29 20 7b 0a 20 20 20 20 76 61   index) {.    va
8380: 72 20 64 65 73 74 20 3d 20 6f 62 6a 5b 6b 65 79  r dest = obj[key
8390: 5d 3b 0a 20 20 20 20 76 61 72 20 69 73 41 72 72  ];.    var isArr
83a0: 20 3d 20 69 73 41 72 72 61 79 28 64 65 73 74 29   = isArray(dest)
83b0: 3b 0a 20 20 20 20 76 61 72 20 68 61 73 49 6e 64  ;.    var hasInd
83c0: 65 78 20 3d 20 21 69 73 55 6e 64 65 66 69 6e 65  ex = !isUndefine
83d0: 64 28 69 6e 64 65 78 29 3b 0a 0a 20 20 20 20 69  d(index);..    i
83e0: 66 20 28 64 65 73 74 20 26 26 20 64 65 73 74 20  f (dest && dest 
83f0: 3d 3d 3d 20 76 61 6c 75 65 29 20 7b 20 72 65 74  === value) { ret
8400: 75 72 6e 20 7d 0a 0a 20 20 20 20 2f 2f 20 69 66  urn }..    // if
8410: 20 74 68 65 20 6b 65 79 20 77 61 73 20 6e 65 76   the key was nev
8420: 65 72 20 73 65 74 2c 20 73 65 74 20 69 74 20 6f  er set, set it o
8430: 6e 63 65 0a 20 20 20 20 69 66 20 28 21 64 65 73  nce.    if (!des
8440: 74 20 26 26 20 65 6e 73 75 72 65 41 72 72 61 79  t && ensureArray
8450: 29 20 7b 20 6f 62 6a 5b 6b 65 79 5d 20 3d 20 5b  ) { obj[key] = [
8460: 76 61 6c 75 65 5d 3b 20 7d 0a 20 20 20 20 65 6c  value]; }.    el
8470: 73 65 20 69 66 20 28 21 64 65 73 74 29 20 7b 20  se if (!dest) { 
8480: 6f 62 6a 5b 6b 65 79 5d 20 3d 20 76 61 6c 75 65  obj[key] = value
8490: 3b 20 7d 0a 20 20 20 20 2f 2f 20 69 66 20 69 74  ; }.    // if it
84a0: 20 77 61 73 20 61 6e 20 61 72 72 61 79 20 61 6e   was an array an
84b0: 64 20 6e 6f 74 20 79 65 74 20 73 65 74 0a 20 20  d not yet set.  
84c0: 20 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 69    else {.      i
84d0: 66 20 28 69 73 41 72 72 29 20 7b 0a 20 20 20 20  f (isArr) {.    
84e0: 20 20 20 20 76 61 72 20 6f 6c 64 49 6e 64 65 78      var oldIndex
84f0: 20 3d 20 64 65 73 74 2e 69 6e 64 65 78 4f 66 28   = dest.indexOf(
8500: 76 61 6c 75 65 29 3b 0a 20 20 20 20 20 20 20 20  value);.        
8510: 2f 2f 20 74 68 69 73 20 69 74 65 6d 20 6e 65 76  // this item nev
8520: 65 72 20 63 68 61 6e 67 65 64 20 69 74 73 20 70  er changed its p
8530: 6f 73 69 74 69 6f 6e 0a 20 20 20 20 20 20 20 20  osition.        
8540: 69 66 20 28 6f 6c 64 49 6e 64 65 78 20 3d 3d 3d  if (oldIndex ===
8550: 20 69 6e 64 65 78 29 20 7b 20 72 65 74 75 72 6e   index) { return
8560: 20 7d 0a 20 20 20 20 20 20 20 20 2f 2f 20 72 65   }.        // re
8570: 6d 6f 76 65 20 74 68 65 20 69 74 65 6d 20 66 72  move the item fr
8580: 6f 6d 20 69 74 73 20 6f 6c 64 20 70 6f 73 69 74  om its old posit
8590: 69 6f 6e 0a 20 20 20 20 20 20 20 20 69 66 20 28  ion.        if (
85a0: 6f 6c 64 49 6e 64 65 78 20 21 3d 3d 20 2d 31 29  oldIndex !== -1)
85b0: 20 7b 20 64 65 73 74 2e 73 70 6c 69 63 65 28 6f   { dest.splice(o
85c0: 6c 64 49 6e 64 65 78 2c 20 31 29 3b 20 7d 0a 20  ldIndex, 1); }. 
85d0: 20 20 20 20 20 20 20 2f 2f 20 6d 6f 76 65 20 6f         // move o
85e0: 72 20 61 64 64 20 74 68 65 20 69 74 65 6d 0a 20  r add the item. 
85f0: 20 20 20 20 20 20 20 69 66 20 28 68 61 73 49 6e         if (hasIn
8600: 64 65 78 29 20 7b 0a 20 20 20 20 20 20 20 20 20  dex) {.         
8610: 20 64 65 73 74 2e 73 70 6c 69 63 65 28 69 6e 64   dest.splice(ind
8620: 65 78 2c 20 30 2c 20 76 61 6c 75 65 29 3b 0a 20  ex, 0, value);. 
8630: 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a         } else {.
8640: 20 20 20 20 20 20 20 20 20 20 64 65 73 74 2e 70            dest.p
8650: 75 73 68 28 76 61 6c 75 65 29 3b 0a 20 20 20 20  ush(value);.    
8660: 20 20 20 20 7d 0a 20 20 20 20 20 20 7d 20 65 6c      }.      } el
8670: 73 65 20 7b 20 6f 62 6a 5b 6b 65 79 5d 20 3d 20  se { obj[key] = 
8680: 5b 64 65 73 74 2c 20 76 61 6c 75 65 5d 3b 20 7d  [dest, value]; }
8690: 0a 20 20 20 20 7d 0a 20 20 7d 0a 0a 20 20 2f 2a  .    }.  }..  /*
86a0: 2a 0a 20 20 20 2a 20 44 65 74 65 63 74 20 74 68  *.   * Detect th
86b0: 65 20 74 61 67 20 69 6d 70 6c 65 6d 65 6e 74 61  e tag implementa
86c0: 74 69 6f 6e 20 62 79 20 61 20 44 4f 4d 20 6e 6f  tion by a DOM no
86d0: 64 65 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20  de.   * @param  
86e0: 20 7b 20 4f 62 6a 65 63 74 20 7d 20 64 6f 6d 20   { Object } dom 
86f0: 2d 20 44 4f 4d 20 6e 6f 64 65 20 77 65 20 6e 65  - DOM node we ne
8700: 65 64 20 74 6f 20 70 61 72 73 65 20 74 6f 20 67  ed to parse to g
8710: 65 74 20 69 74 73 20 74 61 67 20 69 6d 70 6c 65  et its tag imple
8720: 6d 65 6e 74 61 74 69 6f 6e 0a 20 20 20 2a 20 40  mentation.   * @
8730: 72 65 74 75 72 6e 73 20 7b 20 4f 62 6a 65 63 74  returns { Object
8740: 20 7d 20 69 74 20 72 65 74 75 72 6e 73 20 61 6e   } it returns an
8750: 20 6f 62 6a 65 63 74 20 63 6f 6e 74 61 69 6e 69   object containi
8760: 6e 67 20 74 68 65 20 69 6d 70 6c 65 6d 65 6e 74  ng the implement
8770: 61 74 69 6f 6e 20 6f 66 20 61 20 63 75 73 74 6f  ation of a custo
8780: 6d 20 74 61 67 20 28 74 65 6d 70 6c 61 74 65 20  m tag (template 
8790: 61 6e 64 20 62 6f 6f 74 20 66 75 6e 63 74 69 6f  and boot functio
87a0: 6e 29 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74  n).   */.  funct
87b0: 69 6f 6e 20 67 65 74 28 64 6f 6d 29 20 7b 0a 20  ion get(dom) {. 
87c0: 20 20 20 72 65 74 75 72 6e 20 64 6f 6d 2e 74 61     return dom.ta
87d0: 67 4e 61 6d 65 20 26 26 20 5f 5f 54 41 47 5f 49  gName && __TAG_I
87e0: 4d 50 4c 5b 67 65 74 41 74 74 72 69 62 75 74 65  MPL[getAttribute
87f0: 28 64 6f 6d 2c 20 49 53 5f 44 49 52 45 43 54 49  (dom, IS_DIRECTI
8800: 56 45 29 20 7c 7c 0a 20 20 20 20 20 20 67 65 74  VE) ||.      get
8810: 41 74 74 72 69 62 75 74 65 28 64 6f 6d 2c 20 49  Attribute(dom, I
8820: 53 5f 44 49 52 45 43 54 49 56 45 29 20 7c 7c 20  S_DIRECTIVE) || 
8830: 64 6f 6d 2e 74 61 67 4e 61 6d 65 2e 74 6f 4c 6f  dom.tagName.toLo
8840: 77 65 72 43 61 73 65 28 29 5d 0a 20 20 7d 0a 0a  werCase()].  }..
8850: 20 20 2f 2a 2a 0a 20 20 20 2a 20 47 65 74 20 74    /**.   * Get t
8860: 68 65 20 74 61 67 20 6e 61 6d 65 20 6f 66 20 61  he tag name of a
8870: 6e 79 20 44 4f 4d 20 6e 6f 64 65 0a 20 20 20 2a  ny DOM node.   *
8880: 20 40 70 61 72 61 6d 20 20 20 7b 20 4f 62 6a 65   @param   { Obje
8890: 63 74 20 7d 20 64 6f 6d 20 2d 20 44 4f 4d 20 6e  ct } dom - DOM n
88a0: 6f 64 65 20 77 65 20 77 61 6e 74 20 74 6f 20 70  ode we want to p
88b0: 61 72 73 65 0a 20 20 20 2a 20 40 70 61 72 61 6d  arse.   * @param
88c0: 20 20 20 7b 20 42 6f 6f 6c 65 61 6e 20 7d 20 73     { Boolean } s
88d0: 6b 69 70 44 61 74 61 49 73 20 2d 20 68 61 63 6b  kipDataIs - hack
88e0: 20 74 6f 20 69 67 6e 6f 72 65 20 74 68 65 20 64   to ignore the d
88f0: 61 74 61 2d 69 73 20 61 74 74 72 69 62 75 74 65  ata-is attribute
8900: 20 77 68 65 6e 20 61 74 74 61 63 68 69 6e 67 20   when attaching 
8910: 74 6f 20 70 61 72 65 6e 74 0a 20 20 20 2a 20 40  to parent.   * @
8920: 72 65 74 75 72 6e 73 20 7b 20 53 74 72 69 6e 67  returns { String
8930: 20 7d 20 6e 61 6d 65 20 74 6f 20 69 64 65 6e 74   } name to ident
8940: 69 66 79 20 74 68 69 73 20 64 6f 6d 20 6e 6f 64  ify this dom nod
8950: 65 20 69 6e 20 72 69 6f 74 0a 20 20 20 2a 2f 0a  e in riot.   */.
8960: 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 4e 61    function getNa
8970: 6d 65 28 64 6f 6d 2c 20 73 6b 69 70 44 61 74 61  me(dom, skipData
8980: 49 73 29 20 7b 0a 20 20 20 20 76 61 72 20 63 68  Is) {.    var ch
8990: 69 6c 64 20 3d 20 67 65 74 28 64 6f 6d 29 3b 0a  ild = get(dom);.
89a0: 20 20 20 20 76 61 72 20 6e 61 6d 65 64 54 61 67      var namedTag
89b0: 20 3d 20 21 73 6b 69 70 44 61 74 61 49 73 20 26   = !skipDataIs &
89c0: 26 20 67 65 74 41 74 74 72 69 62 75 74 65 28 64  & getAttribute(d
89d0: 6f 6d 2c 20 49 53 5f 44 49 52 45 43 54 49 56 45  om, IS_DIRECTIVE
89e0: 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 6e 61  );.    return na
89f0: 6d 65 64 54 61 67 20 26 26 20 21 74 6d 70 6c 2e  medTag && !tmpl.
8a00: 68 61 73 45 78 70 72 28 6e 61 6d 65 64 54 61 67  hasExpr(namedTag
8a10: 29 20 3f 0a 20 20 20 20 20 20 6e 61 6d 65 64 54  ) ?.      namedT
8a20: 61 67 20 3a 20 63 68 69 6c 64 20 3f 20 63 68 69  ag : child ? chi
8a30: 6c 64 2e 6e 61 6d 65 20 3a 20 64 6f 6d 2e 74 61  ld.name : dom.ta
8a40: 67 4e 61 6d 65 2e 74 6f 4c 6f 77 65 72 43 61 73  gName.toLowerCas
8a50: 65 28 29 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20  e().  }..  /**. 
8a60: 20 20 2a 20 52 65 74 75 72 6e 20 61 20 74 65 6d    * Return a tem
8a70: 70 6f 72 61 72 79 20 63 6f 6e 74 65 78 74 20 63  porary context c
8a80: 6f 6e 74 61 69 6e 69 6e 67 20 61 6c 73 6f 20 74  ontaining also t
8a90: 68 65 20 70 61 72 65 6e 74 20 70 72 6f 70 65 72  he parent proper
8aa0: 74 69 65 73 0a 20 20 20 2a 20 40 74 68 69 73 20  ties.   * @this 
8ab0: 54 61 67 0a 20 20 20 2a 20 40 70 61 72 61 6d 20  Tag.   * @param 
8ac0: 7b 20 54 61 67 20 7d 20 2d 20 74 65 6d 70 6f 72  { Tag } - tempor
8ad0: 61 72 79 20 74 61 67 20 63 6f 6e 74 65 78 74 20  ary tag context 
8ae0: 63 6f 6e 74 61 69 6e 69 6e 67 20 61 6c 6c 20 74  containing all t
8af0: 68 65 20 70 61 72 65 6e 74 20 70 72 6f 70 65 72  he parent proper
8b00: 74 69 65 73 0a 20 20 20 2a 2f 0a 20 20 66 75 6e  ties.   */.  fun
8b10: 63 74 69 6f 6e 20 69 6e 68 65 72 69 74 50 61 72  ction inheritPar
8b20: 65 6e 74 50 72 6f 70 73 28 29 20 7b 0a 20 20 20  entProps() {.   
8b30: 20 69 66 20 28 74 68 69 73 2e 70 61 72 65 6e 74   if (this.parent
8b40: 29 20 7b 20 72 65 74 75 72 6e 20 65 78 74 65 6e  ) { return exten
8b50: 64 28 63 72 65 61 74 65 28 74 68 69 73 29 2c 20  d(create(this), 
8b60: 74 68 69 73 2e 70 61 72 65 6e 74 29 20 7d 0a 20  this.parent) }. 
8b70: 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 0a 20     return this. 
8b80: 20 7d 0a 0a 20 20 2f 2a 0a 20 20 20 20 49 6e 63   }..  /*.    Inc
8b90: 6c 75 64 65 73 20 68 61 63 6b 73 20 6e 65 65 64  ludes hacks need
8ba0: 65 64 20 66 6f 72 20 74 68 65 20 49 6e 74 65 72  ed for the Inter
8bb0: 6e 65 74 20 45 78 70 6c 6f 72 65 72 20 76 65 72  net Explorer ver
8bc0: 73 69 6f 6e 20 39 20 61 6e 64 20 62 65 6c 6f 77  sion 9 and below
8bd0: 0a 20 20 20 20 53 65 65 3a 20 68 74 74 70 3a 2f  .    See: http:/
8be0: 2f 6b 61 6e 67 61 78 2e 67 69 74 68 75 62 2e 69  /kangax.github.i
8bf0: 6f 2f 63 6f 6d 70 61 74 2d 74 61 62 6c 65 2f 65  o/compat-table/e
8c00: 73 35 2f 23 69 65 38 0a 20 20 20 20 20 20 20 20  s5/#ie8.        
8c10: 20 68 74 74 70 3a 2f 2f 63 6f 64 65 70 6c 61 6e   http://codeplan
8c20: 65 74 2e 69 6f 2f 64 72 6f 70 70 69 6e 67 2d 69  et.io/dropping-i
8c30: 65 38 2f 0a 20 20 2a 2f 0a 0a 20 20 76 61 72 0a  e8/.  */..  var.
8c40: 20 20 20 20 72 65 48 61 73 59 69 65 6c 64 20 20      reHasYield  
8c50: 3d 20 2f 3c 79 69 65 6c 64 5c 62 2f 69 2c 0a 20  = /<yield\b/i,. 
8c60: 20 20 20 72 65 59 69 65 6c 64 41 6c 6c 20 20 3d     reYieldAll  =
8c70: 20 2f 3c 79 69 65 6c 64 5c 73 2a 28 3f 3a 5c 2f   /<yield\s*(?:\/
8c80: 3e 7c 3e 28 5b 5c 53 5c 73 5d 2a 3f 29 3c 5c 2f  >|>([\S\s]*?)<\/
8c90: 79 69 65 6c 64 5c 73 2a 3e 7c 3e 29 2f 69 67 2c  yield\s*>|>)/ig,
8ca0: 0a 20 20 20 20 72 65 59 69 65 6c 64 53 72 63 20  .    reYieldSrc 
8cb0: 20 3d 20 2f 3c 79 69 65 6c 64 5c 73 2b 74 6f 3d   = /<yield\s+to=
8cc0: 5b 27 22 5d 28 5b 5e 27 22 3e 5d 2a 29 5b 27 22  ['"]([^'">]*)['"
8cd0: 5d 5c 73 2a 3e 28 5b 5c 53 5c 73 5d 2a 3f 29 3c  ]\s*>([\S\s]*?)<
8ce0: 5c 2f 79 69 65 6c 64 5c 73 2a 3e 2f 69 67 2c 0a  \/yield\s*>/ig,.
8cf0: 20 20 20 20 72 65 59 69 65 6c 64 44 65 73 74 20      reYieldDest 
8d00: 3d 20 2f 3c 79 69 65 6c 64 5c 73 2b 66 72 6f 6d  = /<yield\s+from
8d10: 3d 5b 27 22 5d 3f 28 5b 2d 5c 77 5d 2b 29 5b 27  =['"]?([-\w]+)['
8d20: 22 5d 3f 5c 73 2a 28 3f 3a 5c 2f 3e 7c 3e 28 5b  "]?\s*(?:\/>|>([
8d30: 5c 53 5c 73 5d 2a 3f 29 3c 5c 2f 79 69 65 6c 64  \S\s]*?)<\/yield
8d40: 5c 73 2a 3e 29 2f 69 67 2c 0a 20 20 20 20 72 6f  \s*>)/ig,.    ro
8d50: 6f 74 45 6c 73 20 3d 20 7b 20 74 72 3a 20 27 74  otEls = { tr: 't
8d60: 62 6f 64 79 27 2c 20 74 68 3a 20 27 74 72 27 2c  body', th: 'tr',
8d70: 20 74 64 3a 20 27 74 72 27 2c 20 63 6f 6c 3a 20   td: 'tr', col: 
8d80: 27 63 6f 6c 67 72 6f 75 70 27 20 7d 2c 0a 20 20  'colgroup' },.  
8d90: 20 20 74 62 6c 54 61 67 73 20 3d 20 49 45 5f 56    tblTags = IE_V
8da0: 45 52 53 49 4f 4e 20 26 26 20 49 45 5f 56 45 52  ERSION && IE_VER
8db0: 53 49 4f 4e 20 3c 20 31 30 20 3f 20 52 45 5f 53  SION < 10 ? RE_S
8dc0: 50 45 43 49 41 4c 5f 54 41 47 53 20 3a 20 52 45  PECIAL_TAGS : RE
8dd0: 5f 53 50 45 43 49 41 4c 5f 54 41 47 53 5f 4e 4f  _SPECIAL_TAGS_NO
8de0: 5f 4f 50 54 49 4f 4e 2c 0a 20 20 20 20 47 45 4e  _OPTION,.    GEN
8df0: 45 52 49 43 20 3d 20 27 64 69 76 27 2c 0a 20 20  ERIC = 'div',.  
8e00: 20 20 53 56 47 20 3d 20 27 73 76 67 27 3b 0a 0a    SVG = 'svg';..
8e10: 0a 20 20 2f 2a 0a 20 20 20 20 43 72 65 61 74 65  .  /*.    Create
8e20: 73 20 74 68 65 20 72 6f 6f 74 20 65 6c 65 6d 65  s the root eleme
8e30: 6e 74 20 66 6f 72 20 74 61 62 6c 65 20 6f 72 20  nt for table or 
8e40: 73 65 6c 65 63 74 20 63 68 69 6c 64 20 65 6c 65  select child ele
8e50: 6d 65 6e 74 73 3a 0a 20 20 20 20 74 72 2f 74 68  ments:.    tr/th
8e60: 2f 74 64 2f 74 68 65 61 64 2f 74 66 6f 6f 74 2f  /td/thead/tfoot/
8e70: 74 62 6f 64 79 2f 63 61 70 74 69 6f 6e 2f 63 6f  tbody/caption/co
8e80: 6c 2f 63 6f 6c 67 72 6f 75 70 2f 6f 70 74 69 6f  l/colgroup/optio
8e90: 6e 2f 6f 70 74 67 72 6f 75 70 0a 20 20 2a 2f 0a  n/optgroup.  */.
8ea0: 20 20 66 75 6e 63 74 69 6f 6e 20 73 70 65 63 69    function speci
8eb0: 61 6c 54 61 67 73 28 65 6c 2c 20 74 6d 70 6c 2c  alTags(el, tmpl,
8ec0: 20 74 61 67 4e 61 6d 65 29 20 7b 0a 0a 20 20 20   tagName) {..   
8ed0: 20 76 61 72 0a 20 20 20 20 20 20 73 65 6c 65 63   var.      selec
8ee0: 74 20 3d 20 74 61 67 4e 61 6d 65 5b 30 5d 20 3d  t = tagName[0] =
8ef0: 3d 3d 20 27 6f 27 2c 0a 20 20 20 20 20 20 70 61  == 'o',.      pa
8f00: 72 65 6e 74 20 3d 20 73 65 6c 65 63 74 20 3f 20  rent = select ? 
8f10: 27 73 65 6c 65 63 74 3e 27 20 3a 20 27 74 61 62  'select>' : 'tab
8f20: 6c 65 3e 27 3b 0a 0a 20 20 20 20 2f 2f 20 74 72  le>';..    // tr
8f30: 69 6d 28 29 20 69 73 20 69 6d 70 6f 72 74 61 6e  im() is importan
8f40: 74 20 68 65 72 65 2c 20 74 68 69 73 20 65 6e 73  t here, this ens
8f50: 75 72 65 73 20 77 65 20 64 6f 6e 27 74 20 68 61  ures we don't ha
8f60: 76 65 20 61 72 74 69 66 61 63 74 73 2c 0a 20 20  ve artifacts,.  
8f70: 20 20 2f 2f 20 73 6f 20 77 65 20 63 61 6e 20 63    // so we can c
8f80: 68 65 63 6b 20 69 66 20 77 65 20 68 61 76 65 20  heck if we have 
8f90: 6f 6e 6c 79 20 6f 6e 65 20 65 6c 65 6d 65 6e 74  only one element
8fa0: 20 69 6e 73 69 64 65 20 74 68 65 20 70 61 72 65   inside the pare
8fb0: 6e 74 0a 20 20 20 20 65 6c 2e 69 6e 6e 65 72 48  nt.    el.innerH
8fc0: 54 4d 4c 20 3d 20 27 3c 27 20 2b 20 70 61 72 65  TML = '<' + pare
8fd0: 6e 74 20 2b 20 74 6d 70 6c 2e 74 72 69 6d 28 29  nt + tmpl.trim()
8fe0: 20 2b 20 27 3c 2f 27 20 2b 20 70 61 72 65 6e 74   + '</' + parent
8ff0: 3b 0a 20 20 20 20 70 61 72 65 6e 74 20 3d 20 65  ;.    parent = e
9000: 6c 2e 66 69 72 73 74 43 68 69 6c 64 3b 0a 0a 20  l.firstChild;.. 
9010: 20 20 20 2f 2f 20 72 65 74 75 72 6e 73 20 74 68     // returns th
9020: 65 20 69 6d 6d 65 64 69 61 74 65 20 70 61 72 65  e immediate pare
9030: 6e 74 20 69 66 20 74 72 2f 74 68 2f 74 64 2f 63  nt if tr/th/td/c
9040: 6f 6c 20 69 73 20 74 68 65 20 6f 6e 6c 79 20 65  ol is the only e
9050: 6c 65 6d 65 6e 74 2c 20 69 66 20 6e 6f 74 0a 20  lement, if not. 
9060: 20 20 20 2f 2f 20 72 65 74 75 72 6e 73 20 74 68     // returns th
9070: 65 20 77 68 6f 6c 65 20 74 72 65 65 2c 20 61 73  e whole tree, as
9080: 20 74 68 69 73 20 63 61 6e 20 69 6e 63 6c 75 64   this can includ
9090: 65 20 61 64 64 69 74 69 6f 6e 61 6c 20 65 6c 65  e additional ele
90a0: 6d 65 6e 74 73 0a 20 20 20 20 2f 2a 20 69 73 74  ments.    /* ist
90b0: 61 6e 62 75 6c 20 69 67 6e 6f 72 65 20 6e 65 78  anbul ignore nex
90c0: 74 20 2a 2f 0a 20 20 20 20 69 66 20 28 73 65 6c  t */.    if (sel
90d0: 65 63 74 29 20 7b 0a 20 20 20 20 20 20 70 61 72  ect) {.      par
90e0: 65 6e 74 2e 73 65 6c 65 63 74 65 64 49 6e 64 65  ent.selectedInde
90f0: 78 20 3d 20 2d 31 3b 20 20 2f 2f 20 66 6f 72 20  x = -1;  // for 
9100: 49 45 39 2c 20 63 6f 6d 70 61 74 69 62 6c 65 20  IE9, compatible 
9110: 77 2f 63 75 72 72 65 6e 74 20 72 69 6f 74 20 62  w/current riot b
9120: 65 68 61 76 69 6f 72 0a 20 20 20 20 7d 20 65 6c  ehavior.    } el
9130: 73 65 20 7b 0a 20 20 20 20 20 20 2f 2f 20 61 76  se {.      // av
9140: 6f 69 64 73 20 69 6e 73 65 72 74 69 6f 6e 20 6f  oids insertion o
9150: 66 20 63 6f 69 6e 74 61 69 6e 65 72 20 69 6e 73  f cointainer ins
9160: 69 64 65 20 63 6f 6e 74 61 69 6e 65 72 20 28 65  ide container (e
9170: 78 3a 20 74 62 6f 64 79 20 69 6e 73 69 64 65 20  x: tbody inside 
9180: 74 62 6f 64 79 29 0a 20 20 20 20 20 20 76 61 72  tbody).      var
9190: 20 74 6e 61 6d 65 20 3d 20 72 6f 6f 74 45 6c 73   tname = rootEls
91a0: 5b 74 61 67 4e 61 6d 65 5d 3b 0a 20 20 20 20 20  [tagName];.     
91b0: 20 69 66 20 28 74 6e 61 6d 65 20 26 26 20 70 61   if (tname && pa
91c0: 72 65 6e 74 2e 63 68 69 6c 64 45 6c 65 6d 65 6e  rent.childElemen
91d0: 74 43 6f 75 6e 74 20 3d 3d 3d 20 31 29 20 7b 20  tCount === 1) { 
91e0: 70 61 72 65 6e 74 20 3d 20 24 28 74 6e 61 6d 65  parent = $(tname
91f0: 2c 20 70 61 72 65 6e 74 29 3b 20 7d 0a 20 20 20  , parent); }.   
9200: 20 7d 0a 20 20 20 20 72 65 74 75 72 6e 20 70 61   }.    return pa
9210: 72 65 6e 74 0a 20 20 7d 0a 0a 20 20 2f 2a 0a 20  rent.  }..  /*. 
9220: 20 20 20 52 65 70 6c 61 63 65 20 74 68 65 20 79     Replace the y
9230: 69 65 6c 64 20 74 61 67 20 66 72 6f 6d 20 61 6e  ield tag from an
9240: 79 20 74 61 67 20 74 65 6d 70 6c 61 74 65 20 77  y tag template w
9250: 69 74 68 20 74 68 65 20 69 6e 6e 65 72 48 54 4d  ith the innerHTM
9260: 4c 20 6f 66 20 74 68 65 0a 20 20 20 20 6f 72 69  L of the.    ori
9270: 67 69 6e 61 6c 20 74 61 67 20 69 6e 20 74 68 65  ginal tag in the
9280: 20 70 61 67 65 0a 20 20 2a 2f 0a 20 20 66 75 6e   page.  */.  fun
9290: 63 74 69 6f 6e 20 72 65 70 6c 61 63 65 59 69 65  ction replaceYie
92a0: 6c 64 28 74 6d 70 6c 2c 20 68 74 6d 6c 29 20 7b  ld(tmpl, html) {
92b0: 0a 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69  .    // do nothi
92c0: 6e 67 20 69 66 20 6e 6f 20 79 69 65 6c 64 0a 20  ng if no yield. 
92d0: 20 20 20 69 66 20 28 21 72 65 48 61 73 59 69 65     if (!reHasYie
92e0: 6c 64 2e 74 65 73 74 28 74 6d 70 6c 29 29 20 7b  ld.test(tmpl)) {
92f0: 20 72 65 74 75 72 6e 20 74 6d 70 6c 20 7d 0a 0a   return tmpl }..
9300: 20 20 20 20 2f 2f 20 62 65 20 63 61 72 65 66 75      // be carefu
9310: 6c 20 77 69 74 68 20 23 31 33 34 33 20 2d 20 73  l with #1343 - s
9320: 74 72 69 6e 67 20 6f 6e 20 74 68 65 20 73 6f 75  tring on the sou
9330: 72 63 65 20 68 61 76 69 6e 67 20 60 24 31 60 0a  rce having `$1`.
9340: 20 20 20 20 76 61 72 20 73 72 63 20 3d 20 7b 7d      var src = {}
9350: 3b 0a 0a 20 20 20 20 68 74 6d 6c 20 3d 20 68 74  ;..    html = ht
9360: 6d 6c 20 26 26 20 68 74 6d 6c 2e 72 65 70 6c 61  ml && html.repla
9370: 63 65 28 72 65 59 69 65 6c 64 53 72 63 2c 20 66  ce(reYieldSrc, f
9380: 75 6e 63 74 69 6f 6e 20 28 5f 2c 20 72 65 66 2c  unction (_, ref,
9390: 20 74 65 78 74 29 20 7b 0a 20 20 20 20 20 20 73   text) {.      s
93a0: 72 63 5b 72 65 66 5d 20 3d 20 73 72 63 5b 72 65  rc[ref] = src[re
93b0: 66 5d 20 7c 7c 20 74 65 78 74 3b 20 20 20 2f 2f  f] || text;   //
93c0: 20 70 72 65 73 65 72 76 65 20 66 69 72 73 74 20   preserve first 
93d0: 64 65 66 69 6e 69 74 69 6f 6e 0a 20 20 20 20 20  definition.     
93e0: 20 72 65 74 75 72 6e 20 27 27 0a 20 20 20 20 7d   return ''.    }
93f0: 29 2e 74 72 69 6d 28 29 3b 0a 0a 20 20 20 20 72  ).trim();..    r
9400: 65 74 75 72 6e 20 74 6d 70 6c 0a 20 20 20 20 20  eturn tmpl.     
9410: 20 2e 72 65 70 6c 61 63 65 28 72 65 59 69 65 6c   .replace(reYiel
9420: 64 44 65 73 74 2c 20 66 75 6e 63 74 69 6f 6e 20  dDest, function 
9430: 28 5f 2c 20 72 65 66 2c 20 64 65 66 29 20 7b 20  (_, ref, def) { 
9440: 20 2f 2f 20 79 69 65 6c 64 20 77 69 74 68 20 66   // yield with f
9450: 72 6f 6d 20 2d 20 74 6f 20 61 74 74 72 73 0a 20  rom - to attrs. 
9460: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 72         return sr
9470: 63 5b 72 65 66 5d 20 7c 7c 20 64 65 66 20 7c 7c  c[ref] || def ||
9480: 20 27 27 0a 20 20 20 20 20 20 7d 29 0a 20 20 20   ''.      }).   
9490: 20 20 20 2e 72 65 70 6c 61 63 65 28 72 65 59 69     .replace(reYi
94a0: 65 6c 64 41 6c 6c 2c 20 66 75 6e 63 74 69 6f 6e  eldAll, function
94b0: 20 28 5f 2c 20 64 65 66 29 20 7b 20 20 20 20 20   (_, def) {     
94c0: 20 20 20 2f 2f 20 79 69 65 6c 64 20 77 69 74 68     // yield with
94d0: 6f 75 74 20 61 6e 79 20 22 66 72 6f 6d 22 0a 20  out any "from". 
94e0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 68 74         return ht
94f0: 6d 6c 20 7c 7c 20 64 65 66 20 7c 7c 20 27 27 0a  ml || def || ''.
9500: 20 20 20 20 20 20 7d 29 0a 20 20 7d 0a 0a 20 20        }).  }..  
9510: 2f 2a 2a 0a 20 20 20 2a 20 43 72 65 61 74 65 73  /**.   * Creates
9520: 20 61 20 44 4f 4d 20 65 6c 65 6d 65 6e 74 20 74   a DOM element t
9530: 6f 20 77 72 61 70 20 74 68 65 20 67 69 76 65 6e  o wrap the given
9540: 20 63 6f 6e 74 65 6e 74 2e 20 4e 6f 72 6d 61 6c   content. Normal
9550: 6c 79 20 61 6e 20 60 44 49 56 60 2c 20 62 75 74  ly an `DIV`, but
9560: 20 63 61 6e 20 62 65 0a 20 20 20 2a 20 61 6c 73   can be.   * als
9570: 6f 20 61 20 60 54 41 42 4c 45 60 2c 20 60 53 45  o a `TABLE`, `SE
9580: 4c 45 43 54 60 2c 20 60 54 42 4f 44 59 60 2c 20  LECT`, `TBODY`, 
9590: 60 54 52 60 2c 20 6f 72 20 60 43 4f 4c 47 52 4f  `TR`, or `COLGRO
95a0: 55 50 60 20 65 6c 65 6d 65 6e 74 2e 0a 20 20 20  UP` element..   
95b0: 2a 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20  *.   * @param   
95c0: 7b 20 53 74 72 69 6e 67 20 7d 20 74 6d 70 6c 20  { String } tmpl 
95d0: 20 2d 20 54 68 65 20 74 65 6d 70 6c 61 74 65 20   - The template 
95e0: 63 6f 6d 69 6e 67 20 66 72 6f 6d 20 74 68 65 20  coming from the 
95f0: 63 75 73 74 6f 6d 20 74 61 67 20 64 65 66 69 6e  custom tag defin
9600: 69 74 69 6f 6e 0a 20 20 20 2a 20 40 70 61 72 61  ition.   * @para
9610: 6d 20 20 20 7b 20 53 74 72 69 6e 67 20 7d 20 68  m   { String } h
9620: 74 6d 6c 20 2d 20 48 54 4d 4c 20 63 6f 6e 74 65  tml - HTML conte
9630: 6e 74 20 74 68 61 74 20 63 6f 6d 65 73 20 66 72  nt that comes fr
9640: 6f 6d 20 74 68 65 20 44 4f 4d 20 65 6c 65 6d 65  om the DOM eleme
9650: 6e 74 20 77 68 65 72 65 20 79 6f 75 0a 20 20 20  nt where you.   
9660: 2a 20 20 20 20 20 20 20 20 20 20 20 77 69 6c 6c  *           will
9670: 20 6d 6f 75 6e 74 20 74 68 65 20 74 61 67 2c 20   mount the tag, 
9680: 6d 6f 73 74 6c 79 20 74 68 65 20 6f 72 69 67 69  mostly the origi
9690: 6e 61 6c 20 74 61 67 20 69 6e 20 74 68 65 20 70  nal tag in the p
96a0: 61 67 65 0a 20 20 20 2a 20 40 70 61 72 61 6d 20  age.   * @param 
96b0: 20 20 7b 20 42 6f 6f 6c 65 61 6e 20 7d 20 69 73    { Boolean } is
96c0: 53 76 67 20 2d 20 74 72 75 65 20 69 66 20 74 68  Svg - true if th
96d0: 65 20 72 6f 6f 74 20 6e 6f 64 65 20 69 73 20 61  e root node is a
96e0: 6e 20 73 76 67 0a 20 20 20 2a 20 40 72 65 74 75  n svg.   * @retu
96f0: 72 6e 73 20 7b 20 48 54 4d 4c 45 6c 65 6d 65 6e  rns { HTMLElemen
9700: 74 20 7d 20 44 4f 4d 20 65 6c 65 6d 65 6e 74 20  t } DOM element 
9710: 77 69 74 68 20 5f 74 6d 70 6c 5f 20 6d 65 72 67  with _tmpl_ merg
9720: 65 64 20 74 68 72 6f 75 67 68 20 60 59 49 45 4c  ed through `YIEL
9730: 44 60 20 77 69 74 68 20 74 68 65 20 5f 68 74 6d  D` with the _htm
9740: 6c 5f 2e 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63  l_..   */.  func
9750: 74 69 6f 6e 20 6d 6b 64 6f 6d 28 74 6d 70 6c 2c  tion mkdom(tmpl,
9760: 20 68 74 6d 6c 2c 20 69 73 53 76 67 29 20 7b 0a   html, isSvg) {.
9770: 20 20 20 20 76 61 72 20 6d 61 74 63 68 20 20 20      var match   
9780: 3d 20 74 6d 70 6c 20 26 26 20 74 6d 70 6c 2e 6d  = tmpl && tmpl.m
9790: 61 74 63 68 28 2f 5e 5c 73 2a 3c 28 5b 2d 5c 77  atch(/^\s*<([-\w
97a0: 5d 2b 29 2f 29 3b 0a 20 20 20 20 76 61 72 20 20  ]+)/);.    var  
97b0: 74 61 67 4e 61 6d 65 20 3d 20 6d 61 74 63 68 20  tagName = match 
97c0: 26 26 20 6d 61 74 63 68 5b 31 5d 2e 74 6f 4c 6f  && match[1].toLo
97d0: 77 65 72 43 61 73 65 28 29 3b 0a 20 20 20 20 76  werCase();.    v
97e0: 61 72 20 65 6c 20 3d 20 6d 61 6b 65 45 6c 65 6d  ar el = makeElem
97f0: 65 6e 74 28 69 73 53 76 67 20 3f 20 53 56 47 20  ent(isSvg ? SVG 
9800: 3a 20 47 45 4e 45 52 49 43 29 3b 0a 0a 20 20 20  : GENERIC);..   
9810: 20 2f 2f 20 72 65 70 6c 61 63 65 20 61 6c 6c 20   // replace all 
9820: 74 68 65 20 79 69 65 6c 64 20 74 61 67 73 20 77  the yield tags w
9830: 69 74 68 20 74 68 65 20 74 61 67 20 69 6e 6e 65  ith the tag inne
9840: 72 20 68 74 6d 6c 0a 20 20 20 20 74 6d 70 6c 20  r html.    tmpl 
9850: 3d 20 72 65 70 6c 61 63 65 59 69 65 6c 64 28 74  = replaceYield(t
9860: 6d 70 6c 2c 20 68 74 6d 6c 29 3b 0a 0a 20 20 20  mpl, html);..   
9870: 20 2f 2a 20 69 73 74 61 6e 62 75 6c 20 69 67 6e   /* istanbul ign
9880: 6f 72 65 20 6e 65 78 74 20 2a 2f 0a 20 20 20 20  ore next */.    
9890: 69 66 20 28 74 62 6c 54 61 67 73 2e 74 65 73 74  if (tblTags.test
98a0: 28 74 61 67 4e 61 6d 65 29 29 0a 20 20 20 20 20  (tagName)).     
98b0: 20 7b 20 65 6c 20 3d 20 73 70 65 63 69 61 6c 54   { el = specialT
98c0: 61 67 73 28 65 6c 2c 20 74 6d 70 6c 2c 20 74 61  ags(el, tmpl, ta
98d0: 67 4e 61 6d 65 29 3b 20 7d 0a 20 20 20 20 65 6c  gName); }.    el
98e0: 73 65 0a 20 20 20 20 20 20 7b 20 73 65 74 49 6e  se.      { setIn
98f0: 6e 65 72 48 54 4d 4c 28 65 6c 2c 20 74 6d 70 6c  nerHTML(el, tmpl
9900: 2c 20 69 73 53 76 67 29 3b 20 7d 0a 0a 20 20 20  , isSvg); }..   
9910: 20 72 65 74 75 72 6e 20 65 6c 0a 20 20 7d 0a 0a   return el.  }..
9920: 20 20 76 61 72 20 45 56 45 4e 54 5f 41 54 54 52    var EVENT_ATTR
9930: 5f 52 45 20 3d 20 2f 5e 6f 6e 2f 3b 0a 0a 20 20  _RE = /^on/;..  
9940: 2f 2a 2a 0a 20 20 20 2a 20 54 72 75 65 20 69 66  /**.   * True if
9950: 20 74 68 65 20 65 76 65 6e 74 20 61 74 74 72 69   the event attri
9960: 62 75 74 65 20 73 74 61 72 74 73 20 77 69 74 68  bute starts with
9970: 20 27 6f 6e 27 0a 20 20 20 2a 20 40 70 61 72 61   'on'.   * @para
9980: 6d 20 20 20 7b 20 53 74 72 69 6e 67 20 7d 20 61  m   { String } a
9990: 74 74 72 69 62 75 74 65 20 2d 20 65 76 65 6e 74  ttribute - event
99a0: 20 61 74 74 72 69 62 75 74 65 0a 20 20 20 2a 20   attribute.   * 
99b0: 40 72 65 74 75 72 6e 73 20 7b 20 42 6f 6f 6c 65  @returns { Boole
99c0: 61 6e 20 7d 0a 20 20 20 2a 2f 0a 20 20 66 75 6e  an }.   */.  fun
99d0: 63 74 69 6f 6e 20 69 73 45 76 65 6e 74 41 74 74  ction isEventAtt
99e0: 72 69 62 75 74 65 28 61 74 74 72 69 62 75 74 65  ribute(attribute
99f0: 29 20 7b 0a 20 20 20 20 72 65 74 75 72 6e 20 45  ) {.    return E
9a00: 56 45 4e 54 5f 41 54 54 52 5f 52 45 2e 74 65 73  VENT_ATTR_RE.tes
9a10: 74 28 61 74 74 72 69 62 75 74 65 29 0a 20 20 7d  t(attribute).  }
9a20: 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 4c 6f 6f  ..  /**.   * Loo
9a30: 70 20 62 61 63 6b 77 61 72 64 20 61 6c 6c 20 74  p backward all t
9a40: 68 65 20 70 61 72 65 6e 74 73 20 74 72 65 65 20  he parents tree 
9a50: 74 6f 20 64 65 74 65 63 74 20 74 68 65 20 66 69  to detect the fi
9a60: 72 73 74 20 63 75 73 74 6f 6d 20 70 61 72 65 6e  rst custom paren
9a70: 74 20 74 61 67 0a 20 20 20 2a 20 40 70 61 72 61  t tag.   * @para
9a80: 6d 20 20 20 7b 20 4f 62 6a 65 63 74 20 7d 20 74  m   { Object } t
9a90: 61 67 20 2d 20 61 20 54 61 67 20 69 6e 73 74 61  ag - a Tag insta
9aa0: 6e 63 65 0a 20 20 20 2a 20 40 72 65 74 75 72 6e  nce.   * @return
9ab0: 73 20 7b 20 4f 62 6a 65 63 74 20 7d 20 74 68 65  s { Object } the
9ac0: 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 65   instance of the
9ad0: 20 66 69 72 73 74 20 63 75 73 74 6f 6d 20 70 61   first custom pa
9ae0: 72 65 6e 74 20 74 61 67 20 66 6f 75 6e 64 0a 20  rent tag found. 
9af0: 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20    */.  function 
9b00: 67 65 74 49 6d 6d 65 64 69 61 74 65 43 75 73 74  getImmediateCust
9b10: 6f 6d 50 61 72 65 6e 74 28 74 61 67 29 20 7b 0a  omParent(tag) {.
9b20: 20 20 20 20 76 61 72 20 70 74 61 67 20 3d 20 74      var ptag = t
9b30: 61 67 3b 0a 20 20 20 20 77 68 69 6c 65 20 28 70  ag;.    while (p
9b40: 74 61 67 2e 5f 5f 2e 69 73 41 6e 6f 6e 79 6d 6f  tag.__.isAnonymo
9b50: 75 73 29 20 7b 0a 20 20 20 20 20 20 69 66 20 28  us) {.      if (
9b60: 21 70 74 61 67 2e 70 61 72 65 6e 74 29 20 7b 20  !ptag.parent) { 
9b70: 62 72 65 61 6b 20 7d 0a 20 20 20 20 20 20 70 74  break }.      pt
9b80: 61 67 20 3d 20 70 74 61 67 2e 70 61 72 65 6e 74  ag = ptag.parent
9b90: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 72 65 74 75  ;.    }.    retu
9ba0: 72 6e 20 70 74 61 67 0a 20 20 7d 0a 0a 20 20 2f  rn ptag.  }..  /
9bb0: 2a 2a 0a 20 20 20 2a 20 54 72 69 67 67 65 72 20  **.   * Trigger 
9bc0: 44 4f 4d 20 65 76 65 6e 74 73 0a 20 20 20 2a 20  DOM events.   * 
9bd0: 40 70 61 72 61 6d 20 20 20 7b 20 48 54 4d 4c 45  @param   { HTMLE
9be0: 6c 65 6d 65 6e 74 20 7d 20 64 6f 6d 20 2d 20 64  lement } dom - d
9bf0: 6f 6d 20 65 6c 65 6d 65 6e 74 20 74 61 72 67 65  om element targe
9c00: 74 20 6f 66 20 74 68 65 20 65 76 65 6e 74 0a 20  t of the event. 
9c10: 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 46    * @param   { F
9c20: 75 6e 63 74 69 6f 6e 20 7d 20 68 61 6e 64 6c 65  unction } handle
9c30: 72 20 2d 20 75 73 65 72 20 66 75 6e 63 74 69 6f  r - user functio
9c40: 6e 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20  n.   * @param   
9c50: 7b 20 4f 62 6a 65 63 74 20 7d 20 65 20 2d 20 65  { Object } e - e
9c60: 76 65 6e 74 20 6f 62 6a 65 63 74 0a 20 20 20 2a  vent object.   *
9c70: 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 68 61 6e  /.  function han
9c80: 64 6c 65 45 76 65 6e 74 28 64 6f 6d 2c 20 68 61  dleEvent(dom, ha
9c90: 6e 64 6c 65 72 2c 20 65 29 20 7b 0a 20 20 20 20  ndler, e) {.    
9ca0: 76 61 72 20 70 74 61 67 20 3d 20 74 68 69 73 2e  var ptag = this.
9cb0: 5f 5f 2e 70 61 72 65 6e 74 3b 0a 20 20 20 20 76  __.parent;.    v
9cc0: 61 72 20 69 74 65 6d 20 3d 20 74 68 69 73 2e 5f  ar item = this._
9cd0: 5f 2e 69 74 65 6d 3b 0a 0a 20 20 20 20 69 66 20  _.item;..    if 
9ce0: 28 21 69 74 65 6d 29 0a 20 20 20 20 20 20 7b 20  (!item).      { 
9cf0: 77 68 69 6c 65 20 28 70 74 61 67 20 26 26 20 21  while (ptag && !
9d00: 69 74 65 6d 29 20 7b 0a 20 20 20 20 20 20 20 20  item) {.        
9d10: 69 74 65 6d 20 3d 20 70 74 61 67 2e 5f 5f 2e 69  item = ptag.__.i
9d20: 74 65 6d 3b 0a 20 20 20 20 20 20 20 20 70 74 61  tem;.        pta
9d30: 67 20 3d 20 70 74 61 67 2e 5f 5f 2e 70 61 72 65  g = ptag.__.pare
9d40: 6e 74 3b 0a 20 20 20 20 20 20 7d 20 7d 0a 0a 20  nt;.      } }.. 
9d50: 20 20 20 2f 2f 20 6f 76 65 72 72 69 64 65 20 74     // override t
9d60: 68 65 20 65 76 65 6e 74 20 70 72 6f 70 65 72 74  he event propert
9d70: 69 65 73 0a 20 20 20 20 2f 2a 20 69 73 74 61 6e  ies.    /* istan
9d80: 62 75 6c 20 69 67 6e 6f 72 65 20 6e 65 78 74 20  bul ignore next 
9d90: 2a 2f 0a 20 20 20 20 69 66 20 28 69 73 57 72 69  */.    if (isWri
9da0: 74 61 62 6c 65 28 65 2c 20 27 63 75 72 72 65 6e  table(e, 'curren
9db0: 74 54 61 72 67 65 74 27 29 29 20 7b 20 65 2e 63  tTarget')) { e.c
9dc0: 75 72 72 65 6e 74 54 61 72 67 65 74 20 3d 20 64  urrentTarget = d
9dd0: 6f 6d 3b 20 7d 0a 20 20 20 20 2f 2a 20 69 73 74  om; }.    /* ist
9de0: 61 6e 62 75 6c 20 69 67 6e 6f 72 65 20 6e 65 78  anbul ignore nex
9df0: 74 20 2a 2f 0a 20 20 20 20 69 66 20 28 69 73 57  t */.    if (isW
9e00: 72 69 74 61 62 6c 65 28 65 2c 20 27 74 61 72 67  ritable(e, 'targ
9e10: 65 74 27 29 29 20 7b 20 65 2e 74 61 72 67 65 74  et')) { e.target
9e20: 20 3d 20 65 2e 73 72 63 45 6c 65 6d 65 6e 74 3b   = e.srcElement;
9e30: 20 7d 0a 20 20 20 20 2f 2a 20 69 73 74 61 6e 62   }.    /* istanb
9e40: 75 6c 20 69 67 6e 6f 72 65 20 6e 65 78 74 20 2a  ul ignore next *
9e50: 2f 0a 20 20 20 20 69 66 20 28 69 73 57 72 69 74  /.    if (isWrit
9e60: 61 62 6c 65 28 65 2c 20 27 77 68 69 63 68 27 29  able(e, 'which')
9e70: 29 20 7b 20 65 2e 77 68 69 63 68 20 3d 20 65 2e  ) { e.which = e.
9e80: 63 68 61 72 43 6f 64 65 20 7c 7c 20 65 2e 6b 65  charCode || e.ke
9e90: 79 43 6f 64 65 3b 20 7d 0a 0a 20 20 20 20 65 2e  yCode; }..    e.
9ea0: 69 74 65 6d 20 3d 20 69 74 65 6d 3b 0a 0a 20 20  item = item;..  
9eb0: 20 20 68 61 6e 64 6c 65 72 2e 63 61 6c 6c 28 74    handler.call(t
9ec0: 68 69 73 2c 20 65 29 3b 0a 0a 20 20 20 20 2f 2f  his, e);..    //
9ed0: 20 61 76 6f 69 64 20 61 75 74 6f 20 75 70 64 61   avoid auto upda
9ee0: 74 65 73 0a 20 20 20 20 69 66 20 28 21 73 65 74  tes.    if (!set
9ef0: 74 69 6e 67 73 2e 61 75 74 6f 55 70 64 61 74 65  tings.autoUpdate
9f00: 29 20 7b 20 72 65 74 75 72 6e 20 7d 0a 0a 20 20  ) { return }..  
9f10: 20 20 69 66 20 28 21 65 2e 70 72 65 76 65 6e 74    if (!e.prevent
9f20: 55 70 64 61 74 65 29 20 7b 0a 20 20 20 20 20 20  Update) {.      
9f30: 76 61 72 20 70 20 3d 20 67 65 74 49 6d 6d 65 64  var p = getImmed
9f40: 69 61 74 65 43 75 73 74 6f 6d 50 61 72 65 6e 74  iateCustomParent
9f50: 28 74 68 69 73 29 3b 0a 20 20 20 20 20 20 2f 2f  (this);.      //
9f60: 20 66 69 78 65 73 20 23 32 30 38 33 0a 20 20 20   fixes #2083.   
9f70: 20 20 20 69 66 20 28 70 2e 69 73 4d 6f 75 6e 74     if (p.isMount
9f80: 65 64 29 20 7b 20 70 2e 75 70 64 61 74 65 28 29  ed) { p.update()
9f90: 3b 20 7d 0a 20 20 20 20 7d 0a 20 20 7d 0a 0a 20  ; }.    }.  }.. 
9fa0: 20 2f 2a 2a 0a 20 20 20 2a 20 41 74 74 61 63 68   /**.   * Attach
9fb0: 20 61 6e 20 65 76 65 6e 74 20 74 6f 20 61 20 44   an event to a D
9fc0: 4f 4d 20 6e 6f 64 65 0a 20 20 20 2a 20 40 70 61  OM node.   * @pa
9fd0: 72 61 6d 20 7b 20 53 74 72 69 6e 67 20 7d 20 6e  ram { String } n
9fe0: 61 6d 65 20 2d 20 65 76 65 6e 74 20 6e 61 6d 65  ame - event name
9ff0: 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 7b 20 46  .   * @param { F
a000: 75 6e 63 74 69 6f 6e 20 7d 20 68 61 6e 64 6c 65  unction } handle
a010: 72 20 2d 20 65 76 65 6e 74 20 63 61 6c 6c 62 61  r - event callba
a020: 63 6b 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 7b  ck.   * @param {
a030: 20 4f 62 6a 65 63 74 20 7d 20 64 6f 6d 20 2d 20   Object } dom - 
a040: 64 6f 6d 20 6e 6f 64 65 0a 20 20 20 2a 20 40 70  dom node.   * @p
a050: 61 72 61 6d 20 7b 20 54 61 67 20 7d 20 74 61 67  aram { Tag } tag
a060: 20 2d 20 74 61 67 20 69 6e 73 74 61 6e 63 65 0a   - tag instance.
a070: 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e     */.  function
a080: 20 73 65 74 45 76 65 6e 74 48 61 6e 64 6c 65 72   setEventHandler
a090: 28 6e 61 6d 65 2c 20 68 61 6e 64 6c 65 72 2c 20  (name, handler, 
a0a0: 64 6f 6d 2c 20 74 61 67 29 20 7b 0a 20 20 20 20  dom, tag) {.    
a0b0: 76 61 72 20 65 76 65 6e 74 4e 61 6d 65 3b 0a 20  var eventName;. 
a0c0: 20 20 20 76 61 72 20 63 62 20 3d 20 68 61 6e 64     var cb = hand
a0d0: 6c 65 45 76 65 6e 74 2e 62 69 6e 64 28 74 61 67  leEvent.bind(tag
a0e0: 2c 20 64 6f 6d 2c 20 68 61 6e 64 6c 65 72 29 3b  , dom, handler);
a0f0: 0a 0a 20 20 20 20 2f 2f 20 61 76 6f 69 64 20 74  ..    // avoid t
a100: 6f 20 62 69 6e 64 20 74 77 69 63 65 20 74 68 65  o bind twice the
a110: 20 73 61 6d 65 20 65 76 65 6e 74 0a 20 20 20 20   same event.    
a120: 2f 2f 20 70 6f 73 73 69 62 6c 65 20 66 69 78 20  // possible fix 
a130: 66 6f 72 20 23 32 33 33 32 0a 20 20 20 20 64 6f  for #2332.    do
a140: 6d 5b 6e 61 6d 65 5d 20 3d 20 6e 75 6c 6c 3b 0a  m[name] = null;.
a150: 0a 20 20 20 20 2f 2f 20 6e 6f 72 6d 61 6c 69 7a  .    // normaliz
a160: 65 20 65 76 65 6e 74 20 6e 61 6d 65 0a 20 20 20  e event name.   
a170: 20 65 76 65 6e 74 4e 61 6d 65 20 3d 20 6e 61 6d   eventName = nam
a180: 65 2e 72 65 70 6c 61 63 65 28 52 45 5f 45 56 45  e.replace(RE_EVE
a190: 4e 54 53 5f 50 52 45 46 49 58 2c 20 27 27 29 3b  NTS_PREFIX, '');
a1a0: 0a 0a 20 20 20 20 2f 2f 20 63 61 63 68 65 20 74  ..    // cache t
a1b0: 68 65 20 6c 69 73 74 65 6e 65 72 20 69 6e 74 6f  he listener into
a1c0: 20 74 68 65 20 6c 69 73 74 65 6e 65 72 73 20 61   the listeners a
a1d0: 72 72 61 79 0a 20 20 20 20 69 66 20 28 21 63 6f  rray.    if (!co
a1e0: 6e 74 61 69 6e 73 28 74 61 67 2e 5f 5f 2e 6c 69  ntains(tag.__.li
a1f0: 73 74 65 6e 65 72 73 2c 20 64 6f 6d 29 29 20 7b  steners, dom)) {
a200: 20 74 61 67 2e 5f 5f 2e 6c 69 73 74 65 6e 65 72   tag.__.listener
a210: 73 2e 70 75 73 68 28 64 6f 6d 29 3b 20 7d 0a 20  s.push(dom); }. 
a220: 20 20 20 69 66 20 28 21 64 6f 6d 5b 52 49 4f 54     if (!dom[RIOT
a230: 5f 45 56 45 4e 54 53 5f 4b 45 59 5d 29 20 7b 20  _EVENTS_KEY]) { 
a240: 64 6f 6d 5b 52 49 4f 54 5f 45 56 45 4e 54 53 5f  dom[RIOT_EVENTS_
a250: 4b 45 59 5d 20 3d 20 7b 7d 3b 20 7d 0a 20 20 20  KEY] = {}; }.   
a260: 20 69 66 20 28 64 6f 6d 5b 52 49 4f 54 5f 45 56   if (dom[RIOT_EV
a270: 45 4e 54 53 5f 4b 45 59 5d 5b 6e 61 6d 65 5d 29  ENTS_KEY][name])
a280: 20 7b 20 64 6f 6d 2e 72 65 6d 6f 76 65 45 76 65   { dom.removeEve
a290: 6e 74 4c 69 73 74 65 6e 65 72 28 65 76 65 6e 74  ntListener(event
a2a0: 4e 61 6d 65 2c 20 64 6f 6d 5b 52 49 4f 54 5f 45  Name, dom[RIOT_E
a2b0: 56 45 4e 54 53 5f 4b 45 59 5d 5b 6e 61 6d 65 5d  VENTS_KEY][name]
a2c0: 29 3b 20 7d 0a 0a 20 20 20 20 64 6f 6d 5b 52 49  ); }..    dom[RI
a2d0: 4f 54 5f 45 56 45 4e 54 53 5f 4b 45 59 5d 5b 6e  OT_EVENTS_KEY][n
a2e0: 61 6d 65 5d 20 3d 20 63 62 3b 0a 20 20 20 20 64  ame] = cb;.    d
a2f0: 6f 6d 2e 61 64 64 45 76 65 6e 74 4c 69 73 74 65  om.addEventListe
a300: 6e 65 72 28 65 76 65 6e 74 4e 61 6d 65 2c 20 63  ner(eventName, c
a310: 62 2c 20 66 61 6c 73 65 29 3b 0a 20 20 7d 0a 0a  b, false);.  }..
a320: 20 20 2f 2a 2a 0a 20 20 20 2a 20 43 72 65 61 74    /**.   * Creat
a330: 65 20 61 20 6e 65 77 20 63 68 69 6c 64 20 74 61  e a new child ta
a340: 67 20 69 6e 63 6c 75 64 69 6e 67 20 69 74 20 63  g including it c
a350: 6f 72 72 65 63 74 6c 79 20 69 6e 74 6f 20 69 74  orrectly into it
a360: 73 20 70 61 72 65 6e 74 0a 20 20 20 2a 20 40 70  s parent.   * @p
a370: 61 72 61 6d 20 20 20 7b 20 4f 62 6a 65 63 74 20  aram   { Object 
a380: 7d 20 63 68 69 6c 64 20 2d 20 63 68 69 6c 64 20  } child - child 
a390: 74 61 67 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  tag implementati
a3a0: 6f 6e 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20  on.   * @param  
a3b0: 20 7b 20 4f 62 6a 65 63 74 20 7d 20 6f 70 74 73   { Object } opts
a3c0: 20 2d 20 74 61 67 20 6f 70 74 69 6f 6e 73 20 63   - tag options c
a3d0: 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 44 4f  ontaining the DO
a3e0: 4d 20 6e 6f 64 65 20 77 68 65 72 65 20 74 68 65  M node where the
a3f0: 20 74 61 67 20 77 69 6c 6c 20 62 65 20 6d 6f 75   tag will be mou
a400: 6e 74 65 64 0a 20 20 20 2a 20 40 70 61 72 61 6d  nted.   * @param
a410: 20 20 20 7b 20 53 74 72 69 6e 67 20 7d 20 69 6e     { String } in
a420: 6e 65 72 48 54 4d 4c 20 2d 20 69 6e 6e 65 72 20  nerHTML - inner 
a430: 68 74 6d 6c 20 6f 66 20 74 68 65 20 63 68 69 6c  html of the chil
a440: 64 20 6e 6f 64 65 0a 20 20 20 2a 20 40 70 61 72  d node.   * @par
a450: 61 6d 20 20 20 7b 20 4f 62 6a 65 63 74 20 7d 20  am   { Object } 
a460: 70 61 72 65 6e 74 20 2d 20 69 6e 73 74 61 6e 63  parent - instanc
a470: 65 20 6f 66 20 74 68 65 20 70 61 72 65 6e 74 20  e of the parent 
a480: 74 61 67 20 69 6e 63 6c 75 64 69 6e 67 20 74 68  tag including th
a490: 65 20 63 68 69 6c 64 20 63 75 73 74 6f 6d 20 74  e child custom t
a4a0: 61 67 0a 20 20 20 2a 20 40 72 65 74 75 72 6e 73  ag.   * @returns
a4b0: 20 7b 20 4f 62 6a 65 63 74 20 7d 20 69 6e 73 74   { Object } inst
a4c0: 61 6e 63 65 20 6f 66 20 74 68 65 20 6e 65 77 20  ance of the new 
a4d0: 63 68 69 6c 64 20 74 61 67 20 6a 75 73 74 20 63  child tag just c
a4e0: 72 65 61 74 65 64 0a 20 20 20 2a 2f 0a 20 20 66  reated.   */.  f
a4f0: 75 6e 63 74 69 6f 6e 20 69 6e 69 74 43 68 69 6c  unction initChil
a500: 64 28 63 68 69 6c 64 2c 20 6f 70 74 73 2c 20 69  d(child, opts, i
a510: 6e 6e 65 72 48 54 4d 4c 2c 20 70 61 72 65 6e 74  nnerHTML, parent
a520: 29 20 7b 0a 20 20 20 20 76 61 72 20 74 61 67 20  ) {.    var tag 
a530: 3d 20 63 72 65 61 74 65 54 61 67 28 63 68 69 6c  = createTag(chil
a540: 64 2c 20 6f 70 74 73 2c 20 69 6e 6e 65 72 48 54  d, opts, innerHT
a550: 4d 4c 29 3b 0a 20 20 20 20 76 61 72 20 74 61 67  ML);.    var tag
a560: 4e 61 6d 65 20 3d 20 6f 70 74 73 2e 74 61 67 4e  Name = opts.tagN
a570: 61 6d 65 20 7c 7c 20 67 65 74 4e 61 6d 65 28 6f  ame || getName(o
a580: 70 74 73 2e 72 6f 6f 74 2c 20 74 72 75 65 29 3b  pts.root, true);
a590: 0a 20 20 20 20 76 61 72 20 70 74 61 67 20 3d 20  .    var ptag = 
a5a0: 67 65 74 49 6d 6d 65 64 69 61 74 65 43 75 73 74  getImmediateCust
a5b0: 6f 6d 50 61 72 65 6e 74 28 70 61 72 65 6e 74 29  omParent(parent)
a5c0: 3b 0a 20 20 20 20 2f 2f 20 66 69 78 20 66 6f 72  ;.    // fix for
a5d0: 20 74 68 65 20 70 61 72 65 6e 74 20 61 74 74 72   the parent attr
a5e0: 69 62 75 74 65 20 69 6e 20 74 68 65 20 6c 6f 6f  ibute in the loo
a5f0: 70 65 64 20 65 6c 65 6d 65 6e 74 73 0a 20 20 20  ped elements.   
a600: 20 64 65 66 69 6e 65 28 74 61 67 2c 20 27 70 61   define(tag, 'pa
a610: 72 65 6e 74 27 2c 20 70 74 61 67 29 3b 0a 20 20  rent', ptag);.  
a620: 20 20 2f 2f 20 73 74 6f 72 65 20 74 68 65 20 72    // store the r
a630: 65 61 6c 20 70 61 72 65 6e 74 20 74 61 67 0a 20  eal parent tag. 
a640: 20 20 20 2f 2f 20 69 6e 20 73 6f 6d 65 20 63 61     // in some ca
a650: 73 65 73 20 74 68 69 73 20 63 6f 75 6c 64 20 62  ses this could b
a660: 65 20 64 69 66 66 65 72 65 6e 74 20 66 72 6f 6d  e different from
a670: 20 74 68 65 20 63 75 73 74 6f 6d 20 70 61 72 65   the custom pare
a680: 6e 74 20 74 61 67 0a 20 20 20 20 2f 2f 20 66 6f  nt tag.    // fo
a690: 72 20 65 78 61 6d 70 6c 65 20 69 6e 20 6e 65 73  r example in nes
a6a0: 74 65 64 20 6c 6f 6f 70 73 0a 20 20 20 20 74 61  ted loops.    ta
a6b0: 67 2e 5f 5f 2e 70 61 72 65 6e 74 20 3d 20 70 61  g.__.parent = pa
a6c0: 72 65 6e 74 3b 0a 0a 20 20 20 20 2f 2f 20 61 64  rent;..    // ad
a6d0: 64 20 74 68 69 73 20 74 61 67 20 74 6f 20 74 68  d this tag to th
a6e0: 65 20 63 75 73 74 6f 6d 20 70 61 72 65 6e 74 20  e custom parent 
a6f0: 74 61 67 0a 20 20 20 20 61 72 72 61 79 69 73 68  tag.    arrayish
a700: 41 64 64 28 70 74 61 67 2e 74 61 67 73 2c 20 74  Add(ptag.tags, t
a710: 61 67 4e 61 6d 65 2c 20 74 61 67 29 3b 0a 0a 20  agName, tag);.. 
a720: 20 20 20 2f 2f 20 61 6e 64 20 61 6c 73 6f 20 74     // and also t
a730: 6f 20 74 68 65 20 72 65 61 6c 20 70 61 72 65 6e  o the real paren
a740: 74 20 74 61 67 0a 20 20 20 20 69 66 20 28 70 74  t tag.    if (pt
a750: 61 67 20 21 3d 3d 20 70 61 72 65 6e 74 29 0a 20  ag !== parent). 
a760: 20 20 20 20 20 7b 20 61 72 72 61 79 69 73 68 41       { arrayishA
a770: 64 64 28 70 61 72 65 6e 74 2e 74 61 67 73 2c 20  dd(parent.tags, 
a780: 74 61 67 4e 61 6d 65 2c 20 74 61 67 29 3b 20 7d  tagName, tag); }
a790: 0a 0a 20 20 20 20 72 65 74 75 72 6e 20 74 61 67  ..    return tag
a7a0: 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a  .  }..  /**.   *
a7b0: 20 52 65 6d 6f 76 65 73 20 61 6e 20 69 74 65 6d   Removes an item
a7c0: 20 66 72 6f 6d 20 61 6e 20 6f 62 6a 65 63 74 20   from an object 
a7d0: 61 74 20 61 20 67 69 76 65 6e 20 6b 65 79 2e 20  at a given key. 
a7e0: 49 66 20 74 68 65 20 6b 65 79 20 70 6f 69 6e 74  If the key point
a7f0: 73 20 74 6f 20 61 6e 20 61 72 72 61 79 2c 0a 20  s to an array,. 
a800: 20 20 2a 20 74 68 65 6e 20 74 68 65 20 69 74 65    * then the ite
a810: 6d 20 69 73 20 6a 75 73 74 20 72 65 6d 6f 76 65  m is just remove
a820: 64 20 66 72 6f 6d 20 74 68 65 20 61 72 72 61 79  d from the array
a830: 2e 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 7b 20  ..   * @param { 
a840: 4f 62 6a 65 63 74 20 7d 20 6f 62 6a 20 2d 20 6f  Object } obj - o
a850: 62 6a 65 63 74 20 6f 6e 20 77 68 69 63 68 20 74  bject on which t
a860: 6f 20 72 65 6d 6f 76 65 20 74 68 65 20 70 72 6f  o remove the pro
a870: 70 65 72 74 79 0a 20 20 20 2a 20 40 70 61 72 61  perty.   * @para
a880: 6d 20 7b 20 53 74 72 69 6e 67 20 7d 20 6b 65 79  m { String } key
a890: 20 2d 20 70 72 6f 70 65 72 74 79 20 6e 61 6d 65   - property name
a8a0: 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 7b 20 4f  .   * @param { O
a8b0: 62 6a 65 63 74 20 7d 20 76 61 6c 75 65 20 2d 20  bject } value - 
a8c0: 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65  the value of the
a8d0: 20 70 72 6f 70 65 72 74 79 20 74 6f 20 62 65 20   property to be 
a8e0: 72 65 6d 6f 76 65 64 0a 20 20 20 2a 20 40 70 61  removed.   * @pa
a8f0: 72 61 6d 20 7b 20 42 6f 6f 6c 65 61 6e 20 7d 20  ram { Boolean } 
a900: 65 6e 73 75 72 65 41 72 72 61 79 20 2d 20 65 6e  ensureArray - en
a910: 73 75 72 65 20 74 68 61 74 20 74 68 65 20 70 72  sure that the pr
a920: 6f 70 65 72 74 79 20 72 65 6d 61 69 6e 73 20 61  operty remains a
a930: 6e 20 61 72 72 61 79 0a 20 20 2a 2f 0a 20 20 66  n array.  */.  f
a940: 75 6e 63 74 69 6f 6e 20 61 72 72 61 79 69 73 68  unction arrayish
a950: 52 65 6d 6f 76 65 28 6f 62 6a 2c 20 6b 65 79 2c  Remove(obj, key,
a960: 20 76 61 6c 75 65 2c 20 65 6e 73 75 72 65 41 72   value, ensureAr
a970: 72 61 79 29 20 7b 0a 20 20 20 20 69 66 20 28 69  ray) {.    if (i
a980: 73 41 72 72 61 79 28 6f 62 6a 5b 6b 65 79 5d 29  sArray(obj[key])
a990: 29 20 7b 0a 20 20 20 20 20 20 76 61 72 20 69 6e  ) {.      var in
a9a0: 64 65 78 20 3d 20 6f 62 6a 5b 6b 65 79 5d 2e 69  dex = obj[key].i
a9b0: 6e 64 65 78 4f 66 28 76 61 6c 75 65 29 3b 0a 20  ndexOf(value);. 
a9c0: 20 20 20 20 20 69 66 20 28 69 6e 64 65 78 20 21       if (index !
a9d0: 3d 3d 20 2d 31 29 20 7b 20 6f 62 6a 5b 6b 65 79  == -1) { obj[key
a9e0: 5d 2e 73 70 6c 69 63 65 28 69 6e 64 65 78 2c 20  ].splice(index, 
a9f0: 31 29 3b 20 7d 0a 20 20 20 20 20 20 69 66 20 28  1); }.      if (
aa00: 21 6f 62 6a 5b 6b 65 79 5d 2e 6c 65 6e 67 74 68  !obj[key].length
aa10: 29 20 7b 20 64 65 6c 65 74 65 20 6f 62 6a 5b 6b  ) { delete obj[k
aa20: 65 79 5d 3b 20 7d 0a 20 20 20 20 20 20 65 6c 73  ey]; }.      els
aa30: 65 20 69 66 20 28 6f 62 6a 5b 6b 65 79 5d 2e 6c  e if (obj[key].l
aa40: 65 6e 67 74 68 20 3d 3d 3d 20 31 20 26 26 20 21  ength === 1 && !
aa50: 65 6e 73 75 72 65 41 72 72 61 79 29 20 7b 20 6f  ensureArray) { o
aa60: 62 6a 5b 6b 65 79 5d 20 3d 20 6f 62 6a 5b 6b 65  bj[key] = obj[ke
aa70: 79 5d 5b 30 5d 3b 20 7d 0a 20 20 20 20 7d 20 65  y][0]; }.    } e
aa80: 6c 73 65 20 69 66 20 28 6f 62 6a 5b 6b 65 79 5d  lse if (obj[key]
aa90: 20 3d 3d 3d 20 76 61 6c 75 65 29 0a 20 20 20 20   === value).    
aaa0: 20 20 7b 20 64 65 6c 65 74 65 20 6f 62 6a 5b 6b    { delete obj[k
aab0: 65 79 5d 3b 20 7d 20 2f 2f 20 6f 74 68 65 72 77  ey]; } // otherw
aac0: 69 73 65 20 6a 75 73 74 20 64 65 6c 65 74 65 20  ise just delete 
aad0: 74 68 65 20 6b 65 79 0a 20 20 7d 0a 0a 20 20 2f  the key.  }..  /
aae0: 2a 2a 0a 20 20 20 2a 20 41 64 64 73 20 74 68 65  **.   * Adds the
aaf0: 20 65 6c 65 6d 65 6e 74 73 20 66 6f 72 20 61 20   elements for a 
ab00: 76 69 72 74 75 61 6c 20 74 61 67 0a 20 20 20 2a  virtual tag.   *
ab10: 20 40 74 68 69 73 20 54 61 67 0a 20 20 20 2a 20   @this Tag.   * 
ab20: 40 70 61 72 61 6d 20 7b 20 4e 6f 64 65 20 7d 20  @param { Node } 
ab30: 73 72 63 20 2d 20 74 68 65 20 6e 6f 64 65 20 74  src - the node t
ab40: 68 61 74 20 77 69 6c 6c 20 64 6f 20 74 68 65 20  hat will do the 
ab50: 69 6e 73 65 72 74 69 6e 67 20 6f 72 20 61 70 70  inserting or app
ab60: 65 6e 64 69 6e 67 0a 20 20 20 2a 20 40 70 61 72  ending.   * @par
ab70: 61 6d 20 7b 20 54 61 67 20 7d 20 74 61 72 67 65  am { Tag } targe
ab80: 74 20 2d 20 6f 6e 6c 79 20 69 66 20 69 6e 73 65  t - only if inse
ab90: 72 74 69 6e 67 2c 20 69 6e 73 65 72 74 20 62 65  rting, insert be
aba0: 66 6f 72 65 20 74 68 69 73 20 74 61 67 27 73 20  fore this tag's 
abb0: 66 69 72 73 74 20 63 68 69 6c 64 0a 20 20 20 2a  first child.   *
abc0: 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 6d 61 6b  /.  function mak
abd0: 65 56 69 72 74 75 61 6c 28 73 72 63 2c 20 74 61  eVirtual(src, ta
abe0: 72 67 65 74 29 20 7b 0a 20 20 20 20 76 61 72 20  rget) {.    var 
abf0: 74 68 69 73 24 31 20 3d 20 74 68 69 73 3b 0a 0a  this$1 = this;..
ac00: 20 20 20 20 76 61 72 20 68 65 61 64 20 3d 20 63      var head = c
ac10: 72 65 61 74 65 44 4f 4d 50 6c 61 63 65 68 6f 6c  reateDOMPlacehol
ac20: 64 65 72 28 29 3b 0a 20 20 20 20 76 61 72 20 74  der();.    var t
ac30: 61 69 6c 20 3d 20 63 72 65 61 74 65 44 4f 4d 50  ail = createDOMP
ac40: 6c 61 63 65 68 6f 6c 64 65 72 28 29 3b 0a 20 20  laceholder();.  
ac50: 20 20 76 61 72 20 66 72 61 67 20 3d 20 63 72 65    var frag = cre
ac60: 61 74 65 46 72 61 67 6d 65 6e 74 28 29 3b 0a 20  ateFragment();. 
ac70: 20 20 20 76 61 72 20 73 69 62 3b 0a 20 20 20 20     var sib;.    
ac80: 76 61 72 20 65 6c 3b 0a 0a 20 20 20 20 74 68 69  var el;..    thi
ac90: 73 2e 72 6f 6f 74 2e 69 6e 73 65 72 74 42 65 66  s.root.insertBef
aca0: 6f 72 65 28 68 65 61 64 2c 20 74 68 69 73 2e 72  ore(head, this.r
acb0: 6f 6f 74 2e 66 69 72 73 74 43 68 69 6c 64 29 3b  oot.firstChild);
acc0: 0a 20 20 20 20 74 68 69 73 2e 72 6f 6f 74 2e 61  .    this.root.a
acd0: 70 70 65 6e 64 43 68 69 6c 64 28 74 61 69 6c 29  ppendChild(tail)
ace0: 3b 0a 0a 20 20 20 20 74 68 69 73 2e 5f 5f 2e 68  ;..    this.__.h
acf0: 65 61 64 20 3d 20 65 6c 20 3d 20 68 65 61 64 3b  ead = el = head;
ad00: 0a 20 20 20 20 74 68 69 73 2e 5f 5f 2e 74 61 69  .    this.__.tai
ad10: 6c 20 3d 20 74 61 69 6c 3b 0a 0a 20 20 20 20 77  l = tail;..    w
ad20: 68 69 6c 65 20 28 65 6c 29 20 7b 0a 20 20 20 20  hile (el) {.    
ad30: 20 20 73 69 62 20 3d 20 65 6c 2e 6e 65 78 74 53    sib = el.nextS
ad40: 69 62 6c 69 6e 67 3b 0a 20 20 20 20 20 20 66 72  ibling;.      fr
ad50: 61 67 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 65  ag.appendChild(e
ad60: 6c 29 3b 0a 20 20 20 20 20 20 74 68 69 73 24 31  l);.      this$1
ad70: 2e 5f 5f 2e 76 69 72 74 73 2e 70 75 73 68 28 65  .__.virts.push(e
ad80: 6c 29 3b 20 2f 2f 20 68 6f 6c 64 20 66 6f 72 20  l); // hold for 
ad90: 75 6e 6d 6f 75 6e 74 69 6e 67 0a 20 20 20 20 20  unmounting.     
ada0: 20 65 6c 20 3d 20 73 69 62 3b 0a 20 20 20 20 7d   el = sib;.    }
adb0: 0a 0a 20 20 20 20 69 66 20 28 74 61 72 67 65 74  ..    if (target
adc0: 29 0a 20 20 20 20 20 20 7b 20 73 72 63 2e 69 6e  ).      { src.in
add0: 73 65 72 74 42 65 66 6f 72 65 28 66 72 61 67 2c  sertBefore(frag,
ade0: 20 74 61 72 67 65 74 2e 5f 5f 2e 68 65 61 64 29   target.__.head)
adf0: 3b 20 7d 0a 20 20 20 20 65 6c 73 65 0a 20 20 20  ; }.    else.   
ae00: 20 20 20 7b 20 73 72 63 2e 61 70 70 65 6e 64 43     { src.appendC
ae10: 68 69 6c 64 28 66 72 61 67 29 3b 20 7d 0a 20 20  hild(frag); }.  
ae20: 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 6d 61  }..  /**.   * ma
ae30: 6b 65 73 20 61 20 74 61 67 20 76 69 72 74 75 61  kes a tag virtua
ae40: 6c 20 61 6e 64 20 72 65 70 6c 61 63 65 73 20 61  l and replaces a
ae50: 20 72 65 66 65 72 65 6e 63 65 20 69 6e 20 74 68   reference in th
ae60: 65 20 64 6f 6d 0a 20 20 20 2a 20 40 74 68 69 73  e dom.   * @this
ae70: 20 54 61 67 0a 20 20 20 2a 20 40 70 61 72 61 6d   Tag.   * @param
ae80: 20 7b 20 74 61 67 20 7d 20 74 68 65 20 74 61 67   { tag } the tag
ae90: 20 74 6f 20 6d 61 6b 65 20 76 69 72 74 75 61 6c   to make virtual
aea0: 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 7b 20 72  .   * @param { r
aeb0: 65 66 20 7d 20 74 68 65 20 64 6f 6d 20 72 65 66  ef } the dom ref
aec0: 65 72 65 6e 63 65 20 6c 6f 63 61 74 69 6f 6e 0a  erence location.
aed0: 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e     */.  function
aee0: 20 6d 61 6b 65 52 65 70 6c 61 63 65 56 69 72 74   makeReplaceVirt
aef0: 75 61 6c 28 74 61 67 2c 20 72 65 66 29 20 7b 0a  ual(tag, ref) {.
af00: 20 20 20 20 69 66 20 28 21 72 65 66 2e 70 61 72      if (!ref.par
af10: 65 6e 74 4e 6f 64 65 29 20 7b 20 72 65 74 75 72  entNode) { retur
af20: 6e 20 7d 0a 20 20 20 20 76 61 72 20 66 72 61 67  n }.    var frag
af30: 20 3d 20 63 72 65 61 74 65 46 72 61 67 6d 65 6e   = createFragmen
af40: 74 28 29 3b 0a 20 20 20 20 6d 61 6b 65 56 69 72  t();.    makeVir
af50: 74 75 61 6c 2e 63 61 6c 6c 28 74 61 67 2c 20 66  tual.call(tag, f
af60: 72 61 67 29 3b 0a 20 20 20 20 72 65 66 2e 70 61  rag);.    ref.pa
af70: 72 65 6e 74 4e 6f 64 65 2e 72 65 70 6c 61 63 65  rentNode.replace
af80: 43 68 69 6c 64 28 66 72 61 67 2c 20 72 65 66 29  Child(frag, ref)
af90: 3b 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20  ;.  }..  /**.   
afa0: 2a 20 55 70 64 61 74 65 20 64 79 6e 61 6d 69 63  * Update dynamic
afb0: 61 6c 6c 79 20 63 72 65 61 74 65 64 20 64 61 74  ally created dat
afc0: 61 2d 69 73 20 74 61 67 73 20 77 69 74 68 20 63  a-is tags with c
afd0: 68 61 6e 67 69 6e 67 20 65 78 70 72 65 73 73 69  hanging expressi
afe0: 6f 6e 73 0a 20 20 20 2a 20 40 70 61 72 61 6d 20  ons.   * @param 
aff0: 7b 20 4f 62 6a 65 63 74 20 7d 20 65 78 70 72 20  { Object } expr 
b000: 2d 20 65 78 70 72 65 73 73 69 6f 6e 20 74 61 67  - expression tag
b010: 20 61 6e 64 20 65 78 70 72 65 73 73 69 6f 6e 20   and expression 
b020: 69 6e 66 6f 0a 20 20 20 2a 20 40 70 61 72 61 6d  info.   * @param
b030: 20 7b 20 54 61 67 20 7d 20 20 20 20 70 61 72 65   { Tag }    pare
b040: 6e 74 20 2d 20 70 61 72 65 6e 74 20 66 6f 72 20  nt - parent for 
b050: 74 61 67 20 63 72 65 61 74 69 6f 6e 0a 20 20 20  tag creation.   
b060: 2a 20 40 70 61 72 61 6d 20 7b 20 53 74 72 69 6e  * @param { Strin
b070: 67 20 7d 20 74 61 67 4e 61 6d 65 20 2d 20 74 61  g } tagName - ta
b080: 67 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  g implementation
b090: 20 77 65 20 77 61 6e 74 20 74 6f 20 75 73 65 0a   we want to use.
b0a0: 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e     */.  function
b0b0: 20 75 70 64 61 74 65 44 61 74 61 49 73 28 65 78   updateDataIs(ex
b0c0: 70 72 2c 20 70 61 72 65 6e 74 2c 20 74 61 67 4e  pr, parent, tagN
b0d0: 61 6d 65 29 20 7b 0a 20 20 20 20 76 61 72 20 74  ame) {.    var t
b0e0: 61 67 20 3d 20 65 78 70 72 2e 74 61 67 20 7c 7c  ag = expr.tag ||
b0f0: 20 65 78 70 72 2e 64 6f 6d 2e 5f 74 61 67 3b 0a   expr.dom._tag;.
b100: 20 20 20 20 76 61 72 20 72 65 66 3b 0a 0a 20 20      var ref;..  
b110: 20 20 76 61 72 20 72 65 66 24 31 20 3d 20 74 61    var ref$1 = ta
b120: 67 20 3f 20 74 61 67 2e 5f 5f 20 3a 20 7b 7d 3b  g ? tag.__ : {};
b130: 0a 20 20 20 20 76 61 72 20 68 65 61 64 20 3d 20  .    var head = 
b140: 72 65 66 24 31 2e 68 65 61 64 3b 0a 20 20 20 20  ref$1.head;.    
b150: 76 61 72 20 69 73 56 69 72 74 75 61 6c 20 3d 20  var isVirtual = 
b160: 65 78 70 72 2e 64 6f 6d 2e 74 61 67 4e 61 6d 65  expr.dom.tagName
b170: 20 3d 3d 3d 20 27 56 49 52 54 55 41 4c 27 3b 0a   === 'VIRTUAL';.
b180: 0a 20 20 20 20 69 66 20 28 74 61 67 20 26 26 20  .    if (tag && 
b190: 65 78 70 72 2e 74 61 67 4e 61 6d 65 20 3d 3d 3d  expr.tagName ===
b1a0: 20 74 61 67 4e 61 6d 65 29 20 7b 0a 20 20 20 20   tagName) {.    
b1b0: 20 20 74 61 67 2e 75 70 64 61 74 65 28 29 3b 0a    tag.update();.
b1c0: 20 20 20 20 20 20 72 65 74 75 72 6e 0a 20 20 20        return.   
b1d0: 20 7d 0a 0a 20 20 20 20 2f 2f 20 73 79 6e 63 20   }..    // sync 
b1e0: 5f 70 61 72 65 6e 74 20 74 6f 20 61 63 63 6f 6d  _parent to accom
b1f0: 6d 6f 64 61 74 65 20 63 68 61 6e 67 69 6e 67 20  modate changing 
b200: 74 61 67 6e 61 6d 65 73 0a 20 20 20 20 69 66 20  tagnames.    if 
b210: 28 74 61 67 29 20 7b 0a 20 20 20 20 20 20 2f 2f  (tag) {.      //
b220: 20 6e 65 65 64 20 70 6c 61 63 65 68 6f 6c 64 65   need placeholde
b230: 72 20 62 65 66 6f 72 65 20 75 6e 6d 6f 75 6e 74  r before unmount
b240: 0a 20 20 20 20 20 20 69 66 28 69 73 56 69 72 74  .      if(isVirt
b250: 75 61 6c 29 20 7b 0a 20 20 20 20 20 20 20 20 72  ual) {.        r
b260: 65 66 20 3d 20 63 72 65 61 74 65 44 4f 4d 50 6c  ef = createDOMPl
b270: 61 63 65 68 6f 6c 64 65 72 28 29 3b 0a 20 20 20  aceholder();.   
b280: 20 20 20 20 20 68 65 61 64 2e 70 61 72 65 6e 74       head.parent
b290: 4e 6f 64 65 2e 69 6e 73 65 72 74 42 65 66 6f 72  Node.insertBefor
b2a0: 65 28 72 65 66 2c 20 68 65 61 64 29 3b 0a 20 20  e(ref, head);.  
b2b0: 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 74 61 67      }..      tag
b2c0: 2e 75 6e 6d 6f 75 6e 74 28 74 72 75 65 29 3b 0a  .unmount(true);.
b2d0: 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2f 20 75 6e      }..    // un
b2e0: 61 62 6c 65 20 74 6f 20 67 65 74 20 74 68 65 20  able to get the 
b2f0: 74 61 67 20 6e 61 6d 65 0a 20 20 20 20 69 66 20  tag name.    if 
b300: 28 21 69 73 53 74 72 69 6e 67 28 74 61 67 4e 61  (!isString(tagNa
b310: 6d 65 29 29 20 7b 20 72 65 74 75 72 6e 20 7d 0a  me)) { return }.
b320: 0a 20 20 20 20 65 78 70 72 2e 69 6d 70 6c 20 3d  .    expr.impl =
b330: 20 5f 5f 54 41 47 5f 49 4d 50 4c 5b 74 61 67 4e   __TAG_IMPL[tagN
b340: 61 6d 65 5d 3b 0a 0a 20 20 20 20 2f 2f 20 75 6e  ame];..    // un
b350: 6b 6e 6f 77 6e 20 69 6d 70 6c 65 6d 65 6e 74 61  known implementa
b360: 74 69 6f 6e 0a 20 20 20 20 69 66 20 28 21 65 78  tion.    if (!ex
b370: 70 72 2e 69 6d 70 6c 29 20 7b 20 72 65 74 75 72  pr.impl) { retur
b380: 6e 20 7d 0a 0a 20 20 20 20 65 78 70 72 2e 74 61  n }..    expr.ta
b390: 67 20 3d 20 74 61 67 20 3d 20 69 6e 69 74 43 68  g = tag = initCh
b3a0: 69 6c 64 28 0a 20 20 20 20 20 20 65 78 70 72 2e  ild(.      expr.
b3b0: 69 6d 70 6c 2c 20 7b 0a 20 20 20 20 20 20 20 20  impl, {.        
b3c0: 72 6f 6f 74 3a 20 65 78 70 72 2e 64 6f 6d 2c 0a  root: expr.dom,.
b3d0: 20 20 20 20 20 20 20 20 70 61 72 65 6e 74 3a 20          parent: 
b3e0: 70 61 72 65 6e 74 2c 0a 20 20 20 20 20 20 20 20  parent,.        
b3f0: 74 61 67 4e 61 6d 65 3a 20 74 61 67 4e 61 6d 65  tagName: tagName
b400: 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20  .      },.      
b410: 65 78 70 72 2e 64 6f 6d 2e 69 6e 6e 65 72 48 54  expr.dom.innerHT
b420: 4d 4c 2c 0a 20 20 20 20 20 20 70 61 72 65 6e 74  ML,.      parent
b430: 0a 20 20 20 20 29 3b 0a 0a 20 20 20 20 65 61 63  .    );..    eac
b440: 68 28 65 78 70 72 2e 61 74 74 72 73 2c 20 66 75  h(expr.attrs, fu
b450: 6e 63 74 69 6f 6e 20 28 61 29 20 7b 20 72 65 74  nction (a) { ret
b460: 75 72 6e 20 73 65 74 41 74 74 72 69 62 75 74 65  urn setAttribute
b470: 28 74 61 67 2e 72 6f 6f 74 2c 20 61 2e 6e 61 6d  (tag.root, a.nam
b480: 65 2c 20 61 2e 76 61 6c 75 65 29 3b 20 7d 29 3b  e, a.value); });
b490: 0a 20 20 20 20 65 78 70 72 2e 74 61 67 4e 61 6d  .    expr.tagNam
b4a0: 65 20 3d 20 74 61 67 4e 61 6d 65 3b 0a 20 20 20  e = tagName;.   
b4b0: 20 74 61 67 2e 6d 6f 75 6e 74 28 29 3b 0a 0a 20   tag.mount();.. 
b4c0: 20 20 20 2f 2f 20 72 6f 6f 74 20 65 78 69 73 74     // root exist
b4d0: 20 66 69 72 73 74 20 74 69 6d 65 2c 20 61 66 74   first time, aft
b4e0: 65 72 20 75 73 65 20 70 6c 61 63 65 68 6f 6c 64  er use placehold
b4f0: 65 72 0a 20 20 20 20 69 66 20 28 69 73 56 69 72  er.    if (isVir
b500: 74 75 61 6c 29 20 7b 20 6d 61 6b 65 52 65 70 6c  tual) { makeRepl
b510: 61 63 65 56 69 72 74 75 61 6c 28 74 61 67 2c 20  aceVirtual(tag, 
b520: 72 65 66 20 7c 7c 20 74 61 67 2e 72 6f 6f 74 29  ref || tag.root)
b530: 3b 20 7d 0a 0a 20 20 20 20 2f 2f 20 70 61 72 65  ; }..    // pare
b540: 6e 74 20 69 73 20 74 68 65 20 70 6c 61 63 65 68  nt is the placeh
b550: 6f 6c 64 65 72 20 74 61 67 2c 20 6e 6f 74 20 74  older tag, not t
b560: 68 65 20 64 79 6e 61 6d 69 63 20 74 61 67 20 73  he dynamic tag s
b570: 6f 20 63 6c 65 61 6e 20 75 70 0a 20 20 20 20 70  o clean up.    p
b580: 61 72 65 6e 74 2e 5f 5f 2e 6f 6e 55 6e 6d 6f 75  arent.__.onUnmou
b590: 6e 74 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29  nt = function ()
b5a0: 20 7b 0a 20 20 20 20 20 20 76 61 72 20 64 65 6c   {.      var del
b5b0: 4e 61 6d 65 20 3d 20 74 61 67 2e 6f 70 74 73 2e  Name = tag.opts.
b5c0: 64 61 74 61 49 73 3b 0a 20 20 20 20 20 20 61 72  dataIs;.      ar
b5d0: 72 61 79 69 73 68 52 65 6d 6f 76 65 28 74 61 67  rayishRemove(tag
b5e0: 2e 70 61 72 65 6e 74 2e 74 61 67 73 2c 20 64 65  .parent.tags, de
b5f0: 6c 4e 61 6d 65 2c 20 74 61 67 29 3b 0a 20 20 20  lName, tag);.   
b600: 20 20 20 61 72 72 61 79 69 73 68 52 65 6d 6f 76     arrayishRemov
b610: 65 28 74 61 67 2e 5f 5f 2e 70 61 72 65 6e 74 2e  e(tag.__.parent.
b620: 74 61 67 73 2c 20 64 65 6c 4e 61 6d 65 2c 20 74  tags, delName, t
b630: 61 67 29 3b 0a 20 20 20 20 20 20 74 61 67 2e 75  ag);.      tag.u
b640: 6e 6d 6f 75 6e 74 28 29 3b 0a 20 20 20 20 7d 3b  nmount();.    };
b650: 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a  .  }..  /**.   *
b660: 20 4e 6f 6d 61 6c 69 7a 65 20 61 6e 79 20 61 74   Nomalize any at
b670: 74 72 69 62 75 74 65 20 72 65 6d 6f 76 69 6e 67  tribute removing
b680: 20 74 68 65 20 22 72 69 6f 74 2d 22 20 70 72 65   the "riot-" pre
b690: 66 69 78 0a 20 20 20 2a 20 40 70 61 72 61 6d 20  fix.   * @param 
b6a0: 20 20 7b 20 53 74 72 69 6e 67 20 7d 20 61 74 74    { String } att
b6b0: 72 4e 61 6d 65 20 2d 20 6f 72 69 67 69 6e 61 6c  rName - original
b6c0: 20 61 74 74 72 69 62 75 74 65 20 6e 61 6d 65 0a   attribute name.
b6d0: 20 20 20 2a 20 40 72 65 74 75 72 6e 73 20 7b 20     * @returns { 
b6e0: 53 74 72 69 6e 67 20 7d 20 76 61 6c 69 64 20 68  String } valid h
b6f0: 74 6d 6c 20 61 74 74 72 69 62 75 74 65 20 6e 61  tml attribute na
b700: 6d 65 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74  me.   */.  funct
b710: 69 6f 6e 20 6e 6f 72 6d 61 6c 69 7a 65 41 74 74  ion normalizeAtt
b720: 72 4e 61 6d 65 28 61 74 74 72 4e 61 6d 65 29 20  rName(attrName) 
b730: 7b 0a 20 20 20 20 69 66 20 28 21 61 74 74 72 4e  {.    if (!attrN
b740: 61 6d 65 29 20 7b 20 72 65 74 75 72 6e 20 6e 75  ame) { return nu
b750: 6c 6c 20 7d 0a 20 20 20 20 61 74 74 72 4e 61 6d  ll }.    attrNam
b760: 65 20 3d 20 61 74 74 72 4e 61 6d 65 2e 72 65 70  e = attrName.rep
b770: 6c 61 63 65 28 41 54 54 52 53 5f 50 52 45 46 49  lace(ATTRS_PREFI
b780: 58 2c 20 27 27 29 3b 0a 20 20 20 20 69 66 20 28  X, '');.    if (
b790: 43 41 53 45 5f 53 45 4e 53 49 54 49 56 45 5f 41  CASE_SENSITIVE_A
b7a0: 54 54 52 49 42 55 54 45 53 5b 61 74 74 72 4e 61  TTRIBUTES[attrNa
b7b0: 6d 65 5d 29 20 7b 20 61 74 74 72 4e 61 6d 65 20  me]) { attrName 
b7c0: 3d 20 43 41 53 45 5f 53 45 4e 53 49 54 49 56 45  = CASE_SENSITIVE
b7d0: 5f 41 54 54 52 49 42 55 54 45 53 5b 61 74 74 72  _ATTRIBUTES[attr
b7e0: 4e 61 6d 65 5d 3b 20 7d 0a 20 20 20 20 72 65 74  Name]; }.    ret
b7f0: 75 72 6e 20 61 74 74 72 4e 61 6d 65 0a 20 20 7d  urn attrName.  }
b800: 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 55 70 64  ..  /**.   * Upd
b810: 61 74 65 20 6f 6e 20 73 69 6e 67 6c 65 20 74 61  ate on single ta
b820: 67 20 65 78 70 72 65 73 73 69 6f 6e 0a 20 20 20  g expression.   
b830: 2a 20 40 74 68 69 73 20 54 61 67 0a 20 20 20 2a  * @this Tag.   *
b840: 20 40 70 61 72 61 6d 20 7b 20 4f 62 6a 65 63 74   @param { Object
b850: 20 7d 20 65 78 70 72 20 2d 20 65 78 70 72 65 73   } expr - expres
b860: 73 69 6f 6e 20 6c 6f 67 69 63 0a 20 20 20 2a 20  sion logic.   * 
b870: 40 72 65 74 75 72 6e 73 20 7b 20 75 6e 64 65 66  @returns { undef
b880: 69 6e 65 64 20 7d 0a 20 20 20 2a 2f 0a 20 20 66  ined }.   */.  f
b890: 75 6e 63 74 69 6f 6e 20 75 70 64 61 74 65 45 78  unction updateEx
b8a0: 70 72 65 73 73 69 6f 6e 28 65 78 70 72 29 20 7b  pression(expr) {
b8b0: 0a 20 20 20 20 69 66 20 28 74 68 69 73 2e 72 6f  .    if (this.ro
b8c0: 6f 74 20 26 26 20 67 65 74 41 74 74 72 69 62 75  ot && getAttribu
b8d0: 74 65 28 74 68 69 73 2e 72 6f 6f 74 2c 27 76 69  te(this.root,'vi
b8e0: 72 74 75 61 6c 69 7a 65 64 27 29 29 20 7b 20 72  rtualized')) { r
b8f0: 65 74 75 72 6e 20 7d 0a 0a 20 20 20 20 76 61 72  eturn }..    var
b900: 20 64 6f 6d 20 3d 20 65 78 70 72 2e 64 6f 6d 3b   dom = expr.dom;
b910: 0a 20 20 20 20 2f 2f 20 72 65 6d 6f 76 65 20 74  .    // remove t
b920: 68 65 20 72 69 6f 74 2d 20 70 72 65 66 69 78 0a  he riot- prefix.
b930: 20 20 20 20 76 61 72 20 61 74 74 72 4e 61 6d 65      var attrName
b940: 20 3d 20 6e 6f 72 6d 61 6c 69 7a 65 41 74 74 72   = normalizeAttr
b950: 4e 61 6d 65 28 65 78 70 72 2e 61 74 74 72 29 3b  Name(expr.attr);
b960: 0a 20 20 20 20 76 61 72 20 69 73 54 6f 67 67 6c  .    var isToggl
b970: 65 20 3d 20 63 6f 6e 74 61 69 6e 73 28 5b 53 48  e = contains([SH
b980: 4f 57 5f 44 49 52 45 43 54 49 56 45 2c 20 48 49  OW_DIRECTIVE, HI
b990: 44 45 5f 44 49 52 45 43 54 49 56 45 5d 2c 20 61  DE_DIRECTIVE], a
b9a0: 74 74 72 4e 61 6d 65 29 3b 0a 20 20 20 20 76 61  ttrName);.    va
b9b0: 72 20 69 73 56 69 72 74 75 61 6c 20 3d 20 65 78  r isVirtual = ex
b9c0: 70 72 2e 72 6f 6f 74 20 26 26 20 65 78 70 72 2e  pr.root && expr.
b9d0: 72 6f 6f 74 2e 74 61 67 4e 61 6d 65 20 3d 3d 3d  root.tagName ===
b9e0: 20 27 56 49 52 54 55 41 4c 27 3b 0a 20 20 20 20   'VIRTUAL';.    
b9f0: 76 61 72 20 72 65 66 20 3d 20 74 68 69 73 2e 5f  var ref = this._
ba00: 5f 3b 0a 20 20 20 20 76 61 72 20 69 73 41 6e 6f  _;.    var isAno
ba10: 6e 79 6d 6f 75 73 20 3d 20 72 65 66 2e 69 73 41  nymous = ref.isA
ba20: 6e 6f 6e 79 6d 6f 75 73 3b 0a 20 20 20 20 76 61  nonymous;.    va
ba30: 72 20 70 61 72 65 6e 74 20 3d 20 64 6f 6d 20 26  r parent = dom &
ba40: 26 20 28 65 78 70 72 2e 70 61 72 65 6e 74 20 7c  & (expr.parent |
ba50: 7c 20 64 6f 6d 2e 70 61 72 65 6e 74 4e 6f 64 65  | dom.parentNode
ba60: 29 3b 0a 20 20 20 20 76 61 72 20 6b 65 65 70 56  );.    var keepV
ba70: 61 6c 75 65 41 74 74 72 69 62 75 74 65 73 20 3d  alueAttributes =
ba80: 20 73 65 74 74 69 6e 67 73 2e 6b 65 65 70 56 61   settings.keepVa
ba90: 6c 75 65 41 74 74 72 69 62 75 74 65 73 3b 0a 20  lueAttributes;. 
baa0: 20 20 20 2f 2f 20 64 65 74 65 63 74 20 74 68 65     // detect the
bab0: 20 73 74 79 6c 65 20 61 74 74 72 69 62 75 74 65   style attribute
bac0: 73 0a 20 20 20 20 76 61 72 20 69 73 53 74 79 6c  s.    var isStyl
bad0: 65 41 74 74 72 20 3d 20 61 74 74 72 4e 61 6d 65  eAttr = attrName
bae0: 20 3d 3d 3d 20 27 73 74 79 6c 65 27 3b 0a 20 20   === 'style';.  
baf0: 20 20 76 61 72 20 69 73 43 6c 61 73 73 41 74 74    var isClassAtt
bb00: 72 20 3d 20 61 74 74 72 4e 61 6d 65 20 3d 3d 3d  r = attrName ===
bb10: 20 27 63 6c 61 73 73 27 3b 0a 20 20 20 20 76 61   'class';.    va
bb20: 72 20 69 73 56 61 6c 75 65 41 74 74 72 20 3d 20  r isValueAttr = 
bb30: 61 74 74 72 4e 61 6d 65 20 3d 3d 3d 20 27 76 61  attrName === 'va
bb40: 6c 75 65 27 3b 0a 0a 20 20 20 20 76 61 72 20 76  lue';..    var v
bb50: 61 6c 75 65 3b 0a 0a 20 20 20 20 2f 2f 20 69 66  alue;..    // if
bb60: 20 69 74 27 73 20 61 20 74 61 67 20 77 65 20 63   it's a tag we c
bb70: 6f 75 6c 64 20 74 6f 74 61 6c 6c 79 20 73 6b 69  ould totally ski
bb80: 70 20 74 68 65 20 72 65 73 74 0a 20 20 20 20 69  p the rest.    i
bb90: 66 20 28 65 78 70 72 2e 5f 72 69 6f 74 5f 69 64  f (expr._riot_id
bba0: 29 20 7b 0a 20 20 20 20 20 20 69 66 20 28 65 78  ) {.      if (ex
bbb0: 70 72 2e 5f 5f 2e 77 61 73 43 72 65 61 74 65 64  pr.__.wasCreated
bbc0: 29 20 7b 0a 20 20 20 20 20 20 20 20 65 78 70 72  ) {.        expr
bbd0: 2e 75 70 64 61 74 65 28 29 3b 0a 20 20 20 20 20  .update();.     
bbe0: 20 2f 2f 20 69 66 20 69 74 20 68 61 73 6e 27 74   // if it hasn't
bbf0: 20 62 65 65 6e 20 6d 6f 75 6e 74 65 64 20 79 65   been mounted ye
bc00: 74 2c 20 64 6f 20 74 68 61 74 20 6e 6f 77 2e 0a  t, do that now..
bc10: 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20        } else {. 
bc20: 20 20 20 20 20 20 20 65 78 70 72 2e 6d 6f 75 6e         expr.moun
bc30: 74 28 29 3b 0a 20 20 20 20 20 20 20 20 69 66 20  t();.        if 
bc40: 28 69 73 56 69 72 74 75 61 6c 29 20 7b 0a 20 20  (isVirtual) {.  
bc50: 20 20 20 20 20 20 20 20 6d 61 6b 65 52 65 70 6c          makeRepl
bc60: 61 63 65 56 69 72 74 75 61 6c 28 65 78 70 72 2c  aceVirtual(expr,
bc70: 20 65 78 70 72 2e 72 6f 6f 74 29 3b 0a 20 20 20   expr.root);.   
bc80: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 7d 0a 20       }.      }. 
bc90: 20 20 20 20 20 72 65 74 75 72 6e 0a 20 20 20 20       return.    
bca0: 7d 0a 0a 20 20 20 20 2f 2f 20 69 66 20 74 68 69  }..    // if thi
bcb0: 73 20 65 78 70 72 65 73 73 69 6f 6e 20 68 61 73  s expression has
bcc0: 20 74 68 65 20 75 70 64 61 74 65 20 6d 65 74 68   the update meth
bcd0: 6f 64 20 69 74 20 6d 65 61 6e 73 20 69 74 20 63  od it means it c
bce0: 61 6e 20 68 61 6e 64 6c 65 20 74 68 65 20 44 4f  an handle the DO
bcf0: 4d 20 63 68 61 6e 67 65 73 20 62 79 20 69 74 73  M changes by its
bd00: 65 6c 66 0a 20 20 20 20 69 66 20 28 65 78 70 72  elf.    if (expr
bd10: 2e 75 70 64 61 74 65 29 20 7b 20 72 65 74 75 72  .update) { retur
bd20: 6e 20 65 78 70 72 2e 75 70 64 61 74 65 28 29 20  n expr.update() 
bd30: 7d 0a 0a 20 20 20 20 76 61 72 20 63 6f 6e 74 65  }..    var conte
bd40: 78 74 20 3d 20 69 73 54 6f 67 67 6c 65 20 26 26  xt = isToggle &&
bd50: 20 21 69 73 41 6e 6f 6e 79 6d 6f 75 73 20 3f 20   !isAnonymous ? 
bd60: 69 6e 68 65 72 69 74 50 61 72 65 6e 74 50 72 6f  inheritParentPro
bd70: 70 73 2e 63 61 6c 6c 28 74 68 69 73 29 20 3a 20  ps.call(this) : 
bd80: 74 68 69 73 3b 0a 0a 20 20 20 20 2f 2f 20 2e 2e  this;..    // ..
bd90: 2e 69 74 20 73 65 65 6d 73 20 74 6f 20 62 65 20  .it seems to be 
bda0: 61 20 73 69 6d 70 6c 65 20 65 78 70 72 65 73 73  a simple express
bdb0: 69 6f 6e 20 73 6f 20 77 65 20 74 72 79 20 74 6f  ion so we try to
bdc0: 20 63 61 6c 63 75 6c 61 74 65 20 69 74 73 20 76   calculate its v
bdd0: 61 6c 75 65 0a 20 20 20 20 76 61 6c 75 65 20 3d  alue.    value =
bde0: 20 74 6d 70 6c 28 65 78 70 72 2e 65 78 70 72 2c   tmpl(expr.expr,
bdf0: 20 63 6f 6e 74 65 78 74 29 3b 0a 0a 20 20 20 20   context);..    
be00: 76 61 72 20 68 61 73 56 61 6c 75 65 20 3d 20 21  var hasValue = !
be10: 69 73 42 6c 61 6e 6b 28 76 61 6c 75 65 29 3b 0a  isBlank(value);.
be20: 20 20 20 20 76 61 72 20 69 73 4f 62 6a 20 3d 20      var isObj = 
be30: 69 73 4f 62 6a 65 63 74 28 76 61 6c 75 65 29 3b  isObject(value);
be40: 0a 0a 20 20 20 20 2f 2f 20 63 6f 6e 76 65 72 74  ..    // convert
be50: 20 74 68 65 20 73 74 79 6c 65 2f 63 6c 61 73 73   the style/class
be60: 20 6f 62 6a 65 63 74 73 20 74 6f 20 73 74 72 69   objects to stri
be70: 6e 67 73 0a 20 20 20 20 69 66 20 28 69 73 4f 62  ngs.    if (isOb
be80: 6a 29 20 7b 0a 20 20 20 20 20 20 69 66 20 28 69  j) {.      if (i
be90: 73 43 6c 61 73 73 41 74 74 72 29 20 7b 0a 20 20  sClassAttr) {.  
bea0: 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 74 6d        value = tm
beb0: 70 6c 28 4a 53 4f 4e 2e 73 74 72 69 6e 67 69 66  pl(JSON.stringif
bec0: 79 28 76 61 6c 75 65 29 2c 20 74 68 69 73 29 3b  y(value), this);
bed0: 0a 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66  .      } else if
bee0: 20 28 69 73 53 74 79 6c 65 41 74 74 72 29 20 7b   (isStyleAttr) {
bef0: 0a 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d  .        value =
bf00: 20 73 74 79 6c 65 4f 62 6a 65 63 74 54 6f 53 74   styleObjectToSt
bf10: 72 69 6e 67 28 76 61 6c 75 65 29 3b 0a 20 20 20  ring(value);.   
bf20: 20 20 20 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20     }.    }..    
bf30: 2f 2f 20 72 65 6d 6f 76 65 20 6f 72 69 67 69 6e  // remove origin
bf40: 61 6c 20 61 74 74 72 69 62 75 74 65 0a 20 20 20  al attribute.   
bf50: 20 69 66 20 28 65 78 70 72 2e 61 74 74 72 20 26   if (expr.attr &
bf60: 26 0a 20 20 20 20 20 20 20 20 28 0a 20 20 20 20  &.        (.    
bf70: 20 20 20 20 20 20 2f 2f 20 74 68 65 20 6f 72 69        // the ori
bf80: 67 69 6e 61 6c 20 61 74 74 72 69 62 75 74 65 20  ginal attribute 
bf90: 63 61 6e 20 62 65 20 72 65 6d 6f 76 65 64 20 6f  can be removed o
bfa0: 6e 6c 79 20 69 66 20 77 65 20 61 72 65 20 70 61  nly if we are pa
bfb0: 72 73 69 6e 67 20 74 68 65 20 6f 72 69 67 69 6e  rsing the origin
bfc0: 61 6c 20 65 78 70 72 65 73 73 69 6f 6e 0a 20 20  al expression.  
bfd0: 20 20 20 20 20 20 20 20 21 65 78 70 72 2e 77 61          !expr.wa
bfe0: 73 50 61 72 73 65 64 4f 6e 63 65 20 7c 7c 0a 20  sParsedOnce ||. 
bff0: 20 20 20 20 20 20 20 20 20 2f 2f 20 6f 72 20 69           // or i
c000: 74 73 20 76 61 6c 75 65 20 69 73 20 66 61 6c 73  ts value is fals
c010: 65 0a 20 20 20 20 20 20 20 20 20 20 76 61 6c 75  e.          valu
c020: 65 20 3d 3d 3d 20 66 61 6c 73 65 20 7c 7c 0a 20  e === false ||. 
c030: 20 20 20 20 20 20 20 20 20 2f 2f 20 6f 72 20 69           // or i
c040: 66 20 69 74 73 20 76 61 6c 75 65 20 69 73 20 63  f its value is c
c050: 75 72 72 65 6e 74 6c 79 20 66 61 6c 73 79 2e 2e  urrently falsy..
c060: 2e 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 57  ..          // W
c070: 65 20 77 69 6c 6c 20 6b 65 65 70 20 74 68 65 20  e will keep the 
c080: 22 76 61 6c 75 65 22 20 61 74 74 72 69 62 75 74  "value" attribut
c090: 65 73 20 69 66 20 74 68 65 20 22 6b 65 65 70 56  es if the "keepV
c0a0: 61 6c 75 65 41 74 74 72 69 62 75 74 65 73 22 0a  alueAttributes".
c0b0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 69 73 20            // is 
c0c0: 65 6e 61 62 6c 65 64 20 74 68 6f 75 67 68 0a 20  enabled though. 
c0d0: 20 20 20 20 20 20 20 20 20 28 21 68 61 73 56 61           (!hasVa
c0e0: 6c 75 65 20 26 26 20 28 21 69 73 56 61 6c 75 65  lue && (!isValue
c0f0: 41 74 74 72 20 7c 7c 20 69 73 56 61 6c 75 65 41  Attr || isValueA
c100: 74 74 72 20 26 26 20 21 6b 65 65 70 56 61 6c 75  ttr && !keepValu
c110: 65 41 74 74 72 69 62 75 74 65 73 29 29 0a 20 20  eAttributes)).  
c120: 20 20 20 20 20 20 29 0a 20 20 20 20 29 20 7b 0a        ).    ) {.
c130: 20 20 20 20 20 20 2f 2f 20 72 65 6d 6f 76 65 20        // remove 
c140: 65 69 74 68 65 72 20 72 69 6f 74 2d 2a 20 61 74  either riot-* at
c150: 74 72 69 62 75 74 65 73 20 6f 72 20 6a 75 73 74  tributes or just
c160: 20 74 68 65 20 61 74 74 72 69 62 75 74 65 20 6e   the attribute n
c170: 61 6d 65 0a 20 20 20 20 20 20 72 65 6d 6f 76 65  ame.      remove
c180: 41 74 74 72 69 62 75 74 65 28 64 6f 6d 2c 20 67  Attribute(dom, g
c190: 65 74 41 74 74 72 69 62 75 74 65 28 64 6f 6d 2c  etAttribute(dom,
c1a0: 20 65 78 70 72 2e 61 74 74 72 29 20 3f 20 65 78   expr.attr) ? ex
c1b0: 70 72 2e 61 74 74 72 20 3a 20 61 74 74 72 4e 61  pr.attr : attrNa
c1c0: 6d 65 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20  me);.    }..    
c1d0: 2f 2f 20 66 6f 72 20 74 68 65 20 62 6f 6f 6c 65  // for the boole
c1e0: 61 6e 20 61 74 74 72 69 62 75 74 65 73 20 77 65  an attributes we
c1f0: 20 64 6f 6e 27 74 20 6e 65 65 64 20 74 68 65 20   don't need the 
c200: 76 61 6c 75 65 0a 20 20 20 20 2f 2f 20 77 65 20  value.    // we 
c210: 63 61 6e 20 63 6f 6e 76 65 72 74 20 69 74 20 74  can convert it t
c220: 6f 20 63 68 65 63 6b 65 64 3d 74 72 75 65 20 74  o checked=true t
c230: 6f 20 63 68 65 63 6b 65 64 3d 63 68 65 63 6b 65  o checked=checke
c240: 64 0a 20 20 20 20 69 66 20 28 65 78 70 72 2e 62  d.    if (expr.b
c250: 6f 6f 6c 29 20 7b 20 76 61 6c 75 65 20 3d 20 76  ool) { value = v
c260: 61 6c 75 65 20 3f 20 61 74 74 72 4e 61 6d 65 20  alue ? attrName 
c270: 3a 20 66 61 6c 73 65 3b 20 7d 0a 20 20 20 20 69  : false; }.    i
c280: 66 20 28 65 78 70 72 2e 69 73 52 74 61 67 29 20  f (expr.isRtag) 
c290: 7b 20 72 65 74 75 72 6e 20 75 70 64 61 74 65 44  { return updateD
c2a0: 61 74 61 49 73 28 65 78 70 72 2c 20 74 68 69 73  ataIs(expr, this
c2b0: 2c 20 76 61 6c 75 65 29 20 7d 0a 20 20 20 20 69  , value) }.    i
c2c0: 66 20 28 65 78 70 72 2e 77 61 73 50 61 72 73 65  f (expr.wasParse
c2d0: 64 4f 6e 63 65 20 26 26 20 65 78 70 72 2e 76 61  dOnce && expr.va
c2e0: 6c 75 65 20 3d 3d 3d 20 76 61 6c 75 65 29 20 7b  lue === value) {
c2f0: 20 72 65 74 75 72 6e 20 7d 0a 0a 20 20 20 20 2f   return }..    /
c300: 2f 20 75 70 64 61 74 65 20 74 68 65 20 65 78 70  / update the exp
c310: 72 65 73 73 69 6f 6e 20 76 61 6c 75 65 0a 20 20  ression value.  
c320: 20 20 65 78 70 72 2e 76 61 6c 75 65 20 3d 20 76    expr.value = v
c330: 61 6c 75 65 3b 0a 20 20 20 20 65 78 70 72 2e 77  alue;.    expr.w
c340: 61 73 50 61 72 73 65 64 4f 6e 63 65 20 3d 20 74  asParsedOnce = t
c350: 72 75 65 3b 0a 0a 20 20 20 20 2f 2f 20 69 66 20  rue;..    // if 
c360: 74 68 65 20 76 61 6c 75 65 20 69 73 20 61 6e 20  the value is an 
c370: 6f 62 6a 65 63 74 20 28 61 6e 64 20 69 74 27 73  object (and it's
c380: 20 6e 6f 74 20 61 20 73 74 79 6c 65 20 6f 72 20   not a style or 
c390: 63 6c 61 73 73 20 61 74 74 72 69 62 75 74 65 29  class attribute)
c3a0: 20 77 65 20 63 61 6e 20 6e 6f 74 20 64 6f 20 6d   we can not do m
c3b0: 75 63 68 20 6d 6f 72 65 20 77 69 74 68 20 69 74  uch more with it
c3c0: 0a 20 20 20 20 69 66 20 28 69 73 4f 62 6a 20 26  .    if (isObj &
c3d0: 26 20 21 69 73 43 6c 61 73 73 41 74 74 72 20 26  & !isClassAttr &
c3e0: 26 20 21 69 73 53 74 79 6c 65 41 74 74 72 20 26  & !isStyleAttr &
c3f0: 26 20 21 69 73 54 6f 67 67 6c 65 29 20 7b 20 72  & !isToggle) { r
c400: 65 74 75 72 6e 20 7d 0a 20 20 20 20 2f 2f 20 61  eturn }.    // a
c410: 76 6f 69 64 20 74 6f 20 72 65 6e 64 65 72 20 75  void to render u
c420: 6e 64 65 66 69 6e 65 64 2f 6e 75 6c 6c 20 76 61  ndefined/null va
c430: 6c 75 65 73 0a 20 20 20 20 69 66 20 28 21 68 61  lues.    if (!ha
c440: 73 56 61 6c 75 65 29 20 7b 20 76 61 6c 75 65 20  sValue) { value 
c450: 3d 20 27 27 3b 20 7d 0a 0a 20 20 20 20 2f 2f 20  = ''; }..    // 
c460: 74 65 78 74 61 72 65 61 20 61 6e 64 20 74 65 78  textarea and tex
c470: 74 20 6e 6f 64 65 73 20 68 61 76 65 20 6e 6f 20  t nodes have no 
c480: 61 74 74 72 69 62 75 74 65 20 6e 61 6d 65 0a 20  attribute name. 
c490: 20 20 20 69 66 20 28 21 61 74 74 72 4e 61 6d 65     if (!attrName
c4a0: 29 20 7b 0a 20 20 20 20 20 20 2f 2f 20 61 62 6f  ) {.      // abo
c4b0: 75 74 20 23 38 31 35 20 77 2f 6f 20 72 65 70 6c  ut #815 w/o repl
c4c0: 61 63 65 3a 20 74 68 65 20 62 72 6f 77 73 65 72  ace: the browser
c4d0: 20 63 6f 6e 76 65 72 74 73 20 74 68 65 20 76 61   converts the va
c4e0: 6c 75 65 20 74 6f 20 61 20 73 74 72 69 6e 67 2c  lue to a string,
c4f0: 0a 20 20 20 20 20 20 2f 2f 20 74 68 65 20 63 6f  .      // the co
c500: 6d 70 61 72 69 73 6f 6e 20 62 79 20 22 3d 3d 22  mparison by "=="
c510: 20 64 6f 65 73 20 74 6f 6f 2c 20 62 75 74 20 6e   does too, but n
c520: 6f 74 20 69 6e 20 74 68 65 20 73 65 72 76 65 72  ot in the server
c530: 0a 20 20 20 20 20 20 76 61 6c 75 65 20 2b 3d 20  .      value += 
c540: 27 27 3b 0a 20 20 20 20 20 20 2f 2f 20 74 65 73  '';.      // tes
c550: 74 20 66 6f 72 20 70 61 72 65 6e 74 20 61 76 6f  t for parent avo
c560: 69 64 73 20 65 72 72 6f 72 20 77 69 74 68 20 69  ids error with i
c570: 6e 76 61 6c 69 64 20 61 73 73 69 67 6e 6d 65 6e  nvalid assignmen
c580: 74 20 74 6f 20 6e 6f 64 65 56 61 6c 75 65 0a 20  t to nodeValue. 
c590: 20 20 20 20 20 69 66 20 28 70 61 72 65 6e 74 29       if (parent)
c5a0: 20 7b 0a 20 20 20 20 20 20 20 20 2f 2f 20 63 61   {.        // ca
c5b0: 63 68 65 20 74 68 65 20 70 61 72 65 6e 74 20 6e  che the parent n
c5c0: 6f 64 65 20 62 65 63 61 75 73 65 20 73 6f 6d 65  ode because some
c5d0: 68 6f 77 20 69 74 20 77 69 6c 6c 20 62 65 63 6f  how it will beco
c5e0: 6d 65 20 6e 75 6c 6c 20 6f 6e 20 49 45 0a 20 20  me null on IE.  
c5f0: 20 20 20 20 20 20 2f 2f 20 6f 6e 20 74 68 65 20        // on the 
c600: 6e 65 78 74 20 69 74 65 72 61 74 69 6f 6e 0a 20  next iteration. 
c610: 20 20 20 20 20 20 20 65 78 70 72 2e 70 61 72 65         expr.pare
c620: 6e 74 20 3d 20 70 61 72 65 6e 74 3b 0a 20 20 20  nt = parent;.   
c630: 20 20 20 20 20 69 66 20 28 70 61 72 65 6e 74 2e       if (parent.
c640: 74 61 67 4e 61 6d 65 20 3d 3d 3d 20 27 54 45 58  tagName === 'TEX
c650: 54 41 52 45 41 27 29 20 7b 0a 20 20 20 20 20 20  TAREA') {.      
c660: 20 20 20 20 70 61 72 65 6e 74 2e 76 61 6c 75 65      parent.value
c670: 20 3d 20 76 61 6c 75 65 3b 20 20 20 20 20 20 20   = value;       
c680: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
c690: 23 31 31 31 33 0a 20 20 20 20 20 20 20 20 20 20  #1113.          
c6a0: 69 66 20 28 21 49 45 5f 56 45 52 53 49 4f 4e 29  if (!IE_VERSION)
c6b0: 20 7b 20 64 6f 6d 2e 6e 6f 64 65 56 61 6c 75 65   { dom.nodeValue
c6c0: 20 3d 20 76 61 6c 75 65 3b 20 7d 20 20 2f 2f 20   = value; }  // 
c6d0: 23 31 36 32 35 20 49 45 20 74 68 72 6f 77 73 20  #1625 IE throws 
c6e0: 68 65 72 65 2c 20 6e 6f 64 65 56 61 6c 75 65 0a  here, nodeValue.
c6f0: 20 20 20 20 20 20 20 20 7d 20 20 20 20 20 20 20          }       
c700: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c720: 20 20 2f 2f 20 77 69 6c 6c 20 62 65 20 61 76 61    // will be ava
c730: 69 6c 61 62 6c 65 20 6f 6e 20 27 75 70 64 61 74  ilable on 'updat
c740: 65 64 27 0a 20 20 20 20 20 20 20 20 65 6c 73 65  ed'.        else
c750: 20 7b 20 64 6f 6d 2e 6e 6f 64 65 56 61 6c 75 65   { dom.nodeValue
c760: 20 3d 20 76 61 6c 75 65 3b 20 7d 0a 20 20 20 20   = value; }.    
c770: 20 20 7d 0a 20 20 20 20 20 20 72 65 74 75 72 6e    }.      return
c780: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 73 77 69 74  .    }..    swit
c790: 63 68 20 28 74 72 75 65 29 20 7b 0a 20 20 20 20  ch (true) {.    
c7a0: 2f 2f 20 68 61 6e 64 6c 65 20 65 76 65 6e 74 73  // handle events
c7b0: 20 62 69 6e 64 69 6e 67 0a 20 20 20 20 63 61 73   binding.    cas
c7c0: 65 20 69 73 46 75 6e 63 74 69 6f 6e 28 76 61 6c  e isFunction(val
c7d0: 75 65 29 3a 0a 20 20 20 20 20 20 69 66 20 28 69  ue):.      if (i
c7e0: 73 45 76 65 6e 74 41 74 74 72 69 62 75 74 65 28  sEventAttribute(
c7f0: 61 74 74 72 4e 61 6d 65 29 29 20 7b 0a 20 20 20  attrName)) {.   
c800: 20 20 20 20 20 73 65 74 45 76 65 6e 74 48 61 6e       setEventHan
c810: 64 6c 65 72 28 61 74 74 72 4e 61 6d 65 2c 20 76  dler(attrName, v
c820: 61 6c 75 65 2c 20 64 6f 6d 2c 20 74 68 69 73 29  alue, dom, this)
c830: 3b 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20  ;.      }.      
c840: 62 72 65 61 6b 0a 20 20 20 20 2f 2f 20 73 68 6f  break.    // sho
c850: 77 20 2f 20 68 69 64 65 0a 20 20 20 20 63 61 73  w / hide.    cas
c860: 65 20 69 73 54 6f 67 67 6c 65 3a 0a 20 20 20 20  e isToggle:.    
c870: 20 20 74 6f 67 67 6c 65 56 69 73 69 62 69 6c 69    toggleVisibili
c880: 74 79 28 64 6f 6d 2c 20 61 74 74 72 4e 61 6d 65  ty(dom, attrName
c890: 20 3d 3d 3d 20 48 49 44 45 5f 44 49 52 45 43 54   === HIDE_DIRECT
c8a0: 49 56 45 20 3f 20 21 76 61 6c 75 65 20 3a 20 76  IVE ? !value : v
c8b0: 61 6c 75 65 29 3b 0a 20 20 20 20 20 20 62 72 65  alue);.      bre
c8c0: 61 6b 0a 20 20 20 20 2f 2f 20 68 61 6e 64 6c 65  ak.    // handle
c8d0: 20 61 74 74 72 69 62 75 74 65 73 0a 20 20 20 20   attributes.    
c8e0: 64 65 66 61 75 6c 74 3a 0a 20 20 20 20 20 20 69  default:.      i
c8f0: 66 20 28 65 78 70 72 2e 62 6f 6f 6c 29 20 7b 0a  f (expr.bool) {.
c900: 20 20 20 20 20 20 20 20 64 6f 6d 5b 61 74 74 72          dom[attr
c910: 4e 61 6d 65 5d 20 3d 20 76 61 6c 75 65 3b 0a 20  Name] = value;. 
c920: 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 69 66       }..      if
c930: 20 28 69 73 56 61 6c 75 65 41 74 74 72 20 26 26   (isValueAttr &&
c940: 20 64 6f 6d 2e 76 61 6c 75 65 20 21 3d 3d 20 76   dom.value !== v
c950: 61 6c 75 65 29 20 7b 0a 20 20 20 20 20 20 20 20  alue) {.        
c960: 64 6f 6d 2e 76 61 6c 75 65 20 3d 20 76 61 6c 75  dom.value = valu
c970: 65 3b 0a 20 20 20 20 20 20 7d 20 65 6c 73 65 20  e;.      } else 
c980: 69 66 20 28 68 61 73 56 61 6c 75 65 20 26 26 20  if (hasValue && 
c990: 76 61 6c 75 65 20 21 3d 3d 20 66 61 6c 73 65 29  value !== false)
c9a0: 20 7b 0a 20 20 20 20 20 20 20 20 73 65 74 41 74   {.        setAt
c9b0: 74 72 69 62 75 74 65 28 64 6f 6d 2c 20 61 74 74  tribute(dom, att
c9c0: 72 4e 61 6d 65 2c 20 76 61 6c 75 65 29 3b 0a 20  rName, value);. 
c9d0: 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 2f 2f       }..      //
c9e0: 20 6d 61 6b 65 20 73 75 72 65 20 74 68 61 74 20   make sure that 
c9f0: 69 6e 20 63 61 73 65 20 6f 66 20 73 74 79 6c 65  in case of style
ca00: 20 63 68 61 6e 67 65 73 0a 20 20 20 20 20 20 2f   changes.      /
ca10: 2f 20 74 68 65 20 65 6c 65 6d 65 6e 74 20 73 74  / the element st
ca20: 61 79 73 20 68 69 64 64 65 6e 0a 20 20 20 20 20  ays hidden.     
ca30: 20 69 66 20 28 69 73 53 74 79 6c 65 41 74 74 72   if (isStyleAttr
ca40: 20 26 26 20 64 6f 6d 2e 68 69 64 64 65 6e 29 20   && dom.hidden) 
ca50: 7b 20 74 6f 67 67 6c 65 56 69 73 69 62 69 6c 69  { toggleVisibili
ca60: 74 79 28 64 6f 6d 2c 20 66 61 6c 73 65 29 3b 20  ty(dom, false); 
ca70: 7d 0a 20 20 20 20 7d 0a 20 20 7d 0a 0a 20 20 2f  }.    }.  }..  /
ca80: 2a 2a 0a 20 20 20 2a 20 55 70 64 61 74 65 20 61  **.   * Update a
ca90: 6c 6c 20 74 68 65 20 65 78 70 72 65 73 73 69 6f  ll the expressio
caa0: 6e 73 20 69 6e 20 61 20 54 61 67 20 69 6e 73 74  ns in a Tag inst
cab0: 61 6e 63 65 0a 20 20 20 2a 20 40 74 68 69 73 20  ance.   * @this 
cac0: 54 61 67 0a 20 20 20 2a 20 40 70 61 72 61 6d 20  Tag.   * @param 
cad0: 7b 20 41 72 72 61 79 20 7d 20 65 78 70 72 65 73  { Array } expres
cae0: 73 69 6f 6e 73 20 2d 20 65 78 70 72 65 73 73 69  sions - expressi
caf0: 6f 6e 20 74 68 61 74 20 6d 75 73 74 20 62 65 20  on that must be 
cb00: 72 65 20 65 76 61 6c 75 61 74 65 64 0a 20 20 20  re evaluated.   
cb10: 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 75 70  */.  function up
cb20: 64 61 74 65 28 65 78 70 72 65 73 73 69 6f 6e 73  date(expressions
cb30: 29 20 7b 0a 20 20 20 20 65 61 63 68 28 65 78 70  ) {.    each(exp
cb40: 72 65 73 73 69 6f 6e 73 2c 20 75 70 64 61 74 65  ressions, update
cb50: 45 78 70 72 65 73 73 69 6f 6e 2e 62 69 6e 64 28  Expression.bind(
cb60: 74 68 69 73 29 29 3b 0a 20 20 7d 0a 0a 20 20 2f  this));.  }..  /
cb70: 2a 2a 0a 20 20 20 2a 20 57 65 20 6e 65 65 64 20  **.   * We need 
cb80: 74 6f 20 75 70 64 61 74 65 20 6f 70 74 73 20 66  to update opts f
cb90: 6f 72 20 74 68 69 73 20 74 61 67 2e 20 54 68 61  or this tag. Tha
cba0: 74 20 72 65 71 75 69 72 65 73 20 75 70 64 61 74  t requires updat
cbb0: 69 6e 67 20 74 68 65 20 65 78 70 72 65 73 73 69  ing the expressi
cbc0: 6f 6e 73 0a 20 20 20 2a 20 69 6e 20 61 6e 79 20  ons.   * in any 
cbd0: 61 74 74 72 69 62 75 74 65 73 20 6f 6e 20 74 68  attributes on th
cbe0: 65 20 74 61 67 2c 20 61 6e 64 20 74 68 65 6e 20  e tag, and then 
cbf0: 63 6f 70 79 69 6e 67 20 74 68 65 20 72 65 73 75  copying the resu
cc00: 6c 74 20 6f 6e 74 6f 20 6f 70 74 73 2e 0a 20 20  lt onto opts..  
cc10: 20 2a 20 40 74 68 69 73 20 54 61 67 0a 20 20 20   * @this Tag.   
cc20: 2a 20 40 70 61 72 61 6d 20 20 20 7b 42 6f 6f 6c  * @param   {Bool
cc30: 65 61 6e 7d 20 69 73 4c 6f 6f 70 20 2d 20 69 73  ean} isLoop - is
cc40: 20 69 74 20 61 20 6c 6f 6f 70 20 74 61 67 3f 0a   it a loop tag?.
cc50: 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20     * @param   { 
cc60: 54 61 67 20 7d 20 20 70 61 72 65 6e 74 20 2d 20  Tag }  parent - 
cc70: 70 61 72 65 6e 74 20 74 61 67 20 6e 6f 64 65 0a  parent tag node.
cc80: 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20     * @param   { 
cc90: 42 6f 6f 6c 65 61 6e 20 7d 20 20 69 73 41 6e 6f  Boolean }  isAno
cca0: 6e 79 6d 6f 75 73 20 2d 20 69 73 20 69 74 20 61  nymous - is it a
ccb0: 20 74 61 67 20 77 69 74 68 6f 75 74 20 61 6e 79   tag without any
ccc0: 20 69 6d 70 6c 3f 20 28 61 20 74 61 67 20 6e 6f   impl? (a tag no
ccd0: 74 20 72 65 67 69 73 74 65 72 65 64 29 0a 20 20  t registered).  
cce0: 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 4f 62   * @param   { Ob
ccf0: 6a 65 63 74 20 7d 20 20 6f 70 74 73 20 2d 20 74  ject }  opts - t
cd00: 61 67 20 6f 70 74 69 6f 6e 73 0a 20 20 20 2a 20  ag options.   * 
cd10: 40 70 61 72 61 6d 20 20 20 7b 20 41 72 72 61 79  @param   { Array
cd20: 20 7d 20 20 69 6e 73 74 41 74 74 72 73 20 2d 20   }  instAttrs - 
cd30: 74 61 67 20 61 74 74 72 69 62 75 74 65 73 20 61  tag attributes a
cd40: 72 72 61 79 0a 20 20 20 2a 2f 0a 20 20 66 75 6e  rray.   */.  fun
cd50: 63 74 69 6f 6e 20 75 70 64 61 74 65 4f 70 74 73  ction updateOpts
cd60: 28 69 73 4c 6f 6f 70 2c 20 70 61 72 65 6e 74 2c  (isLoop, parent,
cd70: 20 69 73 41 6e 6f 6e 79 6d 6f 75 73 2c 20 6f 70   isAnonymous, op
cd80: 74 73 2c 20 69 6e 73 74 41 74 74 72 73 29 20 7b  ts, instAttrs) {
cd90: 0a 20 20 20 20 2f 2f 20 69 73 41 6e 6f 6e 79 6d  .    // isAnonym
cda0: 6f 75 73 20 60 65 61 63 68 60 20 74 61 67 73 20  ous `each` tags 
cdb0: 74 72 65 61 74 20 60 64 6f 6d 60 20 61 6e 64 20  treat `dom` and 
cdc0: 60 72 6f 6f 74 60 20 64 69 66 66 65 72 65 6e 74  `root` different
cdd0: 6c 79 2e 20 49 6e 20 74 68 69 73 20 63 61 73 65  ly. In this case
cde0: 0a 20 20 20 20 2f 2f 20 28 61 6e 64 20 6f 6e 6c  .    // (and onl
cdf0: 79 20 74 68 69 73 20 63 61 73 65 29 20 77 65 20  y this case) we 
ce00: 64 6f 6e 27 74 20 6e 65 65 64 20 74 6f 20 64 6f  don't need to do
ce10: 20 75 70 64 61 74 65 4f 70 74 73 2c 20 62 65 63   updateOpts, bec
ce20: 61 75 73 65 20 74 68 65 20 72 65 67 75 6c 61 72  ause the regular
ce30: 20 70 61 72 73 65 0a 20 20 20 20 2f 2f 20 77 69   parse.    // wi
ce40: 6c 6c 20 75 70 64 61 74 65 20 74 68 6f 73 65 20  ll update those 
ce50: 61 74 74 72 73 2e 20 50 6c 75 73 2c 20 69 73 41  attrs. Plus, isA
ce60: 6e 6f 6e 79 6d 6f 75 73 20 74 61 67 73 20 64 6f  nonymous tags do
ce70: 6e 27 74 20 6e 65 65 64 20 6f 70 74 73 20 61 6e  n't need opts an
ce80: 79 77 61 79 0a 20 20 20 20 69 66 20 28 69 73 4c  yway.    if (isL
ce90: 6f 6f 70 20 26 26 20 69 73 41 6e 6f 6e 79 6d 6f  oop && isAnonymo
cea0: 75 73 29 20 7b 20 72 65 74 75 72 6e 20 7d 0a 20  us) { return }. 
ceb0: 20 20 20 76 61 72 20 63 74 78 20 3d 20 69 73 4c     var ctx = isL
cec0: 6f 6f 70 20 3f 20 69 6e 68 65 72 69 74 50 61 72  oop ? inheritPar
ced0: 65 6e 74 50 72 6f 70 73 2e 63 61 6c 6c 28 74 68  entProps.call(th
cee0: 69 73 29 20 3a 20 70 61 72 65 6e 74 20 7c 7c 20  is) : parent || 
cef0: 74 68 69 73 3b 0a 0a 20 20 20 20 65 61 63 68 28  this;..    each(
cf00: 69 6e 73 74 41 74 74 72 73 2c 20 66 75 6e 63 74  instAttrs, funct
cf10: 69 6f 6e 20 28 61 74 74 72 29 20 7b 0a 20 20 20  ion (attr) {.   
cf20: 20 20 20 69 66 20 28 61 74 74 72 2e 65 78 70 72     if (attr.expr
cf30: 29 20 7b 20 75 70 64 61 74 65 45 78 70 72 65 73  ) { updateExpres
cf40: 73 69 6f 6e 2e 63 61 6c 6c 28 63 74 78 2c 20 61  sion.call(ctx, a
cf50: 74 74 72 2e 65 78 70 72 29 3b 20 7d 0a 20 20 20  ttr.expr); }.   
cf60: 20 20 20 2f 2f 20 6e 6f 72 6d 61 6c 69 7a 65 20     // normalize 
cf70: 74 68 65 20 61 74 74 72 69 62 75 74 65 20 6e 61  the attribute na
cf80: 6d 65 73 0a 20 20 20 20 20 20 6f 70 74 73 5b 74  mes.      opts[t
cf90: 6f 43 61 6d 65 6c 28 61 74 74 72 2e 6e 61 6d 65  oCamel(attr.name
cfa0: 29 2e 72 65 70 6c 61 63 65 28 41 54 54 52 53 5f  ).replace(ATTRS_
cfb0: 50 52 45 46 49 58 2c 20 27 27 29 5d 20 3d 20 61  PREFIX, '')] = a
cfc0: 74 74 72 2e 65 78 70 72 20 3f 20 61 74 74 72 2e  ttr.expr ? attr.
cfd0: 65 78 70 72 2e 76 61 6c 75 65 20 3a 20 61 74 74  expr.value : att
cfe0: 72 2e 76 61 6c 75 65 3b 0a 20 20 20 20 7d 29 3b  r.value;.    });
cff0: 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a  .  }..  /**.   *
d000: 20 55 70 64 61 74 65 20 74 68 65 20 74 61 67 20   Update the tag 
d010: 65 78 70 72 65 73 73 69 6f 6e 73 20 61 6e 64 20  expressions and 
d020: 6f 70 74 69 6f 6e 73 0a 20 20 20 2a 20 40 70 61  options.   * @pa
d030: 72 61 6d 20 7b 20 54 61 67 20 7d 20 74 61 67 20  ram { Tag } tag 
d040: 2d 20 74 61 67 20 6f 62 6a 65 63 74 0a 20 20 20  - tag object.   
d050: 2a 20 40 70 61 72 61 6d 20 7b 20 2a 20 7d 20 64  * @param { * } d
d060: 61 74 61 20 2d 20 64 61 74 61 20 77 65 20 77 61  ata - data we wa
d070: 6e 74 20 74 6f 20 75 73 65 20 74 6f 20 65 78 74  nt to use to ext
d080: 65 6e 64 20 74 68 65 20 74 61 67 20 70 72 6f 70  end the tag prop
d090: 65 72 74 69 65 73 0a 20 20 20 2a 20 40 70 61 72  erties.   * @par
d0a0: 61 6d 20 7b 20 41 72 72 61 79 20 7d 20 65 78 70  am { Array } exp
d0b0: 72 65 73 73 69 6f 6e 73 20 2d 20 63 6f 6d 70 6f  ressions - compo
d0c0: 6e 65 6e 74 20 65 78 70 72 65 73 73 69 6f 6e 73  nent expressions
d0d0: 20 61 72 72 61 79 0a 20 20 20 2a 20 40 72 65 74   array.   * @ret
d0e0: 75 72 6e 73 20 7b 20 54 61 67 20 7d 20 74 68 65  urns { Tag } the
d0f0: 20 63 75 72 72 65 6e 74 20 74 61 67 20 69 6e 73   current tag ins
d100: 74 61 6e 63 65 0a 20 20 20 2a 2f 0a 20 20 66 75  tance.   */.  fu
d110: 6e 63 74 69 6f 6e 20 63 6f 6d 70 6f 6e 65 6e 74  nction component
d120: 55 70 64 61 74 65 28 74 61 67 2c 20 64 61 74 61  Update(tag, data
d130: 2c 20 65 78 70 72 65 73 73 69 6f 6e 73 29 20 7b  , expressions) {
d140: 0a 20 20 20 20 76 61 72 20 5f 5f 20 3d 20 74 61  .    var __ = ta
d150: 67 2e 5f 5f 3b 0a 20 20 20 20 76 61 72 20 6e 65  g.__;.    var ne
d160: 78 74 4f 70 74 73 20 3d 20 7b 7d 3b 0a 20 20 20  xtOpts = {};.   
d170: 20 76 61 72 20 63 61 6e 54 72 69 67 67 65 72 20   var canTrigger 
d180: 3d 20 74 61 67 2e 69 73 4d 6f 75 6e 74 65 64 20  = tag.isMounted 
d190: 26 26 20 21 5f 5f 2e 73 6b 69 70 41 6e 6f 6e 79  && !__.skipAnony
d1a0: 6d 6f 75 73 3b 0a 0a 20 20 20 20 2f 2f 20 69 6e  mous;..    // in
d1b0: 68 65 72 69 74 20 70 72 6f 70 65 72 74 69 65 73  herit properties
d1c0: 20 66 72 6f 6d 20 74 68 65 20 70 61 72 65 6e 74   from the parent
d1d0: 20 74 61 67 0a 20 20 20 20 69 66 20 28 5f 5f 2e   tag.    if (__.
d1e0: 69 73 41 6e 6f 6e 79 6d 6f 75 73 20 26 26 20 5f  isAnonymous && _
d1f0: 5f 2e 70 61 72 65 6e 74 29 20 7b 20 65 78 74 65  _.parent) { exte
d200: 6e 64 28 74 61 67 2c 20 5f 5f 2e 70 61 72 65 6e  nd(tag, __.paren
d210: 74 29 3b 20 7d 0a 20 20 20 20 65 78 74 65 6e 64  t); }.    extend
d220: 28 74 61 67 2c 20 64 61 74 61 29 3b 0a 0a 20 20  (tag, data);..  
d230: 20 20 75 70 64 61 74 65 4f 70 74 73 2e 61 70 70    updateOpts.app
d240: 6c 79 28 74 61 67 2c 20 5b 5f 5f 2e 69 73 4c 6f  ly(tag, [__.isLo
d250: 6f 70 2c 20 5f 5f 2e 70 61 72 65 6e 74 2c 20 5f  op, __.parent, _
d260: 5f 2e 69 73 41 6e 6f 6e 79 6d 6f 75 73 2c 20 6e  _.isAnonymous, n
d270: 65 78 74 4f 70 74 73 2c 20 5f 5f 2e 69 6e 73 74  extOpts, __.inst
d280: 41 74 74 72 73 5d 29 3b 0a 0a 20 20 20 20 69 66  Attrs]);..    if
d290: 20 28 0a 20 20 20 20 20 20 63 61 6e 54 72 69 67   (.      canTrig
d2a0: 67 65 72 20 26 26 0a 20 20 20 20 20 20 74 61 67  ger &&.      tag
d2b0: 2e 69 73 4d 6f 75 6e 74 65 64 20 26 26 0a 20 20  .isMounted &&.  
d2c0: 20 20 20 20 69 73 46 75 6e 63 74 69 6f 6e 28 74      isFunction(t
d2d0: 61 67 2e 73 68 6f 75 6c 64 55 70 64 61 74 65 29  ag.shouldUpdate)
d2e0: 20 26 26 20 21 74 61 67 2e 73 68 6f 75 6c 64 55   && !tag.shouldU
d2f0: 70 64 61 74 65 28 64 61 74 61 2c 20 6e 65 78 74  pdate(data, next
d300: 4f 70 74 73 29 0a 20 20 20 20 29 20 7b 0a 20 20  Opts).    ) {.  
d310: 20 20 20 20 72 65 74 75 72 6e 20 74 61 67 0a 20      return tag. 
d320: 20 20 20 7d 0a 0a 20 20 20 20 65 78 74 65 6e 64     }..    extend
d330: 28 74 61 67 2e 6f 70 74 73 2c 20 6e 65 78 74 4f  (tag.opts, nextO
d340: 70 74 73 29 3b 0a 0a 20 20 20 20 69 66 20 28 63  pts);..    if (c
d350: 61 6e 54 72 69 67 67 65 72 29 20 7b 20 74 61 67  anTrigger) { tag
d360: 2e 74 72 69 67 67 65 72 28 27 75 70 64 61 74 65  .trigger('update
d370: 27 2c 20 64 61 74 61 29 3b 20 7d 0a 20 20 20 20  ', data); }.    
d380: 75 70 64 61 74 65 2e 63 61 6c 6c 28 74 61 67 2c  update.call(tag,
d390: 20 65 78 70 72 65 73 73 69 6f 6e 73 29 3b 0a 20   expressions);. 
d3a0: 20 20 20 69 66 20 28 63 61 6e 54 72 69 67 67 65     if (canTrigge
d3b0: 72 29 20 7b 20 74 61 67 2e 74 72 69 67 67 65 72  r) { tag.trigger
d3c0: 28 27 75 70 64 61 74 65 64 27 29 3b 20 7d 0a 0a  ('updated'); }..
d3d0: 20 20 20 20 72 65 74 75 72 6e 20 74 61 67 0a 20      return tag. 
d3e0: 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 47   }..  /**.   * G
d3f0: 65 74 20 73 65 6c 65 63 74 6f 72 73 20 66 6f 72  et selectors for
d400: 20 74 61 67 73 0a 20 20 20 2a 20 40 70 61 72 61   tags.   * @para
d410: 6d 20 20 20 7b 20 41 72 72 61 79 20 7d 20 74 61  m   { Array } ta
d420: 67 73 20 2d 20 74 61 67 20 6e 61 6d 65 73 20 74  gs - tag names t
d430: 6f 20 73 65 6c 65 63 74 0a 20 20 20 2a 20 40 72  o select.   * @r
d440: 65 74 75 72 6e 73 20 7b 20 53 74 72 69 6e 67 20  eturns { String 
d450: 7d 20 73 65 6c 65 63 74 6f 72 0a 20 20 20 2a 2f  } selector.   */
d460: 0a 20 20 66 75 6e 63 74 69 6f 6e 20 71 75 65 72  .  function quer
d470: 79 28 74 61 67 73 29 20 7b 0a 20 20 20 20 2f 2f  y(tags) {.    //
d480: 20 73 65 6c 65 63 74 20 61 6c 6c 20 74 61 67 73   select all tags
d490: 0a 20 20 20 20 69 66 20 28 21 74 61 67 73 29 20  .    if (!tags) 
d4a0: 7b 0a 20 20 20 20 20 20 76 61 72 20 6b 65 79 73  {.      var keys
d4b0: 20 3d 20 4f 62 6a 65 63 74 2e 6b 65 79 73 28 5f   = Object.keys(_
d4c0: 5f 54 41 47 5f 49 4d 50 4c 29 3b 0a 20 20 20 20  _TAG_IMPL);.    
d4d0: 20 20 72 65 74 75 72 6e 20 6b 65 79 73 20 2b 20    return keys + 
d4e0: 71 75 65 72 79 28 6b 65 79 73 29 0a 20 20 20 20  query(keys).    
d4f0: 7d 0a 0a 20 20 20 20 72 65 74 75 72 6e 20 74 61  }..    return ta
d500: 67 73 0a 20 20 20 20 20 20 2e 66 69 6c 74 65 72  gs.      .filter
d510: 28 66 75 6e 63 74 69 6f 6e 20 28 74 29 20 7b 20  (function (t) { 
d520: 72 65 74 75 72 6e 20 21 2f 5b 5e 2d 5c 77 5d 2f  return !/[^-\w]/
d530: 2e 74 65 73 74 28 74 29 3b 20 7d 29 0a 20 20 20  .test(t); }).   
d540: 20 20 20 2e 72 65 64 75 63 65 28 66 75 6e 63 74     .reduce(funct
d550: 69 6f 6e 20 28 6c 69 73 74 2c 20 74 29 20 7b 0a  ion (list, t) {.
d560: 20 20 20 20 20 20 20 20 76 61 72 20 6e 61 6d 65          var name
d570: 20 3d 20 74 2e 74 72 69 6d 28 29 2e 74 6f 4c 6f   = t.trim().toLo
d580: 77 65 72 43 61 73 65 28 29 3b 0a 20 20 20 20 20  werCase();.     
d590: 20 20 20 72 65 74 75 72 6e 20 6c 69 73 74 20 2b     return list +
d5a0: 20 22 2c 5b 22 20 2b 20 49 53 5f 44 49 52 45 43   ",[" + IS_DIREC
d5b0: 54 49 56 45 20 2b 20 22 3d 5c 22 22 20 2b 20 6e  TIVE + "=\"" + n
d5c0: 61 6d 65 20 2b 20 22 5c 22 5d 22 0a 20 20 20 20  ame + "\"]".    
d5d0: 20 20 7d 2c 20 27 27 29 0a 20 20 7d 0a 0a 20 20    }, '').  }..  
d5e0: 2f 2a 2a 0a 20 20 20 2a 20 41 6e 6f 74 68 65 72  /**.   * Another
d5f0: 20 77 61 79 20 74 6f 20 63 72 65 61 74 65 20 61   way to create a
d600: 20 72 69 6f 74 20 74 61 67 20 61 20 62 69 74 20   riot tag a bit 
d610: 6d 6f 72 65 20 65 73 36 20 66 72 69 65 6e 64 6c  more es6 friendl
d620: 79 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 7b 20  y.   * @param { 
d630: 48 54 4d 4c 45 6c 65 6d 65 6e 74 20 7d 20 65 6c  HTMLElement } el
d640: 20 2d 20 74 61 67 20 44 4f 4d 20 73 65 6c 65 63   - tag DOM selec
d650: 74 6f 72 20 6f 72 20 44 4f 4d 20 6e 6f 64 65 2f  tor or DOM node/
d660: 73 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 7b 20  s.   * @param { 
d670: 4f 62 6a 65 63 74 20 7d 20 6f 70 74 73 20 2d 20  Object } opts - 
d680: 74 61 67 20 6c 6f 67 69 63 0a 20 20 20 2a 20 40  tag logic.   * @
d690: 72 65 74 75 72 6e 73 20 7b 20 54 61 67 20 7d 20  returns { Tag } 
d6a0: 6e 65 77 20 72 69 6f 74 20 74 61 67 20 69 6e 73  new riot tag ins
d6b0: 74 61 6e 63 65 0a 20 20 20 2a 2f 0a 20 20 66 75  tance.   */.  fu
d6c0: 6e 63 74 69 6f 6e 20 54 61 67 28 65 6c 2c 20 6f  nction Tag(el, o
d6d0: 70 74 73 29 20 7b 0a 20 20 20 20 2f 2f 20 67 65  pts) {.    // ge
d6e0: 74 20 74 68 65 20 74 61 67 20 70 72 6f 70 65 72  t the tag proper
d6f0: 74 69 65 73 20 66 72 6f 6d 20 74 68 65 20 63 6c  ties from the cl
d700: 61 73 73 20 63 6f 6e 73 74 72 75 63 74 6f 72 0a  ass constructor.
d710: 20 20 20 20 76 61 72 20 72 65 66 20 3d 20 74 68      var ref = th
d720: 69 73 3b 0a 20 20 20 20 76 61 72 20 6e 61 6d 65  is;.    var name
d730: 20 3d 20 72 65 66 2e 6e 61 6d 65 3b 0a 20 20 20   = ref.name;.   
d740: 20 76 61 72 20 74 6d 70 6c 20 3d 20 72 65 66 2e   var tmpl = ref.
d750: 74 6d 70 6c 3b 0a 20 20 20 20 76 61 72 20 63 73  tmpl;.    var cs
d760: 73 20 3d 20 72 65 66 2e 63 73 73 3b 0a 20 20 20  s = ref.css;.   
d770: 20 76 61 72 20 61 74 74 72 73 20 3d 20 72 65 66   var attrs = ref
d780: 2e 61 74 74 72 73 3b 0a 20 20 20 20 76 61 72 20  .attrs;.    var 
d790: 6f 6e 43 72 65 61 74 65 20 3d 20 72 65 66 2e 6f  onCreate = ref.o
d7a0: 6e 43 72 65 61 74 65 3b 0a 20 20 20 20 2f 2f 20  nCreate;.    // 
d7b0: 72 65 67 69 73 74 65 72 20 61 20 6e 65 77 20 74  register a new t
d7c0: 61 67 20 61 6e 64 20 63 61 63 68 65 20 74 68 65  ag and cache the
d7d0: 20 63 6c 61 73 73 20 70 72 6f 74 6f 74 79 70 65   class prototype
d7e0: 0a 20 20 20 20 69 66 20 28 21 5f 5f 54 41 47 5f  .    if (!__TAG_
d7f0: 49 4d 50 4c 5b 6e 61 6d 65 5d 29 20 7b 0a 20 20  IMPL[name]) {.  
d800: 20 20 20 20 74 61 67 28 6e 61 6d 65 2c 20 74 6d      tag(name, tm
d810: 70 6c 2c 20 63 73 73 2c 20 61 74 74 72 73 2c 20  pl, css, attrs, 
d820: 6f 6e 43 72 65 61 74 65 29 3b 0a 20 20 20 20 20  onCreate);.     
d830: 20 2f 2f 20 63 61 63 68 65 20 74 68 65 20 63 6c   // cache the cl
d840: 61 73 73 20 63 6f 6e 73 74 72 75 63 74 6f 72 0a  ass constructor.
d850: 20 20 20 20 20 20 5f 5f 54 41 47 5f 49 4d 50 4c        __TAG_IMPL
d860: 5b 6e 61 6d 65 5d 2e 63 6c 61 73 73 20 3d 20 74  [name].class = t
d870: 68 69 73 2e 63 6f 6e 73 74 72 75 63 74 6f 72 3b  his.constructor;
d880: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2f 20 6d  .    }..    // m
d890: 6f 75 6e 74 20 74 68 65 20 74 61 67 20 75 73 69  ount the tag usi
d8a0: 6e 67 20 74 68 65 20 63 6c 61 73 73 20 69 6e 73  ng the class ins
d8b0: 74 61 6e 63 65 0a 20 20 20 20 6d 6f 75 6e 74 24  tance.    mount$
d8c0: 31 28 65 6c 2c 20 6e 61 6d 65 2c 20 6f 70 74 73  1(el, name, opts
d8d0: 2c 20 74 68 69 73 29 3b 0a 20 20 20 20 2f 2f 20  , this);.    // 
d8e0: 69 6e 6a 65 63 74 20 74 68 65 20 63 6f 6d 70 6f  inject the compo
d8f0: 6e 65 6e 74 20 63 73 73 0a 20 20 20 20 69 66 20  nent css.    if 
d900: 28 63 73 73 29 20 7b 20 73 74 79 6c 65 4d 61 6e  (css) { styleMan
d910: 61 67 65 72 2e 69 6e 6a 65 63 74 28 29 3b 20 7d  ager.inject(); }
d920: 0a 0a 20 20 20 20 72 65 74 75 72 6e 20 74 68 69  ..    return thi
d930: 73 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20  s.  }..  /**.   
d940: 2a 20 43 72 65 61 74 65 20 61 20 6e 65 77 20 72  * Create a new r
d950: 69 6f 74 20 74 61 67 20 69 6d 70 6c 65 6d 65 6e  iot tag implemen
d960: 74 61 74 69 6f 6e 0a 20 20 20 2a 20 40 70 61 72  tation.   * @par
d970: 61 6d 20 20 20 7b 20 53 74 72 69 6e 67 20 7d 20  am   { String } 
d980: 20 20 6e 61 6d 65 20 2d 20 6e 61 6d 65 2f 69 64    name - name/id
d990: 20 6f 66 20 74 68 65 20 6e 65 77 20 72 69 6f 74   of the new riot
d9a0: 20 74 61 67 0a 20 20 20 2a 20 40 70 61 72 61 6d   tag.   * @param
d9b0: 20 20 20 7b 20 53 74 72 69 6e 67 20 7d 20 20 20     { String }   
d9c0: 74 6d 70 6c 20 2d 20 74 61 67 20 74 65 6d 70 6c  tmpl - tag templ
d9d0: 61 74 65 0a 20 20 20 2a 20 40 70 61 72 61 6d 20  ate.   * @param 
d9e0: 20 20 7b 20 53 74 72 69 6e 67 20 7d 20 20 20 63    { String }   c
d9f0: 73 73 20 2d 20 63 75 73 74 6f 6d 20 74 61 67 20  ss - custom tag 
da00: 63 73 73 0a 20 20 20 2a 20 40 70 61 72 61 6d 20  css.   * @param 
da10: 20 20 7b 20 53 74 72 69 6e 67 20 7d 20 20 20 61    { String }   a
da20: 74 74 72 73 20 2d 20 72 6f 6f 74 20 74 61 67 20  ttrs - root tag 
da30: 61 74 74 72 69 62 75 74 65 73 0a 20 20 20 2a 20  attributes.   * 
da40: 40 70 61 72 61 6d 20 20 20 7b 20 46 75 6e 63 74  @param   { Funct
da50: 69 6f 6e 20 7d 20 66 6e 20 2d 20 75 73 65 72 20  ion } fn - user 
da60: 66 75 6e 63 74 69 6f 6e 0a 20 20 20 2a 20 40 72  function.   * @r
da70: 65 74 75 72 6e 73 20 7b 20 53 74 72 69 6e 67 20  eturns { String 
da80: 7d 20 6e 61 6d 65 2f 69 64 20 6f 66 20 74 68 65  } name/id of the
da90: 20 74 61 67 20 6a 75 73 74 20 63 72 65 61 74 65   tag just create
daa0: 64 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69  d.   */.  functi
dab0: 6f 6e 20 74 61 67 28 6e 61 6d 65 2c 20 74 6d 70  on tag(name, tmp
dac0: 6c 2c 20 63 73 73 2c 20 61 74 74 72 73 2c 20 66  l, css, attrs, f
dad0: 6e 29 20 7b 0a 20 20 20 20 69 66 20 28 69 73 46  n) {.    if (isF
dae0: 75 6e 63 74 69 6f 6e 28 61 74 74 72 73 29 29 20  unction(attrs)) 
daf0: 7b 0a 20 20 20 20 20 20 66 6e 20 3d 20 61 74 74  {.      fn = att
db00: 72 73 3b 0a 0a 20 20 20 20 20 20 69 66 20 28 2f  rs;..      if (/
db10: 5e 5b 5c 77 2d 5d 2b 5c 73 3f 3d 2f 2e 74 65 73  ^[\w-]+\s?=/.tes
db20: 74 28 63 73 73 29 29 20 7b 0a 20 20 20 20 20 20  t(css)) {.      
db30: 20 20 61 74 74 72 73 20 3d 20 63 73 73 3b 0a 20    attrs = css;. 
db40: 20 20 20 20 20 20 20 63 73 73 20 3d 20 27 27 3b         css = '';
db50: 0a 20 20 20 20 20 20 7d 20 65 6c 73 65 0a 20 20  .      } else.  
db60: 20 20 20 20 20 20 7b 20 61 74 74 72 73 20 3d 20        { attrs = 
db70: 27 27 3b 20 7d 0a 20 20 20 20 7d 0a 0a 20 20 20  ''; }.    }..   
db80: 20 69 66 20 28 63 73 73 29 20 7b 0a 20 20 20 20   if (css) {.    
db90: 20 20 69 66 20 28 69 73 46 75 6e 63 74 69 6f 6e    if (isFunction
dba0: 28 63 73 73 29 29 0a 20 20 20 20 20 20 20 20 7b  (css)).        {
dbb0: 20 66 6e 20 3d 20 63 73 73 3b 20 7d 0a 20 20 20   fn = css; }.   
dbc0: 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 20 20     else.        
dbd0: 7b 20 73 74 79 6c 65 4d 61 6e 61 67 65 72 2e 61  { styleManager.a
dbe0: 64 64 28 63 73 73 2c 20 6e 61 6d 65 29 3b 20 7d  dd(css, name); }
dbf0: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6e 61 6d 65  .    }..    name
dc00: 20 3d 20 6e 61 6d 65 2e 74 6f 4c 6f 77 65 72 43   = name.toLowerC
dc10: 61 73 65 28 29 3b 0a 20 20 20 20 5f 5f 54 41 47  ase();.    __TAG
dc20: 5f 49 4d 50 4c 5b 6e 61 6d 65 5d 20 3d 20 7b 20  _IMPL[name] = { 
dc30: 6e 61 6d 65 3a 20 6e 61 6d 65 2c 20 74 6d 70 6c  name: name, tmpl
dc40: 3a 20 74 6d 70 6c 2c 20 61 74 74 72 73 3a 20 61  : tmpl, attrs: a
dc50: 74 74 72 73 2c 20 66 6e 3a 20 66 6e 20 7d 3b 0a  ttrs, fn: fn };.
dc60: 0a 20 20 20 20 72 65 74 75 72 6e 20 6e 61 6d 65  .    return name
dc70: 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a  .  }..  /**.   *
dc80: 20 43 72 65 61 74 65 20 61 20 6e 65 77 20 72 69   Create a new ri
dc90: 6f 74 20 74 61 67 20 69 6d 70 6c 65 6d 65 6e 74  ot tag implement
dca0: 61 74 69 6f 6e 20 28 66 6f 72 20 75 73 65 20 62  ation (for use b
dcb0: 79 20 74 68 65 20 63 6f 6d 70 69 6c 65 72 29 0a  y the compiler).
dcc0: 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20     * @param   { 
dcd0: 53 74 72 69 6e 67 20 7d 20 20 20 6e 61 6d 65 20  String }   name 
dce0: 2d 20 6e 61 6d 65 2f 69 64 20 6f 66 20 74 68 65  - name/id of the
dcf0: 20 6e 65 77 20 72 69 6f 74 20 74 61 67 0a 20 20   new riot tag.  
dd00: 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 53 74   * @param   { St
dd10: 72 69 6e 67 20 7d 20 20 20 74 6d 70 6c 20 2d 20  ring }   tmpl - 
dd20: 74 61 67 20 74 65 6d 70 6c 61 74 65 0a 20 20 20  tag template.   
dd30: 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 53 74 72  * @param   { Str
dd40: 69 6e 67 20 7d 20 20 20 63 73 73 20 2d 20 63 75  ing }   css - cu
dd50: 73 74 6f 6d 20 74 61 67 20 63 73 73 0a 20 20 20  stom tag css.   
dd60: 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 53 74 72  * @param   { Str
dd70: 69 6e 67 20 7d 20 20 20 61 74 74 72 73 20 2d 20  ing }   attrs - 
dd80: 72 6f 6f 74 20 74 61 67 20 61 74 74 72 69 62 75  root tag attribu
dd90: 74 65 73 0a 20 20 20 2a 20 40 70 61 72 61 6d 20  tes.   * @param 
dda0: 20 20 7b 20 46 75 6e 63 74 69 6f 6e 20 7d 20 66    { Function } f
ddb0: 6e 20 2d 20 75 73 65 72 20 66 75 6e 63 74 69 6f  n - user functio
ddc0: 6e 0a 20 20 20 2a 20 40 72 65 74 75 72 6e 73 20  n.   * @returns 
ddd0: 7b 20 53 74 72 69 6e 67 20 7d 20 6e 61 6d 65 2f  { String } name/
dde0: 69 64 20 6f 66 20 74 68 65 20 74 61 67 20 6a 75  id of the tag ju
ddf0: 73 74 20 63 72 65 61 74 65 64 0a 20 20 20 2a 2f  st created.   */
de00: 0a 20 20 66 75 6e 63 74 69 6f 6e 20 74 61 67 32  .  function tag2
de10: 28 6e 61 6d 65 2c 20 74 6d 70 6c 2c 20 63 73 73  (name, tmpl, css
de20: 2c 20 61 74 74 72 73 2c 20 66 6e 29 20 7b 0a 20  , attrs, fn) {. 
de30: 20 20 20 69 66 20 28 63 73 73 29 20 7b 20 73 74     if (css) { st
de40: 79 6c 65 4d 61 6e 61 67 65 72 2e 61 64 64 28 63  yleManager.add(c
de50: 73 73 2c 20 6e 61 6d 65 29 3b 20 7d 0a 0a 20 20  ss, name); }..  
de60: 20 20 5f 5f 54 41 47 5f 49 4d 50 4c 5b 6e 61 6d    __TAG_IMPL[nam
de70: 65 5d 20 3d 20 7b 20 6e 61 6d 65 3a 20 6e 61 6d  e] = { name: nam
de80: 65 2c 20 74 6d 70 6c 3a 20 74 6d 70 6c 2c 20 61  e, tmpl: tmpl, a
de90: 74 74 72 73 3a 20 61 74 74 72 73 2c 20 66 6e 3a  ttrs: attrs, fn:
dea0: 20 66 6e 20 7d 3b 0a 0a 20 20 20 20 72 65 74 75   fn };..    retu
deb0: 72 6e 20 6e 61 6d 65 0a 20 20 7d 0a 0a 20 20 2f  rn name.  }..  /
dec0: 2a 2a 0a 20 20 20 2a 20 4d 6f 75 6e 74 20 61 20  **.   * Mount a 
ded0: 74 61 67 20 75 73 69 6e 67 20 61 20 73 70 65 63  tag using a spec
dee0: 69 66 69 63 20 74 61 67 20 69 6d 70 6c 65 6d 65  ific tag impleme
def0: 6e 74 61 74 69 6f 6e 0a 20 20 20 2a 20 40 70 61  ntation.   * @pa
df00: 72 61 6d 20 20 20 7b 20 2a 20 7d 20 73 65 6c 65  ram   { * } sele
df10: 63 74 6f 72 20 2d 20 74 61 67 20 44 4f 4d 20 73  ctor - tag DOM s
df20: 65 6c 65 63 74 6f 72 20 6f 72 20 44 4f 4d 20 6e  elector or DOM n
df30: 6f 64 65 2f 73 0a 20 20 20 2a 20 40 70 61 72 61  ode/s.   * @para
df40: 6d 20 20 20 7b 20 53 74 72 69 6e 67 20 7d 20 74  m   { String } t
df50: 61 67 4e 61 6d 65 20 2d 20 74 61 67 20 69 6d 70  agName - tag imp
df60: 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6e 61 6d 65  lementation name
df70: 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b  .   * @param   {
df80: 20 4f 62 6a 65 63 74 20 7d 20 6f 70 74 73 20 2d   Object } opts -
df90: 20 74 61 67 20 6c 6f 67 69 63 0a 20 20 20 2a 20   tag logic.   * 
dfa0: 40 72 65 74 75 72 6e 73 20 7b 20 41 72 72 61 79  @returns { Array
dfb0: 20 7d 20 6e 65 77 20 74 61 67 73 20 69 6e 73 74   } new tags inst
dfc0: 61 6e 63 65 73 0a 20 20 20 2a 2f 0a 20 20 66 75  ances.   */.  fu
dfd0: 6e 63 74 69 6f 6e 20 6d 6f 75 6e 74 28 73 65 6c  nction mount(sel
dfe0: 65 63 74 6f 72 2c 20 74 61 67 4e 61 6d 65 2c 20  ector, tagName, 
dff0: 6f 70 74 73 29 20 7b 0a 20 20 20 20 76 61 72 20  opts) {.    var 
e000: 74 61 67 73 20 3d 20 5b 5d 3b 0a 20 20 20 20 76  tags = [];.    v
e010: 61 72 20 65 6c 65 6d 2c 20 61 6c 6c 54 61 67 73  ar elem, allTags
e020: 3b 0a 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20  ;..    function 
e030: 70 75 73 68 54 61 67 73 54 6f 28 72 6f 6f 74 29  pushTagsTo(root)
e040: 20 7b 0a 20 20 20 20 20 20 69 66 20 28 72 6f 6f   {.      if (roo
e050: 74 2e 74 61 67 4e 61 6d 65 29 20 7b 0a 20 20 20  t.tagName) {.   
e060: 20 20 20 20 20 76 61 72 20 72 69 6f 74 54 61 67       var riotTag
e070: 20 3d 20 67 65 74 41 74 74 72 69 62 75 74 65 28   = getAttribute(
e080: 72 6f 6f 74 2c 20 49 53 5f 44 49 52 45 43 54 49  root, IS_DIRECTI
e090: 56 45 29 2c 20 74 61 67 3b 0a 0a 20 20 20 20 20  VE), tag;..     
e0a0: 20 20 20 2f 2f 20 68 61 76 65 20 74 61 67 4e 61     // have tagNa
e0b0: 6d 65 3f 20 66 6f 72 63 65 20 72 69 6f 74 2d 74  me? force riot-t
e0c0: 61 67 20 74 6f 20 62 65 20 74 68 65 20 73 61 6d  ag to be the sam
e0d0: 65 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 61  e.        if (ta
e0e0: 67 4e 61 6d 65 20 26 26 20 72 69 6f 74 54 61 67  gName && riotTag
e0f0: 20 21 3d 3d 20 74 61 67 4e 61 6d 65 29 20 7b 0a   !== tagName) {.
e100: 20 20 20 20 20 20 20 20 20 20 72 69 6f 74 54 61            riotTa
e110: 67 20 3d 20 74 61 67 4e 61 6d 65 3b 0a 20 20 20  g = tagName;.   
e120: 20 20 20 20 20 20 20 73 65 74 41 74 74 72 69 62         setAttrib
e130: 75 74 65 28 72 6f 6f 74 2c 20 49 53 5f 44 49 52  ute(root, IS_DIR
e140: 45 43 54 49 56 45 2c 20 74 61 67 4e 61 6d 65 29  ECTIVE, tagName)
e150: 3b 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20  ;.        }..   
e160: 20 20 20 20 20 74 61 67 20 3d 20 6d 6f 75 6e 74       tag = mount
e170: 24 31 28 0a 20 20 20 20 20 20 20 20 20 20 72 6f  $1(.          ro
e180: 6f 74 2c 0a 20 20 20 20 20 20 20 20 20 20 72 69  ot,.          ri
e190: 6f 74 54 61 67 20 7c 7c 20 72 6f 6f 74 2e 74 61  otTag || root.ta
e1a0: 67 4e 61 6d 65 2e 74 6f 4c 6f 77 65 72 43 61 73  gName.toLowerCas
e1b0: 65 28 29 2c 0a 20 20 20 20 20 20 20 20 20 20 69  e(),.          i
e1c0: 73 46 75 6e 63 74 69 6f 6e 28 6f 70 74 73 29 20  sFunction(opts) 
e1d0: 3f 20 6f 70 74 73 28 29 20 3a 20 6f 70 74 73 0a  ? opts() : opts.
e1e0: 20 20 20 20 20 20 20 20 29 3b 0a 0a 20 20 20 20          );..    
e1f0: 20 20 20 20 69 66 20 28 74 61 67 29 0a 20 20 20      if (tag).   
e200: 20 20 20 20 20 20 20 7b 20 74 61 67 73 2e 70 75         { tags.pu
e210: 73 68 28 74 61 67 29 3b 20 7d 0a 20 20 20 20 20  sh(tag); }.     
e220: 20 7d 20 65 6c 73 65 20 69 66 20 28 72 6f 6f 74   } else if (root
e230: 2e 6c 65 6e 67 74 68 29 0a 20 20 20 20 20 20 20  .length).       
e240: 20 7b 20 65 61 63 68 28 72 6f 6f 74 2c 20 70 75   { each(root, pu
e250: 73 68 54 61 67 73 54 6f 29 3b 20 7d 20 2f 2f 20  shTagsTo); } // 
e260: 61 73 73 75 6d 65 20 6e 6f 64 65 4c 69 73 74 0a  assume nodeList.
e270: 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2f 20 69 6e      }..    // in
e280: 6a 65 63 74 20 73 74 79 6c 65 73 20 69 6e 74 6f  ject styles into
e290: 20 44 4f 4d 0a 20 20 20 20 73 74 79 6c 65 4d 61   DOM.    styleMa
e2a0: 6e 61 67 65 72 2e 69 6e 6a 65 63 74 28 29 3b 0a  nager.inject();.
e2b0: 0a 20 20 20 20 69 66 20 28 69 73 4f 62 6a 65 63  .    if (isObjec
e2c0: 74 28 74 61 67 4e 61 6d 65 29 20 7c 7c 20 69 73  t(tagName) || is
e2d0: 46 75 6e 63 74 69 6f 6e 28 74 61 67 4e 61 6d 65  Function(tagName
e2e0: 29 29 20 7b 0a 20 20 20 20 20 20 6f 70 74 73 20  )) {.      opts 
e2f0: 3d 20 74 61 67 4e 61 6d 65 3b 0a 20 20 20 20 20  = tagName;.     
e300: 20 74 61 67 4e 61 6d 65 20 3d 20 30 3b 0a 20 20   tagName = 0;.  
e310: 20 20 7d 0a 0a 20 20 20 20 2f 2f 20 63 72 61 77    }..    // craw
e320: 6c 20 74 68 65 20 44 4f 4d 20 74 6f 20 66 69 6e  l the DOM to fin
e330: 64 20 74 68 65 20 74 61 67 0a 20 20 20 20 69 66  d the tag.    if
e340: 20 28 69 73 53 74 72 69 6e 67 28 73 65 6c 65 63   (isString(selec
e350: 74 6f 72 29 29 20 7b 0a 20 20 20 20 20 20 73 65  tor)) {.      se
e360: 6c 65 63 74 6f 72 20 3d 20 73 65 6c 65 63 74 6f  lector = selecto
e370: 72 20 3d 3d 3d 20 27 2a 27 20 3f 0a 20 20 20 20  r === '*' ?.    
e380: 20 20 20 20 2f 2f 20 73 65 6c 65 63 74 20 61 6c      // select al
e390: 6c 20 72 65 67 69 73 74 65 72 65 64 20 74 61 67  l registered tag
e3a0: 73 0a 20 20 20 20 20 20 20 20 2f 2f 20 26 20 74  s.        // & t
e3b0: 61 67 73 20 66 6f 75 6e 64 20 77 69 74 68 20 74  ags found with t
e3c0: 68 65 20 72 69 6f 74 2d 74 61 67 20 61 74 74 72  he riot-tag attr
e3d0: 69 62 75 74 65 20 73 65 74 0a 20 20 20 20 20 20  ibute set.      
e3e0: 20 20 61 6c 6c 54 61 67 73 20 3d 20 71 75 65 72    allTags = quer
e3f0: 79 28 29 20 3a 0a 20 20 20 20 20 20 20 20 2f 2f  y() :.        //
e400: 20 6f 72 20 6a 75 73 74 20 74 68 65 20 6f 6e 65   or just the one
e410: 73 20 6e 61 6d 65 64 20 6c 69 6b 65 20 74 68 65  s named like the
e420: 20 73 65 6c 65 63 74 6f 72 0a 20 20 20 20 20 20   selector.      
e430: 20 20 73 65 6c 65 63 74 6f 72 20 2b 20 71 75 65    selector + que
e440: 72 79 28 73 65 6c 65 63 74 6f 72 2e 73 70 6c 69  ry(selector.spli
e450: 74 28 2f 2c 20 2a 2f 29 29 3b 0a 0a 20 20 20 20  t(/, */));..    
e460: 20 20 2f 2f 20 6d 61 6b 65 20 73 75 72 65 20 74    // make sure t
e470: 6f 20 70 61 73 73 20 61 6c 77 61 79 73 20 61 20  o pass always a 
e480: 73 65 6c 65 63 74 6f 72 0a 20 20 20 20 20 20 2f  selector.      /
e490: 2f 20 74 6f 20 74 68 65 20 71 75 65 72 79 53 65  / to the querySe
e4a0: 6c 65 63 74 6f 72 41 6c 6c 20 66 75 6e 63 74 69  lectorAll functi
e4b0: 6f 6e 0a 20 20 20 20 20 20 65 6c 65 6d 20 3d 20  on.      elem = 
e4c0: 73 65 6c 65 63 74 6f 72 20 3f 20 24 24 28 73 65  selector ? $$(se
e4d0: 6c 65 63 74 6f 72 29 20 3a 20 5b 5d 3b 0a 20 20  lector) : [];.  
e4e0: 20 20 7d 0a 20 20 20 20 65 6c 73 65 0a 20 20 20    }.    else.   
e4f0: 20 20 20 2f 2f 20 70 72 6f 62 61 62 6c 79 20 79     // probably y
e500: 6f 75 20 68 61 76 65 20 70 61 73 73 65 64 20 61  ou have passed a
e510: 6c 72 65 61 64 79 20 61 20 74 61 67 20 6f 72 20  lready a tag or 
e520: 61 20 4e 6f 64 65 4c 69 73 74 0a 20 20 20 20 20  a NodeList.     
e530: 20 7b 20 65 6c 65 6d 20 3d 20 73 65 6c 65 63 74   { elem = select
e540: 6f 72 3b 20 7d 0a 0a 20 20 20 20 2f 2f 20 73 65  or; }..    // se
e550: 6c 65 63 74 20 61 6c 6c 20 74 68 65 20 72 65 67  lect all the reg
e560: 69 73 74 65 72 65 64 20 61 6e 64 20 6d 6f 75 6e  istered and moun
e570: 74 20 74 68 65 6d 20 69 6e 73 69 64 65 20 74 68  t them inside th
e580: 65 69 72 20 72 6f 6f 74 20 65 6c 65 6d 65 6e 74  eir root element
e590: 73 0a 20 20 20 20 69 66 20 28 74 61 67 4e 61 6d  s.    if (tagNam
e5a0: 65 20 3d 3d 3d 20 27 2a 27 29 20 7b 0a 20 20 20  e === '*') {.   
e5b0: 20 20 20 2f 2f 20 67 65 74 20 61 6c 6c 20 63 75     // get all cu
e5c0: 73 74 6f 6d 20 74 61 67 73 0a 20 20 20 20 20 20  stom tags.      
e5d0: 74 61 67 4e 61 6d 65 20 3d 20 61 6c 6c 54 61 67  tagName = allTag
e5e0: 73 20 7c 7c 20 71 75 65 72 79 28 29 3b 0a 20 20  s || query();.  
e5f0: 20 20 20 20 2f 2f 20 69 66 20 74 68 65 20 72 6f      // if the ro
e600: 6f 74 20 65 6c 73 20 69 74 27 73 20 6a 75 73 74  ot els it's just
e610: 20 61 20 73 69 6e 67 6c 65 20 74 61 67 0a 20 20   a single tag.  
e620: 20 20 20 20 69 66 20 28 65 6c 65 6d 2e 74 61 67      if (elem.tag
e630: 4e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 7b 20  Name).        { 
e640: 65 6c 65 6d 20 3d 20 24 24 28 74 61 67 4e 61 6d  elem = $$(tagNam
e650: 65 2c 20 65 6c 65 6d 29 3b 20 7d 0a 20 20 20 20  e, elem); }.    
e660: 20 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20    else {.       
e670: 20 2f 2f 20 73 65 6c 65 63 74 20 61 6c 6c 20 74   // select all t
e680: 68 65 20 63 68 69 6c 64 72 65 6e 20 66 6f 72 20  he children for 
e690: 61 6c 6c 20 74 68 65 20 64 69 66 66 65 72 65 6e  all the differen
e6a0: 74 20 72 6f 6f 74 20 65 6c 65 6d 65 6e 74 73 0a  t root elements.
e6b0: 20 20 20 20 20 20 20 20 76 61 72 20 6e 6f 64 65          var node
e6c0: 4c 69 73 74 20 3d 20 5b 5d 3b 0a 0a 20 20 20 20  List = [];..    
e6d0: 20 20 20 20 65 61 63 68 28 65 6c 65 6d 2c 20 66      each(elem, f
e6e0: 75 6e 63 74 69 6f 6e 20 28 5f 65 6c 29 20 7b 20  unction (_el) { 
e6f0: 72 65 74 75 72 6e 20 6e 6f 64 65 4c 69 73 74 2e  return nodeList.
e700: 70 75 73 68 28 24 24 28 74 61 67 4e 61 6d 65 2c  push($$(tagName,
e710: 20 5f 65 6c 29 29 3b 20 7d 29 3b 0a 0a 20 20 20   _el)); });..   
e720: 20 20 20 20 20 65 6c 65 6d 20 3d 20 6e 6f 64 65       elem = node
e730: 4c 69 73 74 3b 0a 20 20 20 20 20 20 7d 0a 20 20  List;.      }.  
e740: 20 20 20 20 2f 2f 20 67 65 74 20 72 69 64 20 6f      // get rid o
e750: 66 20 74 68 65 20 74 61 67 4e 61 6d 65 0a 20 20  f the tagName.  
e760: 20 20 20 20 74 61 67 4e 61 6d 65 20 3d 20 30 3b      tagName = 0;
e770: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 70 75 73 68  .    }..    push
e780: 54 61 67 73 54 6f 28 65 6c 65 6d 29 3b 0a 0a 20  TagsTo(elem);.. 
e790: 20 20 20 72 65 74 75 72 6e 20 74 61 67 73 0a 20     return tags. 
e7a0: 20 7d 0a 0a 20 20 2f 2f 20 43 72 65 61 74 65 20   }..  // Create 
e7b0: 61 20 6d 69 78 69 6e 20 74 68 61 74 20 63 6f 75  a mixin that cou
e7c0: 6c 64 20 62 65 20 67 6c 6f 62 61 6c 6c 79 20 73  ld be globally s
e7d0: 68 61 72 65 64 20 61 63 72 6f 73 73 20 61 6c 6c  hared across all
e7e0: 20 74 68 65 20 74 61 67 73 0a 20 20 76 61 72 20   the tags.  var 
e7f0: 6d 69 78 69 6e 73 20 3d 20 7b 7d 3b 0a 20 20 76  mixins = {};.  v
e800: 61 72 20 67 6c 6f 62 61 6c 73 20 3d 20 6d 69 78  ar globals = mix
e810: 69 6e 73 5b 47 4c 4f 42 41 4c 5f 4d 49 58 49 4e  ins[GLOBAL_MIXIN
e820: 5d 20 3d 20 7b 7d 3b 0a 20 20 76 61 72 20 6d 69  ] = {};.  var mi
e830: 78 69 6e 73 5f 69 64 20 3d 20 30 3b 0a 0a 20 20  xins_id = 0;..  
e840: 2f 2a 2a 0a 20 20 20 2a 20 43 72 65 61 74 65 2f  /**.   * Create/
e850: 52 65 74 75 72 6e 20 61 20 6d 69 78 69 6e 20 62  Return a mixin b
e860: 79 20 69 74 73 20 6e 61 6d 65 0a 20 20 20 2a 20  y its name.   * 
e870: 40 70 61 72 61 6d 20 20 20 7b 20 53 74 72 69 6e  @param   { Strin
e880: 67 20 7d 20 20 6e 61 6d 65 20 2d 20 6d 69 78 69  g }  name - mixi
e890: 6e 20 6e 61 6d 65 20 28 67 6c 6f 62 61 6c 20 6d  n name (global m
e8a0: 69 78 69 6e 20 69 66 20 6f 62 6a 65 63 74 29 0a  ixin if object).
e8b0: 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20     * @param   { 
e8c0: 4f 62 6a 65 63 74 20 7d 20 20 6d 69 78 20 2d 20  Object }  mix - 
e8d0: 6d 69 78 69 6e 20 6c 6f 67 69 63 0a 20 20 20 2a  mixin logic.   *
e8e0: 20 40 70 61 72 61 6d 20 20 20 7b 20 42 6f 6f 6c   @param   { Bool
e8f0: 65 61 6e 20 7d 20 67 20 2d 20 69 73 20 67 6c 6f  ean } g - is glo
e900: 62 61 6c 3f 0a 20 20 20 2a 20 40 72 65 74 75 72  bal?.   * @retur
e910: 6e 73 20 7b 20 4f 62 6a 65 63 74 20 7d 20 20 74  ns { Object }  t
e920: 68 65 20 6d 69 78 69 6e 20 6c 6f 67 69 63 0a 20  he mixin logic. 
e930: 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20    */.  function 
e940: 6d 69 78 69 6e 28 6e 61 6d 65 2c 20 6d 69 78 2c  mixin(name, mix,
e950: 20 67 29 20 7b 0a 20 20 20 20 2f 2f 20 55 6e 6e   g) {.    // Unn
e960: 61 6d 65 64 20 67 6c 6f 62 61 6c 0a 20 20 20 20  amed global.    
e970: 69 66 20 28 69 73 4f 62 6a 65 63 74 28 6e 61 6d  if (isObject(nam
e980: 65 29 29 20 7b 0a 20 20 20 20 20 20 6d 69 78 69  e)) {.      mixi
e990: 6e 28 28 22 5f 5f 22 20 2b 20 28 6d 69 78 69 6e  n(("__" + (mixin
e9a0: 73 5f 69 64 2b 2b 29 20 2b 20 22 5f 5f 22 29 2c  s_id++) + "__"),
e9b0: 20 6e 61 6d 65 2c 20 74 72 75 65 29 3b 0a 20 20   name, true);.  
e9c0: 20 20 20 20 72 65 74 75 72 6e 0a 20 20 20 20 7d      return.    }
e9d0: 0a 0a 20 20 20 20 76 61 72 20 73 74 6f 72 65 20  ..    var store 
e9e0: 3d 20 67 20 3f 20 67 6c 6f 62 61 6c 73 20 3a 20  = g ? globals : 
e9f0: 6d 69 78 69 6e 73 3b 0a 0a 20 20 20 20 2f 2f 20  mixins;..    // 
ea00: 47 65 74 74 65 72 0a 20 20 20 20 69 66 20 28 21  Getter.    if (!
ea10: 6d 69 78 29 20 7b 0a 20 20 20 20 20 20 69 66 20  mix) {.      if 
ea20: 28 69 73 55 6e 64 65 66 69 6e 65 64 28 73 74 6f  (isUndefined(sto
ea30: 72 65 5b 6e 61 6d 65 5d 29 29 0a 20 20 20 20 20  re[name])).     
ea40: 20 20 20 7b 20 74 68 72 6f 77 20 6e 65 77 20 45     { throw new E
ea50: 72 72 6f 72 28 28 22 55 6e 72 65 67 69 73 74 65  rror(("Unregiste
ea60: 72 65 64 20 6d 69 78 69 6e 3a 20 22 20 2b 20 6e  red mixin: " + n
ea70: 61 6d 65 29 29 20 7d 0a 0a 20 20 20 20 20 20 72  ame)) }..      r
ea80: 65 74 75 72 6e 20 73 74 6f 72 65 5b 6e 61 6d 65  eturn store[name
ea90: 5d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2f 20  ].    }..    // 
eaa0: 53 65 74 74 65 72 0a 20 20 20 20 73 74 6f 72 65  Setter.    store
eab0: 5b 6e 61 6d 65 5d 20 3d 20 69 73 46 75 6e 63 74  [name] = isFunct
eac0: 69 6f 6e 28 6d 69 78 29 20 3f 0a 20 20 20 20 20  ion(mix) ?.     
ead0: 20 65 78 74 65 6e 64 28 6d 69 78 2e 70 72 6f 74   extend(mix.prot
eae0: 6f 74 79 70 65 2c 20 73 74 6f 72 65 5b 6e 61 6d  otype, store[nam
eaf0: 65 5d 20 7c 7c 20 7b 7d 29 20 26 26 20 6d 69 78  e] || {}) && mix
eb00: 20 3a 0a 20 20 20 20 20 20 65 78 74 65 6e 64 28   :.      extend(
eb10: 73 74 6f 72 65 5b 6e 61 6d 65 5d 20 7c 7c 20 7b  store[name] || {
eb20: 7d 2c 20 6d 69 78 29 3b 0a 20 20 7d 0a 0a 20 20  }, mix);.  }..  
eb30: 2f 2a 2a 0a 20 20 20 2a 20 55 70 64 61 74 65 20  /**.   * Update 
eb40: 61 6c 6c 20 74 68 65 20 74 61 67 73 20 69 6e 73  all the tags ins
eb50: 74 61 6e 63 65 73 20 63 72 65 61 74 65 64 0a 20  tances created. 
eb60: 20 20 2a 20 40 72 65 74 75 72 6e 73 20 7b 20 41    * @returns { A
eb70: 72 72 61 79 20 7d 20 61 6c 6c 20 74 68 65 20 74  rray } all the t
eb80: 61 67 73 20 69 6e 73 74 61 6e 63 65 73 0a 20 20  ags instances.  
eb90: 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 75   */.  function u
eba0: 70 64 61 74 65 24 31 28 29 20 7b 0a 20 20 20 20  pdate$1() {.    
ebb0: 72 65 74 75 72 6e 20 65 61 63 68 28 5f 5f 54 41  return each(__TA
ebc0: 47 53 5f 43 41 43 48 45 2c 20 66 75 6e 63 74 69  GS_CACHE, functi
ebd0: 6f 6e 20 28 74 61 67 29 20 7b 20 72 65 74 75 72  on (tag) { retur
ebe0: 6e 20 74 61 67 2e 75 70 64 61 74 65 28 29 3b 20  n tag.update(); 
ebf0: 7d 29 0a 20 20 7d 0a 0a 20 20 66 75 6e 63 74 69  }).  }..  functi
ec00: 6f 6e 20 75 6e 72 65 67 69 73 74 65 72 28 6e 61  on unregister(na
ec10: 6d 65 29 20 7b 0a 20 20 20 20 73 74 79 6c 65 4d  me) {.    styleM
ec20: 61 6e 61 67 65 72 2e 72 65 6d 6f 76 65 28 6e 61  anager.remove(na
ec30: 6d 65 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20  me);.    return 
ec40: 64 65 6c 65 74 65 20 5f 5f 54 41 47 5f 49 4d 50  delete __TAG_IMP
ec50: 4c 5b 6e 61 6d 65 5d 0a 20 20 7d 0a 0a 20 20 76  L[name].  }..  v
ec60: 61 72 20 76 65 72 73 69 6f 6e 20 3d 20 27 76 33  ar version = 'v3
ec70: 2e 31 33 2e 32 27 3b 0a 0a 20 20 76 61 72 20 63  .13.2';..  var c
ec80: 6f 72 65 20 3d 20 2f 2a 23 5f 5f 50 55 52 45 5f  ore = /*#__PURE_
ec90: 5f 2a 2f 4f 62 6a 65 63 74 2e 66 72 65 65 7a 65  _*/Object.freeze
eca0: 28 7b 0a 20 20 20 20 54 61 67 3a 20 54 61 67 2c  ({.    Tag: Tag,
ecb0: 0a 20 20 20 20 74 61 67 3a 20 74 61 67 2c 0a 20  .    tag: tag,. 
ecc0: 20 20 20 74 61 67 32 3a 20 74 61 67 32 2c 0a 20     tag2: tag2,. 
ecd0: 20 20 20 6d 6f 75 6e 74 3a 20 6d 6f 75 6e 74 2c     mount: mount,
ece0: 0a 20 20 20 20 6d 69 78 69 6e 3a 20 6d 69 78 69  .    mixin: mixi
ecf0: 6e 2c 0a 20 20 20 20 75 70 64 61 74 65 3a 20 75  n,.    update: u
ed00: 70 64 61 74 65 24 31 2c 0a 20 20 20 20 75 6e 72  pdate$1,.    unr
ed10: 65 67 69 73 74 65 72 3a 20 75 6e 72 65 67 69 73  egister: unregis
ed20: 74 65 72 2c 0a 20 20 20 20 76 65 72 73 69 6f 6e  ter,.    version
ed30: 3a 20 76 65 72 73 69 6f 6e 0a 20 20 7d 29 3b 0a  : version.  });.
ed40: 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 41 64 64 20  .  /**.   * Add 
ed50: 61 20 6d 69 78 69 6e 20 74 6f 20 74 68 69 73 20  a mixin to this 
ed60: 74 61 67 0a 20 20 20 2a 20 40 72 65 74 75 72 6e  tag.   * @return
ed70: 73 20 7b 20 54 61 67 20 7d 20 74 68 65 20 63 75  s { Tag } the cu
ed80: 72 72 65 6e 74 20 74 61 67 20 69 6e 73 74 61 6e  rrent tag instan
ed90: 63 65 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74  ce.   */.  funct
eda0: 69 6f 6e 20 63 6f 6d 70 6f 6e 65 6e 74 4d 69 78  ion componentMix
edb0: 69 6e 28 74 61 67 24 24 31 29 20 7b 0a 20 20 20  in(tag$$1) {.   
edc0: 20 76 61 72 20 6d 69 78 69 6e 73 20 3d 20 5b 5d   var mixins = []
edd0: 2c 20 6c 65 6e 20 3d 20 61 72 67 75 6d 65 6e 74  , len = argument
ede0: 73 2e 6c 65 6e 67 74 68 20 2d 20 31 3b 0a 20 20  s.length - 1;.  
edf0: 20 20 77 68 69 6c 65 20 28 20 6c 65 6e 2d 2d 20    while ( len-- 
ee00: 3e 20 30 20 29 20 6d 69 78 69 6e 73 5b 20 6c 65  > 0 ) mixins[ le
ee10: 6e 20 5d 20 3d 20 61 72 67 75 6d 65 6e 74 73 5b  n ] = arguments[
ee20: 20 6c 65 6e 20 2b 20 31 20 5d 3b 0a 0a 20 20 20   len + 1 ];..   
ee30: 20 65 61 63 68 28 6d 69 78 69 6e 73 2c 20 66 75   each(mixins, fu
ee40: 6e 63 74 69 6f 6e 20 28 6d 69 78 29 20 7b 0a 20  nction (mix) {. 
ee50: 20 20 20 20 20 76 61 72 20 69 6e 73 74 61 6e 63       var instanc
ee60: 65 3b 0a 20 20 20 20 20 20 76 61 72 20 6f 62 6a  e;.      var obj
ee70: 3b 0a 20 20 20 20 20 20 76 61 72 20 70 72 6f 70  ;.      var prop
ee80: 73 20 3d 20 5b 5d 3b 0a 0a 20 20 20 20 20 20 2f  s = [];..      /
ee90: 2f 20 70 72 6f 70 65 72 74 69 65 73 20 62 6c 61  / properties bla
eea0: 63 6b 6c 69 73 74 65 64 20 61 6e 64 20 77 69 6c  cklisted and wil
eeb0: 6c 20 6e 6f 74 20 62 65 20 62 6f 75 6e 64 20 74  l not be bound t
eec0: 6f 20 74 68 65 20 74 61 67 20 69 6e 73 74 61 6e  o the tag instan
eed0: 63 65 0a 20 20 20 20 20 20 76 61 72 20 70 72 6f  ce.      var pro
eee0: 70 73 42 6c 61 63 6b 6c 69 73 74 20 3d 20 5b 27  psBlacklist = ['
eef0: 69 6e 69 74 27 2c 20 27 5f 5f 70 72 6f 74 6f 5f  init', '__proto_
ef00: 5f 27 5d 3b 0a 0a 20 20 20 20 20 20 6d 69 78 20  _'];..      mix 
ef10: 3d 20 69 73 53 74 72 69 6e 67 28 6d 69 78 29 20  = isString(mix) 
ef20: 3f 20 6d 69 78 69 6e 28 6d 69 78 29 20 3a 20 6d  ? mixin(mix) : m
ef30: 69 78 3b 0a 0a 20 20 20 20 20 20 2f 2f 20 63 68  ix;..      // ch
ef40: 65 63 6b 20 69 66 20 74 68 65 20 6d 69 78 69 6e  eck if the mixin
ef50: 20 69 73 20 61 20 66 75 6e 63 74 69 6f 6e 0a 20   is a function. 
ef60: 20 20 20 20 20 69 66 20 28 69 73 46 75 6e 63 74       if (isFunct
ef70: 69 6f 6e 28 6d 69 78 29 29 20 7b 0a 20 20 20 20  ion(mix)) {.    
ef80: 20 20 20 20 2f 2f 20 63 72 65 61 74 65 20 74 68      // create th
ef90: 65 20 6e 65 77 20 6d 69 78 69 6e 20 69 6e 73 74  e new mixin inst
efa0: 61 6e 63 65 0a 20 20 20 20 20 20 20 20 69 6e 73  ance.        ins
efb0: 74 61 6e 63 65 20 3d 20 6e 65 77 20 6d 69 78 28  tance = new mix(
efc0: 29 3b 0a 20 20 20 20 20 20 7d 20 65 6c 73 65 20  );.      } else 
efd0: 7b 20 69 6e 73 74 61 6e 63 65 20 3d 20 6d 69 78  { instance = mix
efe0: 3b 20 7d 0a 0a 20 20 20 20 20 20 76 61 72 20 70  ; }..      var p
eff0: 72 6f 74 6f 20 3d 20 4f 62 6a 65 63 74 2e 67 65  roto = Object.ge
f000: 74 50 72 6f 74 6f 74 79 70 65 4f 66 28 69 6e 73  tPrototypeOf(ins
f010: 74 61 6e 63 65 29 3b 0a 0a 20 20 20 20 20 20 2f  tance);..      /
f020: 2f 20 62 75 69 6c 64 20 6d 75 6c 74 69 6c 65 76  / build multilev
f030: 65 6c 20 70 72 6f 74 6f 74 79 70 65 20 69 6e 68  el prototype inh
f040: 65 72 69 74 61 6e 63 65 20 63 68 61 69 6e 20 70  eritance chain p
f050: 72 6f 70 65 72 74 79 20 6c 69 73 74 0a 20 20 20  roperty list.   
f060: 20 20 20 64 6f 20 7b 20 70 72 6f 70 73 20 3d 20     do { props = 
f070: 70 72 6f 70 73 2e 63 6f 6e 63 61 74 28 4f 62 6a  props.concat(Obj
f080: 65 63 74 2e 67 65 74 4f 77 6e 50 72 6f 70 65 72  ect.getOwnProper
f090: 74 79 4e 61 6d 65 73 28 6f 62 6a 20 7c 7c 20 69  tyNames(obj || i
f0a0: 6e 73 74 61 6e 63 65 29 29 3b 20 7d 0a 20 20 20  nstance)); }.   
f0b0: 20 20 20 77 68 69 6c 65 20 28 6f 62 6a 20 3d 20     while (obj = 
f0c0: 4f 62 6a 65 63 74 2e 67 65 74 50 72 6f 74 6f 74  Object.getProtot
f0d0: 79 70 65 4f 66 28 6f 62 6a 20 7c 7c 20 69 6e 73  ypeOf(obj || ins
f0e0: 74 61 6e 63 65 29 29 0a 0a 20 20 20 20 20 20 2f  tance))..      /
f0f0: 2f 20 6c 6f 6f 70 20 74 68 65 20 6b 65 79 73 20  / loop the keys 
f100: 69 6e 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20  in the function 
f110: 70 72 6f 74 6f 74 79 70 65 20 6f 72 20 74 68 65  prototype or the
f120: 20 61 6c 6c 20 6f 62 6a 65 63 74 20 6b 65 79 73   all object keys
f130: 0a 20 20 20 20 20 20 65 61 63 68 28 70 72 6f 70  .      each(prop
f140: 73 2c 20 66 75 6e 63 74 69 6f 6e 20 28 6b 65 79  s, function (key
f150: 29 20 7b 0a 20 20 20 20 20 20 20 20 2f 2f 20 62  ) {.        // b
f160: 69 6e 64 20 6d 65 74 68 6f 64 73 20 74 6f 20 74  ind methods to t
f170: 61 67 0a 20 20 20 20 20 20 20 20 2f 2f 20 61 6c  ag.        // al
f180: 6c 6f 77 20 6d 69 78 69 6e 73 20 74 6f 20 6f 76  low mixins to ov
f190: 65 72 72 69 64 65 20 6f 74 68 65 72 20 70 72 6f  erride other pro
f1a0: 70 65 72 74 69 65 73 2f 70 61 72 65 6e 74 20 6d  perties/parent m
f1b0: 69 78 69 6e 73 0a 20 20 20 20 20 20 20 20 69 66  ixins.        if
f1c0: 20 28 21 63 6f 6e 74 61 69 6e 73 28 70 72 6f 70   (!contains(prop
f1d0: 73 42 6c 61 63 6b 6c 69 73 74 2c 20 6b 65 79 29  sBlacklist, key)
f1e0: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  ) {.          //
f1f0: 20 63 68 65 63 6b 20 66 6f 72 20 67 65 74 74 65   check for gette
f200: 72 73 2f 73 65 74 74 65 72 73 0a 20 20 20 20 20  rs/setters.     
f210: 20 20 20 20 20 76 61 72 20 64 65 73 63 72 69 70       var descrip
f220: 74 6f 72 20 3d 20 67 65 74 50 72 6f 70 44 65 73  tor = getPropDes
f230: 63 72 69 70 74 6f 72 28 69 6e 73 74 61 6e 63 65  criptor(instance
f240: 2c 20 6b 65 79 29 20 7c 7c 20 67 65 74 50 72 6f  , key) || getPro
f250: 70 44 65 73 63 72 69 70 74 6f 72 28 70 72 6f 74  pDescriptor(prot
f260: 6f 2c 20 6b 65 79 29 3b 0a 20 20 20 20 20 20 20  o, key);.       
f270: 20 20 20 76 61 72 20 68 61 73 47 65 74 74 65 72     var hasGetter
f280: 53 65 74 74 65 72 20 3d 20 64 65 73 63 72 69 70  Setter = descrip
f290: 74 6f 72 20 26 26 20 28 64 65 73 63 72 69 70 74  tor && (descript
f2a0: 6f 72 2e 67 65 74 20 7c 7c 20 64 65 73 63 72 69  or.get || descri
f2b0: 70 74 6f 72 2e 73 65 74 29 3b 0a 0a 20 20 20 20  ptor.set);..    
f2c0: 20 20 20 20 20 20 2f 2f 20 61 70 70 6c 79 20 6d        // apply m
f2d0: 65 74 68 6f 64 20 6f 6e 6c 79 20 69 66 20 69 74  ethod only if it
f2e0: 20 64 6f 65 73 20 6e 6f 74 20 61 6c 72 65 61 64   does not alread
f2f0: 79 20 65 78 69 73 74 20 6f 6e 20 74 68 65 20 69  y exist on the i
f300: 6e 73 74 61 6e 63 65 0a 20 20 20 20 20 20 20 20  nstance.        
f310: 20 20 69 66 20 28 21 74 61 67 24 24 31 2e 68 61    if (!tag$$1.ha
f320: 73 4f 77 6e 50 72 6f 70 65 72 74 79 28 6b 65 79  sOwnProperty(key
f330: 29 20 26 26 20 68 61 73 47 65 74 74 65 72 53 65  ) && hasGetterSe
f340: 74 74 65 72 29 20 7b 0a 20 20 20 20 20 20 20 20  tter) {.        
f350: 20 20 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e      Object.defin
f360: 65 50 72 6f 70 65 72 74 79 28 74 61 67 24 24 31  eProperty(tag$$1
f370: 2c 20 6b 65 79 2c 20 64 65 73 63 72 69 70 74 6f  , key, descripto
f380: 72 29 3b 0a 20 20 20 20 20 20 20 20 20 20 7d 20  r);.          } 
f390: 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20  else {.         
f3a0: 20 20 20 74 61 67 24 24 31 5b 6b 65 79 5d 20 3d     tag$$1[key] =
f3b0: 20 69 73 46 75 6e 63 74 69 6f 6e 28 69 6e 73 74   isFunction(inst
f3c0: 61 6e 63 65 5b 6b 65 79 5d 29 20 3f 0a 20 20 20  ance[key]) ?.   
f3d0: 20 20 20 20 20 20 20 20 20 20 20 69 6e 73 74 61             insta
f3e0: 6e 63 65 5b 6b 65 79 5d 2e 62 69 6e 64 28 74 61  nce[key].bind(ta
f3f0: 67 24 24 31 29 20 3a 0a 20 20 20 20 20 20 20 20  g$$1) :.        
f400: 20 20 20 20 20 20 69 6e 73 74 61 6e 63 65 5b 6b        instance[k
f410: 65 79 5d 3b 0a 20 20 20 20 20 20 20 20 20 20 7d  ey];.          }
f420: 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20  .        }.     
f430: 20 7d 29 3b 0a 0a 20 20 20 20 20 20 2f 2f 20 69   });..      // i
f440: 6e 69 74 20 6d 65 74 68 6f 64 20 77 69 6c 6c 20  nit method will 
f450: 62 65 20 63 61 6c 6c 65 64 20 61 75 74 6f 6d 61  be called automa
f460: 74 69 63 61 6c 6c 79 0a 20 20 20 20 20 20 69 66  tically.      if
f470: 20 28 69 6e 73 74 61 6e 63 65 2e 69 6e 69 74 29   (instance.init)
f480: 0a 20 20 20 20 20 20 20 20 7b 20 69 6e 73 74 61  .        { insta
f490: 6e 63 65 2e 69 6e 69 74 2e 62 69 6e 64 28 74 61  nce.init.bind(ta
f4a0: 67 24 24 31 29 28 74 61 67 24 24 31 2e 6f 70 74  g$$1)(tag$$1.opt
f4b0: 73 29 3b 20 7d 0a 20 20 20 20 7d 29 3b 0a 0a 20  s); }.    });.. 
f4c0: 20 20 20 72 65 74 75 72 6e 20 74 61 67 24 24 31     return tag$$1
f4d0: 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a  .  }..  /**.   *
f4e0: 20 4d 6f 76 65 20 74 68 65 20 70 6f 73 69 74 69   Move the positi
f4f0: 6f 6e 20 6f 66 20 61 20 63 75 73 74 6f 6d 20 74  on of a custom t
f500: 61 67 20 69 6e 20 69 74 73 20 70 61 72 65 6e 74  ag in its parent
f510: 20 74 61 67 0a 20 20 20 2a 20 40 74 68 69 73 20   tag.   * @this 
f520: 54 61 67 0a 20 20 20 2a 20 40 70 61 72 61 6d 20  Tag.   * @param 
f530: 20 20 7b 20 53 74 72 69 6e 67 20 7d 20 74 61 67    { String } tag
f540: 4e 61 6d 65 20 2d 20 6b 65 79 20 77 68 65 72 65  Name - key where
f550: 20 74 68 65 20 74 61 67 20 77 61 73 20 73 74 6f   the tag was sto
f560: 72 65 64 0a 20 20 20 2a 20 40 70 61 72 61 6d 20  red.   * @param 
f570: 20 20 7b 20 4e 75 6d 62 65 72 20 7d 20 6e 65 77    { Number } new
f580: 50 6f 73 20 2d 20 69 6e 64 65 78 20 77 68 65 72  Pos - index wher
f590: 65 20 74 68 65 20 6e 65 77 20 74 61 67 20 77 69  e the new tag wi
f5a0: 6c 6c 20 62 65 20 73 74 6f 72 65 64 0a 20 20 20  ll be stored.   
f5b0: 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 6d 6f  */.  function mo
f5c0: 76 65 43 68 69 6c 64 28 74 61 67 4e 61 6d 65 2c  veChild(tagName,
f5d0: 20 6e 65 77 50 6f 73 29 20 7b 0a 20 20 20 20 76   newPos) {.    v
f5e0: 61 72 20 70 61 72 65 6e 74 20 3d 20 74 68 69 73  ar parent = this
f5f0: 2e 70 61 72 65 6e 74 3b 0a 20 20 20 20 76 61 72  .parent;.    var
f600: 20 74 61 67 73 3b 0a 20 20 20 20 2f 2f 20 6e 6f   tags;.    // no
f610: 20 70 61 72 65 6e 74 20 6e 6f 20 6d 6f 76 65 0a   parent no move.
f620: 20 20 20 20 69 66 20 28 21 70 61 72 65 6e 74 29      if (!parent)
f630: 20 7b 20 72 65 74 75 72 6e 20 7d 0a 0a 20 20 20   { return }..   
f640: 20 74 61 67 73 20 3d 20 70 61 72 65 6e 74 2e 74   tags = parent.t
f650: 61 67 73 5b 74 61 67 4e 61 6d 65 5d 3b 0a 0a 20  ags[tagName];.. 
f660: 20 20 20 69 66 20 28 69 73 41 72 72 61 79 28 74     if (isArray(t
f670: 61 67 73 29 29 0a 20 20 20 20 20 20 7b 20 74 61  ags)).      { ta
f680: 67 73 2e 73 70 6c 69 63 65 28 6e 65 77 50 6f 73  gs.splice(newPos
f690: 2c 20 30 2c 20 74 61 67 73 2e 73 70 6c 69 63 65  , 0, tags.splice
f6a0: 28 74 61 67 73 2e 69 6e 64 65 78 4f 66 28 74 68  (tags.indexOf(th
f6b0: 69 73 29 2c 20 31 29 5b 30 5d 29 3b 20 7d 0a 20  is), 1)[0]); }. 
f6c0: 20 20 20 65 6c 73 65 20 7b 20 61 72 72 61 79 69     else { arrayi
f6d0: 73 68 41 64 64 28 70 61 72 65 6e 74 2e 74 61 67  shAdd(parent.tag
f6e0: 73 2c 20 74 61 67 4e 61 6d 65 2c 20 74 68 69 73  s, tagName, this
f6f0: 29 3b 20 7d 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a  ); }.  }..  /**.
f700: 20 20 20 2a 20 4d 6f 76 65 20 76 69 72 74 75 61     * Move virtua
f710: 6c 20 74 61 67 20 61 6e 64 20 61 6c 6c 20 63 68  l tag and all ch
f720: 69 6c 64 20 6e 6f 64 65 73 0a 20 20 20 2a 20 40  ild nodes.   * @
f730: 74 68 69 73 20 54 61 67 0a 20 20 20 2a 20 40 70  this Tag.   * @p
f740: 61 72 61 6d 20 7b 20 4e 6f 64 65 20 7d 20 73 72  aram { Node } sr
f750: 63 20 20 2d 20 74 68 65 20 6e 6f 64 65 20 74 68  c  - the node th
f760: 61 74 20 77 69 6c 6c 20 64 6f 20 74 68 65 20 69  at will do the i
f770: 6e 73 65 72 74 69 6e 67 0a 20 20 20 2a 20 40 70  nserting.   * @p
f780: 61 72 61 6d 20 7b 20 54 61 67 20 7d 20 74 61 72  aram { Tag } tar
f790: 67 65 74 20 2d 20 69 6e 73 65 72 74 20 62 65 66  get - insert bef
f7a0: 6f 72 65 20 74 68 69 73 20 74 61 67 27 73 20 66  ore this tag's f
f7b0: 69 72 73 74 20 63 68 69 6c 64 0a 20 20 20 2a 2f  irst child.   */
f7c0: 0a 20 20 66 75 6e 63 74 69 6f 6e 20 6d 6f 76 65  .  function move
f7d0: 56 69 72 74 75 61 6c 28 73 72 63 2c 20 74 61 72  Virtual(src, tar
f7e0: 67 65 74 29 20 7b 0a 20 20 20 20 76 61 72 20 74  get) {.    var t
f7f0: 68 69 73 24 31 20 3d 20 74 68 69 73 3b 0a 0a 20  his$1 = this;.. 
f800: 20 20 20 76 61 72 20 65 6c 20 3d 20 74 68 69 73     var el = this
f810: 2e 5f 5f 2e 68 65 61 64 3b 0a 20 20 20 20 76 61  .__.head;.    va
f820: 72 20 73 69 62 3b 0a 20 20 20 20 76 61 72 20 66  r sib;.    var f
f830: 72 61 67 20 3d 20 63 72 65 61 74 65 46 72 61 67  rag = createFrag
f840: 6d 65 6e 74 28 29 3b 0a 0a 20 20 20 20 77 68 69  ment();..    whi
f850: 6c 65 20 28 65 6c 29 20 7b 0a 20 20 20 20 20 20  le (el) {.      
f860: 73 69 62 20 3d 20 65 6c 2e 6e 65 78 74 53 69 62  sib = el.nextSib
f870: 6c 69 6e 67 3b 0a 20 20 20 20 20 20 66 72 61 67  ling;.      frag
f880: 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 65 6c 29  .appendChild(el)
f890: 3b 0a 20 20 20 20 20 20 65 6c 20 3d 20 73 69 62  ;.      el = sib
f8a0: 3b 0a 20 20 20 20 20 20 69 66 20 28 65 6c 20 3d  ;.      if (el =
f8b0: 3d 3d 20 74 68 69 73 24 31 2e 5f 5f 2e 74 61 69  == this$1.__.tai
f8c0: 6c 29 20 7b 0a 20 20 20 20 20 20 20 20 66 72 61  l) {.        fra
f8d0: 67 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 65 6c  g.appendChild(el
f8e0: 29 3b 0a 20 20 20 20 20 20 20 20 73 72 63 2e 69  );.        src.i
f8f0: 6e 73 65 72 74 42 65 66 6f 72 65 28 66 72 61 67  nsertBefore(frag
f900: 2c 20 74 61 72 67 65 74 2e 5f 5f 2e 68 65 61 64  , target.__.head
f910: 29 3b 0a 20 20 20 20 20 20 20 20 62 72 65 61 6b  );.        break
f920: 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20  .      }.    }. 
f930: 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 43   }..  /**.   * C
f940: 6f 6e 76 65 72 74 20 74 68 65 20 69 74 65 6d 20  onvert the item 
f950: 6c 6f 6f 70 65 64 20 69 6e 74 6f 20 61 6e 20 6f  looped into an o
f960: 62 6a 65 63 74 20 75 73 65 64 20 74 6f 20 65 78  bject used to ex
f970: 74 65 6e 64 20 74 68 65 20 63 68 69 6c 64 20 74  tend the child t
f980: 61 67 20 70 72 6f 70 65 72 74 69 65 73 0a 20 20  ag properties.  
f990: 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 4f 62   * @param   { Ob
f9a0: 6a 65 63 74 20 7d 20 65 78 70 72 20 2d 20 6f 62  ject } expr - ob
f9b0: 6a 65 63 74 20 63 6f 6e 74 61 69 6e 69 6e 67 20  ject containing 
f9c0: 74 68 65 20 6b 65 79 73 20 75 73 65 64 20 74 6f  the keys used to
f9d0: 20 65 78 74 65 6e 64 20 74 68 65 20 63 68 69 6c   extend the chil
f9e0: 64 72 65 6e 20 74 61 67 73 0a 20 20 20 2a 20 40  dren tags.   * @
f9f0: 70 61 72 61 6d 20 20 20 7b 20 2a 20 7d 20 6b 65  param   { * } ke
fa00: 79 20 2d 20 76 61 6c 75 65 20 74 6f 20 61 73 73  y - value to ass
fa10: 69 67 6e 20 74 6f 20 74 68 65 20 6e 65 77 20 6f  ign to the new o
fa20: 62 6a 65 63 74 20 72 65 74 75 72 6e 65 64 0a 20  bject returned. 
fa30: 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 2a    * @param   { *
fa40: 20 7d 20 76 61 6c 20 2d 20 76 61 6c 75 65 20 63   } val - value c
fa50: 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 70 6f  ontaining the po
fa60: 73 69 74 69 6f 6e 20 6f 66 20 74 68 65 20 69 74  sition of the it
fa70: 65 6d 20 69 6e 20 74 68 65 20 61 72 72 61 79 0a  em in the array.
fa80: 20 20 20 2a 20 40 72 65 74 75 72 6e 73 20 7b 20     * @returns { 
fa90: 4f 62 6a 65 63 74 20 7d 20 2d 20 6e 65 77 20 6f  Object } - new o
faa0: 62 6a 65 63 74 20 63 6f 6e 74 61 69 6e 69 6e 67  bject containing
fab0: 20 74 68 65 20 76 61 6c 75 65 73 20 6f 66 20 74   the values of t
fac0: 68 65 20 6f 72 69 67 69 6e 61 6c 20 69 74 65 6d  he original item
fad0: 0a 20 20 20 2a 0a 20 20 20 2a 20 54 68 65 20 76  .   *.   * The v
fae0: 61 72 69 61 62 6c 65 73 20 27 6b 65 79 27 20 61  ariables 'key' a
faf0: 6e 64 20 27 76 61 6c 27 20 61 72 65 20 61 72 62  nd 'val' are arb
fb00: 69 74 72 61 72 79 2e 0a 20 20 20 2a 20 54 68 65  itrary..   * The
fb10: 79 20 64 65 70 65 6e 64 20 6f 6e 20 74 68 65 20  y depend on the 
fb20: 63 6f 6c 6c 65 63 74 69 6f 6e 20 74 79 70 65 20  collection type 
fb30: 6c 6f 6f 70 65 64 20 28 41 72 72 61 79 2c 20 4f  looped (Array, O
fb40: 62 6a 65 63 74 29 0a 20 20 20 2a 20 61 6e 64 20  bject).   * and 
fb50: 6f 6e 20 74 68 65 20 65 78 70 72 65 73 73 69 6f  on the expressio
fb60: 6e 20 75 73 65 64 20 6f 6e 20 74 68 65 20 65 61  n used on the ea
fb70: 63 68 20 74 61 67 0a 20 20 20 2a 0a 20 20 20 2a  ch tag.   *.   *
fb80: 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 6d 6b 69  /.  function mki
fb90: 74 65 6d 28 65 78 70 72 2c 20 6b 65 79 2c 20 76  tem(expr, key, v
fba0: 61 6c 29 20 7b 0a 20 20 20 20 76 61 72 20 69 74  al) {.    var it
fbb0: 65 6d 20 3d 20 7b 7d 3b 0a 20 20 20 20 69 74 65  em = {};.    ite
fbc0: 6d 5b 65 78 70 72 2e 6b 65 79 5d 20 3d 20 6b 65  m[expr.key] = ke
fbd0: 79 3b 0a 20 20 20 20 69 66 20 28 65 78 70 72 2e  y;.    if (expr.
fbe0: 70 6f 73 29 20 7b 20 69 74 65 6d 5b 65 78 70 72  pos) { item[expr
fbf0: 2e 70 6f 73 5d 20 3d 20 76 61 6c 3b 20 7d 0a 20  .pos] = val; }. 
fc00: 20 20 20 72 65 74 75 72 6e 20 69 74 65 6d 0a 20     return item. 
fc10: 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 55   }..  /**.   * U
fc20: 6e 6d 6f 75 6e 74 20 74 68 65 20 72 65 64 75 6e  nmount the redun
fc30: 64 61 6e 74 20 74 61 67 73 0a 20 20 20 2a 20 40  dant tags.   * @
fc40: 70 61 72 61 6d 20 20 20 7b 20 41 72 72 61 79 20  param   { Array 
fc50: 7d 20 69 74 65 6d 73 20 2d 20 61 72 72 61 79 20  } items - array 
fc60: 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 63  containing the c
fc70: 75 72 72 65 6e 74 20 69 74 65 6d 73 20 74 6f 20  urrent items to 
fc80: 6c 6f 6f 70 0a 20 20 20 2a 20 40 70 61 72 61 6d  loop.   * @param
fc90: 20 20 20 7b 20 41 72 72 61 79 20 7d 20 74 61 67     { Array } tag
fca0: 73 20 2d 20 61 72 72 61 79 20 63 6f 6e 74 61 69  s - array contai
fcb0: 6e 69 6e 67 20 61 6c 6c 20 74 68 65 20 63 68 69  ning all the chi
fcc0: 6c 64 72 65 6e 20 74 61 67 73 0a 20 20 20 2a 2f  ldren tags.   */
fcd0: 0a 20 20 66 75 6e 63 74 69 6f 6e 20 75 6e 6d 6f  .  function unmo
fce0: 75 6e 74 52 65 64 75 6e 64 61 6e 74 28 69 74 65  untRedundant(ite
fcf0: 6d 73 2c 20 74 61 67 73 2c 20 66 69 6c 74 65 72  ms, tags, filter
fd00: 65 64 49 74 65 6d 73 43 6f 75 6e 74 29 20 7b 0a  edItemsCount) {.
fd10: 20 20 20 20 76 61 72 20 69 20 3d 20 74 61 67 73      var i = tags
fd20: 2e 6c 65 6e 67 74 68 3b 0a 20 20 20 20 76 61 72  .length;.    var
fd30: 20 6a 20 3d 20 69 74 65 6d 73 2e 6c 65 6e 67 74   j = items.lengt
fd40: 68 20 2d 20 66 69 6c 74 65 72 65 64 49 74 65 6d  h - filteredItem
fd50: 73 43 6f 75 6e 74 3b 0a 0a 20 20 20 20 77 68 69  sCount;..    whi
fd60: 6c 65 20 28 69 20 3e 20 6a 29 20 7b 0a 20 20 20  le (i > j) {.   
fd70: 20 20 20 69 2d 2d 3b 0a 20 20 20 20 20 20 72 65     i--;.      re
fd80: 6d 6f 76 65 2e 61 70 70 6c 79 28 74 61 67 73 5b  move.apply(tags[
fd90: 69 5d 2c 20 5b 74 61 67 73 2c 20 69 5d 29 3b 0a  i], [tags, i]);.
fda0: 20 20 20 20 7d 0a 20 20 7d 0a 0a 0a 20 20 2f 2a      }.  }...  /*
fdb0: 2a 0a 20 20 20 2a 20 52 65 6d 6f 76 65 20 61 20  *.   * Remove a 
fdc0: 63 68 69 6c 64 20 74 61 67 0a 20 20 20 2a 20 40  child tag.   * @
fdd0: 74 68 69 73 20 54 61 67 0a 20 20 20 2a 20 40 70  this Tag.   * @p
fde0: 61 72 61 6d 20 20 20 7b 20 41 72 72 61 79 20 7d  aram   { Array }
fdf0: 20 74 61 67 73 20 2d 20 74 61 67 73 20 63 6f 6c   tags - tags col
fe00: 6c 65 63 74 69 6f 6e 0a 20 20 20 2a 20 40 70 61  lection.   * @pa
fe10: 72 61 6d 20 20 20 7b 20 4e 75 6d 62 65 72 20 7d  ram   { Number }
fe20: 20 69 20 2d 20 69 6e 64 65 78 20 6f 66 20 74 68   i - index of th
fe30: 65 20 74 61 67 20 74 6f 20 72 65 6d 6f 76 65 0a  e tag to remove.
fe40: 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e     */.  function
fe50: 20 72 65 6d 6f 76 65 28 74 61 67 73 2c 20 69 29   remove(tags, i)
fe60: 20 7b 0a 20 20 20 20 74 61 67 73 2e 73 70 6c 69   {.    tags.spli
fe70: 63 65 28 69 2c 20 31 29 3b 0a 20 20 20 20 74 68  ce(i, 1);.    th
fe80: 69 73 2e 75 6e 6d 6f 75 6e 74 28 29 3b 0a 20 20  is.unmount();.  
fe90: 20 20 61 72 72 61 79 69 73 68 52 65 6d 6f 76 65    arrayishRemove
fea0: 28 74 68 69 73 2e 70 61 72 65 6e 74 2c 20 74 68  (this.parent, th
feb0: 69 73 2c 20 74 68 69 73 2e 5f 5f 2e 74 61 67 4e  is, this.__.tagN
fec0: 61 6d 65 2c 20 74 72 75 65 29 3b 0a 20 20 7d 0a  ame, true);.  }.
fed0: 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 4d 6f 76 65  .  /**.   * Move
fee0: 20 74 68 65 20 6e 65 73 74 65 64 20 63 75 73 74   the nested cust
fef0: 6f 6d 20 74 61 67 73 20 69 6e 20 6e 6f 6e 20 63  om tags in non c
ff00: 75 73 74 6f 6d 20 6c 6f 6f 70 20 74 61 67 73 0a  ustom loop tags.
ff10: 20 20 20 2a 20 40 74 68 69 73 20 54 61 67 0a 20     * @this Tag. 
ff20: 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 4e    * @param   { N
ff30: 75 6d 62 65 72 20 7d 20 69 20 2d 20 63 75 72 72  umber } i - curr
ff40: 65 6e 74 20 70 6f 73 69 74 69 6f 6e 20 6f 66 20  ent position of 
ff50: 74 68 65 20 6c 6f 6f 70 20 74 61 67 0a 20 20 20  the loop tag.   
ff60: 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 6d 6f  */.  function mo
ff70: 76 65 4e 65 73 74 65 64 54 61 67 73 28 69 29 20  veNestedTags(i) 
ff80: 7b 0a 20 20 20 20 76 61 72 20 74 68 69 73 24 31  {.    var this$1
ff90: 20 3d 20 74 68 69 73 3b 0a 0a 20 20 20 20 65 61   = this;..    ea
ffa0: 63 68 28 4f 62 6a 65 63 74 2e 6b 65 79 73 28 74  ch(Object.keys(t
ffb0: 68 69 73 2e 74 61 67 73 29 2c 20 66 75 6e 63 74  his.tags), funct
ffc0: 69 6f 6e 20 28 74 61 67 4e 61 6d 65 29 20 7b 0a  ion (tagName) {.
ffd0: 20 20 20 20 20 20 6d 6f 76 65 43 68 69 6c 64 2e        moveChild.
ffe0: 61 70 70 6c 79 28 74 68 69 73 24 31 2e 74 61 67  apply(this$1.tag
fff0: 73 5b 74 61 67 4e 61 6d 65 5d 2c 20 5b 74 61 67  s[tagName], [tag
10000 4e 61 6d 65 2c 20 69 5d 29 3b 0a 20 20 20 20 7d  Name, i]);.    }
10010 29 3b 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20  );.  }..  /**.  
10020 20 2a 20 4d 6f 76 65 20 61 20 63 68 69 6c 64 20   * Move a child 
10030 74 61 67 0a 20 20 20 2a 20 40 74 68 69 73 20 54  tag.   * @this T
10040 61 67 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20  ag.   * @param  
10050 20 7b 20 48 54 4d 4c 45 6c 65 6d 65 6e 74 20 7d   { HTMLElement }
10060 20 72 6f 6f 74 20 2d 20 64 6f 6d 20 6e 6f 64 65   root - dom node
10070 20 63 6f 6e 74 61 69 6e 69 6e 67 20 61 6c 6c 20   containing all 
10080 74 68 65 20 6c 6f 6f 70 20 63 68 69 6c 64 72 65  the loop childre
10090 6e 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20  n.   * @param   
100a0 7b 20 54 61 67 20 7d 20 6e 65 78 74 54 61 67 20  { Tag } nextTag 
100b0 2d 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68  - instance of th
100c0 65 20 6e 65 78 74 20 74 61 67 20 70 72 65 63 65  e next tag prece
100d0 64 69 6e 67 20 74 68 65 20 6f 6e 65 20 77 65 20  ding the one we 
100e0 77 61 6e 74 20 74 6f 20 6d 6f 76 65 0a 20 20 20  want to move.   
100f0 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 42 6f 6f  * @param   { Boo
10100 6c 65 61 6e 20 7d 20 69 73 56 69 72 74 75 61 6c  lean } isVirtual
10110 20 2d 20 69 73 20 69 74 20 61 20 76 69 72 74 75   - is it a virtu
10120 61 6c 20 74 61 67 3f 0a 20 20 20 2a 2f 0a 20 20  al tag?.   */.  
10130 66 75 6e 63 74 69 6f 6e 20 6d 6f 76 65 28 72 6f  function move(ro
10140 6f 74 2c 20 6e 65 78 74 54 61 67 2c 20 69 73 56  ot, nextTag, isV
10150 69 72 74 75 61 6c 29 20 7b 0a 20 20 20 20 69 66  irtual) {.    if
10160 20 28 69 73 56 69 72 74 75 61 6c 29 0a 20 20 20   (isVirtual).   
10170 20 20 20 7b 20 6d 6f 76 65 56 69 72 74 75 61 6c     { moveVirtual
10180 2e 61 70 70 6c 79 28 74 68 69 73 2c 20 5b 72 6f  .apply(this, [ro
10190 6f 74 2c 20 6e 65 78 74 54 61 67 5d 29 3b 20 7d  ot, nextTag]); }
101a0 0a 20 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20  .    else.      
101b0 7b 20 73 61 66 65 49 6e 73 65 72 74 28 72 6f 6f  { safeInsert(roo
101c0 74 2c 20 74 68 69 73 2e 72 6f 6f 74 2c 20 6e 65  t, this.root, ne
101d0 78 74 54 61 67 2e 72 6f 6f 74 29 3b 20 7d 0a 20  xtTag.root); }. 
101e0 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 49   }..  /**.   * I
101f0 6e 73 65 72 74 20 61 6e 64 20 6d 6f 75 6e 74 20  nsert and mount 
10200 61 20 63 68 69 6c 64 20 74 61 67 0a 20 20 20 2a  a child tag.   *
10210 20 40 74 68 69 73 20 54 61 67 0a 20 20 20 2a 20   @this Tag.   * 
10220 40 70 61 72 61 6d 20 20 20 7b 20 48 54 4d 4c 45  @param   { HTMLE
10230 6c 65 6d 65 6e 74 20 7d 20 72 6f 6f 74 20 2d 20  lement } root - 
10240 64 6f 6d 20 6e 6f 64 65 20 63 6f 6e 74 61 69 6e  dom node contain
10250 69 6e 67 20 61 6c 6c 20 74 68 65 20 6c 6f 6f 70  ing all the loop
10260 20 63 68 69 6c 64 72 65 6e 0a 20 20 20 2a 20 40   children.   * @
10270 70 61 72 61 6d 20 20 20 7b 20 54 61 67 20 7d 20  param   { Tag } 
10280 6e 65 78 74 54 61 67 20 2d 20 69 6e 73 74 61 6e  nextTag - instan
10290 63 65 20 6f 66 20 74 68 65 20 6e 65 78 74 20 74  ce of the next t
102a0 61 67 20 70 72 65 63 65 64 69 6e 67 20 74 68 65  ag preceding the
102b0 20 6f 6e 65 20 77 65 20 77 61 6e 74 20 74 6f 20   one we want to 
102c0 69 6e 73 65 72 74 0a 20 20 20 2a 20 40 70 61 72  insert.   * @par
102d0 61 6d 20 20 20 7b 20 42 6f 6f 6c 65 61 6e 20 7d  am   { Boolean }
102e0 20 69 73 56 69 72 74 75 61 6c 20 2d 20 69 73 20   isVirtual - is 
102f0 69 74 20 61 20 76 69 72 74 75 61 6c 20 74 61 67  it a virtual tag
10300 3f 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69  ?.   */.  functi
10310 6f 6e 20 69 6e 73 65 72 74 28 72 6f 6f 74 2c 20  on insert(root, 
10320 6e 65 78 74 54 61 67 2c 20 69 73 56 69 72 74 75  nextTag, isVirtu
10330 61 6c 29 20 7b 0a 20 20 20 20 69 66 20 28 69 73  al) {.    if (is
10340 56 69 72 74 75 61 6c 29 0a 20 20 20 20 20 20 7b  Virtual).      {
10350 20 6d 61 6b 65 56 69 72 74 75 61 6c 2e 61 70 70   makeVirtual.app
10360 6c 79 28 74 68 69 73 2c 20 5b 72 6f 6f 74 2c 20  ly(this, [root, 
10370 6e 65 78 74 54 61 67 5d 29 3b 20 7d 0a 20 20 20  nextTag]); }.   
10380 20 65 6c 73 65 0a 20 20 20 20 20 20 7b 20 73 61   else.      { sa
10390 66 65 49 6e 73 65 72 74 28 72 6f 6f 74 2c 20 74  feInsert(root, t
103a0 68 69 73 2e 72 6f 6f 74 2c 20 6e 65 78 74 54 61  his.root, nextTa
103b0 67 2e 72 6f 6f 74 29 3b 20 7d 0a 20 20 7d 0a 0a  g.root); }.  }..
103c0 20 20 2f 2a 2a 0a 20 20 20 2a 20 41 70 70 65 6e    /**.   * Appen
103d0 64 20 61 20 6e 65 77 20 74 61 67 20 69 6e 74 6f  d a new tag into
103e0 20 74 68 65 20 44 4f 4d 0a 20 20 20 2a 20 40 74   the DOM.   * @t
103f0 68 69 73 20 54 61 67 0a 20 20 20 2a 20 40 70 61  his Tag.   * @pa
10400 72 61 6d 20 20 20 7b 20 48 54 4d 4c 45 6c 65 6d  ram   { HTMLElem
10410 65 6e 74 20 7d 20 72 6f 6f 74 20 2d 20 64 6f 6d  ent } root - dom
10420 20 6e 6f 64 65 20 63 6f 6e 74 61 69 6e 69 6e 67   node containing
10430 20 61 6c 6c 20 74 68 65 20 6c 6f 6f 70 20 63 68   all the loop ch
10440 69 6c 64 72 65 6e 0a 20 20 20 2a 20 40 70 61 72  ildren.   * @par
10450 61 6d 20 20 20 7b 20 42 6f 6f 6c 65 61 6e 20 7d  am   { Boolean }
10460 20 69 73 56 69 72 74 75 61 6c 20 2d 20 69 73 20   isVirtual - is 
10470 69 74 20 61 20 76 69 72 74 75 61 6c 20 74 61 67  it a virtual tag
10480 3f 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69  ?.   */.  functi
10490 6f 6e 20 61 70 70 65 6e 64 28 72 6f 6f 74 2c 20  on append(root, 
104a0 69 73 56 69 72 74 75 61 6c 29 20 7b 0a 20 20 20  isVirtual) {.   
104b0 20 69 66 20 28 69 73 56 69 72 74 75 61 6c 29 0a   if (isVirtual).
104c0 20 20 20 20 20 20 7b 20 6d 61 6b 65 56 69 72 74        { makeVirt
104d0 75 61 6c 2e 63 61 6c 6c 28 74 68 69 73 2c 20 72  ual.call(this, r
104e0 6f 6f 74 29 3b 20 7d 0a 20 20 20 20 65 6c 73 65  oot); }.    else
104f0 0a 20 20 20 20 20 20 7b 20 72 6f 6f 74 2e 61 70  .      { root.ap
10500 70 65 6e 64 43 68 69 6c 64 28 74 68 69 73 2e 72  pendChild(this.r
10510 6f 6f 74 29 3b 20 7d 0a 20 20 7d 0a 0a 20 20 2f  oot); }.  }..  /
10520 2a 2a 0a 20 20 20 2a 20 52 65 74 75 72 6e 20 74  **.   * Return t
10530 68 65 20 76 61 6c 75 65 20 77 65 20 77 61 6e 74  he value we want
10540 20 74 6f 20 75 73 65 20 74 6f 20 6c 6f 6f 6b 75   to use to looku
10550 70 20 74 68 65 20 70 6f 73 74 69 6f 6e 20 6f 66  p the postion of
10560 20 6f 75 72 20 69 74 65 6d 73 20 69 6e 20 74 68   our items in th
10570 65 20 63 6f 6c 6c 65 63 74 69 6f 6e 0a 20 20 20  e collection.   
10580 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 53 74 72  * @param   { Str
10590 69 6e 67 20 7d 20 20 6b 65 79 41 74 74 72 20 20  ing }  keyAttr  
105a0 20 20 20 20 20 20 20 2d 20 6c 6f 6f 6b 75 70 20         - lookup 
105b0 73 74 72 69 6e 67 20 6f 72 20 65 78 70 72 65 73  string or expres
105c0 73 69 6f 6e 0a 20 20 20 2a 20 40 70 61 72 61 6d  sion.   * @param
105d0 20 20 20 7b 20 2a 20 7d 20 20 20 20 20 20 20 6f     { * }       o
105e0 72 69 67 69 6e 61 6c 49 74 65 6d 20 20 20 20 2d  riginalItem    -
105f0 20 6f 72 69 67 69 6e 61 6c 20 69 74 65 6d 20 66   original item f
10600 72 6f 6d 20 74 68 65 20 63 6f 6c 6c 65 63 74 69  rom the collecti
10610 6f 6e 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20  on.   * @param  
10620 20 7b 20 4f 62 6a 65 63 74 20 7d 20 20 6b 65 79   { Object }  key
10630 65 64 49 74 65 6d 20 20 20 20 20 20 20 2d 20 6f  edItem       - o
10640 62 6a 65 63 74 20 63 72 65 61 74 65 64 20 62 79  bject created by
10650 20 72 69 6f 74 20 76 69 61 20 7b 20 69 74 65 6d   riot via { item
10660 2c 20 69 20 69 6e 20 63 6f 6c 6c 65 63 74 69 6f  , i in collectio
10670 6e 20 7d 0a 20 20 20 2a 20 40 70 61 72 61 6d 20  n }.   * @param 
10680 20 20 7b 20 42 6f 6f 6c 65 61 6e 20 7d 20 68 61    { Boolean } ha
10690 73 4b 65 79 41 74 74 72 45 78 70 72 20 20 2d 20  sKeyAttrExpr  - 
106a0 66 6c 61 67 20 74 6f 20 63 68 65 63 6b 20 77 68  flag to check wh
106b0 65 74 68 65 72 20 74 68 65 20 6b 65 79 20 69 73  ether the key is
106c0 20 61 6e 20 65 78 70 72 65 73 73 69 6f 6e 0a 20   an expression. 
106d0 20 20 2a 20 40 72 65 74 75 72 6e 73 20 7b 20 2a    * @returns { *
106e0 20 7d 20 76 61 6c 75 65 20 74 68 61 74 20 77 65   } value that we
106f0 20 77 69 6c 6c 20 75 73 65 20 74 6f 20 66 69 67   will use to fig
10700 75 72 65 20 6f 75 74 20 74 68 65 20 69 74 65 6d  ure out the item
10710 20 70 6f 73 69 74 69 6f 6e 20 76 69 61 20 63 6f   position via co
10720 6c 6c 65 63 74 69 6f 6e 2e 69 6e 64 65 78 4f 66  llection.indexOf
10730 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f  .   */.  functio
10740 6e 20 67 65 74 49 74 65 6d 49 64 28 6b 65 79 41  n getItemId(keyA
10750 74 74 72 2c 20 6f 72 69 67 69 6e 61 6c 49 74 65  ttr, originalIte
10760 6d 2c 20 6b 65 79 65 64 49 74 65 6d 2c 20 68 61  m, keyedItem, ha
10770 73 4b 65 79 41 74 74 72 45 78 70 72 29 20 7b 0a  sKeyAttrExpr) {.
10780 20 20 20 20 69 66 20 28 6b 65 79 41 74 74 72 29      if (keyAttr)
10790 20 7b 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20   {.      return 
107a0 68 61 73 4b 65 79 41 74 74 72 45 78 70 72 20 3f  hasKeyAttrExpr ?
107b0 20 20 74 6d 70 6c 28 6b 65 79 41 74 74 72 2c 20    tmpl(keyAttr, 
107c0 6b 65 79 65 64 49 74 65 6d 29 20 3a 20 20 6f 72  keyedItem) :  or
107d0 69 67 69 6e 61 6c 49 74 65 6d 5b 6b 65 79 41 74  iginalItem[keyAt
107e0 74 72 5d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 72  tr].    }..    r
107f0 65 74 75 72 6e 20 6f 72 69 67 69 6e 61 6c 49 74  eturn originalIt
10800 65 6d 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20  em.  }..  /**.  
10810 20 2a 20 4d 61 6e 61 67 65 20 74 61 67 73 20 68   * Manage tags h
10820 61 76 69 6e 67 20 74 68 65 20 27 65 61 63 68 27  aving the 'each'
10830 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b  .   * @param   {
10840 20 48 54 4d 4c 45 6c 65 6d 65 6e 74 20 7d 20 64   HTMLElement } d
10850 6f 6d 20 2d 20 44 4f 4d 20 6e 6f 64 65 20 77 65  om - DOM node we
10860 20 6e 65 65 64 20 74 6f 20 6c 6f 6f 70 0a 20 20   need to loop.  
10870 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 54 61   * @param   { Ta
10880 67 20 7d 20 70 61 72 65 6e 74 20 2d 20 70 61 72  g } parent - par
10890 65 6e 74 20 74 61 67 20 69 6e 73 74 61 6e 63 65  ent tag instance
108a0 20 77 68 65 72 65 20 74 68 65 20 64 6f 6d 20 6e   where the dom n
108b0 6f 64 65 20 69 73 20 63 6f 6e 74 61 69 6e 65 64  ode is contained
108c0 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b  .   * @param   {
108d0 20 53 74 72 69 6e 67 20 7d 20 65 78 70 72 20 2d   String } expr -
108e0 20 73 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e 65   string containe
108f0 64 20 69 6e 20 74 68 65 20 27 65 61 63 68 27 20  d in the 'each' 
10900 61 74 74 72 69 62 75 74 65 0a 20 20 20 2a 20 40  attribute.   * @
10910 72 65 74 75 72 6e 73 20 7b 20 4f 62 6a 65 63 74  returns { Object
10920 20 7d 20 65 78 70 72 65 73 73 69 6f 6e 20 6f 62   } expression ob
10930 6a 65 63 74 20 66 6f 72 20 74 68 69 73 20 65 61  ject for this ea
10940 63 68 20 6c 6f 6f 70 0a 20 20 20 2a 2f 0a 20 20  ch loop.   */.  
10950 66 75 6e 63 74 69 6f 6e 20 5f 65 61 63 68 28 64  function _each(d
10960 6f 6d 2c 20 70 61 72 65 6e 74 2c 20 65 78 70 72  om, parent, expr
10970 29 20 7b 0a 20 20 20 20 76 61 72 20 6d 75 73 74  ) {.    var must
10980 52 65 6f 72 64 65 72 20 3d 20 74 79 70 65 6f 66  Reorder = typeof
10990 20 67 65 74 41 74 74 72 69 62 75 74 65 28 64 6f   getAttribute(do
109a0 6d 2c 20 4c 4f 4f 50 5f 4e 4f 5f 52 45 4f 52 44  m, LOOP_NO_REORD
109b0 45 52 5f 44 49 52 45 43 54 49 56 45 29 20 21 3d  ER_DIRECTIVE) !=
109c0 3d 20 54 5f 53 54 52 49 4e 47 20 7c 7c 20 72 65  = T_STRING || re
109d0 6d 6f 76 65 41 74 74 72 69 62 75 74 65 28 64 6f  moveAttribute(do
109e0 6d 2c 20 4c 4f 4f 50 5f 4e 4f 5f 52 45 4f 52 44  m, LOOP_NO_REORD
109f0 45 52 5f 44 49 52 45 43 54 49 56 45 29 3b 0a 20  ER_DIRECTIVE);. 
10a00 20 20 20 76 61 72 20 6b 65 79 41 74 74 72 20 3d     var keyAttr =
10a10 20 67 65 74 41 74 74 72 69 62 75 74 65 28 64 6f   getAttribute(do
10a20 6d 2c 20 4b 45 59 5f 44 49 52 45 43 54 49 56 45  m, KEY_DIRECTIVE
10a30 29 3b 0a 20 20 20 20 76 61 72 20 68 61 73 4b 65  );.    var hasKe
10a40 79 41 74 74 72 45 78 70 72 20 3d 20 6b 65 79 41  yAttrExpr = keyA
10a50 74 74 72 20 3f 20 74 6d 70 6c 2e 68 61 73 45 78  ttr ? tmpl.hasEx
10a60 70 72 28 6b 65 79 41 74 74 72 29 20 3a 20 66 61  pr(keyAttr) : fa
10a70 6c 73 65 3b 0a 20 20 20 20 76 61 72 20 74 61 67  lse;.    var tag
10a80 4e 61 6d 65 20 3d 20 67 65 74 4e 61 6d 65 28 64  Name = getName(d
10a90 6f 6d 29 3b 0a 20 20 20 20 76 61 72 20 69 6d 70  om);.    var imp
10aa0 6c 20 3d 20 5f 5f 54 41 47 5f 49 4d 50 4c 5b 74  l = __TAG_IMPL[t
10ab0 61 67 4e 61 6d 65 5d 3b 0a 20 20 20 20 76 61 72  agName];.    var
10ac0 20 70 61 72 65 6e 74 4e 6f 64 65 20 3d 20 64 6f   parentNode = do
10ad0 6d 2e 70 61 72 65 6e 74 4e 6f 64 65 3b 0a 20 20  m.parentNode;.  
10ae0 20 20 76 61 72 20 70 6c 61 63 65 68 6f 6c 64 65    var placeholde
10af0 72 20 3d 20 63 72 65 61 74 65 44 4f 4d 50 6c 61  r = createDOMPla
10b00 63 65 68 6f 6c 64 65 72 28 29 3b 0a 20 20 20 20  ceholder();.    
10b10 76 61 72 20 63 68 69 6c 64 20 3d 20 67 65 74 28  var child = get(
10b20 64 6f 6d 29 3b 0a 20 20 20 20 76 61 72 20 69 66  dom);.    var if
10b30 45 78 70 72 20 3d 20 67 65 74 41 74 74 72 69 62  Expr = getAttrib
10b40 75 74 65 28 64 6f 6d 2c 20 43 4f 4e 44 49 54 49  ute(dom, CONDITI
10b50 4f 4e 41 4c 5f 44 49 52 45 43 54 49 56 45 29 3b  ONAL_DIRECTIVE);
10b60 0a 20 20 20 20 76 61 72 20 74 61 67 73 20 3d 20  .    var tags = 
10b70 5b 5d 3b 0a 20 20 20 20 76 61 72 20 69 73 4c 6f  [];.    var isLo
10b80 6f 70 20 3d 20 74 72 75 65 3b 0a 20 20 20 20 76  op = true;.    v
10b90 61 72 20 69 6e 6e 65 72 48 54 4d 4c 20 3d 20 64  ar innerHTML = d
10ba0 6f 6d 2e 69 6e 6e 65 72 48 54 4d 4c 3b 0a 20 20  om.innerHTML;.  
10bb0 20 20 76 61 72 20 69 73 41 6e 6f 6e 79 6d 6f 75    var isAnonymou
10bc0 73 20 3d 20 21 5f 5f 54 41 47 5f 49 4d 50 4c 5b  s = !__TAG_IMPL[
10bd0 74 61 67 4e 61 6d 65 5d 3b 0a 20 20 20 20 76 61  tagName];.    va
10be0 72 20 69 73 56 69 72 74 75 61 6c 20 3d 20 64 6f  r isVirtual = do
10bf0 6d 2e 74 61 67 4e 61 6d 65 20 3d 3d 3d 20 27 56  m.tagName === 'V
10c00 49 52 54 55 41 4c 27 3b 0a 20 20 20 20 76 61 72  IRTUAL';.    var
10c10 20 6f 6c 64 49 74 65 6d 73 20 3d 20 5b 5d 3b 0a   oldItems = [];.
10c20 0a 20 20 20 20 2f 2f 20 72 65 6d 6f 76 65 20 74  .    // remove t
10c30 68 65 20 65 61 63 68 20 70 72 6f 70 65 72 74 79  he each property
10c40 20 66 72 6f 6d 20 74 68 65 20 6f 72 69 67 69 6e   from the origin
10c50 61 6c 20 74 61 67 0a 20 20 20 20 72 65 6d 6f 76  al tag.    remov
10c60 65 41 74 74 72 69 62 75 74 65 28 64 6f 6d 2c 20  eAttribute(dom, 
10c70 4c 4f 4f 50 5f 44 49 52 45 43 54 49 56 45 29 3b  LOOP_DIRECTIVE);
10c80 0a 20 20 20 20 72 65 6d 6f 76 65 41 74 74 72 69  .    removeAttri
10c90 62 75 74 65 28 64 6f 6d 2c 20 4b 45 59 5f 44 49  bute(dom, KEY_DI
10ca0 52 45 43 54 49 56 45 29 3b 0a 0a 20 20 20 20 2f  RECTIVE);..    /
10cb0 2f 20 70 61 72 73 65 20 74 68 65 20 65 61 63 68  / parse the each
10cc0 20 65 78 70 72 65 73 73 69 6f 6e 0a 20 20 20 20   expression.    
10cd0 65 78 70 72 20 3d 20 74 6d 70 6c 2e 6c 6f 6f 70  expr = tmpl.loop
10ce0 4b 65 79 73 28 65 78 70 72 29 3b 0a 20 20 20 20  Keys(expr);.    
10cf0 65 78 70 72 2e 69 73 4c 6f 6f 70 20 3d 20 74 72  expr.isLoop = tr
10d00 75 65 3b 0a 0a 20 20 20 20 69 66 20 28 69 66 45  ue;..    if (ifE
10d10 78 70 72 29 20 7b 20 72 65 6d 6f 76 65 41 74 74  xpr) { removeAtt
10d20 72 69 62 75 74 65 28 64 6f 6d 2c 20 43 4f 4e 44  ribute(dom, COND
10d30 49 54 49 4f 4e 41 4c 5f 44 49 52 45 43 54 49 56  ITIONAL_DIRECTIV
10d40 45 29 3b 20 7d 0a 0a 20 20 20 20 2f 2f 20 69 6e  E); }..    // in
10d50 73 65 72 74 20 61 20 6d 61 72 6b 65 64 20 77 68  sert a marked wh
10d60 65 72 65 20 74 68 65 20 6c 6f 6f 70 20 74 61 67  ere the loop tag
10d70 73 20 77 69 6c 6c 20 62 65 20 69 6e 6a 65 63 74  s will be inject
10d80 65 64 0a 20 20 20 20 70 61 72 65 6e 74 4e 6f 64  ed.    parentNod
10d90 65 2e 69 6e 73 65 72 74 42 65 66 6f 72 65 28 70  e.insertBefore(p
10da0 6c 61 63 65 68 6f 6c 64 65 72 2c 20 64 6f 6d 29  laceholder, dom)
10db0 3b 0a 20 20 20 20 70 61 72 65 6e 74 4e 6f 64 65  ;.    parentNode
10dc0 2e 72 65 6d 6f 76 65 43 68 69 6c 64 28 64 6f 6d  .removeChild(dom
10dd0 29 3b 0a 0a 20 20 20 20 65 78 70 72 2e 75 70 64  );..    expr.upd
10de0 61 74 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 75  ate = function u
10df0 70 64 61 74 65 45 61 63 68 28 29 20 7b 0a 20 20  pdateEach() {.  
10e00 20 20 20 20 2f 2f 20 67 65 74 20 74 68 65 20 6e      // get the n
10e10 65 77 20 69 74 65 6d 73 20 63 6f 6c 6c 65 63 74  ew items collect
10e20 69 6f 6e 0a 20 20 20 20 20 20 65 78 70 72 2e 76  ion.      expr.v
10e30 61 6c 75 65 20 3d 20 74 6d 70 6c 28 65 78 70 72  alue = tmpl(expr
10e40 2e 76 61 6c 2c 20 70 61 72 65 6e 74 29 3b 0a 0a  .val, parent);..
10e50 20 20 20 20 20 20 76 61 72 20 69 74 65 6d 73 20        var items 
10e60 3d 20 65 78 70 72 2e 76 61 6c 75 65 3b 0a 20 20  = expr.value;.  
10e70 20 20 20 20 76 61 72 20 66 72 61 67 20 3d 20 63      var frag = c
10e80 72 65 61 74 65 46 72 61 67 6d 65 6e 74 28 29 3b  reateFragment();
10e90 0a 20 20 20 20 20 20 76 61 72 20 69 73 4f 62 6a  .      var isObj
10ea0 65 63 74 20 3d 20 21 69 73 41 72 72 61 79 28 69  ect = !isArray(i
10eb0 74 65 6d 73 29 20 26 26 20 21 69 73 53 74 72 69  tems) && !isStri
10ec0 6e 67 28 69 74 65 6d 73 29 3b 0a 20 20 20 20 20  ng(items);.     
10ed0 20 76 61 72 20 72 6f 6f 74 20 3d 20 70 6c 61 63   var root = plac
10ee0 65 68 6f 6c 64 65 72 2e 70 61 72 65 6e 74 4e 6f  eholder.parentNo
10ef0 64 65 3b 0a 20 20 20 20 20 20 76 61 72 20 74 6d  de;.      var tm
10f00 70 49 74 65 6d 73 20 3d 20 5b 5d 3b 0a 20 20 20  pItems = [];.   
10f10 20 20 20 76 61 72 20 68 61 73 4b 65 79 73 20 3d     var hasKeys =
10f20 20 69 73 4f 62 6a 65 63 74 20 26 26 20 21 21 69   isObject && !!i
10f30 74 65 6d 73 3b 0a 0a 20 20 20 20 20 20 2f 2f 20  tems;..      // 
10f40 69 66 20 74 68 69 73 20 44 4f 4d 20 77 61 73 20  if this DOM was 
10f50 72 65 6d 6f 76 65 64 20 74 68 65 20 75 70 64 61  removed the upda
10f60 74 65 20 68 65 72 65 20 69 73 20 75 73 65 6c 65  te here is usele
10f70 73 73 0a 20 20 20 20 20 20 2f 2f 20 74 68 69 73  ss.      // this
10f80 20 63 6f 6e 64 69 74 69 6f 6e 20 66 69 78 65 73   condition fixes
10f90 20 61 6c 73 6f 20 61 20 77 65 69 72 64 20 61 73   also a weird as
10fa0 79 6e 63 20 69 73 73 75 65 20 6f 6e 20 49 45 20  ync issue on IE 
10fb0 69 6e 20 6f 75 72 20 75 6e 69 74 20 74 65 73 74  in our unit test
10fc0 0a 20 20 20 20 20 20 69 66 20 28 21 72 6f 6f 74  .      if (!root
10fd0 29 20 7b 20 72 65 74 75 72 6e 20 7d 0a 0a 20 20  ) { return }..  
10fe0 20 20 20 20 2f 2f 20 6f 62 6a 65 63 74 20 6c 6f      // object lo
10ff0 6f 70 2e 20 61 6e 79 20 63 68 61 6e 67 65 73 20  op. any changes 
11000 63 61 75 73 65 20 66 75 6c 6c 20 72 65 64 72 61  cause full redra
11010 77 0a 20 20 20 20 20 20 69 66 20 28 69 73 4f 62  w.      if (isOb
11020 6a 65 63 74 29 20 7b 0a 20 20 20 20 20 20 20 20  ject) {.        
11030 69 74 65 6d 73 20 3d 20 69 74 65 6d 73 20 3f 20  items = items ? 
11040 4f 62 6a 65 63 74 2e 6b 65 79 73 28 69 74 65 6d  Object.keys(item
11050 73 29 2e 6d 61 70 28 66 75 6e 63 74 69 6f 6e 20  s).map(function 
11060 28 6b 65 79 29 20 7b 20 72 65 74 75 72 6e 20 6d  (key) { return m
11070 6b 69 74 65 6d 28 65 78 70 72 2c 20 69 74 65 6d  kitem(expr, item
11080 73 5b 6b 65 79 5d 2c 20 6b 65 79 29 3b 20 7d 29  s[key], key); })
11090 20 3a 20 5b 5d 3b 0a 20 20 20 20 20 20 7d 0a 0a   : [];.      }..
110a0 20 20 20 20 20 20 2f 2f 20 73 74 6f 72 65 20 74        // store t
110b0 68 65 20 61 6d 6f 75 6e 74 20 6f 66 20 66 69 6c  he amount of fil
110c0 74 65 72 65 64 20 69 74 65 6d 73 0a 20 20 20 20  tered items.    
110d0 20 20 76 61 72 20 66 69 6c 74 65 72 65 64 49 74    var filteredIt
110e0 65 6d 73 43 6f 75 6e 74 20 3d 20 30 3b 0a 0a 20  emsCount = 0;.. 
110f0 20 20 20 20 20 2f 2f 20 6c 6f 6f 70 20 61 6c 6c       // loop all
11100 20 74 68 65 20 6e 65 77 20 69 74 65 6d 73 0a 20   the new items. 
11110 20 20 20 20 20 65 61 63 68 28 69 74 65 6d 73 2c       each(items,
11120 20 66 75 6e 63 74 69 6f 6e 20 28 5f 69 74 65 6d   function (_item
11130 2c 20 69 6e 64 65 78 29 20 7b 0a 20 20 20 20 20  , index) {.     
11140 20 20 20 76 61 72 20 69 20 3d 20 69 6e 64 65 78     var i = index
11150 20 2d 20 66 69 6c 74 65 72 65 64 49 74 65 6d 73   - filteredItems
11160 43 6f 75 6e 74 3b 0a 20 20 20 20 20 20 20 20 76  Count;.        v
11170 61 72 20 69 74 65 6d 20 3d 20 21 68 61 73 4b 65  ar item = !hasKe
11180 79 73 20 26 26 20 65 78 70 72 2e 6b 65 79 20 3f  ys && expr.key ?
11190 20 6d 6b 69 74 65 6d 28 65 78 70 72 2c 20 5f 69   mkitem(expr, _i
111a0 74 65 6d 2c 20 69 6e 64 65 78 29 20 3a 20 5f 69  tem, index) : _i
111b0 74 65 6d 3b 0a 0a 20 20 20 20 20 20 20 20 2f 2f  tem;..        //
111c0 20 73 6b 69 70 20 74 68 69 73 20 69 74 65 6d 20   skip this item 
111d0 62 65 63 61 75 73 65 20 69 74 20 6d 75 73 74 20  because it must 
111e0 62 65 20 66 69 6c 74 65 72 65 64 0a 20 20 20 20  be filtered.    
111f0 20 20 20 20 69 66 20 28 69 66 45 78 70 72 20 26      if (ifExpr &
11200 26 20 21 74 6d 70 6c 28 69 66 45 78 70 72 2c 20  & !tmpl(ifExpr, 
11210 65 78 74 65 6e 64 28 63 72 65 61 74 65 28 70 61  extend(create(pa
11220 72 65 6e 74 29 2c 20 69 74 65 6d 29 29 29 20 7b  rent), item))) {
11230 0a 20 20 20 20 20 20 20 20 20 20 66 69 6c 74 65  .          filte
11240 72 65 64 49 74 65 6d 73 43 6f 75 6e 74 20 2b 2b  redItemsCount ++
11250 3b 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ;.          retu
11260 72 6e 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20  rn.        }..  
11270 20 20 20 20 20 20 76 61 72 20 69 74 65 6d 49 64        var itemId
11280 20 3d 20 67 65 74 49 74 65 6d 49 64 28 6b 65 79   = getItemId(key
11290 41 74 74 72 2c 20 5f 69 74 65 6d 2c 20 69 74 65  Attr, _item, ite
112a0 6d 2c 20 68 61 73 4b 65 79 41 74 74 72 45 78 70  m, hasKeyAttrExp
112b0 72 29 3b 0a 20 20 20 20 20 20 20 20 2f 2f 20 72  r);.        // r
112c0 65 6f 72 64 65 72 20 6f 6e 6c 79 20 69 66 20 74  eorder only if t
112d0 68 65 20 69 74 65 6d 73 20 61 72 65 20 6e 6f 74  he items are not
112e0 20 6f 62 6a 65 63 74 73 0a 20 20 20 20 20 20 20   objects.       
112f0 20 2f 2f 20 6f 72 20 61 20 6b 65 79 20 61 74 74   // or a key att
11300 72 69 62 75 74 65 20 68 61 73 20 62 65 65 6e 20  ribute has been 
11310 70 72 6f 76 69 64 65 64 0a 20 20 20 20 20 20 20  provided.       
11320 20 76 61 72 20 64 6f 52 65 6f 72 64 65 72 20 3d   var doReorder =
11330 20 21 69 73 4f 62 6a 65 63 74 20 26 26 20 6d 75   !isObject && mu
11340 73 74 52 65 6f 72 64 65 72 20 26 26 20 74 79 70  stReorder && typ
11350 65 6f 66 20 5f 69 74 65 6d 20 3d 3d 3d 20 54 5f  eof _item === T_
11360 4f 42 4a 45 43 54 20 7c 7c 20 6b 65 79 41 74 74  OBJECT || keyAtt
11370 72 3b 0a 20 20 20 20 20 20 20 20 76 61 72 20 6f  r;.        var o
11380 6c 64 50 6f 73 20 3d 20 6f 6c 64 49 74 65 6d 73  ldPos = oldItems
11390 2e 69 6e 64 65 78 4f 66 28 69 74 65 6d 49 64 29  .indexOf(itemId)
113a0 3b 0a 20 20 20 20 20 20 20 20 76 61 72 20 69 73  ;.        var is
113b0 4e 65 77 20 3d 20 6f 6c 64 50 6f 73 20 3d 3d 3d  New = oldPos ===
113c0 20 2d 31 3b 0a 20 20 20 20 20 20 20 20 76 61 72   -1;.        var
113d0 20 70 6f 73 20 3d 20 21 69 73 4e 65 77 20 26 26   pos = !isNew &&
113e0 20 64 6f 52 65 6f 72 64 65 72 20 3f 20 6f 6c 64   doReorder ? old
113f0 50 6f 73 20 3a 20 69 3b 0a 20 20 20 20 20 20 20  Pos : i;.       
11400 20 2f 2f 20 64 6f 65 73 20 61 20 74 61 67 20 65   // does a tag e
11410 78 69 73 74 20 69 6e 20 74 68 69 73 20 70 6f 73  xist in this pos
11420 69 74 69 6f 6e 3f 0a 20 20 20 20 20 20 20 20 76  ition?.        v
11430 61 72 20 74 61 67 20 3d 20 74 61 67 73 5b 70 6f  ar tag = tags[po
11440 73 5d 3b 0a 20 20 20 20 20 20 20 20 76 61 72 20  s];.        var 
11450 6d 75 73 74 41 70 70 65 6e 64 20 3d 20 69 20 3e  mustAppend = i >
11460 3d 20 6f 6c 64 49 74 65 6d 73 2e 6c 65 6e 67 74  = oldItems.lengt
11470 68 3b 0a 20 20 20 20 20 20 20 20 76 61 72 20 6d  h;.        var m
11480 75 73 74 43 72 65 61 74 65 20 3d 20 64 6f 52 65  ustCreate = doRe
11490 6f 72 64 65 72 20 26 26 20 69 73 4e 65 77 20 7c  order && isNew |
114a0 7c 20 21 64 6f 52 65 6f 72 64 65 72 20 26 26 20  | !doReorder && 
114b0 21 74 61 67 20 7c 7c 20 21 74 61 67 73 5b 69 5d  !tag || !tags[i]
114c0 3b 0a 0a 20 20 20 20 20 20 20 20 2f 2f 20 6e 65  ;..        // ne
114d0 77 20 74 61 67 0a 20 20 20 20 20 20 20 20 69 66  w tag.        if
114e0 20 28 6d 75 73 74 43 72 65 61 74 65 29 20 7b 0a   (mustCreate) {.
114f0 20 20 20 20 20 20 20 20 20 20 74 61 67 20 3d 20            tag = 
11500 63 72 65 61 74 65 54 61 67 28 69 6d 70 6c 2c 20  createTag(impl, 
11510 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 61  {.            pa
11520 72 65 6e 74 3a 20 70 61 72 65 6e 74 2c 0a 20 20  rent: parent,.  
11530 20 20 20 20 20 20 20 20 20 20 69 73 4c 6f 6f 70            isLoop
11540 3a 20 69 73 4c 6f 6f 70 2c 0a 20 20 20 20 20 20  : isLoop,.      
11550 20 20 20 20 20 20 69 73 41 6e 6f 6e 79 6d 6f 75        isAnonymou
11560 73 3a 20 69 73 41 6e 6f 6e 79 6d 6f 75 73 2c 0a  s: isAnonymous,.
11570 20 20 20 20 20 20 20 20 20 20 20 20 74 61 67 4e              tagN
11580 61 6d 65 3a 20 74 61 67 4e 61 6d 65 2c 0a 20 20  ame: tagName,.  
11590 20 20 20 20 20 20 20 20 20 20 72 6f 6f 74 3a 20            root: 
115a0 64 6f 6d 2e 63 6c 6f 6e 65 4e 6f 64 65 28 69 73  dom.cloneNode(is
115b0 41 6e 6f 6e 79 6d 6f 75 73 29 2c 0a 20 20 20 20  Anonymous),.    
115c0 20 20 20 20 20 20 20 20 69 74 65 6d 3a 20 69 74          item: it
115d0 65 6d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20  em,.            
115e0 69 6e 64 65 78 3a 20 69 2c 0a 20 20 20 20 20 20  index: i,.      
115f0 20 20 20 20 7d 2c 20 69 6e 6e 65 72 48 54 4d 4c      }, innerHTML
11600 29 3b 0a 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  );..          //
11610 20 6d 6f 75 6e 74 20 74 68 65 20 74 61 67 0a 20   mount the tag. 
11620 20 20 20 20 20 20 20 20 20 74 61 67 2e 6d 6f 75           tag.mou
11630 6e 74 28 29 3b 0a 0a 20 20 20 20 20 20 20 20 20  nt();..         
11640 20 69 66 20 28 6d 75 73 74 41 70 70 65 6e 64 29   if (mustAppend)
11650 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 20 61  .            { a
11660 70 70 65 6e 64 2e 61 70 70 6c 79 28 74 61 67 2c  ppend.apply(tag,
11670 20 5b 66 72 61 67 20 7c 7c 20 72 6f 6f 74 2c 20   [frag || root, 
11680 69 73 56 69 72 74 75 61 6c 5d 29 3b 20 7d 0a 20  isVirtual]); }. 
11690 20 20 20 20 20 20 20 20 20 65 6c 73 65 0a 20 20           else.  
116a0 20 20 20 20 20 20 20 20 20 20 7b 20 69 6e 73 65            { inse
116b0 72 74 2e 61 70 70 6c 79 28 74 61 67 2c 20 5b 72  rt.apply(tag, [r
116c0 6f 6f 74 2c 20 74 61 67 73 5b 69 5d 2c 20 69 73  oot, tags[i], is
116d0 56 69 72 74 75 61 6c 5d 29 3b 20 7d 0a 0a 20 20  Virtual]); }..  
116e0 20 20 20 20 20 20 20 20 69 66 20 28 21 6d 75 73          if (!mus
116f0 74 41 70 70 65 6e 64 29 20 7b 20 6f 6c 64 49 74  tAppend) { oldIt
11700 65 6d 73 2e 73 70 6c 69 63 65 28 69 2c 20 30 2c  ems.splice(i, 0,
11710 20 69 74 65 6d 29 3b 20 7d 0a 20 20 20 20 20 20   item); }.      
11720 20 20 20 20 74 61 67 73 2e 73 70 6c 69 63 65 28      tags.splice(
11730 69 2c 20 30 2c 20 74 61 67 29 3b 0a 20 20 20 20  i, 0, tag);.    
11740 20 20 20 20 20 20 69 66 20 28 63 68 69 6c 64 29        if (child)
11750 20 7b 20 61 72 72 61 79 69 73 68 41 64 64 28 70   { arrayishAdd(p
11760 61 72 65 6e 74 2e 74 61 67 73 2c 20 74 61 67 4e  arent.tags, tagN
11770 61 6d 65 2c 20 74 61 67 2c 20 74 72 75 65 29 3b  ame, tag, true);
11780 20 7d 0a 20 20 20 20 20 20 20 20 7d 20 65 6c 73   }.        } els
11790 65 20 69 66 20 28 70 6f 73 20 21 3d 3d 20 69 20  e if (pos !== i 
117a0 26 26 20 64 6f 52 65 6f 72 64 65 72 29 20 7b 0a  && doReorder) {.
117b0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 6d 6f 76            // mov
117c0 65 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  e.          if (
117d0 6b 65 79 41 74 74 72 20 7c 7c 20 63 6f 6e 74 61  keyAttr || conta
117e0 69 6e 73 28 69 74 65 6d 73 2c 20 6f 6c 64 49 74  ins(items, oldIt
117f0 65 6d 73 5b 70 6f 73 5d 29 29 20 7b 0a 20 20 20  ems[pos])) {.   
11800 20 20 20 20 20 20 20 20 20 6d 6f 76 65 2e 61 70           move.ap
11810 70 6c 79 28 74 61 67 2c 20 5b 72 6f 6f 74 2c 20  ply(tag, [root, 
11820 74 61 67 73 5b 69 5d 2c 20 69 73 56 69 72 74 75  tags[i], isVirtu
11830 61 6c 5d 29 3b 0a 20 20 20 20 20 20 20 20 20 20  al]);.          
11840 20 20 2f 2f 20 6d 6f 76 65 20 74 68 65 20 6f 6c    // move the ol
11850 64 20 74 61 67 20 69 6e 73 74 61 6e 63 65 0a 20  d tag instance. 
11860 20 20 20 20 20 20 20 20 20 20 20 74 61 67 73 2e             tags.
11870 73 70 6c 69 63 65 28 69 2c 20 30 2c 20 74 61 67  splice(i, 0, tag
11880 73 2e 73 70 6c 69 63 65 28 70 6f 73 2c 20 31 29  s.splice(pos, 1)
11890 5b 30 5d 29 3b 0a 20 20 20 20 20 20 20 20 20 20  [0]);.          
118a0 20 20 2f 2f 20 6d 6f 76 65 20 74 68 65 20 6f 6c    // move the ol
118b0 64 20 69 74 65 6d 0a 20 20 20 20 20 20 20 20 20  d item.         
118c0 20 20 20 6f 6c 64 49 74 65 6d 73 2e 73 70 6c 69     oldItems.spli
118d0 63 65 28 69 2c 20 30 2c 20 6f 6c 64 49 74 65 6d  ce(i, 0, oldItem
118e0 73 2e 73 70 6c 69 63 65 28 70 6f 73 2c 20 31 29  s.splice(pos, 1)
118f0 5b 30 5d 29 3b 0a 20 20 20 20 20 20 20 20 20 20  [0]);.          
11900 7d 0a 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  }..          // 
11910 75 70 64 61 74 65 20 74 68 65 20 70 6f 73 69 74  update the posit
11920 69 6f 6e 20 61 74 74 72 69 62 75 74 65 20 69 66  ion attribute if
11930 20 69 74 20 65 78 69 73 74 73 0a 20 20 20 20 20   it exists.     
11940 20 20 20 20 20 69 66 20 28 65 78 70 72 2e 70 6f       if (expr.po
11950 73 29 20 7b 20 74 61 67 5b 65 78 70 72 2e 70 6f  s) { tag[expr.po
11960 73 5d 20 3d 20 69 3b 20 7d 0a 0a 20 20 20 20 20  s] = i; }..     
11970 20 20 20 20 20 2f 2f 20 69 66 20 74 68 65 20 6c       // if the l
11980 6f 6f 70 20 74 61 67 73 20 61 72 65 20 6e 6f 74  oop tags are not
11990 20 63 75 73 74 6f 6d 0a 20 20 20 20 20 20 20 20   custom.        
119a0 20 20 2f 2f 20 77 65 20 6e 65 65 64 20 74 6f 20    // we need to 
119b0 6d 6f 76 65 20 61 6c 6c 20 74 68 65 69 72 20 63  move all their c
119c0 75 73 74 6f 6d 20 74 61 67 73 20 69 6e 74 6f 20  ustom tags into 
119d0 74 68 65 20 72 69 67 68 74 20 70 6f 73 69 74 69  the right positi
119e0 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  on.          if 
119f0 28 21 63 68 69 6c 64 20 26 26 20 74 61 67 2e 74  (!child && tag.t
11a00 61 67 73 29 20 7b 20 6d 6f 76 65 4e 65 73 74 65  ags) { moveNeste
11a10 64 54 61 67 73 2e 63 61 6c 6c 28 74 61 67 2c 20  dTags.call(tag, 
11a20 69 29 3b 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a  i); }.        }.
11a30 0a 20 20 20 20 20 20 20 20 2f 2f 20 63 61 63 68  .        // cach
11a40 65 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 69  e the original i
11a50 74 65 6d 20 74 6f 20 75 73 65 20 69 74 20 69 6e  tem to use it in
11a60 20 74 68 65 20 65 76 65 6e 74 73 20 62 6f 75 6e   the events boun
11a70 64 20 74 6f 20 74 68 69 73 20 6e 6f 64 65 0a 20  d to this node. 
11a80 20 20 20 20 20 20 20 2f 2f 20 61 6e 64 20 69 74         // and it
11a90 73 20 63 68 69 6c 64 72 65 6e 0a 20 20 20 20 20  s children.     
11aa0 20 20 20 65 78 74 65 6e 64 28 74 61 67 2e 5f 5f     extend(tag.__
11ab0 2c 20 7b 0a 20 20 20 20 20 20 20 20 20 20 69 74  , {.          it
11ac0 65 6d 3a 20 69 74 65 6d 2c 0a 20 20 20 20 20 20  em: item,.      
11ad0 20 20 20 20 69 6e 64 65 78 3a 20 69 2c 0a 20 20      index: i,.  
11ae0 20 20 20 20 20 20 20 20 70 61 72 65 6e 74 3a 20          parent: 
11af0 70 61 72 65 6e 74 0a 20 20 20 20 20 20 20 20 7d  parent.        }
11b00 29 3b 0a 0a 20 20 20 20 20 20 20 20 74 6d 70 49  );..        tmpI
11b10 74 65 6d 73 5b 69 5d 20 3d 20 69 74 65 6d 49 64  tems[i] = itemId
11b20 3b 0a 0a 20 20 20 20 20 20 20 20 69 66 20 28 21  ;..        if (!
11b30 6d 75 73 74 43 72 65 61 74 65 29 20 7b 20 74 61  mustCreate) { ta
11b40 67 2e 75 70 64 61 74 65 28 69 74 65 6d 29 3b 20  g.update(item); 
11b50 7d 0a 20 20 20 20 20 20 7d 29 3b 0a 0a 20 20 20  }.      });..   
11b60 20 20 20 2f 2f 20 72 65 6d 6f 76 65 20 74 68 65     // remove the
11b70 20 72 65 64 75 6e 64 61 6e 74 20 74 61 67 73 0a   redundant tags.
11b80 20 20 20 20 20 20 75 6e 6d 6f 75 6e 74 52 65 64        unmountRed
11b90 75 6e 64 61 6e 74 28 69 74 65 6d 73 2c 20 74 61  undant(items, ta
11ba0 67 73 2c 20 66 69 6c 74 65 72 65 64 49 74 65 6d  gs, filteredItem
11bb0 73 43 6f 75 6e 74 29 3b 0a 0a 20 20 20 20 20 20  sCount);..      
11bc0 2f 2f 20 63 6c 6f 6e 65 20 74 68 65 20 69 74 65  // clone the ite
11bd0 6d 73 20 61 72 72 61 79 0a 20 20 20 20 20 20 6f  ms array.      o
11be0 6c 64 49 74 65 6d 73 20 3d 20 74 6d 70 49 74 65  ldItems = tmpIte
11bf0 6d 73 2e 73 6c 69 63 65 28 29 3b 0a 0a 20 20 20  ms.slice();..   
11c00 20 20 20 72 6f 6f 74 2e 69 6e 73 65 72 74 42 65     root.insertBe
11c10 66 6f 72 65 28 66 72 61 67 2c 20 70 6c 61 63 65  fore(frag, place
11c20 68 6f 6c 64 65 72 29 3b 0a 20 20 20 20 7d 3b 0a  holder);.    };.
11c30 0a 20 20 20 20 65 78 70 72 2e 75 6e 6d 6f 75 6e  .    expr.unmoun
11c40 74 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20  t = function () 
11c50 7b 0a 20 20 20 20 20 20 65 61 63 68 28 74 61 67  {.      each(tag
11c60 73 2c 20 66 75 6e 63 74 69 6f 6e 20 28 74 29 20  s, function (t) 
11c70 7b 20 74 2e 75 6e 6d 6f 75 6e 74 28 29 3b 20 7d  { t.unmount(); }
11c80 29 3b 0a 20 20 20 20 7d 3b 0a 0a 20 20 20 20 72  );.    };..    r
11c90 65 74 75 72 6e 20 65 78 70 72 0a 20 20 7d 0a 0a  eturn expr.  }..
11ca0 20 20 76 61 72 20 52 65 66 45 78 70 72 20 3d 20    var RefExpr = 
11cb0 7b 0a 20 20 20 20 69 6e 69 74 3a 20 66 75 6e 63  {.    init: func
11cc0 74 69 6f 6e 20 69 6e 69 74 28 64 6f 6d 2c 20 70  tion init(dom, p
11cd0 61 72 65 6e 74 2c 20 61 74 74 72 4e 61 6d 65 2c  arent, attrName,
11ce0 20 61 74 74 72 56 61 6c 75 65 29 20 7b 0a 20 20   attrValue) {.  
11cf0 20 20 20 20 74 68 69 73 2e 64 6f 6d 20 3d 20 64      this.dom = d
11d00 6f 6d 3b 0a 20 20 20 20 20 20 74 68 69 73 2e 61  om;.      this.a
11d10 74 74 72 20 3d 20 61 74 74 72 4e 61 6d 65 3b 0a  ttr = attrName;.
11d20 20 20 20 20 20 20 74 68 69 73 2e 72 61 77 56 61        this.rawVa
11d30 6c 75 65 20 3d 20 61 74 74 72 56 61 6c 75 65 3b  lue = attrValue;
11d40 0a 20 20 20 20 20 20 74 68 69 73 2e 70 61 72 65  .      this.pare
11d50 6e 74 20 3d 20 70 61 72 65 6e 74 3b 0a 20 20 20  nt = parent;.   
11d60 20 20 20 74 68 69 73 2e 68 61 73 45 78 70 20 3d     this.hasExp =
11d70 20 74 6d 70 6c 2e 68 61 73 45 78 70 72 28 61 74   tmpl.hasExpr(at
11d80 74 72 56 61 6c 75 65 29 3b 0a 20 20 20 20 20 20  trValue);.      
11d90 72 65 74 75 72 6e 20 74 68 69 73 0a 20 20 20 20  return this.    
11da0 7d 2c 0a 20 20 20 20 75 70 64 61 74 65 3a 20 66  },.    update: f
11db0 75 6e 63 74 69 6f 6e 20 75 70 64 61 74 65 28 29  unction update()
11dc0 20 7b 0a 20 20 20 20 20 20 76 61 72 20 6f 6c 64   {.      var old
11dd0 20 3d 20 74 68 69 73 2e 76 61 6c 75 65 3b 0a 20   = this.value;. 
11de0 20 20 20 20 20 76 61 72 20 63 75 73 74 6f 6d 50       var customP
11df0 61 72 65 6e 74 20 3d 20 74 68 69 73 2e 70 61 72  arent = this.par
11e00 65 6e 74 20 26 26 20 67 65 74 49 6d 6d 65 64 69  ent && getImmedi
11e10 61 74 65 43 75 73 74 6f 6d 50 61 72 65 6e 74 28  ateCustomParent(
11e20 74 68 69 73 2e 70 61 72 65 6e 74 29 3b 0a 20 20  this.parent);.  
11e30 20 20 20 20 2f 2f 20 69 66 20 74 68 65 20 72 65      // if the re
11e40 66 65 72 65 6e 63 65 64 20 65 6c 65 6d 65 6e 74  ferenced element
11e50 20 69 73 20 61 20 63 75 73 74 6f 6d 20 74 61 67   is a custom tag
11e60 2c 20 74 68 65 6e 20 77 65 20 73 65 74 20 74 68  , then we set th
11e70 65 20 74 61 67 20 69 74 73 65 6c 66 2c 20 72 61  e tag itself, ra
11e80 74 68 65 72 20 74 68 61 6e 20 44 4f 4d 0a 20 20  ther than DOM.  
11e90 20 20 20 20 76 61 72 20 74 61 67 4f 72 44 6f 6d      var tagOrDom
11ea0 20 3d 20 74 68 69 73 2e 64 6f 6d 2e 5f 5f 72 65   = this.dom.__re
11eb0 66 20 7c 7c 20 74 68 69 73 2e 74 61 67 20 7c 7c  f || this.tag ||
11ec0 20 74 68 69 73 2e 64 6f 6d 3b 0a 0a 20 20 20 20   this.dom;..    
11ed0 20 20 74 68 69 73 2e 76 61 6c 75 65 20 3d 20 74    this.value = t
11ee0 68 69 73 2e 68 61 73 45 78 70 20 3f 20 74 6d 70  his.hasExp ? tmp
11ef0 6c 28 74 68 69 73 2e 72 61 77 56 61 6c 75 65 2c  l(this.rawValue,
11f00 20 74 68 69 73 2e 70 61 72 65 6e 74 29 20 3a 20   this.parent) : 
11f10 74 68 69 73 2e 72 61 77 56 61 6c 75 65 3b 0a 0a  this.rawValue;..
11f20 20 20 20 20 20 20 2f 2f 20 74 68 65 20 6e 61 6d        // the nam
11f30 65 20 63 68 61 6e 67 65 64 2c 20 73 6f 20 77 65  e changed, so we
11f40 20 6e 65 65 64 20 74 6f 20 72 65 6d 6f 76 65 20   need to remove 
11f50 69 74 20 66 72 6f 6d 20 74 68 65 20 6f 6c 64 20  it from the old 
11f60 6b 65 79 20 28 69 66 20 70 72 65 73 65 6e 74 29  key (if present)
11f70 0a 20 20 20 20 20 20 69 66 20 28 21 69 73 42 6c  .      if (!isBl
11f80 61 6e 6b 28 6f 6c 64 29 20 26 26 20 63 75 73 74  ank(old) && cust
11f90 6f 6d 50 61 72 65 6e 74 29 20 7b 20 61 72 72 61  omParent) { arra
11fa0 79 69 73 68 52 65 6d 6f 76 65 28 63 75 73 74 6f  yishRemove(custo
11fb0 6d 50 61 72 65 6e 74 2e 72 65 66 73 2c 20 6f 6c  mParent.refs, ol
11fc0 64 2c 20 74 61 67 4f 72 44 6f 6d 29 3b 20 7d 0a  d, tagOrDom); }.
11fd0 20 20 20 20 20 20 69 66 20 28 21 69 73 42 6c 61        if (!isBla
11fe0 6e 6b 28 74 68 69 73 2e 76 61 6c 75 65 29 20 26  nk(this.value) &
11ff0 26 20 69 73 53 74 72 69 6e 67 28 74 68 69 73 2e  & isString(this.
12000 76 61 6c 75 65 29 29 20 7b 0a 20 20 20 20 20 20  value)) {.      
12010 20 20 2f 2f 20 61 64 64 20 69 74 20 74 6f 20 74    // add it to t
12020 68 65 20 72 65 66 73 20 6f 66 20 70 61 72 65 6e  he refs of paren
12030 74 20 74 61 67 20 28 74 68 69 73 20 62 65 68 61  t tag (this beha
12040 76 69 6f 72 20 77 61 73 20 63 68 61 6e 67 65 64  vior was changed
12050 20 3e 3d 33 2e 30 29 0a 20 20 20 20 20 20 20 20   >=3.0).        
12060 69 66 20 28 63 75 73 74 6f 6d 50 61 72 65 6e 74  if (customParent
12070 29 20 7b 20 61 72 72 61 79 69 73 68 41 64 64 28  ) { arrayishAdd(
12080 0a 20 20 20 20 20 20 20 20 20 20 63 75 73 74 6f  .          custo
12090 6d 50 61 72 65 6e 74 2e 72 65 66 73 2c 0a 20 20  mParent.refs,.  
120a0 20 20 20 20 20 20 20 20 74 68 69 73 2e 76 61 6c          this.val
120b0 75 65 2c 0a 20 20 20 20 20 20 20 20 20 20 74 61  ue,.          ta
120c0 67 4f 72 44 6f 6d 2c 0a 20 20 20 20 20 20 20 20  gOrDom,.        
120d0 20 20 2f 2f 20 75 73 65 20 61 6e 20 61 72 72 61    // use an arra
120e0 79 20 69 66 20 69 74 27 73 20 61 20 6c 6f 6f 70  y if it's a loop
120f0 65 64 20 6e 6f 64 65 20 61 6e 64 20 74 68 65 20  ed node and the 
12100 72 65 66 20 69 73 20 6e 6f 74 20 61 6e 20 65 78  ref is not an ex
12110 70 72 65 73 73 69 6f 6e 0a 20 20 20 20 20 20 20  pression.       
12120 20 20 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 20     null,.       
12130 20 20 20 74 68 69 73 2e 70 61 72 65 6e 74 2e 5f     this.parent._
12140 5f 2e 69 6e 64 65 78 0a 20 20 20 20 20 20 20 20  _.index.        
12150 29 3b 20 7d 0a 0a 20 20 20 20 20 20 20 20 69 66  ); }..        if
12160 20 28 74 68 69 73 2e 76 61 6c 75 65 20 21 3d 3d   (this.value !==
12170 20 6f 6c 64 29 20 7b 0a 20 20 20 20 20 20 20 20   old) {.        
12180 20 20 73 65 74 41 74 74 72 69 62 75 74 65 28 74    setAttribute(t
12190 68 69 73 2e 64 6f 6d 2c 20 74 68 69 73 2e 61 74  his.dom, this.at
121a0 74 72 2c 20 74 68 69 73 2e 76 61 6c 75 65 29 3b  tr, this.value);
121b0 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20  .        }.     
121c0 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20   } else {.      
121d0 20 20 72 65 6d 6f 76 65 41 74 74 72 69 62 75 74    removeAttribut
121e0 65 28 74 68 69 73 2e 64 6f 6d 2c 20 74 68 69 73  e(this.dom, this
121f0 2e 61 74 74 72 29 3b 0a 20 20 20 20 20 20 7d 0a  .attr);.      }.
12200 0a 20 20 20 20 20 20 2f 2f 20 63 61 63 68 65 20  .      // cache 
12210 74 68 65 20 72 65 66 20 62 6f 75 6e 64 20 74 6f  the ref bound to
12220 20 74 68 69 73 20 64 6f 6d 20 6e 6f 64 65 0a 20   this dom node. 
12230 20 20 20 20 20 2f 2f 20 74 6f 20 72 65 75 73 65       // to reuse
12240 20 69 74 20 69 6e 20 66 75 74 75 72 65 20 28 73   it in future (s
12250 65 65 20 61 6c 73 6f 20 23 32 33 32 39 29 0a 20  ee also #2329). 
12260 20 20 20 20 20 69 66 20 28 21 74 68 69 73 2e 64       if (!this.d
12270 6f 6d 2e 5f 5f 72 65 66 29 20 7b 20 74 68 69 73  om.__ref) { this
12280 2e 64 6f 6d 2e 5f 5f 72 65 66 20 3d 20 74 61 67  .dom.__ref = tag
12290 4f 72 44 6f 6d 3b 20 7d 0a 20 20 20 20 7d 2c 0a  OrDom; }.    },.
122a0 20 20 20 20 75 6e 6d 6f 75 6e 74 3a 20 66 75 6e      unmount: fun
122b0 63 74 69 6f 6e 20 75 6e 6d 6f 75 6e 74 28 29 20  ction unmount() 
122c0 7b 0a 20 20 20 20 20 20 76 61 72 20 74 61 67 4f  {.      var tagO
122d0 72 44 6f 6d 20 3d 20 74 68 69 73 2e 74 61 67 20  rDom = this.tag 
122e0 7c 7c 20 74 68 69 73 2e 64 6f 6d 3b 0a 20 20 20  || this.dom;.   
122f0 20 20 20 76 61 72 20 63 75 73 74 6f 6d 50 61 72     var customPar
12300 65 6e 74 20 3d 20 74 68 69 73 2e 70 61 72 65 6e  ent = this.paren
12310 74 20 26 26 20 67 65 74 49 6d 6d 65 64 69 61 74  t && getImmediat
12320 65 43 75 73 74 6f 6d 50 61 72 65 6e 74 28 74 68  eCustomParent(th
12330 69 73 2e 70 61 72 65 6e 74 29 3b 0a 20 20 20 20  is.parent);.    
12340 20 20 69 66 20 28 21 69 73 42 6c 61 6e 6b 28 74    if (!isBlank(t
12350 68 69 73 2e 76 61 6c 75 65 29 20 26 26 20 63 75  his.value) && cu
12360 73 74 6f 6d 50 61 72 65 6e 74 29 0a 20 20 20 20  stomParent).    
12370 20 20 20 20 7b 20 61 72 72 61 79 69 73 68 52 65      { arrayishRe
12380 6d 6f 76 65 28 63 75 73 74 6f 6d 50 61 72 65 6e  move(customParen
12390 74 2e 72 65 66 73 2c 20 74 68 69 73 2e 76 61 6c  t.refs, this.val
123a0 75 65 2c 20 74 61 67 4f 72 44 6f 6d 29 3b 20 7d  ue, tagOrDom); }
123b0 0a 20 20 20 20 7d 0a 20 20 7d 3b 0a 0a 20 20 2f  .    }.  };..  /
123c0 2a 2a 0a 20 20 20 2a 20 43 72 65 61 74 65 20 61  **.   * Create a
123d0 20 6e 65 77 20 72 65 66 20 64 69 72 65 63 74 69   new ref directi
123e0 76 65 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20  ve.   * @param  
123f0 20 7b 20 48 54 4d 4c 45 6c 65 6d 65 6e 74 20 7d   { HTMLElement }
12400 20 64 6f 6d 20 2d 20 64 6f 6d 20 6e 6f 64 65 20   dom - dom node 
12410 68 61 76 69 6e 67 20 74 68 65 20 72 65 66 20 61  having the ref a
12420 74 74 72 69 62 75 74 65 0a 20 20 20 2a 20 40 70  ttribute.   * @p
12430 61 72 61 6d 20 20 20 7b 20 54 61 67 20 7d 20 63  aram   { Tag } c
12440 6f 6e 74 65 78 74 20 2d 20 74 61 67 20 69 6e 73  ontext - tag ins
12450 74 61 6e 63 65 20 77 68 65 72 65 20 74 68 65 20  tance where the 
12460 44 4f 4d 20 6e 6f 64 65 20 69 73 20 6c 6f 63 61  DOM node is loca
12470 74 65 64 0a 20 20 20 2a 20 40 70 61 72 61 6d 20  ted.   * @param 
12480 20 20 7b 20 53 74 72 69 6e 67 20 7d 20 61 74 74    { String } att
12490 72 4e 61 6d 65 20 2d 20 65 69 74 68 65 72 20 27  rName - either '
124a0 72 65 66 27 20 6f 72 20 27 64 61 74 61 2d 72 65  ref' or 'data-re
124b0 66 27 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20  f'.   * @param  
124c0 20 7b 20 53 74 72 69 6e 67 20 7d 20 61 74 74 72   { String } attr
124d0 56 61 6c 75 65 20 2d 20 76 61 6c 75 65 20 6f 66  Value - value of
124e0 20 74 68 65 20 72 65 66 20 61 74 74 72 69 62 75   the ref attribu
124f0 74 65 0a 20 20 20 2a 20 40 72 65 74 75 72 6e 73  te.   * @returns
12500 20 7b 20 52 65 66 45 78 70 72 20 7d 20 61 20 6e   { RefExpr } a n
12510 65 77 20 52 65 66 45 78 70 72 20 6f 62 6a 65 63  ew RefExpr objec
12520 74 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69  t.   */.  functi
12530 6f 6e 20 63 72 65 61 74 65 52 65 66 44 69 72 65  on createRefDire
12540 63 74 69 76 65 28 64 6f 6d 2c 20 74 61 67 2c 20  ctive(dom, tag, 
12550 61 74 74 72 4e 61 6d 65 2c 20 61 74 74 72 56 61  attrName, attrVa
12560 6c 75 65 29 20 7b 0a 20 20 20 20 72 65 74 75 72  lue) {.    retur
12570 6e 20 63 72 65 61 74 65 28 52 65 66 45 78 70 72  n create(RefExpr
12580 29 2e 69 6e 69 74 28 64 6f 6d 2c 20 74 61 67 2c  ).init(dom, tag,
12590 20 61 74 74 72 4e 61 6d 65 2c 20 61 74 74 72 56   attrName, attrV
125a0 61 6c 75 65 29 0a 20 20 7d 0a 0a 20 20 2f 2a 2a  alue).  }..  /**
125b0 0a 20 20 20 2a 20 54 72 69 67 67 65 72 20 74 68  .   * Trigger th
125c0 65 20 75 6e 6d 6f 75 6e 74 20 6d 65 74 68 6f 64  e unmount method
125d0 20 6f 6e 20 61 6c 6c 20 74 68 65 20 65 78 70 72   on all the expr
125e0 65 73 73 69 6f 6e 73 0a 20 20 20 2a 20 40 70 61  essions.   * @pa
125f0 72 61 6d 20 20 20 7b 20 41 72 72 61 79 20 7d 20  ram   { Array } 
12600 65 78 70 72 65 73 73 69 6f 6e 73 20 2d 20 44 4f  expressions - DO
12610 4d 20 65 78 70 72 65 73 73 69 6f 6e 73 0a 20 20  M expressions.  
12620 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 75   */.  function u
12630 6e 6d 6f 75 6e 74 41 6c 6c 28 65 78 70 72 65 73  nmountAll(expres
12640 73 69 6f 6e 73 29 20 7b 0a 20 20 20 20 65 61 63  sions) {.    eac
12650 68 28 65 78 70 72 65 73 73 69 6f 6e 73 2c 20 66  h(expressions, f
12660 75 6e 63 74 69 6f 6e 20 28 65 78 70 72 29 20 7b  unction (expr) {
12670 0a 20 20 20 20 20 20 69 66 20 28 65 78 70 72 2e  .      if (expr.
12680 75 6e 6d 6f 75 6e 74 29 20 7b 20 65 78 70 72 2e  unmount) { expr.
12690 75 6e 6d 6f 75 6e 74 28 74 72 75 65 29 3b 20 7d  unmount(true); }
126a0 0a 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28  .      else if (
126b0 65 78 70 72 2e 74 61 67 4e 61 6d 65 29 20 7b 20  expr.tagName) { 
126c0 65 78 70 72 2e 74 61 67 2e 75 6e 6d 6f 75 6e 74  expr.tag.unmount
126d0 28 74 72 75 65 29 3b 20 7d 0a 20 20 20 20 20 20  (true); }.      
126e0 65 6c 73 65 20 69 66 20 28 65 78 70 72 2e 75 6e  else if (expr.un
126f0 6d 6f 75 6e 74 29 20 7b 20 65 78 70 72 2e 75 6e  mount) { expr.un
12700 6d 6f 75 6e 74 28 29 3b 20 7d 0a 20 20 20 20 7d  mount(); }.    }
12710 29 3b 0a 20 20 7d 0a 0a 20 20 76 61 72 20 49 66  );.  }..  var If
12720 45 78 70 72 20 3d 20 7b 0a 20 20 20 20 69 6e 69  Expr = {.    ini
12730 74 3a 20 66 75 6e 63 74 69 6f 6e 20 69 6e 69 74  t: function init
12740 28 64 6f 6d 2c 20 74 61 67 2c 20 65 78 70 72 29  (dom, tag, expr)
12750 20 7b 0a 20 20 20 20 20 20 72 65 6d 6f 76 65 41   {.      removeA
12760 74 74 72 69 62 75 74 65 28 64 6f 6d 2c 20 43 4f  ttribute(dom, CO
12770 4e 44 49 54 49 4f 4e 41 4c 5f 44 49 52 45 43 54  NDITIONAL_DIRECT
12780 49 56 45 29 3b 0a 20 20 20 20 20 20 65 78 74 65  IVE);.      exte
12790 6e 64 28 74 68 69 73 2c 20 7b 20 74 61 67 3a 20  nd(this, { tag: 
127a0 74 61 67 2c 20 65 78 70 72 3a 20 65 78 70 72 2c  tag, expr: expr,
127b0 20 73 74 75 62 3a 20 63 72 65 61 74 65 44 4f 4d   stub: createDOM
127c0 50 6c 61 63 65 68 6f 6c 64 65 72 28 29 2c 20 70  Placeholder(), p
127d0 72 69 73 74 69 6e 65 3a 20 64 6f 6d 20 7d 29 3b  ristine: dom });
127e0 0a 20 20 20 20 20 20 76 61 72 20 70 20 3d 20 64  .      var p = d
127f0 6f 6d 2e 70 61 72 65 6e 74 4e 6f 64 65 3b 0a 20  om.parentNode;. 
12800 20 20 20 20 20 70 2e 69 6e 73 65 72 74 42 65 66       p.insertBef
12810 6f 72 65 28 74 68 69 73 2e 73 74 75 62 2c 20 64  ore(this.stub, d
12820 6f 6d 29 3b 0a 20 20 20 20 20 20 70 2e 72 65 6d  om);.      p.rem
12830 6f 76 65 43 68 69 6c 64 28 64 6f 6d 29 3b 0a 0a  oveChild(dom);..
12840 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69        return thi
12850 73 0a 20 20 20 20 7d 2c 0a 20 20 20 20 75 70 64  s.    },.    upd
12860 61 74 65 3a 20 66 75 6e 63 74 69 6f 6e 20 75 70  ate: function up
12870 64 61 74 65 24 24 31 28 29 20 7b 0a 20 20 20 20  date$$1() {.    
12880 20 20 74 68 69 73 2e 76 61 6c 75 65 20 3d 20 74    this.value = t
12890 6d 70 6c 28 74 68 69 73 2e 65 78 70 72 2c 20 74  mpl(this.expr, t
128a0 68 69 73 2e 74 61 67 29 3b 0a 0a 20 20 20 20 20  his.tag);..     
128b0 20 69 66 20 28 21 74 68 69 73 2e 73 74 75 62 2e   if (!this.stub.
128c0 70 61 72 65 6e 74 4e 6f 64 65 29 20 7b 20 72 65  parentNode) { re
128d0 74 75 72 6e 20 7d 0a 0a 20 20 20 20 20 20 69 66  turn }..      if
128e0 20 28 74 68 69 73 2e 76 61 6c 75 65 20 26 26 20   (this.value && 
128f0 21 74 68 69 73 2e 63 75 72 72 65 6e 74 29 20 7b  !this.current) {
12900 20 2f 2f 20 69 6e 73 65 72 74 0a 20 20 20 20 20   // insert.     
12910 20 20 20 74 68 69 73 2e 63 75 72 72 65 6e 74 20     this.current 
12920 3d 20 74 68 69 73 2e 70 72 69 73 74 69 6e 65 2e  = this.pristine.
12930 63 6c 6f 6e 65 4e 6f 64 65 28 74 72 75 65 29 3b  cloneNode(true);
12940 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 73 74  .        this.st
12950 75 62 2e 70 61 72 65 6e 74 4e 6f 64 65 2e 69 6e  ub.parentNode.in
12960 73 65 72 74 42 65 66 6f 72 65 28 74 68 69 73 2e  sertBefore(this.
12970 63 75 72 72 65 6e 74 2c 20 74 68 69 73 2e 73 74  current, this.st
12980 75 62 29 3b 0a 20 20 20 20 20 20 20 20 74 68 69  ub);.        thi
12990 73 2e 65 78 70 72 65 73 73 69 6f 6e 73 20 3d 20  s.expressions = 
129a0 70 61 72 73 65 45 78 70 72 65 73 73 69 6f 6e 73  parseExpressions
129b0 2e 61 70 70 6c 79 28 74 68 69 73 2e 74 61 67 2c  .apply(this.tag,
129c0 20 5b 74 68 69 73 2e 63 75 72 72 65 6e 74 2c 20   [this.current, 
129d0 74 72 75 65 5d 29 3b 0a 20 20 20 20 20 20 7d 20  true]);.      } 
129e0 65 6c 73 65 20 69 66 20 28 21 74 68 69 73 2e 76  else if (!this.v
129f0 61 6c 75 65 20 26 26 20 74 68 69 73 2e 63 75 72  alue && this.cur
12a00 72 65 6e 74 29 20 7b 20 2f 2f 20 72 65 6d 6f 76  rent) { // remov
12a10 65 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 75  e.        this.u
12a20 6e 6d 6f 75 6e 74 28 29 3b 0a 20 20 20 20 20 20  nmount();.      
12a30 20 20 74 68 69 73 2e 63 75 72 72 65 6e 74 20 3d    this.current =
12a40 20 6e 75 6c 6c 3b 0a 20 20 20 20 20 20 20 20 74   null;.        t
12a50 68 69 73 2e 65 78 70 72 65 73 73 69 6f 6e 73 20  his.expressions 
12a60 3d 20 5b 5d 3b 0a 20 20 20 20 20 20 7d 0a 0a 20  = [];.      }.. 
12a70 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 76 61       if (this.va
12a80 6c 75 65 29 20 7b 20 75 70 64 61 74 65 2e 63 61  lue) { update.ca
12a90 6c 6c 28 74 68 69 73 2e 74 61 67 2c 20 74 68 69  ll(this.tag, thi
12aa0 73 2e 65 78 70 72 65 73 73 69 6f 6e 73 29 3b 20  s.expressions); 
12ab0 7d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 75 6e 6d  }.    },.    unm
12ac0 6f 75 6e 74 3a 20 66 75 6e 63 74 69 6f 6e 20 75  ount: function u
12ad0 6e 6d 6f 75 6e 74 28 29 20 7b 0a 20 20 20 20 20  nmount() {.     
12ae0 20 69 66 20 28 74 68 69 73 2e 63 75 72 72 65 6e   if (this.curren
12af0 74 29 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20  t) {.        if 
12b00 28 74 68 69 73 2e 63 75 72 72 65 6e 74 2e 5f 74  (this.current._t
12b10 61 67 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20  ag) {.          
12b20 74 68 69 73 2e 63 75 72 72 65 6e 74 2e 5f 74 61  this.current._ta
12b30 67 2e 75 6e 6d 6f 75 6e 74 28 29 3b 0a 20 20 20  g.unmount();.   
12b40 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28       } else if (
12b50 74 68 69 73 2e 63 75 72 72 65 6e 74 2e 70 61 72  this.current.par
12b60 65 6e 74 4e 6f 64 65 29 20 7b 0a 20 20 20 20 20  entNode) {.     
12b70 20 20 20 20 20 74 68 69 73 2e 63 75 72 72 65 6e       this.curren
12b80 74 2e 70 61 72 65 6e 74 4e 6f 64 65 2e 72 65 6d  t.parentNode.rem
12b90 6f 76 65 43 68 69 6c 64 28 74 68 69 73 2e 63 75  oveChild(this.cu
12ba0 72 72 65 6e 74 29 3b 0a 20 20 20 20 20 20 20 20  rrent);.        
12bb0 7d 0a 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20  }.      }..     
12bc0 20 75 6e 6d 6f 75 6e 74 41 6c 6c 28 74 68 69 73   unmountAll(this
12bd0 2e 65 78 70 72 65 73 73 69 6f 6e 73 20 7c 7c 20  .expressions || 
12be0 5b 5d 29 3b 0a 20 20 20 20 7d 0a 20 20 7d 3b 0a  []);.    }.  };.
12bf0 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 43 72 65 61  .  /**.   * Crea
12c00 74 65 20 61 20 6e 65 77 20 69 66 20 64 69 72 65  te a new if dire
12c10 63 74 69 76 65 0a 20 20 20 2a 20 40 70 61 72 61  ctive.   * @para
12c20 6d 20 20 20 7b 20 48 54 4d 4c 45 6c 65 6d 65 6e  m   { HTMLElemen
12c30 74 20 7d 20 64 6f 6d 20 2d 20 69 66 20 72 6f 6f  t } dom - if roo
12c40 74 20 64 6f 6d 20 6e 6f 64 65 0a 20 20 20 2a 20  t dom node.   * 
12c50 40 70 61 72 61 6d 20 20 20 7b 20 54 61 67 20 7d  @param   { Tag }
12c60 20 63 6f 6e 74 65 78 74 20 2d 20 74 61 67 20 69   context - tag i
12c70 6e 73 74 61 6e 63 65 20 77 68 65 72 65 20 74 68  nstance where th
12c80 65 20 44 4f 4d 20 6e 6f 64 65 20 69 73 20 6c 6f  e DOM node is lo
12c90 63 61 74 65 64 0a 20 20 20 2a 20 40 70 61 72 61  cated.   * @para
12ca0 6d 20 20 20 7b 20 53 74 72 69 6e 67 20 7d 20 61  m   { String } a
12cb0 74 74 72 20 2d 20 69 66 20 65 78 70 72 65 73 73  ttr - if express
12cc0 69 6f 6e 0a 20 20 20 2a 20 40 72 65 74 75 72 6e  ion.   * @return
12cd0 73 20 7b 20 49 46 45 78 70 72 20 7d 20 61 20 6e  s { IFExpr } a n
12ce0 65 77 20 49 66 45 78 70 72 20 6f 62 6a 65 63 74  ew IfExpr object
12cf0 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f  .   */.  functio
12d00 6e 20 63 72 65 61 74 65 49 66 44 69 72 65 63 74  n createIfDirect
12d10 69 76 65 28 64 6f 6d 2c 20 74 61 67 2c 20 61 74  ive(dom, tag, at
12d20 74 72 29 20 7b 0a 20 20 20 20 72 65 74 75 72 6e  tr) {.    return
12d30 20 63 72 65 61 74 65 28 49 66 45 78 70 72 29 2e   create(IfExpr).
12d40 69 6e 69 74 28 64 6f 6d 2c 20 74 61 67 2c 20 61  init(dom, tag, a
12d50 74 74 72 29 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a  ttr).  }..  /**.
12d60 20 20 20 2a 20 57 61 6c 6b 20 74 68 65 20 74 61     * Walk the ta
12d70 67 20 44 4f 4d 20 74 6f 20 64 65 74 65 63 74 20  g DOM to detect 
12d80 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 73 20  the expressions 
12d90 74 6f 20 65 76 61 6c 75 61 74 65 0a 20 20 20 2a  to evaluate.   *
12da0 20 40 74 68 69 73 20 54 61 67 0a 20 20 20 2a 20   @this Tag.   * 
12db0 40 70 61 72 61 6d 20 20 20 7b 20 48 54 4d 4c 45  @param   { HTMLE
12dc0 6c 65 6d 65 6e 74 20 7d 20 72 6f 6f 74 20 2d 20  lement } root - 
12dd0 72 6f 6f 74 20 74 61 67 20 77 68 65 72 65 20 77  root tag where w
12de0 65 20 77 69 6c 6c 20 73 74 61 72 74 20 64 69 67  e will start dig
12df0 67 69 6e 67 20 74 68 65 20 65 78 70 72 65 73 73  ging the express
12e00 69 6f 6e 73 0a 20 20 20 2a 20 40 70 61 72 61 6d  ions.   * @param
12e10 20 20 20 7b 20 42 6f 6f 6c 65 61 6e 20 7d 20 6d     { Boolean } m
12e20 75 73 74 49 6e 63 6c 75 64 65 52 6f 6f 74 20 2d  ustIncludeRoot -
12e30 20 66 6c 61 67 20 74 6f 20 64 65 63 69 64 65 20   flag to decide 
12e40 77 68 65 74 68 65 72 20 74 68 65 20 72 6f 6f 74  whether the root
12e50 20 6d 75 73 74 20 62 65 20 70 61 72 73 65 64 20   must be parsed 
12e60 61 73 20 77 65 6c 6c 0a 20 20 20 2a 20 40 72 65  as well.   * @re
12e70 74 75 72 6e 73 20 7b 20 41 72 72 61 79 20 7d 20  turns { Array } 
12e80 61 6c 6c 20 74 68 65 20 65 78 70 72 65 73 73 69  all the expressi
12e90 6f 6e 73 20 66 6f 75 6e 64 0a 20 20 20 2a 2f 0a  ons found.   */.
12ea0 20 20 66 75 6e 63 74 69 6f 6e 20 70 61 72 73 65    function parse
12eb0 45 78 70 72 65 73 73 69 6f 6e 73 28 72 6f 6f 74  Expressions(root
12ec0 2c 20 6d 75 73 74 49 6e 63 6c 75 64 65 52 6f 6f  , mustIncludeRoo
12ed0 74 29 20 7b 0a 20 20 20 20 76 61 72 20 74 68 69  t) {.    var thi
12ee0 73 24 31 20 3d 20 74 68 69 73 3b 0a 0a 20 20 20  s$1 = this;..   
12ef0 20 76 61 72 20 65 78 70 72 65 73 73 69 6f 6e 73   var expressions
12f00 20 3d 20 5b 5d 3b 0a 0a 20 20 20 20 77 61 6c 6b   = [];..    walk
12f10 4e 6f 64 65 73 28 72 6f 6f 74 2c 20 66 75 6e 63  Nodes(root, func
12f20 74 69 6f 6e 20 28 64 6f 6d 29 20 7b 0a 20 20 20  tion (dom) {.   
12f30 20 20 20 76 61 72 20 74 79 70 65 20 3d 20 64 6f     var type = do
12f40 6d 2e 6e 6f 64 65 54 79 70 65 3b 0a 20 20 20 20  m.nodeType;.    
12f50 20 20 76 61 72 20 61 74 74 72 3b 0a 20 20 20 20    var attr;.    
12f60 20 20 76 61 72 20 74 61 67 49 6d 70 6c 3b 0a 0a    var tagImpl;..
12f70 20 20 20 20 20 20 69 66 20 28 21 6d 75 73 74 49        if (!mustI
12f80 6e 63 6c 75 64 65 52 6f 6f 74 20 26 26 20 64 6f  ncludeRoot && do
12f90 6d 20 3d 3d 3d 20 72 6f 6f 74 29 20 7b 20 72 65  m === root) { re
12fa0 74 75 72 6e 20 7d 0a 0a 20 20 20 20 20 20 2f 2f  turn }..      //
12fb0 20 74 65 78 74 20 6e 6f 64 65 0a 20 20 20 20 20   text node.     
12fc0 20 69 66 20 28 74 79 70 65 20 3d 3d 3d 20 33 20   if (type === 3 
12fd0 26 26 20 64 6f 6d 2e 70 61 72 65 6e 74 4e 6f 64  && dom.parentNod
12fe0 65 2e 74 61 67 4e 61 6d 65 20 21 3d 3d 20 27 53  e.tagName !== 'S
12ff0 54 59 4c 45 27 20 26 26 20 74 6d 70 6c 2e 68 61  TYLE' && tmpl.ha
13000 73 45 78 70 72 28 64 6f 6d 2e 6e 6f 64 65 56 61  sExpr(dom.nodeVa
13010 6c 75 65 29 29 0a 20 20 20 20 20 20 20 20 7b 20  lue)).        { 
13020 65 78 70 72 65 73 73 69 6f 6e 73 2e 70 75 73 68  expressions.push
13030 28 7b 64 6f 6d 3a 20 64 6f 6d 2c 20 65 78 70 72  ({dom: dom, expr
13040 3a 20 64 6f 6d 2e 6e 6f 64 65 56 61 6c 75 65 7d  : dom.nodeValue}
13050 29 3b 20 7d 0a 0a 20 20 20 20 20 20 69 66 20 28  ); }..      if (
13060 74 79 70 65 20 21 3d 3d 20 31 29 20 7b 20 72 65  type !== 1) { re
13070 74 75 72 6e 20 7d 0a 0a 20 20 20 20 20 20 76 61  turn }..      va
13080 72 20 69 73 56 69 72 74 75 61 6c 20 3d 20 64 6f  r isVirtual = do
13090 6d 2e 74 61 67 4e 61 6d 65 20 3d 3d 3d 20 27 56  m.tagName === 'V
130a0 49 52 54 55 41 4c 27 3b 0a 0a 20 20 20 20 20 20  IRTUAL';..      
130b0 2f 2f 20 6c 6f 6f 70 2e 20 65 61 63 68 20 64 6f  // loop. each do
130c0 65 73 20 69 74 27 73 20 6f 77 6e 20 74 68 69 6e  es it's own thin
130d0 67 20 28 66 6f 72 20 6e 6f 77 29 0a 20 20 20 20  g (for now).    
130e0 20 20 69 66 20 28 61 74 74 72 20 3d 20 67 65 74    if (attr = get
130f0 41 74 74 72 69 62 75 74 65 28 64 6f 6d 2c 20 4c  Attribute(dom, L
13100 4f 4f 50 5f 44 49 52 45 43 54 49 56 45 29 29 20  OOP_DIRECTIVE)) 
13110 7b 0a 20 20 20 20 20 20 20 20 69 66 28 69 73 56  {.        if(isV
13120 69 72 74 75 61 6c 29 20 7b 20 73 65 74 41 74 74  irtual) { setAtt
13130 72 69 62 75 74 65 28 64 6f 6d 2c 20 27 6c 6f 6f  ribute(dom, 'loo
13140 70 56 69 72 74 75 61 6c 27 2c 20 74 72 75 65 29  pVirtual', true)
13150 3b 20 7d 20 2f 2f 20 69 67 6e 6f 72 65 20 68 65  ; } // ignore he
13160 72 65 2c 20 68 61 6e 64 6c 65 64 20 69 6e 20 5f  re, handled in _
13170 65 61 63 68 0a 20 20 20 20 20 20 20 20 65 78 70  each.        exp
13180 72 65 73 73 69 6f 6e 73 2e 70 75 73 68 28 5f 65  ressions.push(_e
13190 61 63 68 28 64 6f 6d 2c 20 74 68 69 73 24 31 2c  ach(dom, this$1,
131a0 20 61 74 74 72 29 29 3b 0a 20 20 20 20 20 20 20   attr));.       
131b0 20 72 65 74 75 72 6e 20 66 61 6c 73 65 0a 20 20   return false.  
131c0 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 2f 2f 20      }..      // 
131d0 69 66 2d 61 74 74 72 73 20 62 65 63 6f 6d 65 20  if-attrs become 
131e0 74 68 65 20 6e 65 77 20 70 61 72 65 6e 74 2e 20  the new parent. 
131f0 41 6e 79 20 66 6f 6c 6c 6f 77 69 6e 67 20 65 78  Any following ex
13200 70 72 65 73 73 69 6f 6e 73 20 28 65 69 74 68 65  pressions (eithe
13210 72 20 6f 6e 20 74 68 65 20 63 75 72 72 65 6e 74  r on the current
13220 0a 20 20 20 20 20 20 2f 2f 20 65 6c 65 6d 65 6e  .      // elemen
13230 74 2c 20 6f 72 20 62 65 6c 6f 77 20 69 74 29 20  t, or below it) 
13240 62 65 63 6f 6d 65 20 63 68 69 6c 64 72 65 6e 20  become children 
13250 6f 66 20 74 68 69 73 20 65 78 70 72 65 73 73 69  of this expressi
13260 6f 6e 2e 0a 20 20 20 20 20 20 69 66 20 28 61 74  on..      if (at
13270 74 72 20 3d 20 67 65 74 41 74 74 72 69 62 75 74  tr = getAttribut
13280 65 28 64 6f 6d 2c 20 43 4f 4e 44 49 54 49 4f 4e  e(dom, CONDITION
13290 41 4c 5f 44 49 52 45 43 54 49 56 45 29 29 20 7b  AL_DIRECTIVE)) {
132a0 0a 20 20 20 20 20 20 20 20 65 78 70 72 65 73 73  .        express
132b0 69 6f 6e 73 2e 70 75 73 68 28 63 72 65 61 74 65  ions.push(create
132c0 49 66 44 69 72 65 63 74 69 76 65 28 64 6f 6d 2c  IfDirective(dom,
132d0 20 74 68 69 73 24 31 2c 20 61 74 74 72 29 29 3b   this$1, attr));
132e0 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
132f0 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 0a 0a 20  false.      }.. 
13300 20 20 20 20 20 69 66 20 28 61 74 74 72 20 3d 20       if (attr = 
13310 67 65 74 41 74 74 72 69 62 75 74 65 28 64 6f 6d  getAttribute(dom
13320 2c 20 49 53 5f 44 49 52 45 43 54 49 56 45 29 29  , IS_DIRECTIVE))
13330 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20 28 74   {.        if (t
13340 6d 70 6c 2e 68 61 73 45 78 70 72 28 61 74 74 72  mpl.hasExpr(attr
13350 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 65  )) {.          e
13360 78 70 72 65 73 73 69 6f 6e 73 2e 70 75 73 68 28  xpressions.push(
13370 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 73  {.            is
13380 52 74 61 67 3a 20 74 72 75 65 2c 0a 20 20 20 20  Rtag: true,.    
13390 20 20 20 20 20 20 20 20 65 78 70 72 3a 20 61 74          expr: at
133a0 74 72 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20  tr,.            
133b0 64 6f 6d 3a 20 64 6f 6d 2c 0a 20 20 20 20 20 20  dom: dom,.      
133c0 20 20 20 20 20 20 61 74 74 72 73 3a 20 5b 5d 2e        attrs: [].
133d0 73 6c 69 63 65 2e 63 61 6c 6c 28 64 6f 6d 2e 61  slice.call(dom.a
133e0 74 74 72 69 62 75 74 65 73 29 0a 20 20 20 20 20  ttributes).     
133f0 20 20 20 20 20 7d 29 3b 0a 0a 20 20 20 20 20 20       });..      
13400 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
13410 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20  .        }.     
13420 20 7d 0a 0a 20 20 20 20 20 20 2f 2f 20 69 66 20   }..      // if 
13430 74 68 69 73 20 69 73 20 61 20 74 61 67 2c 20 73  this is a tag, s
13440 74 6f 70 20 74 72 61 76 65 72 73 69 6e 67 20 68  top traversing h
13450 65 72 65 2e 0a 20 20 20 20 20 20 2f 2f 20 77 65  ere..      // we
13460 20 69 67 6e 6f 72 65 20 74 68 65 20 72 6f 6f 74   ignore the root
13470 2c 20 73 69 6e 63 65 20 70 61 72 73 65 45 78 70  , since parseExp
13480 72 65 73 73 69 6f 6e 73 20 69 73 20 63 61 6c 6c  ressions is call
13490 65 64 20 77 68 69 6c 65 20 77 65 27 72 65 20 6d  ed while we're m
134a0 6f 75 6e 74 69 6e 67 20 74 68 61 74 20 72 6f 6f  ounting that roo
134b0 74 0a 20 20 20 20 20 20 74 61 67 49 6d 70 6c 20  t.      tagImpl 
134c0 3d 20 67 65 74 28 64 6f 6d 29 3b 0a 0a 20 20 20  = get(dom);..   
134d0 20 20 20 69 66 28 69 73 56 69 72 74 75 61 6c 29     if(isVirtual)
134e0 20 7b 0a 20 20 20 20 20 20 20 20 69 66 28 67 65   {.        if(ge
134f0 74 41 74 74 72 69 62 75 74 65 28 64 6f 6d 2c 20  tAttribute(dom, 
13500 27 76 69 72 74 75 61 6c 69 7a 65 64 27 29 29 20  'virtualized')) 
13510 7b 64 6f 6d 2e 70 61 72 65 6e 74 45 6c 65 6d 65  {dom.parentEleme
13520 6e 74 2e 72 65 6d 6f 76 65 43 68 69 6c 64 28 64  nt.removeChild(d
13530 6f 6d 29 3b 20 7d 20 2f 2f 20 74 61 67 20 63 72  om); } // tag cr
13540 65 61 74 65 64 2c 20 72 65 6d 6f 76 65 20 66 72  eated, remove fr
13550 6f 6d 20 64 6f 6d 0a 20 20 20 20 20 20 20 20 69  om dom.        i
13560 66 28 21 74 61 67 49 6d 70 6c 20 26 26 20 21 67  f(!tagImpl && !g
13570 65 74 41 74 74 72 69 62 75 74 65 28 64 6f 6d 2c  etAttribute(dom,
13580 20 27 76 69 72 74 75 61 6c 69 7a 65 64 27 29 20   'virtualized') 
13590 26 26 20 21 67 65 74 41 74 74 72 69 62 75 74 65  && !getAttribute
135a0 28 64 6f 6d 2c 20 27 6c 6f 6f 70 56 69 72 74 75  (dom, 'loopVirtu
135b0 61 6c 27 29 29 20 20 2f 2f 20 6f 6b 20 74 6f 20  al'))  // ok to 
135c0 63 72 65 61 74 65 20 76 69 72 74 75 61 6c 20 74  create virtual t
135d0 61 67 0a 20 20 20 20 20 20 20 20 20 20 7b 20 74  ag.          { t
135e0 61 67 49 6d 70 6c 20 3d 20 7b 20 74 6d 70 6c 3a  agImpl = { tmpl:
135f0 20 64 6f 6d 2e 6f 75 74 65 72 48 54 4d 4c 20 7d   dom.outerHTML }
13600 3b 20 7d 0a 20 20 20 20 20 20 7d 0a 0a 20 20 20  ; }.      }..   
13610 20 20 20 69 66 20 28 74 61 67 49 6d 70 6c 20 26     if (tagImpl &
13620 26 20 28 64 6f 6d 20 21 3d 3d 20 72 6f 6f 74 20  & (dom !== root 
13630 7c 7c 20 6d 75 73 74 49 6e 63 6c 75 64 65 52 6f  || mustIncludeRo
13640 6f 74 29 29 20 7b 0a 20 20 20 20 20 20 20 20 76  ot)) {.        v
13650 61 72 20 68 61 73 49 73 44 69 72 65 63 74 69 76  ar hasIsDirectiv
13660 65 20 3d 20 67 65 74 41 74 74 72 69 62 75 74 65  e = getAttribute
13670 28 64 6f 6d 2c 20 49 53 5f 44 49 52 45 43 54 49  (dom, IS_DIRECTI
13680 56 45 29 3b 0a 20 20 20 20 20 20 20 20 69 66 28  VE);.        if(
13690 69 73 56 69 72 74 75 61 6c 20 26 26 20 21 68 61  isVirtual && !ha
136a0 73 49 73 44 69 72 65 63 74 69 76 65 29 20 7b 20  sIsDirective) { 
136b0 2f 2f 20 68 61 6e 64 6c 65 64 20 69 6e 20 75 70  // handled in up
136c0 64 61 74 65 0a 20 20 20 20 20 20 20 20 20 20 2f  date.          /
136d0 2f 20 63 61 6e 20 6e 6f 74 20 72 65 6d 6f 76 65  / can not remove
136e0 20 61 74 74 72 69 62 75 74 65 20 6c 69 6b 65 20   attribute like 
136f0 64 69 72 65 63 74 69 76 65 73 0a 20 20 20 20 20  directives.     
13700 20 20 20 20 20 2f 2f 20 73 6f 20 66 6c 61 67 20       // so flag 
13710 66 6f 72 20 72 65 6d 6f 76 61 6c 20 61 66 74 65  for removal afte
13720 72 20 63 72 65 61 74 69 6f 6e 20 74 6f 20 70 72  r creation to pr
13730 65 76 65 6e 74 20 6d 61 78 69 6d 75 6d 20 73 74  event maximum st
13740 61 63 6b 20 65 72 72 6f 72 0a 20 20 20 20 20 20  ack error.      
13750 20 20 20 20 73 65 74 41 74 74 72 69 62 75 74 65      setAttribute
13760 28 64 6f 6d 2c 20 27 76 69 72 74 75 61 6c 69 7a  (dom, 'virtualiz
13770 65 64 27 2c 20 74 72 75 65 29 3b 0a 20 20 20 20  ed', true);.    
13780 20 20 20 20 20 20 76 61 72 20 74 61 67 20 3d 20        var tag = 
13790 63 72 65 61 74 65 54 61 67 28 0a 20 20 20 20 20  createTag(.     
137a0 20 20 20 20 20 20 20 7b 74 6d 70 6c 3a 20 64 6f         {tmpl: do
137b0 6d 2e 6f 75 74 65 72 48 54 4d 4c 7d 2c 0a 20 20  m.outerHTML},.  
137c0 20 20 20 20 20 20 20 20 20 20 7b 72 6f 6f 74 3a            {root:
137d0 20 64 6f 6d 2c 20 70 61 72 65 6e 74 3a 20 74 68   dom, parent: th
137e0 69 73 24 31 7d 2c 0a 20 20 20 20 20 20 20 20 20  is$1},.         
137f0 20 20 20 64 6f 6d 2e 69 6e 6e 65 72 48 54 4d 4c     dom.innerHTML
13800 0a 20 20 20 20 20 20 20 20 20 20 29 3b 0a 0a 20  .          );.. 
13810 20 20 20 20 20 20 20 20 20 65 78 70 72 65 73 73           express
13820 69 6f 6e 73 2e 70 75 73 68 28 74 61 67 29 3b 20  ions.push(tag); 
13830 2f 2f 20 6e 6f 20 72 65 74 75 72 6e 2c 20 61 6e  // no return, an
13840 6f 6e 79 6d 6f 75 73 20 74 61 67 2c 20 6b 65 65  onymous tag, kee
13850 70 20 70 61 72 73 69 6e 67 0a 20 20 20 20 20 20  p parsing.      
13860 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20    } else {.     
13870 20 20 20 20 20 69 66 20 28 68 61 73 49 73 44 69       if (hasIsDi
13880 72 65 63 74 69 76 65 20 26 26 20 69 73 56 69 72  rective && isVir
13890 74 75 61 6c 29 0a 20 20 20 20 20 20 20 20 20 20  tual).          
138a0 20 20 7b 20 77 61 72 6e 28 28 22 56 69 72 74 75    { warn(("Virtu
138b0 61 6c 20 74 61 67 73 20 73 68 6f 75 6c 64 6e 27  al tags shouldn'
138c0 74 20 62 65 20 75 73 65 64 20 74 6f 67 65 74 68  t be used togeth
138d0 65 72 20 77 69 74 68 20 74 68 65 20 5c 22 22 20  er with the \"" 
138e0 2b 20 49 53 5f 44 49 52 45 43 54 49 56 45 20 2b  + IS_DIRECTIVE +
138f0 20 22 5c 22 20 61 74 74 72 69 62 75 74 65 20 2d   "\" attribute -
13900 20 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e   https://github.
13910 63 6f 6d 2f 72 69 6f 74 2f 72 69 6f 74 2f 69 73  com/riot/riot/is
13920 73 75 65 73 2f 32 35 31 31 22 29 29 3b 20 7d 0a  sues/2511")); }.
13930 0a 20 20 20 20 20 20 20 20 20 20 65 78 70 72 65  .          expre
13940 73 73 69 6f 6e 73 2e 70 75 73 68 28 0a 20 20 20  ssions.push(.   
13950 20 20 20 20 20 20 20 20 20 69 6e 69 74 43 68 69           initChi
13960 6c 64 28 0a 20 20 20 20 20 20 20 20 20 20 20 20  ld(.            
13970 20 20 74 61 67 49 6d 70 6c 2c 0a 20 20 20 20 20    tagImpl,.     
13980 20 20 20 20 20 20 20 20 20 7b 0a 20 20 20 20 20           {.     
13990 20 20 20 20 20 20 20 20 20 20 20 72 6f 6f 74 3a             root:
139a0 20 64 6f 6d 2c 0a 20 20 20 20 20 20 20 20 20 20   dom,.          
139b0 20 20 20 20 20 20 70 61 72 65 6e 74 3a 20 74 68        parent: th
139c0 69 73 24 31 0a 20 20 20 20 20 20 20 20 20 20 20  is$1.           
139d0 20 20 20 7d 2c 0a 20 20 20 20 20 20 20 20 20 20     },.          
139e0 20 20 20 20 64 6f 6d 2e 69 6e 6e 65 72 48 54 4d      dom.innerHTM
139f0 4c 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  L,.             
13a00 20 74 68 69 73 24 31 0a 20 20 20 20 20 20 20 20   this$1.        
13a10 20 20 20 20 29 0a 20 20 20 20 20 20 20 20 20 20      ).          
13a20 29 3b 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  );.          ret
13a30 75 72 6e 20 66 61 6c 73 65 0a 20 20 20 20 20 20  urn false.      
13a40 20 20 7d 0a 20 20 20 20 20 20 7d 0a 0a 20 20 20    }.      }..   
13a50 20 20 20 2f 2f 20 61 74 74 72 69 62 75 74 65 20     // attribute 
13a60 65 78 70 72 65 73 73 69 6f 6e 73 0a 20 20 20 20  expressions.    
13a70 20 20 70 61 72 73 65 41 74 74 72 69 62 75 74 65    parseAttribute
13a80 73 2e 61 70 70 6c 79 28 74 68 69 73 24 31 2c 20  s.apply(this$1, 
13a90 5b 64 6f 6d 2c 20 64 6f 6d 2e 61 74 74 72 69 62  [dom, dom.attrib
13aa0 75 74 65 73 2c 20 66 75 6e 63 74 69 6f 6e 20 28  utes, function (
13ab0 61 74 74 72 2c 20 65 78 70 72 29 20 7b 0a 20 20  attr, expr) {.  
13ac0 20 20 20 20 20 20 69 66 20 28 21 65 78 70 72 29        if (!expr)
13ad0 20 7b 20 72 65 74 75 72 6e 20 7d 0a 20 20 20 20   { return }.    
13ae0 20 20 20 20 65 78 70 72 65 73 73 69 6f 6e 73 2e      expressions.
13af0 70 75 73 68 28 65 78 70 72 29 3b 0a 20 20 20 20  push(expr);.    
13b00 20 20 7d 5d 29 3b 0a 20 20 20 20 7d 29 3b 0a 0a    }]);.    });..
13b10 20 20 20 20 72 65 74 75 72 6e 20 65 78 70 72 65      return expre
13b20 73 73 69 6f 6e 73 0a 20 20 7d 0a 0a 20 20 2f 2a  ssions.  }..  /*
13b30 2a 0a 20 20 20 2a 20 43 61 6c 6c 73 20 60 66 6e  *.   * Calls `fn
13b40 60 20 66 6f 72 20 65 76 65 72 79 20 61 74 74 72  ` for every attr
13b50 69 62 75 74 65 20 6f 6e 20 61 6e 20 65 6c 65 6d  ibute on an elem
13b60 65 6e 74 2e 20 49 66 20 74 68 61 74 20 61 74 74  ent. If that att
13b70 72 20 68 61 73 20 61 6e 20 65 78 70 72 65 73 73  r has an express
13b80 69 6f 6e 2c 0a 20 20 20 2a 20 69 74 20 69 73 20  ion,.   * it is 
13b90 61 6c 73 6f 20 70 61 73 73 65 64 20 74 6f 20 66  also passed to f
13ba0 6e 2e 0a 20 20 20 2a 20 40 74 68 69 73 20 54 61  n..   * @this Ta
13bb0 67 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20  g.   * @param   
13bc0 7b 20 48 54 4d 4c 45 6c 65 6d 65 6e 74 20 7d 20  { HTMLElement } 
13bd0 64 6f 6d 20 2d 20 64 6f 6d 20 6e 6f 64 65 20 74  dom - dom node t
13be0 6f 20 70 61 72 73 65 0a 20 20 20 2a 20 40 70 61  o parse.   * @pa
13bf0 72 61 6d 20 20 20 7b 20 41 72 72 61 79 20 7d 20  ram   { Array } 
13c00 61 74 74 72 73 20 2d 20 61 72 72 61 79 20 6f 66  attrs - array of
13c10 20 61 74 74 72 69 62 75 74 65 73 0a 20 20 20 2a   attributes.   *
13c20 20 40 70 61 72 61 6d 20 20 20 7b 20 46 75 6e 63   @param   { Func
13c30 74 69 6f 6e 20 7d 20 66 6e 20 2d 20 63 61 6c 6c  tion } fn - call
13c40 62 61 63 6b 20 74 6f 20 65 78 65 63 20 6f 6e 20  back to exec on 
13c50 61 6e 79 20 69 74 65 72 61 74 69 6f 6e 0a 20 20  any iteration.  
13c60 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 70   */.  function p
13c70 61 72 73 65 41 74 74 72 69 62 75 74 65 73 28 64  arseAttributes(d
13c80 6f 6d 2c 20 61 74 74 72 73 2c 20 66 6e 29 20 7b  om, attrs, fn) {
13c90 0a 20 20 20 20 76 61 72 20 74 68 69 73 24 31 20  .    var this$1 
13ca0 3d 20 74 68 69 73 3b 0a 0a 20 20 20 20 65 61 63  = this;..    eac
13cb0 68 28 61 74 74 72 73 2c 20 66 75 6e 63 74 69 6f  h(attrs, functio
13cc0 6e 20 28 61 74 74 72 29 20 7b 0a 20 20 20 20 20  n (attr) {.     
13cd0 20 69 66 20 28 21 61 74 74 72 29 20 7b 20 72 65   if (!attr) { re
13ce0 74 75 72 6e 20 66 61 6c 73 65 20 7d 0a 0a 20 20  turn false }..  
13cf0 20 20 20 20 76 61 72 20 6e 61 6d 65 20 3d 20 61      var name = a
13d00 74 74 72 2e 6e 61 6d 65 3b 0a 20 20 20 20 20 20  ttr.name;.      
13d10 76 61 72 20 62 6f 6f 6c 20 3d 20 69 73 42 6f 6f  var bool = isBoo
13d20 6c 41 74 74 72 28 6e 61 6d 65 29 3b 0a 20 20 20  lAttr(name);.   
13d30 20 20 20 76 61 72 20 65 78 70 72 3b 0a 0a 20 20     var expr;..  
13d40 20 20 20 20 69 66 20 28 63 6f 6e 74 61 69 6e 73      if (contains
13d50 28 52 45 46 5f 44 49 52 45 43 54 49 56 45 53 2c  (REF_DIRECTIVES,
13d60 20 6e 61 6d 65 29 20 26 26 20 64 6f 6d 2e 74 61   name) && dom.ta
13d70 67 4e 61 6d 65 2e 74 6f 4c 6f 77 65 72 43 61 73  gName.toLowerCas
13d80 65 28 29 20 21 3d 3d 20 59 49 45 4c 44 5f 54 41  e() !== YIELD_TA
13d90 47 29 20 7b 0a 20 20 20 20 20 20 20 20 65 78 70  G) {.        exp
13da0 72 20 3d 20 20 63 72 65 61 74 65 52 65 66 44 69  r =  createRefDi
13db0 72 65 63 74 69 76 65 28 64 6f 6d 2c 20 74 68 69  rective(dom, thi
13dc0 73 24 31 2c 20 6e 61 6d 65 2c 20 61 74 74 72 2e  s$1, name, attr.
13dd0 76 61 6c 75 65 29 3b 0a 20 20 20 20 20 20 7d 20  value);.      } 
13de0 65 6c 73 65 20 69 66 20 28 74 6d 70 6c 2e 68 61  else if (tmpl.ha
13df0 73 45 78 70 72 28 61 74 74 72 2e 76 61 6c 75 65  sExpr(attr.value
13e00 29 29 20 7b 0a 20 20 20 20 20 20 20 20 65 78 70  )) {.        exp
13e10 72 20 3d 20 7b 64 6f 6d 3a 20 64 6f 6d 2c 20 65  r = {dom: dom, e
13e20 78 70 72 3a 20 61 74 74 72 2e 76 61 6c 75 65 2c  xpr: attr.value,
13e30 20 61 74 74 72 3a 20 6e 61 6d 65 2c 20 62 6f 6f   attr: name, boo
13e40 6c 3a 20 62 6f 6f 6c 7d 3b 0a 20 20 20 20 20 20  l: bool};.      
13e50 7d 0a 0a 20 20 20 20 20 20 66 6e 28 61 74 74 72  }..      fn(attr
13e60 2c 20 65 78 70 72 29 3b 0a 20 20 20 20 7d 29 3b  , expr);.    });
13e70 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a  .  }..  /**.   *
13e80 20 4d 61 6e 61 67 65 20 74 68 65 20 6d 6f 75 6e   Manage the moun
13e90 74 20 73 74 61 74 65 20 6f 66 20 61 20 74 61 67  t state of a tag
13ea0 20 74 72 69 67 67 65 72 69 6e 67 20 61 6c 73 6f   triggering also
13eb0 20 74 68 65 20 6f 62 73 65 72 76 61 62 6c 65 20   the observable 
13ec0 65 76 65 6e 74 73 0a 20 20 20 2a 20 40 74 68 69  events.   * @thi
13ed0 73 20 54 61 67 0a 20 20 20 2a 20 40 70 61 72 61  s Tag.   * @para
13ee0 6d 20 7b 20 42 6f 6f 6c 65 61 6e 20 7d 20 76 61  m { Boolean } va
13ef0 6c 75 65 20 2d 20 2e 2e 6f 66 20 74 68 65 20 69  lue - ..of the i
13f00 73 4d 6f 75 6e 74 65 64 20 66 6c 61 67 0a 20 20  sMounted flag.  
13f10 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 73   */.  function s
13f20 65 74 4d 6f 75 6e 74 53 74 61 74 65 28 76 61 6c  etMountState(val
13f30 75 65 29 20 7b 0a 20 20 20 20 76 61 72 20 72 65  ue) {.    var re
13f40 66 20 3d 20 74 68 69 73 2e 5f 5f 3b 0a 20 20 20  f = this.__;.   
13f50 20 76 61 72 20 69 73 41 6e 6f 6e 79 6d 6f 75 73   var isAnonymous
13f60 20 3d 20 72 65 66 2e 69 73 41 6e 6f 6e 79 6d 6f   = ref.isAnonymo
13f70 75 73 3b 0a 20 20 20 20 76 61 72 20 73 6b 69 70  us;.    var skip
13f80 41 6e 6f 6e 79 6d 6f 75 73 20 3d 20 72 65 66 2e  Anonymous = ref.
13f90 73 6b 69 70 41 6e 6f 6e 79 6d 6f 75 73 3b 0a 0a  skipAnonymous;..
13fa0 20 20 20 20 64 65 66 69 6e 65 28 74 68 69 73 2c      define(this,
13fb0 20 27 69 73 4d 6f 75 6e 74 65 64 27 2c 20 76 61   'isMounted', va
13fc0 6c 75 65 29 3b 0a 0a 20 20 20 20 69 66 20 28 21  lue);..    if (!
13fd0 69 73 41 6e 6f 6e 79 6d 6f 75 73 20 7c 7c 20 21  isAnonymous || !
13fe0 73 6b 69 70 41 6e 6f 6e 79 6d 6f 75 73 29 20 7b  skipAnonymous) {
13ff0 0a 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65  .      if (value
14000 29 20 7b 20 74 68 69 73 2e 74 72 69 67 67 65 72  ) { this.trigger
14010 28 27 6d 6f 75 6e 74 27 29 3b 20 7d 0a 20 20 20  ('mount'); }.   
14020 20 20 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20     else {.      
14030 20 20 74 68 69 73 2e 74 72 69 67 67 65 72 28 27    this.trigger('
14040 75 6e 6d 6f 75 6e 74 27 29 3b 0a 20 20 20 20 20  unmount');.     
14050 20 20 20 74 68 69 73 2e 6f 66 66 28 27 2a 27 29     this.off('*')
14060 3b 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f  ;.        this._
14070 5f 2e 77 61 73 43 72 65 61 74 65 64 20 3d 20 66  _.wasCreated = f
14080 61 6c 73 65 3b 0a 20 20 20 20 20 20 7d 0a 20 20  alse;.      }.  
14090 20 20 7d 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20    }.  }..  /**. 
140a0 20 20 2a 20 4d 6f 75 6e 74 20 74 68 65 20 63 75    * Mount the cu
140b0 72 72 65 6e 74 20 74 61 67 20 69 6e 73 74 61 6e  rrent tag instan
140c0 63 65 0a 20 20 20 2a 20 40 72 65 74 75 72 6e 73  ce.   * @returns
140d0 20 7b 20 54 61 67 20 7d 20 74 68 65 20 63 75 72   { Tag } the cur
140e0 72 65 6e 74 20 74 61 67 20 69 6e 73 74 61 6e 63  rent tag instanc
140f0 65 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69  e.   */.  functi
14100 6f 6e 20 63 6f 6d 70 6f 6e 65 6e 74 4d 6f 75 6e  on componentMoun
14110 74 28 74 61 67 24 24 31 2c 20 64 6f 6d 2c 20 65  t(tag$$1, dom, e
14120 78 70 72 65 73 73 69 6f 6e 73 2c 20 6f 70 74 73  xpressions, opts
14130 29 20 7b 0a 20 20 20 20 76 61 72 20 5f 5f 20 3d  ) {.    var __ =
14140 20 74 61 67 24 24 31 2e 5f 5f 3b 0a 20 20 20 20   tag$$1.__;.    
14150 76 61 72 20 72 6f 6f 74 20 3d 20 5f 5f 2e 72 6f  var root = __.ro
14160 6f 74 3b 0a 20 20 20 20 72 6f 6f 74 2e 5f 74 61  ot;.    root._ta
14170 67 20 3d 20 74 61 67 24 24 31 3b 20 2f 2f 20 6b  g = tag$$1; // k
14180 65 65 70 20 61 20 72 65 66 65 72 65 6e 63 65 20  eep a reference 
14190 74 6f 20 74 68 65 20 74 61 67 20 6a 75 73 74 20  to the tag just 
141a0 63 72 65 61 74 65 64 0a 0a 20 20 20 20 2f 2f 20  created..    // 
141b0 52 65 61 64 20 61 6c 6c 20 74 68 65 20 61 74 74  Read all the att
141c0 72 73 20 6f 6e 20 74 68 69 73 20 69 6e 73 74 61  rs on this insta
141d0 6e 63 65 2e 20 54 68 69 73 20 67 69 76 65 20 75  nce. This give u
141e0 73 20 74 68 65 20 69 6e 66 6f 20 77 65 20 6e 65  s the info we ne
141f0 65 64 20 66 6f 72 20 75 70 64 61 74 65 4f 70 74  ed for updateOpt
14200 73 0a 20 20 20 20 70 61 72 73 65 41 74 74 72 69  s.    parseAttri
14210 62 75 74 65 73 2e 61 70 70 6c 79 28 5f 5f 2e 70  butes.apply(__.p
14220 61 72 65 6e 74 2c 20 5b 72 6f 6f 74 2c 20 72 6f  arent, [root, ro
14230 6f 74 2e 61 74 74 72 69 62 75 74 65 73 2c 20 66  ot.attributes, f
14240 75 6e 63 74 69 6f 6e 20 28 61 74 74 72 2c 20 65  unction (attr, e
14250 78 70 72 29 20 7b 0a 20 20 20 20 20 20 69 66 20  xpr) {.      if 
14260 28 21 5f 5f 2e 69 73 41 6e 6f 6e 79 6d 6f 75 73  (!__.isAnonymous
14270 20 26 26 20 52 65 66 45 78 70 72 2e 69 73 50 72   && RefExpr.isPr
14280 6f 74 6f 74 79 70 65 4f 66 28 65 78 70 72 29 29  ototypeOf(expr))
14290 20 7b 20 65 78 70 72 2e 74 61 67 20 3d 20 74 61   { expr.tag = ta
142a0 67 24 24 31 3b 20 7d 0a 20 20 20 20 20 20 61 74  g$$1; }.      at
142b0 74 72 2e 65 78 70 72 20 3d 20 65 78 70 72 3b 0a  tr.expr = expr;.
142c0 20 20 20 20 20 20 5f 5f 2e 69 6e 73 74 41 74 74        __.instAtt
142d0 72 73 2e 70 75 73 68 28 61 74 74 72 29 3b 0a 20  rs.push(attr);. 
142e0 20 20 20 7d 5d 29 3b 0a 0a 20 20 20 20 2f 2f 20     }]);..    // 
142f0 75 70 64 61 74 65 20 74 68 65 20 72 6f 6f 74 20  update the root 
14300 61 64 64 69 6e 67 20 63 75 73 74 6f 6d 20 61 74  adding custom at
14310 74 72 69 62 75 74 65 73 20 63 6f 6d 69 6e 67 20  tributes coming 
14320 66 72 6f 6d 20 74 68 65 20 63 6f 6d 70 69 6c 65  from the compile
14330 72 0a 20 20 20 20 77 61 6c 6b 41 74 74 72 69 62  r.    walkAttrib
14340 75 74 65 73 28 5f 5f 2e 69 6d 70 6c 2e 61 74 74  utes(__.impl.att
14350 72 73 2c 20 66 75 6e 63 74 69 6f 6e 20 28 6b 2c  rs, function (k,
14360 20 76 29 20 7b 20 5f 5f 2e 69 6d 70 6c 41 74 74   v) { __.implAtt
14370 72 73 2e 70 75 73 68 28 7b 6e 61 6d 65 3a 20 6b  rs.push({name: k
14380 2c 20 76 61 6c 75 65 3a 20 76 7d 29 3b 20 7d 29  , value: v}); })
14390 3b 0a 20 20 20 20 70 61 72 73 65 41 74 74 72 69  ;.    parseAttri
143a0 62 75 74 65 73 2e 61 70 70 6c 79 28 74 61 67 24  butes.apply(tag$
143b0 24 31 2c 20 5b 72 6f 6f 74 2c 20 5f 5f 2e 69 6d  $1, [root, __.im
143c0 70 6c 41 74 74 72 73 2c 20 66 75 6e 63 74 69 6f  plAttrs, functio
143d0 6e 20 28 61 74 74 72 2c 20 65 78 70 72 29 20 7b  n (attr, expr) {
143e0 0a 20 20 20 20 20 20 69 66 20 28 65 78 70 72 29  .      if (expr)
143f0 20 7b 20 65 78 70 72 65 73 73 69 6f 6e 73 2e 70   { expressions.p
14400 75 73 68 28 65 78 70 72 29 3b 20 7d 0a 20 20 20  ush(expr); }.   
14410 20 20 20 65 6c 73 65 20 7b 20 73 65 74 41 74 74     else { setAtt
14420 72 69 62 75 74 65 28 72 6f 6f 74 2c 20 61 74 74  ribute(root, att
14430 72 2e 6e 61 6d 65 2c 20 61 74 74 72 2e 76 61 6c  r.name, attr.val
14440 75 65 29 3b 20 7d 0a 20 20 20 20 7d 5d 29 3b 0a  ue); }.    }]);.
14450 0a 20 20 20 20 2f 2f 20 69 6e 69 74 69 61 6c 69  .    // initiali
14460 61 74 69 6f 6e 0a 20 20 20 20 75 70 64 61 74 65  ation.    update
14470 4f 70 74 73 2e 61 70 70 6c 79 28 74 61 67 24 24  Opts.apply(tag$$
14480 31 2c 20 5b 5f 5f 2e 69 73 4c 6f 6f 70 2c 20 5f  1, [__.isLoop, _
14490 5f 2e 70 61 72 65 6e 74 2c 20 5f 5f 2e 69 73 41  _.parent, __.isA
144a0 6e 6f 6e 79 6d 6f 75 73 2c 20 6f 70 74 73 2c 20  nonymous, opts, 
144b0 5f 5f 2e 69 6e 73 74 41 74 74 72 73 5d 29 3b 0a  __.instAttrs]);.
144c0 0a 20 20 20 20 2f 2f 20 61 64 64 20 67 6c 6f 62  .    // add glob
144d0 61 6c 20 6d 69 78 69 6e 73 0a 20 20 20 20 76 61  al mixins.    va
144e0 72 20 67 6c 6f 62 61 6c 4d 69 78 69 6e 20 3d 20  r globalMixin = 
144f0 6d 69 78 69 6e 28 47 4c 4f 42 41 4c 5f 4d 49 58  mixin(GLOBAL_MIX
14500 49 4e 29 3b 0a 0a 20 20 20 20 69 66 20 28 67 6c  IN);..    if (gl
14510 6f 62 61 6c 4d 69 78 69 6e 20 26 26 20 21 5f 5f  obalMixin && !__
14520 2e 73 6b 69 70 41 6e 6f 6e 79 6d 6f 75 73 29 20  .skipAnonymous) 
14530 7b 0a 20 20 20 20 20 20 66 6f 72 20 28 76 61 72  {.      for (var
14540 20 69 20 69 6e 20 67 6c 6f 62 61 6c 4d 69 78 69   i in globalMixi
14550 6e 29 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20  n) {.        if 
14560 28 67 6c 6f 62 61 6c 4d 69 78 69 6e 2e 68 61 73  (globalMixin.has
14570 4f 77 6e 50 72 6f 70 65 72 74 79 28 69 29 29 20  OwnProperty(i)) 
14580 7b 0a 20 20 20 20 20 20 20 20 20 20 74 61 67 24  {.          tag$
14590 24 31 2e 6d 69 78 69 6e 28 67 6c 6f 62 61 6c 4d  $1.mixin(globalM
145a0 69 78 69 6e 5b 69 5d 29 3b 0a 20 20 20 20 20 20  ixin[i]);.      
145b0 20 20 7d 0a 20 20 20 20 20 20 7d 0a 20 20 20 20    }.      }.    
145c0 7d 0a 0a 20 20 20 20 69 66 20 28 5f 5f 2e 69 6d  }..    if (__.im
145d0 70 6c 2e 66 6e 29 20 7b 20 5f 5f 2e 69 6d 70 6c  pl.fn) { __.impl
145e0 2e 66 6e 2e 63 61 6c 6c 28 74 61 67 24 24 31 2c  .fn.call(tag$$1,
145f0 20 6f 70 74 73 29 3b 20 7d 0a 0a 20 20 20 20 69   opts); }..    i
14600 66 20 28 21 5f 5f 2e 73 6b 69 70 41 6e 6f 6e 79  f (!__.skipAnony
14610 6d 6f 75 73 29 20 7b 20 74 61 67 24 24 31 2e 74  mous) { tag$$1.t
14620 72 69 67 67 65 72 28 27 62 65 66 6f 72 65 2d 6d  rigger('before-m
14630 6f 75 6e 74 27 29 3b 20 7d 0a 0a 20 20 20 20 2f  ount'); }..    /
14640 2f 20 70 61 72 73 65 20 6c 61 79 6f 75 74 20 61  / parse layout a
14650 66 74 65 72 20 69 6e 69 74 2e 20 66 6e 20 6d 61  fter init. fn ma
14660 79 20 63 61 6c 63 75 6c 61 74 65 20 61 72 67 73  y calculate args
14670 20 66 6f 72 20 6e 65 73 74 65 64 20 63 75 73 74   for nested cust
14680 6f 6d 20 74 61 67 73 0a 20 20 20 20 65 61 63 68  om tags.    each
14690 28 70 61 72 73 65 45 78 70 72 65 73 73 69 6f 6e  (parseExpression
146a0 73 2e 61 70 70 6c 79 28 74 61 67 24 24 31 2c 20  s.apply(tag$$1, 
146b0 5b 64 6f 6d 2c 20 5f 5f 2e 69 73 41 6e 6f 6e 79  [dom, __.isAnony
146c0 6d 6f 75 73 5d 29 2c 20 66 75 6e 63 74 69 6f 6e  mous]), function
146d0 20 28 65 29 20 7b 20 72 65 74 75 72 6e 20 65 78   (e) { return ex
146e0 70 72 65 73 73 69 6f 6e 73 2e 70 75 73 68 28 65  pressions.push(e
146f0 29 3b 20 7d 29 3b 0a 0a 20 20 20 20 74 61 67 24  ); });..    tag$
14700 24 31 2e 75 70 64 61 74 65 28 5f 5f 2e 69 74 65  $1.update(__.ite
14710 6d 29 3b 0a 0a 20 20 20 20 69 66 20 28 21 5f 5f  m);..    if (!__
14720 2e 69 73 41 6e 6f 6e 79 6d 6f 75 73 20 26 26 20  .isAnonymous && 
14730 21 5f 5f 2e 69 73 49 6e 6c 69 6e 65 29 20 7b 0a  !__.isInline) {.
14740 20 20 20 20 20 20 77 68 69 6c 65 20 28 64 6f 6d        while (dom
14750 2e 66 69 72 73 74 43 68 69 6c 64 29 20 7b 20 72  .firstChild) { r
14760 6f 6f 74 2e 61 70 70 65 6e 64 43 68 69 6c 64 28  oot.appendChild(
14770 64 6f 6d 2e 66 69 72 73 74 43 68 69 6c 64 29 3b  dom.firstChild);
14780 20 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 64 65   }.    }..    de
14790 66 69 6e 65 28 74 61 67 24 24 31 2c 20 27 72 6f  fine(tag$$1, 'ro
147a0 6f 74 27 2c 20 72 6f 6f 74 29 3b 0a 0a 20 20 20  ot', root);..   
147b0 20 2f 2f 20 69 66 20 77 65 20 6e 65 65 64 20 74   // if we need t
147c0 6f 20 77 61 69 74 20 74 68 61 74 20 74 68 65 20  o wait that the 
147d0 70 61 72 65 6e 74 20 22 6d 6f 75 6e 74 22 20 6f  parent "mount" o
147e0 72 20 22 75 70 64 61 74 65 64 22 20 65 76 65 6e  r "updated" even
147f0 74 20 67 65 74 73 20 74 72 69 67 67 65 72 65 64  t gets triggered
14800 0a 20 20 20 20 69 66 20 28 21 5f 5f 2e 73 6b 69  .    if (!__.ski
14810 70 41 6e 6f 6e 79 6d 6f 75 73 20 26 26 20 74 61  pAnonymous && ta
14820 67 24 24 31 2e 70 61 72 65 6e 74 29 20 7b 0a 20  g$$1.parent) {. 
14830 20 20 20 20 20 76 61 72 20 70 20 3d 20 67 65 74       var p = get
14840 49 6d 6d 65 64 69 61 74 65 43 75 73 74 6f 6d 50  ImmediateCustomP
14850 61 72 65 6e 74 28 74 61 67 24 24 31 2e 70 61 72  arent(tag$$1.par
14860 65 6e 74 29 3b 0a 20 20 20 20 20 20 70 2e 6f 6e  ent);.      p.on
14870 65 28 21 70 2e 69 73 4d 6f 75 6e 74 65 64 20 3f  e(!p.isMounted ?
14880 20 27 6d 6f 75 6e 74 27 20 3a 20 27 75 70 64 61   'mount' : 'upda
14890 74 65 64 27 2c 20 66 75 6e 63 74 69 6f 6e 20 28  ted', function (
148a0 29 20 7b 0a 20 20 20 20 20 20 20 20 73 65 74 4d  ) {.        setM
148b0 6f 75 6e 74 53 74 61 74 65 2e 63 61 6c 6c 28 74  ountState.call(t
148c0 61 67 24 24 31 2c 20 74 72 75 65 29 3b 0a 20 20  ag$$1, true);.  
148d0 20 20 20 20 7d 29 3b 0a 20 20 20 20 7d 20 65 6c      });.    } el
148e0 73 65 20 7b 0a 20 20 20 20 20 20 2f 2f 20 6f 74  se {.      // ot
148f0 68 65 72 77 69 73 65 20 69 74 27 73 20 6e 6f 74  herwise it's not
14900 20 61 20 63 68 69 6c 64 20 74 61 67 20 77 65 20   a child tag we 
14910 63 61 6e 20 74 72 69 67 67 65 72 20 69 74 73 20  can trigger its 
14920 6d 6f 75 6e 74 20 65 76 65 6e 74 0a 20 20 20 20  mount event.    
14930 20 20 73 65 74 4d 6f 75 6e 74 53 74 61 74 65 2e    setMountState.
14940 63 61 6c 6c 28 74 61 67 24 24 31 2c 20 74 72 75  call(tag$$1, tru
14950 65 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 74  e);.    }..    t
14960 61 67 24 24 31 2e 5f 5f 2e 77 61 73 43 72 65 61  ag$$1.__.wasCrea
14970 74 65 64 20 3d 20 74 72 75 65 3b 0a 0a 20 20 20  ted = true;..   
14980 20 72 65 74 75 72 6e 20 74 61 67 24 24 31 0a 20   return tag$$1. 
14990 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 55   }..  /**.   * U
149a0 6e 6d 6f 75 6e 74 20 74 68 65 20 74 61 67 20 69  nmount the tag i
149b0 6e 73 74 61 6e 63 65 0a 20 20 20 2a 20 40 70 61  nstance.   * @pa
149c0 72 61 6d 20 7b 20 42 6f 6f 6c 65 61 6e 20 7d 20  ram { Boolean } 
149d0 6d 75 73 74 4b 65 65 70 52 6f 6f 74 20 2d 20 69  mustKeepRoot - i
149e0 66 20 69 74 27 73 20 74 72 75 65 20 74 68 65 20  f it's true the 
149f0 72 6f 6f 74 20 6e 6f 64 65 20 77 69 6c 6c 20 6e  root node will n
14a00 6f 74 20 62 65 20 72 65 6d 6f 76 65 64 0a 20 20  ot be removed.  
14a10 20 2a 20 40 72 65 74 75 72 6e 73 20 7b 20 54 61   * @returns { Ta
14a20 67 20 7d 20 74 68 65 20 63 75 72 72 65 6e 74 20  g } the current 
14a30 74 61 67 20 69 6e 73 74 61 6e 63 65 0a 20 20 20  tag instance.   
14a40 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 74 61  */.  function ta
14a50 67 55 6e 6d 6f 75 6e 74 28 74 61 67 2c 20 6d 75  gUnmount(tag, mu
14a60 73 74 4b 65 65 70 52 6f 6f 74 2c 20 65 78 70 72  stKeepRoot, expr
14a70 65 73 73 69 6f 6e 73 29 20 7b 0a 20 20 20 20 76  essions) {.    v
14a80 61 72 20 5f 5f 20 3d 20 74 61 67 2e 5f 5f 3b 0a  ar __ = tag.__;.
14a90 20 20 20 20 76 61 72 20 72 6f 6f 74 20 3d 20 5f      var root = _
14aa0 5f 2e 72 6f 6f 74 3b 0a 20 20 20 20 76 61 72 20  _.root;.    var 
14ab0 74 61 67 49 6e 64 65 78 20 3d 20 5f 5f 54 41 47  tagIndex = __TAG
14ac0 53 5f 43 41 43 48 45 2e 69 6e 64 65 78 4f 66 28  S_CACHE.indexOf(
14ad0 74 61 67 29 3b 0a 20 20 20 20 76 61 72 20 70 20  tag);.    var p 
14ae0 3d 20 72 6f 6f 74 2e 70 61 72 65 6e 74 4e 6f 64  = root.parentNod
14af0 65 3b 0a 0a 20 20 20 20 69 66 20 28 21 5f 5f 2e  e;..    if (!__.
14b00 73 6b 69 70 41 6e 6f 6e 79 6d 6f 75 73 29 20 7b  skipAnonymous) {
14b10 20 74 61 67 2e 74 72 69 67 67 65 72 28 27 62 65   tag.trigger('be
14b20 66 6f 72 65 2d 75 6e 6d 6f 75 6e 74 27 29 3b 20  fore-unmount'); 
14b30 7d 0a 0a 20 20 20 20 2f 2f 20 63 6c 65 61 72 20  }..    // clear 
14b40 61 6c 6c 20 61 74 74 72 69 62 75 74 65 73 20 63  all attributes c
14b50 6f 6d 69 6e 67 20 66 72 6f 6d 20 74 68 65 20 6d  oming from the m
14b60 6f 75 6e 74 65 64 20 74 61 67 0a 20 20 20 20 77  ounted tag.    w
14b70 61 6c 6b 41 74 74 72 69 62 75 74 65 73 28 5f 5f  alkAttributes(__
14b80 2e 69 6d 70 6c 2e 61 74 74 72 73 2c 20 66 75 6e  .impl.attrs, fun
14b90 63 74 69 6f 6e 20 28 6e 61 6d 65 29 20 7b 0a 20  ction (name) {. 
14ba0 20 20 20 20 20 69 66 20 28 73 74 61 72 74 73 57       if (startsW
14bb0 69 74 68 28 6e 61 6d 65 2c 20 41 54 54 52 53 5f  ith(name, ATTRS_
14bc0 50 52 45 46 49 58 29 29 0a 20 20 20 20 20 20 20  PREFIX)).       
14bd0 20 7b 20 6e 61 6d 65 20 3d 20 6e 61 6d 65 2e 73   { name = name.s
14be0 6c 69 63 65 28 41 54 54 52 53 5f 50 52 45 46 49  lice(ATTRS_PREFI
14bf0 58 2e 6c 65 6e 67 74 68 29 3b 20 7d 0a 0a 20 20  X.length); }..  
14c00 20 20 20 20 72 65 6d 6f 76 65 41 74 74 72 69 62      removeAttrib
14c10 75 74 65 28 72 6f 6f 74 2c 20 6e 61 6d 65 29 3b  ute(root, name);
14c20 0a 20 20 20 20 7d 29 3b 0a 0a 20 20 20 20 2f 2f  .    });..    //
14c30 20 72 65 6d 6f 76 65 20 61 6c 6c 20 74 68 65 20   remove all the 
14c40 65 76 65 6e 74 20 6c 69 73 74 65 6e 65 72 73 0a  event listeners.
14c50 20 20 20 20 74 61 67 2e 5f 5f 2e 6c 69 73 74 65      tag.__.liste
14c60 6e 65 72 73 2e 66 6f 72 45 61 63 68 28 66 75 6e  ners.forEach(fun
14c70 63 74 69 6f 6e 20 28 64 6f 6d 29 20 7b 0a 20 20  ction (dom) {.  
14c80 20 20 20 20 4f 62 6a 65 63 74 2e 6b 65 79 73 28      Object.keys(
14c90 64 6f 6d 5b 52 49 4f 54 5f 45 56 45 4e 54 53 5f  dom[RIOT_EVENTS_
14ca0 4b 45 59 5d 29 2e 66 6f 72 45 61 63 68 28 66 75  KEY]).forEach(fu
14cb0 6e 63 74 69 6f 6e 20 28 65 76 65 6e 74 4e 61 6d  nction (eventNam
14cc0 65 29 20 7b 0a 20 20 20 20 20 20 20 20 64 6f 6d  e) {.        dom
14cd0 2e 72 65 6d 6f 76 65 45 76 65 6e 74 4c 69 73 74  .removeEventList
14ce0 65 6e 65 72 28 65 76 65 6e 74 4e 61 6d 65 2c 20  ener(eventName, 
14cf0 64 6f 6d 5b 52 49 4f 54 5f 45 56 45 4e 54 53 5f  dom[RIOT_EVENTS_
14d00 4b 45 59 5d 5b 65 76 65 6e 74 4e 61 6d 65 5d 29  KEY][eventName])
14d10 3b 0a 20 20 20 20 20 20 7d 29 3b 0a 20 20 20 20  ;.      });.    
14d20 7d 29 3b 0a 0a 20 20 20 20 2f 2f 20 72 65 6d 6f  });..    // remo
14d30 76 65 20 74 61 67 20 69 6e 73 74 61 6e 63 65 20  ve tag instance 
14d40 66 72 6f 6d 20 74 68 65 20 67 6c 6f 62 61 6c 20  from the global 
14d50 74 61 67 73 20 63 61 63 68 65 20 63 6f 6c 6c 65  tags cache colle
14d60 63 74 69 6f 6e 0a 20 20 20 20 69 66 20 28 74 61  ction.    if (ta
14d70 67 49 6e 64 65 78 20 21 3d 3d 20 2d 31 29 20 7b  gIndex !== -1) {
14d80 20 5f 5f 54 41 47 53 5f 43 41 43 48 45 2e 73 70   __TAGS_CACHE.sp
14d90 6c 69 63 65 28 74 61 67 49 6e 64 65 78 2c 20 31  lice(tagIndex, 1
14da0 29 3b 20 7d 0a 0a 20 20 20 20 2f 2f 20 63 6c 65  ); }..    // cle
14db0 61 6e 20 75 70 20 74 68 65 20 70 61 72 65 6e 74  an up the parent
14dc0 20 74 61 67 73 20 6f 62 6a 65 63 74 0a 20 20 20   tags object.   
14dd0 20 69 66 20 28 5f 5f 2e 70 61 72 65 6e 74 20 26   if (__.parent &
14de0 26 20 21 5f 5f 2e 69 73 41 6e 6f 6e 79 6d 6f 75  & !__.isAnonymou
14df0 73 29 20 7b 0a 20 20 20 20 20 20 76 61 72 20 70  s) {.      var p
14e00 74 61 67 20 3d 20 67 65 74 49 6d 6d 65 64 69 61  tag = getImmedia
14e10 74 65 43 75 73 74 6f 6d 50 61 72 65 6e 74 28 5f  teCustomParent(_
14e20 5f 2e 70 61 72 65 6e 74 29 3b 0a 0a 20 20 20 20  _.parent);..    
14e30 20 20 69 66 20 28 5f 5f 2e 69 73 56 69 72 74 75    if (__.isVirtu
14e40 61 6c 29 20 7b 0a 20 20 20 20 20 20 20 20 4f 62  al) {.        Ob
14e50 6a 65 63 74 0a 20 20 20 20 20 20 20 20 20 20 2e  ject.          .
14e60 6b 65 79 73 28 74 61 67 2e 74 61 67 73 29 0a 20  keys(tag.tags). 
14e70 20 20 20 20 20 20 20 20 20 2e 66 6f 72 45 61 63           .forEac
14e80 68 28 66 75 6e 63 74 69 6f 6e 20 28 74 61 67 4e  h(function (tagN
14e90 61 6d 65 29 20 7b 20 72 65 74 75 72 6e 20 61 72  ame) { return ar
14ea0 72 61 79 69 73 68 52 65 6d 6f 76 65 28 70 74 61  rayishRemove(pta
14eb0 67 2e 74 61 67 73 2c 20 74 61 67 4e 61 6d 65 2c  g.tags, tagName,
14ec0 20 74 61 67 2e 74 61 67 73 5b 74 61 67 4e 61 6d   tag.tags[tagNam
14ed0 65 5d 29 3b 20 7d 29 3b 0a 20 20 20 20 20 20 7d  e]); });.      }
14ee0 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20   else {.        
14ef0 61 72 72 61 79 69 73 68 52 65 6d 6f 76 65 28 70  arrayishRemove(p
14f00 74 61 67 2e 74 61 67 73 2c 20 5f 5f 2e 74 61 67  tag.tags, __.tag
14f10 4e 61 6d 65 2c 20 74 61 67 29 3b 0a 20 20 20 20  Name, tag);.    
14f20 20 20 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f    }.    }..    /
14f30 2f 20 75 6e 6d 6f 75 6e 74 20 61 6c 6c 20 74 68  / unmount all th
14f40 65 20 76 69 72 74 75 61 6c 20 64 69 72 65 63 74  e virtual direct
14f50 69 76 65 73 0a 20 20 20 20 69 66 20 28 74 61 67  ives.    if (tag
14f60 2e 5f 5f 2e 76 69 72 74 73 29 20 7b 0a 20 20 20  .__.virts) {.   
14f70 20 20 20 65 61 63 68 28 74 61 67 2e 5f 5f 2e 76     each(tag.__.v
14f80 69 72 74 73 2c 20 66 75 6e 63 74 69 6f 6e 20 28  irts, function (
14f90 76 29 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20  v) {.        if 
14fa0 28 76 2e 70 61 72 65 6e 74 4e 6f 64 65 29 20 7b  (v.parentNode) {
14fb0 20 76 2e 70 61 72 65 6e 74 4e 6f 64 65 2e 72 65   v.parentNode.re
14fc0 6d 6f 76 65 43 68 69 6c 64 28 76 29 3b 20 7d 0a  moveChild(v); }.
14fd0 20 20 20 20 20 20 7d 29 3b 0a 20 20 20 20 7d 0a        });.    }.
14fe0 0a 20 20 20 20 2f 2f 20 61 6c 6c 6f 77 20 65 78  .    // allow ex
14ff0 70 72 65 73 73 69 6f 6e 73 20 74 6f 20 75 6e 6d  pressions to unm
15000 6f 75 6e 74 20 74 68 65 6d 73 65 6c 76 65 73 0a  ount themselves.
15010 20 20 20 20 75 6e 6d 6f 75 6e 74 41 6c 6c 28 65      unmountAll(e
15020 78 70 72 65 73 73 69 6f 6e 73 29 3b 0a 20 20 20  xpressions);.   
15030 20 65 61 63 68 28 5f 5f 2e 69 6e 73 74 41 74 74   each(__.instAtt
15040 72 73 2c 20 66 75 6e 63 74 69 6f 6e 20 28 61 29  rs, function (a)
15050 20 7b 20 72 65 74 75 72 6e 20 61 2e 65 78 70 72   { return a.expr
15060 20 26 26 20 61 2e 65 78 70 72 2e 75 6e 6d 6f 75   && a.expr.unmou
15070 6e 74 20 26 26 20 61 2e 65 78 70 72 2e 75 6e 6d  nt && a.expr.unm
15080 6f 75 6e 74 28 29 3b 20 7d 29 3b 0a 0a 20 20 20  ount(); });..   
15090 20 2f 2f 20 63 6c 65 61 72 20 74 68 65 20 74 61   // clear the ta
150a0 67 20 68 74 6d 6c 20 69 66 20 69 74 27 73 20 6e  g html if it's n
150b0 65 63 65 73 73 61 72 79 0a 20 20 20 20 69 66 20  ecessary.    if 
150c0 28 6d 75 73 74 4b 65 65 70 52 6f 6f 74 29 20 7b  (mustKeepRoot) {
150d0 20 73 65 74 49 6e 6e 65 72 48 54 4d 4c 28 72 6f   setInnerHTML(ro
150e0 6f 74 2c 20 27 27 29 3b 20 7d 0a 20 20 20 20 2f  ot, ''); }.    /
150f0 2f 20 6f 74 68 65 72 77 69 73 65 20 64 65 74 61  / otherwise deta
15100 63 68 20 74 68 65 20 72 6f 6f 74 20 74 61 67 20  ch the root tag 
15110 66 72 6f 6d 20 74 68 65 20 44 4f 4d 0a 20 20 20  from the DOM.   
15120 20 65 6c 73 65 20 69 66 20 28 70 29 20 7b 20 70   else if (p) { p
15130 2e 72 65 6d 6f 76 65 43 68 69 6c 64 28 72 6f 6f  .removeChild(roo
15140 74 29 3b 20 7d 0a 0a 20 20 20 20 2f 2f 20 63 75  t); }..    // cu
15150 73 74 6f 6d 20 69 6e 74 65 72 6e 61 6c 20 75 6e  stom internal un
15160 6d 6f 75 6e 74 20 66 75 6e 63 74 69 6f 6e 20 74  mount function t
15170 6f 20 61 76 6f 69 64 20 72 65 6c 79 69 6e 67 20  o avoid relying 
15180 6f 6e 20 74 68 65 20 6f 62 73 65 72 76 61 62 6c  on the observabl
15190 65 0a 20 20 20 20 69 66 20 28 5f 5f 2e 6f 6e 55  e.    if (__.onU
151a0 6e 6d 6f 75 6e 74 29 20 7b 20 5f 5f 2e 6f 6e 55  nmount) { __.onU
151b0 6e 6d 6f 75 6e 74 28 29 3b 20 7d 0a 0a 20 20 20  nmount(); }..   
151c0 20 2f 2f 20 77 65 69 72 64 20 66 69 78 20 66 6f   // weird fix fo
151d0 72 20 61 20 77 65 69 72 64 20 65 64 67 65 20 63  r a weird edge c
151e0 61 73 65 20 23 32 34 30 39 20 61 6e 64 20 23 32  ase #2409 and #2
151f0 34 33 36 0a 20 20 20 20 2f 2f 20 73 6f 6d 65 20  436.    // some 
15200 75 73 65 72 73 20 6d 69 67 68 74 20 75 73 65 20  users might use 
15210 79 6f 75 72 20 73 6f 66 74 77 61 72 65 20 6e 6f  your software no
15220 74 20 61 73 20 79 6f 75 27 76 65 20 65 78 70 65  t as you've expe
15230 63 74 65 64 0a 20 20 20 20 2f 2f 20 73 6f 20 49  cted.    // so I
15240 20 6e 65 65 64 20 74 6f 20 61 64 64 20 74 68 65   need to add the
15250 73 65 20 64 69 72 74 79 20 68 61 63 6b 73 20 74  se dirty hacks t
15260 6f 20 6d 69 74 69 67 61 74 65 20 75 6e 65 78 70  o mitigate unexp
15270 65 63 74 65 64 20 69 73 73 75 65 73 0a 20 20 20  ected issues.   
15280 20 69 66 20 28 21 74 61 67 2e 69 73 4d 6f 75 6e   if (!tag.isMoun
15290 74 65 64 29 20 7b 20 73 65 74 4d 6f 75 6e 74 53  ted) { setMountS
152a0 74 61 74 65 2e 63 61 6c 6c 28 74 61 67 2c 20 74  tate.call(tag, t
152b0 72 75 65 29 3b 20 7d 0a 0a 20 20 20 20 73 65 74  rue); }..    set
152c0 4d 6f 75 6e 74 53 74 61 74 65 2e 63 61 6c 6c 28  MountState.call(
152d0 74 61 67 2c 20 66 61 6c 73 65 29 3b 0a 0a 20 20  tag, false);..  
152e0 20 20 64 65 6c 65 74 65 20 72 6f 6f 74 2e 5f 74    delete root._t
152f0 61 67 3b 0a 0a 20 20 20 20 72 65 74 75 72 6e 20  ag;..    return 
15300 74 61 67 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20  tag.  }..  /**. 
15310 20 20 2a 20 54 61 67 20 63 72 65 61 74 69 6f 6e    * Tag creation
15320 20 66 61 63 74 6f 72 79 20 66 75 6e 63 74 69 6f   factory functio
15330 6e 0a 20 20 20 2a 20 40 63 6f 6e 73 74 72 75 63  n.   * @construc
15340 74 6f 72 0a 20 20 20 2a 20 40 70 61 72 61 6d 20  tor.   * @param 
15350 7b 20 4f 62 6a 65 63 74 20 7d 20 69 6d 70 6c 20  { Object } impl 
15360 2d 20 69 74 20 63 6f 6e 74 61 69 6e 73 20 74 68  - it contains th
15370 65 20 74 61 67 20 74 65 6d 70 6c 61 74 65 2c 20  e tag template, 
15380 61 6e 64 20 6c 6f 67 69 63 0a 20 20 20 2a 20 40  and logic.   * @
15390 70 61 72 61 6d 20 7b 20 4f 62 6a 65 63 74 20 7d  param { Object }
153a0 20 63 6f 6e 66 20 2d 20 74 61 67 20 6f 70 74 69   conf - tag opti
153b0 6f 6e 73 0a 20 20 20 2a 20 40 70 61 72 61 6d 20  ons.   * @param 
153c0 7b 20 53 74 72 69 6e 67 20 7d 20 69 6e 6e 65 72  { String } inner
153d0 48 54 4d 4c 20 2d 20 68 74 6d 6c 20 74 68 61 74  HTML - html that
153e0 20 65 76 65 6e 74 75 61 6c 6c 79 20 77 65 20 6e   eventually we n
153f0 65 65 64 20 74 6f 20 69 6e 6a 65 63 74 20 69 6e  eed to inject in
15400 20 74 68 65 20 74 61 67 0a 20 20 20 2a 2f 0a 20   the tag.   */. 
15410 20 66 75 6e 63 74 69 6f 6e 20 63 72 65 61 74 65   function create
15420 54 61 67 28 69 6d 70 6c 2c 20 63 6f 6e 66 2c 20  Tag(impl, conf, 
15430 69 6e 6e 65 72 48 54 4d 4c 29 20 7b 0a 20 20 20  innerHTML) {.   
15440 20 69 66 20 28 20 69 6d 70 6c 20 3d 3d 3d 20 76   if ( impl === v
15450 6f 69 64 20 30 20 29 20 69 6d 70 6c 20 3d 20 7b  oid 0 ) impl = {
15460 7d 3b 0a 20 20 20 20 69 66 20 28 20 63 6f 6e 66  };.    if ( conf
15470 20 3d 3d 3d 20 76 6f 69 64 20 30 20 29 20 63 6f   === void 0 ) co
15480 6e 66 20 3d 20 7b 7d 3b 0a 0a 20 20 20 20 76 61  nf = {};..    va
15490 72 20 74 61 67 20 3d 20 63 6f 6e 66 2e 63 6f 6e  r tag = conf.con
154a0 74 65 78 74 20 7c 7c 20 7b 7d 3b 0a 20 20 20 20  text || {};.    
154b0 76 61 72 20 6f 70 74 73 20 3d 20 63 6f 6e 66 2e  var opts = conf.
154c0 6f 70 74 73 20 7c 7c 20 7b 7d 3b 0a 20 20 20 20  opts || {};.    
154d0 76 61 72 20 70 61 72 65 6e 74 20 3d 20 63 6f 6e  var parent = con
154e0 66 2e 70 61 72 65 6e 74 3b 0a 20 20 20 20 76 61  f.parent;.    va
154f0 72 20 69 73 4c 6f 6f 70 20 3d 20 63 6f 6e 66 2e  r isLoop = conf.
15500 69 73 4c 6f 6f 70 3b 0a 20 20 20 20 76 61 72 20  isLoop;.    var 
15510 69 73 41 6e 6f 6e 79 6d 6f 75 73 20 3d 20 21 21  isAnonymous = !!
15520 63 6f 6e 66 2e 69 73 41 6e 6f 6e 79 6d 6f 75 73  conf.isAnonymous
15530 3b 0a 20 20 20 20 76 61 72 20 73 6b 69 70 41 6e  ;.    var skipAn
15540 6f 6e 79 6d 6f 75 73 20 3d 20 73 65 74 74 69 6e  onymous = settin
15550 67 73 2e 73 6b 69 70 41 6e 6f 6e 79 6d 6f 75 73  gs.skipAnonymous
15560 54 61 67 73 20 26 26 20 69 73 41 6e 6f 6e 79 6d  Tags && isAnonym
15570 6f 75 73 3b 0a 20 20 20 20 76 61 72 20 69 74 65  ous;.    var ite
15580 6d 20 3d 20 63 6f 6e 66 2e 69 74 65 6d 3b 0a 20  m = conf.item;. 
15590 20 20 20 2f 2f 20 61 76 61 69 6c 61 62 6c 65 20     // available 
155a0 6f 6e 6c 79 20 66 6f 72 20 74 68 65 20 6c 6f 6f  only for the loo
155b0 70 65 64 20 6e 6f 64 65 73 0a 20 20 20 20 76 61  ped nodes.    va
155c0 72 20 69 6e 64 65 78 20 3d 20 63 6f 6e 66 2e 69  r index = conf.i
155d0 6e 64 65 78 3b 0a 20 20 20 20 2f 2f 20 41 6c 6c  ndex;.    // All
155e0 20 61 74 74 72 69 62 75 74 65 73 20 6f 6e 20 74   attributes on t
155f0 68 65 20 54 61 67 20 77 68 65 6e 20 69 74 27 73  he Tag when it's
15600 20 66 69 72 73 74 20 70 61 72 73 65 64 0a 20 20   first parsed.  
15610 20 20 76 61 72 20 69 6e 73 74 41 74 74 72 73 20    var instAttrs 
15620 3d 20 5b 5d 3b 0a 20 20 20 20 2f 2f 20 65 78 70  = [];.    // exp
15630 72 65 73 73 69 6f 6e 73 20 6f 6e 20 74 68 69 73  ressions on this
15640 20 74 79 70 65 20 6f 66 20 54 61 67 0a 20 20 20   type of Tag.   
15650 20 76 61 72 20 69 6d 70 6c 41 74 74 72 73 20 3d   var implAttrs =
15660 20 5b 5d 3b 0a 20 20 20 20 76 61 72 20 74 6d 70   [];.    var tmp
15670 6c 20 3d 20 69 6d 70 6c 2e 74 6d 70 6c 3b 0a 20  l = impl.tmpl;. 
15680 20 20 20 76 61 72 20 65 78 70 72 65 73 73 69 6f     var expressio
15690 6e 73 20 3d 20 5b 5d 3b 0a 20 20 20 20 76 61 72  ns = [];.    var
156a0 20 72 6f 6f 74 20 3d 20 63 6f 6e 66 2e 72 6f 6f   root = conf.roo
156b0 74 3b 0a 20 20 20 20 76 61 72 20 74 61 67 4e 61  t;.    var tagNa
156c0 6d 65 20 3d 20 63 6f 6e 66 2e 74 61 67 4e 61 6d  me = conf.tagNam
156d0 65 20 7c 7c 20 67 65 74 4e 61 6d 65 28 72 6f 6f  e || getName(roo
156e0 74 29 3b 0a 20 20 20 20 76 61 72 20 69 73 56 69  t);.    var isVi
156f0 72 74 75 61 6c 20 3d 20 74 61 67 4e 61 6d 65 20  rtual = tagName 
15700 3d 3d 3d 20 27 76 69 72 74 75 61 6c 27 3b 0a 20  === 'virtual';. 
15710 20 20 20 76 61 72 20 69 73 49 6e 6c 69 6e 65 20     var isInline 
15720 3d 20 21 69 73 56 69 72 74 75 61 6c 20 26 26 20  = !isVirtual && 
15730 21 74 6d 70 6c 3b 0a 20 20 20 20 76 61 72 20 64  !tmpl;.    var d
15740 6f 6d 3b 0a 0a 20 20 20 20 69 66 20 28 69 73 49  om;..    if (isI
15750 6e 6c 69 6e 65 20 7c 7c 20 69 73 4c 6f 6f 70 20  nline || isLoop 
15760 26 26 20 69 73 41 6e 6f 6e 79 6d 6f 75 73 29 20  && isAnonymous) 
15770 7b 0a 20 20 20 20 20 20 64 6f 6d 20 3d 20 72 6f  {.      dom = ro
15780 6f 74 3b 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b  ot;.    } else {
15790 0a 20 20 20 20 20 20 69 66 20 28 21 69 73 56 69  .      if (!isVi
157a0 72 74 75 61 6c 29 20 7b 20 72 6f 6f 74 2e 69 6e  rtual) { root.in
157b0 6e 65 72 48 54 4d 4c 20 3d 20 27 27 3b 20 7d 0a  nerHTML = ''; }.
157c0 20 20 20 20 20 20 64 6f 6d 20 3d 20 6d 6b 64 6f        dom = mkdo
157d0 6d 28 74 6d 70 6c 2c 20 69 6e 6e 65 72 48 54 4d  m(tmpl, innerHTM
157e0 4c 2c 20 69 73 53 76 67 28 72 6f 6f 74 29 29 3b  L, isSvg(root));
157f0 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2f 20 6d  .    }..    // m
15800 61 6b 65 20 74 68 69 73 20 74 61 67 20 6f 62 73  ake this tag obs
15810 65 72 76 61 62 6c 65 0a 20 20 20 20 69 66 20 28  ervable.    if (
15820 21 73 6b 69 70 41 6e 6f 6e 79 6d 6f 75 73 29 20  !skipAnonymous) 
15830 7b 20 6f 62 73 65 72 76 61 62 6c 65 28 74 61 67  { observable(tag
15840 29 3b 20 7d 0a 0a 20 20 20 20 2f 2f 20 6f 6e 6c  ); }..    // onl
15850 79 20 63 61 6c 6c 20 75 6e 6d 6f 75 6e 74 20 69  y call unmount i
15860 66 20 77 65 20 68 61 76 65 20 61 20 76 61 6c 69  f we have a vali
15870 64 20 5f 5f 54 41 47 5f 49 4d 50 4c 20 28 68 61  d __TAG_IMPL (ha
15880 73 20 6e 61 6d 65 20 70 72 6f 70 65 72 74 79 29  s name property)
15890 0a 20 20 20 20 69 66 20 28 69 6d 70 6c 2e 6e 61  .    if (impl.na
158a0 6d 65 20 26 26 20 72 6f 6f 74 2e 5f 74 61 67 29  me && root._tag)
158b0 20 7b 20 72 6f 6f 74 2e 5f 74 61 67 2e 75 6e 6d   { root._tag.unm
158c0 6f 75 6e 74 28 74 72 75 65 29 3b 20 7d 0a 0a 20  ount(true); }.. 
158d0 20 20 20 64 65 66 69 6e 65 28 74 61 67 2c 20 27     define(tag, '
158e0 5f 5f 27 2c 20 7b 0a 20 20 20 20 20 20 69 6d 70  __', {.      imp
158f0 6c 3a 20 69 6d 70 6c 2c 0a 20 20 20 20 20 20 72  l: impl,.      r
15900 6f 6f 74 3a 20 72 6f 6f 74 2c 0a 20 20 20 20 20  oot: root,.     
15910 20 73 6b 69 70 41 6e 6f 6e 79 6d 6f 75 73 3a 20   skipAnonymous: 
15920 73 6b 69 70 41 6e 6f 6e 79 6d 6f 75 73 2c 0a 20  skipAnonymous,. 
15930 20 20 20 20 20 69 6d 70 6c 41 74 74 72 73 3a 20       implAttrs: 
15940 69 6d 70 6c 41 74 74 72 73 2c 0a 20 20 20 20 20  implAttrs,.     
15950 20 69 73 41 6e 6f 6e 79 6d 6f 75 73 3a 20 69 73   isAnonymous: is
15960 41 6e 6f 6e 79 6d 6f 75 73 2c 0a 20 20 20 20 20  Anonymous,.     
15970 20 69 6e 73 74 41 74 74 72 73 3a 20 69 6e 73 74   instAttrs: inst
15980 41 74 74 72 73 2c 0a 20 20 20 20 20 20 69 6e 6e  Attrs,.      inn
15990 65 72 48 54 4d 4c 3a 20 69 6e 6e 65 72 48 54 4d  erHTML: innerHTM
159a0 4c 2c 0a 20 20 20 20 20 20 74 61 67 4e 61 6d 65  L,.      tagName
159b0 3a 20 74 61 67 4e 61 6d 65 2c 0a 20 20 20 20 20  : tagName,.     
159c0 20 69 6e 64 65 78 3a 20 69 6e 64 65 78 2c 0a 20   index: index,. 
159d0 20 20 20 20 20 69 73 4c 6f 6f 70 3a 20 69 73 4c       isLoop: isL
159e0 6f 6f 70 2c 0a 20 20 20 20 20 20 69 73 49 6e 6c  oop,.      isInl
159f0 69 6e 65 3a 20 69 73 49 6e 6c 69 6e 65 2c 0a 20  ine: isInline,. 
15a00 20 20 20 20 20 69 74 65 6d 3a 20 69 74 65 6d 2c       item: item,
15a10 0a 20 20 20 20 20 20 70 61 72 65 6e 74 3a 20 70  .      parent: p
15a20 61 72 65 6e 74 2c 0a 20 20 20 20 20 20 2f 2f 20  arent,.      // 
15a30 74 61 67 73 20 68 61 76 69 6e 67 20 65 76 65 6e  tags having even
15a40 74 20 6c 69 73 74 65 6e 65 72 73 0a 20 20 20 20  t listeners.    
15a50 20 20 2f 2f 20 69 74 20 77 6f 75 6c 64 20 62 65    // it would be
15a60 20 62 65 74 74 65 72 20 74 6f 20 75 73 65 20 77   better to use w
15a70 65 61 6b 20 6d 61 70 73 20 68 65 72 65 20 62 75  eak maps here bu
15a80 74 20 77 65 20 63 61 6e 20 6e 6f 74 20 69 6e 74  t we can not int
15a90 72 6f 64 75 63 65 20 62 72 65 61 6b 69 6e 67 20  roduce breaking 
15aa0 63 68 61 6e 67 65 73 20 6e 6f 77 0a 20 20 20 20  changes now.    
15ab0 20 20 6c 69 73 74 65 6e 65 72 73 3a 20 5b 5d 2c    listeners: [],
15ac0 0a 20 20 20 20 20 20 2f 2f 20 74 68 65 73 65 20  .      // these 
15ad0 76 61 72 73 20 77 69 6c 6c 20 62 65 20 6e 65 65  vars will be nee
15ae0 64 65 64 20 6f 6e 6c 79 20 66 6f 72 20 74 68 65  ded only for the
15af0 20 76 69 72 74 75 61 6c 20 74 61 67 73 0a 20 20   virtual tags.  
15b00 20 20 20 20 76 69 72 74 73 3a 20 5b 5d 2c 0a 20      virts: [],. 
15b10 20 20 20 20 20 77 61 73 43 72 65 61 74 65 64 3a       wasCreated:
15b20 20 66 61 6c 73 65 2c 0a 20 20 20 20 20 20 74 61   false,.      ta
15b30 69 6c 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20  il: null,.      
15b40 68 65 61 64 3a 20 6e 75 6c 6c 0a 20 20 20 20 7d  head: null.    }
15b50 29 3b 0a 0a 20 20 20 20 2f 2f 20 74 61 67 20 70  );..    // tag p
15b60 72 6f 74 65 63 74 65 64 20 70 72 6f 70 65 72 74  rotected propert
15b70 69 65 73 0a 20 20 20 20 72 65 74 75 72 6e 20 5b  ies.    return [
15b80 0a 20 20 20 20 20 20 5b 27 69 73 4d 6f 75 6e 74  .      ['isMount
15b90 65 64 27 2c 20 66 61 6c 73 65 5d 2c 0a 20 20 20  ed', false],.   
15ba0 20 20 20 2f 2f 20 63 72 65 61 74 65 20 61 20 75     // create a u
15bb0 6e 69 71 75 65 20 69 64 20 74 6f 20 74 68 69 73  nique id to this
15bc0 20 74 61 67 0a 20 20 20 20 20 20 2f 2f 20 69 74   tag.      // it
15bd0 20 63 6f 75 6c 64 20 62 65 20 68 61 6e 64 79 20   could be handy 
15be0 74 6f 20 75 73 65 20 69 74 20 61 6c 73 6f 20 74  to use it also t
15bf0 6f 20 69 6d 70 72 6f 76 65 20 74 68 65 20 76 69  o improve the vi
15c00 72 74 75 61 6c 20 64 6f 6d 20 72 65 6e 64 65 72  rtual dom render
15c10 69 6e 67 20 73 70 65 65 64 0a 20 20 20 20 20 20  ing speed.      
15c20 5b 27 5f 72 69 6f 74 5f 69 64 27 2c 20 75 69 64  ['_riot_id', uid
15c30 28 29 5d 2c 0a 20 20 20 20 20 20 5b 27 72 6f 6f  ()],.      ['roo
15c40 74 27 2c 20 72 6f 6f 74 5d 2c 0a 20 20 20 20 20  t', root],.     
15c50 20 5b 27 6f 70 74 73 27 2c 20 6f 70 74 73 2c 20   ['opts', opts, 
15c60 7b 20 77 72 69 74 61 62 6c 65 3a 20 74 72 75 65  { writable: true
15c70 2c 20 65 6e 75 6d 65 72 61 62 6c 65 3a 20 74 72  , enumerable: tr
15c80 75 65 20 7d 5d 2c 0a 20 20 20 20 20 20 5b 27 70  ue }],.      ['p
15c90 61 72 65 6e 74 27 2c 20 70 61 72 65 6e 74 20 7c  arent', parent |
15ca0 7c 20 6e 75 6c 6c 5d 2c 0a 20 20 20 20 20 20 2f  | null],.      /
15cb0 2f 20 70 72 6f 74 65 63 74 20 74 68 65 20 22 74  / protect the "t
15cc0 61 67 73 22 20 61 6e 64 20 22 72 65 66 73 22 20  ags" and "refs" 
15cd0 70 72 6f 70 65 72 74 79 20 66 72 6f 6d 20 62 65  property from be
15ce0 69 6e 67 20 6f 76 65 72 72 69 64 64 65 6e 0a 20  ing overridden. 
15cf0 20 20 20 20 20 5b 27 74 61 67 73 27 2c 20 7b 7d       ['tags', {}
15d00 5d 2c 0a 20 20 20 20 20 20 5b 27 72 65 66 73 27  ],.      ['refs'
15d10 2c 20 7b 7d 5d 2c 0a 20 20 20 20 20 20 5b 27 75  , {}],.      ['u
15d20 70 64 61 74 65 27 2c 20 66 75 6e 63 74 69 6f 6e  pdate', function
15d30 20 28 64 61 74 61 29 20 7b 20 72 65 74 75 72 6e   (data) { return
15d40 20 63 6f 6d 70 6f 6e 65 6e 74 55 70 64 61 74 65   componentUpdate
15d50 28 74 61 67 2c 20 64 61 74 61 2c 20 65 78 70 72  (tag, data, expr
15d60 65 73 73 69 6f 6e 73 29 3b 20 7d 5d 2c 0a 20 20  essions); }],.  
15d70 20 20 20 20 5b 27 6d 69 78 69 6e 27 2c 20 66 75      ['mixin', fu
15d80 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20 20 20  nction () {.    
15d90 20 20 20 20 76 61 72 20 6d 69 78 69 6e 73 20 3d      var mixins =
15da0 20 5b 5d 2c 20 6c 65 6e 20 3d 20 61 72 67 75 6d   [], len = argum
15db0 65 6e 74 73 2e 6c 65 6e 67 74 68 3b 0a 20 20 20  ents.length;.   
15dc0 20 20 20 20 20 77 68 69 6c 65 20 28 20 6c 65 6e       while ( len
15dd0 2d 2d 20 29 20 6d 69 78 69 6e 73 5b 20 6c 65 6e  -- ) mixins[ len
15de0 20 5d 20 3d 20 61 72 67 75 6d 65 6e 74 73 5b 20   ] = arguments[ 
15df0 6c 65 6e 20 5d 3b 0a 0a 20 20 20 20 20 20 20 20  len ];..        
15e00 72 65 74 75 72 6e 20 63 6f 6d 70 6f 6e 65 6e 74  return component
15e10 4d 69 78 69 6e 2e 61 70 70 6c 79 28 76 6f 69 64  Mixin.apply(void
15e20 20 30 2c 20 5b 20 74 61 67 20 5d 2e 63 6f 6e 63   0, [ tag ].conc
15e30 61 74 28 20 6d 69 78 69 6e 73 20 29 29 3b 0a 20  at( mixins ));. 
15e40 20 20 20 7d 5d 2c 0a 20 20 20 20 20 20 5b 27 6d     }],.      ['m
15e50 6f 75 6e 74 27 2c 20 66 75 6e 63 74 69 6f 6e 20  ount', function 
15e60 28 29 20 7b 20 72 65 74 75 72 6e 20 63 6f 6d 70  () { return comp
15e70 6f 6e 65 6e 74 4d 6f 75 6e 74 28 74 61 67 2c 20  onentMount(tag, 
15e80 64 6f 6d 2c 20 65 78 70 72 65 73 73 69 6f 6e 73  dom, expressions
15e90 2c 20 6f 70 74 73 29 3b 20 7d 5d 2c 0a 20 20 20  , opts); }],.   
15ea0 20 20 20 5b 27 75 6e 6d 6f 75 6e 74 27 2c 20 66     ['unmount', f
15eb0 75 6e 63 74 69 6f 6e 20 28 6d 75 73 74 4b 65 65  unction (mustKee
15ec0 70 52 6f 6f 74 29 20 7b 20 72 65 74 75 72 6e 20  pRoot) { return 
15ed0 74 61 67 55 6e 6d 6f 75 6e 74 28 74 61 67 2c 20  tagUnmount(tag, 
15ee0 6d 75 73 74 4b 65 65 70 52 6f 6f 74 2c 20 65 78  mustKeepRoot, ex
15ef0 70 72 65 73 73 69 6f 6e 73 29 3b 20 7d 5d 0a 20  pressions); }]. 
15f00 20 20 20 5d 2e 72 65 64 75 63 65 28 66 75 6e 63     ].reduce(func
15f10 74 69 6f 6e 20 28 61 63 63 2c 20 72 65 66 29 20  tion (acc, ref) 
15f20 7b 0a 20 20 20 20 20 20 76 61 72 20 6b 65 79 20  {.      var key 
15f30 3d 20 72 65 66 5b 30 5d 3b 0a 20 20 20 20 20 20  = ref[0];.      
15f40 76 61 72 20 76 61 6c 75 65 20 3d 20 72 65 66 5b  var value = ref[
15f50 31 5d 3b 0a 20 20 20 20 20 20 76 61 72 20 6f 70  1];.      var op
15f60 74 73 20 3d 20 72 65 66 5b 32 5d 3b 0a 0a 20 20  ts = ref[2];..  
15f70 20 20 20 20 64 65 66 69 6e 65 28 74 61 67 2c 20      define(tag, 
15f80 6b 65 79 2c 20 76 61 6c 75 65 2c 20 6f 70 74 73  key, value, opts
15f90 29 3b 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20  );.      return 
15fa0 61 63 63 0a 20 20 20 20 7d 2c 20 65 78 74 65 6e  acc.    }, exten
15fb0 64 28 74 61 67 2c 20 69 74 65 6d 29 29 0a 20 20  d(tag, item)).  
15fc0 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 4d 6f  }..  /**.   * Mo
15fd0 75 6e 74 20 61 20 74 61 67 20 63 72 65 61 74 69  unt a tag creati
15fe0 6e 67 20 6e 65 77 20 54 61 67 20 69 6e 73 74 61  ng new Tag insta
15ff0 6e 63 65 0a 20 20 20 2a 20 40 70 61 72 61 6d 20  nce.   * @param 
16000 20 20 7b 20 4f 62 6a 65 63 74 20 7d 20 72 6f 6f    { Object } roo
16010 74 20 2d 20 64 6f 6d 20 6e 6f 64 65 20 77 68 65  t - dom node whe
16020 72 65 20 74 68 65 20 74 61 67 20 77 69 6c 6c 20  re the tag will 
16030 62 65 20 6d 6f 75 6e 74 65 64 0a 20 20 20 2a 20  be mounted.   * 
16040 40 70 61 72 61 6d 20 20 20 7b 20 53 74 72 69 6e  @param   { Strin
16050 67 20 7d 20 74 61 67 4e 61 6d 65 20 2d 20 6e 61  g } tagName - na
16060 6d 65 20 6f 66 20 74 68 65 20 72 69 6f 74 20 74  me of the riot t
16070 61 67 20 77 65 20 77 61 6e 74 20 74 6f 20 6d 6f  ag we want to mo
16080 75 6e 74 0a 20 20 20 2a 20 40 70 61 72 61 6d 20  unt.   * @param 
16090 20 20 7b 20 4f 62 6a 65 63 74 20 7d 20 6f 70 74    { Object } opt
160a0 73 20 2d 20 6f 70 74 69 6f 6e 73 20 74 6f 20 70  s - options to p
160b0 61 73 73 20 74 6f 20 74 68 65 20 54 61 67 20 69  ass to the Tag i
160c0 6e 73 74 61 6e 63 65 0a 20 20 20 2a 20 40 70 61  nstance.   * @pa
160d0 72 61 6d 20 20 20 7b 20 4f 62 6a 65 63 74 20 7d  ram   { Object }
160e0 20 63 74 78 20 2d 20 6f 70 74 69 6f 6e 61 6c 20   ctx - optional 
160f0 63 6f 6e 74 65 78 74 20 74 68 61 74 20 77 69 6c  context that wil
16100 6c 20 62 65 20 75 73 65 64 20 74 6f 20 65 78 74  l be used to ext
16110 65 6e 64 20 61 6e 20 65 78 69 73 74 69 6e 67 20  end an existing 
16120 63 6c 61 73 73 20 28 20 75 73 65 64 20 69 6e 20  class ( used in 
16130 72 69 6f 74 2e 54 61 67 20 29 0a 20 20 20 2a 20  riot.Tag ).   * 
16140 40 72 65 74 75 72 6e 73 20 7b 20 54 61 67 20 7d  @returns { Tag }
16150 20 61 20 6e 65 77 20 54 61 67 20 69 6e 73 74 61   a new Tag insta
16160 6e 63 65 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63  nce.   */.  func
16170 74 69 6f 6e 20 6d 6f 75 6e 74 24 31 28 72 6f 6f  tion mount$1(roo
16180 74 2c 20 74 61 67 4e 61 6d 65 2c 20 6f 70 74 73  t, tagName, opts
16190 2c 20 63 74 78 29 20 7b 0a 20 20 20 20 76 61 72  , ctx) {.    var
161a0 20 69 6d 70 6c 20 3d 20 5f 5f 54 41 47 5f 49 4d   impl = __TAG_IM
161b0 50 4c 5b 74 61 67 4e 61 6d 65 5d 3b 0a 20 20 20  PL[tagName];.   
161c0 20 76 61 72 20 69 6d 70 6c 43 6c 61 73 73 20 3d   var implClass =
161d0 20 5f 5f 54 41 47 5f 49 4d 50 4c 5b 74 61 67 4e   __TAG_IMPL[tagN
161e0 61 6d 65 5d 2e 63 6c 61 73 73 3b 0a 20 20 20 20  ame].class;.    
161f0 76 61 72 20 63 6f 6e 74 65 78 74 20 3d 20 63 74  var context = ct
16200 78 20 7c 7c 20 28 69 6d 70 6c 43 6c 61 73 73 20  x || (implClass 
16210 3f 20 63 72 65 61 74 65 28 69 6d 70 6c 43 6c 61  ? create(implCla
16220 73 73 2e 70 72 6f 74 6f 74 79 70 65 29 20 3a 20  ss.prototype) : 
16230 7b 7d 29 3b 0a 20 20 20 20 2f 2f 20 63 61 63 68  {});.    // cach
16240 65 20 74 68 65 20 69 6e 6e 65 72 20 48 54 4d 4c  e the inner HTML
16250 20 74 6f 20 66 69 78 20 23 38 35 35 0a 20 20 20   to fix #855.   
16260 20 76 61 72 20 69 6e 6e 65 72 48 54 4d 4c 20 3d   var innerHTML =
16270 20 72 6f 6f 74 2e 5f 69 6e 6e 65 72 48 54 4d 4c   root._innerHTML
16280 20 3d 20 72 6f 6f 74 2e 5f 69 6e 6e 65 72 48 54   = root._innerHT
16290 4d 4c 20 7c 7c 20 72 6f 6f 74 2e 69 6e 6e 65 72  ML || root.inner
162a0 48 54 4d 4c 3b 0a 20 20 20 20 76 61 72 20 63 6f  HTML;.    var co
162b0 6e 66 20 3d 20 65 78 74 65 6e 64 28 7b 20 72 6f  nf = extend({ ro
162c0 6f 74 3a 20 72 6f 6f 74 2c 20 6f 70 74 73 3a 20  ot: root, opts: 
162d0 6f 70 74 73 2c 20 63 6f 6e 74 65 78 74 3a 20 63  opts, context: c
162e0 6f 6e 74 65 78 74 20 7d 2c 20 7b 20 70 61 72 65  ontext }, { pare
162f0 6e 74 3a 20 6f 70 74 73 20 3f 20 6f 70 74 73 2e  nt: opts ? opts.
16300 70 61 72 65 6e 74 20 3a 20 6e 75 6c 6c 20 7d 29  parent : null })
16310 3b 0a 20 20 20 20 76 61 72 20 74 61 67 3b 0a 0a  ;.    var tag;..
16320 20 20 20 20 69 66 20 28 69 6d 70 6c 20 26 26 20      if (impl && 
16330 72 6f 6f 74 29 20 7b 20 74 61 67 20 3d 20 63 72  root) { tag = cr
16340 65 61 74 65 54 61 67 28 69 6d 70 6c 2c 20 63 6f  eateTag(impl, co
16350 6e 66 2c 20 69 6e 6e 65 72 48 54 4d 4c 29 3b 20  nf, innerHTML); 
16360 7d 0a 0a 20 20 20 20 69 66 20 28 74 61 67 20 26  }..    if (tag &
16370 26 20 74 61 67 2e 6d 6f 75 6e 74 29 20 7b 0a 20  & tag.mount) {. 
16380 20 20 20 20 20 74 61 67 2e 6d 6f 75 6e 74 28 74       tag.mount(t
16390 72 75 65 29 3b 0a 20 20 20 20 20 20 2f 2f 20 61  rue);.      // a
163a0 64 64 20 74 68 69 73 20 74 61 67 20 74 6f 20 74  dd this tag to t
163b0 68 65 20 76 69 72 74 75 61 6c 44 6f 6d 20 76 61  he virtualDom va
163c0 72 69 61 62 6c 65 0a 20 20 20 20 20 20 69 66 20  riable.      if 
163d0 28 21 63 6f 6e 74 61 69 6e 73 28 5f 5f 54 41 47  (!contains(__TAG
163e0 53 5f 43 41 43 48 45 2c 20 74 61 67 29 29 20 7b  S_CACHE, tag)) {
163f0 20 5f 5f 54 41 47 53 5f 43 41 43 48 45 2e 70 75   __TAGS_CACHE.pu
16400 73 68 28 74 61 67 29 3b 20 7d 0a 20 20 20 20 7d  sh(tag); }.    }
16410 0a 0a 20 20 20 20 72 65 74 75 72 6e 20 74 61 67  ..    return tag
16420 0a 20 20 7d 0a 0a 0a 0a 20 20 76 61 72 20 74 61  .  }....  var ta
16430 67 73 20 3d 20 2f 2a 23 5f 5f 50 55 52 45 5f 5f  gs = /*#__PURE__
16440 2a 2f 4f 62 6a 65 63 74 2e 66 72 65 65 7a 65 28  */Object.freeze(
16450 7b 0a 20 20 20 20 61 72 72 61 79 69 73 68 41 64  {.    arrayishAd
16460 64 3a 20 61 72 72 61 79 69 73 68 41 64 64 2c 0a  d: arrayishAdd,.
16470 20 20 20 20 67 65 74 54 61 67 4e 61 6d 65 3a 20      getTagName: 
16480 67 65 74 4e 61 6d 65 2c 0a 20 20 20 20 69 6e 68  getName,.    inh
16490 65 72 69 74 50 61 72 65 6e 74 50 72 6f 70 73 3a  eritParentProps:
164a0 20 69 6e 68 65 72 69 74 50 61 72 65 6e 74 50 72   inheritParentPr
164b0 6f 70 73 2c 0a 20 20 20 20 6d 6f 75 6e 74 54 6f  ops,.    mountTo
164c0 3a 20 6d 6f 75 6e 74 24 31 2c 0a 20 20 20 20 73  : mount$1,.    s
164d0 65 6c 65 63 74 54 61 67 73 3a 20 71 75 65 72 79  electTags: query
164e0 2c 0a 20 20 20 20 61 72 72 61 79 69 73 68 52 65  ,.    arrayishRe
164f0 6d 6f 76 65 3a 20 61 72 72 61 79 69 73 68 52 65  move: arrayishRe
16500 6d 6f 76 65 2c 0a 20 20 20 20 67 65 74 54 61 67  move,.    getTag
16510 3a 20 67 65 74 2c 0a 20 20 20 20 69 6e 69 74 43  : get,.    initC
16520 68 69 6c 64 54 61 67 3a 20 69 6e 69 74 43 68 69  hildTag: initChi
16530 6c 64 2c 0a 20 20 20 20 6d 6f 76 65 43 68 69 6c  ld,.    moveChil
16540 64 54 61 67 3a 20 6d 6f 76 65 43 68 69 6c 64 2c  dTag: moveChild,
16550 0a 20 20 20 20 6d 61 6b 65 52 65 70 6c 61 63 65  .    makeReplace
16560 56 69 72 74 75 61 6c 3a 20 6d 61 6b 65 52 65 70  Virtual: makeRep
16570 6c 61 63 65 56 69 72 74 75 61 6c 2c 0a 20 20 20  laceVirtual,.   
16580 20 67 65 74 49 6d 6d 65 64 69 61 74 65 43 75 73   getImmediateCus
16590 74 6f 6d 50 61 72 65 6e 74 54 61 67 3a 20 67 65  tomParentTag: ge
165a0 74 49 6d 6d 65 64 69 61 74 65 43 75 73 74 6f 6d  tImmediateCustom
165b0 50 61 72 65 6e 74 2c 0a 20 20 20 20 6d 61 6b 65  Parent,.    make
165c0 56 69 72 74 75 61 6c 3a 20 6d 61 6b 65 56 69 72  Virtual: makeVir
165d0 74 75 61 6c 2c 0a 20 20 20 20 6d 6f 76 65 56 69  tual,.    moveVi
165e0 72 74 75 61 6c 3a 20 6d 6f 76 65 56 69 72 74 75  rtual: moveVirtu
165f0 61 6c 2c 0a 20 20 20 20 75 6e 6d 6f 75 6e 74 41  al,.    unmountA
16600 6c 6c 3a 20 75 6e 6d 6f 75 6e 74 41 6c 6c 2c 0a  ll: unmountAll,.
16610 20 20 20 20 63 72 65 61 74 65 49 66 44 69 72 65      createIfDire
16620 63 74 69 76 65 3a 20 63 72 65 61 74 65 49 66 44  ctive: createIfD
16630 69 72 65 63 74 69 76 65 2c 0a 20 20 20 20 63 72  irective,.    cr
16640 65 61 74 65 52 65 66 44 69 72 65 63 74 69 76 65  eateRefDirective
16650 3a 20 63 72 65 61 74 65 52 65 66 44 69 72 65 63  : createRefDirec
16660 74 69 76 65 0a 20 20 7d 29 3b 0a 0a 20 20 2f 2a  tive.  });..  /*
16670 2a 0a 20 20 20 2a 20 52 69 6f 74 20 70 75 62 6c  *.   * Riot publ
16680 69 63 20 61 70 69 0a 20 20 20 2a 2f 0a 20 20 76  ic api.   */.  v
16690 61 72 20 73 65 74 74 69 6e 67 73 24 31 20 3d 20  ar settings$1 = 
166a0 73 65 74 74 69 6e 67 73 3b 0a 20 20 76 61 72 20  settings;.  var 
166b0 75 74 69 6c 20 3d 20 7b 0a 20 20 20 20 74 6d 70  util = {.    tmp
166c0 6c 3a 20 74 6d 70 6c 2c 0a 20 20 20 20 62 72 61  l: tmpl,.    bra
166d0 63 6b 65 74 73 3a 20 62 72 61 63 6b 65 74 73 2c  ckets: brackets,
166e0 0a 20 20 20 20 73 74 79 6c 65 4d 61 6e 61 67 65  .    styleManage
166f0 72 3a 20 73 74 79 6c 65 4d 61 6e 61 67 65 72 2c  r: styleManager,
16700 0a 20 20 20 20 76 64 6f 6d 3a 20 5f 5f 54 41 47  .    vdom: __TAG
16710 53 5f 43 41 43 48 45 2c 0a 20 20 20 20 73 74 79  S_CACHE,.    sty
16720 6c 65 4e 6f 64 65 3a 20 73 74 79 6c 65 4d 61 6e  leNode: styleMan
16730 61 67 65 72 2e 73 74 79 6c 65 4e 6f 64 65 2c 0a  ager.styleNode,.
16740 20 20 20 20 2f 2f 20 65 78 70 6f 72 74 20 74 68      // export th
16750 65 20 72 69 6f 74 20 69 6e 74 65 72 6e 61 6c 20  e riot internal 
16760 75 74 69 6c 73 20 61 73 20 77 65 6c 6c 0a 20 20  utils as well.  
16770 20 20 64 6f 6d 3a 20 64 6f 6d 2c 0a 20 20 20 20    dom: dom,.    
16780 63 68 65 63 6b 3a 20 63 68 65 63 6b 2c 0a 20 20  check: check,.  
16790 20 20 6d 69 73 63 3a 20 6d 69 73 63 2c 0a 20 20    misc: misc,.  
167a0 20 20 74 61 67 73 3a 20 74 61 67 73 0a 20 20 7d    tags: tags.  }
167b0 3b 0a 0a 20 20 2f 2f 20 65 78 70 6f 72 74 20 74  ;..  // export t
167c0 68 65 20 63 6f 72 65 20 70 72 6f 70 73 2f 6d 65  he core props/me
167d0 74 68 6f 64 73 0a 20 20 76 61 72 20 54 61 67 24  thods.  var Tag$
167e0 31 20 3d 20 54 61 67 3b 0a 20 20 76 61 72 20 74  1 = Tag;.  var t
167f0 61 67 24 31 20 3d 20 74 61 67 3b 0a 20 20 76 61  ag$1 = tag;.  va
16800 72 20 74 61 67 32 24 31 20 3d 20 74 61 67 32 3b  r tag2$1 = tag2;
16810 0a 20 20 76 61 72 20 6d 6f 75 6e 74 24 32 20 3d  .  var mount$2 =
16820 20 6d 6f 75 6e 74 3b 0a 20 20 76 61 72 20 6d 69   mount;.  var mi
16830 78 69 6e 24 31 20 3d 20 6d 69 78 69 6e 3b 0a 20  xin$1 = mixin;. 
16840 20 76 61 72 20 75 70 64 61 74 65 24 32 20 3d 20   var update$2 = 
16850 75 70 64 61 74 65 24 31 3b 0a 20 20 76 61 72 20  update$1;.  var 
16860 75 6e 72 65 67 69 73 74 65 72 24 31 20 3d 20 75  unregister$1 = u
16870 6e 72 65 67 69 73 74 65 72 3b 0a 20 20 76 61 72  nregister;.  var
16880 20 76 65 72 73 69 6f 6e 24 31 20 3d 20 76 65 72   version$1 = ver
16890 73 69 6f 6e 3b 0a 20 20 76 61 72 20 6f 62 73 65  sion;.  var obse
168a0 72 76 61 62 6c 65 24 31 20 3d 20 6f 62 73 65 72  rvable$1 = obser
168b0 76 61 62 6c 65 3b 0a 0a 20 20 76 61 72 20 72 69  vable;..  var ri
168c0 6f 74 24 31 20 3d 20 65 78 74 65 6e 64 28 7b 7d  ot$1 = extend({}
168d0 2c 20 63 6f 72 65 2c 20 7b 0a 20 20 20 20 6f 62  , core, {.    ob
168e0 73 65 72 76 61 62 6c 65 3a 20 6f 62 73 65 72 76  servable: observ
168f0 61 62 6c 65 2c 0a 20 20 20 20 73 65 74 74 69 6e  able,.    settin
16900 67 73 3a 20 73 65 74 74 69 6e 67 73 24 31 2c 0a  gs: settings$1,.
16910 20 20 20 20 75 74 69 6c 3a 20 75 74 69 6c 2c 0a      util: util,.
16920 20 20 7d 29 3b 0a 0a 20 20 76 61 72 20 72 69 6f    });..  var rio
16930 74 24 32 20 3d 20 2f 2a 23 5f 5f 50 55 52 45 5f  t$2 = /*#__PURE_
16940 5f 2a 2f 4f 62 6a 65 63 74 2e 66 72 65 65 7a 65  _*/Object.freeze
16950 28 7b 0a 20 20 20 20 73 65 74 74 69 6e 67 73 3a  ({.    settings:
16960 20 73 65 74 74 69 6e 67 73 24 31 2c 0a 20 20 20   settings$1,.   
16970 20 75 74 69 6c 3a 20 75 74 69 6c 2c 0a 20 20 20   util: util,.   
16980 20 54 61 67 3a 20 54 61 67 24 31 2c 0a 20 20 20   Tag: Tag$1,.   
16990 20 74 61 67 3a 20 74 61 67 24 31 2c 0a 20 20 20   tag: tag$1,.   
169a0 20 74 61 67 32 3a 20 74 61 67 32 24 31 2c 0a 20   tag2: tag2$1,. 
169b0 20 20 20 6d 6f 75 6e 74 3a 20 6d 6f 75 6e 74 24     mount: mount$
169c0 32 2c 0a 20 20 20 20 6d 69 78 69 6e 3a 20 6d 69  2,.    mixin: mi
169d0 78 69 6e 24 31 2c 0a 20 20 20 20 75 70 64 61 74  xin$1,.    updat
169e0 65 3a 20 75 70 64 61 74 65 24 32 2c 0a 20 20 20  e: update$2,.   
169f0 20 75 6e 72 65 67 69 73 74 65 72 3a 20 75 6e 72   unregister: unr
16a00 65 67 69 73 74 65 72 24 31 2c 0a 20 20 20 20 76  egister$1,.    v
16a10 65 72 73 69 6f 6e 3a 20 76 65 72 73 69 6f 6e 24  ersion: version$
16a20 31 2c 0a 20 20 20 20 6f 62 73 65 72 76 61 62 6c  1,.    observabl
16a30 65 3a 20 6f 62 73 65 72 76 61 62 6c 65 24 31 2c  e: observable$1,
16a40 0a 20 20 20 20 64 65 66 61 75 6c 74 3a 20 72 69  .    default: ri
16a50 6f 74 24 31 0a 20 20 7d 29 3b 0a 0a 20 20 2f 2a  ot$1.  });..  /*
16a60 2a 0a 20 20 20 2a 20 43 6f 6d 70 69 6c 65 72 20  *.   * Compiler 
16a70 66 6f 72 20 72 69 6f 74 20 63 75 73 74 6f 6d 20  for riot custom 
16a80 74 61 67 73 0a 20 20 20 2a 20 40 76 65 72 73 69  tags.   * @versi
16a90 6f 6e 20 76 33 2e 35 2e 32 0a 20 20 20 2a 2f 0a  on v3.5.2.   */.
16aa0 0a 20 20 2f 2f 20 69 73 74 61 6e 62 75 6c 20 69  .  // istanbul i
16ab0 67 6e 6f 72 65 20 6e 65 78 74 0a 20 20 66 75 6e  gnore next.  fun
16ac0 63 74 69 6f 6e 20 73 61 66 65 52 65 67 65 78 20  ction safeRegex 
16ad0 28 72 65 29 20 7b 0a 20 20 20 20 76 61 72 20 61  (re) {.    var a
16ae0 72 67 75 6d 65 6e 74 73 24 31 20 3d 20 61 72 67  rguments$1 = arg
16af0 75 6d 65 6e 74 73 3b 0a 0a 20 20 20 20 76 61 72  uments;..    var
16b00 20 73 72 63 20 3d 20 72 65 2e 73 6f 75 72 63 65   src = re.source
16b10 3b 0a 20 20 20 20 76 61 72 20 6f 70 74 20 3d 20  ;.    var opt = 
16b20 72 65 2e 67 6c 6f 62 61 6c 20 3f 20 27 67 27 20  re.global ? 'g' 
16b30 3a 20 27 27 3b 0a 0a 20 20 20 20 69 66 20 28 72  : '';..    if (r
16b40 65 2e 69 67 6e 6f 72 65 43 61 73 65 29 20 7b 20  e.ignoreCase) { 
16b50 6f 70 74 20 2b 3d 20 27 69 27 3b 20 7d 0a 20 20  opt += 'i'; }.  
16b60 20 20 69 66 20 28 72 65 2e 6d 75 6c 74 69 6c 69    if (re.multili
16b70 6e 65 29 20 20 7b 20 6f 70 74 20 2b 3d 20 27 6d  ne)  { opt += 'm
16b80 27 3b 20 7d 0a 0a 20 20 20 20 66 6f 72 20 28 76  '; }..    for (v
16b90 61 72 20 69 20 3d 20 31 3b 20 69 20 3c 20 61 72  ar i = 1; i < ar
16ba0 67 75 6d 65 6e 74 73 2e 6c 65 6e 67 74 68 3b 20  guments.length; 
16bb0 69 2b 2b 29 20 7b 0a 20 20 20 20 20 20 73 72 63  i++) {.      src
16bc0 20 3d 20 73 72 63 2e 72 65 70 6c 61 63 65 28 27   = src.replace('
16bd0 40 27 2c 20 27 5c 5c 27 20 2b 20 61 72 67 75 6d  @', '\\' + argum
16be0 65 6e 74 73 24 31 5b 69 5d 29 3b 0a 20 20 20 20  ents$1[i]);.    
16bf0 7d 0a 0a 20 20 20 20 72 65 74 75 72 6e 20 6e 65  }..    return ne
16c00 77 20 52 65 67 45 78 70 28 73 72 63 2c 20 6f 70  w RegExp(src, op
16c10 74 29 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20  t).  }..  /**.  
16c20 20 2a 20 40 6d 6f 64 75 6c 65 20 70 61 72 73 65   * @module parse
16c30 72 73 0a 20 20 20 2a 2f 0a 20 20 76 61 72 20 70  rs.   */.  var p
16c40 61 72 73 65 72 73 20 3d 20 28 66 75 6e 63 74 69  arsers = (functi
16c50 6f 6e 20 28 77 69 6e 29 20 7b 0a 0a 20 20 20 20  on (win) {..    
16c60 76 61 72 20 5f 70 20 3d 20 7b 7d 3b 0a 0a 20 20  var _p = {};..  
16c70 20 20 66 75 6e 63 74 69 6f 6e 20 5f 72 20 28 6e    function _r (n
16c80 61 6d 65 29 20 7b 0a 20 20 20 20 20 20 76 61 72  ame) {.      var
16c90 20 70 61 72 73 65 72 20 3d 20 77 69 6e 5b 6e 61   parser = win[na
16ca0 6d 65 5d 3b 0a 0a 20 20 20 20 20 20 69 66 20 28  me];..      if (
16cb0 70 61 72 73 65 72 29 20 7b 20 72 65 74 75 72 6e  parser) { return
16cc0 20 70 61 72 73 65 72 20 7d 0a 0a 20 20 20 20 20   parser }..     
16cd0 20 74 68 72 6f 77 20 6e 65 77 20 45 72 72 6f 72   throw new Error
16ce0 28 27 50 61 72 73 65 72 20 22 27 20 2b 20 6e 61  ('Parser "' + na
16cf0 6d 65 20 2b 20 27 22 20 6e 6f 74 20 6c 6f 61 64  me + '" not load
16d00 65 64 2e 27 29 0a 20 20 20 20 7d 0a 0a 20 20 20  ed.').    }..   
16d10 20 66 75 6e 63 74 69 6f 6e 20 5f 72 65 71 20 28   function _req (
16d20 6e 61 6d 65 29 20 7b 0a 20 20 20 20 20 20 76 61  name) {.      va
16d30 72 20 70 61 72 74 73 20 3d 20 6e 61 6d 65 2e 73  r parts = name.s
16d40 70 6c 69 74 28 27 2e 27 29 3b 0a 0a 20 20 20 20  plit('.');..    
16d50 20 20 69 66 20 28 70 61 72 74 73 2e 6c 65 6e 67    if (parts.leng
16d60 74 68 20 21 3d 3d 20 32 29 20 7b 20 74 68 72 6f  th !== 2) { thro
16d70 77 20 6e 65 77 20 45 72 72 6f 72 28 27 42 61 64  w new Error('Bad
16d80 20 66 6f 72 6d 61 74 20 66 6f 72 20 70 61 72 73   format for pars
16d90 65 72 73 2e 5f 72 65 71 27 29 20 7d 0a 0a 20 20  ers._req') }..  
16da0 20 20 20 20 76 61 72 20 70 61 72 73 65 72 20 3d      var parser =
16db0 20 5f 70 5b 70 61 72 74 73 5b 30 5d 5d 5b 70 61   _p[parts[0]][pa
16dc0 72 74 73 5b 31 5d 5d 3b 0a 20 20 20 20 20 20 69  rts[1]];.      i
16dd0 66 20 28 70 61 72 73 65 72 29 20 7b 20 72 65 74  f (parser) { ret
16de0 75 72 6e 20 70 61 72 73 65 72 20 7d 0a 0a 20 20  urn parser }..  
16df0 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 45 72      throw new Er
16e00 72 6f 72 28 27 50 61 72 73 65 72 20 22 27 20 2b  ror('Parser "' +
16e10 20 6e 61 6d 65 20 2b 20 27 22 20 6e 6f 74 20 66   name + '" not f
16e20 6f 75 6e 64 2e 27 29 0a 20 20 20 20 7d 0a 0a 20  ound.').    }.. 
16e30 20 20 20 66 75 6e 63 74 69 6f 6e 20 65 78 74 65     function exte
16e40 6e 64 20 28 6f 62 6a 2c 20 70 72 6f 70 73 29 20  nd (obj, props) 
16e50 7b 0a 20 20 20 20 20 20 69 66 20 28 70 72 6f 70  {.      if (prop
16e60 73 29 20 7b 0a 20 20 20 20 20 20 20 20 66 6f 72  s) {.        for
16e70 20 28 76 61 72 20 70 72 6f 70 20 69 6e 20 70 72   (var prop in pr
16e80 6f 70 73 29 20 7b 0a 20 20 20 20 20 20 20 20 20  ops) {.         
16e90 20 2f 2a 20 69 73 74 61 6e 62 75 6c 20 69 67 6e   /* istanbul ign
16ea0 6f 72 65 20 6e 65 78 74 20 2a 2f 0a 20 20 20 20  ore next */.    
16eb0 20 20 20 20 20 20 69 66 20 28 70 72 6f 70 73 2e        if (props.
16ec0 68 61 73 4f 77 6e 50 72 6f 70 65 72 74 79 28 70  hasOwnProperty(p
16ed0 72 6f 70 29 29 20 7b 0a 20 20 20 20 20 20 20 20  rop)) {.        
16ee0 20 20 20 20 6f 62 6a 5b 70 72 6f 70 5d 20 3d 20      obj[prop] = 
16ef0 70 72 6f 70 73 5b 70 72 6f 70 5d 3b 0a 20 20 20  props[prop];.   
16f00 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20         }.       
16f10 20 7d 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 20   }.      }.     
16f20 20 72 65 74 75 72 6e 20 6f 62 6a 0a 20 20 20 20   return obj.    
16f30 7d 0a 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20  }..    function 
16f40 72 65 6e 64 65 72 50 75 67 20 28 63 6f 6d 70 69  renderPug (compi
16f50 6c 65 72 4e 61 6d 65 2c 20 68 74 6d 6c 2c 20 6f  lerName, html, o
16f60 70 74 73 2c 20 75 72 6c 29 20 7b 0a 20 20 20 20  pts, url) {.    
16f70 20 20 6f 70 74 73 20 3d 20 65 78 74 65 6e 64 28    opts = extend(
16f80 7b 0a 20 20 20 20 20 20 20 20 70 72 65 74 74 79  {.        pretty
16f90 3a 20 74 72 75 65 2c 0a 20 20 20 20 20 20 20 20  : true,.        
16fa0 66 69 6c 65 6e 61 6d 65 3a 20 75 72 6c 2c 0a 20  filename: url,. 
16fb0 20 20 20 20 20 20 20 64 6f 63 74 79 70 65 3a 20         doctype: 
16fc0 27 68 74 6d 6c 27 0a 20 20 20 20 20 20 7d 2c 20  'html'.      }, 
16fd0 6f 70 74 73 29 3b 0a 20 20 20 20 20 20 72 65 74  opts);.      ret
16fe0 75 72 6e 20 5f 72 28 63 6f 6d 70 69 6c 65 72 4e  urn _r(compilerN
16ff0 61 6d 65 29 2e 72 65 6e 64 65 72 28 68 74 6d 6c  ame).render(html
17000 2c 20 6f 70 74 73 29 0a 20 20 20 20 7d 0a 0a 20  , opts).    }.. 
17010 20 20 20 5f 70 2e 68 74 6d 6c 20 3d 20 7b 0a 20     _p.html = {. 
17020 20 20 20 20 20 6a 61 64 65 3a 20 66 75 6e 63 74       jade: funct
17030 69 6f 6e 20 28 68 74 6d 6c 2c 20 6f 70 74 73 2c  ion (html, opts,
17040 20 75 72 6c 29 20 7b 0a 20 20 20 20 20 20 20 20   url) {.        
17050 2f 2a 20 65 73 6c 69 6e 74 2d 64 69 73 61 62 6c  /* eslint-disabl
17060 65 20 2a 2f 0a 20 20 20 20 20 20 20 20 63 6f 6e  e */.        con
17070 73 6f 6c 65 2e 6c 6f 67 28 27 44 45 50 52 45 43  sole.log('DEPREC
17080 41 54 49 4f 4e 20 57 41 52 4e 49 4e 47 3a 20 6a  ATION WARNING: j
17090 61 64 65 20 77 61 73 20 72 65 6e 61 6d 65 64 20  ade was renamed 
170a0 22 70 75 67 22 20 2d 20 54 68 65 20 6a 61 64 65  "pug" - The jade
170b0 20 70 61 72 73 65 72 20 77 69 6c 6c 20 62 65 20   parser will be 
170c0 72 65 6d 6f 76 65 64 20 69 6e 20 72 69 6f 74 40  removed in riot@
170d0 33 2e 30 2e 30 21 27 29 3b 0a 20 20 20 20 20 20  3.0.0!');.      
170e0 20 20 2f 2a 20 65 73 6c 69 6e 74 2d 65 6e 61 62    /* eslint-enab
170f0 6c 65 20 2a 2f 0a 20 20 20 20 20 20 20 20 72 65  le */.        re
17100 74 75 72 6e 20 72 65 6e 64 65 72 50 75 67 28 27  turn renderPug('
17110 6a 61 64 65 27 2c 20 68 74 6d 6c 2c 20 6f 70 74  jade', html, opt
17120 73 2c 20 75 72 6c 29 0a 20 20 20 20 20 20 7d 2c  s, url).      },
17130 0a 20 20 20 20 20 20 70 75 67 3a 20 66 75 6e 63  .      pug: func
17140 74 69 6f 6e 20 28 68 74 6d 6c 2c 20 6f 70 74 73  tion (html, opts
17150 2c 20 75 72 6c 29 20 7b 0a 20 20 20 20 20 20 20  , url) {.       
17160 20 72 65 74 75 72 6e 20 72 65 6e 64 65 72 50 75   return renderPu
17170 67 28 27 70 75 67 27 2c 20 68 74 6d 6c 2c 20 6f  g('pug', html, o
17180 70 74 73 2c 20 75 72 6c 29 0a 20 20 20 20 20 20  pts, url).      
17190 7d 0a 20 20 20 20 7d 3b 0a 20 20 20 20 5f 70 2e  }.    };.    _p.
171a0 63 73 73 20 3d 20 7b 0a 20 20 20 20 20 20 6c 65  css = {.      le
171b0 73 73 3a 20 66 75 6e 63 74 69 6f 6e 20 28 74 61  ss: function (ta
171c0 67 2c 20 63 73 73 2c 20 6f 70 74 73 2c 20 75 72  g, css, opts, ur
171d0 6c 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72  l) {.        var
171e0 20 72 65 74 3b 0a 0a 20 20 20 20 20 20 20 20 6f   ret;..        o
171f0 70 74 73 20 3d 20 65 78 74 65 6e 64 28 7b 0a 20  pts = extend({. 
17200 20 20 20 20 20 20 20 20 20 73 79 6e 63 3a 20 74           sync: t
17210 72 75 65 2c 0a 20 20 20 20 20 20 20 20 20 20 73  rue,.          s
17220 79 6e 63 49 6d 70 6f 72 74 3a 20 74 72 75 65 2c  yncImport: true,
17230 0a 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 6e  .          filen
17240 61 6d 65 3a 20 75 72 6c 0a 20 20 20 20 20 20 20  ame: url.       
17250 20 7d 2c 20 6f 70 74 73 29 3b 0a 20 20 20 20 20   }, opts);.     
17260 20 20 20 5f 72 28 27 6c 65 73 73 27 29 2e 72 65     _r('less').re
17270 6e 64 65 72 28 63 73 73 2c 20 6f 70 74 73 2c 20  nder(css, opts, 
17280 66 75 6e 63 74 69 6f 6e 20 28 65 72 72 2c 20 72  function (err, r
17290 65 73 75 6c 74 29 20 7b 0a 20 20 20 20 20 20 20  esult) {.       
172a0 20 20 20 2f 2f 20 69 73 74 61 6e 62 75 6c 20 69     // istanbul i
172b0 67 6e 6f 72 65 20 6e 65 78 74 0a 20 20 20 20 20  gnore next.     
172c0 20 20 20 20 20 69 66 20 28 65 72 72 29 20 7b 20       if (err) { 
172d0 74 68 72 6f 77 20 65 72 72 20 7d 0a 20 20 20 20  throw err }.    
172e0 20 20 20 20 20 20 72 65 74 20 3d 20 72 65 73 75        ret = resu
172f0 6c 74 2e 63 73 73 3b 0a 20 20 20 20 20 20 20 20  lt.css;.        
17300 7d 29 3b 0a 20 20 20 20 20 20 20 20 72 65 74 75  });.        retu
17310 72 6e 20 72 65 74 0a 20 20 20 20 20 20 7d 0a 20  rn ret.      }. 
17320 20 20 20 7d 3b 0a 20 20 20 20 5f 70 2e 6a 73 20     };.    _p.js 
17330 3d 20 7b 0a 0a 20 20 20 20 20 20 65 73 36 3a 20  = {..      es6: 
17340 66 75 6e 63 74 69 6f 6e 20 28 6a 73 2c 20 6f 70  function (js, op
17350 74 73 2c 20 75 72 6c 29 20 7b 20 20 20 2f 2f 20  ts, url) {   // 
17360 65 73 6c 69 6e 74 2d 64 69 73 61 62 6c 65 2d 6c  eslint-disable-l
17370 69 6e 65 20 6e 6f 2d 75 6e 75 73 65 64 2d 76 61  ine no-unused-va
17380 72 73 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  rs.        retur
17390 6e 20 5f 72 28 27 42 61 62 65 6c 27 29 2e 74 72  n _r('Babel').tr
173a0 61 6e 73 66 6f 72 6d 28 20 2f 2f 20 65 73 6c 69  ansform( // esli
173b0 6e 74 2d 64 69 73 61 62 6c 65 2d 6c 69 6e 65 0a  nt-disable-line.
173c0 20 20 20 20 20 20 20 20 20 20 6a 73 2c 0a 20 20            js,.  
173d0 20 20 20 20 20 20 20 20 65 78 74 65 6e 64 28 7b          extend({
173e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 6c 75  .            plu
173f0 67 69 6e 73 3a 20 5b 0a 20 20 20 20 20 20 20 20  gins: [.        
17400 20 20 20 20 20 20 5b 27 74 72 61 6e 73 66 6f 72        ['transfor
17410 6d 2d 65 73 32 30 31 35 2d 74 65 6d 70 6c 61 74  m-es2015-templat
17420 65 2d 6c 69 74 65 72 61 6c 73 27 2c 20 7b 20 6c  e-literals', { l
17430 6f 6f 73 65 3a 20 74 72 75 65 20 7d 5d 2c 0a 20  oose: true }],. 
17440 20 20 20 20 20 20 20 20 20 20 20 20 20 27 74 72               'tr
17450 61 6e 73 66 6f 72 6d 2d 65 73 32 30 31 35 2d 6c  ansform-es2015-l
17460 69 74 65 72 61 6c 73 27 2c 0a 20 20 20 20 20 20  iterals',.      
17470 20 20 20 20 20 20 20 20 27 74 72 61 6e 73 66 6f          'transfo
17480 72 6d 2d 65 73 32 30 31 35 2d 66 75 6e 63 74 69  rm-es2015-functi
17490 6f 6e 2d 6e 61 6d 65 27 2c 0a 20 20 20 20 20 20  on-name',.      
174a0 20 20 20 20 20 20 20 20 27 74 72 61 6e 73 66 6f          'transfo
174b0 72 6d 2d 65 73 32 30 31 35 2d 61 72 72 6f 77 2d  rm-es2015-arrow-
174c0 66 75 6e 63 74 69 6f 6e 73 27 2c 0a 20 20 20 20  functions',.    
174d0 20 20 20 20 20 20 20 20 20 20 27 74 72 61 6e 73            'trans
174e0 66 6f 72 6d 2d 65 73 32 30 31 35 2d 62 6c 6f 63  form-es2015-bloc
174f0 6b 2d 73 63 6f 70 65 64 2d 66 75 6e 63 74 69 6f  k-scoped-functio
17500 6e 73 27 2c 0a 20 20 20 20 20 20 20 20 20 20 20  ns',.           
17510 20 20 20 5b 27 74 72 61 6e 73 66 6f 72 6d 2d 65     ['transform-e
17520 73 32 30 31 35 2d 63 6c 61 73 73 65 73 27 2c 20  s2015-classes', 
17530 7b 20 6c 6f 6f 73 65 3a 20 74 72 75 65 20 7d 5d  { loose: true }]
17540 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ,.              
17550 27 74 72 61 6e 73 66 6f 72 6d 2d 65 73 32 30 31  'transform-es201
17560 35 2d 6f 62 6a 65 63 74 2d 73 75 70 65 72 27 2c  5-object-super',
17570 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27  .              '
17580 74 72 61 6e 73 66 6f 72 6d 2d 65 73 32 30 31 35  transform-es2015
17590 2d 73 68 6f 72 74 68 61 6e 64 2d 70 72 6f 70 65  -shorthand-prope
175a0 72 74 69 65 73 27 2c 0a 20 20 20 20 20 20 20 20  rties',.        
175b0 20 20 20 20 20 20 27 74 72 61 6e 73 66 6f 72 6d        'transform
175c0 2d 65 73 32 30 31 35 2d 64 75 70 6c 69 63 61 74  -es2015-duplicat
175d0 65 2d 6b 65 79 73 27 2c 0a 20 20 20 20 20 20 20  e-keys',.       
175e0 20 20 20 20 20 20 20 5b 27 74 72 61 6e 73 66 6f         ['transfo
175f0 72 6d 2d 65 73 32 30 31 35 2d 63 6f 6d 70 75 74  rm-es2015-comput
17600 65 64 2d 70 72 6f 70 65 72 74 69 65 73 27 2c 20  ed-properties', 
17610 7b 20 6c 6f 6f 73 65 3a 20 74 72 75 65 20 7d 5d  { loose: true }]
17620 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ,.              
17630 5b 27 74 72 61 6e 73 66 6f 72 6d 2d 65 73 32 30  ['transform-es20
17640 31 35 2d 66 6f 72 2d 6f 66 27 2c 20 7b 20 6c 6f  15-for-of', { lo
17650 6f 73 65 3a 20 74 72 75 65 20 7d 5d 2c 0a 20 20  ose: true }],.  
17660 20 20 20 20 20 20 20 20 20 20 20 20 27 74 72 61              'tra
17670 6e 73 66 6f 72 6d 2d 65 73 32 30 31 35 2d 73 74  nsform-es2015-st
17680 69 63 6b 79 2d 72 65 67 65 78 27 2c 0a 20 20 20  icky-regex',.   
17690 20 20 20 20 20 20 20 20 20 20 20 27 74 72 61 6e             'tran
176a0 73 66 6f 72 6d 2d 65 73 32 30 31 35 2d 75 6e 69  sform-es2015-uni
176b0 63 6f 64 65 2d 72 65 67 65 78 27 2c 0a 20 20 20  code-regex',.   
176c0 20 20 20 20 20 20 20 20 20 20 20 27 63 68 65 63             'chec
176d0 6b 2d 65 73 32 30 31 35 2d 63 6f 6e 73 74 61 6e  k-es2015-constan
176e0 74 73 27 2c 0a 20 20 20 20 20 20 20 20 20 20 20  ts',.           
176f0 20 20 20 5b 27 74 72 61 6e 73 66 6f 72 6d 2d 65     ['transform-e
17700 73 32 30 31 35 2d 73 70 72 65 61 64 27 2c 20 7b  s2015-spread', {
17710 20 6c 6f 6f 73 65 3a 20 74 72 75 65 20 7d 5d 2c   loose: true }],
17720 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27  .              '
17730 74 72 61 6e 73 66 6f 72 6d 2d 65 73 32 30 31 35  transform-es2015
17740 2d 70 61 72 61 6d 65 74 65 72 73 27 2c 0a 20 20  -parameters',.  
17750 20 20 20 20 20 20 20 20 20 20 20 20 5b 27 74 72              ['tr
17760 61 6e 73 66 6f 72 6d 2d 65 73 32 30 31 35 2d 64  ansform-es2015-d
17770 65 73 74 72 75 63 74 75 72 69 6e 67 27 2c 20 7b  estructuring', {
17780 20 6c 6f 6f 73 65 3a 20 74 72 75 65 20 7d 5d 2c   loose: true }],
17790 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27  .              '
177a0 74 72 61 6e 73 66 6f 72 6d 2d 65 73 32 30 31 35  transform-es2015
177b0 2d 62 6c 6f 63 6b 2d 73 63 6f 70 69 6e 67 27 2c  -block-scoping',
177c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27  .              '
177d0 74 72 61 6e 73 66 6f 72 6d 2d 65 73 32 30 31 35  transform-es2015
177e0 2d 74 79 70 65 6f 66 2d 73 79 6d 62 6f 6c 27 2c  -typeof-symbol',
177f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5b  .              [
17800 27 74 72 61 6e 73 66 6f 72 6d 2d 65 73 32 30 31  'transform-es201
17810 35 2d 6d 6f 64 75 6c 65 73 2d 63 6f 6d 6d 6f 6e  5-modules-common
17820 6a 73 27 2c 20 7b 20 61 6c 6c 6f 77 54 6f 70 4c  js', { allowTopL
17830 65 76 65 6c 54 68 69 73 3a 20 74 72 75 65 20 7d  evelThis: true }
17840 5d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ],.             
17850 20 5b 27 74 72 61 6e 73 66 6f 72 6d 2d 72 65 67   ['transform-reg
17860 65 6e 65 72 61 74 6f 72 27 2c 20 7b 20 61 73 79  enerator', { asy
17870 6e 63 3a 20 66 61 6c 73 65 2c 20 61 73 79 6e 63  nc: false, async
17880 47 65 6e 65 72 61 74 6f 72 73 3a 20 66 61 6c 73  Generators: fals
17890 65 20 7d 5d 0a 20 20 20 20 20 20 20 20 20 20 20  e }].           
178a0 20 5d 0a 20 20 20 20 20 20 20 20 20 20 7d 2c 0a   ].          },.
178b0 20 20 20 20 20 20 20 20 20 20 6f 70 74 73 0a 20            opts. 
178c0 20 20 20 20 20 20 20 20 20 29 29 2e 63 6f 64 65           )).code
178d0 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20  .      },.      
178e0 62 75 62 6c 65 3a 20 66 75 6e 63 74 69 6f 6e 20  buble: function 
178f0 28 6a 73 2c 20 6f 70 74 73 2c 20 75 72 6c 29 20  (js, opts, url) 
17900 7b 0a 20 20 20 20 20 20 20 20 6f 70 74 73 20 3d  {.        opts =
17910 20 65 78 74 65 6e 64 28 7b 0a 20 20 20 20 20 20   extend({.      
17920 20 20 20 20 73 6f 75 72 63 65 3a 20 75 72 6c 2c      source: url,
17930 0a 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c  .          modul
17940 65 73 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20  es: false.      
17950 20 20 7d 2c 20 6f 70 74 73 29 3b 0a 20 20 20 20    }, opts);.    
17960 20 20 20 20 72 65 74 75 72 6e 20 5f 72 28 27 62      return _r('b
17970 75 62 6c 65 27 29 2e 74 72 61 6e 73 66 6f 72 6d  uble').transform
17980 28 6a 73 2c 20 6f 70 74 73 29 2e 63 6f 64 65 0a  (js, opts).code.
17990 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 63        },.      c
179a0 6f 66 66 65 65 3a 20 66 75 6e 63 74 69 6f 6e 20  offee: function 
179b0 28 6a 73 2c 20 6f 70 74 73 29 20 7b 0a 20 20 20  (js, opts) {.   
179c0 20 20 20 20 20 72 65 74 75 72 6e 20 5f 72 28 27       return _r('
179d0 43 6f 66 66 65 65 53 63 72 69 70 74 27 29 2e 63  CoffeeScript').c
179e0 6f 6d 70 69 6c 65 28 6a 73 2c 20 65 78 74 65 6e  ompile(js, exten
179f0 64 28 7b 20 62 61 72 65 3a 20 74 72 75 65 20 7d  d({ bare: true }
17a00 2c 20 6f 70 74 73 29 29 0a 20 20 20 20 20 20 7d  , opts)).      }
17a10 2c 0a 20 20 20 20 20 20 6c 69 76 65 73 63 72 69  ,.      livescri
17a20 70 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 6a 73  pt: function (js
17a30 2c 20 6f 70 74 73 29 20 7b 0a 20 20 20 20 20 20  , opts) {.      
17a40 20 20 72 65 74 75 72 6e 20 5f 72 28 27 6c 69 76    return _r('liv
17a50 65 73 63 72 69 70 74 27 29 2e 63 6f 6d 70 69 6c  escript').compil
17a60 65 28 6a 73 2c 20 65 78 74 65 6e 64 28 7b 20 62  e(js, extend({ b
17a70 61 72 65 3a 20 74 72 75 65 2c 20 68 65 61 64 65  are: true, heade
17a80 72 3a 20 66 61 6c 73 65 20 7d 2c 20 6f 70 74 73  r: false }, opts
17a90 29 29 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20  )).      },.    
17aa0 20 20 74 79 70 65 73 63 72 69 70 74 3a 20 66 75    typescript: fu
17ab0 6e 63 74 69 6f 6e 20 28 6a 73 2c 20 6f 70 74 73  nction (js, opts
17ac0 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75  ) {.        retu
17ad0 72 6e 20 5f 72 28 27 74 79 70 65 73 63 72 69 70  rn _r('typescrip
17ae0 74 27 29 28 6a 73 2c 20 6f 70 74 73 29 0a 20 20  t')(js, opts).  
17af0 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 6e 6f 6e      },.      non
17b00 65 3a 20 66 75 6e 63 74 69 6f 6e 20 28 6a 73 29  e: function (js)
17b10 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72   {.        retur
17b20 6e 20 6a 73 0a 20 20 20 20 20 20 7d 0a 20 20 20  n js.      }.   
17b30 20 7d 3b 0a 20 20 20 20 5f 70 2e 6a 73 2e 6a 61   };.    _p.js.ja
17b40 76 61 73 63 72 69 70 74 20 20 20 3d 20 5f 70 2e  vascript   = _p.
17b50 6a 73 2e 6e 6f 6e 65 3b 0a 20 20 20 20 5f 70 2e  js.none;.    _p.
17b60 6a 73 2e 63 6f 66 66 65 65 73 63 72 69 70 74 20  js.coffeescript 
17b70 3d 20 5f 70 2e 6a 73 2e 63 6f 66 66 65 65 3b 0a  = _p.js.coffee;.
17b80 20 20 20 20 5f 70 2e 5f 72 65 71 20 20 3d 20 5f      _p._req  = _
17b90 72 65 71 3b 0a 20 20 20 20 5f 70 2e 75 74 69 6c  req;.    _p.util
17ba0 73 20 3d 20 7b 0a 20 20 20 20 20 20 65 78 74 65  s = {.      exte
17bb0 6e 64 3a 20 65 78 74 65 6e 64 0a 20 20 20 20 7d  nd: extend.    }
17bc0 3b 0a 0a 20 20 20 20 72 65 74 75 72 6e 20 5f 70  ;..    return _p
17bd0 0a 0a 20 20 7d 29 28 77 69 6e 64 6f 77 20 7c 7c  ..  })(window ||
17be0 20 67 6c 6f 62 61 6c 29 3b 0a 0a 20 20 76 61 72   global);..  var
17bf0 20 53 5f 53 51 5f 53 54 52 20 3d 20 2f 27 5b 5e   S_SQ_STR = /'[^
17c00 27 5c 6e 5c 72 5c 5c 5d 2a 28 3f 3a 5c 5c 28 3f  '\n\r\\]*(?:\\(?
17c10 3a 5c 72 5c 6e 3f 7c 5b 5c 53 5c 73 5d 29 5b 5e  :\r\n?|[\S\s])[^
17c20 27 5c 6e 5c 72 5c 5c 5d 2a 29 2a 27 2f 2e 73 6f  '\n\r\\]*)*'/.so
17c30 75 72 63 65 3b 0a 0a 20 20 76 61 72 20 53 5f 52  urce;..  var S_R
17c40 5f 53 52 43 31 20 3d 20 5b 0a 20 20 20 20 2f 5c  _SRC1 = [.    /\
17c50 2f 5c 2a 5b 5e 2a 5d 2a 5c 2a 2b 28 3f 3a 5b 5e  /\*[^*]*\*+(?:[^
17c60 2a 2f 5d 5b 5e 2a 5d 2a 5c 2a 2b 29 2a 5c 2f 2f  */][^*]*\*+)*\//
17c70 2e 73 6f 75 72 63 65 2c 0a 20 20 20 20 27 2f 2f  .source,.    '//
17c80 2e 2a 27 2c 0a 20 20 20 20 53 5f 53 51 5f 53 54  .*',.    S_SQ_ST
17c90 52 2c 0a 20 20 20 20 53 5f 53 51 5f 53 54 52 2e  R,.    S_SQ_STR.
17ca0 72 65 70 6c 61 63 65 28 2f 27 2f 67 2c 20 27 22  replace(/'/g, '"
17cb0 27 29 2c 0a 20 20 20 20 27 28 5b 2f 60 5d 29 27  '),.    '([/`])'
17cc0 0a 20 20 5d 2e 6a 6f 69 6e 28 27 7c 27 29 3b 0a  .  ].join('|');.
17cd0 0a 20 20 76 61 72 20 53 5f 52 5f 53 52 43 32 20  .  var S_R_SRC2 
17ce0 3d 20 28 53 5f 52 5f 53 52 43 31 2e 73 6c 69 63  = (S_R_SRC1.slic
17cf0 65 28 30 2c 20 2d 32 29 29 20 2b 20 22 7b 7d 5d  e(0, -2)) + "{}]
17d00 29 22 3b 0a 0a 20 20 66 75 6e 63 74 69 6f 6e 20  )";..  function 
17d10 73 6b 69 70 45 53 36 73 74 72 20 28 63 6f 64 65  skipES6str (code
17d20 2c 20 73 74 61 72 74 2c 20 73 74 61 63 6b 29 20  , start, stack) 
17d30 7b 0a 0a 20 20 20 20 76 61 72 20 72 65 20 3d 20  {..    var re = 
17d40 2f 5b 60 24 5c 5c 5d 2f 67 3b 0a 0a 20 20 20 20  /[`$\\]/g;..    
17d50 72 65 2e 6c 61 73 74 49 6e 64 65 78 20 3d 20 73  re.lastIndex = s
17d60 74 61 72 74 3b 0a 20 20 20 20 77 68 69 6c 65 20  tart;.    while 
17d70 28 72 65 2e 65 78 65 63 28 63 6f 64 65 29 29 20  (re.exec(code)) 
17d80 7b 0a 20 20 20 20 20 20 76 61 72 20 65 6e 64 20  {.      var end 
17d90 3d 20 72 65 2e 6c 61 73 74 49 6e 64 65 78 3b 0a  = re.lastIndex;.
17da0 20 20 20 20 20 20 76 61 72 20 63 20 3d 20 63 6f        var c = co
17db0 64 65 5b 65 6e 64 20 2d 20 31 5d 3b 0a 0a 20 20  de[end - 1];..  
17dc0 20 20 20 20 69 66 20 28 63 20 3d 3d 3d 20 27 60      if (c === '`
17dd0 27 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74  ') {.        ret
17de0 75 72 6e 20 65 6e 64 0a 20 20 20 20 20 20 7d 0a  urn end.      }.
17df0 20 20 20 20 20 20 69 66 20 28 63 20 3d 3d 3d 20        if (c === 
17e00 27 24 27 20 26 26 20 63 6f 64 65 5b 65 6e 64 5d  '$' && code[end]
17e10 20 3d 3d 3d 20 27 7b 27 29 20 7b 0a 20 20 20 20   === '{') {.    
17e20 20 20 20 20 73 74 61 63 6b 2e 70 75 73 68 28 27      stack.push('
17e30 60 27 2c 20 27 7d 27 29 3b 0a 20 20 20 20 20 20  `', '}');.      
17e40 20 20 72 65 74 75 72 6e 20 65 6e 64 20 2b 20 31    return end + 1
17e50 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 72  .      }.      r
17e60 65 2e 6c 61 73 74 49 6e 64 65 78 2b 2b 3b 0a 20  e.lastIndex++;. 
17e70 20 20 20 7d 0a 0a 20 20 20 20 74 68 72 6f 77 20     }..    throw 
17e80 6e 65 77 20 45 72 72 6f 72 28 27 55 6e 63 6c 6f  new Error('Unclo
17e90 73 65 64 20 45 53 36 20 74 65 6d 70 6c 61 74 65  sed ES6 template
17ea0 27 29 0a 20 20 7d 0a 0a 20 20 66 75 6e 63 74 69  ').  }..  functi
17eb0 6f 6e 20 6a 73 53 70 6c 69 74 74 65 72 20 28 63  on jsSplitter (c
17ec0 6f 64 65 2c 20 73 74 61 72 74 29 20 7b 0a 0a 20  ode, start) {.. 
17ed0 20 20 20 76 61 72 20 72 65 31 20 3d 20 6e 65 77     var re1 = new
17ee0 20 52 65 67 45 78 70 28 53 5f 52 5f 53 52 43 31   RegExp(S_R_SRC1
17ef0 2c 20 27 67 27 29 3b 0a 20 20 20 20 76 61 72 20  , 'g');.    var 
17f00 72 65 32 3b 0a 0a 20 20 20 20 2f 2a 20 69 73 74  re2;..    /* ist
17f10 61 6e 62 75 6c 20 69 67 6e 6f 72 65 20 6e 65 78  anbul ignore nex
17f20 74 20 2a 2f 0a 20 20 76 61 72 20 73 6b 69 70 52  t */.  var skipR
17f30 65 67 65 78 20 3d 20 62 72 61 63 6b 65 74 73 2e  egex = brackets.
17f40 73 6b 69 70 52 65 67 65 78 3b 0a 20 20 20 20 76  skipRegex;.    v
17f50 61 72 20 6f 66 66 73 65 74 20 3d 20 73 74 61 72  ar offset = star
17f60 74 20 7c 20 30 3b 0a 20 20 20 20 76 61 72 20 72  t | 0;.    var r
17f70 65 73 75 6c 74 20 3d 20 5b 5b 5d 5d 3b 0a 20 20  esult = [[]];.  
17f80 20 20 76 61 72 20 73 74 61 63 6b 20 3d 20 5b 5d    var stack = []
17f90 3b 0a 20 20 20 20 76 61 72 20 72 65 20 3d 20 72  ;.    var re = r
17fa0 65 31 3b 0a 0a 20 20 20 20 76 61 72 20 6c 61 73  e1;..    var las
17fb0 74 50 6f 73 20 3d 20 72 65 2e 6c 61 73 74 49 6e  tPos = re.lastIn
17fc0 64 65 78 20 3d 20 6f 66 66 73 65 74 3b 0a 20 20  dex = offset;.  
17fd0 20 20 76 61 72 20 73 74 72 2c 20 63 68 2c 20 69    var str, ch, i
17fe0 64 78 2c 20 65 6e 64 2c 20 6d 61 74 63 68 3b 0a  dx, end, match;.
17ff0 0a 20 20 20 20 77 68 69 6c 65 20 28 28 6d 61 74  .    while ((mat
18000 63 68 20 3d 20 72 65 2e 65 78 65 63 28 63 6f 64  ch = re.exec(cod
18010 65 29 29 29 20 7b 0a 20 20 20 20 20 20 69 64 78  e))) {.      idx
18020 20 3d 20 6d 61 74 63 68 2e 69 6e 64 65 78 3b 0a   = match.index;.
18030 20 20 20 20 20 20 65 6e 64 20 3d 20 72 65 2e 6c        end = re.l
18040 61 73 74 49 6e 64 65 78 3b 0a 20 20 20 20 20 20  astIndex;.      
18050 73 74 72 20 3d 20 27 27 3b 0a 20 20 20 20 20 20  str = '';.      
18060 63 68 20 3d 20 6d 61 74 63 68 5b 31 5d 3b 0a 0a  ch = match[1];..
18070 20 20 20 20 20 20 69 66 20 28 63 68 29 20 7b 0a        if (ch) {.
18080 0a 20 20 20 20 20 20 20 20 69 66 20 28 63 68 20  .        if (ch 
18090 3d 3d 3d 20 27 7b 27 29 20 7b 0a 20 20 20 20 20  === '{') {.     
180a0 20 20 20 20 20 73 74 61 63 6b 2e 70 75 73 68 28       stack.push(
180b0 27 7d 27 29 3b 0a 0a 20 20 20 20 20 20 20 20 7d  '}');..        }
180c0 20 65 6c 73 65 20 69 66 20 28 63 68 20 3d 3d 3d   else if (ch ===
180d0 20 27 7d 27 29 20 7b 0a 20 20 20 20 20 20 20 20   '}') {.        
180e0 20 20 69 66 20 28 73 74 61 63 6b 2e 70 6f 70 28    if (stack.pop(
180f0 29 20 21 3d 3d 20 63 68 29 20 7b 0a 20 20 20 20  ) !== ch) {.    
18100 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65          throw ne
18110 77 20 45 72 72 6f 72 28 22 55 6e 65 78 70 65 63  w Error("Unexpec
18120 74 65 64 20 27 7d 27 22 29 0a 0a 20 20 20 20 20  ted '}'")..     
18130 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28       } else if (
18140 73 74 61 63 6b 5b 73 74 61 63 6b 2e 6c 65 6e 67  stack[stack.leng
18150 74 68 20 2d 20 31 5d 20 3d 3d 3d 20 27 60 27 29  th - 1] === '`')
18160 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 63   {.            c
18170 68 20 3d 20 73 74 61 63 6b 2e 70 6f 70 28 29 3b  h = stack.pop();
18180 0a 20 20 20 20 20 20 20 20 20 20 7d 0a 0a 20 20  .          }..  
18190 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20        } else if 
181a0 28 63 68 20 3d 3d 3d 20 27 2f 27 29 20 7b 0a 20  (ch === '/') {. 
181b0 20 20 20 20 20 20 20 20 20 65 6e 64 20 3d 20 73           end = s
181c0 6b 69 70 52 65 67 65 78 28 63 6f 64 65 2c 20 69  kipRegex(code, i
181d0 64 78 29 3b 0a 0a 20 20 20 20 20 20 20 20 20 20  dx);..          
181e0 69 66 20 28 65 6e 64 20 3e 20 69 64 78 20 2b 20  if (end > idx + 
181f0 31 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  1) {.           
18200 20 73 74 72 20 3d 20 63 6f 64 65 2e 73 6c 69 63   str = code.slic
18210 65 28 69 64 78 2c 20 65 6e 64 29 3b 0a 20 20 20  e(idx, end);.   
18220 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20         }.       
18230 20 7d 0a 0a 20 20 20 20 20 20 20 20 69 66 20 28   }..        if (
18240 63 68 20 3d 3d 3d 20 27 60 27 29 20 7b 0a 20 20  ch === '`') {.  
18250 20 20 20 20 20 20 20 20 65 6e 64 20 3d 20 73 6b          end = sk
18260 69 70 45 53 36 73 74 72 28 63 6f 64 65 2c 20 65  ipES6str(code, e
18270 6e 64 2c 20 73 74 61 63 6b 29 3b 0a 20 20 20 20  nd, stack);.    
18280 20 20 20 20 20 20 73 74 72 20 3d 20 63 6f 64 65        str = code
18290 2e 73 6c 69 63 65 28 69 64 78 2c 20 65 6e 64 29  .slice(idx, end)
182a0 3b 0a 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  ;..          if 
182b0 28 73 74 61 63 6b 2e 6c 65 6e 67 74 68 29 20 7b  (stack.length) {
182c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 20  .            re 
182d0 3d 20 72 65 32 20 7c 7c 20 28 72 65 32 20 3d 20  = re2 || (re2 = 
182e0 6e 65 77 20 52 65 67 45 78 70 28 53 5f 52 5f 53  new RegExp(S_R_S
182f0 52 43 32 2c 20 27 67 27 29 29 3b 0a 20 20 20 20  RC2, 'g'));.    
18300 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20        } else {. 
18310 20 20 20 20 20 20 20 20 20 20 20 72 65 20 3d 20             re = 
18320 72 65 31 3b 0a 20 20 20 20 20 20 20 20 20 20 7d  re1;.          }
18330 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20  .        }..    
18340 20 20 7d 20 65 6c 73 65 20 7b 0a 0a 20 20 20 20    } else {..    
18350 20 20 20 20 73 74 72 20 3d 20 6d 61 74 63 68 5b      str = match[
18360 30 5d 3b 0a 0a 20 20 20 20 20 20 20 20 69 66 20  0];..        if 
18370 28 73 74 72 5b 30 5d 20 3d 3d 3d 20 27 2f 27 29  (str[0] === '/')
18380 20 7b 0a 20 20 20 20 20 20 20 20 20 20 73 74 72   {.          str
18390 20 3d 20 73 74 72 5b 31 5d 20 3d 3d 3d 20 27 2a   = str[1] === '*
183a0 27 20 3f 20 27 20 27 20 3a 20 27 27 3b 0a 20 20  ' ? ' ' : '';.  
183b0 20 20 20 20 20 20 20 20 63 6f 64 65 20 3d 20 63          code = c
183c0 6f 64 65 2e 73 6c 69 63 65 28 6f 66 66 73 65 74  ode.slice(offset
183d0 2c 20 69 64 78 29 20 2b 20 73 74 72 20 2b 20 63  , idx) + str + c
183e0 6f 64 65 2e 73 6c 69 63 65 28 65 6e 64 29 3b 0a  ode.slice(end);.
183f0 20 20 20 20 20 20 20 20 20 20 65 6e 64 20 3d 20            end = 
18400 69 64 78 20 2b 20 73 74 72 2e 6c 65 6e 67 74 68  idx + str.length
18410 3b 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 20  ;.          str 
18420 3d 20 27 27 3b 0a 0a 20 20 20 20 20 20 20 20 7d  = '';..        }
18430 20 65 6c 73 65 20 69 66 20 28 73 74 72 2e 6c 65   else if (str.le
18440 6e 67 74 68 20 3d 3d 3d 20 32 29 20 7b 0a 20 20  ngth === 2) {.  
18450 20 20 20 20 20 20 20 20 73 74 72 20 3d 20 27 27          str = ''
18460 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20  ;.        }.    
18470 20 20 7d 0a 0a 20 20 20 20 20 20 69 66 20 28 73    }..      if (s
18480 74 72 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65  tr) {.        re
18490 73 75 6c 74 5b 30 5d 2e 70 75 73 68 28 63 6f 64  sult[0].push(cod
184a0 65 2e 73 6c 69 63 65 28 6c 61 73 74 50 6f 73 2c  e.slice(lastPos,
184b0 20 69 64 78 29 29 3b 0a 20 20 20 20 20 20 20 20   idx));.        
184c0 72 65 73 75 6c 74 2e 70 75 73 68 28 73 74 72 29  result.push(str)
184d0 3b 0a 20 20 20 20 20 20 20 20 6c 61 73 74 50 6f  ;.        lastPo
184e0 73 20 3d 20 65 6e 64 3b 0a 20 20 20 20 20 20 7d  s = end;.      }
184f0 0a 0a 20 20 20 20 20 20 72 65 2e 6c 61 73 74 49  ..      re.lastI
18500 6e 64 65 78 20 3d 20 65 6e 64 3b 0a 20 20 20 20  ndex = end;.    
18510 7d 0a 0a 20 20 20 20 72 65 73 75 6c 74 5b 30 5d  }..    result[0]
18520 2e 70 75 73 68 28 63 6f 64 65 2e 73 6c 69 63 65  .push(code.slice
18530 28 6c 61 73 74 50 6f 73 29 29 3b 0a 0a 20 20 20  (lastPos));..   
18540 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 0a 20   return result. 
18550 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 40   }..  /**.   * @
18560 6d 6f 64 75 6c 65 20 63 6f 6d 70 69 6c 65 72 0a  module compiler.
18570 20 20 20 2a 2f 0a 0a 20 20 76 61 72 20 65 78 74     */..  var ext
18580 65 6e 64 24 31 20 3d 20 70 61 72 73 65 72 73 2e  end$1 = parsers.
18590 75 74 69 6c 73 2e 65 78 74 65 6e 64 3b 0a 20 20  utils.extend;.  
185a0 2f 2a 20 65 73 6c 69 6e 74 2d 65 6e 61 62 6c 65  /* eslint-enable
185b0 20 2a 2f 0a 0a 20 20 76 61 72 20 53 5f 4c 49 4e   */..  var S_LIN
185c0 45 53 54 52 20 3d 20 2f 22 5b 5e 22 5c 6e 5c 5c  ESTR = /"[^"\n\\
185d0 5d 2a 28 3f 3a 5c 5c 5b 5c 53 5c 73 5d 5b 5e 22  ]*(?:\\[\S\s][^"
185e0 5c 6e 5c 5c 5d 2a 29 2a 22 7c 27 5b 5e 27 5c 6e  \n\\]*)*"|'[^'\n
185f0 5c 5c 5d 2a 28 3f 3a 5c 5c 5b 5c 53 5c 73 5d 5b  \\]*(?:\\[\S\s][
18600 5e 27 5c 6e 5c 5c 5d 2a 29 2a 27 2f 2e 73 6f 75  ^'\n\\]*)*'/.sou
18610 72 63 65 3b 0a 0a 20 20 76 61 72 20 53 5f 53 54  rce;..  var S_ST
18620 52 49 4e 47 53 20 3d 20 62 72 61 63 6b 65 74 73  RINGS = brackets
18630 2e 52 5f 53 54 52 49 4e 47 53 2e 73 6f 75 72 63  .R_STRINGS.sourc
18640 65 3b 0a 0a 20 20 76 61 72 20 48 54 4d 4c 5f 41  e;..  var HTML_A
18650 54 54 52 53 20 3d 20 2f 20 2a 28 5b 2d 5c 77 3a  TTRS = / *([-\w:
18660 5c 78 41 30 2d 5c 78 46 46 5d 2b 29 20 3f 28 3f  \xA0-\xFF]+) ?(?
18670 3a 3d 20 3f 28 27 5b 5e 27 5d 2a 27 7c 22 5b 5e  := ?('[^']*'|"[^
18680 22 5d 2a 22 7c 5c 53 2b 29 29 3f 2f 67 3b 0a 0a  "]*"|\S+))?/g;..
18690 20 20 76 61 72 20 48 54 4d 4c 5f 43 4f 4d 4d 53    var HTML_COMMS
186a0 20 3d 20 52 65 67 45 78 70 28 2f 3c 21 2d 2d 28   = RegExp(/<!--(
186b0 3f 21 3e 29 5b 5c 53 5c 73 5d 2a 3f 2d 2d 3e 2f  ?!>)[\S\s]*?-->/
186c0 2e 73 6f 75 72 63 65 20 2b 20 27 7c 27 20 2b 20  .source + '|' + 
186d0 53 5f 4c 49 4e 45 53 54 52 2c 20 27 67 27 29 3b  S_LINESTR, 'g');
186e0 0a 0a 20 20 76 61 72 20 48 54 4d 4c 5f 54 41 47  ..  var HTML_TAG
186f0 53 20 3d 20 2f 3c 28 2d 3f 5b 41 2d 5a 61 2d 7a  S = /<(-?[A-Za-z
18700 5d 5b 2d 5c 77 5c 78 41 30 2d 5c 78 46 46 5d 2a  ][-\w\xA0-\xFF]*
18710 29 28 3f 3a 5c 73 2b 28 5b 5e 22 27 2f 3e 5d 2a  )(?:\s+([^"'/>]*
18720 28 3f 3a 28 3f 3a 22 5b 5e 22 5d 2a 22 7c 27 5b  (?:(?:"[^"]*"|'[
18730 5e 27 5d 2a 27 7c 5c 2f 5b 5e 3e 5d 29 5b 5e 27  ^']*'|\/[^>])[^'
18740 22 2f 3e 5d 2a 29 2a 29 7c 5c 73 2a 29 28 5c 2f  "/>]*)*)|\s*)(\/
18750 3f 29 3e 2f 67 3b 0a 0a 20 20 76 61 72 20 48 54  ?)>/g;..  var HT
18760 4d 4c 5f 50 41 43 4b 20 3d 20 2f 3e 5b 20 5c 74  ML_PACK = />[ \t
18770 5d 2b 3c 28 2d 3f 5b 41 2d 5a 61 2d 7a 5d 7c 5c  ]+<(-?[A-Za-z]|\
18780 2f 5b 2d 41 2d 5a 61 2d 7a 5d 29 2f 67 3b 0a 0a  /[-A-Za-z])/g;..
18790 20 20 76 61 72 20 52 49 4f 54 5f 41 54 54 52 53    var RIOT_ATTRS
187a0 20 3d 20 5b 27 73 74 79 6c 65 27 2c 20 27 73 72   = ['style', 'sr
187b0 63 27 2c 20 27 64 27 2c 20 27 76 61 6c 75 65 27  c', 'd', 'value'
187c0 5d 3b 0a 0a 20 20 76 61 72 20 56 4f 49 44 5f 54  ];..  var VOID_T
187d0 41 47 53 20 3d 20 2f 5e 28 3f 3a 69 6e 70 75 74  AGS = /^(?:input
187e0 7c 69 6d 67 7c 62 72 7c 77 62 72 7c 68 72 7c 61  |img|br|wbr|hr|a
187f0 72 65 61 7c 62 61 73 65 7c 63 6f 6c 7c 65 6d 62  rea|base|col|emb
18800 65 64 7c 6b 65 79 67 65 6e 7c 6c 69 6e 6b 7c 6d  ed|keygen|link|m
18810 65 74 61 7c 70 61 72 61 6d 7c 73 6f 75 72 63 65  eta|param|source
18820 7c 74 72 61 63 6b 29 24 2f 3b 0a 0a 20 20 76 61  |track)$/;..  va
18830 72 20 50 52 45 5f 54 41 47 53 20 3d 20 2f 3c 70  r PRE_TAGS = /<p
18840 72 65 28 3f 3a 5c 73 2b 28 3f 3a 5b 5e 22 3e 5d  re(?:\s+(?:[^">]
18850 2a 7c 22 5b 5e 22 5d 2a 22 29 2a 29 3f 3e 28 5b  *|"[^"]*")*)?>([
18860 5c 53 5c 73 5d 2b 3f 29 3c 5c 2f 70 72 65 5c 73  \S\s]+?)<\/pre\s
18870 2a 3e 2f 67 69 3b 0a 0a 20 20 76 61 72 20 53 50  *>/gi;..  var SP
18880 45 43 5f 54 59 50 45 53 20 3d 20 2f 5e 22 28 3f  EC_TYPES = /^"(?
18890 3a 6e 75 6d 62 65 72 7c 64 61 74 65 28 3f 3a 74  :number|date(?:t
188a0 69 6d 65 29 3f 7c 74 69 6d 65 7c 6d 6f 6e 74 68  ime)?|time|month
188b0 7c 65 6d 61 69 6c 7c 63 6f 6c 6f 72 29 5c 62 2f  |email|color)\b/
188c0 69 3b 0a 0a 20 20 76 61 72 20 49 4d 50 4f 52 54  i;..  var IMPORT
188d0 5f 53 54 41 54 45 4d 45 4e 54 20 3d 20 2f 5e 5c  _STATEMENT = /^\
188e0 73 2a 69 6d 70 6f 72 74 28 3f 21 5c 77 7c 28 5c  s*import(?!\w|(\
188f0 73 29 3f 5c 28 29 28 3f 3a 28 3f 3a 5c 73 7c 5b  s)?\()(?:(?:\s|[
18900 5e 5c 73 27 22 5d 29 2a 29 5b 27 7c 22 5d 2e 2a  ^\s'"])*)['|"].*
18910 5c 6e 3f 2f 67 6d 3b 0a 0a 20 20 76 61 72 20 54  \n?/gm;..  var T
18920 52 49 4d 5f 54 52 41 49 4c 20 3d 20 2f 5b 20 5c  RIM_TRAIL = /[ \
18930 74 5d 2b 24 2f 67 6d 3b 0a 0a 20 20 76 61 72 0a  t]+$/gm;..  var.
18940 20 20 20 20 52 45 5f 48 41 53 45 58 50 52 20 3d      RE_HASEXPR =
18950 20 73 61 66 65 52 65 67 65 78 28 2f 40 23 5c 64   safeRegex(/@#\d
18960 2f 2c 20 27 78 30 31 27 29 2c 0a 20 20 20 20 52  /, 'x01'),.    R
18970 45 5f 52 45 50 45 58 50 52 20 3d 20 73 61 66 65  E_REPEXPR = safe
18980 52 65 67 65 78 28 2f 40 23 28 5c 64 2b 29 2f 67  Regex(/@#(\d+)/g
18990 2c 20 27 78 30 31 27 29 2c 0a 20 20 20 20 43 48  , 'x01'),.    CH
189a0 5f 49 44 45 58 50 52 20 20 3d 20 27 5c 78 30 31  _IDEXPR  = '\x01
189b0 23 27 2c 0a 20 20 20 20 43 48 5f 44 51 43 4f 44  #',.    CH_DQCOD
189c0 45 20 20 3d 20 27 5c 75 32 30 35 37 27 2c 0a 20  E  = '\u2057',. 
189d0 20 20 20 44 51 20 3d 20 27 22 27 2c 0a 20 20 20     DQ = '"',.   
189e0 20 53 51 20 3d 20 22 27 22 3b 0a 0a 20 20 66 75   SQ = "'";..  fu
189f0 6e 63 74 69 6f 6e 20 63 6c 65 61 6e 53 6f 75 72  nction cleanSour
18a00 63 65 20 28 73 72 63 29 20 7b 0a 20 20 20 20 76  ce (src) {.    v
18a10 61 72 0a 20 20 20 20 20 20 6d 6d 2c 0a 20 20 20  ar.      mm,.   
18a20 20 20 20 72 65 20 3d 20 48 54 4d 4c 5f 43 4f 4d     re = HTML_COM
18a30 4d 53 3b 0a 0a 20 20 20 20 69 66 20 28 73 72 63  MS;..    if (src
18a40 2e 69 6e 64 65 78 4f 66 28 27 5c 72 27 29 20 21  .indexOf('\r') !
18a50 3d 3d 20 31 29 20 7b 0a 20 20 20 20 20 20 73 72  == 1) {.      sr
18a60 63 20 3d 20 73 72 63 2e 72 65 70 6c 61 63 65 28  c = src.replace(
18a70 2f 5c 72 5c 6e 3f 2f 67 2c 20 27 5c 6e 27 29 3b  /\r\n?/g, '\n');
18a80 0a 20 20 20 20 7d 0a 0a 20 20 20 20 72 65 2e 6c  .    }..    re.l
18a90 61 73 74 49 6e 64 65 78 20 3d 20 30 3b 0a 20 20  astIndex = 0;.  
18aa0 20 20 77 68 69 6c 65 20 28 28 6d 6d 20 3d 20 72    while ((mm = r
18ab0 65 2e 65 78 65 63 28 73 72 63 29 29 29 20 7b 0a  e.exec(src))) {.
18ac0 20 20 20 20 20 20 69 66 20 28 6d 6d 5b 30 5d 5b        if (mm[0][
18ad0 30 5d 20 3d 3d 3d 20 27 3c 27 29 20 7b 0a 20 20  0] === '<') {.  
18ae0 20 20 20 20 20 20 73 72 63 20 3d 20 52 65 67 45        src = RegE
18af0 78 70 2e 6c 65 66 74 43 6f 6e 74 65 78 74 20 2b  xp.leftContext +
18b00 20 52 65 67 45 78 70 2e 72 69 67 68 74 43 6f 6e   RegExp.rightCon
18b10 74 65 78 74 3b 0a 20 20 20 20 20 20 20 20 72 65  text;.        re
18b20 2e 6c 61 73 74 49 6e 64 65 78 20 3d 20 6d 6d 5b  .lastIndex = mm[
18b30 33 5d 20 2b 20 31 3b 0a 20 20 20 20 20 20 7d 0a  3] + 1;.      }.
18b40 20 20 20 20 7d 0a 20 20 20 20 72 65 74 75 72 6e      }.    return
18b50 20 73 72 63 0a 20 20 7d 0a 0a 20 20 66 75 6e 63   src.  }..  func
18b60 74 69 6f 6e 20 70 61 72 73 65 41 74 74 72 69 62  tion parseAttrib
18b70 73 20 28 73 74 72 2c 20 70 63 65 78 29 20 7b 0a  s (str, pcex) {.
18b80 20 20 20 20 76 61 72 0a 20 20 20 20 20 20 6c 69      var.      li
18b90 73 74 20 3d 20 5b 5d 2c 0a 20 20 20 20 20 20 6d  st = [],.      m
18ba0 61 74 63 68 2c 0a 20 20 20 20 20 20 74 79 70 65  atch,.      type
18bb0 2c 20 76 65 78 70 3b 0a 0a 20 20 20 20 48 54 4d  , vexp;..    HTM
18bc0 4c 5f 41 54 54 52 53 2e 6c 61 73 74 49 6e 64 65  L_ATTRS.lastInde
18bd0 78 20 3d 20 30 3b 0a 0a 20 20 20 20 73 74 72 20  x = 0;..    str 
18be0 3d 20 73 74 72 2e 72 65 70 6c 61 63 65 28 2f 5c  = str.replace(/\
18bf0 73 2b 2f 67 2c 20 27 20 27 29 3b 0a 0a 20 20 20  s+/g, ' ');..   
18c00 20 77 68 69 6c 65 20 28 28 6d 61 74 63 68 20 3d   while ((match =
18c10 20 48 54 4d 4c 5f 41 54 54 52 53 2e 65 78 65 63   HTML_ATTRS.exec
18c20 28 73 74 72 29 29 29 20 7b 0a 20 20 20 20 20 20  (str))) {.      
18c30 76 61 72 0a 20 20 20 20 20 20 20 20 6b 20 3d 20  var.        k = 
18c40 6d 61 74 63 68 5b 31 5d 2e 74 6f 4c 6f 77 65 72  match[1].toLower
18c50 43 61 73 65 28 29 2c 0a 20 20 20 20 20 20 20 20  Case(),.        
18c60 76 20 3d 20 6d 61 74 63 68 5b 32 5d 3b 0a 0a 20  v = match[2];.. 
18c70 20 20 20 20 20 69 66 20 28 21 76 29 20 7b 0a 20       if (!v) {. 
18c80 20 20 20 20 20 20 20 6c 69 73 74 2e 70 75 73 68         list.push
18c90 28 6b 29 3b 0a 20 20 20 20 20 20 7d 20 65 6c 73  (k);.      } els
18ca0 65 20 7b 0a 0a 20 20 20 20 20 20 20 20 69 66 20  e {..        if 
18cb0 28 76 5b 30 5d 20 21 3d 3d 20 44 51 29 20 7b 0a  (v[0] !== DQ) {.
18cc0 20 20 20 20 20 20 20 20 20 20 76 20 3d 20 44 51            v = DQ
18cd0 20 2b 20 28 76 5b 30 5d 20 3d 3d 3d 20 53 51 20   + (v[0] === SQ 
18ce0 3f 20 76 2e 73 6c 69 63 65 28 31 2c 20 2d 31 29  ? v.slice(1, -1)
18cf0 20 3a 20 76 29 20 2b 20 44 51 3b 0a 20 20 20 20   : v) + DQ;.    
18d00 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 69      }..        i
18d10 66 20 28 6b 20 3d 3d 3d 20 27 74 79 70 65 27 20  f (k === 'type' 
18d20 26 26 20 53 50 45 43 5f 54 59 50 45 53 2e 74 65  && SPEC_TYPES.te
18d30 73 74 28 76 29 29 20 7b 0a 20 20 20 20 20 20 20  st(v)) {.       
18d40 20 20 20 74 79 70 65 20 3d 20 76 3b 0a 20 20 20     type = v;.   
18d50 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20       } else {.  
18d60 20 20 20 20 20 20 20 20 69 66 20 28 52 45 5f 48          if (RE_H
18d70 41 53 45 58 50 52 2e 74 65 73 74 28 76 29 29 20  ASEXPR.test(v)) 
18d80 7b 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
18d90 66 20 28 6b 20 3d 3d 3d 20 27 76 61 6c 75 65 27  f (k === 'value'
18da0 29 20 7b 20 76 65 78 70 20 3d 20 31 3b 20 7d 0a  ) { vexp = 1; }.
18db0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
18dc0 52 49 4f 54 5f 41 54 54 52 53 2e 69 6e 64 65 78  RIOT_ATTRS.index
18dd0 4f 66 28 6b 29 20 21 3d 3d 20 2d 31 29 20 7b 20  Of(k) !== -1) { 
18de0 6b 20 3d 20 27 72 69 6f 74 2d 27 20 2b 20 6b 3b  k = 'riot-' + k;
18df0 20 7d 0a 20 20 20 20 20 20 20 20 20 20 7d 0a 0a   }.          }..
18e00 20 20 20 20 20 20 20 20 20 20 6c 69 73 74 2e 70            list.p
18e10 75 73 68 28 6b 20 2b 20 27 3d 27 20 2b 20 76 29  ush(k + '=' + v)
18e20 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20  ;.        }.    
18e30 20 20 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 69    }.    }..    i
18e40 66 20 28 74 79 70 65 29 20 7b 0a 20 20 20 20 20  f (type) {.     
18e50 20 69 66 20 28 76 65 78 70 29 20 7b 20 74 79 70   if (vexp) { typ
18e60 65 20 3d 20 44 51 20 2b 20 70 63 65 78 2e 5f 62  e = DQ + pcex._b
18e70 70 5b 30 5d 20 2b 20 53 51 20 2b 20 74 79 70 65  p[0] + SQ + type
18e80 2e 73 6c 69 63 65 28 31 2c 20 2d 31 29 20 2b 20  .slice(1, -1) + 
18e90 53 51 20 2b 20 70 63 65 78 2e 5f 62 70 5b 31 5d  SQ + pcex._bp[1]
18ea0 20 2b 20 44 51 3b 20 7d 0a 20 20 20 20 20 20 6c   + DQ; }.      l
18eb0 69 73 74 2e 70 75 73 68 28 27 74 79 70 65 3d 27  ist.push('type='
18ec0 20 2b 20 74 79 70 65 29 3b 0a 20 20 20 20 7d 0a   + type);.    }.
18ed0 20 20 20 20 72 65 74 75 72 6e 20 6c 69 73 74 2e      return list.
18ee0 6a 6f 69 6e 28 27 20 27 29 0a 20 20 7d 0a 0a 20  join(' ').  }.. 
18ef0 20 66 75 6e 63 74 69 6f 6e 20 73 70 6c 69 74 48   function splitH
18f00 74 6d 6c 20 28 68 74 6d 6c 2c 20 6f 70 74 73 2c  tml (html, opts,
18f10 20 70 63 65 78 29 20 7b 0a 20 20 20 20 76 61 72   pcex) {.    var
18f20 20 5f 62 70 20 3d 20 70 63 65 78 2e 5f 62 70 3b   _bp = pcex._bp;
18f30 0a 0a 20 20 20 20 69 66 20 28 68 74 6d 6c 20 26  ..    if (html &
18f40 26 20 5f 62 70 5b 34 5d 2e 74 65 73 74 28 68 74  & _bp[4].test(ht
18f50 6d 6c 29 29 20 7b 0a 20 20 20 20 20 20 76 61 72  ml)) {.      var
18f60 0a 20 20 20 20 20 20 20 20 6a 73 66 6e 20 3d 20  .        jsfn = 
18f70 6f 70 74 73 2e 65 78 70 72 20 26 26 20 28 6f 70  opts.expr && (op
18f80 74 73 2e 70 61 72 73 65 72 20 7c 7c 20 6f 70 74  ts.parser || opt
18f90 73 2e 74 79 70 65 29 20 3f 20 5f 63 6f 6d 70 69  s.type) ? _compi
18fa0 6c 65 4a 53 20 3a 20 30 2c 0a 20 20 20 20 20 20  leJS : 0,.      
18fb0 20 20 6c 69 73 74 20 3d 20 62 72 61 63 6b 65 74    list = bracket
18fc0 73 2e 73 70 6c 69 74 28 68 74 6d 6c 2c 20 30 2c  s.split(html, 0,
18fd0 20 5f 62 70 29 2c 0a 20 20 20 20 20 20 20 20 65   _bp),.        e
18fe0 78 70 72 3b 0a 0a 20 20 20 20 20 20 66 6f 72 20  xpr;..      for 
18ff0 28 76 61 72 20 69 20 3d 20 31 3b 20 69 20 3c 20  (var i = 1; i < 
19000 6c 69 73 74 2e 6c 65 6e 67 74 68 3b 20 69 20 2b  list.length; i +
19010 3d 20 32 29 20 7b 0a 20 20 20 20 20 20 20 20 65  = 2) {.        e
19020 78 70 72 20 3d 20 6c 69 73 74 5b 69 5d 3b 0a 20  xpr = list[i];. 
19030 20 20 20 20 20 20 20 69 66 20 28 65 78 70 72 5b         if (expr[
19040 30 5d 20 3d 3d 3d 20 27 5e 27 29 20 7b 0a 20 20  0] === '^') {.  
19050 20 20 20 20 20 20 20 20 65 78 70 72 20 3d 20 65          expr = e
19060 78 70 72 2e 73 6c 69 63 65 28 31 29 3b 0a 20 20  xpr.slice(1);.  
19070 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20        } else if 
19080 28 6a 73 66 6e 29 20 7b 0a 20 20 20 20 20 20 20  (jsfn) {.       
19090 20 20 20 65 78 70 72 20 3d 20 6a 73 66 6e 28 65     expr = jsfn(e
190a0 78 70 72 2c 20 6f 70 74 73 29 2e 74 72 69 6d 28  xpr, opts).trim(
190b0 29 3b 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  );.          if 
190c0 28 65 78 70 72 2e 73 6c 69 63 65 28 2d 31 29 20  (expr.slice(-1) 
190d0 3d 3d 3d 20 27 3b 27 29 20 7b 20 65 78 70 72 20  === ';') { expr 
190e0 3d 20 65 78 70 72 2e 73 6c 69 63 65 28 30 2c 20  = expr.slice(0, 
190f0 2d 31 29 3b 20 7d 0a 20 20 20 20 20 20 20 20 7d  -1); }.        }
19100 0a 20 20 20 20 20 20 20 20 6c 69 73 74 5b 69 5d  .        list[i]
19110 20 3d 20 43 48 5f 49 44 45 58 50 52 20 2b 20 28   = CH_IDEXPR + (
19120 70 63 65 78 2e 70 75 73 68 28 65 78 70 72 29 20  pcex.push(expr) 
19130 2d 20 31 29 20 2b 20 5f 62 70 5b 31 5d 3b 0a 20  - 1) + _bp[1];. 
19140 20 20 20 20 20 7d 0a 20 20 20 20 20 20 68 74 6d       }.      htm
19150 6c 20 3d 20 6c 69 73 74 2e 6a 6f 69 6e 28 27 27  l = list.join(''
19160 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 72 65 74  );.    }.    ret
19170 75 72 6e 20 68 74 6d 6c 0a 20 20 7d 0a 0a 20 20  urn html.  }..  
19180 66 75 6e 63 74 69 6f 6e 20 72 65 73 74 6f 72 65  function restore
19190 45 78 70 72 20 28 68 74 6d 6c 2c 20 70 63 65 78  Expr (html, pcex
191a0 29 20 7b 0a 20 20 20 20 69 66 20 28 70 63 65 78  ) {.    if (pcex
191b0 2e 6c 65 6e 67 74 68 29 20 7b 0a 20 20 20 20 20  .length) {.     
191c0 20 68 74 6d 6c 20 3d 20 68 74 6d 6c 2e 72 65 70   html = html.rep
191d0 6c 61 63 65 28 52 45 5f 52 45 50 45 58 50 52 2c  lace(RE_REPEXPR,
191e0 20 66 75 6e 63 74 69 6f 6e 20 28 5f 2c 20 64 29   function (_, d)
191f0 20 7b 0a 0a 20 20 20 20 20 20 20 20 72 65 74 75   {..        retu
19200 72 6e 20 70 63 65 78 2e 5f 62 70 5b 30 5d 20 2b  rn pcex._bp[0] +
19210 20 70 63 65 78 5b 64 5d 2e 74 72 69 6d 28 29 2e   pcex[d].trim().
19220 72 65 70 6c 61 63 65 28 2f 5b 5c 72 5c 6e 5d 2b  replace(/[\r\n]+
19230 2f 67 2c 20 27 20 27 29 2e 72 65 70 6c 61 63 65  /g, ' ').replace
19240 28 2f 22 2f 67 2c 20 43 48 5f 44 51 43 4f 44 45  (/"/g, CH_DQCODE
19250 29 0a 20 20 20 20 20 20 7d 29 3b 0a 20 20 20 20  ).      });.    
19260 7d 0a 20 20 20 20 72 65 74 75 72 6e 20 68 74 6d  }.    return htm
19270 6c 0a 20 20 7d 0a 0a 20 20 66 75 6e 63 74 69 6f  l.  }..  functio
19280 6e 20 5f 63 6f 6d 70 69 6c 65 48 54 4d 4c 20 28  n _compileHTML (
19290 68 74 6d 6c 2c 20 6f 70 74 73 2c 20 70 63 65 78  html, opts, pcex
192a0 29 20 7b 0a 20 20 20 20 69 66 20 28 21 2f 5c 53  ) {.    if (!/\S
192b0 2f 2e 74 65 73 74 28 68 74 6d 6c 29 29 20 7b 20  /.test(html)) { 
192c0 72 65 74 75 72 6e 20 27 27 20 7d 0a 0a 20 20 20  return '' }..   
192d0 20 68 74 6d 6c 20 3d 20 73 70 6c 69 74 48 74 6d   html = splitHtm
192e0 6c 28 68 74 6d 6c 2c 20 6f 70 74 73 2c 20 70 63  l(html, opts, pc
192f0 65 78 29 0a 20 20 20 20 20 20 2e 72 65 70 6c 61  ex).      .repla
19300 63 65 28 48 54 4d 4c 5f 54 41 47 53 2c 20 66 75  ce(HTML_TAGS, fu
19310 6e 63 74 69 6f 6e 20 28 5f 2c 20 6e 61 6d 65 2c  nction (_, name,
19320 20 61 74 74 72 2c 20 65 6e 64 73 29 20 7b 0a 0a   attr, ends) {..
19330 20 20 20 20 20 20 20 20 6e 61 6d 65 20 3d 20 6e          name = n
19340 61 6d 65 2e 74 6f 4c 6f 77 65 72 43 61 73 65 28  ame.toLowerCase(
19350 29 3b 0a 0a 20 20 20 20 20 20 20 20 65 6e 64 73  );..        ends
19360 20 3d 20 65 6e 64 73 20 26 26 20 21 56 4f 49 44   = ends && !VOID
19370 5f 54 41 47 53 2e 74 65 73 74 28 6e 61 6d 65 29  _TAGS.test(name)
19380 20 3f 20 27 3e 3c 2f 27 20 2b 20 6e 61 6d 65 20   ? '></' + name 
19390 3a 20 27 27 3b 0a 0a 20 20 20 20 20 20 20 20 69  : '';..        i
193a0 66 20 28 61 74 74 72 29 20 7b 20 6e 61 6d 65 20  f (attr) { name 
193b0 2b 3d 20 27 20 27 20 2b 20 70 61 72 73 65 41 74  += ' ' + parseAt
193c0 74 72 69 62 73 28 61 74 74 72 2c 20 70 63 65 78  tribs(attr, pcex
193d0 29 3b 20 7d 0a 0a 20 20 20 20 20 20 20 20 72 65  ); }..        re
193e0 74 75 72 6e 20 27 3c 27 20 2b 20 6e 61 6d 65 20  turn '<' + name 
193f0 2b 20 65 6e 64 73 20 2b 20 27 3e 27 0a 20 20 20  + ends + '>'.   
19400 20 20 20 7d 29 3b 0a 0a 20 20 20 20 69 66 20 28     });..    if (
19410 21 6f 70 74 73 2e 77 68 69 74 65 73 70 61 63 65  !opts.whitespace
19420 29 20 7b 0a 20 20 20 20 20 20 76 61 72 20 70 20  ) {.      var p 
19430 3d 20 5b 5d 3b 0a 0a 20 20 20 20 20 20 69 66 20  = [];..      if 
19440 28 2f 3c 70 72 65 5b 5c 73 3e 5d 2f 2e 74 65 73  (/<pre[\s>]/.tes
19450 74 28 68 74 6d 6c 29 29 20 7b 0a 20 20 20 20 20  t(html)) {.     
19460 20 20 20 68 74 6d 6c 20 3d 20 68 74 6d 6c 2e 72     html = html.r
19470 65 70 6c 61 63 65 28 50 52 45 5f 54 41 47 53 2c  eplace(PRE_TAGS,
19480 20 66 75 6e 63 74 69 6f 6e 20 28 71 29 20 7b 0a   function (q) {.
19490 20 20 20 20 20 20 20 20 20 20 70 2e 70 75 73 68            p.push
194a0 28 71 29 3b 0a 20 20 20 20 20 20 20 20 20 20 72  (q);.          r
194b0 65 74 75 72 6e 20 27 5c 75 30 30 30 32 27 0a 20  eturn '\u0002'. 
194c0 20 20 20 20 20 20 20 7d 29 3b 0a 20 20 20 20 20         });.     
194d0 20 7d 0a 0a 20 20 20 20 20 20 68 74 6d 6c 20 3d   }..      html =
194e0 20 68 74 6d 6c 2e 74 72 69 6d 28 29 2e 72 65 70   html.trim().rep
194f0 6c 61 63 65 28 2f 5c 73 2b 2f 67 2c 20 27 20 27  lace(/\s+/g, ' '
19500 29 3b 0a 0a 20 20 20 20 20 20 69 66 20 28 70 2e  );..      if (p.
19510 6c 65 6e 67 74 68 29 20 7b 20 68 74 6d 6c 20 3d  length) { html =
19520 20 68 74 6d 6c 2e 72 65 70 6c 61 63 65 28 2f 5c   html.replace(/\
19530 75 30 30 30 32 2f 67 2c 20 66 75 6e 63 74 69 6f  u0002/g, functio
19540 6e 20 28 29 20 7b 20 72 65 74 75 72 6e 20 70 2e  n () { return p.
19550 73 68 69 66 74 28 29 20 7d 29 3b 20 7d 20 2f 2f  shift() }); } //
19560 20 65 73 6c 69 6e 74 2d 64 69 73 61 62 6c 65 2d   eslint-disable-
19570 6c 69 6e 65 0a 20 20 20 20 7d 0a 0a 20 20 20 20  line.    }..    
19580 69 66 20 28 6f 70 74 73 2e 63 6f 6d 70 61 63 74  if (opts.compact
19590 29 20 7b 20 68 74 6d 6c 20 3d 20 68 74 6d 6c 2e  ) { html = html.
195a0 72 65 70 6c 61 63 65 28 48 54 4d 4c 5f 50 41 43  replace(HTML_PAC
195b0 4b 2c 20 27 3e 3c 24 31 27 29 3b 20 7d 0a 0a 20  K, '><$1'); }.. 
195c0 20 20 20 72 65 74 75 72 6e 20 72 65 73 74 6f 72     return restor
195d0 65 45 78 70 72 28 68 74 6d 6c 2c 20 70 63 65 78  eExpr(html, pcex
195e0 29 2e 72 65 70 6c 61 63 65 28 54 52 49 4d 5f 54  ).replace(TRIM_T
195f0 52 41 49 4c 2c 20 27 27 29 0a 20 20 7d 0a 0a 20  RAIL, '').  }.. 
19600 20 66 75 6e 63 74 69 6f 6e 20 63 6f 6d 70 69 6c   function compil
19610 65 48 54 4d 4c 20 28 68 74 6d 6c 2c 20 6f 70 74  eHTML (html, opt
19620 73 2c 20 70 63 65 78 29 20 7b 0a 0a 20 20 20 20  s, pcex) {..    
19630 69 66 20 28 41 72 72 61 79 2e 69 73 41 72 72 61  if (Array.isArra
19640 79 28 6f 70 74 73 29 29 20 7b 0a 20 20 20 20 20  y(opts)) {.     
19650 20 70 63 65 78 20 3d 20 6f 70 74 73 3b 0a 20 20   pcex = opts;.  
19660 20 20 20 20 6f 70 74 73 20 3d 20 7b 7d 3b 0a 20      opts = {};. 
19670 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20     } else {.    
19680 20 20 69 66 20 28 21 70 63 65 78 29 20 7b 20 70    if (!pcex) { p
19690 63 65 78 20 3d 20 5b 5d 3b 20 7d 0a 20 20 20 20  cex = []; }.    
196a0 20 20 69 66 20 28 21 6f 70 74 73 29 20 7b 20 6f    if (!opts) { o
196b0 70 74 73 20 3d 20 7b 7d 3b 20 7d 0a 20 20 20 20  pts = {}; }.    
196c0 7d 0a 0a 20 20 20 20 70 63 65 78 2e 5f 62 70 20  }..    pcex._bp 
196d0 3d 20 62 72 61 63 6b 65 74 73 2e 61 72 72 61 79  = brackets.array
196e0 28 6f 70 74 73 2e 62 72 61 63 6b 65 74 73 29 3b  (opts.brackets);
196f0 0a 0a 20 20 20 20 72 65 74 75 72 6e 20 5f 63 6f  ..    return _co
19700 6d 70 69 6c 65 48 54 4d 4c 28 63 6c 65 61 6e 53  mpileHTML(cleanS
19710 6f 75 72 63 65 28 68 74 6d 6c 29 2c 20 6f 70 74  ource(html), opt
19720 73 2c 20 70 63 65 78 29 0a 20 20 7d 0a 0a 20 20  s, pcex).  }..  
19730 76 61 72 20 4a 53 5f 45 53 36 53 49 47 4e 20 3d  var JS_ES6SIGN =
19740 20 2f 5e 5b 20 5c 74 5d 2a 28 28 28 3f 3a 61 73   /^[ \t]*(((?:as
19750 79 6e 63 7c 5c 2a 29 5c 73 2a 29 3f 28 5b 24 5f  ync|\*)\s*)?([$_
19760 41 2d 5a 61 2d 7a 5d 5b 24 5c 77 5d 2a 29 29 5c  A-Za-z][$\w]*))\
19770 73 2a 5c 28 5b 5e 28 29 5d 2a 5c 29 5c 73 2a 7b  s*\([^()]*\)\s*{
19780 2f 6d 3b 0a 0a 20 20 66 75 6e 63 74 69 6f 6e 20  /m;..  function 
19790 72 69 6f 74 6a 73 20 28 6a 73 29 20 7b 0a 20 20  riotjs (js) {.  
197a0 20 20 76 61 72 0a 20 20 20 20 20 20 70 61 72 74    var.      part
197b0 73 20 3d 20 5b 5d 2c 0a 20 20 20 20 20 20 6d 61  s = [],.      ma
197c0 74 63 68 2c 0a 20 20 20 20 20 20 74 6f 65 73 35  tch,.      toes5
197d0 2c 0a 20 20 20 20 20 20 70 6f 73 2c 0a 20 20 20  ,.      pos,.   
197e0 20 20 20 6d 65 74 68 6f 64 2c 0a 20 20 20 20 20     method,.     
197f0 20 70 72 65 66 69 78 2c 0a 20 20 20 20 20 20 6e   prefix,.      n
19800 61 6d 65 2c 0a 20 20 20 20 20 20 52 45 20 3d 20  ame,.      RE = 
19810 52 65 67 45 78 70 3b 0a 0a 20 20 20 20 76 61 72  RegExp;..    var
19820 20 73 72 63 20 3d 20 6a 73 53 70 6c 69 74 74 65   src = jsSplitte
19830 72 28 6a 73 29 3b 0a 20 20 20 20 6a 73 20 3d 20  r(js);.    js = 
19840 73 72 63 2e 73 68 69 66 74 28 29 2e 6a 6f 69 6e  src.shift().join
19850 28 27 3c 25 3e 27 29 3b 0a 0a 20 20 20 20 77 68  ('<%>');..    wh
19860 69 6c 65 20 28 28 6d 61 74 63 68 20 3d 20 6a 73  ile ((match = js
19870 2e 6d 61 74 63 68 28 4a 53 5f 45 53 36 53 49 47  .match(JS_ES6SIG
19880 4e 29 29 29 20 7b 0a 0a 20 20 20 20 20 20 70 61  N))) {..      pa
19890 72 74 73 2e 70 75 73 68 28 52 45 2e 6c 65 66 74  rts.push(RE.left
198a0 43 6f 6e 74 65 78 74 29 3b 0a 20 20 20 20 20 20  Context);.      
198b0 6a 73 20 20 3d 20 52 45 2e 72 69 67 68 74 43 6f  js  = RE.rightCo
198c0 6e 74 65 78 74 3b 0a 20 20 20 20 20 20 70 6f 73  ntext;.      pos
198d0 20 3d 20 73 6b 69 70 42 6f 64 79 28 6a 73 29 3b   = skipBody(js);
198e0 0a 0a 20 20 20 20 20 20 6d 65 74 68 6f 64 20 3d  ..      method =
198f0 20 6d 61 74 63 68 5b 31 5d 3b 0a 20 20 20 20 20   match[1];.     
19900 20 70 72 65 66 69 78 20 3d 20 6d 61 74 63 68 5b   prefix = match[
19910 32 5d 20 7c 7c 20 27 27 3b 0a 20 20 20 20 20 20  2] || '';.      
19920 6e 61 6d 65 20 20 3d 20 6d 61 74 63 68 5b 33 5d  name  = match[3]
19930 3b 0a 0a 20 20 20 20 20 20 74 6f 65 73 35 20 3d  ;..      toes5 =
19940 20 21 2f 5e 28 3f 3a 69 66 7c 77 68 69 6c 65 7c   !/^(?:if|while|
19950 66 6f 72 7c 73 77 69 74 63 68 7c 63 61 74 63 68  for|switch|catch
19960 7c 66 75 6e 63 74 69 6f 6e 29 24 2f 2e 74 65 73  |function)$/.tes
19970 74 28 6e 61 6d 65 29 3b 0a 0a 20 20 20 20 20 20  t(name);..      
19980 69 66 20 28 74 6f 65 73 35 29 20 7b 0a 20 20 20  if (toes5) {.   
19990 20 20 20 20 20 6e 61 6d 65 20 3d 20 6d 61 74 63       name = matc
199a0 68 5b 30 5d 2e 72 65 70 6c 61 63 65 28 6d 65 74  h[0].replace(met
199b0 68 6f 64 2c 20 27 74 68 69 73 2e 27 20 2b 20 6e  hod, 'this.' + n
199c0 61 6d 65 20 2b 20 27 20 3d 27 20 2b 20 70 72 65  ame + ' =' + pre
199d0 66 69 78 20 2b 20 27 20 66 75 6e 63 74 69 6f 6e  fix + ' function
199e0 27 29 3b 0a 20 20 20 20 20 20 7d 20 65 6c 73 65  ');.      } else
199f0 20 7b 0a 20 20 20 20 20 20 20 20 6e 61 6d 65 20   {.        name 
19a00 3d 20 6d 61 74 63 68 5b 30 5d 3b 0a 20 20 20 20  = match[0];.    
19a10 20 20 7d 0a 0a 20 20 20 20 20 20 70 61 72 74 73    }..      parts
19a20 2e 70 75 73 68 28 6e 61 6d 65 2c 20 6a 73 2e 73  .push(name, js.s
19a30 6c 69 63 65 28 30 2c 20 70 6f 73 29 29 3b 0a 20  lice(0, pos));. 
19a40 20 20 20 20 20 6a 73 20 3d 20 6a 73 2e 73 6c 69       js = js.sli
19a50 63 65 28 70 6f 73 29 3b 0a 0a 20 20 20 20 20 20  ce(pos);..      
19a60 69 66 20 28 74 6f 65 73 35 20 26 26 20 21 2f 5e  if (toes5 && !/^
19a70 5c 73 2a 2e 5c 73 2a 62 69 6e 64 5c 62 2f 2e 74  \s*.\s*bind\b/.t
19a80 65 73 74 28 6a 73 29 29 20 7b 20 70 61 72 74 73  est(js)) { parts
19a90 2e 70 75 73 68 28 27 2e 62 69 6e 64 28 74 68 69  .push('.bind(thi
19aa0 73 29 27 29 3b 20 7d 0a 20 20 20 20 7d 0a 0a 20  s)'); }.    }.. 
19ab0 20 20 20 69 66 20 28 70 61 72 74 73 2e 6c 65 6e     if (parts.len
19ac0 67 74 68 29 20 7b 0a 20 20 20 20 20 20 6a 73 20  gth) {.      js 
19ad0 3d 20 70 61 72 74 73 2e 6a 6f 69 6e 28 27 27 29  = parts.join('')
19ae0 20 2b 20 6a 73 3b 0a 20 20 20 20 7d 0a 0a 20 20   + js;.    }..  
19af0 20 20 69 66 20 28 73 72 63 2e 6c 65 6e 67 74 68    if (src.length
19b00 29 20 7b 0a 20 20 20 20 20 20 6a 73 20 3d 20 6a  ) {.      js = j
19b10 73 2e 72 65 70 6c 61 63 65 28 2f 3c 25 3e 2f 67  s.replace(/<%>/g
19b20 2c 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a  , function () {.
19b30 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73          return s
19b40 72 63 2e 73 68 69 66 74 28 29 0a 20 20 20 20 20  rc.shift().     
19b50 20 7d 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20   });.    }..    
19b60 72 65 74 75 72 6e 20 6a 73 0a 0a 20 20 20 20 66  return js..    f
19b70 75 6e 63 74 69 6f 6e 20 73 6b 69 70 42 6f 64 79  unction skipBody
19b80 20 28 73 29 20 7b 0a 20 20 20 20 20 20 76 61 72   (s) {.      var
19b90 20 72 20 3d 20 2f 5b 7b 7d 5d 2f 67 3b 0a 20 20   r = /[{}]/g;.  
19ba0 20 20 20 20 76 61 72 20 69 20 3d 20 31 3b 0a 0a      var i = 1;..
19bb0 20 20 20 20 20 20 77 68 69 6c 65 20 28 69 20 26        while (i &
19bc0 26 20 72 2e 65 78 65 63 28 73 29 29 20 7b 0a 20  & r.exec(s)) {. 
19bd0 20 20 20 20 20 20 20 69 66 20 28 73 5b 72 2e 6c         if (s[r.l
19be0 61 73 74 49 6e 64 65 78 20 2d 20 31 5d 20 3d 3d  astIndex - 1] ==
19bf0 3d 20 27 7b 27 29 20 7b 20 2b 2b 69 3b 20 7d 0a  = '{') { ++i; }.
19c00 20 20 20 20 20 20 20 20 65 6c 73 65 20 7b 20 2d          else { -
19c10 2d 69 3b 20 7d 0a 20 20 20 20 20 20 7d 0a 20 20  -i; }.      }.  
19c20 20 20 20 20 72 65 74 75 72 6e 20 69 20 3f 20 73      return i ? s
19c30 2e 6c 65 6e 67 74 68 20 3a 20 72 2e 6c 61 73 74  .length : r.last
19c40 49 6e 64 65 78 0a 20 20 20 20 7d 0a 20 20 7d 0a  Index.    }.  }.
19c50 0a 20 20 66 75 6e 63 74 69 6f 6e 20 5f 63 6f 6d  .  function _com
19c60 70 69 6c 65 4a 53 20 28 6a 73 2c 20 6f 70 74 73  pileJS (js, opts
19c70 2c 20 74 79 70 65 2c 20 70 61 72 73 65 72 4f 70  , type, parserOp
19c80 74 73 2c 20 75 72 6c 29 20 7b 0a 20 20 20 20 69  ts, url) {.    i
19c90 66 20 28 21 2f 5c 53 2f 2e 74 65 73 74 28 6a 73  f (!/\S/.test(js
19ca0 29 29 20 7b 20 72 65 74 75 72 6e 20 27 27 20 7d  )) { return '' }
19cb0 0a 20 20 20 20 69 66 20 28 21 74 79 70 65 29 20  .    if (!type) 
19cc0 7b 20 74 79 70 65 20 3d 20 6f 70 74 73 2e 74 79  { type = opts.ty
19cd0 70 65 3b 20 7d 0a 0a 20 20 20 20 76 61 72 20 70  pe; }..    var p
19ce0 61 72 73 65 72 20 3d 20 6f 70 74 73 2e 70 61 72  arser = opts.par
19cf0 73 65 72 20 7c 7c 20 74 79 70 65 20 26 26 20 70  ser || type && p
19d00 61 72 73 65 72 73 2e 5f 72 65 71 28 27 6a 73 2e  arsers._req('js.
19d10 27 20 2b 20 74 79 70 65 2c 20 74 72 75 65 29 20  ' + type, true) 
19d20 7c 7c 20 72 69 6f 74 6a 73 3b 0a 0a 20 20 20 20  || riotjs;..    
19d30 72 65 74 75 72 6e 20 70 61 72 73 65 72 28 6a 73  return parser(js
19d40 2c 20 70 61 72 73 65 72 4f 70 74 73 2c 20 75 72  , parserOpts, ur
19d50 6c 29 2e 72 65 70 6c 61 63 65 28 2f 5c 72 5c 6e  l).replace(/\r\n
19d60 3f 2f 67 2c 20 27 5c 6e 27 29 2e 72 65 70 6c 61  ?/g, '\n').repla
19d70 63 65 28 54 52 49 4d 5f 54 52 41 49 4c 2c 20 27  ce(TRIM_TRAIL, '
19d80 27 29 0a 20 20 7d 0a 0a 20 20 66 75 6e 63 74 69  ').  }..  functi
19d90 6f 6e 20 63 6f 6d 70 69 6c 65 4a 53 20 28 6a 73  on compileJS (js
19da0 2c 20 6f 70 74 73 2c 20 74 79 70 65 2c 20 75 73  , opts, type, us
19db0 65 72 4f 70 74 73 29 20 7b 0a 20 20 20 20 69 66  erOpts) {.    if
19dc0 20 28 74 79 70 65 6f 66 20 6f 70 74 73 20 3d 3d   (typeof opts ==
19dd0 3d 20 27 73 74 72 69 6e 67 27 29 20 7b 0a 20 20  = 'string') {.  
19de0 20 20 20 20 75 73 65 72 4f 70 74 73 20 3d 20 74      userOpts = t
19df0 79 70 65 3b 0a 20 20 20 20 20 20 74 79 70 65 20  ype;.      type 
19e00 3d 20 6f 70 74 73 3b 0a 20 20 20 20 20 20 6f 70  = opts;.      op
19e10 74 73 20 3d 20 7b 7d 3b 0a 20 20 20 20 7d 0a 20  ts = {};.    }. 
19e20 20 20 20 69 66 20 28 74 79 70 65 20 26 26 20 74     if (type && t
19e30 79 70 65 6f 66 20 74 79 70 65 20 3d 3d 3d 20 27  ypeof type === '
19e40 6f 62 6a 65 63 74 27 29 20 7b 0a 20 20 20 20 20  object') {.     
19e50 20 75 73 65 72 4f 70 74 73 20 3d 20 74 79 70 65   userOpts = type
19e60 3b 0a 20 20 20 20 20 20 74 79 70 65 20 3d 20 27  ;.      type = '
19e70 27 3b 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 20  ';.    }.    if 
19e80 28 21 75 73 65 72 4f 70 74 73 29 20 7b 20 75 73  (!userOpts) { us
19e90 65 72 4f 70 74 73 20 3d 20 7b 7d 3b 20 7d 0a 0a  erOpts = {}; }..
19ea0 20 20 20 20 72 65 74 75 72 6e 20 5f 63 6f 6d 70      return _comp
19eb0 69 6c 65 4a 53 28 6a 73 2c 20 6f 70 74 73 20 7c  ileJS(js, opts |
19ec0 7c 20 7b 7d 2c 20 74 79 70 65 2c 20 75 73 65 72  | {}, type, user
19ed0 4f 70 74 73 2e 70 61 72 73 65 72 4f 70 74 69 6f  Opts.parserOptio
19ee0 6e 73 2c 20 75 73 65 72 4f 70 74 73 2e 75 72 6c  ns, userOpts.url
19ef0 29 0a 20 20 7d 0a 0a 20 20 76 61 72 20 43 53 53  ).  }..  var CSS
19f00 5f 53 45 4c 45 43 54 4f 52 20 3d 20 52 65 67 45  _SELECTOR = RegE
19f10 78 70 28 27 28 5b 7b 7d 5d 7c 5e 29 5b 3b 20 5d  xp('([{}]|^)[; ]
19f20 2a 28 28 3f 3a 5b 5e 40 20 3b 7b 7d 5d 5b 5e 7b  *((?:[^@ ;{}][^{
19f30 7d 5d 2a 29 3f 5b 5e 40 20 3b 7b 7d 3a 5d 20 3f  }]*)?[^@ ;{}:] ?
19f40 29 28 3f 3d 7b 29 7c 27 20 2b 20 53 5f 4c 49 4e  )(?={)|' + S_LIN
19f50 45 53 54 52 2c 20 27 67 27 29 3b 0a 0a 20 20 66  ESTR, 'g');..  f
19f60 75 6e 63 74 69 6f 6e 20 73 63 6f 70 65 64 43 53  unction scopedCS
19f70 53 20 28 74 61 67 2c 20 63 73 73 29 20 7b 0a 20  S (tag, css) {. 
19f80 20 20 20 76 61 72 20 73 63 6f 70 65 20 3d 20 27     var scope = '
19f90 3a 73 63 6f 70 65 27 3b 0a 0a 20 20 20 20 72 65  :scope';..    re
19fa0 74 75 72 6e 20 63 73 73 2e 72 65 70 6c 61 63 65  turn css.replace
19fb0 28 43 53 53 5f 53 45 4c 45 43 54 4f 52 2c 20 66  (CSS_SELECTOR, f
19fc0 75 6e 63 74 69 6f 6e 20 28 6d 2c 20 70 31 2c 20  unction (m, p1, 
19fd0 70 32 29 20 7b 0a 0a 20 20 20 20 20 20 69 66 20  p2) {..      if 
19fe0 28 21 70 32 29 20 7b 20 72 65 74 75 72 6e 20 6d  (!p2) { return m
19ff0 20 7d 0a 0a 20 20 20 20 20 20 70 32 20 3d 20 70   }..      p2 = p
1a000 32 2e 72 65 70 6c 61 63 65 28 2f 5b 5e 2c 5d 2b  2.replace(/[^,]+
1a010 2f 67 2c 20 66 75 6e 63 74 69 6f 6e 20 28 73 65  /g, function (se
1a020 6c 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72  l) {.        var
1a030 20 73 20 3d 20 73 65 6c 2e 74 72 69 6d 28 29 3b   s = sel.trim();
1a040 0a 0a 20 20 20 20 20 20 20 20 69 66 20 28 73 2e  ..        if (s.
1a050 69 6e 64 65 78 4f 66 28 74 61 67 29 20 3d 3d 3d  indexOf(tag) ===
1a060 20 30 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20   0) {.          
1a070 72 65 74 75 72 6e 20 73 65 6c 0a 20 20 20 20 20  return sel.     
1a080 20 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 69 66     }..        if
1a090 20 28 21 73 20 7c 7c 20 73 20 3d 3d 3d 20 27 66   (!s || s === 'f
1a0a0 72 6f 6d 27 20 7c 7c 20 73 20 3d 3d 3d 20 27 74  rom' || s === 't
1a0b0 6f 27 20 7c 7c 20 73 2e 73 6c 69 63 65 28 2d 31  o' || s.slice(-1
1a0c0 29 20 3d 3d 3d 20 27 25 27 29 20 7b 0a 20 20 20  ) === '%') {.   
1a0d0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65         return se
1a0e0 6c 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20  l.        }..   
1a0f0 20 20 20 20 20 69 66 20 28 73 2e 69 6e 64 65 78       if (s.index
1a100 4f 66 28 73 63 6f 70 65 29 20 3c 20 30 29 20 7b  Of(scope) < 0) {
1a110 0a 20 20 20 20 20 20 20 20 20 20 73 20 3d 20 74  .          s = t
1a120 61 67 20 2b 20 27 20 27 20 2b 20 73 20 2b 20 27  ag + ' ' + s + '
1a130 2c 5b 64 61 74 61 2d 69 73 3d 22 27 20 2b 20 74  ,[data-is="' + t
1a140 61 67 20 2b 20 27 22 5d 20 27 20 2b 20 73 3b 0a  ag + '"] ' + s;.
1a150 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b          } else {
1a160 0a 20 20 20 20 20 20 20 20 20 20 73 20 3d 20 73  .          s = s
1a170 2e 72 65 70 6c 61 63 65 28 73 63 6f 70 65 2c 20  .replace(scope, 
1a180 74 61 67 29 20 2b 20 27 2c 27 20 2b 0a 20 20 20  tag) + ',' +.   
1a190 20 20 20 20 20 20 20 20 20 20 20 73 2e 72 65 70             s.rep
1a1a0 6c 61 63 65 28 73 63 6f 70 65 2c 20 27 5b 64 61  lace(scope, '[da
1a1b0 74 61 2d 69 73 3d 22 27 20 2b 20 74 61 67 20 2b  ta-is="' + tag +
1a1c0 20 27 22 5d 27 29 3b 0a 20 20 20 20 20 20 20 20   '"]');.        
1a1d0 7d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  }.        return
1a1e0 20 73 0a 20 20 20 20 20 20 7d 29 3b 0a 0a 20 20   s.      });..  
1a1f0 20 20 20 20 72 65 74 75 72 6e 20 70 31 20 3f 20      return p1 ? 
1a200 70 31 20 2b 20 27 20 27 20 2b 20 70 32 20 3a 20  p1 + ' ' + p2 : 
1a210 70 32 0a 20 20 20 20 7d 29 0a 20 20 7d 0a 0a 20  p2.    }).  }.. 
1a220 20 66 75 6e 63 74 69 6f 6e 20 5f 63 6f 6d 70 69   function _compi
1a230 6c 65 43 53 53 20 28 63 73 73 2c 20 74 61 67 2c  leCSS (css, tag,
1a240 20 74 79 70 65 2c 20 6f 70 74 73 29 20 7b 0a 20   type, opts) {. 
1a250 20 20 20 6f 70 74 73 20 3d 20 6f 70 74 73 20 7c     opts = opts |
1a260 7c 20 7b 7d 3b 0a 0a 20 20 20 20 69 66 20 28 74  | {};..    if (t
1a270 79 70 65 29 20 7b 0a 20 20 20 20 20 20 69 66 20  ype) {.      if 
1a280 28 74 79 70 65 20 21 3d 3d 20 27 63 73 73 27 29  (type !== 'css')
1a290 20 7b 0a 0a 20 20 20 20 20 20 20 20 76 61 72 20   {..        var 
1a2a0 70 61 72 73 65 72 20 3d 20 70 61 72 73 65 72 73  parser = parsers
1a2b0 2e 5f 72 65 71 28 27 63 73 73 2e 27 20 2b 20 74  ._req('css.' + t
1a2c0 79 70 65 2c 20 74 72 75 65 29 3b 0a 20 20 20 20  ype, true);.    
1a2d0 20 20 20 20 63 73 73 20 3d 20 70 61 72 73 65 72      css = parser
1a2e0 28 74 61 67 2c 20 63 73 73 2c 20 6f 70 74 73 2e  (tag, css, opts.
1a2f0 70 61 72 73 65 72 4f 70 74 73 20 7c 7c 20 7b 7d  parserOpts || {}
1a300 2c 20 6f 70 74 73 2e 75 72 6c 29 3b 0a 20 20 20  , opts.url);.   
1a310 20 20 20 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20     }.    }..    
1a320 63 73 73 20 3d 20 63 73 73 2e 72 65 70 6c 61 63  css = css.replac
1a330 65 28 62 72 61 63 6b 65 74 73 2e 52 5f 4d 4c 43  e(brackets.R_MLC
1a340 4f 4d 4d 53 2c 20 27 27 29 2e 72 65 70 6c 61 63  OMMS, '').replac
1a350 65 28 2f 5c 73 2b 2f 67 2c 20 27 20 27 29 2e 74  e(/\s+/g, ' ').t
1a360 72 69 6d 28 29 3b 0a 20 20 20 20 69 66 20 28 74  rim();.    if (t
1a370 61 67 29 20 7b 20 63 73 73 20 3d 20 73 63 6f 70  ag) { css = scop
1a380 65 64 43 53 53 28 74 61 67 2c 20 63 73 73 29 3b  edCSS(tag, css);
1a390 20 7d 0a 0a 20 20 20 20 72 65 74 75 72 6e 20 63   }..    return c
1a3a0 73 73 0a 20 20 7d 0a 0a 20 20 66 75 6e 63 74 69  ss.  }..  functi
1a3b0 6f 6e 20 63 6f 6d 70 69 6c 65 43 53 53 20 28 63  on compileCSS (c
1a3c0 73 73 2c 20 74 79 70 65 2c 20 6f 70 74 73 29 20  ss, type, opts) 
1a3d0 7b 0a 20 20 20 20 69 66 20 28 74 79 70 65 20 26  {.    if (type &
1a3e0 26 20 74 79 70 65 6f 66 20 74 79 70 65 20 3d 3d  & typeof type ==
1a3f0 3d 20 27 6f 62 6a 65 63 74 27 29 20 7b 0a 20 20  = 'object') {.  
1a400 20 20 20 20 6f 70 74 73 20 3d 20 74 79 70 65 3b      opts = type;
1a410 0a 20 20 20 20 20 20 74 79 70 65 20 3d 20 27 27  .      type = ''
1a420 3b 0a 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20  ;.    } else if 
1a430 28 21 6f 70 74 73 29 20 7b 20 6f 70 74 73 20 3d  (!opts) { opts =
1a440 20 7b 7d 3b 20 7d 0a 0a 20 20 20 20 72 65 74 75   {}; }..    retu
1a450 72 6e 20 5f 63 6f 6d 70 69 6c 65 43 53 53 28 63  rn _compileCSS(c
1a460 73 73 2c 20 6f 70 74 73 2e 74 61 67 4e 61 6d 65  ss, opts.tagName
1a470 2c 20 74 79 70 65 2c 20 6f 70 74 73 29 0a 20 20  , type, opts).  
1a480 7d 0a 0a 20 20 76 61 72 20 54 59 50 45 5f 41 54  }..  var TYPE_AT
1a490 54 52 20 3d 20 2f 5c 73 74 79 70 65 5c 73 2a 3d  TR = /\stype\s*=
1a4a0 5c 73 2a 28 3f 3a 28 5b 27 22 5d 29 28 2e 2b 3f  \s*(?:(['"])(.+?
1a4b0 29 5c 31 7c 28 5c 53 2b 29 29 2f 69 3b 0a 0a 20  )\1|(\S+))/i;.. 
1a4c0 20 76 61 72 20 4d 49 53 43 5f 41 54 54 52 20 3d   var MISC_ATTR =
1a4d0 20 27 5c 5c 73 2a 3d 5c 5c 73 2a 28 27 20 2b 20   '\\s*=\\s*(' + 
1a4e0 53 5f 53 54 52 49 4e 47 53 20 2b 20 27 7c 7b 5b  S_STRINGS + '|{[
1a4f0 5e 7d 5d 2b 7d 7c 5c 5c 53 2b 29 27 3b 0a 0a 20  ^}]+}|\\S+)';.. 
1a500 20 76 61 72 20 45 4e 44 5f 54 41 47 53 20 3d 20   var END_TAGS = 
1a510 2f 5c 2f 3e 5c 6e 7c 5e 3c 28 3f 3a 5c 2f 3f 2d  /\/>\n|^<(?:\/?-
1a520 3f 5b 41 2d 5a 61 2d 7a 5d 5b 2d 5c 77 5c 78 41  ?[A-Za-z][-\w\xA
1a530 30 2d 5c 78 46 46 5d 2a 5c 73 2a 7c 2d 3f 5b 41  0-\xFF]*\s*|-?[A
1a540 2d 5a 61 2d 7a 5d 5b 2d 5c 77 5c 78 41 30 2d 5c  -Za-z][-\w\xA0-\
1a550 78 46 46 5d 2a 5c 73 2b 5b 2d 5c 77 3a 5c 78 41  xFF]*\s+[-\w:\xA
1a560 30 2d 5c 78 46 46 5d 5b 5c 53 5c 73 5d 2a 3f 29  0-\xFF][\S\s]*?)
1a570 3e 5c 6e 2f 3b 0a 0a 20 20 66 75 6e 63 74 69 6f  >\n/;..  functio
1a580 6e 20 5f 71 20 28 73 2c 20 72 29 20 7b 0a 20 20  n _q (s, r) {.  
1a590 20 20 69 66 20 28 21 73 29 20 7b 20 72 65 74 75    if (!s) { retu
1a5a0 72 6e 20 22 27 27 22 20 7d 0a 20 20 20 20 73 20  rn "''" }.    s 
1a5b0 3d 20 53 51 20 2b 20 73 2e 72 65 70 6c 61 63 65  = SQ + s.replace
1a5c0 28 2f 5c 5c 2f 67 2c 20 27 5c 5c 5c 5c 27 29 2e  (/\\/g, '\\\\').
1a5d0 72 65 70 6c 61 63 65 28 2f 27 2f 67 2c 20 22 5c  replace(/'/g, "\
1a5e0 5c 27 22 29 20 2b 20 53 51 3b 0a 20 20 20 20 72  \'") + SQ;.    r
1a5f0 65 74 75 72 6e 20 72 20 26 26 20 73 2e 69 6e 64  eturn r && s.ind
1a600 65 78 4f 66 28 27 5c 6e 27 29 20 21 3d 3d 20 2d  exOf('\n') !== -
1a610 31 20 3f 20 73 2e 72 65 70 6c 61 63 65 28 2f 5c  1 ? s.replace(/\
1a620 6e 2f 67 2c 20 27 5c 5c 6e 27 29 20 3a 20 73 0a  n/g, '\\n') : s.
1a630 20 20 7d 0a 0a 20 20 66 75 6e 63 74 69 6f 6e 20    }..  function 
1a640 6d 6b 74 61 67 20 28 6e 61 6d 65 2c 20 68 74 6d  mktag (name, htm
1a650 6c 2c 20 63 73 73 2c 20 61 74 74 72 2c 20 6a 73  l, css, attr, js
1a660 2c 20 69 6d 70 6f 72 74 73 2c 20 6f 70 74 73 29  , imports, opts)
1a670 20 7b 0a 20 20 20 20 76 61 72 0a 20 20 20 20 20   {.    var.     
1a680 20 63 20 3d 20 6f 70 74 73 2e 64 65 62 75 67 20   c = opts.debug 
1a690 3f 20 27 2c 5c 6e 20 20 27 20 3a 20 27 2c 20 27  ? ',\n  ' : ', '
1a6a0 2c 0a 20 20 20 20 20 20 73 20 3d 20 27 7d 29 3b  ,.      s = '});
1a6b0 27 3b 0a 0a 20 20 20 20 69 66 20 28 6a 73 20 26  ';..    if (js &
1a6c0 26 20 6a 73 2e 73 6c 69 63 65 28 2d 31 29 20 21  & js.slice(-1) !
1a6d0 3d 3d 20 27 5c 6e 27 29 20 7b 20 73 20 3d 20 27  == '\n') { s = '
1a6e0 5c 6e 27 20 2b 20 73 3b 20 7d 0a 0a 20 20 20 20  \n' + s; }..    
1a6f0 72 65 74 75 72 6e 20 69 6d 70 6f 72 74 73 20 2b  return imports +
1a700 20 27 72 69 6f 74 2e 74 61 67 32 28 5c 27 27 20   'riot.tag2(\'' 
1a710 2b 20 6e 61 6d 65 20 2b 20 53 51 20 2b 0a 20 20  + name + SQ +.  
1a720 20 20 20 20 63 20 2b 20 5f 71 28 68 74 6d 6c 2c      c + _q(html,
1a730 20 31 29 20 2b 0a 20 20 20 20 20 20 63 20 2b 20   1) +.      c + 
1a740 5f 71 28 63 73 73 29 20 2b 0a 20 20 20 20 20 20  _q(css) +.      
1a750 63 20 2b 20 5f 71 28 61 74 74 72 29 20 2b 20 27  c + _q(attr) + '
1a760 2c 20 66 75 6e 63 74 69 6f 6e 28 6f 70 74 73 29  , function(opts)
1a770 20 7b 5c 6e 27 20 2b 20 6a 73 20 2b 20 73 0a 20   {\n' + js + s. 
1a780 20 7d 0a 0a 20 20 66 75 6e 63 74 69 6f 6e 20 73   }..  function s
1a790 70 6c 69 74 42 6c 6f 63 6b 73 20 28 73 74 72 29  plitBlocks (str)
1a7a0 20 7b 0a 20 20 20 20 69 66 20 28 2f 3c 5b 2d 5c   {.    if (/<[-\
1a7b0 77 5d 2f 2e 74 65 73 74 28 73 74 72 29 29 20 7b  w]/.test(str)) {
1a7c0 0a 20 20 20 20 20 20 76 61 72 0a 20 20 20 20 20  .      var.     
1a7d0 20 20 20 6d 2c 0a 20 20 20 20 20 20 20 20 6b 20     m,.        k 
1a7e0 3d 20 73 74 72 2e 6c 61 73 74 49 6e 64 65 78 4f  = str.lastIndexO
1a7f0 66 28 27 3c 27 29 2c 0a 20 20 20 20 20 20 20 20  f('<'),.        
1a800 6e 20 3d 20 73 74 72 2e 6c 65 6e 67 74 68 3b 0a  n = str.length;.
1a810 0a 20 20 20 20 20 20 77 68 69 6c 65 20 28 6b 20  .      while (k 
1a820 21 3d 3d 20 2d 31 29 20 7b 0a 20 20 20 20 20 20  !== -1) {.      
1a830 20 20 6d 20 3d 20 73 74 72 2e 73 6c 69 63 65 28    m = str.slice(
1a840 6b 2c 20 6e 29 2e 6d 61 74 63 68 28 45 4e 44 5f  k, n).match(END_
1a850 54 41 47 53 29 3b 0a 20 20 20 20 20 20 20 20 69  TAGS);.        i
1a860 66 20 28 6d 29 20 7b 0a 20 20 20 20 20 20 20 20  f (m) {.        
1a870 20 20 6b 20 2b 3d 20 6d 2e 69 6e 64 65 78 20 2b    k += m.index +
1a880 20 6d 5b 30 5d 2e 6c 65 6e 67 74 68 3b 0a 20 20   m[0].length;.  
1a890 20 20 20 20 20 20 20 20 6d 20 3d 20 73 74 72 2e          m = str.
1a8a0 73 6c 69 63 65 28 30 2c 20 6b 29 3b 0a 20 20 20  slice(0, k);.   
1a8b0 20 20 20 20 20 20 20 69 66 20 28 6d 2e 73 6c 69         if (m.sli
1a8c0 63 65 28 2d 35 29 20 3d 3d 3d 20 27 3c 2d 2f 3e  ce(-5) === '<-/>
1a8d0 5c 6e 27 29 20 7b 20 6d 20 3d 20 6d 2e 73 6c 69  \n') { m = m.sli
1a8e0 63 65 28 30 2c 20 2d 35 29 3b 20 7d 0a 20 20 20  ce(0, -5); }.   
1a8f0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 5b 6d         return [m
1a900 2c 20 73 74 72 2e 73 6c 69 63 65 28 6b 29 5d 0a  , str.slice(k)].
1a910 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20          }.      
1a920 20 20 6e 20 3d 20 6b 3b 0a 20 20 20 20 20 20 20    n = k;.       
1a930 20 6b 20 3d 20 73 74 72 2e 6c 61 73 74 49 6e 64   k = str.lastInd
1a940 65 78 4f 66 28 27 3c 27 2c 20 6b 20 2d 20 31 29  exOf('<', k - 1)
1a950 3b 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a  ;.      }.    }.
1a960 20 20 20 20 72 65 74 75 72 6e 20 5b 27 27 2c 20      return ['', 
1a970 73 74 72 5d 0a 20 20 7d 0a 0a 20 20 66 75 6e 63  str].  }..  func
1a980 74 69 6f 6e 20 67 65 74 54 79 70 65 20 28 61 74  tion getType (at
1a990 74 72 69 62 73 29 20 7b 0a 20 20 20 20 69 66 20  tribs) {.    if 
1a9a0 28 61 74 74 72 69 62 73 29 20 7b 0a 20 20 20 20  (attribs) {.    
1a9b0 20 20 76 61 72 20 6d 61 74 63 68 20 3d 20 61 74    var match = at
1a9c0 74 72 69 62 73 2e 6d 61 74 63 68 28 54 59 50 45  tribs.match(TYPE
1a9d0 5f 41 54 54 52 29 3b 0a 0a 20 20 20 20 20 20 6d  _ATTR);..      m
1a9e0 61 74 63 68 20 3d 20 6d 61 74 63 68 20 26 26 20  atch = match && 
1a9f0 28 6d 61 74 63 68 5b 32 5d 20 7c 7c 20 6d 61 74  (match[2] || mat
1aa00 63 68 5b 33 5d 29 3b 0a 20 20 20 20 20 20 69 66  ch[3]);.      if
1aa10 20 28 6d 61 74 63 68 29 20 7b 0a 20 20 20 20 20   (match) {.     
1aa20 20 20 20 72 65 74 75 72 6e 20 6d 61 74 63 68 2e     return match.
1aa30 72 65 70 6c 61 63 65 28 27 74 65 78 74 2f 27 2c  replace('text/',
1aa40 20 27 27 29 0a 20 20 20 20 20 20 7d 0a 20 20 20   '').      }.   
1aa50 20 7d 0a 20 20 20 20 72 65 74 75 72 6e 20 27 27   }.    return ''
1aa60 0a 20 20 7d 0a 0a 20 20 66 75 6e 63 74 69 6f 6e  .  }..  function
1aa70 20 67 65 74 41 74 74 72 69 62 20 28 61 74 74 72   getAttrib (attr
1aa80 69 62 73 2c 20 6e 61 6d 65 29 20 7b 0a 20 20 20  ibs, name) {.   
1aa90 20 69 66 20 28 61 74 74 72 69 62 73 29 20 7b 0a   if (attribs) {.
1aaa0 20 20 20 20 20 20 76 61 72 20 6d 61 74 63 68 20        var match 
1aab0 3d 20 61 74 74 72 69 62 73 2e 6d 61 74 63 68 28  = attribs.match(
1aac0 52 65 67 45 78 70 28 27 5c 5c 73 27 20 2b 20 6e  RegExp('\\s' + n
1aad0 61 6d 65 20 2b 20 4d 49 53 43 5f 41 54 54 52 2c  ame + MISC_ATTR,
1aae0 20 27 69 27 29 29 3b 0a 0a 20 20 20 20 20 20 6d   'i'));..      m
1aaf0 61 74 63 68 20 3d 20 6d 61 74 63 68 20 26 26 20  atch = match && 
1ab00 6d 61 74 63 68 5b 31 5d 3b 0a 20 20 20 20 20 20  match[1];.      
1ab10 69 66 20 28 6d 61 74 63 68 29 20 7b 0a 20 20 20  if (match) {.   
1ab20 20 20 20 20 20 72 65 74 75 72 6e 20 28 2f 5e 5b       return (/^[
1ab30 27 22 5d 2f 29 2e 74 65 73 74 28 6d 61 74 63 68  '"]/).test(match
1ab40 29 20 3f 20 6d 61 74 63 68 2e 73 6c 69 63 65 28  ) ? match.slice(
1ab50 31 2c 20 2d 31 29 20 3a 20 6d 61 74 63 68 0a 20  1, -1) : match. 
1ab60 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20       }.    }.   
1ab70 20 72 65 74 75 72 6e 20 27 27 0a 20 20 7d 0a 0a   return ''.  }..
1ab80 20 20 66 75 6e 63 74 69 6f 6e 20 75 6e 65 73 63    function unesc
1ab90 61 70 65 48 54 4d 4c 20 28 73 74 72 29 20 7b 0a  apeHTML (str) {.
1aba0 20 20 20 20 72 65 74 75 72 6e 20 73 74 72 0a 20      return str. 
1abb0 20 20 20 20 20 2e 72 65 70 6c 61 63 65 28 2f 26       .replace(/&
1abc0 61 6d 70 3b 2f 67 2c 20 27 26 27 29 0a 20 20 20  amp;/g, '&').   
1abd0 20 20 20 2e 72 65 70 6c 61 63 65 28 2f 26 6c 74     .replace(/&lt
1abe0 3b 2f 67 2c 20 27 3c 27 29 0a 20 20 20 20 20 20  ;/g, '<').      
1abf0 2e 72 65 70 6c 61 63 65 28 2f 26 67 74 3b 2f 67  .replace(/&gt;/g
1ac00 2c 20 27 3e 27 29 0a 20 20 20 20 20 20 2e 72 65  , '>').      .re
1ac10 70 6c 61 63 65 28 2f 26 71 75 6f 74 3b 2f 67 2c  place(/&quot;/g,
1ac20 20 27 22 27 29 0a 20 20 20 20 20 20 2e 72 65 70   '"').      .rep
1ac30 6c 61 63 65 28 2f 26 23 30 33 39 3b 2f 67 2c 20  lace(/&#039;/g, 
1ac40 27 5c 27 27 29 0a 20 20 7d 0a 0a 20 20 66 75 6e  '\'').  }..  fun
1ac50 63 74 69 6f 6e 20 67 65 74 50 61 72 73 65 72 4f  ction getParserO
1ac60 70 74 69 6f 6e 73 20 28 61 74 74 72 69 62 73 29  ptions (attribs)
1ac70 20 7b 0a 20 20 20 20 76 61 72 20 6f 70 74 73 20   {.    var opts 
1ac80 3d 20 75 6e 65 73 63 61 70 65 48 54 4d 4c 28 67  = unescapeHTML(g
1ac90 65 74 41 74 74 72 69 62 28 61 74 74 72 69 62 73  etAttrib(attribs
1aca0 2c 20 27 6f 70 74 69 6f 6e 73 27 29 29 3b 0a 0a  , 'options'));..
1acb0 20 20 20 20 72 65 74 75 72 6e 20 6f 70 74 73 20      return opts 
1acc0 3f 20 4a 53 4f 4e 2e 70 61 72 73 65 28 6f 70 74  ? JSON.parse(opt
1acd0 73 29 20 3a 20 6e 75 6c 6c 0a 20 20 7d 0a 0a 20  s) : null.  }.. 
1ace0 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 43 6f 64   function getCod
1acf0 65 20 28 63 6f 64 65 2c 20 6f 70 74 73 2c 20 61  e (code, opts, a
1ad00 74 74 72 69 62 73 2c 20 62 61 73 65 29 20 7b 0a  ttribs, base) {.
1ad10 20 20 20 20 76 61 72 0a 20 20 20 20 20 20 74 79      var.      ty
1ad20 70 65 20 3d 20 67 65 74 54 79 70 65 28 61 74 74  pe = getType(att
1ad30 72 69 62 73 29 2c 0a 20 20 20 20 20 20 73 72 63  ribs),.      src
1ad40 20 20 3d 20 67 65 74 41 74 74 72 69 62 28 61 74    = getAttrib(at
1ad50 74 72 69 62 73 2c 20 27 73 72 63 27 29 2c 0a 20  tribs, 'src'),. 
1ad60 20 20 20 20 20 6a 73 50 61 72 73 65 72 4f 70 74       jsParserOpt
1ad70 69 6f 6e 73 20 3d 20 65 78 74 65 6e 64 24 31 28  ions = extend$1(
1ad80 7b 7d 2c 20 6f 70 74 73 2e 70 61 72 73 65 72 4f  {}, opts.parserO
1ad90 70 74 69 6f 6e 73 2e 6a 73 29 3b 0a 0a 20 20 20  ptions.js);..   
1ada0 20 69 66 20 28 73 72 63 29 20 7b 20 72 65 74 75   if (src) { retu
1adb0 72 6e 20 66 61 6c 73 65 20 7d 0a 0a 20 20 20 20  rn false }..    
1adc0 72 65 74 75 72 6e 20 5f 63 6f 6d 70 69 6c 65 4a  return _compileJ
1add0 53 28 0a 20 20 20 20 20 20 63 6f 64 65 2c 0a 20  S(.      code,. 
1ade0 20 20 20 20 20 6f 70 74 73 2c 0a 20 20 20 20 20       opts,.     
1adf0 20 74 79 70 65 2c 0a 20 20 20 20 20 20 65 78 74   type,.      ext
1ae00 65 6e 64 24 31 28 6a 73 50 61 72 73 65 72 4f 70  end$1(jsParserOp
1ae10 74 69 6f 6e 73 2c 20 67 65 74 50 61 72 73 65 72  tions, getParser
1ae20 4f 70 74 69 6f 6e 73 28 61 74 74 72 69 62 73 29  Options(attribs)
1ae30 29 2c 0a 20 20 20 20 20 20 62 61 73 65 0a 20 20  ),.      base.  
1ae40 20 20 29 0a 20 20 7d 0a 0a 20 20 66 75 6e 63 74    ).  }..  funct
1ae50 69 6f 6e 20 63 73 73 43 6f 64 65 20 28 63 6f 64  ion cssCode (cod
1ae60 65 2c 20 6f 70 74 73 2c 20 61 74 74 72 69 62 73  e, opts, attribs
1ae70 2c 20 75 72 6c 2c 20 74 61 67 29 20 7b 0a 20 20  , url, tag) {.  
1ae80 20 20 76 61 72 0a 20 20 20 20 20 20 70 61 72 73    var.      pars
1ae90 65 72 53 74 79 6c 65 4f 70 74 69 6f 6e 73 20 3d  erStyleOptions =
1aea0 20 65 78 74 65 6e 64 24 31 28 7b 7d 2c 20 6f 70   extend$1({}, op
1aeb0 74 73 2e 70 61 72 73 65 72 4f 70 74 69 6f 6e 73  ts.parserOptions
1aec0 2e 73 74 79 6c 65 29 2c 0a 20 20 20 20 20 20 65  .style),.      e
1aed0 78 74 72 61 4f 70 74 73 20 3d 20 7b 0a 20 20 20  xtraOpts = {.   
1aee0 20 20 20 20 20 70 61 72 73 65 72 4f 70 74 73 3a       parserOpts:
1aef0 20 65 78 74 65 6e 64 24 31 28 70 61 72 73 65 72   extend$1(parser
1af00 53 74 79 6c 65 4f 70 74 69 6f 6e 73 2c 20 67 65  StyleOptions, ge
1af10 74 50 61 72 73 65 72 4f 70 74 69 6f 6e 73 28 61  tParserOptions(a
1af20 74 74 72 69 62 73 29 29 2c 0a 20 20 20 20 20 20  ttribs)),.      
1af30 20 20 75 72 6c 3a 20 75 72 6c 0a 20 20 20 20 20    url: url.     
1af40 20 7d 3b 0a 0a 20 20 20 20 72 65 74 75 72 6e 20   };..    return 
1af50 5f 63 6f 6d 70 69 6c 65 43 53 53 28 63 6f 64 65  _compileCSS(code
1af60 2c 20 74 61 67 2c 20 67 65 74 54 79 70 65 28 61  , tag, getType(a
1af70 74 74 72 69 62 73 29 20 7c 7c 20 6f 70 74 73 2e  ttribs) || opts.
1af80 73 74 79 6c 65 2c 20 65 78 74 72 61 4f 70 74 73  style, extraOpts
1af90 29 0a 20 20 7d 0a 0a 20 20 66 75 6e 63 74 69 6f  ).  }..  functio
1afa0 6e 20 63 6f 6d 70 69 6c 65 54 65 6d 70 6c 61 74  n compileTemplat
1afb0 65 20 28 68 74 6d 6c 2c 20 75 72 6c 2c 20 6c 61  e (html, url, la
1afc0 6e 67 2c 20 6f 70 74 73 29 20 7b 0a 0a 20 20 20  ng, opts) {..   
1afd0 20 76 61 72 20 70 61 72 73 65 72 20 3d 20 70 61   var parser = pa
1afe0 72 73 65 72 73 2e 5f 72 65 71 28 27 68 74 6d 6c  rsers._req('html
1aff0 2e 27 20 2b 20 6c 61 6e 67 2c 20 74 72 75 65 29  .' + lang, true)
1b000 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 70 61 72  ;.    return par
1b010 73 65 72 28 68 74 6d 6c 2c 20 6f 70 74 73 2c 20  ser(html, opts, 
1b020 75 72 6c 29 0a 20 20 7d 0a 0a 20 20 76 61 72 0a  url).  }..  var.
1b030 0a 20 20 20 20 43 55 53 54 5f 54 41 47 20 3d 20  .    CUST_TAG = 
1b040 52 65 67 45 78 70 28 2f 5e 28 5b 20 5c 74 5d 2a  RegExp(/^([ \t]*
1b050 29 3c 28 2d 3f 5b 41 2d 5a 61 2d 7a 5d 5b 2d 5c  )<(-?[A-Za-z][-\
1b060 77 5c 78 41 30 2d 5c 78 46 46 5d 2a 29 28 3f 3a  w\xA0-\xFF]*)(?:
1b070 5c 73 2b 28 5b 5e 27 22 2f 3e 5d 2b 28 3f 3a 28  \s+([^'"/>]+(?:(
1b080 3f 3a 40 7c 5c 2f 5b 5e 3e 5d 29 5b 5e 27 22 2f  ?:@|\/[^>])[^'"/
1b090 3e 5d 2a 29 2a 29 7c 5c 73 2a 29 3f 28 3f 3a 5c  >]*)*)|\s*)?(?:\
1b0a0 2f 3e 7c 3e 5b 20 5c 74 5d 2a 5c 6e 3f 28 5b 5c  />|>[ \t]*\n?([\
1b0b0 53 5c 73 5d 2a 29 5e 5c 31 3c 5c 2f 5c 32 5c 73  S\s]*)^\1<\/\2\s
1b0c0 2a 3e 7c 3e 28 2e 2a 29 3c 5c 2f 5c 32 5c 73 2a  *>|>(.*)<\/\2\s*
1b0d0 3e 29 2f 0a 20 20 20 20 20 20 2e 73 6f 75 72 63  >)/.      .sourc
1b0e0 65 2e 72 65 70 6c 61 63 65 28 27 40 27 2c 20 53  e.replace('@', S
1b0f0 5f 53 54 52 49 4e 47 53 29 2c 20 27 67 69 6d 27  _STRINGS), 'gim'
1b100 29 2c 0a 0a 20 20 20 20 53 43 52 49 50 54 53 20  ),..    SCRIPTS 
1b110 3d 20 2f 3c 73 63 72 69 70 74 28 5c 73 2b 5b 5e  = /<script(\s+[^
1b120 3e 5d 2a 29 3f 3e 5c 6e 3f 28 5b 5c 53 5c 73 5d  >]*)?>\n?([\S\s]
1b130 2a 3f 29 3c 5c 2f 73 63 72 69 70 74 5c 73 2a 3e  *?)<\/script\s*>
1b140 2f 67 69 2c 0a 0a 20 20 20 20 53 54 59 4c 45 53  /gi,..    STYLES
1b150 20 3d 20 2f 3c 73 74 79 6c 65 28 5c 73 2b 5b 5e   = /<style(\s+[^
1b160 3e 5d 2a 29 3f 3e 5c 6e 3f 28 5b 5c 53 5c 73 5d  >]*)?>\n?([\S\s]
1b170 2a 3f 29 3c 5c 2f 73 74 79 6c 65 5c 73 2a 3e 2f  *?)<\/style\s*>/
1b180 67 69 3b 0a 0a 20 20 66 75 6e 63 74 69 6f 6e 20  gi;..  function 
1b190 63 6f 6d 70 69 6c 65 20 28 73 72 63 2c 20 6f 70  compile (src, op
1b1a0 74 73 2c 20 75 72 6c 29 20 7b 0a 20 20 20 20 76  ts, url) {.    v
1b1b0 61 72 0a 20 20 20 20 20 20 70 61 72 74 73 20 3d  ar.      parts =
1b1c0 20 5b 5d 2c 0a 20 20 20 20 20 20 69 6e 63 6c 75   [],.      inclu
1b1d0 64 65 64 2c 0a 20 20 20 20 20 20 6f 75 74 70 75  ded,.      outpu
1b1e0 74 20 3d 20 73 72 63 2c 0a 20 20 20 20 20 20 64  t = src,.      d
1b1f0 65 66 61 75 6c 74 50 61 72 73 65 72 70 74 69 6f  efaultParserptio
1b200 6e 73 20 3d 20 7b 0a 0a 20 20 20 20 20 20 20 20  ns = {..        
1b210 74 65 6d 70 6c 61 74 65 3a 20 7b 7d 2c 0a 20 20  template: {},.  
1b220 20 20 20 20 20 20 6a 73 3a 20 7b 7d 2c 0a 20 20        js: {},.  
1b230 20 20 20 20 20 20 73 74 79 6c 65 3a 20 7b 7d 0a        style: {}.
1b240 20 20 20 20 20 20 7d 3b 0a 0a 20 20 20 20 69 66        };..    if
1b250 20 28 21 6f 70 74 73 29 20 7b 20 6f 70 74 73 20   (!opts) { opts 
1b260 3d 20 7b 7d 3b 20 7d 0a 0a 20 20 20 20 6f 70 74  = {}; }..    opt
1b270 73 2e 70 61 72 73 65 72 4f 70 74 69 6f 6e 73 20  s.parserOptions 
1b280 3d 20 65 78 74 65 6e 64 24 31 28 64 65 66 61 75  = extend$1(defau
1b290 6c 74 50 61 72 73 65 72 70 74 69 6f 6e 73 2c 20  ltParserptions, 
1b2a0 6f 70 74 73 2e 70 61 72 73 65 72 4f 70 74 69 6f  opts.parserOptio
1b2b0 6e 73 20 7c 7c 20 7b 7d 29 3b 0a 0a 20 20 20 20  ns || {});..    
1b2c0 69 6e 63 6c 75 64 65 64 20 3d 20 6f 70 74 73 2e  included = opts.
1b2d0 65 78 63 6c 75 64 65 0a 20 20 20 20 20 20 3f 20  exclude.      ? 
1b2e0 66 75 6e 63 74 69 6f 6e 20 28 73 29 20 7b 20 72  function (s) { r
1b2f0 65 74 75 72 6e 20 6f 70 74 73 2e 65 78 63 6c 75  eturn opts.exclu
1b300 64 65 2e 69 6e 64 65 78 4f 66 28 73 29 20 3c 20  de.indexOf(s) < 
1b310 30 20 7d 20 3a 20 66 75 6e 63 74 69 6f 6e 20 28  0 } : function (
1b320 29 20 7b 20 72 65 74 75 72 6e 20 31 20 7d 3b 0a  ) { return 1 };.
1b330 0a 20 20 20 20 69 66 20 28 21 75 72 6c 29 20 7b  .    if (!url) {
1b340 20 75 72 6c 20 3d 20 27 27 3b 20 7d 0a 0a 20 20   url = ''; }..  
1b350 20 20 76 61 72 20 5f 62 70 20 3d 20 62 72 61 63    var _bp = brac
1b360 6b 65 74 73 2e 61 72 72 61 79 28 6f 70 74 73 2e  kets.array(opts.
1b370 62 72 61 63 6b 65 74 73 29 3b 0a 0a 20 20 20 20  brackets);..    
1b380 69 66 20 28 6f 70 74 73 2e 74 65 6d 70 6c 61 74  if (opts.templat
1b390 65 29 20 7b 0a 20 20 20 20 20 20 6f 75 74 70 75  e) {.      outpu
1b3a0 74 20 3d 20 63 6f 6d 70 69 6c 65 54 65 6d 70 6c  t = compileTempl
1b3b0 61 74 65 28 6f 75 74 70 75 74 2c 20 75 72 6c 2c  ate(output, url,
1b3c0 20 6f 70 74 73 2e 74 65 6d 70 6c 61 74 65 2c 20   opts.template, 
1b3d0 6f 70 74 73 2e 70 61 72 73 65 72 4f 70 74 69 6f  opts.parserOptio
1b3e0 6e 73 2e 74 65 6d 70 6c 61 74 65 29 3b 0a 20 20  ns.template);.  
1b3f0 20 20 7d 0a 0a 20 20 20 20 6f 75 74 70 75 74 20    }..    output 
1b400 3d 20 63 6c 65 61 6e 53 6f 75 72 63 65 28 6f 75  = cleanSource(ou
1b410 74 70 75 74 29 0a 20 20 20 20 20 20 2e 72 65 70  tput).      .rep
1b420 6c 61 63 65 28 43 55 53 54 5f 54 41 47 2c 20 66  lace(CUST_TAG, f
1b430 75 6e 63 74 69 6f 6e 20 28 5f 2c 20 69 6e 64 65  unction (_, inde
1b440 6e 74 2c 20 74 61 67 4e 61 6d 65 2c 20 61 74 74  nt, tagName, att
1b450 72 69 62 73 2c 20 62 6f 64 79 2c 20 62 6f 64 79  ribs, body, body
1b460 32 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72  2) {.        var
1b470 0a 20 20 20 20 20 20 20 20 20 20 6a 73 63 6f 64  .          jscod
1b480 65 20 3d 20 27 27 2c 0a 20 20 20 20 20 20 20 20  e = '',.        
1b490 20 20 73 74 79 6c 65 73 20 3d 20 27 27 2c 0a 20    styles = '',. 
1b4a0 20 20 20 20 20 20 20 20 20 68 74 6d 6c 20 3d 20           html = 
1b4b0 27 27 2c 0a 20 20 20 20 20 20 20 20 20 20 69 6d  '',.          im
1b4c0 70 6f 72 74 73 20 3d 20 27 27 2c 0a 20 20 20 20  ports = '',.    
1b4d0 20 20 20 20 20 20 70 63 65 78 20 3d 20 5b 5d 3b        pcex = [];
1b4e0 0a 0a 20 20 20 20 20 20 20 20 70 63 65 78 2e 5f  ..        pcex._
1b4f0 62 70 20 3d 20 5f 62 70 3b 0a 0a 20 20 20 20 20  bp = _bp;..     
1b500 20 20 20 74 61 67 4e 61 6d 65 20 3d 20 74 61 67     tagName = tag
1b510 4e 61 6d 65 2e 74 6f 4c 6f 77 65 72 43 61 73 65  Name.toLowerCase
1b520 28 29 3b 0a 0a 20 20 20 20 20 20 20 20 61 74 74  ();..        att
1b530 72 69 62 73 20 3d 20 61 74 74 72 69 62 73 20 26  ribs = attribs &
1b540 26 20 69 6e 63 6c 75 64 65 64 28 27 61 74 74 72  & included('attr
1b550 69 62 73 27 29 0a 20 20 20 20 20 20 20 20 20 20  ibs').          
1b560 3f 20 72 65 73 74 6f 72 65 45 78 70 72 28 0a 20  ? restoreExpr(. 
1b570 20 20 20 20 20 20 20 20 20 20 20 70 61 72 73 65             parse
1b580 41 74 74 72 69 62 73 28 0a 20 20 20 20 20 20 20  Attribs(.       
1b590 20 20 20 20 20 20 20 73 70 6c 69 74 48 74 6d 6c         splitHtml
1b5a0 28 61 74 74 72 69 62 73 2c 20 6f 70 74 73 2c 20  (attribs, opts, 
1b5b0 70 63 65 78 29 2c 0a 20 20 20 20 20 20 20 20 20  pcex),.         
1b5c0 20 20 20 20 20 70 63 65 78 29 2c 0a 20 20 20 20       pcex),.    
1b5d0 20 20 20 20 20 20 20 20 70 63 65 78 29 20 3a 20          pcex) : 
1b5e0 27 27 3b 0a 0a 20 20 20 20 20 20 20 20 69 66 20  '';..        if 
1b5f0 28 28 62 6f 64 79 20 7c 7c 20 28 62 6f 64 79 20  ((body || (body 
1b600 3d 20 62 6f 64 79 32 29 29 20 26 26 20 2f 5c 53  = body2)) && /\S
1b610 2f 2e 74 65 73 74 28 62 6f 64 79 29 29 20 7b 0a  /.test(body)) {.
1b620 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62  .          if (b
1b630 6f 64 79 32 29 20 7b 0a 0a 20 20 20 20 20 20 20  ody2) {..       
1b640 20 20 20 20 20 69 66 20 28 69 6e 63 6c 75 64 65       if (include
1b650 64 28 27 68 74 6d 6c 27 29 29 20 7b 20 68 74 6d  d('html')) { htm
1b660 6c 20 3d 20 5f 63 6f 6d 70 69 6c 65 48 54 4d 4c  l = _compileHTML
1b670 28 62 6f 64 79 32 2c 20 6f 70 74 73 2c 20 70 63  (body2, opts, pc
1b680 65 78 29 3b 20 7d 0a 20 20 20 20 20 20 20 20 20  ex); }.         
1b690 20 7d 20 65 6c 73 65 20 7b 0a 0a 20 20 20 20 20   } else {..     
1b6a0 20 20 20 20 20 20 20 62 6f 64 79 20 3d 20 62 6f         body = bo
1b6b0 64 79 2e 72 65 70 6c 61 63 65 28 52 65 67 45 78  dy.replace(RegEx
1b6c0 70 28 27 5e 27 20 2b 20 69 6e 64 65 6e 74 2c 20  p('^' + indent, 
1b6d0 27 67 6d 27 29 2c 20 27 27 29 3b 0a 0a 20 20 20  'gm'), '');..   
1b6e0 20 20 20 20 20 20 20 20 20 62 6f 64 79 20 3d 20           body = 
1b6f0 62 6f 64 79 2e 72 65 70 6c 61 63 65 28 53 43 52  body.replace(SCR
1b700 49 50 54 53 2c 20 66 75 6e 63 74 69 6f 6e 20 28  IPTS, function (
1b710 5f 6d 2c 20 5f 61 74 74 72 73 2c 20 5f 73 63 72  _m, _attrs, _scr
1b720 69 70 74 29 20 7b 0a 20 20 20 20 20 20 20 20 20  ipt) {.         
1b730 20 20 20 20 20 69 66 20 28 69 6e 63 6c 75 64 65       if (include
1b740 64 28 27 6a 73 27 29 29 20 7b 0a 20 20 20 20 20  d('js')) {.     
1b750 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 63             var c
1b760 6f 64 65 20 3d 20 67 65 74 43 6f 64 65 28 5f 73  ode = getCode(_s
1b770 63 72 69 70 74 2c 20 6f 70 74 73 2c 20 5f 61 74  cript, opts, _at
1b780 74 72 73 2c 20 75 72 6c 29 3b 0a 0a 20 20 20 20  trs, url);..    
1b790 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1b7a0 63 6f 64 65 29 20 7b 20 6a 73 63 6f 64 65 20 2b  code) { jscode +
1b7b0 3d 20 28 6a 73 63 6f 64 65 20 3f 20 27 5c 6e 27  = (jscode ? '\n'
1b7c0 20 3a 20 27 27 29 20 2b 20 63 6f 64 65 3b 20 7d   : '') + code; }
1b7d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
1b7e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
1b7f0 65 74 75 72 6e 20 27 27 0a 20 20 20 20 20 20 20  eturn ''.       
1b800 20 20 20 20 20 7d 29 3b 0a 0a 20 20 20 20 20 20       });..      
1b810 20 20 20 20 20 20 62 6f 64 79 20 3d 20 62 6f 64        body = bod
1b820 79 2e 72 65 70 6c 61 63 65 28 53 54 59 4c 45 53  y.replace(STYLES
1b830 2c 20 66 75 6e 63 74 69 6f 6e 20 28 5f 6d 2c 20  , function (_m, 
1b840 5f 61 74 74 72 73 2c 20 5f 73 74 79 6c 65 29 20  _attrs, _style) 
1b850 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  {.              
1b860 69 66 20 28 69 6e 63 6c 75 64 65 64 28 27 63 73  if (included('cs
1b870 73 27 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20  s')) {.         
1b880 20 20 20 20 20 20 20 73 74 79 6c 65 73 20 2b 3d         styles +=
1b890 20 28 73 74 79 6c 65 73 20 3f 20 27 20 27 20 3a   (styles ? ' ' :
1b8a0 20 27 27 29 20 2b 20 63 73 73 43 6f 64 65 28 5f   '') + cssCode(_
1b8b0 73 74 79 6c 65 2c 20 6f 70 74 73 2c 20 5f 61 74  style, opts, _at
1b8c0 74 72 73 2c 20 75 72 6c 2c 20 74 61 67 4e 61 6d  trs, url, tagNam
1b8d0 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  e);.            
1b8e0 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20    }.            
1b8f0 20 20 72 65 74 75 72 6e 20 27 27 0a 20 20 20 20    return ''.    
1b900 20 20 20 20 20 20 20 20 7d 29 3b 0a 0a 20 20 20          });..   
1b910 20 20 20 20 20 20 20 20 20 76 61 72 20 62 6c 6f           var blo
1b920 63 6b 73 20 3d 20 73 70 6c 69 74 42 6c 6f 63 6b  cks = splitBlock
1b930 73 28 62 6f 64 79 2e 72 65 70 6c 61 63 65 28 54  s(body.replace(T
1b940 52 49 4d 5f 54 52 41 49 4c 2c 20 27 27 29 29 3b  RIM_TRAIL, ''));
1b950 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
1b960 20 28 69 6e 63 6c 75 64 65 64 28 27 68 74 6d 6c   (included('html
1b970 27 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20  ')) {.          
1b980 20 20 20 20 68 74 6d 6c 20 3d 20 5f 63 6f 6d 70      html = _comp
1b990 69 6c 65 48 54 4d 4c 28 62 6c 6f 63 6b 73 5b 30  ileHTML(blocks[0
1b9a0 5d 2c 20 6f 70 74 73 2c 20 70 63 65 78 29 3b 0a  ], opts, pcex);.
1b9b0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 0a 20              }.. 
1b9c0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69             if (i
1b9d0 6e 63 6c 75 64 65 64 28 27 6a 73 27 29 29 20 7b  ncluded('js')) {
1b9e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62  .              b
1b9f0 6f 64 79 20 3d 20 5f 63 6f 6d 70 69 6c 65 4a 53  ody = _compileJS
1ba00 28 62 6c 6f 63 6b 73 5b 31 5d 2c 20 6f 70 74 73  (blocks[1], opts
1ba10 2c 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 2c 20 75 72  , null, null, ur
1ba20 6c 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  l);.            
1ba30 20 20 69 66 20 28 62 6f 64 79 29 20 7b 20 6a 73    if (body) { js
1ba40 63 6f 64 65 20 2b 3d 20 28 6a 73 63 6f 64 65 20  code += (jscode 
1ba50 3f 20 27 5c 6e 27 20 3a 20 27 27 29 20 2b 20 62  ? '\n' : '') + b
1ba60 6f 64 79 3b 20 7d 0a 20 20 20 20 20 20 20 20 20  ody; }.         
1ba70 20 20 20 20 20 6a 73 63 6f 64 65 20 3d 20 6a 73       jscode = js
1ba80 63 6f 64 65 2e 72 65 70 6c 61 63 65 28 49 4d 50  code.replace(IMP
1ba90 4f 52 54 5f 53 54 41 54 45 4d 45 4e 54 2c 20 66  ORT_STATEMENT, f
1baa0 75 6e 63 74 69 6f 6e 20 28 73 29 20 7b 0a 20 20  unction (s) {.  
1bab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6d                im
1bac0 70 6f 72 74 73 20 2b 3d 20 73 2e 74 72 69 6d 28  ports += s.trim(
1bad0 29 20 2b 20 27 5c 6e 27 3b 0a 20 20 20 20 20 20  ) + '\n';.      
1bae0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
1baf0 20 27 27 0a 20 20 20 20 20 20 20 20 20 20 20 20   ''.            
1bb00 20 20 7d 29 3b 0a 20 20 20 20 20 20 20 20 20 20    });.          
1bb10 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 7d 0a    }.          }.
1bb20 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20          }..     
1bb30 20 20 20 6a 73 63 6f 64 65 20 3d 20 2f 5c 53 2f     jscode = /\S/
1bb40 2e 74 65 73 74 28 6a 73 63 6f 64 65 29 20 3f 20  .test(jscode) ? 
1bb50 6a 73 63 6f 64 65 2e 72 65 70 6c 61 63 65 28 2f  jscode.replace(/
1bb60 5c 6e 7b 33 2c 7d 2f 67 2c 20 27 5c 6e 5c 6e 27  \n{3,}/g, '\n\n'
1bb70 29 20 3a 20 27 27 3b 0a 0a 20 20 20 20 20 20 20  ) : '';..       
1bb80 20 69 66 20 28 6f 70 74 73 2e 65 6e 74 69 74 69   if (opts.entiti
1bb90 65 73 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20  es) {.          
1bba0 70 61 72 74 73 2e 70 75 73 68 28 7b 0a 20 20 20  parts.push({.   
1bbb0 20 20 20 20 20 20 20 20 20 74 61 67 4e 61 6d 65           tagName
1bbc0 3a 20 74 61 67 4e 61 6d 65 2c 0a 20 20 20 20 20  : tagName,.     
1bbd0 20 20 20 20 20 20 20 68 74 6d 6c 3a 20 68 74 6d         html: htm
1bbe0 6c 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  l,.            c
1bbf0 73 73 3a 20 73 74 79 6c 65 73 2c 0a 20 20 20 20  ss: styles,.    
1bc00 20 20 20 20 20 20 20 20 61 74 74 72 69 62 73 3a          attribs:
1bc10 20 61 74 74 72 69 62 73 2c 0a 20 20 20 20 20 20   attribs,.      
1bc20 20 20 20 20 20 20 6a 73 3a 20 6a 73 63 6f 64 65        js: jscode
1bc30 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6d  ,.            im
1bc40 70 6f 72 74 73 3a 20 69 6d 70 6f 72 74 73 0a 20  ports: imports. 
1bc50 20 20 20 20 20 20 20 20 20 7d 29 3b 0a 20 20 20           });.   
1bc60 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 27 27         return ''
1bc70 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20  .        }..    
1bc80 20 20 20 20 72 65 74 75 72 6e 20 6d 6b 74 61 67      return mktag
1bc90 28 74 61 67 4e 61 6d 65 2c 20 68 74 6d 6c 2c 20  (tagName, html, 
1bca0 73 74 79 6c 65 73 2c 20 61 74 74 72 69 62 73 2c  styles, attribs,
1bcb0 20 6a 73 63 6f 64 65 2c 20 69 6d 70 6f 72 74 73   jscode, imports
1bcc0 2c 20 6f 70 74 73 29 0a 20 20 20 20 20 20 7d 29  , opts).      })
1bcd0 3b 0a 0a 20 20 20 20 69 66 20 28 6f 70 74 73 2e  ;..    if (opts.
1bce0 65 6e 74 69 74 69 65 73 29 20 7b 20 72 65 74 75  entities) { retu
1bcf0 72 6e 20 70 61 72 74 73 20 7d 0a 0a 20 20 20 20  rn parts }..    
1bd00 72 65 74 75 72 6e 20 6f 75 74 70 75 74 0a 20 20  return output.  
1bd10 7d 0a 0a 20 20 76 61 72 20 76 65 72 73 69 6f 6e  }..  var version
1bd20 24 32 20 3d 20 27 76 33 2e 35 2e 32 27 3b 0a 0a  $2 = 'v3.5.2';..
1bd30 20 20 76 61 72 20 63 6f 6d 70 69 6c 65 72 20 3d    var compiler =
1bd40 20 7b 0a 20 20 20 20 63 6f 6d 70 69 6c 65 3a 20   {.    compile: 
1bd50 63 6f 6d 70 69 6c 65 2c 0a 20 20 20 20 63 6f 6d  compile,.    com
1bd60 70 69 6c 65 48 54 4d 4c 3a 20 63 6f 6d 70 69 6c  pileHTML: compil
1bd70 65 48 54 4d 4c 2c 0a 20 20 20 20 63 6f 6d 70 69  eHTML,.    compi
1bd80 6c 65 43 53 53 3a 20 63 6f 6d 70 69 6c 65 43 53  leCSS: compileCS
1bd90 53 2c 0a 20 20 20 20 63 6f 6d 70 69 6c 65 4a 53  S,.    compileJS
1bda0 3a 20 63 6f 6d 70 69 6c 65 4a 53 2c 0a 20 20 20  : compileJS,.   
1bdb0 20 70 61 72 73 65 72 73 3a 20 70 61 72 73 65 72   parsers: parser
1bdc0 73 2c 0a 20 20 20 20 76 65 72 73 69 6f 6e 3a 20  s,.    version: 
1bdd0 76 65 72 73 69 6f 6e 24 32 0a 20 20 7d 3b 0a 0a  version$2.  };..
1bde0 20 20 76 61 72 0a 20 20 20 20 70 72 6f 6d 69 73    var.    promis
1bdf0 65 2c 20 20 20 20 2f 2f 20 65 6d 69 74 73 20 74  e,    // emits t
1be00 68 65 20 27 72 65 61 64 79 27 20 65 76 65 6e 74  he 'ready' event
1be10 20 61 6e 64 20 72 75 6e 73 20 74 68 65 20 66 69   and runs the fi
1be20 72 73 74 20 63 61 6c 6c 62 61 63 6b 0a 20 20 20  rst callback.   
1be30 20 72 65 61 64 79 3b 20 20 20 20 20 20 20 2f 2f   ready;       //
1be40 20 61 6c 6c 20 74 68 65 20 73 63 72 69 70 74 73   all the scripts
1be50 20 77 65 72 65 20 63 6f 6d 70 69 6c 65 64 3f 0a   were compiled?.
1be60 0a 20 20 2f 2f 20 67 65 74 73 20 74 68 65 20 73  .  // gets the s
1be70 6f 75 72 63 65 20 6f 66 20 61 6e 20 65 78 74 65  ource of an exte
1be80 72 6e 61 6c 20 74 61 67 20 77 69 74 68 20 61 6e  rnal tag with an
1be90 20 61 73 79 6e 63 20 63 61 6c 6c 0a 20 20 66 75   async call.  fu
1bea0 6e 63 74 69 6f 6e 20 47 45 54 20 28 75 72 6c 2c  nction GET (url,
1beb0 20 66 6e 2c 20 6f 70 74 73 29 20 7b 0a 20 20 20   fn, opts) {.   
1bec0 20 76 61 72 20 72 65 71 20 3d 20 6e 65 77 20 58   var req = new X
1bed0 4d 4c 48 74 74 70 52 65 71 75 65 73 74 28 29 3b  MLHttpRequest();
1bee0 0a 0a 20 20 20 20 72 65 71 2e 6f 6e 72 65 61 64  ..    req.onread
1bef0 79 73 74 61 74 65 63 68 61 6e 67 65 20 3d 20 66  ystatechange = f
1bf00 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20 20  unction () {.   
1bf10 20 20 20 69 66 20 28 72 65 71 2e 72 65 61 64 79     if (req.ready
1bf20 53 74 61 74 65 20 3d 3d 3d 20 34 29 20 7b 0a 20  State === 4) {. 
1bf30 20 20 20 20 20 20 20 69 66 20 28 72 65 71 2e 73         if (req.s
1bf40 74 61 74 75 73 20 3d 3d 3d 20 32 30 30 20 7c 7c  tatus === 200 ||
1bf50 20 21 72 65 71 2e 73 74 61 74 75 73 20 26 26 20   !req.status && 
1bf60 72 65 71 2e 72 65 73 70 6f 6e 73 65 54 65 78 74  req.responseText
1bf70 2e 6c 65 6e 67 74 68 29 20 7b 0a 20 20 20 20 20  .length) {.     
1bf80 20 20 20 20 20 66 6e 28 72 65 71 2e 72 65 73 70       fn(req.resp
1bf90 6f 6e 73 65 54 65 78 74 2c 20 6f 70 74 73 2c 20  onseText, opts, 
1bfa0 75 72 6c 29 3b 0a 20 20 20 20 20 20 20 20 7d 20  url);.        } 
1bfb0 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20  else {.         
1bfc0 20 63 6f 6d 70 69 6c 65 24 31 2e 65 72 72 6f 72   compile$1.error
1bfd0 28 28 22 5c 22 22 20 2b 20 75 72 6c 20 2b 20 22  (("\"" + url + "
1bfe0 5c 22 20 6e 6f 74 20 66 6f 75 6e 64 22 29 29 3b  \" not found"));
1bff0 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20  .        }.     
1c000 20 7d 0a 20 20 20 20 7d 3b 0a 0a 20 20 20 20 72   }.    };..    r
1c010 65 71 2e 6f 6e 65 72 72 6f 72 20 3d 20 66 75 6e  eq.onerror = fun
1c020 63 74 69 6f 6e 20 28 65 29 20 7b 20 72 65 74 75  ction (e) { retu
1c030 72 6e 20 63 6f 6d 70 69 6c 65 24 31 2e 65 72 72  rn compile$1.err
1c040 6f 72 28 65 29 3b 20 7d 3b 0a 0a 20 20 20 20 72  or(e); };..    r
1c050 65 71 2e 6f 70 65 6e 28 27 47 45 54 27 2c 20 75  eq.open('GET', u
1c060 72 6c 2c 20 74 72 75 65 29 3b 0a 20 20 20 20 72  rl, true);.    r
1c070 65 71 2e 73 65 6e 64 28 27 27 29 3b 0a 20 20 7d  eq.send('');.  }
1c080 0a 0a 20 20 2f 2f 20 65 76 61 6c 75 61 74 65 73  ..  // evaluates
1c090 20 61 20 63 6f 6d 70 69 6c 65 64 20 74 61 67 20   a compiled tag 
1c0a0 77 69 74 68 69 6e 20 74 68 65 20 67 6c 6f 62 61  within the globa
1c0b0 6c 20 63 6f 6e 74 65 78 74 0a 20 20 66 75 6e 63  l context.  func
1c0c0 74 69 6f 6e 20 67 6c 6f 62 61 6c 45 76 61 6c 20  tion globalEval 
1c0d0 28 6a 73 2c 20 75 72 6c 29 20 7b 0a 20 20 20 20  (js, url) {.    
1c0e0 69 66 20 28 74 79 70 65 6f 66 20 6a 73 20 3d 3d  if (typeof js ==
1c0f0 3d 20 54 5f 53 54 52 49 4e 47 29 20 7b 0a 20 20  = T_STRING) {.  
1c100 20 20 20 20 76 61 72 0a 20 20 20 20 20 20 20 20      var.        
1c110 6e 6f 64 65 20 3d 20 6d 61 6b 65 45 6c 65 6d 65  node = makeEleme
1c120 6e 74 28 27 73 63 72 69 70 74 27 29 2c 0a 20 20  nt('script'),.  
1c130 20 20 20 20 20 20 72 6f 6f 74 20 3d 20 64 6f 63        root = doc
1c140 75 6d 65 6e 74 2e 64 6f 63 75 6d 65 6e 74 45 6c  ument.documentEl
1c150 65 6d 65 6e 74 3b 0a 0a 20 20 20 20 20 20 2f 2f  ement;..      //
1c160 20 6d 61 6b 65 20 74 68 65 20 73 6f 75 72 63 65   make the source
1c170 20 61 76 61 69 6c 61 62 6c 65 20 69 6e 20 74 68   available in th
1c180 65 20 22 28 6e 6f 20 64 6f 6d 61 69 6e 29 22 20  e "(no domain)" 
1c190 74 61 62 0a 20 20 20 20 20 20 2f 2f 20 6f 66 20  tab.      // of 
1c1a0 43 68 72 6f 6d 65 20 44 65 76 54 6f 6f 6c 73 2c  Chrome DevTools,
1c1b0 20 77 69 74 68 20 61 20 2e 6a 73 20 65 78 74 65   with a .js exte
1c1c0 6e 73 69 6f 6e 0a 20 20 20 20 20 20 69 66 20 28  nsion.      if (
1c1d0 75 72 6c 29 20 7b 20 6a 73 20 2b 3d 20 27 5c 6e  url) { js += '\n
1c1e0 2f 2f 23 20 73 6f 75 72 63 65 55 52 4c 3d 27 20  //# sourceURL=' 
1c1f0 2b 20 75 72 6c 20 2b 20 27 2e 6a 73 27 3b 20 7d  + url + '.js'; }
1c200 0a 0a 20 20 20 20 20 20 6e 6f 64 65 2e 74 65 78  ..      node.tex
1c210 74 20 3d 20 6a 73 3b 0a 20 20 20 20 20 20 72 6f  t = js;.      ro
1c220 6f 74 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 6e  ot.appendChild(n
1c230 6f 64 65 29 3b 0a 20 20 20 20 20 20 72 6f 6f 74  ode);.      root
1c240 2e 72 65 6d 6f 76 65 43 68 69 6c 64 28 6e 6f 64  .removeChild(nod
1c250 65 29 3b 0a 20 20 20 20 7d 0a 20 20 7d 0a 0a 20  e);.    }.  }.. 
1c260 20 2f 2f 20 63 6f 6d 70 69 6c 65 73 20 61 6c 6c   // compiles all
1c270 20 74 68 65 20 69 6e 74 65 72 6e 61 6c 20 61 6e   the internal an
1c280 64 20 65 78 74 65 72 6e 61 6c 20 74 61 67 73 20  d external tags 
1c290 6f 6e 20 74 68 65 20 70 61 67 65 0a 20 20 66 75  on the page.  fu
1c2a0 6e 63 74 69 6f 6e 20 63 6f 6d 70 69 6c 65 53 63  nction compileSc
1c2b0 72 69 70 74 73 20 28 66 6e 2c 20 78 6f 70 74 29  ripts (fn, xopt)
1c2c0 20 7b 0a 20 20 20 20 76 61 72 0a 20 20 20 20 20   {.    var.     
1c2d0 20 73 63 72 69 70 74 73 20 3d 20 24 24 28 27 73   scripts = $$('s
1c2e0 63 72 69 70 74 5b 74 79 70 65 3d 22 72 69 6f 74  cript[type="riot
1c2f0 2f 74 61 67 22 5d 27 29 2c 0a 20 20 20 20 20 20  /tag"]'),.      
1c300 73 63 72 69 70 74 73 41 6d 6f 75 6e 74 20 3d 20  scriptsAmount = 
1c310 73 63 72 69 70 74 73 2e 6c 65 6e 67 74 68 3b 0a  scripts.length;.
1c320 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 64 6f  .    function do
1c330 6e 65 28 29 20 7b 0a 20 20 20 20 20 20 70 72 6f  ne() {.      pro
1c340 6d 69 73 65 2e 74 72 69 67 67 65 72 28 27 72 65  mise.trigger('re
1c350 61 64 79 27 29 3b 0a 20 20 20 20 20 20 72 65 61  ady');.      rea
1c360 64 79 20 3d 20 74 72 75 65 3b 0a 20 20 20 20 20  dy = true;.     
1c370 20 69 66 20 28 66 6e 29 20 7b 20 66 6e 28 29 3b   if (fn) { fn();
1c380 20 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 66 75   }.    }..    fu
1c390 6e 63 74 69 6f 6e 20 63 6f 6d 70 69 6c 65 54 61  nction compileTa
1c3a0 67 20 28 73 72 63 2c 20 6f 70 74 73 2c 20 75 72  g (src, opts, ur
1c3b0 6c 29 20 7b 0a 20 20 20 20 20 20 76 61 72 20 63  l) {.      var c
1c3c0 6f 64 65 20 3d 20 63 6f 6d 70 69 6c 65 72 2e 63  ode = compiler.c
1c3d0 6f 6d 70 69 6c 65 28 73 72 63 2c 20 6f 70 74 73  ompile(src, opts
1c3e0 2c 20 75 72 6c 29 3b 0a 0a 20 20 20 20 20 20 67  , url);..      g
1c3f0 6c 6f 62 61 6c 45 76 61 6c 28 63 6f 64 65 2c 20  lobalEval(code, 
1c400 75 72 6c 29 3b 0a 20 20 20 20 20 20 69 66 20 28  url);.      if (
1c410 21 2d 2d 73 63 72 69 70 74 73 41 6d 6f 75 6e 74  !--scriptsAmount
1c420 29 20 7b 20 64 6f 6e 65 28 29 3b 20 7d 0a 20 20  ) { done(); }.  
1c430 20 20 7d 0a 0a 20 20 20 20 69 66 20 28 21 73 63    }..    if (!sc
1c440 72 69 70 74 73 41 6d 6f 75 6e 74 29 20 7b 20 64  riptsAmount) { d
1c450 6f 6e 65 28 29 3b 20 7d 0a 20 20 20 20 65 6c 73  one(); }.    els
1c460 65 20 7b 0a 20 20 20 20 20 20 66 6f 72 20 28 76  e {.      for (v
1c470 61 72 20 69 20 3d 20 30 3b 20 69 20 3c 20 73 63  ar i = 0; i < sc
1c480 72 69 70 74 73 2e 6c 65 6e 67 74 68 3b 20 2b 2b  ripts.length; ++
1c490 69 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72  i) {.        var
1c4a0 0a 20 20 20 20 20 20 20 20 20 20 73 63 72 69 70  .          scrip
1c4b0 74 20 3d 20 73 63 72 69 70 74 73 5b 69 5d 2c 0a  t = scripts[i],.
1c4c0 20 20 20 20 20 20 20 20 20 20 6f 70 74 73 20 3d            opts =
1c4d0 20 65 78 74 65 6e 64 28 7b 74 65 6d 70 6c 61 74   extend({templat
1c4e0 65 3a 20 67 65 74 41 74 74 72 69 62 75 74 65 28  e: getAttribute(
1c4f0 73 63 72 69 70 74 2c 20 27 74 65 6d 70 6c 61 74  script, 'templat
1c500 65 27 29 7d 2c 20 78 6f 70 74 29 2c 0a 20 20 20  e')}, xopt),.   
1c510 20 20 20 20 20 20 20 75 72 6c 20 3d 20 67 65 74         url = get
1c520 41 74 74 72 69 62 75 74 65 28 73 63 72 69 70 74  Attribute(script
1c530 2c 20 27 73 72 63 27 29 20 7c 7c 20 67 65 74 41  , 'src') || getA
1c540 74 74 72 69 62 75 74 65 28 73 63 72 69 70 74 2c  ttribute(script,
1c550 20 27 64 61 74 61 2d 73 72 63 27 29 3b 0a 0a 20   'data-src');.. 
1c560 20 20 20 20 20 20 20 75 72 6c 20 3f 20 47 45 54         url ? GET
1c570 28 75 72 6c 2c 20 63 6f 6d 70 69 6c 65 54 61 67  (url, compileTag
1c580 2c 20 6f 70 74 73 29 20 3a 20 63 6f 6d 70 69 6c  , opts) : compil
1c590 65 54 61 67 28 73 63 72 69 70 74 2e 69 6e 6e 65  eTag(script.inne
1c5a0 72 48 54 4d 4c 2c 20 6f 70 74 73 29 3b 0a 20 20  rHTML, opts);.  
1c5b0 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 7d 0a      }.    }.  }.
1c5c0 0a 20 20 76 61 72 20 70 61 72 73 65 72 73 24 31  .  var parsers$1
1c5d0 20 3d 20 63 6f 6d 70 69 6c 65 72 2e 70 61 72 73   = compiler.pars
1c5e0 65 72 73 3b 0a 0a 20 20 2f 2a 0a 20 20 20 20 43  ers;..  /*.    C
1c5f0 6f 6d 70 69 6c 61 74 69 6f 6e 20 66 6f 72 20 74  ompilation for t
1c600 68 65 20 62 72 6f 77 73 65 72 0a 20 20 2a 2f 0a  he browser.  */.
1c610 20 20 66 75 6e 63 74 69 6f 6e 20 63 6f 6d 70 69    function compi
1c620 6c 65 24 31 20 28 61 72 67 2c 20 66 6e 2c 20 6f  le$1 (arg, fn, o
1c630 70 74 73 29 20 7b 0a 0a 20 20 20 20 69 66 20 28  pts) {..    if (
1c640 74 79 70 65 6f 66 20 61 72 67 20 3d 3d 3d 20 54  typeof arg === T
1c650 5f 53 54 52 49 4e 47 29 20 7b 0a 0a 20 20 20 20  _STRING) {..    
1c660 20 20 2f 2f 20 32 6e 64 20 70 61 72 61 6d 65 74    // 2nd paramet
1c670 65 72 20 69 73 20 6f 70 74 69 6f 6e 61 6c 2c 20  er is optional, 
1c680 62 75 74 20 63 61 6e 20 62 65 20 6e 75 6c 6c 0a  but can be null.
1c690 20 20 20 20 20 20 69 66 20 28 69 73 4f 62 6a 65        if (isObje
1c6a0 63 74 28 66 6e 29 29 20 7b 0a 20 20 20 20 20 20  ct(fn)) {.      
1c6b0 20 20 6f 70 74 73 20 3d 20 66 6e 3b 0a 20 20 20    opts = fn;.   
1c6c0 20 20 20 20 20 66 6e 20 3d 20 66 61 6c 73 65 3b       fn = false;
1c6d0 0a 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20  .      }..      
1c6e0 2f 2f 20 60 72 69 6f 74 2e 63 6f 6d 70 69 6c 65  // `riot.compile
1c6f0 28 74 61 67 20 5b 2c 20 63 61 6c 6c 62 61 63 6b  (tag [, callback
1c700 20 7c 20 74 72 75 65 5d 5b 2c 20 6f 70 74 69 6f   | true][, optio
1c710 6e 73 5d 29 60 0a 20 20 20 20 20 20 69 66 20 28  ns])`.      if (
1c720 2f 5e 5c 73 2a 3c 2f 6d 2e 74 65 73 74 28 61 72  /^\s*</m.test(ar
1c730 67 29 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61  g)) {.        va
1c740 72 20 6a 73 20 3d 20 63 6f 6d 70 69 6c 65 72 2e  r js = compiler.
1c750 63 6f 6d 70 69 6c 65 28 61 72 67 2c 20 6f 70 74  compile(arg, opt
1c760 73 29 3b 0a 20 20 20 20 20 20 20 20 69 66 20 28  s);.        if (
1c770 66 6e 20 21 3d 3d 20 74 72 75 65 29 20 7b 20 67  fn !== true) { g
1c780 6c 6f 62 61 6c 45 76 61 6c 28 6a 73 29 3b 20 7d  lobalEval(js); }
1c790 0a 20 20 20 20 20 20 20 20 69 66 20 28 69 73 46  .        if (isF
1c7a0 75 6e 63 74 69 6f 6e 28 66 6e 29 29 20 7b 20 66  unction(fn)) { f
1c7b0 6e 28 6a 73 2c 20 61 72 67 2c 20 6f 70 74 73 29  n(js, arg, opts)
1c7c0 3b 20 7d 0a 20 20 20 20 20 20 20 20 72 65 74 75  ; }.        retu
1c7d0 72 6e 20 6a 73 0a 20 20 20 20 20 20 7d 0a 0a 20  rn js.      }.. 
1c7e0 20 20 20 20 20 2f 2f 20 60 72 69 6f 74 2e 63 6f       // `riot.co
1c7f0 6d 70 69 6c 65 28 75 72 6c 20 5b 2c 20 63 61 6c  mpile(url [, cal
1c800 6c 62 61 63 6b 5d 5b 2c 20 6f 70 74 69 6f 6e 73  lback][, options
1c810 5d 29 60 0a 20 20 20 20 20 20 47 45 54 28 61 72  ])`.      GET(ar
1c820 67 2c 20 66 75 6e 63 74 69 6f 6e 20 28 73 74 72  g, function (str
1c830 2c 20 6f 70 74 73 2c 20 75 72 6c 29 20 7b 0a 20  , opts, url) {. 
1c840 20 20 20 20 20 20 20 76 61 72 20 6a 73 20 3d 20         var js = 
1c850 63 6f 6d 70 69 6c 65 72 2e 63 6f 6d 70 69 6c 65  compiler.compile
1c860 28 73 74 72 2c 20 6f 70 74 73 2c 20 75 72 6c 29  (str, opts, url)
1c870 3b 0a 20 20 20 20 20 20 20 20 67 6c 6f 62 61 6c  ;.        global
1c880 45 76 61 6c 28 6a 73 2c 20 75 72 6c 29 3b 0a 20  Eval(js, url);. 
1c890 20 20 20 20 20 20 20 69 66 20 28 66 6e 29 20 7b         if (fn) {
1c8a0 20 66 6e 28 6a 73 2c 20 73 74 72 2c 20 6f 70 74   fn(js, str, opt
1c8b0 73 29 3b 20 7d 0a 20 20 20 20 20 20 7d 2c 20 6f  s); }.      }, o
1c8c0 70 74 73 29 3b 0a 0a 20 20 20 20 7d 20 65 6c 73  pts);..    } els
1c8d0 65 20 69 66 20 28 69 73 41 72 72 61 79 28 61 72  e if (isArray(ar
1c8e0 67 29 29 20 7b 0a 20 20 20 20 20 20 76 61 72 20  g)) {.      var 
1c8f0 69 20 3d 20 61 72 67 2e 6c 65 6e 67 74 68 3b 0a  i = arg.length;.
1c900 20 20 20 20 20 20 2f 2f 20 60 72 69 6f 74 2e 63        // `riot.c
1c910 6f 6d 70 69 6c 65 28 5b 75 72 6c 73 4c 69 73 74  ompile([urlsList
1c920 5d 20 5b 2c 20 63 61 6c 6c 62 61 63 6b 5d 5b 2c  ] [, callback][,
1c930 20 6f 70 74 69 6f 6e 73 5d 29 60 0a 20 20 20 20   options])`.    
1c940 20 20 61 72 67 2e 66 6f 72 45 61 63 68 28 66 75    arg.forEach(fu
1c950 6e 63 74 69 6f 6e 28 73 74 72 29 20 7b 0a 20 20  nction(str) {.  
1c960 20 20 20 20 20 20 47 45 54 28 73 74 72 2c 20 66        GET(str, f
1c970 75 6e 63 74 69 6f 6e 20 28 73 74 72 2c 20 6f 70  unction (str, op
1c980 74 73 2c 20 75 72 6c 29 20 7b 0a 20 20 20 20 20  ts, url) {.     
1c990 20 20 20 20 20 76 61 72 20 6a 73 20 3d 20 63 6f       var js = co
1c9a0 6d 70 69 6c 65 72 2e 63 6f 6d 70 69 6c 65 28 73  mpiler.compile(s
1c9b0 74 72 2c 20 6f 70 74 73 2c 20 75 72 6c 29 3b 0a  tr, opts, url);.
1c9c0 20 20 20 20 20 20 20 20 20 20 67 6c 6f 62 61 6c            global
1c9d0 45 76 61 6c 28 6a 73 2c 20 75 72 6c 29 3b 0a 20  Eval(js, url);. 
1c9e0 20 20 20 20 20 20 20 20 20 69 20 2d 2d 3b 0a 20           i --;. 
1c9f0 20 20 20 20 20 20 20 20 20 69 66 20 28 21 69 20           if (!i 
1ca00 26 26 20 66 6e 29 20 7b 20 66 6e 28 6a 73 2c 20  && fn) { fn(js, 
1ca10 73 74 72 2c 20 6f 70 74 73 29 3b 20 7d 0a 20 20  str, opts); }.  
1ca20 20 20 20 20 20 20 7d 2c 20 6f 70 74 73 29 3b 0a        }, opts);.
1ca30 20 20 20 20 20 20 7d 29 3b 0a 20 20 20 20 7d 20        });.    } 
1ca40 65 6c 73 65 20 7b 0a 0a 20 20 20 20 20 20 2f 2f  else {..      //
1ca50 20 60 72 69 6f 74 2e 63 6f 6d 70 69 6c 65 28 5b   `riot.compile([
1ca60 63 61 6c 6c 62 61 63 6b 5d 5b 2c 20 6f 70 74 69  callback][, opti
1ca70 6f 6e 73 5d 29 60 0a 20 20 20 20 20 20 69 66 20  ons])`.      if 
1ca80 28 69 73 46 75 6e 63 74 69 6f 6e 28 61 72 67 29  (isFunction(arg)
1ca90 29 20 7b 0a 20 20 20 20 20 20 20 20 6f 70 74 73  ) {.        opts
1caa0 20 3d 20 66 6e 3b 0a 20 20 20 20 20 20 20 20 66   = fn;.        f
1cab0 6e 20 3d 20 61 72 67 3b 0a 20 20 20 20 20 20 7d  n = arg;.      }
1cac0 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20   else {.        
1cad0 6f 70 74 73 20 3d 20 61 72 67 3b 0a 20 20 20 20  opts = arg;.    
1cae0 20 20 20 20 66 6e 20 3d 20 75 6e 64 65 66 69 6e      fn = undefin
1caf0 65 64 3b 0a 20 20 20 20 20 20 7d 0a 0a 20 20 20  ed;.      }..   
1cb00 20 20 20 69 66 20 28 72 65 61 64 79 29 20 7b 0a     if (ready) {.
1cb10 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
1cb20 6e 20 26 26 20 66 6e 28 29 0a 20 20 20 20 20 20  n && fn().      
1cb30 7d 0a 0a 20 20 20 20 20 20 69 66 20 28 70 72 6f  }..      if (pro
1cb40 6d 69 73 65 29 20 7b 0a 20 20 20 20 20 20 20 20  mise) {.        
1cb50 69 66 20 28 66 6e 29 20 7b 20 70 72 6f 6d 69 73  if (fn) { promis
1cb60 65 2e 6f 6e 28 27 72 65 61 64 79 27 2c 20 66 6e  e.on('ready', fn
1cb70 29 3b 20 7d 0a 0a 20 20 20 20 20 20 7d 20 65 6c  ); }..      } el
1cb80 73 65 20 7b 0a 20 20 20 20 20 20 20 20 70 72 6f  se {.        pro
1cb90 6d 69 73 65 20 3d 20 6f 62 73 65 72 76 61 62 6c  mise = observabl
1cba0 65 28 29 3b 0a 20 20 20 20 20 20 20 20 63 6f 6d  e();.        com
1cbb0 70 69 6c 65 53 63 72 69 70 74 73 28 66 6e 2c 20  pileScripts(fn, 
1cbc0 6f 70 74 73 29 3b 0a 20 20 20 20 20 20 7d 0a 20  opts);.      }. 
1cbd0 20 20 20 7d 0a 20 20 7d 0a 0a 20 20 2f 2f 20 69     }.  }..  // i
1cbe0 74 20 63 61 6e 20 62 65 20 72 65 77 72 69 74 74  t can be rewritt
1cbf0 65 6e 20 62 79 20 74 68 65 20 75 73 65 72 20 74  en by the user t
1cc00 6f 20 68 61 6e 64 6c 65 20 61 6c 6c 20 74 68 65  o handle all the
1cc10 20 63 6f 6d 70 69 6c 65 72 20 65 72 72 6f 72 73   compiler errors
1cc20 0a 20 20 63 6f 6d 70 69 6c 65 24 31 2e 65 72 72  .  compile$1.err
1cc30 6f 72 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 65  or = function (e
1cc40 29 20 7b 0a 20 20 20 20 74 68 72 6f 77 20 6e 65  ) {.    throw ne
1cc50 77 20 45 72 72 6f 72 28 65 29 0a 20 20 7d 3b 0a  w Error(e).  };.
1cc60 0a 20 20 66 75 6e 63 74 69 6f 6e 20 6d 6f 75 6e  .  function moun
1cc70 74 24 33 28 29 20 7b 0a 20 20 20 20 76 61 72 20  t$3() {.    var 
1cc80 61 72 67 73 20 3d 20 5b 5d 2c 20 6c 65 6e 20 3d  args = [], len =
1cc90 20 61 72 67 75 6d 65 6e 74 73 2e 6c 65 6e 67 74   arguments.lengt
1cca0 68 3b 0a 20 20 20 20 77 68 69 6c 65 20 28 20 6c  h;.    while ( l
1ccb0 65 6e 2d 2d 20 29 20 61 72 67 73 5b 20 6c 65 6e  en-- ) args[ len
1ccc0 20 5d 20 3d 20 61 72 67 75 6d 65 6e 74 73 5b 20   ] = arguments[ 
1ccd0 6c 65 6e 20 5d 3b 0a 0a 20 20 20 20 76 61 72 20  len ];..    var 
1cce0 72 65 74 3b 0a 20 20 20 20 63 6f 6d 70 69 6c 65  ret;.    compile
1ccf0 24 31 28 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b  $1(function () {
1cd00 20 72 65 74 20 3d 20 6d 6f 75 6e 74 24 32 2e 61   ret = mount$2.a
1cd10 70 70 6c 79 28 72 69 6f 74 24 32 2c 20 61 72 67  pply(riot$2, arg
1cd20 73 29 3b 20 7d 29 3b 0a 20 20 20 20 72 65 74 75  s); });.    retu
1cd30 72 6e 20 72 65 74 0a 20 20 7d 0a 0a 20 20 76 61  rn ret.  }..  va
1cd40 72 20 72 69 6f 74 5f 63 6f 6d 70 69 6c 65 72 20  r riot_compiler 
1cd50 3d 20 65 78 74 65 6e 64 28 7b 7d 2c 20 72 69 6f  = extend({}, rio
1cd60 74 24 32 2c 20 7b 0a 20 20 20 20 6d 6f 75 6e 74  t$2, {.    mount
1cd70 3a 20 6d 6f 75 6e 74 24 33 2c 0a 20 20 20 20 63  : mount$3,.    c
1cd80 6f 6d 70 69 6c 65 3a 20 63 6f 6d 70 69 6c 65 24  ompile: compile$
1cd90 31 2c 0a 20 20 20 20 70 61 72 73 65 72 73 3a 20  1,.    parsers: 
1cda0 70 61 72 73 65 72 73 24 31 0a 20 20 7d 29 3b 0a  parsers$1.  });.
1cdb0 0a 20 20 72 65 74 75 72 6e 20 72 69 6f 74 5f 63  .  return riot_c
1cdc0 6f 6d 70 69 6c 65 72 3b 0a 0a 7d 29 29 29 3b 0a  ompiler;..})));.