diff --git a/.npmignore b/.npmignore index 8531b1ac..f333da11 100644 --- a/.npmignore +++ b/.npmignore @@ -9,3 +9,5 @@ _config.yml .DS_Store .gitignore .travis.yml +majinbuu.js +hyperhtml.js \ No newline at end of file diff --git a/coverage/coverage.json b/coverage/coverage.json index 4881ff04..18fb0191 100644 --- a/coverage/coverage.json +++ b/coverage/coverage.json @@ -1 +1 @@ -{"/home/webreflection/code/hyperHTML/hyperhtml.js":{"path":"/home/webreflection/code/hyperHTML/hyperhtml.js","s":{"1":2,"2":2,"3":2,"4":1,"5":20,"6":2,"7":28,"8":32,"9":32,"10":32,"11":32,"12":2,"13":1,"14":208,"15":2,"16":2,"17":2,"18":2,"19":2,"20":1,"21":62,"22":2,"23":1,"24":2,"25":6,"26":6,"27":6,"28":4,"29":6,"30":6,"31":6,"32":11,"33":6,"34":2,"35":2,"36":2,"37":2,"38":2,"39":2,"40":2,"41":2,"42":2,"43":2,"44":2,"45":1,"46":48,"47":48,"48":34,"49":22,"50":12,"51":36,"52":1,"53":16,"54":8,"55":8,"56":2,"57":2,"58":6,"59":6,"60":6,"61":4,"62":6,"63":2,"64":2,"65":1,"66":88,"67":88,"68":26,"69":26,"70":1,"71":148,"72":148,"73":1,"74":18,"75":18,"76":2,"77":2,"78":2,"79":16,"80":16,"81":1,"82":278,"83":278,"84":154,"85":154,"86":278,"87":278,"88":1,"89":48,"90":48,"91":12,"92":48,"93":24,"94":48,"95":30,"96":18,"97":4,"98":18,"99":18,"100":16,"101":20,"102":16,"103":16,"104":14,"105":4,"106":4,"107":10,"108":48,"109":36,"110":36,"111":34,"112":4,"113":2,"114":2,"115":30,"116":30,"117":2,"118":2,"119":1,"120":106,"121":106,"122":106,"123":288,"124":120,"125":56,"126":50,"127":50,"128":64,"129":22,"130":8,"131":8,"132":42,"133":42,"134":42,"135":42,"136":120,"137":4,"138":2,"139":2,"140":4,"141":164,"142":6,"143":6,"144":6,"145":158,"146":2,"147":158,"148":158,"149":74,"150":74,"151":2,"152":2,"153":72,"154":24,"155":24,"156":10,"157":10,"158":10,"159":12,"160":10,"161":8,"162":10,"163":10,"164":36,"165":8,"166":36,"167":4,"168":4,"169":32,"170":64,"171":4,"172":34,"173":26,"174":26,"175":18,"176":8,"177":34,"178":84,"179":24,"180":16,"181":8,"182":60,"183":4,"184":56,"185":10,"186":46,"187":4,"188":42,"189":4,"190":38,"191":28,"192":28,"193":18,"194":10,"195":10,"196":10,"197":10,"198":10,"199":4,"200":6,"201":158,"202":1,"203":118,"204":56,"205":56,"206":48,"207":48,"208":1,"209":228,"210":312,"211":312,"212":118,"213":118,"214":118,"215":66,"216":64,"217":64,"218":24,"219":24,"220":40,"221":66,"222":128,"223":4,"224":4,"225":128,"226":2,"227":2,"228":2,"229":2,"230":2,"231":2,"232":2,"233":2,"234":2,"235":1,"236":1,"237":203,"238":2,"239":2,"240":2,"241":1,"242":4,"243":1,"244":2,"245":1,"246":62,"247":90,"248":90,"249":66,"250":62,"251":1,"252":150,"253":1,"254":120,"255":1,"256":118,"257":118,"258":118,"259":118,"260":118,"261":118,"262":56,"263":56,"264":118,"265":1,"266":1,"267":1,"268":117,"269":117,"270":62,"271":55,"272":118,"273":1,"274":2,"275":2,"276":2,"277":1,"278":1,"279":1,"280":1,"281":1,"282":1,"283":2,"284":1,"285":46,"286":1,"287":46,"288":58,"289":8,"290":8,"291":6,"292":8,"293":8,"294":12,"295":12,"296":12,"297":12,"298":12,"299":12,"300":12,"301":12,"302":2,"303":2,"304":4,"305":10,"306":10,"307":12,"308":12,"309":2,"310":10,"311":12,"312":10,"313":12,"314":38,"315":38,"316":38,"317":46,"318":1,"319":4,"320":4,"321":4,"322":1,"323":12,"324":10,"325":2,"326":1,"327":46,"328":46,"329":4,"330":4,"331":2,"332":46,"333":1,"334":30,"335":1,"336":10,"337":10,"338":2,"339":8,"340":2,"341":6,"342":2,"343":4,"344":1,"345":10,"346":10,"347":8,"348":1,"349":84,"350":1,"351":96,"352":1,"353":6,"354":6,"355":42,"356":18,"357":1,"358":68,"359":68,"360":1,"361":154,"362":24,"363":1,"364":14,"365":14,"366":4,"367":4,"368":1,"369":154,"370":154,"371":54,"372":54,"373":48,"374":48,"375":52,"376":52,"377":154,"378":1,"379":16,"380":16,"381":12,"382":12,"383":12,"384":12,"385":12,"386":12,"387":12,"388":1,"389":116,"390":2,"391":2,"392":162,"393":89,"394":2,"395":1,"396":1,"397":77,"398":55,"399":2,"400":1,"401":1,"402":1,"403":97,"404":2,"405":41,"406":2,"407":2,"408":2,"409":1,"410":203,"411":203,"412":2,"413":76,"414":20,"415":30,"416":2,"417":143,"418":363,"419":363,"420":205,"421":143,"422":82,"423":2,"424":81,"425":111,"426":111,"427":61,"428":61,"429":50,"430":50,"431":81,"432":81,"433":111,"434":81,"435":2,"436":2,"437":2,"438":38,"439":2,"440":48,"441":2,"442":7,"443":8,"444":6,"445":1,"446":7,"447":2,"448":6,"449":6,"450":4,"451":2,"452":6,"453":2,"454":2,"455":2,"456":2,"457":2,"458":2,"459":2,"460":2,"461":204,"462":143,"463":204,"464":61,"465":1,"466":110,"467":110,"468":110,"469":110,"470":110,"471":110,"472":1,"473":116,"474":116,"475":116,"476":28,"477":28,"478":40,"479":40,"480":40,"481":48,"482":48,"483":48,"484":116,"485":92,"486":116,"487":1,"488":122,"489":108,"490":108,"491":108,"492":10,"493":10,"494":108,"495":122,"496":122,"497":1,"498":32,"499":46,"500":46,"501":46,"502":32,"503":32,"504":1,"505":278,"506":296,"507":1,"508":154,"509":154,"510":154,"511":154,"512":122,"513":122,"514":122,"515":32,"516":154,"517":1,"518":60,"519":1,"520":60,"521":60,"522":60,"523":1,"524":90,"525":62,"526":62,"527":8,"528":62,"529":90,"530":60,"531":14,"532":14,"533":14,"534":10,"535":10,"536":10,"537":14,"538":10,"539":2,"540":2,"541":2,"542":8,"543":2,"544":8,"545":14,"546":14,"547":14,"548":76,"549":76,"550":52,"551":52,"552":52,"553":76,"554":76,"555":1,"556":46,"557":46,"558":46,"559":46,"560":12,"561":12,"562":46,"563":24,"564":24,"565":46,"566":2,"567":2,"568":2},"b":{"1":[14,6],"2":[2,12],"3":[2,10],"4":[2,8],"5":[4,4],"6":[2,4],"7":[14,48],"8":[6,42],"9":[6,2],"10":[42,16],"11":[6,4,4],"12":[2,4],"13":[22,12],"14":[34,28],"15":[14,22],"16":[8,6,2],"17":[2,6],"18":[4,2],"19":[2,16],"20":[154,124],"21":[278,162],"22":[48,46,20],"23":[14,34],"24":[48,34],"25":[12,36],"26":[48,14],"27":[24,24],"28":[14,34],"29":[18,12],"30":[4,14],"31":[16,2],"32":[10,24],"33":[16,4],"34":[14,2],"35":[4,10],"36":[36,12],"37":[34,2],"38":[4,30],"39":[2,2],"40":[2,28],"41":[106,118,120,4,160,164,158],"42":[56,64],"43":[50,6],"44":[22,42],"45":[64,24],"46":[8,14],"47":[2,2],"48":[6,158],"49":[2,156],"50":[74,84],"51":[2,72],"52":[74,4],"53":[16,24,24,10,36,34],"54":[8,2],"55":[8,2],"56":[8,2],"57":[8,28],"58":[4,32],"59":[4,60],"60":[26,8],"61":[18,8],"62":[24,60],"63":[16,8],"64":[2,6],"65":[4,56],"66":[10,46],"67":[4,42],"68":[4,38],"69":[28,10],"70":[18,10],"71":[4,6],"72":[48,8],"73":[118,66,128],"74":[64,2],"75":[24,40],"76":[64,50,18],"77":[4,124],"78":[128,4],"79":[2,1,1],"80":[1,1],"81":[2,2],"82":[66,24],"83":[90,38],"84":[54,8],"85":[2,118],"86":[56,62],"87":[1,117],"88":[62,55],"89":[1,1],"90":[2,1],"91":[8,12,38],"92":[6,2],"93":[8,4],"94":[10,2],"95":[2,4,10],"96":[2,10],"97":[10,2],"98":[38,8],"99":[4,4],"100":[4,4],"101":[10,2],"102":[4,42],"103":[46,46],"104":[2,2],"105":[46,46],"106":[2,8],"107":[2,6],"108":[2,4],"109":[8,2],"110":[96,96],"111":[42,14],"112":[92,64,40],"113":[4,10],"114":[14,10],"115":[54,48,52],"116":[12,4],"117":[1,1],"118":[1,1],"119":[2,1],"120":[2,1],"121":[203,55],"122":[1,1],"123":[1,1],"124":[2,1],"125":[205,158],"126":[1,1],"127":[2,1],"128":[61,50],"129":[48,22],"130":[48,22],"131":[1,1],"132":[6,2],"133":[1,1],"134":[4,2],"135":[1,1],"136":[26,28,40,16,48],"137":[10,98],"138":[154,110],"139":[122,32],"140":[8,52],"141":[62,28],"142":[8,54],"143":[8,52],"144":[10,4],"145":[10,4],"146":[2,8],"147":[2,6],"148":[52,24],"149":[12,34],"150":[12,12],"151":[24,22],"152":[46,26]},"f":{"1":2,"2":20,"3":28,"4":32,"5":208,"6":2,"7":2,"8":62,"9":14,"10":6,"11":6,"12":4,"13":6,"14":48,"15":16,"16":88,"17":148,"18":18,"19":278,"20":48,"21":30,"22":20,"23":48,"24":106,"25":288,"26":118,"27":228,"28":2,"29":2,"30":203,"31":4,"32":2,"33":62,"34":150,"35":120,"36":118,"37":2,"38":46,"39":46,"40":4,"41":12,"42":46,"43":30,"44":10,"45":10,"46":84,"47":96,"48":6,"49":42,"50":18,"51":68,"52":154,"53":14,"54":154,"55":16,"56":116,"57":2,"58":162,"59":89,"60":1,"61":77,"62":55,"63":1,"64":97,"65":41,"66":203,"67":76,"68":20,"69":143,"70":82,"71":81,"72":81,"73":38,"74":48,"75":7,"76":7,"77":6,"78":6,"79":2,"80":204,"81":61,"82":110,"83":116,"84":122,"85":32,"86":278,"87":154,"88":60,"89":60,"90":90,"91":14,"92":14,"93":76,"94":46},"fnMap":{"1":{"name":"(anonymous_1)","line":1,"loc":{"start":{"line":1,"column":17},"end":{"line":1,"column":43}}},"2":{"name":"hyper","line":16,"loc":{"start":{"line":16,"column":2},"end":{"line":16,"column":23}}},"3":{"name":"adopt","line":38,"loc":{"start":{"line":38,"column":16},"end":{"line":38,"column":37}}},"4":{"name":"(anonymous_4)","line":39,"loc":{"start":{"line":39,"column":11},"end":{"line":39,"column":23}}},"5":{"name":"bind","line":50,"loc":{"start":{"line":50,"column":2},"end":{"line":50,"column":25}}},"6":{"name":"define","line":53,"loc":{"start":{"line":53,"column":17},"end":{"line":53,"column":56}}},"7":{"name":"escape","line":58,"loc":{"start":{"line":58,"column":17},"end":{"line":58,"column":39}}},"8":{"name":"wire","line":65,"loc":{"start":{"line":65,"column":2},"end":{"line":65,"column":27}}},"9":{"name":"Component","line":79,"loc":{"start":{"line":79,"column":2},"end":{"line":79,"column":23}}},"10":{"name":"(anonymous_10)","line":84,"loc":{"start":{"line":84,"column":27},"end":{"line":84,"column":40}}},"11":{"name":"(anonymous_11)","line":97,"loc":{"start":{"line":97,"column":33},"end":{"line":97,"column":45}}},"12":{"name":"(anonymous_12)","line":99,"loc":{"start":{"line":99,"column":26},"end":{"line":99,"column":38}}},"13":{"name":"(anonymous_13)","line":101,"loc":{"start":{"line":101,"column":24},"end":{"line":101,"column":41}}},"14":{"name":"indexOfDifferences","line":143,"loc":{"start":{"line":143,"column":2},"end":{"line":143,"column":36}}},"15":{"name":"populateNode","line":159,"loc":{"start":{"line":159,"column":2},"end":{"line":159,"column":39}}},"16":{"name":"removeNodeList","line":181,"loc":{"start":{"line":181,"column":2},"end":{"line":181,"column":44}}},"17":{"name":"resetAndPopulate","line":190,"loc":{"start":{"line":190,"column":2},"end":{"line":190,"column":43}}},"18":{"name":"updateViaArray","line":196,"loc":{"start":{"line":196,"column":2},"end":{"line":196,"column":47}}},"19":{"name":"render","line":213,"loc":{"start":{"line":213,"column":2},"end":{"line":213,"column":28}}},"20":{"name":"setAttribute","line":230,"loc":{"start":{"line":230,"column":2},"end":{"line":230,"column":59}}},"21":{"name":"eventAttr","line":244,"loc":{"start":{"line":244,"column":6},"end":{"line":244,"column":35}}},"22":{"name":"specialAttr","line":252,"loc":{"start":{"line":252,"column":8},"end":{"line":252,"column":39}}},"23":{"name":"normalAttr","line":272,"loc":{"start":{"line":272,"column":8},"end":{"line":272,"column":38}}},"24":{"name":"setVirtualContent","line":299,"loc":{"start":{"line":299,"column":2},"end":{"line":299,"column":47}}},"25":{"name":"anyVirtual","line":302,"loc":{"start":{"line":302,"column":11},"end":{"line":302,"column":38}}},"26":{"name":"attributesSeeker","line":434,"loc":{"start":{"line":434,"column":2},"end":{"line":434,"column":48}}},"27":{"name":"hyperSeeker","line":460,"loc":{"start":{"line":460,"column":2},"end":{"line":460,"column":43}}},"28":{"name":"(anonymous_28)","line":514,"loc":{"start":{"line":514,"column":13},"end":{"line":514,"column":25}}},"29":{"name":"(anonymous_29)","line":527,"loc":{"start":{"line":527,"column":11},"end":{"line":527,"column":31}}},"30":{"name":"(anonymous_30)","line":529,"loc":{"start":{"line":529,"column":14},"end":{"line":529,"column":27}}},"31":{"name":"fnEscape","line":548,"loc":{"start":{"line":548,"column":2},"end":{"line":548,"column":23}}},"32":{"name":"asHTML","line":553,"loc":{"start":{"line":553,"column":2},"end":{"line":553,"column":24}}},"33":{"name":"createContent","line":558,"loc":{"start":{"line":558,"column":2},"end":{"line":558,"column":31}}},"34":{"name":"createDocumentFragment","line":579,"loc":{"start":{"line":579,"column":2},"end":{"line":579,"column":44}}},"35":{"name":"createFragment","line":585,"loc":{"start":{"line":585,"column":2},"end":{"line":585,"column":38}}},"36":{"name":"createHTMLFragment","line":594,"loc":{"start":{"line":594,"column":2},"end":{"line":594,"column":42}}},"37":{"name":"createSVGFragment","line":630,"loc":{"start":{"line":630,"column":2},"end":{"line":630,"column":41}}},"38":{"name":"createText","line":646,"loc":{"start":{"line":646,"column":2},"end":{"line":646,"column":34}}},"39":{"name":"discoverNode","line":652,"loc":{"start":{"line":652,"column":2},"end":{"line":652,"column":63}}},"40":{"name":"getCEClass","line":732,"loc":{"start":{"line":732,"column":2},"end":{"line":732,"column":28}}},"41":{"name":"insertBefore","line":739,"loc":{"start":{"line":739,"column":2},"end":{"line":739,"column":51}}},"42":{"name":"isSpecialAttribute","line":749,"loc":{"start":{"line":749,"column":2},"end":{"line":749,"column":42}}},"43":{"name":"emptyFragment","line":759,"loc":{"start":{"line":759,"column":2},"end":{"line":759,"column":31}}},"44":{"name":"invokeAtDistance","line":764,"loc":{"start":{"line":764,"column":2},"end":{"line":764,"column":45}}},"45":{"name":"invokeTransformer","line":778,"loc":{"start":{"line":778,"column":2},"end":{"line":778,"column":37}}},"46":{"name":"isNode_ish","line":787,"loc":{"start":{"line":787,"column":2},"end":{"line":787,"column":29}}},"47":{"name":"isPromise_ish","line":792,"loc":{"start":{"line":792,"column":2},"end":{"line":792,"column":32}}},"48":{"name":"lazyGetter","line":798,"loc":{"start":{"line":798,"column":2},"end":{"line":798,"column":32}}},"49":{"name":"(anonymous_49)","line":801,"loc":{"start":{"line":801,"column":11},"end":{"line":801,"column":23}}},"50":{"name":"(anonymous_50)","line":804,"loc":{"start":{"line":804,"column":11},"end":{"line":804,"column":28}}},"51":{"name":"noContent","line":812,"loc":{"start":{"line":812,"column":2},"end":{"line":812,"column":38}}},"52":{"name":"removeAttributeList","line":822,"loc":{"start":{"line":822,"column":2},"end":{"line":822,"column":37}}},"53":{"name":"removePreviousText","line":829,"loc":{"start":{"line":829,"column":2},"end":{"line":829,"column":48}}},"54":{"name":"setContent","line":838,"loc":{"start":{"line":838,"column":2},"end":{"line":838,"column":66}}},"55":{"name":"updateVirtualNodes","line":856,"loc":{"start":{"line":856,"column":2},"end":{"line":856,"column":55}}},"56":{"name":"Path","line":870,"loc":{"start":{"line":870,"column":2},"end":{"line":870,"column":34}}},"57":{"name":"(anonymous_57)","line":880,"loc":{"start":{"line":880,"column":6},"end":{"line":880,"column":18}}},"58":{"name":"(anonymous_58)","line":882,"loc":{"start":{"line":882,"column":15},"end":{"line":882,"column":30}}},"59":{"name":"(anonymous_59)","line":883,"loc":{"start":{"line":883,"column":15},"end":{"line":883,"column":37}}},"60":{"name":"(anonymous_60)","line":895,"loc":{"start":{"line":895,"column":6},"end":{"line":895,"column":18}}},"61":{"name":"(anonymous_61)","line":898,"loc":{"start":{"line":898,"column":15},"end":{"line":898,"column":30}}},"62":{"name":"(anonymous_62)","line":904,"loc":{"start":{"line":904,"column":15},"end":{"line":904,"column":37}}},"63":{"name":"(anonymous_63)","line":915,"loc":{"start":{"line":915,"column":17},"end":{"line":915,"column":29}}},"64":{"name":"(anonymous_64)","line":920,"loc":{"start":{"line":920,"column":25},"end":{"line":920,"column":38}}},"65":{"name":"(anonymous_65)","line":927,"loc":{"start":{"line":927,"column":14},"end":{"line":927,"column":26}}},"66":{"name":"unique","line":941,"loc":{"start":{"line":941,"column":2},"end":{"line":941,"column":28}}},"67":{"name":"(anonymous_67)","line":949,"loc":{"start":{"line":949,"column":6},"end":{"line":949,"column":34}}},"68":{"name":"appendNodes","line":952,"loc":{"start":{"line":952,"column":6},"end":{"line":952,"column":45}}},"69":{"name":"(anonymous_69)","line":964,"loc":{"start":{"line":964,"column":6},"end":{"line":964,"column":22}}},"70":{"name":"(anonymous_70)","line":978,"loc":{"start":{"line":978,"column":6},"end":{"line":978,"column":22}}},"71":{"name":"(anonymous_71)","line":983,"loc":{"start":{"line":983,"column":6},"end":{"line":983,"column":34}}},"72":{"name":"(anonymous_72)","line":997,"loc":{"start":{"line":997,"column":6},"end":{"line":997,"column":34}}},"73":{"name":"(anonymous_73)","line":1007,"loc":{"start":{"line":1007,"column":17},"end":{"line":1007,"column":43}}},"74":{"name":"(anonymous_74)","line":1011,"loc":{"start":{"line":1011,"column":26},"end":{"line":1011,"column":48}}},"75":{"name":"(anonymous_75)","line":1017,"loc":{"start":{"line":1017,"column":4},"end":{"line":1017,"column":20}}},"76":{"name":"(anonymous_76)","line":1023,"loc":{"start":{"line":1023,"column":4},"end":{"line":1023,"column":20}}},"77":{"name":"(anonymous_77)","line":1026,"loc":{"start":{"line":1026,"column":4},"end":{"line":1026,"column":20}}},"78":{"name":"(anonymous_78)","line":1032,"loc":{"start":{"line":1032,"column":4},"end":{"line":1032,"column":20}}},"79":{"name":"(anonymous_79)","line":1048,"loc":{"start":{"line":1048,"column":19},"end":{"line":1048,"column":31}}},"80":{"name":"(anonymous_80)","line":1052,"loc":{"start":{"line":1052,"column":6},"end":{"line":1052,"column":22}}},"81":{"name":"(anonymous_81)","line":1063,"loc":{"start":{"line":1063,"column":6},"end":{"line":1063,"column":26}}},"82":{"name":"createTemplate","line":1074,"loc":{"start":{"line":1074,"column":2},"end":{"line":1074,"column":36}}},"83":{"name":"createPath","line":1086,"loc":{"start":{"line":1086,"column":2},"end":{"line":1086,"column":28}}},"84":{"name":"createUpdates","line":1120,"loc":{"start":{"line":1120,"column":2},"end":{"line":1120,"column":42}}},"85":{"name":"discoverUpdates","line":1141,"loc":{"start":{"line":1141,"column":2},"end":{"line":1141,"column":44}}},"86":{"name":"update","line":1163,"loc":{"start":{"line":1163,"column":2},"end":{"line":1163,"column":20}}},"87":{"name":"upgrade","line":1171,"loc":{"start":{"line":1171,"column":2},"end":{"line":1171,"column":29}}},"88":{"name":"wireContent","line":1191,"loc":{"start":{"line":1191,"column":2},"end":{"line":1191,"column":29}}},"89":{"name":"before","line":1194,"loc":{"start":{"line":1194,"column":4},"end":{"line":1194,"column":30}}},"90":{"name":"after","line":1202,"loc":{"start":{"line":1202,"column":4},"end":{"line":1202,"column":21}}},"91":{"name":"adopt","line":1214,"loc":{"start":{"line":1214,"column":6},"end":{"line":1214,"column":30}}},"92":{"name":"(anonymous_92)","line":1220,"loc":{"start":{"line":1220,"column":20},"end":{"line":1220,"column":55}}},"93":{"name":"update","line":1241,"loc":{"start":{"line":1241,"column":6},"end":{"line":1241,"column":31}}},"94":{"name":"wireWeakly","line":1254,"loc":{"start":{"line":1254,"column":2},"end":{"line":1254,"column":33}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1274,"column":13}},"2":{"start":{"line":11,"column":2},"end":{"line":11,"column":34}},"3":{"start":{"line":14,"column":2},"end":{"line":14,"column":22}},"4":{"start":{"line":16,"column":2},"end":{"line":33,"column":3}},"5":{"start":{"line":17,"column":4},"end":{"line":32,"column":31}},"6":{"start":{"line":38,"column":2},"end":{"line":45,"column":4}},"7":{"start":{"line":39,"column":4},"end":{"line":44,"column":6}},"8":{"start":{"line":40,"column":6},"end":{"line":40,"column":26}},"9":{"start":{"line":41,"column":6},"end":{"line":41,"column":36}},"10":{"start":{"line":42,"column":6},"end":{"line":42,"column":25}},"11":{"start":{"line":43,"column":6},"end":{"line":43,"column":18}},"12":{"start":{"line":49,"column":2},"end":{"line":49,"column":20}},"13":{"start":{"line":50,"column":2},"end":{"line":50,"column":57}},"14":{"start":{"line":50,"column":27},"end":{"line":50,"column":55}},"15":{"start":{"line":53,"column":2},"end":{"line":55,"column":4}},"16":{"start":{"line":54,"column":4},"end":{"line":54,"column":41}},"17":{"start":{"line":58,"column":2},"end":{"line":60,"column":4}},"18":{"start":{"line":59,"column":4},"end":{"line":59,"column":46}},"19":{"start":{"line":64,"column":2},"end":{"line":64,"column":20}},"20":{"start":{"line":65,"column":2},"end":{"line":72,"column":3}},"21":{"start":{"line":66,"column":4},"end":{"line":71,"column":8}},"22":{"start":{"line":78,"column":2},"end":{"line":78,"column":30}},"23":{"start":{"line":79,"column":2},"end":{"line":79,"column":25}},"24":{"start":{"line":80,"column":2},"end":{"line":111,"column":4}},"25":{"start":{"line":86,"column":8},"end":{"line":86,"column":33}},"26":{"start":{"line":87,"column":8},"end":{"line":90,"column":13}},"27":{"start":{"line":97,"column":47},"end":{"line":97,"column":72}},"28":{"start":{"line":99,"column":40},"end":{"line":99,"column":50}},"29":{"start":{"line":102,"column":8},"end":{"line":102,"column":32}},"30":{"start":{"line":103,"column":8},"end":{"line":103,"column":84}},"31":{"start":{"line":104,"column":8},"end":{"line":104,"column":58}},"32":{"start":{"line":104,"column":32},"end":{"line":104,"column":58}},"33":{"start":{"line":105,"column":8},"end":{"line":105,"column":22}},"34":{"start":{"line":122,"column":2},"end":{"line":122,"column":23}},"35":{"start":{"line":123,"column":2},"end":{"line":123,"column":25}},"36":{"start":{"line":124,"column":2},"end":{"line":124,"column":20}},"37":{"start":{"line":125,"column":2},"end":{"line":125,"column":23}},"38":{"start":{"line":126,"column":2},"end":{"line":126,"column":34}},"39":{"start":{"line":129,"column":2},"end":{"line":129,"column":44}},"40":{"start":{"line":130,"column":2},"end":{"line":130,"column":51}},"41":{"start":{"line":132,"column":2},"end":{"line":132,"column":40}},"42":{"start":{"line":133,"column":2},"end":{"line":133,"column":32}},"43":{"start":{"line":134,"column":2},"end":{"line":134,"column":61}},"44":{"start":{"line":135,"column":2},"end":{"line":135,"column":34}},"45":{"start":{"line":143,"column":2},"end":{"line":154,"column":3}},"46":{"start":{"line":144,"column":4},"end":{"line":148,"column":5}},"47":{"start":{"line":149,"column":4},"end":{"line":152,"column":5}},"48":{"start":{"line":150,"column":6},"end":{"line":151,"column":20}},"49":{"start":{"line":150,"column":40},"end":{"line":150,"column":44}},"50":{"start":{"line":151,"column":11},"end":{"line":151,"column":20}},"51":{"start":{"line":153,"column":4},"end":{"line":153,"column":34}},"52":{"start":{"line":159,"column":2},"end":{"line":178,"column":3}},"53":{"start":{"line":160,"column":4},"end":{"line":177,"column":5}},"54":{"start":{"line":162,"column":8},"end":{"line":162,"column":43}},"55":{"start":{"line":163,"column":8},"end":{"line":166,"column":9}},"56":{"start":{"line":164,"column":10},"end":{"line":164,"column":40}},"57":{"start":{"line":165,"column":10},"end":{"line":165,"column":16}},"58":{"start":{"line":167,"column":8},"end":{"line":167,"column":40}},"59":{"start":{"line":168,"column":8},"end":{"line":168,"column":14}},"60":{"start":{"line":170,"column":8},"end":{"line":172,"column":9}},"61":{"start":{"line":171,"column":10},"end":{"line":171,"column":42}},"62":{"start":{"line":173,"column":8},"end":{"line":173,"column":14}},"63":{"start":{"line":175,"column":8},"end":{"line":175,"column":47}},"64":{"start":{"line":176,"column":8},"end":{"line":176,"column":14}},"65":{"start":{"line":181,"column":2},"end":{"line":187,"column":3}},"66":{"start":{"line":182,"column":4},"end":{"line":182,"column":36}},"67":{"start":{"line":183,"column":4},"end":{"line":186,"column":5}},"68":{"start":{"line":184,"column":6},"end":{"line":184,"column":27}},"69":{"start":{"line":185,"column":6},"end":{"line":185,"column":42}},"70":{"start":{"line":190,"column":2},"end":{"line":193,"column":3}},"71":{"start":{"line":191,"column":4},"end":{"line":191,"column":28}},"72":{"start":{"line":192,"column":4},"end":{"line":192,"column":30}},"73":{"start":{"line":196,"column":2},"end":{"line":206,"column":3}},"74":{"start":{"line":197,"column":4},"end":{"line":197,"column":39}},"75":{"start":{"line":198,"column":4},"end":{"line":205,"column":5}},"76":{"start":{"line":199,"column":6},"end":{"line":199,"column":41}},"77":{"start":{"line":200,"column":6},"end":{"line":200,"column":49}},"78":{"start":{"line":201,"column":6},"end":{"line":201,"column":33}},"79":{"start":{"line":203,"column":6},"end":{"line":203,"column":40}},"80":{"start":{"line":204,"column":6},"end":{"line":204,"column":39}},"81":{"start":{"line":213,"column":2},"end":{"line":224,"column":3}},"82":{"start":{"line":214,"column":4},"end":{"line":214,"column":33}},"83":{"start":{"line":215,"column":4},"end":{"line":221,"column":5}},"84":{"start":{"line":219,"column":6},"end":{"line":219,"column":45}},"85":{"start":{"line":220,"column":6},"end":{"line":220,"column":30}},"86":{"start":{"line":222,"column":4},"end":{"line":222,"column":43}},"87":{"start":{"line":223,"column":4},"end":{"line":223,"column":16}},"88":{"start":{"line":230,"column":2},"end":{"line":295,"column":3}},"89":{"start":{"line":231,"column":4},"end":{"line":240,"column":5}},"90":{"start":{"line":241,"column":4},"end":{"line":241,"column":73}},"91":{"start":{"line":241,"column":47},"end":{"line":241,"column":73}},"92":{"start":{"line":242,"column":4},"end":{"line":242,"column":51}},"93":{"start":{"line":242,"column":17},"end":{"line":242,"column":51}},"94":{"start":{"line":243,"column":4},"end":{"line":294,"column":8}},"95":{"start":{"line":245,"column":8},"end":{"line":249,"column":9}},"96":{"start":{"line":246,"column":10},"end":{"line":246,"column":72}},"97":{"start":{"line":246,"column":24},"end":{"line":246,"column":72}},"98":{"start":{"line":247,"column":10},"end":{"line":247,"column":30}},"99":{"start":{"line":248,"column":10},"end":{"line":248,"column":69}},"100":{"start":{"line":248,"column":24},"end":{"line":248,"column":69}},"101":{"start":{"line":253,"column":10},"end":{"line":270,"column":11}},"102":{"start":{"line":254,"column":12},"end":{"line":254,"column":32}},"103":{"start":{"line":257,"column":12},"end":{"line":269,"column":13}},"104":{"start":{"line":261,"column":14},"end":{"line":268,"column":15}},"105":{"start":{"line":264,"column":16},"end":{"line":264,"column":34}},"106":{"start":{"line":265,"column":16},"end":{"line":265,"column":43}},"107":{"start":{"line":267,"column":16},"end":{"line":267,"column":38}},"108":{"start":{"line":273,"column":10},"end":{"line":292,"column":11}},"109":{"start":{"line":274,"column":12},"end":{"line":274,"column":32}},"110":{"start":{"line":277,"column":12},"end":{"line":291,"column":13}},"111":{"start":{"line":278,"column":14},"end":{"line":290,"column":15}},"112":{"start":{"line":279,"column":16},"end":{"line":283,"column":17}},"113":{"start":{"line":281,"column":18},"end":{"line":281,"column":33}},"114":{"start":{"line":282,"column":18},"end":{"line":282,"column":54}},"115":{"start":{"line":285,"column":16},"end":{"line":285,"column":43}},"116":{"start":{"line":286,"column":16},"end":{"line":289,"column":17}},"117":{"start":{"line":287,"column":18},"end":{"line":287,"column":34}},"118":{"start":{"line":288,"column":18},"end":{"line":288,"column":51}},"119":{"start":{"line":299,"column":2},"end":{"line":427,"column":3}},"120":{"start":{"line":300,"column":4},"end":{"line":300,"column":17}},"121":{"start":{"line":301,"column":4},"end":{"line":301,"column":34}},"122":{"start":{"line":302,"column":4},"end":{"line":426,"column":6}},"123":{"start":{"line":303,"column":6},"end":{"line":425,"column":7}},"124":{"start":{"line":307,"column":10},"end":{"line":325,"column":11}},"125":{"start":{"line":308,"column":12},"end":{"line":311,"column":13}},"126":{"start":{"line":309,"column":14},"end":{"line":309,"column":31}},"127":{"start":{"line":310,"column":14},"end":{"line":310,"column":39}},"128":{"start":{"line":312,"column":17},"end":{"line":325,"column":11}},"129":{"start":{"line":316,"column":12},"end":{"line":319,"column":13}},"130":{"start":{"line":317,"column":14},"end":{"line":317,"column":31}},"131":{"start":{"line":318,"column":14},"end":{"line":318,"column":48}},"132":{"start":{"line":321,"column":12},"end":{"line":321,"column":29}},"133":{"start":{"line":322,"column":12},"end":{"line":322,"column":42}},"134":{"start":{"line":323,"column":12},"end":{"line":323,"column":51}},"135":{"start":{"line":324,"column":12},"end":{"line":324,"column":62}},"136":{"start":{"line":326,"column":10},"end":{"line":326,"column":16}},"137":{"start":{"line":328,"column":10},"end":{"line":332,"column":11}},"138":{"start":{"line":329,"column":12},"end":{"line":329,"column":58}},"139":{"start":{"line":331,"column":12},"end":{"line":331,"column":62}},"140":{"start":{"line":333,"column":10},"end":{"line":333,"column":16}},"141":{"start":{"line":336,"column":10},"end":{"line":342,"column":11}},"142":{"start":{"line":337,"column":12},"end":{"line":337,"column":29}},"143":{"start":{"line":338,"column":12},"end":{"line":338,"column":27}},"144":{"start":{"line":339,"column":12},"end":{"line":339,"column":18}},"145":{"start":{"line":340,"column":17},"end":{"line":342,"column":11}},"146":{"start":{"line":341,"column":12},"end":{"line":341,"column":35}},"147":{"start":{"line":344,"column":10},"end":{"line":344,"column":27}},"148":{"start":{"line":345,"column":10},"end":{"line":423,"column":11}},"149":{"start":{"line":346,"column":12},"end":{"line":346,"column":38}},"150":{"start":{"line":347,"column":12},"end":{"line":390,"column":13}},"151":{"start":{"line":348,"column":14},"end":{"line":348,"column":44}},"152":{"start":{"line":349,"column":14},"end":{"line":349,"column":30}},"153":{"start":{"line":351,"column":14},"end":{"line":389,"column":15}},"154":{"start":{"line":355,"column":18},"end":{"line":355,"column":44}},"155":{"start":{"line":356,"column":18},"end":{"line":356,"column":24}},"156":{"start":{"line":358,"column":18},"end":{"line":358,"column":72}},"157":{"start":{"line":359,"column":18},"end":{"line":360,"column":65}},"158":{"start":{"line":361,"column":18},"end":{"line":363,"column":19}},"159":{"start":{"line":362,"column":20},"end":{"line":362,"column":65}},"160":{"start":{"line":364,"column":18},"end":{"line":364,"column":63}},"161":{"start":{"line":364,"column":35},"end":{"line":364,"column":63}},"162":{"start":{"line":365,"column":18},"end":{"line":365,"column":60}},"163":{"start":{"line":366,"column":18},"end":{"line":366,"column":24}},"164":{"start":{"line":368,"column":18},"end":{"line":370,"column":19}},"165":{"start":{"line":369,"column":20},"end":{"line":369,"column":58}},"166":{"start":{"line":371,"column":18},"end":{"line":380,"column":19}},"167":{"start":{"line":372,"column":20},"end":{"line":372,"column":56}},"168":{"start":{"line":373,"column":20},"end":{"line":373,"column":26}},"169":{"start":{"line":375,"column":20},"end":{"line":379,"column":21}},"170":{"start":{"line":376,"column":22},"end":{"line":378,"column":23}},"171":{"start":{"line":377,"column":24},"end":{"line":377,"column":53}},"172":{"start":{"line":382,"column":18},"end":{"line":387,"column":19}},"173":{"start":{"line":383,"column":20},"end":{"line":383,"column":71}},"174":{"start":{"line":384,"column":20},"end":{"line":384,"column":65}},"175":{"start":{"line":384,"column":34},"end":{"line":384,"column":65}},"176":{"start":{"line":386,"column":20},"end":{"line":386,"column":64}},"177":{"start":{"line":388,"column":18},"end":{"line":388,"column":24}},"178":{"start":{"line":391,"column":17},"end":{"line":423,"column":11}},"179":{"start":{"line":392,"column":12},"end":{"line":399,"column":14}},"180":{"start":{"line":392,"column":29},"end":{"line":392,"column":55}},"181":{"start":{"line":393,"column":17},"end":{"line":399,"column":14}},"182":{"start":{"line":400,"column":17},"end":{"line":423,"column":11}},"183":{"start":{"line":401,"column":12},"end":{"line":401,"column":35}},"184":{"start":{"line":402,"column":17},"end":{"line":423,"column":11}},"185":{"start":{"line":403,"column":12},"end":{"line":403,"column":48}},"186":{"start":{"line":404,"column":17},"end":{"line":423,"column":11}},"187":{"start":{"line":405,"column":12},"end":{"line":405,"column":43}},"188":{"start":{"line":406,"column":17},"end":{"line":423,"column":11}},"189":{"start":{"line":407,"column":12},"end":{"line":407,"column":34}},"190":{"start":{"line":408,"column":17},"end":{"line":423,"column":11}},"191":{"start":{"line":409,"column":12},"end":{"line":409,"column":54}},"192":{"start":{"line":412,"column":12},"end":{"line":418,"column":13}},"193":{"start":{"line":412,"column":29},"end":{"line":412,"column":51}},"194":{"start":{"line":414,"column":14},"end":{"line":414,"column":44}},"195":{"start":{"line":415,"column":14},"end":{"line":415,"column":56}},"196":{"start":{"line":416,"column":14},"end":{"line":416,"column":59}},"197":{"start":{"line":417,"column":14},"end":{"line":417,"column":59}},"198":{"start":{"line":419,"column":17},"end":{"line":423,"column":11}},"199":{"start":{"line":420,"column":12},"end":{"line":420,"column":42}},"200":{"start":{"line":422,"column":12},"end":{"line":422,"column":49}},"201":{"start":{"line":424,"column":10},"end":{"line":424,"column":16}},"202":{"start":{"line":434,"column":2},"end":{"line":457,"column":3}},"203":{"start":{"line":435,"column":4},"end":{"line":456,"column":5}},"204":{"start":{"line":443,"column":6},"end":{"line":443,"column":32}},"205":{"start":{"line":444,"column":6},"end":{"line":455,"column":7}},"206":{"start":{"line":445,"column":8},"end":{"line":445,"column":76}},"207":{"start":{"line":446,"column":8},"end":{"line":454,"column":10}},"208":{"start":{"line":460,"column":2},"end":{"line":498,"column":3}},"209":{"start":{"line":461,"column":4},"end":{"line":497,"column":5}},"210":{"start":{"line":467,"column":6},"end":{"line":467,"column":28}},"211":{"start":{"line":468,"column":6},"end":{"line":496,"column":7}},"212":{"start":{"line":470,"column":10},"end":{"line":470,"column":48}},"213":{"start":{"line":471,"column":10},"end":{"line":471,"column":43}},"214":{"start":{"line":472,"column":10},"end":{"line":472,"column":16}},"215":{"start":{"line":474,"column":10},"end":{"line":485,"column":11}},"216":{"start":{"line":475,"column":12},"end":{"line":475,"column":26}},"217":{"start":{"line":476,"column":12},"end":{"line":484,"column":13}},"218":{"start":{"line":480,"column":14},"end":{"line":480,"column":44}},"219":{"start":{"line":481,"column":14},"end":{"line":481,"column":25}},"220":{"start":{"line":483,"column":14},"end":{"line":483,"column":49}},"221":{"start":{"line":486,"column":10},"end":{"line":486,"column":16}},"222":{"start":{"line":488,"column":10},"end":{"line":494,"column":11}},"223":{"start":{"line":492,"column":12},"end":{"line":492,"column":26}},"224":{"start":{"line":493,"column":12},"end":{"line":493,"column":42}},"225":{"start":{"line":495,"column":10},"end":{"line":495,"column":16}},"226":{"start":{"line":503,"column":2},"end":{"line":503,"column":63}},"227":{"start":{"line":508,"column":2},"end":{"line":510,"column":39}},"228":{"start":{"line":514,"column":2},"end":{"line":518,"column":17}},"229":{"start":{"line":515,"column":14},"end":{"line":515,"column":57}},"230":{"start":{"line":516,"column":14},"end":{"line":516,"column":57}},"231":{"start":{"line":517,"column":14},"end":{"line":517,"column":68}},"232":{"start":{"line":522,"column":2},"end":{"line":522,"column":44}},"233":{"start":{"line":527,"column":2},"end":{"line":531,"column":4}},"234":{"start":{"line":528,"column":4},"end":{"line":529,"column":41}},"235":{"start":{"line":528,"column":52},"end":{"line":528,"column":64}},"236":{"start":{"line":529,"column":9},"end":{"line":529,"column":41}},"237":{"start":{"line":529,"column":29},"end":{"line":529,"column":38}},"238":{"start":{"line":530,"column":4},"end":{"line":530,"column":24}},"239":{"start":{"line":538,"column":2},"end":{"line":538,"column":23}},"240":{"start":{"line":541,"column":2},"end":{"line":547,"column":4}},"241":{"start":{"line":548,"column":2},"end":{"line":550,"column":3}},"242":{"start":{"line":549,"column":4},"end":{"line":549,"column":22}},"243":{"start":{"line":553,"column":2},"end":{"line":555,"column":3}},"244":{"start":{"line":554,"column":4},"end":{"line":554,"column":24}},"245":{"start":{"line":558,"column":2},"end":{"line":576,"column":3}},"246":{"start":{"line":559,"column":4},"end":{"line":574,"column":5}},"247":{"start":{"line":567,"column":6},"end":{"line":567,"column":28}},"248":{"start":{"line":568,"column":6},"end":{"line":573,"column":7}},"249":{"start":{"line":572,"column":8},"end":{"line":572,"column":28}},"250":{"start":{"line":575,"column":4},"end":{"line":575,"column":55}},"251":{"start":{"line":579,"column":2},"end":{"line":581,"column":3}},"252":{"start":{"line":580,"column":4},"end":{"line":580,"column":45}},"253":{"start":{"line":585,"column":2},"end":{"line":591,"column":3}},"254":{"start":{"line":586,"column":4},"end":{"line":590,"column":40}},"255":{"start":{"line":594,"column":2},"end":{"line":627,"column":3}},"256":{"start":{"line":595,"column":4},"end":{"line":595,"column":17}},"257":{"start":{"line":596,"column":4},"end":{"line":596,"column":38}},"258":{"start":{"line":597,"column":4},"end":{"line":597,"column":55}},"259":{"start":{"line":598,"column":4},"end":{"line":598,"column":44}},"260":{"start":{"line":599,"column":4},"end":{"line":599,"column":31}},"261":{"start":{"line":600,"column":4},"end":{"line":610,"column":5}},"262":{"start":{"line":602,"column":6},"end":{"line":602,"column":50}},"263":{"start":{"line":609,"column":6},"end":{"line":609,"column":88}},"264":{"start":{"line":611,"column":4},"end":{"line":625,"column":5}},"265":{"start":{"line":615,"column":6},"end":{"line":615,"column":31}},"266":{"start":{"line":616,"column":6},"end":{"line":616,"column":58}},"267":{"start":{"line":617,"column":6},"end":{"line":617,"column":78}},"268":{"start":{"line":619,"column":6},"end":{"line":619,"column":33}},"269":{"start":{"line":620,"column":6},"end":{"line":624,"column":7}},"270":{"start":{"line":621,"column":8},"end":{"line":621,"column":37}},"271":{"start":{"line":623,"column":8},"end":{"line":623,"column":64}},"272":{"start":{"line":626,"column":4},"end":{"line":626,"column":20}},"273":{"start":{"line":630,"column":2},"end":{"line":643,"column":3}},"274":{"start":{"line":631,"column":4},"end":{"line":631,"column":38}},"275":{"start":{"line":632,"column":4},"end":{"line":632,"column":52}},"276":{"start":{"line":633,"column":4},"end":{"line":641,"column":5}},"277":{"start":{"line":634,"column":6},"end":{"line":634,"column":52}},"278":{"start":{"line":635,"column":6},"end":{"line":635,"column":84}},"279":{"start":{"line":636,"column":6},"end":{"line":636,"column":73}},"280":{"start":{"line":638,"column":6},"end":{"line":638,"column":69}},"281":{"start":{"line":639,"column":6},"end":{"line":639,"column":33}},"282":{"start":{"line":640,"column":6},"end":{"line":640,"column":62}},"283":{"start":{"line":642,"column":4},"end":{"line":642,"column":20}},"284":{"start":{"line":646,"column":2},"end":{"line":648,"column":3}},"285":{"start":{"line":647,"column":4},"end":{"line":647,"column":51}},"286":{"start":{"line":652,"column":2},"end":{"line":728,"column":3}},"287":{"start":{"line":653,"column":4},"end":{"line":726,"column":5}},"288":{"start":{"line":662,"column":6},"end":{"line":725,"column":7}},"289":{"start":{"line":664,"column":10},"end":{"line":664,"column":38}},"290":{"start":{"line":665,"column":10},"end":{"line":667,"column":11}},"291":{"start":{"line":666,"column":12},"end":{"line":666,"column":46}},"292":{"start":{"line":668,"column":10},"end":{"line":668,"column":47}},"293":{"start":{"line":669,"column":10},"end":{"line":669,"column":16}},"294":{"start":{"line":671,"column":10},"end":{"line":671,"column":49}},"295":{"start":{"line":672,"column":10},"end":{"line":672,"column":68}},"296":{"start":{"line":673,"column":10},"end":{"line":673,"column":55}},"297":{"start":{"line":674,"column":10},"end":{"line":674,"column":86}},"298":{"start":{"line":675,"column":10},"end":{"line":675,"column":51}},"299":{"start":{"line":676,"column":10},"end":{"line":676,"column":79}},"300":{"start":{"line":677,"column":10},"end":{"line":677,"column":47}},"301":{"start":{"line":678,"column":10},"end":{"line":693,"column":11}},"302":{"start":{"line":684,"column":14},"end":{"line":684,"column":38}},"303":{"start":{"line":685,"column":14},"end":{"line":685,"column":20}},"304":{"start":{"line":688,"column":14},"end":{"line":688,"column":25}},"305":{"start":{"line":691,"column":14},"end":{"line":691,"column":56}},"306":{"start":{"line":692,"column":14},"end":{"line":692,"column":20}},"307":{"start":{"line":694,"column":10},"end":{"line":697,"column":12}},"308":{"start":{"line":698,"column":10},"end":{"line":710,"column":11}},"309":{"start":{"line":699,"column":12},"end":{"line":703,"column":14}},"310":{"start":{"line":705,"column":12},"end":{"line":709,"column":14}},"311":{"start":{"line":711,"column":10},"end":{"line":713,"column":11}},"312":{"start":{"line":712,"column":12},"end":{"line":712,"column":51}},"313":{"start":{"line":714,"column":10},"end":{"line":714,"column":16}},"314":{"start":{"line":717,"column":10},"end":{"line":722,"column":22}},"315":{"start":{"line":723,"column":10},"end":{"line":723,"column":30}},"316":{"start":{"line":724,"column":10},"end":{"line":724,"column":16}},"317":{"start":{"line":727,"column":4},"end":{"line":727,"column":18}},"318":{"start":{"line":732,"column":2},"end":{"line":736,"column":3}},"319":{"start":{"line":733,"column":4},"end":{"line":733,"column":29}},"320":{"start":{"line":734,"column":4},"end":{"line":734,"column":66}},"321":{"start":{"line":735,"column":4},"end":{"line":735,"column":53}},"322":{"start":{"line":739,"column":2},"end":{"line":745,"column":3}},"323":{"start":{"line":740,"column":4},"end":{"line":744,"column":5}},"324":{"start":{"line":741,"column":6},"end":{"line":741,"column":45}},"325":{"start":{"line":743,"column":6},"end":{"line":743,"column":37}},"326":{"start":{"line":749,"column":2},"end":{"line":756,"column":3}},"327":{"start":{"line":750,"column":4},"end":{"line":750,"column":46}},"328":{"start":{"line":751,"column":4},"end":{"line":754,"column":5}},"329":{"start":{"line":752,"column":6},"end":{"line":752,"column":35}},"330":{"start":{"line":753,"column":6},"end":{"line":753,"column":40}},"331":{"start":{"line":753,"column":17},"end":{"line":753,"column":40}},"332":{"start":{"line":755,"column":4},"end":{"line":755,"column":34}},"333":{"start":{"line":759,"column":2},"end":{"line":761,"column":3}},"334":{"start":{"line":760,"column":4},"end":{"line":760,"column":54}},"335":{"start":{"line":764,"column":2},"end":{"line":775,"column":3}},"336":{"start":{"line":765,"column":4},"end":{"line":765,"column":32}},"337":{"start":{"line":766,"column":4},"end":{"line":774,"column":5}},"338":{"start":{"line":767,"column":6},"end":{"line":767,"column":62}},"339":{"start":{"line":768,"column":11},"end":{"line":774,"column":5}},"340":{"start":{"line":769,"column":6},"end":{"line":769,"column":48}},"341":{"start":{"line":770,"column":11},"end":{"line":774,"column":5}},"342":{"start":{"line":771,"column":6},"end":{"line":771,"column":62}},"343":{"start":{"line":773,"column":6},"end":{"line":773,"column":63}},"344":{"start":{"line":778,"column":2},"end":{"line":784,"column":3}},"345":{"start":{"line":779,"column":4},"end":{"line":783,"column":5}},"346":{"start":{"line":780,"column":6},"end":{"line":782,"column":7}},"347":{"start":{"line":781,"column":8},"end":{"line":781,"column":46}},"348":{"start":{"line":787,"column":2},"end":{"line":789,"column":3}},"349":{"start":{"line":788,"column":4},"end":{"line":788,"column":35}},"350":{"start":{"line":792,"column":2},"end":{"line":794,"column":3}},"351":{"start":{"line":793,"column":4},"end":{"line":793,"column":44}},"352":{"start":{"line":798,"column":2},"end":{"line":808,"column":3}},"353":{"start":{"line":799,"column":4},"end":{"line":799,"column":34}},"354":{"start":{"line":800,"column":4},"end":{"line":807,"column":6}},"355":{"start":{"line":802,"column":8},"end":{"line":802,"column":66}},"356":{"start":{"line":805,"column":8},"end":{"line":805,"column":73}},"357":{"start":{"line":812,"column":2},"end":{"line":819,"column":3}},"358":{"start":{"line":813,"column":4},"end":{"line":817,"column":6}},"359":{"start":{"line":818,"column":4},"end":{"line":818,"column":24}},"360":{"start":{"line":822,"column":2},"end":{"line":826,"column":3}},"361":{"start":{"line":823,"column":4},"end":{"line":825,"column":5}},"362":{"start":{"line":824,"column":6},"end":{"line":824,"column":41}},"363":{"start":{"line":829,"column":2},"end":{"line":835,"column":3}},"364":{"start":{"line":830,"column":4},"end":{"line":830,"column":47}},"365":{"start":{"line":831,"column":4},"end":{"line":834,"column":5}},"366":{"start":{"line":832,"column":6},"end":{"line":832,"column":46}},"367":{"start":{"line":833,"column":6},"end":{"line":833,"column":43}},"368":{"start":{"line":838,"column":2},"end":{"line":852,"column":3}},"369":{"start":{"line":839,"column":4},"end":{"line":839,"column":15}},"370":{"start":{"line":840,"column":4},"end":{"line":850,"column":5}},"371":{"start":{"line":842,"column":8},"end":{"line":842,"column":49}},"372":{"start":{"line":843,"column":8},"end":{"line":843,"column":14}},"373":{"start":{"line":845,"column":8},"end":{"line":845,"column":67}},"374":{"start":{"line":846,"column":8},"end":{"line":846,"column":14}},"375":{"start":{"line":848,"column":8},"end":{"line":848,"column":55}},"376":{"start":{"line":849,"column":8},"end":{"line":849,"column":14}},"377":{"start":{"line":851,"column":4},"end":{"line":851,"column":18}},"378":{"start":{"line":856,"column":2},"end":{"line":867,"column":3}},"379":{"start":{"line":857,"column":4},"end":{"line":857,"column":50}},"380":{"start":{"line":858,"column":4},"end":{"line":866,"column":5}},"381":{"start":{"line":859,"column":6},"end":{"line":859,"column":41}},"382":{"start":{"line":860,"column":6},"end":{"line":860,"column":36}},"383":{"start":{"line":861,"column":6},"end":{"line":861,"column":27}},"384":{"start":{"line":862,"column":6},"end":{"line":862,"column":29}},"385":{"start":{"line":863,"column":6},"end":{"line":863,"column":35}},"386":{"start":{"line":864,"column":6},"end":{"line":864,"column":51}},"387":{"start":{"line":865,"column":6},"end":{"line":865,"column":47}},"388":{"start":{"line":870,"column":2},"end":{"line":872,"column":3}},"389":{"start":{"line":871,"column":4},"end":{"line":871,"column":60}},"390":{"start":{"line":879,"column":2},"end":{"line":891,"column":14}},"391":{"start":{"line":881,"column":8},"end":{"line":889,"column":10}},"392":{"start":{"line":882,"column":32},"end":{"line":882,"column":52}},"393":{"start":{"line":884,"column":12},"end":{"line":887,"column":15}},"394":{"start":{"line":894,"column":2},"end":{"line":909,"column":10}},"395":{"start":{"line":896,"column":8},"end":{"line":896,"column":27}},"396":{"start":{"line":897,"column":8},"end":{"line":907,"column":10}},"397":{"start":{"line":899,"column":12},"end":{"line":899,"column":37}},"398":{"start":{"line":905,"column":12},"end":{"line":905,"column":39}},"399":{"start":{"line":914,"column":2},"end":{"line":923,"column":21}},"400":{"start":{"line":916,"column":18},"end":{"line":916,"column":45}},"401":{"start":{"line":919,"column":18},"end":{"line":919,"column":44}},"402":{"start":{"line":920,"column":18},"end":{"line":922,"column":20}},"403":{"start":{"line":921,"column":20},"end":{"line":921,"column":50}},"404":{"start":{"line":926,"column":2},"end":{"line":927,"column":69}},"405":{"start":{"line":927,"column":28},"end":{"line":927,"column":66}},"406":{"start":{"line":934,"column":2},"end":{"line":934,"column":45}},"407":{"start":{"line":937,"column":2},"end":{"line":937,"column":24}},"408":{"start":{"line":940,"column":2},"end":{"line":940,"column":35}},"409":{"start":{"line":941,"column":2},"end":{"line":945,"column":3}},"410":{"start":{"line":942,"column":4},"end":{"line":942,"column":40}},"411":{"start":{"line":943,"column":4},"end":{"line":944,"column":44}},"412":{"start":{"line":948,"column":2},"end":{"line":960,"column":8}},"413":{"start":{"line":950,"column":8},"end":{"line":950,"column":44}},"414":{"start":{"line":953,"column":8},"end":{"line":959,"column":9}},"415":{"start":{"line":958,"column":10},"end":{"line":958,"column":42}},"416":{"start":{"line":963,"column":2},"end":{"line":978,"column":48}},"417":{"start":{"line":965,"column":8},"end":{"line":975,"column":9}},"418":{"start":{"line":972,"column":10},"end":{"line":972,"column":32}},"419":{"start":{"line":973,"column":10},"end":{"line":974,"column":34}},"420":{"start":{"line":974,"column":12},"end":{"line":974,"column":34}},"421":{"start":{"line":976,"column":8},"end":{"line":976,"column":24}},"422":{"start":{"line":978,"column":24},"end":{"line":978,"column":45}},"423":{"start":{"line":982,"column":2},"end":{"line":1002,"column":8}},"424":{"start":{"line":984,"column":8},"end":{"line":994,"column":9}},"425":{"start":{"line":985,"column":10},"end":{"line":985,"column":27}},"426":{"start":{"line":986,"column":10},"end":{"line":993,"column":11}},"427":{"start":{"line":988,"column":14},"end":{"line":988,"column":60}},"428":{"start":{"line":989,"column":14},"end":{"line":989,"column":20}},"429":{"start":{"line":991,"column":14},"end":{"line":991,"column":53}},"430":{"start":{"line":992,"column":14},"end":{"line":992,"column":20}},"431":{"start":{"line":995,"column":8},"end":{"line":995,"column":26}},"432":{"start":{"line":998,"column":8},"end":{"line":1000,"column":9}},"433":{"start":{"line":999,"column":10},"end":{"line":999,"column":54}},"434":{"start":{"line":1001,"column":8},"end":{"line":1001,"column":26}},"435":{"start":{"line":1005,"column":2},"end":{"line":1005,"column":105}},"436":{"start":{"line":1006,"column":2},"end":{"line":1006,"column":94}},"437":{"start":{"line":1007,"column":2},"end":{"line":1009,"column":4}},"438":{"start":{"line":1008,"column":4},"end":{"line":1008,"column":67}},"439":{"start":{"line":1011,"column":2},"end":{"line":1013,"column":4}},"440":{"start":{"line":1012,"column":4},"end":{"line":1012,"column":48}},"441":{"start":{"line":1016,"column":2},"end":{"line":1023,"column":56}},"442":{"start":{"line":1018,"column":6},"end":{"line":1020,"column":7}},"443":{"start":{"line":1019,"column":8},"end":{"line":1019,"column":56}},"444":{"start":{"line":1019,"column":44},"end":{"line":1019,"column":56}},"445":{"start":{"line":1021,"column":6},"end":{"line":1021,"column":23}},"446":{"start":{"line":1023,"column":22},"end":{"line":1023,"column":53}},"447":{"start":{"line":1025,"column":2},"end":{"line":1032,"column":60}},"448":{"start":{"line":1027,"column":6},"end":{"line":1029,"column":7}},"449":{"start":{"line":1028,"column":8},"end":{"line":1028,"column":56}},"450":{"start":{"line":1028,"column":44},"end":{"line":1028,"column":56}},"451":{"start":{"line":1030,"column":6},"end":{"line":1030,"column":23}},"452":{"start":{"line":1032,"column":22},"end":{"line":1032,"column":57}},"453":{"start":{"line":1035,"column":2},"end":{"line":1035,"column":28}},"454":{"start":{"line":1038,"column":2},"end":{"line":1038,"column":27}},"455":{"start":{"line":1041,"column":2},"end":{"line":1041,"column":27}},"456":{"start":{"line":1044,"column":2},"end":{"line":1044,"column":25}},"457":{"start":{"line":1048,"column":2},"end":{"line":1066,"column":7}},"458":{"start":{"line":1049,"column":4},"end":{"line":1049,"column":66}},"459":{"start":{"line":1050,"column":4},"end":{"line":1050,"column":65}},"460":{"start":{"line":1051,"column":4},"end":{"line":1065,"column":8}},"461":{"start":{"line":1053,"column":8},"end":{"line":1060,"column":9}},"462":{"start":{"line":1059,"column":10},"end":{"line":1059,"column":54}},"463":{"start":{"line":1061,"column":8},"end":{"line":1061,"column":21}},"464":{"start":{"line":1064,"column":8},"end":{"line":1064,"column":40}},"465":{"start":{"line":1074,"column":2},"end":{"line":1081,"column":3}},"466":{"start":{"line":1075,"column":4},"end":{"line":1075,"column":19}},"467":{"start":{"line":1076,"column":4},"end":{"line":1076,"column":61}},"468":{"start":{"line":1077,"column":4},"end":{"line":1077,"column":50}},"469":{"start":{"line":1078,"column":4},"end":{"line":1078,"column":51}},"470":{"start":{"line":1079,"column":4},"end":{"line":1079,"column":34}},"471":{"start":{"line":1080,"column":4},"end":{"line":1080,"column":16}},"472":{"start":{"line":1086,"column":2},"end":{"line":1115,"column":3}},"473":{"start":{"line":1087,"column":4},"end":{"line":1087,"column":18}},"474":{"start":{"line":1088,"column":4},"end":{"line":1088,"column":19}},"475":{"start":{"line":1089,"column":4},"end":{"line":1106,"column":5}},"476":{"start":{"line":1092,"column":8},"end":{"line":1092,"column":26}},"477":{"start":{"line":1093,"column":8},"end":{"line":1093,"column":14}},"478":{"start":{"line":1095,"column":8},"end":{"line":1095,"column":37}},"479":{"start":{"line":1096,"column":8},"end":{"line":1099,"column":10}},"480":{"start":{"line":1100,"column":8},"end":{"line":1100,"column":14}},"481":{"start":{"line":1103,"column":8},"end":{"line":1103,"column":39}},"482":{"start":{"line":1104,"column":8},"end":{"line":1104,"column":46}},"483":{"start":{"line":1105,"column":8},"end":{"line":1105,"column":14}},"484":{"start":{"line":1107,"column":4},"end":{"line":1113,"column":5}},"485":{"start":{"line":1112,"column":6},"end":{"line":1112,"column":81}},"486":{"start":{"line":1114,"column":4},"end":{"line":1114,"column":16}},"487":{"start":{"line":1120,"column":2},"end":{"line":1138,"column":3}},"488":{"start":{"line":1121,"column":4},"end":{"line":1135,"column":5}},"489":{"start":{"line":1128,"column":6},"end":{"line":1128,"column":22}},"490":{"start":{"line":1129,"column":6},"end":{"line":1129,"column":44}},"491":{"start":{"line":1130,"column":6},"end":{"line":1133,"column":7}},"492":{"start":{"line":1131,"column":8},"end":{"line":1131,"column":45}},"493":{"start":{"line":1132,"column":8},"end":{"line":1132,"column":22}},"494":{"start":{"line":1134,"column":6},"end":{"line":1134,"column":66}},"495":{"start":{"line":1136,"column":4},"end":{"line":1136,"column":42}},"496":{"start":{"line":1137,"column":4},"end":{"line":1137,"column":19}},"497":{"start":{"line":1141,"column":2},"end":{"line":1160,"column":3}},"498":{"start":{"line":1142,"column":4},"end":{"line":1157,"column":5}},"499":{"start":{"line":1149,"column":6},"end":{"line":1149,"column":22}},"500":{"start":{"line":1150,"column":6},"end":{"line":1150,"column":22}},"501":{"start":{"line":1151,"column":6},"end":{"line":1156,"column":8}},"502":{"start":{"line":1158,"column":4},"end":{"line":1158,"column":42}},"503":{"start":{"line":1159,"column":4},"end":{"line":1159,"column":19}},"504":{"start":{"line":1163,"column":2},"end":{"line":1167,"column":3}},"505":{"start":{"line":1164,"column":4},"end":{"line":1166,"column":5}},"506":{"start":{"line":1165,"column":6},"end":{"line":1165,"column":32}},"507":{"start":{"line":1171,"column":2},"end":{"line":1184,"column":3}},"508":{"start":{"line":1172,"column":4},"end":{"line":1172,"column":28}},"509":{"start":{"line":1173,"column":4},"end":{"line":1173,"column":16}},"510":{"start":{"line":1174,"column":4},"end":{"line":1175,"column":52}},"511":{"start":{"line":1176,"column":4},"end":{"line":1182,"column":5}},"512":{"start":{"line":1177,"column":6},"end":{"line":1177,"column":46}},"513":{"start":{"line":1178,"column":6},"end":{"line":1178,"column":63}},"514":{"start":{"line":1179,"column":6},"end":{"line":1179,"column":39}},"515":{"start":{"line":1181,"column":6},"end":{"line":1181,"column":70}},"516":{"start":{"line":1183,"column":4},"end":{"line":1183,"column":50}},"517":{"start":{"line":1191,"column":2},"end":{"line":1251,"column":3}},"518":{"start":{"line":1192,"column":4},"end":{"line":1192,"column":71}},"519":{"start":{"line":1194,"column":4},"end":{"line":1200,"column":5}},"520":{"start":{"line":1195,"column":6},"end":{"line":1195,"column":50}},"521":{"start":{"line":1196,"column":6},"end":{"line":1198,"column":17}},"522":{"start":{"line":1199,"column":6},"end":{"line":1199,"column":31}},"523":{"start":{"line":1202,"column":4},"end":{"line":1211,"column":5}},"524":{"start":{"line":1203,"column":6},"end":{"line":1209,"column":7}},"525":{"start":{"line":1204,"column":8},"end":{"line":1204,"column":22}},"526":{"start":{"line":1205,"column":8},"end":{"line":1207,"column":9}},"527":{"start":{"line":1206,"column":10},"end":{"line":1206,"column":66}},"528":{"start":{"line":1208,"column":8},"end":{"line":1208,"column":42}},"529":{"start":{"line":1210,"column":6},"end":{"line":1210,"column":21}},"530":{"start":{"line":1213,"column":4},"end":{"line":1250,"column":8}},"531":{"start":{"line":1215,"column":8},"end":{"line":1215,"column":29}},"532":{"start":{"line":1216,"column":8},"end":{"line":1216,"column":30}},"533":{"start":{"line":1217,"column":8},"end":{"line":1238,"column":9}},"534":{"start":{"line":1218,"column":10},"end":{"line":1218,"column":23}},"535":{"start":{"line":1219,"column":10},"end":{"line":1219,"column":29}},"536":{"start":{"line":1220,"column":10},"end":{"line":1237,"column":12}},"537":{"start":{"line":1221,"column":12},"end":{"line":1234,"column":13}},"538":{"start":{"line":1222,"column":14},"end":{"line":1233,"column":15}},"539":{"start":{"line":1223,"column":16},"end":{"line":1223,"column":40}},"540":{"start":{"line":1224,"column":16},"end":{"line":1228,"column":18}},"541":{"start":{"line":1229,"column":16},"end":{"line":1229,"column":47}},"542":{"start":{"line":1231,"column":16},"end":{"line":1231,"column":66}},"543":{"start":{"line":1231,"column":53},"end":{"line":1231,"column":66}},"544":{"start":{"line":1232,"column":16},"end":{"line":1232,"column":49}},"545":{"start":{"line":1235,"column":12},"end":{"line":1235,"column":37}},"546":{"start":{"line":1236,"column":12},"end":{"line":1236,"column":27}},"547":{"start":{"line":1239,"column":8},"end":{"line":1239,"column":23}},"548":{"start":{"line":1242,"column":8},"end":{"line":1242,"column":30}},"549":{"start":{"line":1243,"column":8},"end":{"line":1247,"column":9}},"550":{"start":{"line":1244,"column":10},"end":{"line":1244,"column":23}},"551":{"start":{"line":1245,"column":10},"end":{"line":1245,"column":29}},"552":{"start":{"line":1246,"column":10},"end":{"line":1246,"column":33}},"553":{"start":{"line":1248,"column":8},"end":{"line":1248,"column":38}},"554":{"start":{"line":1249,"column":8},"end":{"line":1249,"column":23}},"555":{"start":{"line":1254,"column":2},"end":{"line":1267,"column":3}},"556":{"start":{"line":1255,"column":4},"end":{"line":1255,"column":30}},"557":{"start":{"line":1256,"column":4},"end":{"line":1256,"column":30}},"558":{"start":{"line":1257,"column":4},"end":{"line":1257,"column":18}},"559":{"start":{"line":1258,"column":4},"end":{"line":1261,"column":5}},"560":{"start":{"line":1259,"column":6},"end":{"line":1259,"column":29}},"561":{"start":{"line":1260,"column":6},"end":{"line":1260,"column":40}},"562":{"start":{"line":1262,"column":4},"end":{"line":1265,"column":5}},"563":{"start":{"line":1263,"column":6},"end":{"line":1263,"column":16}},"564":{"start":{"line":1264,"column":6},"end":{"line":1264,"column":27}},"565":{"start":{"line":1266,"column":4},"end":{"line":1266,"column":54}},"566":{"start":{"line":1272,"column":2},"end":{"line":1272,"column":15}},"567":{"start":{"line":1277,"column":0},"end":{"line":1277,"column":49}},"568":{"start":{"line":1277,"column":6},"end":{"line":1277,"column":33}}},"branchMap":{"1":{"line":17,"type":"cond-expr","locations":[{"start":{"line":18,"column":7},"end":{"line":29,"column":9}},{"start":{"line":30,"column":6},"end":{"line":32,"column":30}}]},"2":{"line":18,"type":"cond-expr","locations":[{"start":{"line":19,"column":8},"end":{"line":19,"column":27}},{"start":{"line":20,"column":9},"end":{"line":28,"column":11}}]},"3":{"line":20,"type":"cond-expr","locations":[{"start":{"line":21,"column":10},"end":{"line":21,"column":26}},{"start":{"line":22,"column":11},"end":{"line":27,"column":13}}]},"4":{"line":22,"type":"cond-expr","locations":[{"start":{"line":23,"column":12},"end":{"line":23,"column":37}},{"start":{"line":24,"column":13},"end":{"line":26,"column":38}}]},"5":{"line":24,"type":"cond-expr","locations":[{"start":{"line":25,"column":14},"end":{"line":25,"column":24}},{"start":{"line":26,"column":14},"end":{"line":26,"column":38}}]},"6":{"line":30,"type":"cond-expr","locations":[{"start":{"line":31,"column":8},"end":{"line":31,"column":27}},{"start":{"line":31,"column":30},"end":{"line":31,"column":34}}]},"7":{"line":66,"type":"cond-expr","locations":[{"start":{"line":67,"column":6},"end":{"line":67,"column":25}},{"start":{"line":68,"column":7},"end":{"line":70,"column":39}}]},"8":{"line":68,"type":"cond-expr","locations":[{"start":{"line":69,"column":8},"end":{"line":69,"column":35}},{"start":{"line":70,"column":8},"end":{"line":70,"column":39}}]},"9":{"line":69,"type":"binary-expr","locations":[{"start":{"line":69,"column":20},"end":{"line":69,"column":24}},{"start":{"line":69,"column":28},"end":{"line":69,"column":34}}]},"10":{"line":70,"type":"binary-expr","locations":[{"start":{"line":70,"column":24},"end":{"line":70,"column":28}},{"start":{"line":70,"column":32},"end":{"line":70,"column":38}}]},"11":{"line":88,"type":"binary-expr","locations":[{"start":{"line":88,"column":11},"end":{"line":88,"column":31}},{"start":{"line":88,"column":35},"end":{"line":88,"column":63}},{"start":{"line":89,"column":11},"end":{"line":89,"column":24}}]},"12":{"line":103,"type":"cond-expr","locations":[{"start":{"line":103,"column":51},"end":{"line":103,"column":75}},{"start":{"line":103,"column":78},"end":{"line":103,"column":83}}]},"13":{"line":150,"type":"if","locations":[{"start":{"line":150,"column":6},"end":{"line":150,"column":6}},{"start":{"line":150,"column":6},"end":{"line":150,"column":6}}]},"14":{"line":150,"type":"binary-expr","locations":[{"start":{"line":150,"column":10},"end":{"line":150,"column":21}},{"start":{"line":150,"column":25},"end":{"line":150,"column":38}}]},"15":{"line":153,"type":"cond-expr","locations":[{"start":{"line":153,"column":27},"end":{"line":153,"column":29}},{"start":{"line":153,"column":32},"end":{"line":153,"column":33}}]},"16":{"line":160,"type":"switch","locations":[{"start":{"line":161,"column":6},"end":{"line":168,"column":14}},{"start":{"line":169,"column":6},"end":{"line":173,"column":14}},{"start":{"line":174,"column":6},"end":{"line":176,"column":14}}]},"17":{"line":163,"type":"if","locations":[{"start":{"line":163,"column":8},"end":{"line":163,"column":8}},{"start":{"line":163,"column":8},"end":{"line":163,"column":8}}]},"18":{"line":170,"type":"if","locations":[{"start":{"line":170,"column":8},"end":{"line":170,"column":8}},{"start":{"line":170,"column":8},"end":{"line":170,"column":8}}]},"19":{"line":198,"type":"if","locations":[{"start":{"line":198,"column":4},"end":{"line":198,"column":4}},{"start":{"line":198,"column":4},"end":{"line":198,"column":4}}]},"20":{"line":215,"type":"if","locations":[{"start":{"line":215,"column":4},"end":{"line":215,"column":4}},{"start":{"line":215,"column":4},"end":{"line":215,"column":4}}]},"21":{"line":216,"type":"binary-expr","locations":[{"start":{"line":216,"column":6},"end":{"line":216,"column":12}},{"start":{"line":217,"column":6},"end":{"line":217,"column":37}}]},"22":{"line":234,"type":"binary-expr","locations":[{"start":{"line":234,"column":18},"end":{"line":234,"column":33}},{"start":{"line":235,"column":19},"end":{"line":235,"column":49}},{"start":{"line":236,"column":18},"end":{"line":236,"column":50}}]},"23":{"line":237,"type":"cond-expr","locations":[{"start":{"line":237,"column":23},"end":{"line":237,"column":36}},{"start":{"line":237,"column":39},"end":{"line":237,"column":41}}]},"24":{"line":238,"type":"binary-expr","locations":[{"start":{"line":238,"column":16},"end":{"line":238,"column":23}},{"start":{"line":238,"column":27},"end":{"line":238,"column":36}}]},"25":{"line":241,"type":"if","locations":[{"start":{"line":241,"column":4},"end":{"line":241,"column":4}},{"start":{"line":241,"column":4},"end":{"line":241,"column":4}}]},"26":{"line":241,"type":"binary-expr","locations":[{"start":{"line":241,"column":8},"end":{"line":241,"column":15}},{"start":{"line":241,"column":19},"end":{"line":241,"column":45}}]},"27":{"line":242,"type":"if","locations":[{"start":{"line":242,"column":4},"end":{"line":242,"column":4}},{"start":{"line":242,"column":4},"end":{"line":242,"column":4}}]},"28":{"line":243,"type":"cond-expr","locations":[{"start":{"line":244,"column":6},"end":{"line":250,"column":7}},{"start":{"line":251,"column":7},"end":{"line":293,"column":9}}]},"29":{"line":245,"type":"if","locations":[{"start":{"line":245,"column":8},"end":{"line":245,"column":8}},{"start":{"line":245,"column":8},"end":{"line":245,"column":8}}]},"30":{"line":246,"type":"if","locations":[{"start":{"line":246,"column":10},"end":{"line":246,"column":10}},{"start":{"line":246,"column":10},"end":{"line":246,"column":10}}]},"31":{"line":248,"type":"if","locations":[{"start":{"line":248,"column":10},"end":{"line":248,"column":10}},{"start":{"line":248,"column":10},"end":{"line":248,"column":10}}]},"32":{"line":251,"type":"cond-expr","locations":[{"start":{"line":252,"column":8},"end":{"line":271,"column":9}},{"start":{"line":272,"column":8},"end":{"line":293,"column":9}}]},"33":{"line":253,"type":"if","locations":[{"start":{"line":253,"column":10},"end":{"line":253,"column":10}},{"start":{"line":253,"column":10},"end":{"line":253,"column":10}}]},"34":{"line":257,"type":"if","locations":[{"start":{"line":257,"column":12},"end":{"line":257,"column":12}},{"start":{"line":257,"column":12},"end":{"line":257,"column":12}}]},"35":{"line":261,"type":"if","locations":[{"start":{"line":261,"column":14},"end":{"line":261,"column":14}},{"start":{"line":261,"column":14},"end":{"line":261,"column":14}}]},"36":{"line":273,"type":"if","locations":[{"start":{"line":273,"column":10},"end":{"line":273,"column":10}},{"start":{"line":273,"column":10},"end":{"line":273,"column":10}}]},"37":{"line":277,"type":"if","locations":[{"start":{"line":277,"column":12},"end":{"line":277,"column":12}},{"start":{"line":277,"column":12},"end":{"line":277,"column":12}}]},"38":{"line":278,"type":"if","locations":[{"start":{"line":278,"column":14},"end":{"line":278,"column":14}},{"start":{"line":278,"column":14},"end":{"line":278,"column":14}}]},"39":{"line":279,"type":"if","locations":[{"start":{"line":279,"column":16},"end":{"line":279,"column":16}},{"start":{"line":279,"column":16},"end":{"line":279,"column":16}}]},"40":{"line":286,"type":"if","locations":[{"start":{"line":286,"column":16},"end":{"line":286,"column":16}},{"start":{"line":286,"column":16},"end":{"line":286,"column":16}}]},"41":{"line":303,"type":"switch","locations":[{"start":{"line":304,"column":8},"end":{"line":304,"column":22}},{"start":{"line":305,"column":8},"end":{"line":305,"column":22}},{"start":{"line":306,"column":8},"end":{"line":326,"column":16}},{"start":{"line":327,"column":8},"end":{"line":333,"column":16}},{"start":{"line":334,"column":8},"end":{"line":334,"column":22}},{"start":{"line":335,"column":8},"end":{"line":342,"column":11}},{"start":{"line":343,"column":8},"end":{"line":424,"column":16}}]},"42":{"line":307,"type":"if","locations":[{"start":{"line":307,"column":10},"end":{"line":307,"column":10}},{"start":{"line":307,"column":10},"end":{"line":307,"column":10}}]},"43":{"line":308,"type":"if","locations":[{"start":{"line":308,"column":12},"end":{"line":308,"column":12}},{"start":{"line":308,"column":12},"end":{"line":308,"column":12}}]},"44":{"line":312,"type":"if","locations":[{"start":{"line":312,"column":17},"end":{"line":312,"column":17}},{"start":{"line":312,"column":17},"end":{"line":312,"column":17}}]},"45":{"line":313,"type":"binary-expr","locations":[{"start":{"line":313,"column":12},"end":{"line":313,"column":35}},{"start":{"line":314,"column":12},"end":{"line":314,"column":48}}]},"46":{"line":316,"type":"if","locations":[{"start":{"line":316,"column":12},"end":{"line":316,"column":12}},{"start":{"line":316,"column":12},"end":{"line":316,"column":12}}]},"47":{"line":328,"type":"if","locations":[{"start":{"line":328,"column":10},"end":{"line":328,"column":10}},{"start":{"line":328,"column":10},"end":{"line":328,"column":10}}]},"48":{"line":336,"type":"if","locations":[{"start":{"line":336,"column":10},"end":{"line":336,"column":10}},{"start":{"line":336,"column":10},"end":{"line":336,"column":10}}]},"49":{"line":340,"type":"if","locations":[{"start":{"line":340,"column":17},"end":{"line":340,"column":17}},{"start":{"line":340,"column":17},"end":{"line":340,"column":17}}]},"50":{"line":345,"type":"if","locations":[{"start":{"line":345,"column":10},"end":{"line":345,"column":10}},{"start":{"line":345,"column":10},"end":{"line":345,"column":10}}]},"51":{"line":347,"type":"if","locations":[{"start":{"line":347,"column":12},"end":{"line":347,"column":12}},{"start":{"line":347,"column":12},"end":{"line":347,"column":12}}]},"52":{"line":347,"type":"binary-expr","locations":[{"start":{"line":347,"column":16},"end":{"line":347,"column":28}},{"start":{"line":347,"column":32},"end":{"line":347,"column":44}}]},"53":{"line":351,"type":"switch","locations":[{"start":{"line":352,"column":16},"end":{"line":352,"column":30}},{"start":{"line":353,"column":16},"end":{"line":353,"column":30}},{"start":{"line":354,"column":16},"end":{"line":356,"column":24}},{"start":{"line":357,"column":16},"end":{"line":366,"column":24}},{"start":{"line":367,"column":16},"end":{"line":380,"column":19}},{"start":{"line":381,"column":16},"end":{"line":388,"column":24}}]},"54":{"line":358,"type":"cond-expr","locations":[{"start":{"line":358,"column":49},"end":{"line":358,"column":53}},{"start":{"line":358,"column":56},"end":{"line":358,"column":71}}]},"55":{"line":359,"type":"cond-expr","locations":[{"start":{"line":360,"column":22},"end":{"line":360,"column":51}},{"start":{"line":360,"column":54},"end":{"line":360,"column":64}}]},"56":{"line":364,"type":"if","locations":[{"start":{"line":364,"column":18},"end":{"line":364,"column":18}},{"start":{"line":364,"column":18},"end":{"line":364,"column":18}}]},"57":{"line":368,"type":"if","locations":[{"start":{"line":368,"column":18},"end":{"line":368,"column":18}},{"start":{"line":368,"column":18},"end":{"line":368,"column":18}}]},"58":{"line":371,"type":"if","locations":[{"start":{"line":371,"column":18},"end":{"line":371,"column":18}},{"start":{"line":371,"column":18},"end":{"line":371,"column":18}}]},"59":{"line":376,"type":"if","locations":[{"start":{"line":376,"column":22},"end":{"line":376,"column":22}},{"start":{"line":376,"column":22},"end":{"line":376,"column":22}}]},"60":{"line":382,"type":"if","locations":[{"start":{"line":382,"column":18},"end":{"line":382,"column":18}},{"start":{"line":382,"column":18},"end":{"line":382,"column":18}}]},"61":{"line":384,"type":"if","locations":[{"start":{"line":384,"column":20},"end":{"line":384,"column":20}},{"start":{"line":384,"column":20},"end":{"line":384,"column":20}}]},"62":{"line":391,"type":"if","locations":[{"start":{"line":391,"column":17},"end":{"line":391,"column":17}},{"start":{"line":391,"column":17},"end":{"line":391,"column":17}}]},"63":{"line":392,"type":"if","locations":[{"start":{"line":392,"column":12},"end":{"line":392,"column":12}},{"start":{"line":392,"column":12},"end":{"line":392,"column":12}}]},"64":{"line":396,"type":"cond-expr","locations":[{"start":{"line":397,"column":16},"end":{"line":397,"column":44}},{"start":{"line":398,"column":16},"end":{"line":398,"column":23}}]},"65":{"line":400,"type":"if","locations":[{"start":{"line":400,"column":17},"end":{"line":400,"column":17}},{"start":{"line":400,"column":17},"end":{"line":400,"column":17}}]},"66":{"line":402,"type":"if","locations":[{"start":{"line":402,"column":17},"end":{"line":402,"column":17}},{"start":{"line":402,"column":17},"end":{"line":402,"column":17}}]},"67":{"line":404,"type":"if","locations":[{"start":{"line":404,"column":17},"end":{"line":404,"column":17}},{"start":{"line":404,"column":17},"end":{"line":404,"column":17}}]},"68":{"line":406,"type":"if","locations":[{"start":{"line":406,"column":17},"end":{"line":406,"column":17}},{"start":{"line":406,"column":17},"end":{"line":406,"column":17}}]},"69":{"line":408,"type":"if","locations":[{"start":{"line":408,"column":17},"end":{"line":408,"column":17}},{"start":{"line":408,"column":17},"end":{"line":408,"column":17}}]},"70":{"line":412,"type":"if","locations":[{"start":{"line":412,"column":12},"end":{"line":412,"column":12}},{"start":{"line":412,"column":12},"end":{"line":412,"column":12}}]},"71":{"line":419,"type":"if","locations":[{"start":{"line":419,"column":17},"end":{"line":419,"column":17}},{"start":{"line":419,"column":17},"end":{"line":419,"column":17}}]},"72":{"line":444,"type":"if","locations":[{"start":{"line":444,"column":6},"end":{"line":444,"column":6}},{"start":{"line":444,"column":6},"end":{"line":444,"column":6}}]},"73":{"line":468,"type":"switch","locations":[{"start":{"line":469,"column":8},"end":{"line":472,"column":16}},{"start":{"line":473,"column":8},"end":{"line":486,"column":16}},{"start":{"line":487,"column":8},"end":{"line":495,"column":16}}]},"74":{"line":474,"type":"if","locations":[{"start":{"line":474,"column":10},"end":{"line":474,"column":10}},{"start":{"line":474,"column":10},"end":{"line":474,"column":10}}]},"75":{"line":476,"type":"if","locations":[{"start":{"line":476,"column":12},"end":{"line":476,"column":12}},{"start":{"line":476,"column":12},"end":{"line":476,"column":12}}]},"76":{"line":476,"type":"binary-expr","locations":[{"start":{"line":476,"column":16},"end":{"line":476,"column":28}},{"start":{"line":477,"column":14},"end":{"line":477,"column":42}},{"start":{"line":478,"column":14},"end":{"line":478,"column":38}}]},"77":{"line":488,"type":"if","locations":[{"start":{"line":488,"column":10},"end":{"line":488,"column":10}},{"start":{"line":488,"column":10},"end":{"line":488,"column":10}}]},"78":{"line":489,"type":"binary-expr","locations":[{"start":{"line":489,"column":12},"end":{"line":489,"column":52}},{"start":{"line":490,"column":12},"end":{"line":490,"column":49}}]},"79":{"line":508,"type":"binary-expr","locations":[{"start":{"line":508,"column":11},"end":{"line":508,"column":40}},{"start":{"line":509,"column":12},"end":{"line":509,"column":54}},{"start":{"line":510,"column":12},"end":{"line":510,"column":38}}]},"80":{"line":528,"type":"if","locations":[{"start":{"line":528,"column":4},"end":{"line":528,"column":4}},{"start":{"line":528,"column":4},"end":{"line":528,"column":4}}]},"81":{"line":528,"type":"binary-expr","locations":[{"start":{"line":528,"column":8},"end":{"line":528,"column":44}},{"start":{"line":528,"column":48},"end":{"line":528,"column":50}}]},"82":{"line":568,"type":"if","locations":[{"start":{"line":568,"column":6},"end":{"line":568,"column":6}},{"start":{"line":568,"column":6},"end":{"line":568,"column":6}}]},"83":{"line":569,"type":"binary-expr","locations":[{"start":{"line":569,"column":8},"end":{"line":569,"column":39}},{"start":{"line":570,"column":8},"end":{"line":570,"column":49}}]},"84":{"line":575,"type":"cond-expr","locations":[{"start":{"line":575,"column":34},"end":{"line":575,"column":44}},{"start":{"line":575,"column":47},"end":{"line":575,"column":54}}]},"85":{"line":587,"type":"cond-expr","locations":[{"start":{"line":588,"column":8},"end":{"line":588,"column":25}},{"start":{"line":589,"column":8},"end":{"line":589,"column":26}}]},"86":{"line":600,"type":"if","locations":[{"start":{"line":600,"column":4},"end":{"line":600,"column":4}},{"start":{"line":600,"column":4},"end":{"line":600,"column":4}}]},"87":{"line":611,"type":"if","locations":[{"start":{"line":611,"column":4},"end":{"line":611,"column":4}},{"start":{"line":611,"column":4},"end":{"line":611,"column":4}}]},"88":{"line":620,"type":"if","locations":[{"start":{"line":620,"column":6},"end":{"line":620,"column":6}},{"start":{"line":620,"column":6},"end":{"line":620,"column":6}}]},"89":{"line":633,"type":"if","locations":[{"start":{"line":633,"column":4},"end":{"line":633,"column":4}},{"start":{"line":633,"column":4},"end":{"line":633,"column":4}}]},"90":{"line":633,"type":"binary-expr","locations":[{"start":{"line":633,"column":8},"end":{"line":633,"column":10}},{"start":{"line":633,"column":14},"end":{"line":633,"column":16}}]},"91":{"line":662,"type":"switch","locations":[{"start":{"line":663,"column":8},"end":{"line":669,"column":16}},{"start":{"line":670,"column":8},"end":{"line":714,"column":16}},{"start":{"line":715,"column":8},"end":{"line":724,"column":16}}]},"92":{"line":665,"type":"if","locations":[{"start":{"line":665,"column":10},"end":{"line":665,"column":10}},{"start":{"line":665,"column":10},"end":{"line":665,"column":10}}]},"93":{"line":674,"type":"cond-expr","locations":[{"start":{"line":674,"column":33},"end":{"line":674,"column":79}},{"start":{"line":674,"column":83},"end":{"line":674,"column":85}}]},"94":{"line":676,"type":"cond-expr","locations":[{"start":{"line":676,"column":31},"end":{"line":676,"column":73}},{"start":{"line":676,"column":76},"end":{"line":676,"column":78}}]},"95":{"line":678,"type":"switch","locations":[{"start":{"line":683,"column":12},"end":{"line":685,"column":20}},{"start":{"line":687,"column":12},"end":{"line":688,"column":25}},{"start":{"line":690,"column":12},"end":{"line":692,"column":20}}]},"96":{"line":698,"type":"if","locations":[{"start":{"line":698,"column":10},"end":{"line":698,"column":10}},{"start":{"line":698,"column":10},"end":{"line":698,"column":10}}]},"97":{"line":711,"type":"if","locations":[{"start":{"line":711,"column":10},"end":{"line":711,"column":10}},{"start":{"line":711,"column":10},"end":{"line":711,"column":10}}]},"98":{"line":717,"type":"binary-expr","locations":[{"start":{"line":717,"column":19},"end":{"line":717,"column":51}},{"start":{"line":718,"column":20},"end":{"line":722,"column":21}}]},"99":{"line":734,"type":"binary-expr","locations":[{"start":{"line":734,"column":13},"end":{"line":734,"column":31}},{"start":{"line":734,"column":35},"end":{"line":734,"column":65}}]},"100":{"line":735,"type":"binary-expr","locations":[{"start":{"line":735,"column":11},"end":{"line":735,"column":13}},{"start":{"line":735,"column":17},"end":{"line":735,"column":52}}]},"101":{"line":740,"type":"if","locations":[{"start":{"line":740,"column":4},"end":{"line":740,"column":4}},{"start":{"line":740,"column":4},"end":{"line":740,"column":4}}]},"102":{"line":751,"type":"if","locations":[{"start":{"line":751,"column":4},"end":{"line":751,"column":4}},{"start":{"line":751,"column":4},"end":{"line":751,"column":4}}]},"103":{"line":751,"type":"binary-expr","locations":[{"start":{"line":751,"column":8},"end":{"line":751,"column":14}},{"start":{"line":751,"column":18},"end":{"line":751,"column":41}}]},"104":{"line":753,"type":"if","locations":[{"start":{"line":753,"column":6},"end":{"line":753,"column":6}},{"start":{"line":753,"column":6},"end":{"line":753,"column":6}}]},"105":{"line":755,"type":"binary-expr","locations":[{"start":{"line":755,"column":11},"end":{"line":755,"column":17}},{"start":{"line":755,"column":21},"end":{"line":755,"column":33}}]},"106":{"line":766,"type":"if","locations":[{"start":{"line":766,"column":4},"end":{"line":766,"column":4}},{"start":{"line":766,"column":4},"end":{"line":766,"column":4}}]},"107":{"line":768,"type":"if","locations":[{"start":{"line":768,"column":11},"end":{"line":768,"column":11}},{"start":{"line":768,"column":11},"end":{"line":768,"column":11}}]},"108":{"line":770,"type":"if","locations":[{"start":{"line":770,"column":11},"end":{"line":770,"column":11}},{"start":{"line":770,"column":11},"end":{"line":770,"column":11}}]},"109":{"line":780,"type":"if","locations":[{"start":{"line":780,"column":6},"end":{"line":780,"column":6}},{"start":{"line":780,"column":6},"end":{"line":780,"column":6}}]},"110":{"line":793,"type":"binary-expr","locations":[{"start":{"line":793,"column":11},"end":{"line":793,"column":24}},{"start":{"line":793,"column":28},"end":{"line":793,"column":43}}]},"111":{"line":802,"type":"binary-expr","locations":[{"start":{"line":802,"column":15},"end":{"line":802,"column":27}},{"start":{"line":802,"column":32},"end":{"line":802,"column":64}}]},"112":{"line":814,"type":"binary-expr","locations":[{"start":{"line":814,"column":7},"end":{"line":814,"column":51}},{"start":{"line":815,"column":6},"end":{"line":815,"column":33}},{"start":{"line":816,"column":6},"end":{"line":816,"column":44}}]},"113":{"line":831,"type":"if","locations":[{"start":{"line":831,"column":4},"end":{"line":831,"column":4}},{"start":{"line":831,"column":4},"end":{"line":831,"column":4}}]},"114":{"line":831,"type":"binary-expr","locations":[{"start":{"line":831,"column":8},"end":{"line":831,"column":23}},{"start":{"line":831,"column":27},"end":{"line":831,"column":65}}]},"115":{"line":840,"type":"switch","locations":[{"start":{"line":841,"column":6},"end":{"line":843,"column":14}},{"start":{"line":844,"column":6},"end":{"line":846,"column":14}},{"start":{"line":847,"column":6},"end":{"line":849,"column":14}}]},"116":{"line":858,"type":"if","locations":[{"start":{"line":858,"column":4},"end":{"line":858,"column":4}},{"start":{"line":858,"column":4},"end":{"line":858,"column":4}}]},"117":{"line":879,"type":"cond-expr","locations":[{"start":{"line":880,"column":6},"end":{"line":890,"column":7}},{"start":{"line":891,"column":6},"end":{"line":891,"column":13}}]},"118":{"line":894,"type":"cond-expr","locations":[{"start":{"line":895,"column":6},"end":{"line":908,"column":7}},{"start":{"line":909,"column":6},"end":{"line":909,"column":9}}]},"119":{"line":914,"type":"binary-expr","locations":[{"start":{"line":914,"column":16},"end":{"line":914,"column":29}},{"start":{"line":915,"column":17},"end":{"line":923,"column":19}}]},"120":{"line":926,"type":"binary-expr","locations":[{"start":{"line":926,"column":13},"end":{"line":926,"column":25}},{"start":{"line":927,"column":14},"end":{"line":927,"column":68}}]},"121":{"line":943,"type":"binary-expr","locations":[{"start":{"line":943,"column":11},"end":{"line":943,"column":31}},{"start":{"line":944,"column":11},"end":{"line":944,"column":42}}]},"122":{"line":948,"type":"cond-expr","locations":[{"start":{"line":949,"column":6},"end":{"line":951,"column":7}},{"start":{"line":952,"column":6},"end":{"line":960,"column":7}}]},"123":{"line":963,"type":"cond-expr","locations":[{"start":{"line":964,"column":6},"end":{"line":977,"column":7}},{"start":{"line":978,"column":6},"end":{"line":978,"column":47}}]},"124":{"line":963,"type":"binary-expr","locations":[{"start":{"line":963,"column":20},"end":{"line":963,"column":22}},{"start":{"line":963,"column":26},"end":{"line":963,"column":28}}]},"125":{"line":973,"type":"if","locations":[{"start":{"line":973,"column":10},"end":{"line":973,"column":10}},{"start":{"line":973,"column":10},"end":{"line":973,"column":10}}]},"126":{"line":982,"type":"cond-expr","locations":[{"start":{"line":983,"column":6},"end":{"line":996,"column":7}},{"start":{"line":997,"column":6},"end":{"line":1002,"column":7}}]},"127":{"line":982,"type":"binary-expr","locations":[{"start":{"line":982,"column":16},"end":{"line":982,"column":18}},{"start":{"line":982,"column":22},"end":{"line":982,"column":24}}]},"128":{"line":986,"type":"switch","locations":[{"start":{"line":987,"column":12},"end":{"line":989,"column":20}},{"start":{"line":990,"column":12},"end":{"line":992,"column":20}}]},"129":{"line":1012,"type":"binary-expr","locations":[{"start":{"line":1012,"column":17},"end":{"line":1012,"column":19}},{"start":{"line":1012,"column":23},"end":{"line":1012,"column":26}}]},"130":{"line":1012,"type":"binary-expr","locations":[{"start":{"line":1012,"column":37},"end":{"line":1012,"column":39}},{"start":{"line":1012,"column":43},"end":{"line":1012,"column":46}}]},"131":{"line":1016,"type":"cond-expr","locations":[{"start":{"line":1017,"column":4},"end":{"line":1022,"column":5}},{"start":{"line":1023,"column":4},"end":{"line":1023,"column":55}}]},"132":{"line":1019,"type":"if","locations":[{"start":{"line":1019,"column":8},"end":{"line":1019,"column":8}},{"start":{"line":1019,"column":8},"end":{"line":1019,"column":8}}]},"133":{"line":1025,"type":"cond-expr","locations":[{"start":{"line":1026,"column":4},"end":{"line":1031,"column":5}},{"start":{"line":1032,"column":4},"end":{"line":1032,"column":59}}]},"134":{"line":1028,"type":"if","locations":[{"start":{"line":1028,"column":8},"end":{"line":1028,"column":8}},{"start":{"line":1028,"column":8},"end":{"line":1028,"column":8}}]},"135":{"line":1051,"type":"cond-expr","locations":[{"start":{"line":1052,"column":6},"end":{"line":1062,"column":7}},{"start":{"line":1063,"column":6},"end":{"line":1065,"column":7}}]},"136":{"line":1089,"type":"switch","locations":[{"start":{"line":1090,"column":6},"end":{"line":1090,"column":24}},{"start":{"line":1091,"column":6},"end":{"line":1093,"column":14}},{"start":{"line":1094,"column":6},"end":{"line":1100,"column":14}},{"start":{"line":1101,"column":6},"end":{"line":1101,"column":26}},{"start":{"line":1102,"column":6},"end":{"line":1105,"column":14}}]},"137":{"line":1130,"type":"if","locations":[{"start":{"line":1130,"column":6},"end":{"line":1130,"column":6}},{"start":{"line":1130,"column":6},"end":{"line":1130,"column":6}}]},"138":{"line":1174,"type":"binary-expr","locations":[{"start":{"line":1174,"column":16},"end":{"line":1174,"column":39}},{"start":{"line":1175,"column":16},"end":{"line":1175,"column":51}}]},"139":{"line":1176,"type":"if","locations":[{"start":{"line":1176,"column":4},"end":{"line":1176,"column":4}},{"start":{"line":1176,"column":4},"end":{"line":1176,"column":4}}]},"140":{"line":1196,"type":"cond-expr","locations":[{"start":{"line":1197,"column":8},"end":{"line":1197,"column":54}},{"start":{"line":1198,"column":8},"end":{"line":1198,"column":16}}]},"141":{"line":1203,"type":"if","locations":[{"start":{"line":1203,"column":6},"end":{"line":1203,"column":6}},{"start":{"line":1203,"column":6},"end":{"line":1203,"column":6}}]},"142":{"line":1205,"type":"if","locations":[{"start":{"line":1205,"column":8},"end":{"line":1205,"column":8}},{"start":{"line":1205,"column":8},"end":{"line":1205,"column":8}}]},"143":{"line":1213,"type":"cond-expr","locations":[{"start":{"line":1214,"column":6},"end":{"line":1240,"column":7}},{"start":{"line":1241,"column":6},"end":{"line":1250,"column":7}}]},"144":{"line":1217,"type":"if","locations":[{"start":{"line":1217,"column":8},"end":{"line":1217,"column":8}},{"start":{"line":1217,"column":8},"end":{"line":1217,"column":8}}]},"145":{"line":1221,"type":"if","locations":[{"start":{"line":1221,"column":12},"end":{"line":1221,"column":12}},{"start":{"line":1221,"column":12},"end":{"line":1221,"column":12}}]},"146":{"line":1222,"type":"if","locations":[{"start":{"line":1222,"column":14},"end":{"line":1222,"column":14}},{"start":{"line":1222,"column":14},"end":{"line":1222,"column":14}}]},"147":{"line":1231,"type":"if","locations":[{"start":{"line":1231,"column":16},"end":{"line":1231,"column":16}},{"start":{"line":1231,"column":16},"end":{"line":1231,"column":16}}]},"148":{"line":1243,"type":"if","locations":[{"start":{"line":1243,"column":8},"end":{"line":1243,"column":8}},{"start":{"line":1243,"column":8},"end":{"line":1243,"column":8}}]},"149":{"line":1258,"type":"if","locations":[{"start":{"line":1258,"column":4},"end":{"line":1258,"column":4}},{"start":{"line":1258,"column":4},"end":{"line":1258,"column":4}}]},"150":{"line":1260,"type":"binary-expr","locations":[{"start":{"line":1260,"column":13},"end":{"line":1260,"column":29}},{"start":{"line":1260,"column":33},"end":{"line":1260,"column":39}}]},"151":{"line":1262,"type":"if","locations":[{"start":{"line":1262,"column":4},"end":{"line":1262,"column":4}},{"start":{"line":1262,"column":4},"end":{"line":1262,"column":4}}]},"152":{"line":1266,"type":"binary-expr","locations":[{"start":{"line":1266,"column":11},"end":{"line":1266,"column":19}},{"start":{"line":1266,"column":24},"end":{"line":1266,"column":52}}]}}}} \ No newline at end of file +{"/home/webreflection/code/hyperHTML/index.js":{"path":"/home/webreflection/code/hyperHTML/index.js","s":{"1":2,"2":2,"3":2,"4":1,"5":20,"6":2,"7":28,"8":32,"9":32,"10":32,"11":32,"12":2,"13":1,"14":210,"15":2,"16":2,"17":2,"18":2,"19":2,"20":1,"21":62,"22":2,"23":1,"24":2,"25":6,"26":6,"27":6,"28":4,"29":6,"30":6,"31":6,"32":11,"33":6,"34":2,"35":2,"36":2,"37":2,"38":2,"39":2,"40":2,"41":2,"42":2,"43":2,"44":2,"45":1,"46":104,"47":104,"48":104,"49":2,"50":88,"51":50,"52":88,"53":88,"54":88,"55":48,"56":34,"57":14,"58":14,"59":38,"60":48,"61":88,"62":1,"63":282,"64":282,"65":156,"66":156,"67":282,"68":282,"69":1,"70":48,"71":48,"72":12,"73":48,"74":24,"75":48,"76":30,"77":18,"78":4,"79":18,"80":18,"81":16,"82":20,"83":16,"84":16,"85":14,"86":4,"87":4,"88":10,"89":48,"90":36,"91":36,"92":34,"93":4,"94":2,"95":2,"96":30,"97":30,"98":2,"99":2,"100":1,"101":4,"102":4,"103":6,"104":4,"105":4,"106":1,"107":104,"108":104,"109":286,"110":114,"111":114,"112":46,"113":28,"114":28,"115":68,"116":68,"117":2,"118":66,"119":114,"120":4,"121":4,"122":168,"123":6,"124":6,"125":6,"126":162,"127":2,"128":162,"129":162,"130":78,"131":78,"132":4,"133":74,"134":24,"135":24,"136":10,"137":10,"138":12,"139":10,"140":10,"141":40,"142":12,"143":40,"144":4,"145":4,"146":36,"147":78,"148":4,"149":36,"150":36,"151":84,"152":24,"153":60,"154":4,"155":56,"156":10,"157":46,"158":4,"159":42,"160":4,"161":38,"162":28,"163":28,"164":28,"165":28,"166":28,"167":10,"168":4,"169":6,"170":162,"171":1,"172":118,"173":56,"174":56,"175":48,"176":48,"177":1,"178":228,"179":322,"180":322,"181":118,"182":118,"183":118,"184":66,"185":64,"186":64,"187":66,"188":138,"189":4,"190":4,"191":138,"192":2,"193":2,"194":2,"195":2,"196":2,"197":2,"198":2,"199":2,"200":2,"201":1,"202":1,"203":206,"204":2,"205":2,"206":2,"207":1,"208":4,"209":1,"210":2,"211":1,"212":62,"213":90,"214":90,"215":66,"216":62,"217":1,"218":142,"219":1,"220":138,"221":1,"222":136,"223":136,"224":136,"225":136,"226":136,"227":136,"228":64,"229":64,"230":136,"231":1,"232":1,"233":1,"234":135,"235":135,"236":72,"237":63,"238":136,"239":1,"240":2,"241":2,"242":2,"243":1,"244":1,"245":1,"246":1,"247":1,"248":1,"249":2,"250":1,"251":72,"252":1,"253":4,"254":4,"255":4,"256":1,"257":46,"258":46,"259":4,"260":4,"261":2,"262":46,"263":1,"264":10,"265":10,"266":2,"267":8,"268":2,"269":6,"270":2,"271":4,"272":1,"273":10,"274":10,"275":8,"276":1,"277":84,"278":1,"279":100,"280":1,"281":6,"282":6,"283":42,"284":18,"285":1,"286":156,"287":24,"288":1,"289":156,"290":156,"291":104,"292":104,"293":48,"294":48,"295":4,"296":4,"297":156,"298":1,"299":116,"300":2,"301":2,"302":164,"303":90,"304":2,"305":1,"306":1,"307":78,"308":55,"309":2,"310":1,"311":1,"312":1,"313":101,"314":2,"315":21,"316":2,"317":2,"318":2,"319":1,"320":206,"321":206,"322":2,"323":69,"324":5,"325":6,"326":2,"327":162,"328":390,"329":390,"330":205,"331":162,"332":101,"333":2,"334":82,"335":137,"336":137,"337":61,"338":61,"339":76,"340":76,"341":82,"342":82,"343":137,"344":82,"345":2,"346":2,"347":2,"348":38,"349":2,"350":48,"351":2,"352":2,"353":2,"354":2,"355":2,"356":2,"357":2,"358":2,"359":206,"360":144,"361":206,"362":62,"363":2,"364":21,"365":15,"366":6,"367":15,"368":21,"369":2,"370":18,"371":12,"372":4,"373":14,"374":18,"375":1,"376":40,"377":40,"378":10,"379":10,"380":1,"381":36,"382":10,"383":26,"384":1,"385":46,"386":82,"387":8,"388":8,"389":6,"390":8,"391":8,"392":36,"393":36,"394":36,"395":36,"396":36,"397":36,"398":36,"399":36,"400":26,"401":26,"402":4,"403":10,"404":10,"405":36,"406":36,"407":6,"408":30,"409":36,"410":30,"411":36,"412":38,"413":38,"414":38,"415":46,"416":1,"417":32,"418":46,"419":46,"420":46,"421":32,"422":32,"423":1,"424":110,"425":110,"426":110,"427":110,"428":110,"429":110,"430":1,"431":116,"432":116,"433":116,"434":4,"435":4,"436":64,"437":64,"438":64,"439":48,"440":48,"441":48,"442":116,"443":92,"444":116,"445":1,"446":124,"447":110,"448":110,"449":124,"450":124,"451":1,"452":282,"453":300,"454":1,"455":156,"456":156,"457":156,"458":156,"459":124,"460":124,"461":124,"462":124,"463":32,"464":156,"465":1,"466":60,"467":1,"468":60,"469":60,"470":60,"471":1,"472":90,"473":62,"474":62,"475":8,"476":62,"477":90,"478":60,"479":14,"480":14,"481":14,"482":10,"483":10,"484":10,"485":14,"486":10,"487":2,"488":2,"489":2,"490":8,"491":2,"492":8,"493":14,"494":14,"495":14,"496":76,"497":76,"498":52,"499":52,"500":52,"501":76,"502":76,"503":1,"504":46,"505":46,"506":46,"507":46,"508":12,"509":12,"510":46,"511":24,"512":24,"513":46,"514":2,"515":2,"516":2,"517":1,"518":60,"519":60,"520":26,"521":24,"522":26,"523":34,"524":4,"525":4,"526":30,"527":2,"528":104,"529":104,"530":88,"531":88,"532":88,"533":88,"534":104,"535":2,"536":1,"537":30,"538":30,"539":30,"540":30,"541":30,"542":30,"543":30,"544":30,"545":30,"546":30,"547":30,"548":30,"549":30,"550":50,"551":30,"552":46,"553":46,"554":46,"555":46,"556":46,"557":84,"558":84,"559":84,"560":84,"561":84,"562":46,"563":30,"564":1,"565":28,"566":1,"567":30,"568":30,"569":50,"570":50,"571":50,"572":50,"573":50,"574":50,"575":50,"576":42,"577":42,"578":42,"579":16,"580":8,"581":6,"582":6,"583":2,"584":2,"585":30,"586":2,"587":30,"588":2,"589":30,"590":1,"591":30,"592":30,"593":20,"594":20,"595":8,"596":8,"597":2,"598":2,"599":6,"600":6,"601":6,"602":8,"603":20,"604":2,"605":2},"b":{"1":[14,6],"2":[2,12],"3":[2,10],"4":[2,8],"5":[4,4],"6":[2,4],"7":[14,48],"8":[6,42],"9":[6,2],"10":[42,16],"11":[6,4,4],"12":[2,4],"13":[138,56],"14":[48,40],"15":[34,14],"16":[48,44],"17":[156,126],"18":[282,166],"19":[48,46,20],"20":[14,34],"21":[48,34],"22":[12,36],"23":[48,14],"24":[24,24],"25":[14,34],"26":[18,12],"27":[4,14],"28":[16,2],"29":[10,24],"30":[16,4],"31":[14,2],"32":[4,10],"33":[36,12],"34":[34,2],"35":[4,30],"36":[2,2],"37":[2,28],"38":[4,2],"39":[100,112,114,4,164,168,162],"40":[46,68],"41":[114,48],"42":[28,18],"43":[2,66],"44":[6,162],"45":[2,160],"46":[78,84],"47":[4,74],"48":[16,24,24,10,40,36],"49":[12,28],"50":[4,36],"51":[4,74],"52":[24,60],"53":[8,16],"54":[4,56],"55":[10,46],"56":[4,42],"57":[4,38],"58":[28,10],"59":[4,6],"60":[48,8],"61":[118,66,138],"62":[64,2],"63":[4,134],"64":[138,4],"65":[2,1,1],"66":[1,1],"67":[2,2],"68":[66,24],"69":[90,38],"70":[54,8],"71":[2,136],"72":[64,72],"73":[1,135],"74":[72,63],"75":[1,1],"76":[2,1],"77":[4,4],"78":[4,4],"79":[4,42],"80":[46,46],"81":[2,2],"82":[46,46],"83":[2,8],"84":[2,6],"85":[2,4],"86":[8,2],"87":[100,100],"88":[42,14],"89":[104,48,4],"90":[1,1],"91":[1,1],"92":[2,1],"93":[2,1],"94":[206,55],"95":[1,1],"96":[1,1],"97":[2,1],"98":[205,185],"99":[1,1],"100":[2,1],"101":[61,76],"102":[48,22],"103":[48,22],"104":[1,1],"105":[1,1],"106":[6,9],"107":[1,1],"108":[4,8],"109":[10,30],"110":[40,16],"111":[10,26],"112":[8,36,38],"113":[6,2],"114":[8,28],"115":[10,26],"116":[26,4,10],"117":[6,30],"118":[30,6],"119":[38,8],"120":[4,4,64,16,48],"121":[156,110],"122":[124,32],"123":[8,52],"124":[62,28],"125":[8,54],"126":[8,52],"127":[10,4],"128":[10,4],"129":[2,8],"130":[2,6],"131":[52,24],"132":[12,34],"133":[12,12],"134":[24,22],"135":[46,26],"136":[1,1],"137":[60,34],"138":[26,34],"139":[60,34],"140":[24,2],"141":[26,2],"142":[4,30],"143":[30,54],"144":[18,66],"145":[10,8],"146":[16,50],"147":[80,52],"148":[42,8],"149":[50,44,42],"150":[16,26],"151":[6,2],"152":[8,6],"153":[20,10],"154":[2,6],"155":[8,4,2],"156":[2,4],"157":[2,2]},"f":{"1":2,"2":20,"3":28,"4":32,"5":210,"6":2,"7":2,"8":62,"9":14,"10":6,"11":6,"12":4,"13":6,"14":104,"15":88,"16":282,"17":48,"18":30,"19":20,"20":48,"21":4,"22":6,"23":104,"24":286,"25":118,"26":228,"27":2,"28":2,"29":206,"30":4,"31":2,"32":62,"33":142,"34":138,"35":136,"36":2,"37":72,"38":4,"39":46,"40":10,"41":10,"42":84,"43":100,"44":6,"45":42,"46":18,"47":156,"48":156,"49":116,"50":2,"51":164,"52":90,"53":1,"54":78,"55":55,"56":1,"57":101,"58":21,"59":206,"60":69,"61":5,"62":162,"63":101,"64":82,"65":82,"66":38,"67":48,"68":2,"69":206,"70":62,"71":21,"72":21,"73":18,"74":18,"75":40,"76":36,"77":46,"78":32,"79":110,"80":116,"81":124,"82":282,"83":156,"84":60,"85":60,"86":90,"87":14,"88":14,"89":76,"90":46,"91":2,"92":60,"93":104,"94":88,"95":30,"96":28,"97":30,"98":30},"fnMap":{"1":{"name":"(anonymous_1)","line":1,"loc":{"start":{"line":1,"column":17},"end":{"line":1,"column":53}}},"2":{"name":"hyper","line":16,"loc":{"start":{"line":16,"column":2},"end":{"line":16,"column":23}}},"3":{"name":"adopt","line":38,"loc":{"start":{"line":38,"column":16},"end":{"line":38,"column":37}}},"4":{"name":"(anonymous_4)","line":39,"loc":{"start":{"line":39,"column":11},"end":{"line":39,"column":23}}},"5":{"name":"bind","line":50,"loc":{"start":{"line":50,"column":2},"end":{"line":50,"column":25}}},"6":{"name":"define","line":53,"loc":{"start":{"line":53,"column":17},"end":{"line":53,"column":56}}},"7":{"name":"escape","line":58,"loc":{"start":{"line":58,"column":17},"end":{"line":58,"column":39}}},"8":{"name":"wire","line":65,"loc":{"start":{"line":65,"column":2},"end":{"line":65,"column":27}}},"9":{"name":"Component","line":79,"loc":{"start":{"line":79,"column":2},"end":{"line":79,"column":23}}},"10":{"name":"(anonymous_10)","line":84,"loc":{"start":{"line":84,"column":27},"end":{"line":84,"column":40}}},"11":{"name":"(anonymous_11)","line":97,"loc":{"start":{"line":97,"column":33},"end":{"line":97,"column":45}}},"12":{"name":"(anonymous_12)","line":99,"loc":{"start":{"line":99,"column":26},"end":{"line":99,"column":38}}},"13":{"name":"(anonymous_13)","line":101,"loc":{"start":{"line":101,"column":24},"end":{"line":101,"column":41}}},"14":{"name":"Aura","line":141,"loc":{"start":{"line":141,"column":2},"end":{"line":141,"column":34}}},"15":{"name":"splice","line":147,"loc":{"start":{"line":147,"column":26},"end":{"line":147,"column":62}}},"16":{"name":"render","line":181,"loc":{"start":{"line":181,"column":2},"end":{"line":181,"column":28}}},"17":{"name":"setAttribute","line":198,"loc":{"start":{"line":198,"column":2},"end":{"line":198,"column":59}}},"18":{"name":"eventAttr","line":212,"loc":{"start":{"line":212,"column":6},"end":{"line":212,"column":35}}},"19":{"name":"specialAttr","line":220,"loc":{"start":{"line":220,"column":8},"end":{"line":220,"column":39}}},"20":{"name":"normalAttr","line":240,"loc":{"start":{"line":240,"column":8},"end":{"line":240,"column":38}}},"21":{"name":"setTextContent","line":266,"loc":{"start":{"line":266,"column":2},"end":{"line":266,"column":32}}},"22":{"name":"(anonymous_22)","line":268,"loc":{"start":{"line":268,"column":11},"end":{"line":268,"column":28}}},"23":{"name":"setAnyContent","line":278,"loc":{"start":{"line":278,"column":2},"end":{"line":278,"column":49}}},"24":{"name":"anyContent","line":280,"loc":{"start":{"line":280,"column":11},"end":{"line":280,"column":38}}},"25":{"name":"attributesSeeker","line":394,"loc":{"start":{"line":394,"column":2},"end":{"line":394,"column":48}}},"26":{"name":"hyperSeeker","line":420,"loc":{"start":{"line":420,"column":2},"end":{"line":420,"column":43}}},"27":{"name":"(anonymous_27)","line":466,"loc":{"start":{"line":466,"column":13},"end":{"line":466,"column":25}}},"28":{"name":"(anonymous_28)","line":479,"loc":{"start":{"line":479,"column":11},"end":{"line":479,"column":31}}},"29":{"name":"(anonymous_29)","line":481,"loc":{"start":{"line":481,"column":14},"end":{"line":481,"column":27}}},"30":{"name":"fnEscape","line":500,"loc":{"start":{"line":500,"column":2},"end":{"line":500,"column":23}}},"31":{"name":"asHTML","line":505,"loc":{"start":{"line":505,"column":2},"end":{"line":505,"column":24}}},"32":{"name":"createContent","line":510,"loc":{"start":{"line":510,"column":2},"end":{"line":510,"column":31}}},"33":{"name":"createDocumentFragment","line":531,"loc":{"start":{"line":531,"column":2},"end":{"line":531,"column":44}}},"34":{"name":"createFragment","line":537,"loc":{"start":{"line":537,"column":2},"end":{"line":537,"column":38}}},"35":{"name":"createHTMLFragment","line":546,"loc":{"start":{"line":546,"column":2},"end":{"line":546,"column":42}}},"36":{"name":"createSVGFragment","line":582,"loc":{"start":{"line":582,"column":2},"end":{"line":582,"column":41}}},"37":{"name":"createText","line":598,"loc":{"start":{"line":598,"column":2},"end":{"line":598,"column":34}}},"38":{"name":"getCEClass","line":604,"loc":{"start":{"line":604,"column":2},"end":{"line":604,"column":28}}},"39":{"name":"isSpecialAttribute","line":612,"loc":{"start":{"line":612,"column":2},"end":{"line":612,"column":42}}},"40":{"name":"invokeAtDistance","line":622,"loc":{"start":{"line":622,"column":2},"end":{"line":622,"column":45}}},"41":{"name":"invokeTransformer","line":636,"loc":{"start":{"line":636,"column":2},"end":{"line":636,"column":37}}},"42":{"name":"isNode_ish","line":645,"loc":{"start":{"line":645,"column":2},"end":{"line":645,"column":29}}},"43":{"name":"isPromise_ish","line":650,"loc":{"start":{"line":650,"column":2},"end":{"line":650,"column":32}}},"44":{"name":"lazyGetter","line":656,"loc":{"start":{"line":656,"column":2},"end":{"line":656,"column":32}}},"45":{"name":"(anonymous_45)","line":659,"loc":{"start":{"line":659,"column":11},"end":{"line":659,"column":23}}},"46":{"name":"(anonymous_46)","line":662,"loc":{"start":{"line":662,"column":11},"end":{"line":662,"column":28}}},"47":{"name":"removeAttributeList","line":669,"loc":{"start":{"line":669,"column":2},"end":{"line":669,"column":37}}},"48":{"name":"setContent","line":676,"loc":{"start":{"line":676,"column":2},"end":{"line":676,"column":66}}},"49":{"name":"Path","line":694,"loc":{"start":{"line":694,"column":2},"end":{"line":694,"column":34}}},"50":{"name":"(anonymous_50)","line":704,"loc":{"start":{"line":704,"column":6},"end":{"line":704,"column":18}}},"51":{"name":"(anonymous_51)","line":706,"loc":{"start":{"line":706,"column":15},"end":{"line":706,"column":30}}},"52":{"name":"(anonymous_52)","line":707,"loc":{"start":{"line":707,"column":15},"end":{"line":707,"column":37}}},"53":{"name":"(anonymous_53)","line":719,"loc":{"start":{"line":719,"column":6},"end":{"line":719,"column":18}}},"54":{"name":"(anonymous_54)","line":722,"loc":{"start":{"line":722,"column":15},"end":{"line":722,"column":30}}},"55":{"name":"(anonymous_55)","line":728,"loc":{"start":{"line":728,"column":15},"end":{"line":728,"column":37}}},"56":{"name":"(anonymous_56)","line":739,"loc":{"start":{"line":739,"column":17},"end":{"line":739,"column":29}}},"57":{"name":"(anonymous_57)","line":744,"loc":{"start":{"line":744,"column":25},"end":{"line":744,"column":38}}},"58":{"name":"(anonymous_58)","line":751,"loc":{"start":{"line":751,"column":14},"end":{"line":751,"column":26}}},"59":{"name":"unique","line":765,"loc":{"start":{"line":765,"column":2},"end":{"line":765,"column":28}}},"60":{"name":"(anonymous_60)","line":773,"loc":{"start":{"line":773,"column":6},"end":{"line":773,"column":34}}},"61":{"name":"appendNodes","line":776,"loc":{"start":{"line":776,"column":6},"end":{"line":776,"column":45}}},"62":{"name":"(anonymous_62)","line":788,"loc":{"start":{"line":788,"column":6},"end":{"line":788,"column":22}}},"63":{"name":"(anonymous_63)","line":802,"loc":{"start":{"line":802,"column":6},"end":{"line":802,"column":22}}},"64":{"name":"(anonymous_64)","line":807,"loc":{"start":{"line":807,"column":6},"end":{"line":807,"column":34}}},"65":{"name":"(anonymous_65)","line":821,"loc":{"start":{"line":821,"column":6},"end":{"line":821,"column":34}}},"66":{"name":"(anonymous_66)","line":831,"loc":{"start":{"line":831,"column":17},"end":{"line":831,"column":43}}},"67":{"name":"(anonymous_67)","line":835,"loc":{"start":{"line":835,"column":26},"end":{"line":835,"column":48}}},"68":{"name":"(anonymous_68)","line":853,"loc":{"start":{"line":853,"column":19},"end":{"line":853,"column":31}}},"69":{"name":"(anonymous_69)","line":857,"loc":{"start":{"line":857,"column":6},"end":{"line":857,"column":22}}},"70":{"name":"(anonymous_70)","line":868,"loc":{"start":{"line":868,"column":6},"end":{"line":868,"column":26}}},"71":{"name":"(anonymous_71)","line":879,"loc":{"start":{"line":879,"column":4},"end":{"line":879,"column":20}}},"72":{"name":"(anonymous_72)","line":885,"loc":{"start":{"line":885,"column":4},"end":{"line":885,"column":20}}},"73":{"name":"(anonymous_73)","line":888,"loc":{"start":{"line":888,"column":4},"end":{"line":888,"column":20}}},"74":{"name":"(anonymous_74)","line":894,"loc":{"start":{"line":894,"column":4},"end":{"line":894,"column":20}}},"75":{"name":"removePreviousText","line":897,"loc":{"start":{"line":897,"column":2},"end":{"line":897,"column":48}}},"76":{"name":"insertBefore","line":906,"loc":{"start":{"line":906,"column":2},"end":{"line":906,"column":51}}},"77":{"name":"discoverNode","line":916,"loc":{"start":{"line":916,"column":2},"end":{"line":916,"column":63}}},"78":{"name":"discoverUpdates","line":995,"loc":{"start":{"line":995,"column":2},"end":{"line":995,"column":44}}},"79":{"name":"createTemplate","line":1022,"loc":{"start":{"line":1022,"column":2},"end":{"line":1022,"column":36}}},"80":{"name":"createPath","line":1034,"loc":{"start":{"line":1034,"column":2},"end":{"line":1034,"column":28}}},"81":{"name":"createUpdates","line":1068,"loc":{"start":{"line":1068,"column":2},"end":{"line":1068,"column":42}}},"82":{"name":"update","line":1089,"loc":{"start":{"line":1089,"column":2},"end":{"line":1089,"column":20}}},"83":{"name":"upgrade","line":1097,"loc":{"start":{"line":1097,"column":2},"end":{"line":1097,"column":29}}},"84":{"name":"wireContent","line":1118,"loc":{"start":{"line":1118,"column":2},"end":{"line":1118,"column":29}}},"85":{"name":"before","line":1121,"loc":{"start":{"line":1121,"column":4},"end":{"line":1121,"column":30}}},"86":{"name":"after","line":1129,"loc":{"start":{"line":1129,"column":4},"end":{"line":1129,"column":21}}},"87":{"name":"adopt","line":1141,"loc":{"start":{"line":1141,"column":6},"end":{"line":1141,"column":30}}},"88":{"name":"(anonymous_88)","line":1147,"loc":{"start":{"line":1147,"column":20},"end":{"line":1147,"column":55}}},"89":{"name":"update","line":1168,"loc":{"start":{"line":1168,"column":6},"end":{"line":1168,"column":31}}},"90":{"name":"wireWeakly","line":1181,"loc":{"start":{"line":1181,"column":2},"end":{"line":1181,"column":33}}},"91":{"name":"(anonymous_91)","line":1212,"loc":{"start":{"line":1212,"column":12},"end":{"line":1212,"column":24}}},"92":{"name":"majinbuu","line":1226,"loc":{"start":{"line":1226,"column":2},"end":{"line":1226,"column":40}}},"93":{"name":"aura","line":1254,"loc":{"start":{"line":1254,"column":18},"end":{"line":1254,"column":47}}},"94":{"name":"hodor","line":1256,"loc":{"start":{"line":1256,"column":18},"end":{"line":1256,"column":35}}},"95":{"name":"levenstein","line":1273,"loc":{"start":{"line":1273,"column":2},"end":{"line":1273,"column":32}}},"96":{"name":"addOperation","line":1309,"loc":{"start":{"line":1309,"column":2},"end":{"line":1309,"column":56}}},"97":{"name":"getOperations","line":1320,"loc":{"start":{"line":1320,"column":2},"end":{"line":1320,"column":37}}},"98":{"name":"performOperations","line":1363,"loc":{"start":{"line":1363,"column":2},"end":{"line":1363,"column":49}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1402,"column":6}},"2":{"start":{"line":11,"column":2},"end":{"line":11,"column":34}},"3":{"start":{"line":14,"column":2},"end":{"line":14,"column":22}},"4":{"start":{"line":16,"column":2},"end":{"line":33,"column":3}},"5":{"start":{"line":17,"column":4},"end":{"line":32,"column":31}},"6":{"start":{"line":38,"column":2},"end":{"line":45,"column":4}},"7":{"start":{"line":39,"column":4},"end":{"line":44,"column":6}},"8":{"start":{"line":40,"column":6},"end":{"line":40,"column":26}},"9":{"start":{"line":41,"column":6},"end":{"line":41,"column":36}},"10":{"start":{"line":42,"column":6},"end":{"line":42,"column":25}},"11":{"start":{"line":43,"column":6},"end":{"line":43,"column":18}},"12":{"start":{"line":49,"column":2},"end":{"line":49,"column":20}},"13":{"start":{"line":50,"column":2},"end":{"line":50,"column":57}},"14":{"start":{"line":50,"column":27},"end":{"line":50,"column":55}},"15":{"start":{"line":53,"column":2},"end":{"line":55,"column":4}},"16":{"start":{"line":54,"column":4},"end":{"line":54,"column":41}},"17":{"start":{"line":58,"column":2},"end":{"line":60,"column":4}},"18":{"start":{"line":59,"column":4},"end":{"line":59,"column":46}},"19":{"start":{"line":64,"column":2},"end":{"line":64,"column":20}},"20":{"start":{"line":65,"column":2},"end":{"line":72,"column":3}},"21":{"start":{"line":66,"column":4},"end":{"line":71,"column":8}},"22":{"start":{"line":78,"column":2},"end":{"line":78,"column":30}},"23":{"start":{"line":79,"column":2},"end":{"line":79,"column":25}},"24":{"start":{"line":80,"column":2},"end":{"line":111,"column":4}},"25":{"start":{"line":86,"column":8},"end":{"line":86,"column":33}},"26":{"start":{"line":87,"column":8},"end":{"line":90,"column":13}},"27":{"start":{"line":97,"column":47},"end":{"line":97,"column":72}},"28":{"start":{"line":99,"column":40},"end":{"line":99,"column":50}},"29":{"start":{"line":102,"column":8},"end":{"line":102,"column":32}},"30":{"start":{"line":103,"column":8},"end":{"line":103,"column":84}},"31":{"start":{"line":104,"column":8},"end":{"line":104,"column":58}},"32":{"start":{"line":104,"column":32},"end":{"line":104,"column":58}},"33":{"start":{"line":105,"column":8},"end":{"line":105,"column":22}},"34":{"start":{"line":122,"column":2},"end":{"line":122,"column":23}},"35":{"start":{"line":123,"column":2},"end":{"line":123,"column":25}},"36":{"start":{"line":124,"column":2},"end":{"line":124,"column":20}},"37":{"start":{"line":125,"column":2},"end":{"line":125,"column":23}},"38":{"start":{"line":126,"column":2},"end":{"line":126,"column":34}},"39":{"start":{"line":129,"column":2},"end":{"line":129,"column":44}},"40":{"start":{"line":130,"column":2},"end":{"line":130,"column":51}},"41":{"start":{"line":132,"column":2},"end":{"line":132,"column":40}},"42":{"start":{"line":133,"column":2},"end":{"line":133,"column":27}},"43":{"start":{"line":134,"column":2},"end":{"line":134,"column":61}},"44":{"start":{"line":135,"column":2},"end":{"line":135,"column":34}},"45":{"start":{"line":141,"column":2},"end":{"line":145,"column":3}},"46":{"start":{"line":142,"column":4},"end":{"line":142,"column":21}},"47":{"start":{"line":143,"column":4},"end":{"line":143,"column":33}},"48":{"start":{"line":144,"column":4},"end":{"line":144,"column":43}},"49":{"start":{"line":147,"column":2},"end":{"line":174,"column":4}},"50":{"start":{"line":148,"column":4},"end":{"line":159,"column":5}},"51":{"start":{"line":158,"column":6},"end":{"line":158,"column":28}},"52":{"start":{"line":160,"column":4},"end":{"line":160,"column":10}},"53":{"start":{"line":161,"column":4},"end":{"line":161,"column":30}},"54":{"start":{"line":162,"column":4},"end":{"line":172,"column":5}},"55":{"start":{"line":163,"column":6},"end":{"line":170,"column":7}},"56":{"start":{"line":164,"column":8},"end":{"line":164,"column":27}},"57":{"start":{"line":166,"column":8},"end":{"line":166,"column":55}},"58":{"start":{"line":167,"column":8},"end":{"line":169,"column":9}},"59":{"start":{"line":168,"column":10},"end":{"line":168,"column":42}},"60":{"start":{"line":171,"column":6},"end":{"line":171,"column":42}},"61":{"start":{"line":173,"column":4},"end":{"line":173,"column":42}},"62":{"start":{"line":181,"column":2},"end":{"line":192,"column":3}},"63":{"start":{"line":182,"column":4},"end":{"line":182,"column":33}},"64":{"start":{"line":183,"column":4},"end":{"line":189,"column":5}},"65":{"start":{"line":187,"column":6},"end":{"line":187,"column":45}},"66":{"start":{"line":188,"column":6},"end":{"line":188,"column":30}},"67":{"start":{"line":190,"column":4},"end":{"line":190,"column":43}},"68":{"start":{"line":191,"column":4},"end":{"line":191,"column":16}},"69":{"start":{"line":198,"column":2},"end":{"line":263,"column":3}},"70":{"start":{"line":199,"column":4},"end":{"line":208,"column":5}},"71":{"start":{"line":209,"column":4},"end":{"line":209,"column":73}},"72":{"start":{"line":209,"column":47},"end":{"line":209,"column":73}},"73":{"start":{"line":210,"column":4},"end":{"line":210,"column":51}},"74":{"start":{"line":210,"column":17},"end":{"line":210,"column":51}},"75":{"start":{"line":211,"column":4},"end":{"line":262,"column":8}},"76":{"start":{"line":213,"column":8},"end":{"line":217,"column":9}},"77":{"start":{"line":214,"column":10},"end":{"line":214,"column":72}},"78":{"start":{"line":214,"column":24},"end":{"line":214,"column":72}},"79":{"start":{"line":215,"column":10},"end":{"line":215,"column":30}},"80":{"start":{"line":216,"column":10},"end":{"line":216,"column":69}},"81":{"start":{"line":216,"column":24},"end":{"line":216,"column":69}},"82":{"start":{"line":221,"column":10},"end":{"line":238,"column":11}},"83":{"start":{"line":222,"column":12},"end":{"line":222,"column":32}},"84":{"start":{"line":225,"column":12},"end":{"line":237,"column":13}},"85":{"start":{"line":229,"column":14},"end":{"line":236,"column":15}},"86":{"start":{"line":232,"column":16},"end":{"line":232,"column":34}},"87":{"start":{"line":233,"column":16},"end":{"line":233,"column":43}},"88":{"start":{"line":235,"column":16},"end":{"line":235,"column":38}},"89":{"start":{"line":241,"column":10},"end":{"line":260,"column":11}},"90":{"start":{"line":242,"column":12},"end":{"line":242,"column":32}},"91":{"start":{"line":245,"column":12},"end":{"line":259,"column":13}},"92":{"start":{"line":246,"column":14},"end":{"line":258,"column":15}},"93":{"start":{"line":247,"column":16},"end":{"line":251,"column":17}},"94":{"start":{"line":249,"column":18},"end":{"line":249,"column":33}},"95":{"start":{"line":250,"column":18},"end":{"line":250,"column":54}},"96":{"start":{"line":253,"column":16},"end":{"line":253,"column":43}},"97":{"start":{"line":254,"column":16},"end":{"line":257,"column":17}},"98":{"start":{"line":255,"column":18},"end":{"line":255,"column":34}},"99":{"start":{"line":256,"column":18},"end":{"line":256,"column":51}},"100":{"start":{"line":266,"column":2},"end":{"line":274,"column":3}},"101":{"start":{"line":267,"column":4},"end":{"line":267,"column":17}},"102":{"start":{"line":268,"column":4},"end":{"line":273,"column":6}},"103":{"start":{"line":269,"column":6},"end":{"line":272,"column":7}},"104":{"start":{"line":270,"column":8},"end":{"line":270,"column":25}},"105":{"start":{"line":271,"column":8},"end":{"line":271,"column":33}},"106":{"start":{"line":278,"column":2},"end":{"line":387,"column":3}},"107":{"start":{"line":279,"column":4},"end":{"line":279,"column":17}},"108":{"start":{"line":280,"column":4},"end":{"line":386,"column":6}},"109":{"start":{"line":281,"column":6},"end":{"line":385,"column":7}},"110":{"start":{"line":285,"column":10},"end":{"line":285,"column":41}},"111":{"start":{"line":286,"column":10},"end":{"line":304,"column":11}},"112":{"start":{"line":290,"column":12},"end":{"line":293,"column":13}},"113":{"start":{"line":291,"column":14},"end":{"line":291,"column":31}},"114":{"start":{"line":292,"column":14},"end":{"line":292,"column":48}},"115":{"start":{"line":295,"column":12},"end":{"line":295,"column":29}},"116":{"start":{"line":296,"column":12},"end":{"line":303,"column":13}},"117":{"start":{"line":297,"column":14},"end":{"line":297,"column":62}},"118":{"start":{"line":299,"column":14},"end":{"line":302,"column":16}},"119":{"start":{"line":305,"column":10},"end":{"line":305,"column":16}},"120":{"start":{"line":307,"column":10},"end":{"line":307,"column":60}},"121":{"start":{"line":308,"column":10},"end":{"line":308,"column":16}},"122":{"start":{"line":311,"column":10},"end":{"line":317,"column":11}},"123":{"start":{"line":312,"column":12},"end":{"line":312,"column":29}},"124":{"start":{"line":313,"column":12},"end":{"line":313,"column":27}},"125":{"start":{"line":314,"column":12},"end":{"line":314,"column":18}},"126":{"start":{"line":315,"column":17},"end":{"line":317,"column":11}},"127":{"start":{"line":316,"column":12},"end":{"line":316,"column":35}},"128":{"start":{"line":319,"column":10},"end":{"line":319,"column":27}},"129":{"start":{"line":320,"column":10},"end":{"line":383,"column":11}},"130":{"start":{"line":321,"column":12},"end":{"line":321,"column":38}},"131":{"start":{"line":322,"column":12},"end":{"line":356,"column":13}},"132":{"start":{"line":323,"column":14},"end":{"line":323,"column":29}},"133":{"start":{"line":325,"column":14},"end":{"line":355,"column":15}},"134":{"start":{"line":329,"column":18},"end":{"line":329,"column":44}},"135":{"start":{"line":330,"column":18},"end":{"line":330,"column":24}},"136":{"start":{"line":332,"column":18},"end":{"line":332,"column":51}},"137":{"start":{"line":333,"column":18},"end":{"line":335,"column":19}},"138":{"start":{"line":334,"column":20},"end":{"line":334,"column":67}},"139":{"start":{"line":336,"column":18},"end":{"line":336,"column":60}},"140":{"start":{"line":337,"column":18},"end":{"line":337,"column":24}},"141":{"start":{"line":339,"column":18},"end":{"line":341,"column":19}},"142":{"start":{"line":340,"column":20},"end":{"line":340,"column":58}},"143":{"start":{"line":342,"column":18},"end":{"line":351,"column":19}},"144":{"start":{"line":343,"column":20},"end":{"line":343,"column":56}},"145":{"start":{"line":344,"column":20},"end":{"line":344,"column":26}},"146":{"start":{"line":346,"column":20},"end":{"line":350,"column":21}},"147":{"start":{"line":347,"column":22},"end":{"line":349,"column":23}},"148":{"start":{"line":348,"column":24},"end":{"line":348,"column":53}},"149":{"start":{"line":353,"column":18},"end":{"line":353,"column":61}},"150":{"start":{"line":354,"column":18},"end":{"line":354,"column":24}},"151":{"start":{"line":357,"column":17},"end":{"line":383,"column":11}},"152":{"start":{"line":358,"column":12},"end":{"line":364,"column":14}},"153":{"start":{"line":365,"column":17},"end":{"line":383,"column":11}},"154":{"start":{"line":366,"column":12},"end":{"line":366,"column":35}},"155":{"start":{"line":367,"column":17},"end":{"line":383,"column":11}},"156":{"start":{"line":368,"column":12},"end":{"line":368,"column":48}},"157":{"start":{"line":369,"column":17},"end":{"line":383,"column":11}},"158":{"start":{"line":370,"column":12},"end":{"line":370,"column":43}},"159":{"start":{"line":371,"column":17},"end":{"line":383,"column":11}},"160":{"start":{"line":372,"column":12},"end":{"line":372,"column":34}},"161":{"start":{"line":373,"column":17},"end":{"line":383,"column":11}},"162":{"start":{"line":374,"column":12},"end":{"line":374,"column":54}},"163":{"start":{"line":375,"column":12},"end":{"line":375,"column":27}},"164":{"start":{"line":376,"column":12},"end":{"line":376,"column":54}},"165":{"start":{"line":377,"column":12},"end":{"line":377,"column":67}},"166":{"start":{"line":378,"column":12},"end":{"line":378,"column":57}},"167":{"start":{"line":379,"column":17},"end":{"line":383,"column":11}},"168":{"start":{"line":380,"column":12},"end":{"line":380,"column":42}},"169":{"start":{"line":382,"column":12},"end":{"line":382,"column":49}},"170":{"start":{"line":384,"column":10},"end":{"line":384,"column":16}},"171":{"start":{"line":394,"column":2},"end":{"line":417,"column":3}},"172":{"start":{"line":395,"column":4},"end":{"line":416,"column":5}},"173":{"start":{"line":403,"column":6},"end":{"line":403,"column":32}},"174":{"start":{"line":404,"column":6},"end":{"line":415,"column":7}},"175":{"start":{"line":405,"column":8},"end":{"line":405,"column":76}},"176":{"start":{"line":406,"column":8},"end":{"line":414,"column":10}},"177":{"start":{"line":420,"column":2},"end":{"line":450,"column":3}},"178":{"start":{"line":421,"column":4},"end":{"line":449,"column":5}},"179":{"start":{"line":427,"column":6},"end":{"line":427,"column":28}},"180":{"start":{"line":428,"column":6},"end":{"line":448,"column":7}},"181":{"start":{"line":430,"column":10},"end":{"line":430,"column":48}},"182":{"start":{"line":431,"column":10},"end":{"line":431,"column":43}},"183":{"start":{"line":432,"column":10},"end":{"line":432,"column":16}},"184":{"start":{"line":434,"column":10},"end":{"line":437,"column":11}},"185":{"start":{"line":435,"column":12},"end":{"line":435,"column":26}},"186":{"start":{"line":436,"column":12},"end":{"line":436,"column":43}},"187":{"start":{"line":438,"column":10},"end":{"line":438,"column":16}},"188":{"start":{"line":440,"column":10},"end":{"line":446,"column":11}},"189":{"start":{"line":444,"column":12},"end":{"line":444,"column":26}},"190":{"start":{"line":445,"column":12},"end":{"line":445,"column":43}},"191":{"start":{"line":447,"column":10},"end":{"line":447,"column":16}},"192":{"start":{"line":455,"column":2},"end":{"line":455,"column":63}},"193":{"start":{"line":460,"column":2},"end":{"line":462,"column":39}},"194":{"start":{"line":466,"column":2},"end":{"line":470,"column":17}},"195":{"start":{"line":467,"column":14},"end":{"line":467,"column":57}},"196":{"start":{"line":468,"column":14},"end":{"line":468,"column":57}},"197":{"start":{"line":469,"column":14},"end":{"line":469,"column":68}},"198":{"start":{"line":474,"column":2},"end":{"line":474,"column":44}},"199":{"start":{"line":479,"column":2},"end":{"line":483,"column":4}},"200":{"start":{"line":480,"column":4},"end":{"line":481,"column":41}},"201":{"start":{"line":480,"column":52},"end":{"line":480,"column":64}},"202":{"start":{"line":481,"column":9},"end":{"line":481,"column":41}},"203":{"start":{"line":481,"column":29},"end":{"line":481,"column":38}},"204":{"start":{"line":482,"column":4},"end":{"line":482,"column":24}},"205":{"start":{"line":490,"column":2},"end":{"line":490,"column":23}},"206":{"start":{"line":493,"column":2},"end":{"line":499,"column":4}},"207":{"start":{"line":500,"column":2},"end":{"line":502,"column":3}},"208":{"start":{"line":501,"column":4},"end":{"line":501,"column":22}},"209":{"start":{"line":505,"column":2},"end":{"line":507,"column":3}},"210":{"start":{"line":506,"column":4},"end":{"line":506,"column":24}},"211":{"start":{"line":510,"column":2},"end":{"line":528,"column":3}},"212":{"start":{"line":511,"column":4},"end":{"line":526,"column":5}},"213":{"start":{"line":519,"column":6},"end":{"line":519,"column":28}},"214":{"start":{"line":520,"column":6},"end":{"line":525,"column":7}},"215":{"start":{"line":524,"column":8},"end":{"line":524,"column":28}},"216":{"start":{"line":527,"column":4},"end":{"line":527,"column":55}},"217":{"start":{"line":531,"column":2},"end":{"line":533,"column":3}},"218":{"start":{"line":532,"column":4},"end":{"line":532,"column":45}},"219":{"start":{"line":537,"column":2},"end":{"line":543,"column":3}},"220":{"start":{"line":538,"column":4},"end":{"line":542,"column":40}},"221":{"start":{"line":546,"column":2},"end":{"line":579,"column":3}},"222":{"start":{"line":547,"column":4},"end":{"line":547,"column":17}},"223":{"start":{"line":548,"column":4},"end":{"line":548,"column":38}},"224":{"start":{"line":549,"column":4},"end":{"line":549,"column":55}},"225":{"start":{"line":550,"column":4},"end":{"line":550,"column":44}},"226":{"start":{"line":551,"column":4},"end":{"line":551,"column":31}},"227":{"start":{"line":552,"column":4},"end":{"line":562,"column":5}},"228":{"start":{"line":554,"column":6},"end":{"line":554,"column":50}},"229":{"start":{"line":561,"column":6},"end":{"line":561,"column":88}},"230":{"start":{"line":563,"column":4},"end":{"line":577,"column":5}},"231":{"start":{"line":567,"column":6},"end":{"line":567,"column":31}},"232":{"start":{"line":568,"column":6},"end":{"line":568,"column":58}},"233":{"start":{"line":569,"column":6},"end":{"line":569,"column":78}},"234":{"start":{"line":571,"column":6},"end":{"line":571,"column":33}},"235":{"start":{"line":572,"column":6},"end":{"line":576,"column":7}},"236":{"start":{"line":573,"column":8},"end":{"line":573,"column":37}},"237":{"start":{"line":575,"column":8},"end":{"line":575,"column":64}},"238":{"start":{"line":578,"column":4},"end":{"line":578,"column":20}},"239":{"start":{"line":582,"column":2},"end":{"line":595,"column":3}},"240":{"start":{"line":583,"column":4},"end":{"line":583,"column":38}},"241":{"start":{"line":584,"column":4},"end":{"line":584,"column":52}},"242":{"start":{"line":585,"column":4},"end":{"line":593,"column":5}},"243":{"start":{"line":586,"column":6},"end":{"line":586,"column":52}},"244":{"start":{"line":587,"column":6},"end":{"line":587,"column":84}},"245":{"start":{"line":588,"column":6},"end":{"line":588,"column":73}},"246":{"start":{"line":590,"column":6},"end":{"line":590,"column":69}},"247":{"start":{"line":591,"column":6},"end":{"line":591,"column":33}},"248":{"start":{"line":592,"column":6},"end":{"line":592,"column":62}},"249":{"start":{"line":594,"column":4},"end":{"line":594,"column":20}},"250":{"start":{"line":598,"column":2},"end":{"line":600,"column":3}},"251":{"start":{"line":599,"column":4},"end":{"line":599,"column":51}},"252":{"start":{"line":604,"column":2},"end":{"line":608,"column":3}},"253":{"start":{"line":605,"column":4},"end":{"line":605,"column":29}},"254":{"start":{"line":606,"column":4},"end":{"line":606,"column":66}},"255":{"start":{"line":607,"column":4},"end":{"line":607,"column":53}},"256":{"start":{"line":612,"column":2},"end":{"line":619,"column":3}},"257":{"start":{"line":613,"column":4},"end":{"line":613,"column":46}},"258":{"start":{"line":614,"column":4},"end":{"line":617,"column":5}},"259":{"start":{"line":615,"column":6},"end":{"line":615,"column":35}},"260":{"start":{"line":616,"column":6},"end":{"line":616,"column":40}},"261":{"start":{"line":616,"column":17},"end":{"line":616,"column":40}},"262":{"start":{"line":618,"column":4},"end":{"line":618,"column":34}},"263":{"start":{"line":622,"column":2},"end":{"line":633,"column":3}},"264":{"start":{"line":623,"column":4},"end":{"line":623,"column":32}},"265":{"start":{"line":624,"column":4},"end":{"line":632,"column":5}},"266":{"start":{"line":625,"column":6},"end":{"line":625,"column":62}},"267":{"start":{"line":626,"column":11},"end":{"line":632,"column":5}},"268":{"start":{"line":627,"column":6},"end":{"line":627,"column":48}},"269":{"start":{"line":628,"column":11},"end":{"line":632,"column":5}},"270":{"start":{"line":629,"column":6},"end":{"line":629,"column":62}},"271":{"start":{"line":631,"column":6},"end":{"line":631,"column":63}},"272":{"start":{"line":636,"column":2},"end":{"line":642,"column":3}},"273":{"start":{"line":637,"column":4},"end":{"line":641,"column":5}},"274":{"start":{"line":638,"column":6},"end":{"line":640,"column":7}},"275":{"start":{"line":639,"column":8},"end":{"line":639,"column":46}},"276":{"start":{"line":645,"column":2},"end":{"line":647,"column":3}},"277":{"start":{"line":646,"column":4},"end":{"line":646,"column":35}},"278":{"start":{"line":650,"column":2},"end":{"line":652,"column":3}},"279":{"start":{"line":651,"column":4},"end":{"line":651,"column":44}},"280":{"start":{"line":656,"column":2},"end":{"line":666,"column":3}},"281":{"start":{"line":657,"column":4},"end":{"line":657,"column":34}},"282":{"start":{"line":658,"column":4},"end":{"line":665,"column":6}},"283":{"start":{"line":660,"column":8},"end":{"line":660,"column":66}},"284":{"start":{"line":663,"column":8},"end":{"line":663,"column":73}},"285":{"start":{"line":669,"column":2},"end":{"line":673,"column":3}},"286":{"start":{"line":670,"column":4},"end":{"line":672,"column":5}},"287":{"start":{"line":671,"column":6},"end":{"line":671,"column":41}},"288":{"start":{"line":676,"column":2},"end":{"line":691,"column":3}},"289":{"start":{"line":677,"column":4},"end":{"line":677,"column":15}},"290":{"start":{"line":678,"column":4},"end":{"line":689,"column":5}},"291":{"start":{"line":681,"column":8},"end":{"line":681,"column":81}},"292":{"start":{"line":682,"column":8},"end":{"line":682,"column":14}},"293":{"start":{"line":684,"column":8},"end":{"line":684,"column":67}},"294":{"start":{"line":685,"column":8},"end":{"line":685,"column":14}},"295":{"start":{"line":687,"column":8},"end":{"line":687,"column":40}},"296":{"start":{"line":688,"column":8},"end":{"line":688,"column":14}},"297":{"start":{"line":690,"column":4},"end":{"line":690,"column":18}},"298":{"start":{"line":694,"column":2},"end":{"line":696,"column":3}},"299":{"start":{"line":695,"column":4},"end":{"line":695,"column":60}},"300":{"start":{"line":703,"column":2},"end":{"line":715,"column":14}},"301":{"start":{"line":705,"column":8},"end":{"line":713,"column":10}},"302":{"start":{"line":706,"column":32},"end":{"line":706,"column":52}},"303":{"start":{"line":708,"column":12},"end":{"line":711,"column":15}},"304":{"start":{"line":718,"column":2},"end":{"line":733,"column":10}},"305":{"start":{"line":720,"column":8},"end":{"line":720,"column":27}},"306":{"start":{"line":721,"column":8},"end":{"line":731,"column":10}},"307":{"start":{"line":723,"column":12},"end":{"line":723,"column":37}},"308":{"start":{"line":729,"column":12},"end":{"line":729,"column":39}},"309":{"start":{"line":738,"column":2},"end":{"line":747,"column":21}},"310":{"start":{"line":740,"column":18},"end":{"line":740,"column":45}},"311":{"start":{"line":743,"column":18},"end":{"line":743,"column":44}},"312":{"start":{"line":744,"column":18},"end":{"line":746,"column":20}},"313":{"start":{"line":745,"column":20},"end":{"line":745,"column":50}},"314":{"start":{"line":750,"column":2},"end":{"line":751,"column":69}},"315":{"start":{"line":751,"column":28},"end":{"line":751,"column":66}},"316":{"start":{"line":758,"column":2},"end":{"line":758,"column":45}},"317":{"start":{"line":761,"column":2},"end":{"line":761,"column":24}},"318":{"start":{"line":764,"column":2},"end":{"line":764,"column":35}},"319":{"start":{"line":765,"column":2},"end":{"line":769,"column":3}},"320":{"start":{"line":766,"column":4},"end":{"line":766,"column":40}},"321":{"start":{"line":767,"column":4},"end":{"line":768,"column":44}},"322":{"start":{"line":772,"column":2},"end":{"line":784,"column":8}},"323":{"start":{"line":774,"column":8},"end":{"line":774,"column":44}},"324":{"start":{"line":777,"column":8},"end":{"line":783,"column":9}},"325":{"start":{"line":782,"column":10},"end":{"line":782,"column":42}},"326":{"start":{"line":787,"column":2},"end":{"line":802,"column":48}},"327":{"start":{"line":789,"column":8},"end":{"line":799,"column":9}},"328":{"start":{"line":796,"column":10},"end":{"line":796,"column":32}},"329":{"start":{"line":797,"column":10},"end":{"line":798,"column":34}},"330":{"start":{"line":798,"column":12},"end":{"line":798,"column":34}},"331":{"start":{"line":800,"column":8},"end":{"line":800,"column":24}},"332":{"start":{"line":802,"column":24},"end":{"line":802,"column":45}},"333":{"start":{"line":806,"column":2},"end":{"line":826,"column":8}},"334":{"start":{"line":808,"column":8},"end":{"line":818,"column":9}},"335":{"start":{"line":809,"column":10},"end":{"line":809,"column":27}},"336":{"start":{"line":810,"column":10},"end":{"line":817,"column":11}},"337":{"start":{"line":812,"column":14},"end":{"line":812,"column":60}},"338":{"start":{"line":813,"column":14},"end":{"line":813,"column":20}},"339":{"start":{"line":815,"column":14},"end":{"line":815,"column":53}},"340":{"start":{"line":816,"column":14},"end":{"line":816,"column":20}},"341":{"start":{"line":819,"column":8},"end":{"line":819,"column":26}},"342":{"start":{"line":822,"column":8},"end":{"line":824,"column":9}},"343":{"start":{"line":823,"column":10},"end":{"line":823,"column":54}},"344":{"start":{"line":825,"column":8},"end":{"line":825,"column":26}},"345":{"start":{"line":829,"column":2},"end":{"line":829,"column":105}},"346":{"start":{"line":830,"column":2},"end":{"line":830,"column":94}},"347":{"start":{"line":831,"column":2},"end":{"line":833,"column":4}},"348":{"start":{"line":832,"column":4},"end":{"line":832,"column":67}},"349":{"start":{"line":835,"column":2},"end":{"line":837,"column":4}},"350":{"start":{"line":836,"column":4},"end":{"line":836,"column":48}},"351":{"start":{"line":840,"column":2},"end":{"line":840,"column":28}},"352":{"start":{"line":843,"column":2},"end":{"line":843,"column":27}},"353":{"start":{"line":846,"column":2},"end":{"line":846,"column":27}},"354":{"start":{"line":849,"column":2},"end":{"line":849,"column":25}},"355":{"start":{"line":853,"column":2},"end":{"line":871,"column":7}},"356":{"start":{"line":854,"column":4},"end":{"line":854,"column":66}},"357":{"start":{"line":855,"column":4},"end":{"line":855,"column":65}},"358":{"start":{"line":856,"column":4},"end":{"line":870,"column":8}},"359":{"start":{"line":858,"column":8},"end":{"line":865,"column":9}},"360":{"start":{"line":864,"column":10},"end":{"line":864,"column":54}},"361":{"start":{"line":866,"column":8},"end":{"line":866,"column":21}},"362":{"start":{"line":869,"column":8},"end":{"line":869,"column":40}},"363":{"start":{"line":878,"column":2},"end":{"line":885,"column":56}},"364":{"start":{"line":880,"column":6},"end":{"line":882,"column":7}},"365":{"start":{"line":881,"column":8},"end":{"line":881,"column":56}},"366":{"start":{"line":881,"column":44},"end":{"line":881,"column":56}},"367":{"start":{"line":883,"column":6},"end":{"line":883,"column":23}},"368":{"start":{"line":885,"column":22},"end":{"line":885,"column":53}},"369":{"start":{"line":887,"column":2},"end":{"line":894,"column":60}},"370":{"start":{"line":889,"column":6},"end":{"line":891,"column":7}},"371":{"start":{"line":890,"column":7},"end":{"line":890,"column":55}},"372":{"start":{"line":890,"column":43},"end":{"line":890,"column":55}},"373":{"start":{"line":892,"column":6},"end":{"line":892,"column":23}},"374":{"start":{"line":894,"column":22},"end":{"line":894,"column":57}},"375":{"start":{"line":897,"column":2},"end":{"line":903,"column":3}},"376":{"start":{"line":898,"column":4},"end":{"line":898,"column":47}},"377":{"start":{"line":899,"column":4},"end":{"line":902,"column":5}},"378":{"start":{"line":900,"column":6},"end":{"line":900,"column":46}},"379":{"start":{"line":901,"column":6},"end":{"line":901,"column":43}},"380":{"start":{"line":906,"column":2},"end":{"line":912,"column":3}},"381":{"start":{"line":907,"column":4},"end":{"line":911,"column":5}},"382":{"start":{"line":908,"column":6},"end":{"line":908,"column":45}},"383":{"start":{"line":910,"column":6},"end":{"line":910,"column":37}},"384":{"start":{"line":916,"column":2},"end":{"line":992,"column":3}},"385":{"start":{"line":917,"column":4},"end":{"line":990,"column":5}},"386":{"start":{"line":926,"column":6},"end":{"line":989,"column":7}},"387":{"start":{"line":928,"column":10},"end":{"line":928,"column":38}},"388":{"start":{"line":929,"column":10},"end":{"line":931,"column":11}},"389":{"start":{"line":930,"column":12},"end":{"line":930,"column":46}},"390":{"start":{"line":932,"column":10},"end":{"line":932,"column":47}},"391":{"start":{"line":933,"column":10},"end":{"line":933,"column":16}},"392":{"start":{"line":935,"column":10},"end":{"line":935,"column":49}},"393":{"start":{"line":936,"column":10},"end":{"line":936,"column":68}},"394":{"start":{"line":937,"column":10},"end":{"line":937,"column":55}},"395":{"start":{"line":938,"column":10},"end":{"line":938,"column":86}},"396":{"start":{"line":939,"column":10},"end":{"line":939,"column":51}},"397":{"start":{"line":940,"column":10},"end":{"line":940,"column":79}},"398":{"start":{"line":941,"column":10},"end":{"line":941,"column":47}},"399":{"start":{"line":942,"column":10},"end":{"line":957,"column":11}},"400":{"start":{"line":948,"column":14},"end":{"line":948,"column":38}},"401":{"start":{"line":949,"column":14},"end":{"line":949,"column":20}},"402":{"start":{"line":952,"column":14},"end":{"line":952,"column":25}},"403":{"start":{"line":955,"column":14},"end":{"line":955,"column":56}},"404":{"start":{"line":956,"column":14},"end":{"line":956,"column":20}},"405":{"start":{"line":958,"column":10},"end":{"line":961,"column":12}},"406":{"start":{"line":962,"column":10},"end":{"line":974,"column":11}},"407":{"start":{"line":963,"column":12},"end":{"line":967,"column":14}},"408":{"start":{"line":969,"column":12},"end":{"line":973,"column":14}},"409":{"start":{"line":975,"column":10},"end":{"line":977,"column":11}},"410":{"start":{"line":976,"column":12},"end":{"line":976,"column":51}},"411":{"start":{"line":978,"column":10},"end":{"line":978,"column":16}},"412":{"start":{"line":981,"column":10},"end":{"line":986,"column":22}},"413":{"start":{"line":987,"column":10},"end":{"line":987,"column":30}},"414":{"start":{"line":988,"column":10},"end":{"line":988,"column":16}},"415":{"start":{"line":991,"column":4},"end":{"line":991,"column":18}},"416":{"start":{"line":995,"column":2},"end":{"line":1014,"column":3}},"417":{"start":{"line":996,"column":4},"end":{"line":1011,"column":5}},"418":{"start":{"line":1003,"column":6},"end":{"line":1003,"column":22}},"419":{"start":{"line":1004,"column":6},"end":{"line":1004,"column":22}},"420":{"start":{"line":1005,"column":6},"end":{"line":1010,"column":8}},"421":{"start":{"line":1012,"column":4},"end":{"line":1012,"column":42}},"422":{"start":{"line":1013,"column":4},"end":{"line":1013,"column":19}},"423":{"start":{"line":1022,"column":2},"end":{"line":1029,"column":3}},"424":{"start":{"line":1023,"column":4},"end":{"line":1023,"column":19}},"425":{"start":{"line":1024,"column":4},"end":{"line":1024,"column":61}},"426":{"start":{"line":1025,"column":4},"end":{"line":1025,"column":50}},"427":{"start":{"line":1026,"column":4},"end":{"line":1026,"column":51}},"428":{"start":{"line":1027,"column":4},"end":{"line":1027,"column":34}},"429":{"start":{"line":1028,"column":4},"end":{"line":1028,"column":16}},"430":{"start":{"line":1034,"column":2},"end":{"line":1063,"column":3}},"431":{"start":{"line":1035,"column":4},"end":{"line":1035,"column":18}},"432":{"start":{"line":1036,"column":4},"end":{"line":1036,"column":19}},"433":{"start":{"line":1037,"column":4},"end":{"line":1054,"column":5}},"434":{"start":{"line":1040,"column":8},"end":{"line":1040,"column":26}},"435":{"start":{"line":1041,"column":8},"end":{"line":1041,"column":14}},"436":{"start":{"line":1043,"column":8},"end":{"line":1043,"column":37}},"437":{"start":{"line":1044,"column":8},"end":{"line":1047,"column":10}},"438":{"start":{"line":1048,"column":8},"end":{"line":1048,"column":14}},"439":{"start":{"line":1051,"column":8},"end":{"line":1051,"column":39}},"440":{"start":{"line":1052,"column":8},"end":{"line":1052,"column":46}},"441":{"start":{"line":1053,"column":8},"end":{"line":1053,"column":14}},"442":{"start":{"line":1055,"column":4},"end":{"line":1061,"column":5}},"443":{"start":{"line":1060,"column":6},"end":{"line":1060,"column":81}},"444":{"start":{"line":1062,"column":4},"end":{"line":1062,"column":16}},"445":{"start":{"line":1068,"column":2},"end":{"line":1086,"column":3}},"446":{"start":{"line":1069,"column":4},"end":{"line":1083,"column":5}},"447":{"start":{"line":1076,"column":6},"end":{"line":1076,"column":22}},"448":{"start":{"line":1077,"column":6},"end":{"line":1082,"column":8}},"449":{"start":{"line":1084,"column":4},"end":{"line":1084,"column":42}},"450":{"start":{"line":1085,"column":4},"end":{"line":1085,"column":19}},"451":{"start":{"line":1089,"column":2},"end":{"line":1093,"column":3}},"452":{"start":{"line":1090,"column":4},"end":{"line":1092,"column":5}},"453":{"start":{"line":1091,"column":6},"end":{"line":1091,"column":32}},"454":{"start":{"line":1097,"column":2},"end":{"line":1111,"column":3}},"455":{"start":{"line":1098,"column":4},"end":{"line":1098,"column":28}},"456":{"start":{"line":1099,"column":4},"end":{"line":1099,"column":16}},"457":{"start":{"line":1100,"column":4},"end":{"line":1101,"column":52}},"458":{"start":{"line":1102,"column":4},"end":{"line":1109,"column":5}},"459":{"start":{"line":1103,"column":6},"end":{"line":1103,"column":46}},"460":{"start":{"line":1104,"column":6},"end":{"line":1104,"column":63}},"461":{"start":{"line":1105,"column":6},"end":{"line":1105,"column":28}},"462":{"start":{"line":1106,"column":6},"end":{"line":1106,"column":33}},"463":{"start":{"line":1108,"column":6},"end":{"line":1108,"column":70}},"464":{"start":{"line":1110,"column":4},"end":{"line":1110,"column":50}},"465":{"start":{"line":1118,"column":2},"end":{"line":1178,"column":3}},"466":{"start":{"line":1119,"column":4},"end":{"line":1119,"column":71}},"467":{"start":{"line":1121,"column":4},"end":{"line":1127,"column":5}},"468":{"start":{"line":1122,"column":6},"end":{"line":1122,"column":50}},"469":{"start":{"line":1123,"column":6},"end":{"line":1125,"column":17}},"470":{"start":{"line":1126,"column":6},"end":{"line":1126,"column":31}},"471":{"start":{"line":1129,"column":4},"end":{"line":1138,"column":5}},"472":{"start":{"line":1130,"column":6},"end":{"line":1136,"column":7}},"473":{"start":{"line":1131,"column":8},"end":{"line":1131,"column":22}},"474":{"start":{"line":1132,"column":8},"end":{"line":1134,"column":9}},"475":{"start":{"line":1133,"column":10},"end":{"line":1133,"column":66}},"476":{"start":{"line":1135,"column":8},"end":{"line":1135,"column":42}},"477":{"start":{"line":1137,"column":6},"end":{"line":1137,"column":21}},"478":{"start":{"line":1140,"column":4},"end":{"line":1177,"column":8}},"479":{"start":{"line":1142,"column":8},"end":{"line":1142,"column":29}},"480":{"start":{"line":1143,"column":8},"end":{"line":1143,"column":30}},"481":{"start":{"line":1144,"column":8},"end":{"line":1165,"column":9}},"482":{"start":{"line":1145,"column":10},"end":{"line":1145,"column":23}},"483":{"start":{"line":1146,"column":10},"end":{"line":1146,"column":29}},"484":{"start":{"line":1147,"column":10},"end":{"line":1164,"column":12}},"485":{"start":{"line":1148,"column":12},"end":{"line":1161,"column":13}},"486":{"start":{"line":1149,"column":14},"end":{"line":1160,"column":15}},"487":{"start":{"line":1150,"column":16},"end":{"line":1150,"column":40}},"488":{"start":{"line":1151,"column":16},"end":{"line":1155,"column":18}},"489":{"start":{"line":1156,"column":16},"end":{"line":1156,"column":47}},"490":{"start":{"line":1158,"column":16},"end":{"line":1158,"column":66}},"491":{"start":{"line":1158,"column":53},"end":{"line":1158,"column":66}},"492":{"start":{"line":1159,"column":16},"end":{"line":1159,"column":49}},"493":{"start":{"line":1162,"column":12},"end":{"line":1162,"column":37}},"494":{"start":{"line":1163,"column":12},"end":{"line":1163,"column":27}},"495":{"start":{"line":1166,"column":8},"end":{"line":1166,"column":23}},"496":{"start":{"line":1169,"column":8},"end":{"line":1169,"column":30}},"497":{"start":{"line":1170,"column":8},"end":{"line":1174,"column":9}},"498":{"start":{"line":1171,"column":10},"end":{"line":1171,"column":23}},"499":{"start":{"line":1172,"column":10},"end":{"line":1172,"column":29}},"500":{"start":{"line":1173,"column":10},"end":{"line":1173,"column":33}},"501":{"start":{"line":1175,"column":8},"end":{"line":1175,"column":38}},"502":{"start":{"line":1176,"column":8},"end":{"line":1176,"column":23}},"503":{"start":{"line":1181,"column":2},"end":{"line":1194,"column":3}},"504":{"start":{"line":1182,"column":4},"end":{"line":1182,"column":30}},"505":{"start":{"line":1183,"column":4},"end":{"line":1183,"column":30}},"506":{"start":{"line":1184,"column":4},"end":{"line":1184,"column":18}},"507":{"start":{"line":1185,"column":4},"end":{"line":1188,"column":5}},"508":{"start":{"line":1186,"column":6},"end":{"line":1186,"column":29}},"509":{"start":{"line":1187,"column":6},"end":{"line":1187,"column":40}},"510":{"start":{"line":1189,"column":4},"end":{"line":1192,"column":5}},"511":{"start":{"line":1190,"column":6},"end":{"line":1190,"column":16}},"512":{"start":{"line":1191,"column":6},"end":{"line":1191,"column":27}},"513":{"start":{"line":1193,"column":4},"end":{"line":1193,"column":54}},"514":{"start":{"line":1205,"column":2},"end":{"line":1205,"column":29}},"515":{"start":{"line":1210,"column":2},"end":{"line":1210,"column":15}},"516":{"start":{"line":1217,"column":2},"end":{"line":1222,"column":3}},"517":{"start":{"line":1226,"column":2},"end":{"line":1246,"column":3}},"518":{"start":{"line":1227,"column":4},"end":{"line":1231,"column":5}},"519":{"start":{"line":1232,"column":4},"end":{"line":1237,"column":5}},"520":{"start":{"line":1233,"column":6},"end":{"line":1235,"column":7}},"521":{"start":{"line":1234,"column":8},"end":{"line":1234,"column":60}},"522":{"start":{"line":1236,"column":6},"end":{"line":1236,"column":13}},"523":{"start":{"line":1238,"column":4},"end":{"line":1241,"column":5}},"524":{"start":{"line":1239,"column":6},"end":{"line":1239,"column":21}},"525":{"start":{"line":1240,"column":6},"end":{"line":1240,"column":13}},"526":{"start":{"line":1242,"column":4},"end":{"line":1245,"column":6}},"527":{"start":{"line":1254,"column":2},"end":{"line":1263,"column":4}},"528":{"start":{"line":1255,"column":4},"end":{"line":1255,"column":29}},"529":{"start":{"line":1256,"column":4},"end":{"line":1261,"column":6}},"530":{"start":{"line":1257,"column":6},"end":{"line":1257,"column":27}},"531":{"start":{"line":1258,"column":6},"end":{"line":1258,"column":60}},"532":{"start":{"line":1259,"column":6},"end":{"line":1259,"column":26}},"533":{"start":{"line":1260,"column":6},"end":{"line":1260,"column":20}},"534":{"start":{"line":1262,"column":4},"end":{"line":1262,"column":16}},"535":{"start":{"line":1265,"column":2},"end":{"line":1265,"column":18}},"536":{"start":{"line":1273,"column":2},"end":{"line":1306,"column":3}},"537":{"start":{"line":1274,"column":4},"end":{"line":1274,"column":37}},"538":{"start":{"line":1275,"column":4},"end":{"line":1275,"column":33}},"539":{"start":{"line":1276,"column":4},"end":{"line":1276,"column":37}},"540":{"start":{"line":1277,"column":4},"end":{"line":1277,"column":14}},"541":{"start":{"line":1278,"column":4},"end":{"line":1278,"column":14}},"542":{"start":{"line":1279,"column":4},"end":{"line":1279,"column":14}},"543":{"start":{"line":1280,"column":4},"end":{"line":1280,"column":14}},"544":{"start":{"line":1281,"column":4},"end":{"line":1281,"column":17}},"545":{"start":{"line":1282,"column":4},"end":{"line":1282,"column":17}},"546":{"start":{"line":1283,"column":4},"end":{"line":1283,"column":22}},"547":{"start":{"line":1284,"column":4},"end":{"line":1284,"column":36}},"548":{"start":{"line":1285,"column":4},"end":{"line":1285,"column":16}},"549":{"start":{"line":1286,"column":4},"end":{"line":1286,"column":39}},"550":{"start":{"line":1286,"column":27},"end":{"line":1286,"column":39}},"551":{"start":{"line":1287,"column":4},"end":{"line":1304,"column":5}},"552":{"start":{"line":1288,"column":6},"end":{"line":1288,"column":16}},"553":{"start":{"line":1289,"column":6},"end":{"line":1289,"column":26}},"554":{"start":{"line":1290,"column":6},"end":{"line":1290,"column":26}},"555":{"start":{"line":1291,"column":6},"end":{"line":1291,"column":25}},"556":{"start":{"line":1292,"column":6},"end":{"line":1302,"column":7}},"557":{"start":{"line":1293,"column":8},"end":{"line":1293,"column":33}},"558":{"start":{"line":1294,"column":8},"end":{"line":1294,"column":33}},"559":{"start":{"line":1295,"column":8},"end":{"line":1295,"column":58}},"560":{"start":{"line":1296,"column":8},"end":{"line":1300,"column":39}},"561":{"start":{"line":1301,"column":8},"end":{"line":1301,"column":12}},"562":{"start":{"line":1303,"column":6},"end":{"line":1303,"column":10}},"563":{"start":{"line":1305,"column":4},"end":{"line":1305,"column":16}},"564":{"start":{"line":1309,"column":2},"end":{"line":1317,"column":3}},"565":{"start":{"line":1310,"column":4},"end":{"line":1316,"column":7}},"566":{"start":{"line":1320,"column":2},"end":{"line":1360,"column":3}},"567":{"start":{"line":1321,"column":4},"end":{"line":1329,"column":5}},"568":{"start":{"line":1330,"column":4},"end":{"line":1352,"column":5}},"569":{"start":{"line":1331,"column":6},"end":{"line":1331,"column":20}},"570":{"start":{"line":1332,"column":6},"end":{"line":1332,"column":26}},"571":{"start":{"line":1333,"column":6},"end":{"line":1333,"column":28}},"572":{"start":{"line":1334,"column":6},"end":{"line":1334,"column":27}},"573":{"start":{"line":1335,"column":6},"end":{"line":1335,"column":32}},"574":{"start":{"line":1336,"column":6},"end":{"line":1336,"column":36}},"575":{"start":{"line":1337,"column":6},"end":{"line":1351,"column":7}},"576":{"start":{"line":1338,"column":8},"end":{"line":1338,"column":12}},"577":{"start":{"line":1339,"column":8},"end":{"line":1339,"column":12}},"578":{"start":{"line":1340,"column":8},"end":{"line":1342,"column":9}},"579":{"start":{"line":1341,"column":10},"end":{"line":1341,"column":58}},"580":{"start":{"line":1344,"column":11},"end":{"line":1351,"column":7}},"581":{"start":{"line":1345,"column":8},"end":{"line":1345,"column":12}},"582":{"start":{"line":1346,"column":8},"end":{"line":1346,"column":52}},"583":{"start":{"line":1349,"column":8},"end":{"line":1349,"column":12}},"584":{"start":{"line":1350,"column":8},"end":{"line":1350,"column":48}},"585":{"start":{"line":1353,"column":4},"end":{"line":1355,"column":5}},"586":{"start":{"line":1354,"column":6},"end":{"line":1354,"column":50}},"587":{"start":{"line":1356,"column":4},"end":{"line":1358,"column":5}},"588":{"start":{"line":1357,"column":6},"end":{"line":1357,"column":46}},"589":{"start":{"line":1359,"column":4},"end":{"line":1359,"column":16}},"590":{"start":{"line":1363,"column":2},"end":{"line":1388,"column":3}},"591":{"start":{"line":1364,"column":4},"end":{"line":1369,"column":5}},"592":{"start":{"line":1370,"column":4},"end":{"line":1387,"column":5}},"593":{"start":{"line":1371,"column":6},"end":{"line":1371,"column":34}},"594":{"start":{"line":1372,"column":6},"end":{"line":1385,"column":7}},"595":{"start":{"line":1373,"column":8},"end":{"line":1373,"column":31}},"596":{"start":{"line":1374,"column":8},"end":{"line":1383,"column":9}},"597":{"start":{"line":1375,"column":10},"end":{"line":1375,"column":33}},"598":{"start":{"line":1376,"column":10},"end":{"line":1376,"column":49}},"599":{"start":{"line":1378,"column":10},"end":{"line":1378,"column":80}},"600":{"start":{"line":1379,"column":10},"end":{"line":1381,"column":29}},"601":{"start":{"line":1382,"column":10},"end":{"line":1382,"column":20}},"602":{"start":{"line":1384,"column":8},"end":{"line":1384,"column":20}},"603":{"start":{"line":1386,"column":6},"end":{"line":1386,"column":76}},"604":{"start":{"line":1405,"column":0},"end":{"line":1405,"column":49}},"605":{"start":{"line":1405,"column":6},"end":{"line":1405,"column":33}}},"branchMap":{"1":{"line":17,"type":"cond-expr","locations":[{"start":{"line":18,"column":7},"end":{"line":29,"column":9}},{"start":{"line":30,"column":6},"end":{"line":32,"column":30}}]},"2":{"line":18,"type":"cond-expr","locations":[{"start":{"line":19,"column":8},"end":{"line":19,"column":27}},{"start":{"line":20,"column":9},"end":{"line":28,"column":11}}]},"3":{"line":20,"type":"cond-expr","locations":[{"start":{"line":21,"column":10},"end":{"line":21,"column":26}},{"start":{"line":22,"column":11},"end":{"line":27,"column":13}}]},"4":{"line":22,"type":"cond-expr","locations":[{"start":{"line":23,"column":12},"end":{"line":23,"column":37}},{"start":{"line":24,"column":13},"end":{"line":26,"column":38}}]},"5":{"line":24,"type":"cond-expr","locations":[{"start":{"line":25,"column":14},"end":{"line":25,"column":24}},{"start":{"line":26,"column":14},"end":{"line":26,"column":38}}]},"6":{"line":30,"type":"cond-expr","locations":[{"start":{"line":31,"column":8},"end":{"line":31,"column":27}},{"start":{"line":31,"column":30},"end":{"line":31,"column":34}}]},"7":{"line":66,"type":"cond-expr","locations":[{"start":{"line":67,"column":6},"end":{"line":67,"column":25}},{"start":{"line":68,"column":7},"end":{"line":70,"column":39}}]},"8":{"line":68,"type":"cond-expr","locations":[{"start":{"line":69,"column":8},"end":{"line":69,"column":35}},{"start":{"line":70,"column":8},"end":{"line":70,"column":39}}]},"9":{"line":69,"type":"binary-expr","locations":[{"start":{"line":69,"column":20},"end":{"line":69,"column":24}},{"start":{"line":69,"column":28},"end":{"line":69,"column":34}}]},"10":{"line":70,"type":"binary-expr","locations":[{"start":{"line":70,"column":24},"end":{"line":70,"column":28}},{"start":{"line":70,"column":32},"end":{"line":70,"column":38}}]},"11":{"line":88,"type":"binary-expr","locations":[{"start":{"line":88,"column":11},"end":{"line":88,"column":31}},{"start":{"line":88,"column":35},"end":{"line":88,"column":63}},{"start":{"line":89,"column":11},"end":{"line":89,"column":24}}]},"12":{"line":103,"type":"cond-expr","locations":[{"start":{"line":103,"column":51},"end":{"line":103,"column":75}},{"start":{"line":103,"column":78},"end":{"line":103,"column":83}}]},"13":{"line":156,"type":"binary-expr","locations":[{"start":{"line":156,"column":6},"end":{"line":156,"column":16}},{"start":{"line":156,"column":20},"end":{"line":156,"column":27}}]},"14":{"line":162,"type":"if","locations":[{"start":{"line":162,"column":4},"end":{"line":162,"column":4}},{"start":{"line":162,"column":4},"end":{"line":162,"column":4}}]},"15":{"line":163,"type":"if","locations":[{"start":{"line":163,"column":6},"end":{"line":163,"column":6}},{"start":{"line":163,"column":6},"end":{"line":163,"column":6}}]},"16":{"line":171,"type":"binary-expr","locations":[{"start":{"line":171,"column":27},"end":{"line":171,"column":34}},{"start":{"line":171,"column":38},"end":{"line":171,"column":40}}]},"17":{"line":183,"type":"if","locations":[{"start":{"line":183,"column":4},"end":{"line":183,"column":4}},{"start":{"line":183,"column":4},"end":{"line":183,"column":4}}]},"18":{"line":184,"type":"binary-expr","locations":[{"start":{"line":184,"column":6},"end":{"line":184,"column":12}},{"start":{"line":185,"column":6},"end":{"line":185,"column":37}}]},"19":{"line":202,"type":"binary-expr","locations":[{"start":{"line":202,"column":18},"end":{"line":202,"column":33}},{"start":{"line":203,"column":19},"end":{"line":203,"column":49}},{"start":{"line":204,"column":18},"end":{"line":204,"column":50}}]},"20":{"line":205,"type":"cond-expr","locations":[{"start":{"line":205,"column":23},"end":{"line":205,"column":36}},{"start":{"line":205,"column":39},"end":{"line":205,"column":41}}]},"21":{"line":206,"type":"binary-expr","locations":[{"start":{"line":206,"column":16},"end":{"line":206,"column":23}},{"start":{"line":206,"column":27},"end":{"line":206,"column":36}}]},"22":{"line":209,"type":"if","locations":[{"start":{"line":209,"column":4},"end":{"line":209,"column":4}},{"start":{"line":209,"column":4},"end":{"line":209,"column":4}}]},"23":{"line":209,"type":"binary-expr","locations":[{"start":{"line":209,"column":8},"end":{"line":209,"column":15}},{"start":{"line":209,"column":19},"end":{"line":209,"column":45}}]},"24":{"line":210,"type":"if","locations":[{"start":{"line":210,"column":4},"end":{"line":210,"column":4}},{"start":{"line":210,"column":4},"end":{"line":210,"column":4}}]},"25":{"line":211,"type":"cond-expr","locations":[{"start":{"line":212,"column":6},"end":{"line":218,"column":7}},{"start":{"line":219,"column":7},"end":{"line":261,"column":9}}]},"26":{"line":213,"type":"if","locations":[{"start":{"line":213,"column":8},"end":{"line":213,"column":8}},{"start":{"line":213,"column":8},"end":{"line":213,"column":8}}]},"27":{"line":214,"type":"if","locations":[{"start":{"line":214,"column":10},"end":{"line":214,"column":10}},{"start":{"line":214,"column":10},"end":{"line":214,"column":10}}]},"28":{"line":216,"type":"if","locations":[{"start":{"line":216,"column":10},"end":{"line":216,"column":10}},{"start":{"line":216,"column":10},"end":{"line":216,"column":10}}]},"29":{"line":219,"type":"cond-expr","locations":[{"start":{"line":220,"column":8},"end":{"line":239,"column":9}},{"start":{"line":240,"column":8},"end":{"line":261,"column":9}}]},"30":{"line":221,"type":"if","locations":[{"start":{"line":221,"column":10},"end":{"line":221,"column":10}},{"start":{"line":221,"column":10},"end":{"line":221,"column":10}}]},"31":{"line":225,"type":"if","locations":[{"start":{"line":225,"column":12},"end":{"line":225,"column":12}},{"start":{"line":225,"column":12},"end":{"line":225,"column":12}}]},"32":{"line":229,"type":"if","locations":[{"start":{"line":229,"column":14},"end":{"line":229,"column":14}},{"start":{"line":229,"column":14},"end":{"line":229,"column":14}}]},"33":{"line":241,"type":"if","locations":[{"start":{"line":241,"column":10},"end":{"line":241,"column":10}},{"start":{"line":241,"column":10},"end":{"line":241,"column":10}}]},"34":{"line":245,"type":"if","locations":[{"start":{"line":245,"column":12},"end":{"line":245,"column":12}},{"start":{"line":245,"column":12},"end":{"line":245,"column":12}}]},"35":{"line":246,"type":"if","locations":[{"start":{"line":246,"column":14},"end":{"line":246,"column":14}},{"start":{"line":246,"column":14},"end":{"line":246,"column":14}}]},"36":{"line":247,"type":"if","locations":[{"start":{"line":247,"column":16},"end":{"line":247,"column":16}},{"start":{"line":247,"column":16},"end":{"line":247,"column":16}}]},"37":{"line":254,"type":"if","locations":[{"start":{"line":254,"column":16},"end":{"line":254,"column":16}},{"start":{"line":254,"column":16},"end":{"line":254,"column":16}}]},"38":{"line":269,"type":"if","locations":[{"start":{"line":269,"column":6},"end":{"line":269,"column":6}},{"start":{"line":269,"column":6},"end":{"line":269,"column":6}}]},"39":{"line":281,"type":"switch","locations":[{"start":{"line":282,"column":8},"end":{"line":282,"column":22}},{"start":{"line":283,"column":8},"end":{"line":283,"column":22}},{"start":{"line":284,"column":8},"end":{"line":305,"column":16}},{"start":{"line":306,"column":8},"end":{"line":308,"column":16}},{"start":{"line":309,"column":8},"end":{"line":309,"column":22}},{"start":{"line":310,"column":8},"end":{"line":317,"column":11}},{"start":{"line":318,"column":8},"end":{"line":384,"column":16}}]},"40":{"line":286,"type":"if","locations":[{"start":{"line":286,"column":10},"end":{"line":286,"column":10}},{"start":{"line":286,"column":10},"end":{"line":286,"column":10}}]},"41":{"line":287,"type":"binary-expr","locations":[{"start":{"line":287,"column":12},"end":{"line":287,"column":24}},{"start":{"line":288,"column":12},"end":{"line":288,"column":48}}]},"42":{"line":290,"type":"if","locations":[{"start":{"line":290,"column":12},"end":{"line":290,"column":12}},{"start":{"line":290,"column":12},"end":{"line":290,"column":12}}]},"43":{"line":296,"type":"if","locations":[{"start":{"line":296,"column":12},"end":{"line":296,"column":12}},{"start":{"line":296,"column":12},"end":{"line":296,"column":12}}]},"44":{"line":311,"type":"if","locations":[{"start":{"line":311,"column":10},"end":{"line":311,"column":10}},{"start":{"line":311,"column":10},"end":{"line":311,"column":10}}]},"45":{"line":315,"type":"if","locations":[{"start":{"line":315,"column":17},"end":{"line":315,"column":17}},{"start":{"line":315,"column":17},"end":{"line":315,"column":17}}]},"46":{"line":320,"type":"if","locations":[{"start":{"line":320,"column":10},"end":{"line":320,"column":10}},{"start":{"line":320,"column":10},"end":{"line":320,"column":10}}]},"47":{"line":322,"type":"if","locations":[{"start":{"line":322,"column":12},"end":{"line":322,"column":12}},{"start":{"line":322,"column":12},"end":{"line":322,"column":12}}]},"48":{"line":325,"type":"switch","locations":[{"start":{"line":326,"column":16},"end":{"line":326,"column":30}},{"start":{"line":327,"column":16},"end":{"line":327,"column":30}},{"start":{"line":328,"column":16},"end":{"line":330,"column":24}},{"start":{"line":331,"column":16},"end":{"line":337,"column":24}},{"start":{"line":338,"column":16},"end":{"line":351,"column":19}},{"start":{"line":352,"column":16},"end":{"line":354,"column":24}}]},"49":{"line":339,"type":"if","locations":[{"start":{"line":339,"column":18},"end":{"line":339,"column":18}},{"start":{"line":339,"column":18},"end":{"line":339,"column":18}}]},"50":{"line":342,"type":"if","locations":[{"start":{"line":342,"column":18},"end":{"line":342,"column":18}},{"start":{"line":342,"column":18},"end":{"line":342,"column":18}}]},"51":{"line":347,"type":"if","locations":[{"start":{"line":347,"column":22},"end":{"line":347,"column":22}},{"start":{"line":347,"column":22},"end":{"line":347,"column":22}}]},"52":{"line":357,"type":"if","locations":[{"start":{"line":357,"column":17},"end":{"line":357,"column":17}},{"start":{"line":357,"column":17},"end":{"line":357,"column":17}}]},"53":{"line":360,"type":"cond-expr","locations":[{"start":{"line":361,"column":16},"end":{"line":361,"column":44}},{"start":{"line":362,"column":16},"end":{"line":362,"column":23}}]},"54":{"line":365,"type":"if","locations":[{"start":{"line":365,"column":17},"end":{"line":365,"column":17}},{"start":{"line":365,"column":17},"end":{"line":365,"column":17}}]},"55":{"line":367,"type":"if","locations":[{"start":{"line":367,"column":17},"end":{"line":367,"column":17}},{"start":{"line":367,"column":17},"end":{"line":367,"column":17}}]},"56":{"line":369,"type":"if","locations":[{"start":{"line":369,"column":17},"end":{"line":369,"column":17}},{"start":{"line":369,"column":17},"end":{"line":369,"column":17}}]},"57":{"line":371,"type":"if","locations":[{"start":{"line":371,"column":17},"end":{"line":371,"column":17}},{"start":{"line":371,"column":17},"end":{"line":371,"column":17}}]},"58":{"line":373,"type":"if","locations":[{"start":{"line":373,"column":17},"end":{"line":373,"column":17}},{"start":{"line":373,"column":17},"end":{"line":373,"column":17}}]},"59":{"line":379,"type":"if","locations":[{"start":{"line":379,"column":17},"end":{"line":379,"column":17}},{"start":{"line":379,"column":17},"end":{"line":379,"column":17}}]},"60":{"line":404,"type":"if","locations":[{"start":{"line":404,"column":6},"end":{"line":404,"column":6}},{"start":{"line":404,"column":6},"end":{"line":404,"column":6}}]},"61":{"line":428,"type":"switch","locations":[{"start":{"line":429,"column":8},"end":{"line":432,"column":16}},{"start":{"line":433,"column":8},"end":{"line":438,"column":16}},{"start":{"line":439,"column":8},"end":{"line":447,"column":16}}]},"62":{"line":434,"type":"if","locations":[{"start":{"line":434,"column":10},"end":{"line":434,"column":10}},{"start":{"line":434,"column":10},"end":{"line":434,"column":10}}]},"63":{"line":440,"type":"if","locations":[{"start":{"line":440,"column":10},"end":{"line":440,"column":10}},{"start":{"line":440,"column":10},"end":{"line":440,"column":10}}]},"64":{"line":441,"type":"binary-expr","locations":[{"start":{"line":441,"column":12},"end":{"line":441,"column":52}},{"start":{"line":442,"column":12},"end":{"line":442,"column":49}}]},"65":{"line":460,"type":"binary-expr","locations":[{"start":{"line":460,"column":11},"end":{"line":460,"column":40}},{"start":{"line":461,"column":12},"end":{"line":461,"column":54}},{"start":{"line":462,"column":12},"end":{"line":462,"column":38}}]},"66":{"line":480,"type":"if","locations":[{"start":{"line":480,"column":4},"end":{"line":480,"column":4}},{"start":{"line":480,"column":4},"end":{"line":480,"column":4}}]},"67":{"line":480,"type":"binary-expr","locations":[{"start":{"line":480,"column":8},"end":{"line":480,"column":44}},{"start":{"line":480,"column":48},"end":{"line":480,"column":50}}]},"68":{"line":520,"type":"if","locations":[{"start":{"line":520,"column":6},"end":{"line":520,"column":6}},{"start":{"line":520,"column":6},"end":{"line":520,"column":6}}]},"69":{"line":521,"type":"binary-expr","locations":[{"start":{"line":521,"column":8},"end":{"line":521,"column":39}},{"start":{"line":522,"column":8},"end":{"line":522,"column":49}}]},"70":{"line":527,"type":"cond-expr","locations":[{"start":{"line":527,"column":34},"end":{"line":527,"column":44}},{"start":{"line":527,"column":47},"end":{"line":527,"column":54}}]},"71":{"line":539,"type":"cond-expr","locations":[{"start":{"line":540,"column":8},"end":{"line":540,"column":25}},{"start":{"line":541,"column":8},"end":{"line":541,"column":26}}]},"72":{"line":552,"type":"if","locations":[{"start":{"line":552,"column":4},"end":{"line":552,"column":4}},{"start":{"line":552,"column":4},"end":{"line":552,"column":4}}]},"73":{"line":563,"type":"if","locations":[{"start":{"line":563,"column":4},"end":{"line":563,"column":4}},{"start":{"line":563,"column":4},"end":{"line":563,"column":4}}]},"74":{"line":572,"type":"if","locations":[{"start":{"line":572,"column":6},"end":{"line":572,"column":6}},{"start":{"line":572,"column":6},"end":{"line":572,"column":6}}]},"75":{"line":585,"type":"if","locations":[{"start":{"line":585,"column":4},"end":{"line":585,"column":4}},{"start":{"line":585,"column":4},"end":{"line":585,"column":4}}]},"76":{"line":585,"type":"binary-expr","locations":[{"start":{"line":585,"column":8},"end":{"line":585,"column":10}},{"start":{"line":585,"column":14},"end":{"line":585,"column":16}}]},"77":{"line":606,"type":"binary-expr","locations":[{"start":{"line":606,"column":13},"end":{"line":606,"column":31}},{"start":{"line":606,"column":35},"end":{"line":606,"column":65}}]},"78":{"line":607,"type":"binary-expr","locations":[{"start":{"line":607,"column":11},"end":{"line":607,"column":13}},{"start":{"line":607,"column":17},"end":{"line":607,"column":52}}]},"79":{"line":614,"type":"if","locations":[{"start":{"line":614,"column":4},"end":{"line":614,"column":4}},{"start":{"line":614,"column":4},"end":{"line":614,"column":4}}]},"80":{"line":614,"type":"binary-expr","locations":[{"start":{"line":614,"column":8},"end":{"line":614,"column":14}},{"start":{"line":614,"column":18},"end":{"line":614,"column":41}}]},"81":{"line":616,"type":"if","locations":[{"start":{"line":616,"column":6},"end":{"line":616,"column":6}},{"start":{"line":616,"column":6},"end":{"line":616,"column":6}}]},"82":{"line":618,"type":"binary-expr","locations":[{"start":{"line":618,"column":11},"end":{"line":618,"column":17}},{"start":{"line":618,"column":21},"end":{"line":618,"column":33}}]},"83":{"line":624,"type":"if","locations":[{"start":{"line":624,"column":4},"end":{"line":624,"column":4}},{"start":{"line":624,"column":4},"end":{"line":624,"column":4}}]},"84":{"line":626,"type":"if","locations":[{"start":{"line":626,"column":11},"end":{"line":626,"column":11}},{"start":{"line":626,"column":11},"end":{"line":626,"column":11}}]},"85":{"line":628,"type":"if","locations":[{"start":{"line":628,"column":11},"end":{"line":628,"column":11}},{"start":{"line":628,"column":11},"end":{"line":628,"column":11}}]},"86":{"line":638,"type":"if","locations":[{"start":{"line":638,"column":6},"end":{"line":638,"column":6}},{"start":{"line":638,"column":6},"end":{"line":638,"column":6}}]},"87":{"line":651,"type":"binary-expr","locations":[{"start":{"line":651,"column":11},"end":{"line":651,"column":24}},{"start":{"line":651,"column":28},"end":{"line":651,"column":43}}]},"88":{"line":660,"type":"binary-expr","locations":[{"start":{"line":660,"column":15},"end":{"line":660,"column":27}},{"start":{"line":660,"column":32},"end":{"line":660,"column":64}}]},"89":{"line":678,"type":"switch","locations":[{"start":{"line":679,"column":6},"end":{"line":682,"column":14}},{"start":{"line":683,"column":6},"end":{"line":685,"column":14}},{"start":{"line":686,"column":6},"end":{"line":688,"column":14}}]},"90":{"line":703,"type":"cond-expr","locations":[{"start":{"line":704,"column":6},"end":{"line":714,"column":7}},{"start":{"line":715,"column":6},"end":{"line":715,"column":13}}]},"91":{"line":718,"type":"cond-expr","locations":[{"start":{"line":719,"column":6},"end":{"line":732,"column":7}},{"start":{"line":733,"column":6},"end":{"line":733,"column":9}}]},"92":{"line":738,"type":"binary-expr","locations":[{"start":{"line":738,"column":16},"end":{"line":738,"column":29}},{"start":{"line":739,"column":17},"end":{"line":747,"column":19}}]},"93":{"line":750,"type":"binary-expr","locations":[{"start":{"line":750,"column":13},"end":{"line":750,"column":25}},{"start":{"line":751,"column":14},"end":{"line":751,"column":68}}]},"94":{"line":767,"type":"binary-expr","locations":[{"start":{"line":767,"column":11},"end":{"line":767,"column":31}},{"start":{"line":768,"column":11},"end":{"line":768,"column":42}}]},"95":{"line":772,"type":"cond-expr","locations":[{"start":{"line":773,"column":6},"end":{"line":775,"column":7}},{"start":{"line":776,"column":6},"end":{"line":784,"column":7}}]},"96":{"line":787,"type":"cond-expr","locations":[{"start":{"line":788,"column":6},"end":{"line":801,"column":7}},{"start":{"line":802,"column":6},"end":{"line":802,"column":47}}]},"97":{"line":787,"type":"binary-expr","locations":[{"start":{"line":787,"column":20},"end":{"line":787,"column":22}},{"start":{"line":787,"column":26},"end":{"line":787,"column":28}}]},"98":{"line":797,"type":"if","locations":[{"start":{"line":797,"column":10},"end":{"line":797,"column":10}},{"start":{"line":797,"column":10},"end":{"line":797,"column":10}}]},"99":{"line":806,"type":"cond-expr","locations":[{"start":{"line":807,"column":6},"end":{"line":820,"column":7}},{"start":{"line":821,"column":6},"end":{"line":826,"column":7}}]},"100":{"line":806,"type":"binary-expr","locations":[{"start":{"line":806,"column":16},"end":{"line":806,"column":18}},{"start":{"line":806,"column":22},"end":{"line":806,"column":24}}]},"101":{"line":810,"type":"switch","locations":[{"start":{"line":811,"column":12},"end":{"line":813,"column":20}},{"start":{"line":814,"column":12},"end":{"line":816,"column":20}}]},"102":{"line":836,"type":"binary-expr","locations":[{"start":{"line":836,"column":17},"end":{"line":836,"column":19}},{"start":{"line":836,"column":23},"end":{"line":836,"column":26}}]},"103":{"line":836,"type":"binary-expr","locations":[{"start":{"line":836,"column":37},"end":{"line":836,"column":39}},{"start":{"line":836,"column":43},"end":{"line":836,"column":46}}]},"104":{"line":856,"type":"cond-expr","locations":[{"start":{"line":857,"column":6},"end":{"line":867,"column":7}},{"start":{"line":868,"column":6},"end":{"line":870,"column":7}}]},"105":{"line":878,"type":"cond-expr","locations":[{"start":{"line":879,"column":4},"end":{"line":884,"column":5}},{"start":{"line":885,"column":4},"end":{"line":885,"column":55}}]},"106":{"line":881,"type":"if","locations":[{"start":{"line":881,"column":8},"end":{"line":881,"column":8}},{"start":{"line":881,"column":8},"end":{"line":881,"column":8}}]},"107":{"line":887,"type":"cond-expr","locations":[{"start":{"line":888,"column":4},"end":{"line":893,"column":5}},{"start":{"line":894,"column":4},"end":{"line":894,"column":59}}]},"108":{"line":890,"type":"if","locations":[{"start":{"line":890,"column":7},"end":{"line":890,"column":7}},{"start":{"line":890,"column":7},"end":{"line":890,"column":7}}]},"109":{"line":899,"type":"if","locations":[{"start":{"line":899,"column":4},"end":{"line":899,"column":4}},{"start":{"line":899,"column":4},"end":{"line":899,"column":4}}]},"110":{"line":899,"type":"binary-expr","locations":[{"start":{"line":899,"column":8},"end":{"line":899,"column":23}},{"start":{"line":899,"column":27},"end":{"line":899,"column":65}}]},"111":{"line":907,"type":"if","locations":[{"start":{"line":907,"column":4},"end":{"line":907,"column":4}},{"start":{"line":907,"column":4},"end":{"line":907,"column":4}}]},"112":{"line":926,"type":"switch","locations":[{"start":{"line":927,"column":8},"end":{"line":933,"column":16}},{"start":{"line":934,"column":8},"end":{"line":978,"column":16}},{"start":{"line":979,"column":8},"end":{"line":988,"column":16}}]},"113":{"line":929,"type":"if","locations":[{"start":{"line":929,"column":10},"end":{"line":929,"column":10}},{"start":{"line":929,"column":10},"end":{"line":929,"column":10}}]},"114":{"line":938,"type":"cond-expr","locations":[{"start":{"line":938,"column":33},"end":{"line":938,"column":79}},{"start":{"line":938,"column":83},"end":{"line":938,"column":85}}]},"115":{"line":940,"type":"cond-expr","locations":[{"start":{"line":940,"column":31},"end":{"line":940,"column":73}},{"start":{"line":940,"column":76},"end":{"line":940,"column":78}}]},"116":{"line":942,"type":"switch","locations":[{"start":{"line":947,"column":12},"end":{"line":949,"column":20}},{"start":{"line":951,"column":12},"end":{"line":952,"column":25}},{"start":{"line":954,"column":12},"end":{"line":956,"column":20}}]},"117":{"line":962,"type":"if","locations":[{"start":{"line":962,"column":10},"end":{"line":962,"column":10}},{"start":{"line":962,"column":10},"end":{"line":962,"column":10}}]},"118":{"line":975,"type":"if","locations":[{"start":{"line":975,"column":10},"end":{"line":975,"column":10}},{"start":{"line":975,"column":10},"end":{"line":975,"column":10}}]},"119":{"line":981,"type":"binary-expr","locations":[{"start":{"line":981,"column":19},"end":{"line":981,"column":51}},{"start":{"line":982,"column":20},"end":{"line":986,"column":21}}]},"120":{"line":1037,"type":"switch","locations":[{"start":{"line":1038,"column":6},"end":{"line":1038,"column":24}},{"start":{"line":1039,"column":6},"end":{"line":1041,"column":14}},{"start":{"line":1042,"column":6},"end":{"line":1048,"column":14}},{"start":{"line":1049,"column":6},"end":{"line":1049,"column":26}},{"start":{"line":1050,"column":6},"end":{"line":1053,"column":14}}]},"121":{"line":1100,"type":"binary-expr","locations":[{"start":{"line":1100,"column":16},"end":{"line":1100,"column":39}},{"start":{"line":1101,"column":16},"end":{"line":1101,"column":51}}]},"122":{"line":1102,"type":"if","locations":[{"start":{"line":1102,"column":4},"end":{"line":1102,"column":4}},{"start":{"line":1102,"column":4},"end":{"line":1102,"column":4}}]},"123":{"line":1123,"type":"cond-expr","locations":[{"start":{"line":1124,"column":8},"end":{"line":1124,"column":54}},{"start":{"line":1125,"column":8},"end":{"line":1125,"column":16}}]},"124":{"line":1130,"type":"if","locations":[{"start":{"line":1130,"column":6},"end":{"line":1130,"column":6}},{"start":{"line":1130,"column":6},"end":{"line":1130,"column":6}}]},"125":{"line":1132,"type":"if","locations":[{"start":{"line":1132,"column":8},"end":{"line":1132,"column":8}},{"start":{"line":1132,"column":8},"end":{"line":1132,"column":8}}]},"126":{"line":1140,"type":"cond-expr","locations":[{"start":{"line":1141,"column":6},"end":{"line":1167,"column":7}},{"start":{"line":1168,"column":6},"end":{"line":1177,"column":7}}]},"127":{"line":1144,"type":"if","locations":[{"start":{"line":1144,"column":8},"end":{"line":1144,"column":8}},{"start":{"line":1144,"column":8},"end":{"line":1144,"column":8}}]},"128":{"line":1148,"type":"if","locations":[{"start":{"line":1148,"column":12},"end":{"line":1148,"column":12}},{"start":{"line":1148,"column":12},"end":{"line":1148,"column":12}}]},"129":{"line":1149,"type":"if","locations":[{"start":{"line":1149,"column":14},"end":{"line":1149,"column":14}},{"start":{"line":1149,"column":14},"end":{"line":1149,"column":14}}]},"130":{"line":1158,"type":"if","locations":[{"start":{"line":1158,"column":16},"end":{"line":1158,"column":16}},{"start":{"line":1158,"column":16},"end":{"line":1158,"column":16}}]},"131":{"line":1170,"type":"if","locations":[{"start":{"line":1170,"column":8},"end":{"line":1170,"column":8}},{"start":{"line":1170,"column":8},"end":{"line":1170,"column":8}}]},"132":{"line":1185,"type":"if","locations":[{"start":{"line":1185,"column":4},"end":{"line":1185,"column":4}},{"start":{"line":1185,"column":4},"end":{"line":1185,"column":4}}]},"133":{"line":1187,"type":"binary-expr","locations":[{"start":{"line":1187,"column":13},"end":{"line":1187,"column":29}},{"start":{"line":1187,"column":33},"end":{"line":1187,"column":39}}]},"134":{"line":1189,"type":"if","locations":[{"start":{"line":1189,"column":4},"end":{"line":1189,"column":4}},{"start":{"line":1189,"column":4},"end":{"line":1189,"column":4}}]},"135":{"line":1193,"type":"binary-expr","locations":[{"start":{"line":1193,"column":11},"end":{"line":1193,"column":19}},{"start":{"line":1193,"column":24},"end":{"line":1193,"column":52}}]},"136":{"line":1221,"type":"cond-expr","locations":[{"start":{"line":1221,"column":48},"end":{"line":1221,"column":53}},{"start":{"line":1221,"column":56},"end":{"line":1221,"column":66}}]},"137":{"line":1230,"type":"binary-expr","locations":[{"start":{"line":1230,"column":18},"end":{"line":1230,"column":26}},{"start":{"line":1230,"column":30},"end":{"line":1230,"column":38}}]},"138":{"line":1232,"type":"if","locations":[{"start":{"line":1232,"column":4},"end":{"line":1232,"column":4}},{"start":{"line":1232,"column":4},"end":{"line":1232,"column":4}}]},"139":{"line":1232,"type":"binary-expr","locations":[{"start":{"line":1232,"column":8},"end":{"line":1232,"column":22}},{"start":{"line":1232,"column":26},"end":{"line":1232,"column":34}}]},"140":{"line":1233,"type":"if","locations":[{"start":{"line":1233,"column":6},"end":{"line":1233,"column":6}},{"start":{"line":1233,"column":6},"end":{"line":1233,"column":6}}]},"141":{"line":1233,"type":"binary-expr","locations":[{"start":{"line":1233,"column":10},"end":{"line":1233,"column":18}},{"start":{"line":1233,"column":22},"end":{"line":1233,"column":30}}]},"142":{"line":1238,"type":"if","locations":[{"start":{"line":1238,"column":4},"end":{"line":1238,"column":4}},{"start":{"line":1238,"column":4},"end":{"line":1238,"column":4}}]},"143":{"line":1295,"type":"cond-expr","locations":[{"start":{"line":1295,"column":51},"end":{"line":1295,"column":52}},{"start":{"line":1295,"column":55},"end":{"line":1295,"column":56}}]},"144":{"line":1296,"type":"cond-expr","locations":[{"start":{"line":1297,"column":27},"end":{"line":1298,"column":37}},{"start":{"line":1299,"column":27},"end":{"line":1300,"column":37}}]},"145":{"line":1297,"type":"cond-expr","locations":[{"start":{"line":1298,"column":28},"end":{"line":1298,"column":31}},{"start":{"line":1298,"column":34},"end":{"line":1298,"column":37}}]},"146":{"line":1299,"type":"cond-expr","locations":[{"start":{"line":1300,"column":28},"end":{"line":1300,"column":31}},{"start":{"line":1300,"column":34},"end":{"line":1300,"column":37}}]},"147":{"line":1330,"type":"binary-expr","locations":[{"start":{"line":1330,"column":11},"end":{"line":1330,"column":12}},{"start":{"line":1330,"column":16},"end":{"line":1330,"column":17}}]},"148":{"line":1337,"type":"if","locations":[{"start":{"line":1337,"column":6},"end":{"line":1337,"column":6}},{"start":{"line":1337,"column":6},"end":{"line":1337,"column":6}}]},"149":{"line":1337,"type":"binary-expr","locations":[{"start":{"line":1337,"column":10},"end":{"line":1337,"column":26}},{"start":{"line":1337,"column":30},"end":{"line":1337,"column":45}},{"start":{"line":1337,"column":49},"end":{"line":1337,"column":65}}]},"150":{"line":1340,"type":"if","locations":[{"start":{"line":1340,"column":8},"end":{"line":1340,"column":8}},{"start":{"line":1340,"column":8},"end":{"line":1340,"column":8}}]},"151":{"line":1344,"type":"if","locations":[{"start":{"line":1344,"column":11},"end":{"line":1344,"column":11}},{"start":{"line":1344,"column":11},"end":{"line":1344,"column":11}}]},"152":{"line":1344,"type":"binary-expr","locations":[{"start":{"line":1344,"column":15},"end":{"line":1344,"column":26}},{"start":{"line":1344,"column":30},"end":{"line":1344,"column":42}}]},"153":{"line":1370,"type":"if","locations":[{"start":{"line":1370,"column":4},"end":{"line":1370,"column":4}},{"start":{"line":1370,"column":4},"end":{"line":1370,"column":4}}]},"154":{"line":1374,"type":"if","locations":[{"start":{"line":1374,"column":8},"end":{"line":1374,"column":8}},{"start":{"line":1374,"column":8},"end":{"line":1374,"column":8}}]},"155":{"line":1374,"type":"binary-expr","locations":[{"start":{"line":1374,"column":12},"end":{"line":1374,"column":35}},{"start":{"line":1374,"column":39},"end":{"line":1374,"column":61}},{"start":{"line":1374,"column":65},"end":{"line":1374,"column":87}}]},"156":{"line":1379,"type":"cond-expr","locations":[{"start":{"line":1380,"column":12},"end":{"line":1380,"column":27}},{"start":{"line":1380,"column":31},"end":{"line":1381,"column":27}}]},"157":{"line":1380,"type":"cond-expr","locations":[{"start":{"line":1381,"column":14},"end":{"line":1381,"column":23}},{"start":{"line":1381,"column":26},"end":{"line":1381,"column":27}}]}}}} \ No newline at end of file diff --git a/coverage/lcov-report/hyperHTML/hyperhtml.js.html b/coverage/lcov-report/hyperHTML/hyperhtml.js.html index 693bf004..e69de29b 100644 --- a/coverage/lcov-report/hyperHTML/hyperhtml.js.html +++ b/coverage/lcov-report/hyperHTML/hyperhtml.js.html @@ -1,3893 +0,0 @@ - - - - Code coverage report for hyperHTML/hyperhtml.js - - - - - - - -
-
-

- all files / hyperHTML/ hyperhtml.js -

-
-
- 100% - Statements - 568/568 -
-
- 100% - Branches - 326/326 -
-
- 100% - Functions - 94/94 -
-
- 100% - Lines - 550/550 -
-
-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205 -206 -207 -208 -209 -210 -211 -212 -213 -214 -215 -216 -217 -218 -219 -220 -221 -222 -223 -224 -225 -226 -227 -228 -229 -230 -231 -232 -233 -234 -235 -236 -237 -238 -239 -240 -241 -242 -243 -244 -245 -246 -247 -248 -249 -250 -251 -252 -253 -254 -255 -256 -257 -258 -259 -260 -261 -262 -263 -264 -265 -266 -267 -268 -269 -270 -271 -272 -273 -274 -275 -276 -277 -278 -279 -280 -281 -282 -283 -284 -285 -286 -287 -288 -289 -290 -291 -292 -293 -294 -295 -296 -297 -298 -299 -300 -301 -302 -303 -304 -305 -306 -307 -308 -309 -310 -311 -312 -313 -314 -315 -316 -317 -318 -319 -320 -321 -322 -323 -324 -325 -326 -327 -328 -329 -330 -331 -332 -333 -334 -335 -336 -337 -338 -339 -340 -341 -342 -343 -344 -345 -346 -347 -348 -349 -350 -351 -352 -353 -354 -355 -356 -357 -358 -359 -360 -361 -362 -363 -364 -365 -366 -367 -368 -369 -370 -371 -372 -373 -374 -375 -376 -377 -378 -379 -380 -381 -382 -383 -384 -385 -386 -387 -388 -389 -390 -391 -392 -393 -394 -395 -396 -397 -398 -399 -400 -401 -402 -403 -404 -405 -406 -407 -408 -409 -410 -411 -412 -413 -414 -415 -416 -417 -418 -419 -420 -421 -422 -423 -424 -425 -426 -427 -428 -429 -430 -431 -432 -433 -434 -435 -436 -437 -438 -439 -440 -441 -442 -443 -444 -445 -446 -447 -448 -449 -450 -451 -452 -453 -454 -455 -456 -457 -458 -459 -460 -461 -462 -463 -464 -465 -466 -467 -468 -469 -470 -471 -472 -473 -474 -475 -476 -477 -478 -479 -480 -481 -482 -483 -484 -485 -486 -487 -488 -489 -490 -491 -492 -493 -494 -495 -496 -497 -498 -499 -500 -501 -502 -503 -504 -505 -506 -507 -508 -509 -510 -511 -512 -513 -514 -515 -516 -517 -518 -519 -520 -521 -522 -523 -524 -525 -526 -527 -528 -529 -530 -531 -532 -533 -534 -535 -536 -537 -538 -539 -540 -541 -542 -543 -544 -545 -546 -547 -548 -549 -550 -551 -552 -553 -554 -555 -556 -557 -558 -559 -560 -561 -562 -563 -564 -565 -566 -567 -568 -569 -570 -571 -572 -573 -574 -575 -576 -577 -578 -579 -580 -581 -582 -583 -584 -585 -586 -587 -588 -589 -590 -591 -592 -593 -594 -595 -596 -597 -598 -599 -600 -601 -602 -603 -604 -605 -606 -607 -608 -609 -610 -611 -612 -613 -614 -615 -616 -617 -618 -619 -620 -621 -622 -623 -624 -625 -626 -627 -628 -629 -630 -631 -632 -633 -634 -635 -636 -637 -638 -639 -640 -641 -642 -643 -644 -645 -646 -647 -648 -649 -650 -651 -652 -653 -654 -655 -656 -657 -658 -659 -660 -661 -662 -663 -664 -665 -666 -667 -668 -669 -670 -671 -672 -673 -674 -675 -676 -677 -678 -679 -680 -681 -682 -683 -684 -685 -686 -687 -688 -689 -690 -691 -692 -693 -694 -695 -696 -697 -698 -699 -700 -701 -702 -703 -704 -705 -706 -707 -708 -709 -710 -711 -712 -713 -714 -715 -716 -717 -718 -719 -720 -721 -722 -723 -724 -725 -726 -727 -728 -729 -730 -731 -732 -733 -734 -735 -736 -737 -738 -739 -740 -741 -742 -743 -744 -745 -746 -747 -748 -749 -750 -751 -752 -753 -754 -755 -756 -757 -758 -759 -760 -761 -762 -763 -764 -765 -766 -767 -768 -769 -770 -771 -772 -773 -774 -775 -776 -777 -778 -779 -780 -781 -782 -783 -784 -785 -786 -787 -788 -789 -790 -791 -792 -793 -794 -795 -796 -797 -798 -799 -800 -801 -802 -803 -804 -805 -806 -807 -808 -809 -810 -811 -812 -813 -814 -815 -816 -817 -818 -819 -820 -821 -822 -823 -824 -825 -826 -827 -828 -829 -830 -831 -832 -833 -834 -835 -836 -837 -838 -839 -840 -841 -842 -843 -844 -845 -846 -847 -848 -849 -850 -851 -852 -853 -854 -855 -856 -857 -858 -859 -860 -861 -862 -863 -864 -865 -866 -867 -868 -869 -870 -871 -872 -873 -874 -875 -876 -877 -878 -879 -880 -881 -882 -883 -884 -885 -886 -887 -888 -889 -890 -891 -892 -893 -894 -895 -896 -897 -898 -899 -900 -901 -902 -903 -904 -905 -906 -907 -908 -909 -910 -911 -912 -913 -914 -915 -916 -917 -918 -919 -920 -921 -922 -923 -924 -925 -926 -927 -928 -929 -930 -931 -932 -933 -934 -935 -936 -937 -938 -939 -940 -941 -942 -943 -944 -945 -946 -947 -948 -949 -950 -951 -952 -953 -954 -955 -956 -957 -958 -959 -960 -961 -962 -963 -964 -965 -966 -967 -968 -969 -970 -971 -972 -973 -974 -975 -976 -977 -978 -979 -980 -981 -982 -983 -984 -985 -986 -987 -988 -989 -990 -991 -992 -993 -994 -995 -996 -997 -998 -999 -1000 -1001 -1002 -1003 -1004 -1005 -1006 -1007 -1008 -1009 -1010 -1011 -1012 -1013 -1014 -1015 -1016 -1017 -1018 -1019 -1020 -1021 -1022 -1023 -1024 -1025 -1026 -1027 -1028 -1029 -1030 -1031 -1032 -1033 -1034 -1035 -1036 -1037 -1038 -1039 -1040 -1041 -1042 -1043 -1044 -1045 -1046 -1047 -1048 -1049 -1050 -1051 -1052 -1053 -1054 -1055 -1056 -1057 -1058 -1059 -1060 -1061 -1062 -1063 -1064 -1065 -1066 -1067 -1068 -1069 -1070 -1071 -1072 -1073 -1074 -1075 -1076 -1077 -1078 -1079 -1080 -1081 -1082 -1083 -1084 -1085 -1086 -1087 -1088 -1089 -1090 -1091 -1092 -1093 -1094 -1095 -1096 -1097 -1098 -1099 -1100 -1101 -1102 -1103 -1104 -1105 -1106 -1107 -1108 -1109 -1110 -1111 -1112 -1113 -1114 -1115 -1116 -1117 -1118 -1119 -1120 -1121 -1122 -1123 -1124 -1125 -1126 -1127 -1128 -1129 -1130 -1131 -1132 -1133 -1134 -1135 -1136 -1137 -1138 -1139 -1140 -1141 -1142 -1143 -1144 -1145 -1146 -1147 -1148 -1149 -1150 -1151 -1152 -1153 -1154 -1155 -1156 -1157 -1158 -1159 -1160 -1161 -1162 -1163 -1164 -1165 -1166 -1167 -1168 -1169 -1170 -1171 -1172 -1173 -1174 -1175 -1176 -1177 -1178 -1179 -1180 -1181 -1182 -1183 -1184 -1185 -1186 -1187 -1188 -1189 -1190 -1191 -1192 -1193 -1194 -1195 -1196 -1197 -1198 -1199 -1200 -1201 -1202 -1203 -1204 -1205 -1206 -1207 -1208 -1209 -1210 -1211 -1212 -1213 -1214 -1215 -1216 -1217 -1218 -1219 -1220 -1221 -1222 -1223 -1224 -1225 -1226 -1227 -1228 -1229 -1230 -1231 -1232 -1233 -1234 -1235 -1236 -1237 -1238 -1239 -1240 -1241 -1242 -1243 -1244 -1245 -1246 -1247 -1248 -1249 -1250 -1251 -1252 -1253 -1254 -1255 -1256 -1257 -1258 -1259 -1260 -1261 -1262 -1263 -1264 -1265 -1266 -1267 -1268 -1269 -1270 -1271 -1272 -1273 -1274 -1275 -1276 -1277 -  -  -  -  -  -  -  -  -  - -  -  - -  - -20× -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - -28× -32× -32× -32× -32× -  -  -  -  -  - -208× -  -  - - -  -  -  - - -  -  -  -  - - -62× -  -  -  -  -  -  -  -  -  -  -  - - - -  -  -  -  -  - - -  -  -  -  -  -  -  -  -  - -  - -  -  - - -11× - -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - - - - - -  -  - - -  - - - - -  -  -  -  -  -  -  - -48× -  -  -  -  -48× -34× -12× -  -36× -  -  -  -  -  - -16× -  - - - - -  - - -  - - -  - -  - - -  -  -  -  - -88× -88× -26× -26× -  -  -  -  - -148× -148× -  -  -  - -18× -18× - - - -  -16× -16× -  -  -  -  -  -  -  -  - -278× -278× -  -  -  -154× -154× -  -278× -278× -  -  -  -  -  -  - -48× -  -  -  -  -  -  -  -  -  -48× -48× -48× -  -30× -18× -18× -18× -  -  -  -  -20× -16× -  -  -16× -  -  -  -14× -  -  - - -  -10× -  -  -  -  -  -48× -36× -  -  -36× -34× - -  - - -  -  -30× -30× - - -  -  -  -  -  -  -  -  -  -  - -106× -106× -106× -288× -  -  -  -120× -56× -50× -50× -  -64× -  -  -  -22× - - -  -  -42× -42× -42× -42× -  -120× -  - - -  - -  - -  -  -164× - - - -158× - -  -  -158× -158× -74× -74× - - -  -72× -  -  -  -24× -24× -  -10× -10× -  -10× -12× -  -10× -10× -10× -  -36× - -  -36× - - -  -32× -64× - -  -  -  -  -34× -26× -26× -  - -  -34× -  -  -84× -24× - -  -  -  -  -  -  -60× - -56× -10× -46× - -42× - -38× -28× -  -  -28× -  -10× -10× -10× -10× -  -10× - -  - -  -158× -  -  -  -  -  -  -  -  -  - -118× -  -  -  -  -  -  -  -56× -56× -48× -48× -  -  -  -  -  -  -  -  -  -  -  -  -  - -228× -  -  -  -  -  -312× -312× -  -118× -118× -118× -  -66× -64× -64× -  -  -  -24× -24× -  -40× -  -  -66× -  -128× -  -  -  - - -  -128× -  -  -  -  -  -  -  - -  -  -  -  - -  -  -  -  -  - - - - -  -  -  -  - -  -  -  -  - - -203× - -  -  -  -  -  -  -  - -  -  - -  -  -  -  -  -  - - -  -  -  - - -  -  -  - -62× -  -  -  -  -  -  -  -90× -90× -  -  -  -66× -  -  -62× -  -  -  - -150× -  -  -  -  - -120× -  -  -  -  -  -  -  - -118× -118× -118× -118× -118× -118× -  -56× -  -  -  -  -  -  -56× -  -118× -  -  -  - - - -  -117× -117× -62× -  -55× -  -  -118× -  -  -  - - - - - - - -  - - - -  - -  -  -  - -46× -  -  -  -  - -46× -  -  -  -  -  -  -  -  -58× -  - - - -  - - -  -12× -12× -12× -12× -12× -12× -12× -12× -  -  -  -  -  - - -  -  - -  -  -10× -10× -  -12× -  -  -  -12× - -  -  -  -  -  -10× -  -  -  -  -  -12× -10× -  -12× -  -  -38× -  -  -  -  -  -38× -38× -  -  -46× -  -  -  -  - - - - -  -  -  - -12× -10× -  - -  -  -  -  -  - -46× -46× - - -  -46× -  -  -  - -30× -  -  -  - -10× -10× - - - - - -  - -  -  -  -  - -10× -10× - -  -  -  -  -  - -84× -  -  -  - -96× -  -  -  -  - - - -  -42× -  -  -18× -  -  -  -  -  -  - -68× -  -  -  -  -68× -  -  -  - -154× -24× -  -  -  -  - -14× -14× - - -  -  -  -  - -154× -154× -  -54× -54× -  -48× -48× -  -52× -52× -  -154× -  -  -  -  - -16× -16× -12× -12× -12× -12× -12× -12× -12× -  -  -  -  - -116× -  -  -  -  -  -  -  - -  - -162× -  -89× -  -  -  -  -  -  -  -  -  - -  - - -  -77× -  -  -  -  -  -55× -  -  -  -  -  -  -  -  - -  - -  -  - - -97× -  -  -  -  - -41× -  -  -  -  -  -  - -  -  - -  -  - - -203× -203× -  -  -  -  - -  -76× -  -  -20× -  -  -  -  -30× -  -  -  -  - -  -143× -  -  -  -  -  -  -363× -363× -205× -  -143× -  -82× -  -  -  - -  -81× -111× -111× -  -61× -61× -  -50× -50× -  -  -81× -  -  -81× -111× -  -81× -  -  -  - - - -38× -  -  - -48× -  -  -  - -  - - -  - -  - -  - -  - - -  - -  - -  -  - -  -  - -  -  - -  -  - -  -  -  - - - - -  -204× -  -  -  -  -  -143× -  -204× -  -  -61× -  -  -  -  -  -  -  -  -  - -110× -110× -110× -110× -110× -110× -  -  -  -  -  - -116× -116× -116× -  -  -28× -28× -  -40× -40× -  -  -  -40× -  -  -48× -48× -48× -  -116× -  -  -  -  -92× -  -116× -  -  -  -  -  - -122× -  -  -  -  -  -  -108× -108× -108× -10× -10× -  -108× -  -122× -122× -  -  -  - -32× -  -  -  -  -  -  -46× -46× -46× -  -  -  -  -  -  -32× -32× -  -  -  - -278× -296× -  -  -  -  -  - -154× -154× -154× -  -154× -122× -122× -122× -  -32× -  -154× -  -  -  -  -  -  -  - -60× -  - -60× -60× -  -  -60× -  -  - -90× -62× -62× - -  -62× -  -90× -  -  -60× -  -14× -14× -14× -10× -10× -10× -14× -10× - - -  -  -  -  - -  - - -  -  -14× -14× -  -  -14× -  -  -76× -76× -52× -52× -52× -  -76× -76× -  -  -  -  - -46× -46× -46× -46× -12× -12× -  -46× -24× -24× -  -46× -  -  -  -  -  - -  -  -  -  -
var hyperHTML = (function (globalDocument) {'use strict';
- 
-  /*! (c) 2017 Andrea Giammarchi @WebReflection, (ISC) */
- 
-  // ---------------------------------------------
-  // hyperHTML Public API
-  // ---------------------------------------------
- 
-  // The document must be swap-able at runtime.
-  // Needed by both basicHTML and nativeHTML
-  hyper.document = globalDocument;
- 
-  // friendly destructuring
-  hyper.hyper = hyper;
- 
-  function hyper(HTML) {
-    return arguments.length < 2 ?
-      (HTML == null ?
-        wireContent('html') :
-        (typeof HTML === 'string' ?
-          wire(null, HTML) :
-          ('raw' in HTML ?
-            wireContent('html')(HTML) :
-            ('nodeType' in HTML ?
-              bind(HTML) :
-              wireWeakly(HTML, 'html')
-            )
-          )
-        )) :
-      ('raw' in HTML ?
-        wireContent('html') : wire
-      ).apply(null, arguments);
-  }
- 
-  // hyper.adopt(el) 🐣
-  // import an already live DOM structure
-  // described as TL
-  hyper.adopt = function adopt(node) {
-    return function () {
-      notAdopting = false;
-      render.apply(node, arguments);
-      notAdopting = true;
-      return node;
-    };
-  };
- 
-  // hyper.bind(el) ⚡️
-  // render TL inside a DOM node used as context
-  hyper.bind = bind;
-  function bind(context) { return render.bind(context); }
- 
-  // hyper.define('transformer', callback) 🌀
-  hyper.define = function define(transformer, callback) {
-    transformers[transformer] = callback;
-  };
- 
-  // hyper.escape('<html>') => '&lt;text&gt;' 🏃
-  hyper.escape = function escape(html) {
-    return html.replace(/[&<>'"]/g, fnEscape);
-  };
- 
-  // hyper.wire(obj, 'type:ID') ➰
-  // relate a renderer to a generic object
-  hyper.wire = wire;
-  function wire(obj, type) {
-    return arguments.length < 1 ?
-      wireContent('html') :
-      (obj == null ?
-        wireContent(type || 'html') :
-        wireWeakly(obj, type || 'html')
-      );
-  }
- 
-  // hyper.Component([initialState]) 🍻
-  // An overly-simplified Component class.
-  // For full Custom Elements support
-  // see HyperHTMLElement instead.
-  hyper.Component = Component;
-  function Component() {}
-  Object.defineProperties(
-    Component.prototype,
-    {
-      // same as HyperHTMLElement handleEvent
-      handleEvent: {value: function (e) {
-        // both IE < 11 and JSDOM lack dataset
-        var ct = e.currentTarget;
-        this[
-          ('getAttribute' in ct && ct.getAttribute('data-call')) ||
-          ('on' + e.type)
-        ](e);
-      }},
-      // returns its own HTML wire or create it once on comp.render()
-      html: lazyGetter('html', wireContent),
-      // returns its own SVG wire or create it once on comp.render()
-      svg: lazyGetter('svg', wireContent),
-      // same as HyperHTMLElement state
-      state: lazyGetter('state', function () { return this.defaultState; }),
-      // same as HyperHTMLElement get defaultState
-      defaultState: {get: function () { return {}; }},
-      // same as HyperHTMLElement setState
-      setState: {value: function (state) {
-        var target = this.state;
-        var source = typeof state === 'function' ? state.call(this, target) : state;
-        for (var key in source) target[key] = source[key];
-        this.render();
-      }}
-      // the render must be defined when extending hyper.Component
-      // the render **must** return either comp.html or comp.svg wire
-      // render() { return this.html`<p>that's it</p>`; }
-    }
-  );
- 
-  // - - - - - - - - - - - - - - - - - - - - - - -
- 
-  // ---------------------------------------------
-  // Constants
-  // ---------------------------------------------
- 
-  // Node.CONSTANTS
-  // without assuming Node is globally available
-  // since this project is used on the backend too
-  var ELEMENT_NODE = 1;
-  var ATTRIBUTE_NODE = 2;
-  var TEXT_NODE = 3;
-  var COMMENT_NODE = 8;
-  var DOCUMENT_FRAGMENT_NODE = 11;
- 
-  // SVG related
-  var OWNER_SVG_ELEMENT = 'ownerSVGElement';
-  var SVG_NAMESPACE = 'http://www.w3.org/2000/svg';
- 
-  var SHOULD_USE_ATTRIBUTE = /^style$/i;
-  var EXPANDO = '_hyper_html: ';
-  var UID = EXPANDO + ((Math.random() * new Date) | 0) + ';';
-  var UIDC = '<!--' + UID + '-->';
- 
-  // ---------------------------------------------
-  // DOM Manipulation
-  // ---------------------------------------------
- 
-  // return -1 if no differences are found
-  // the index where differences starts otherwise
-  function indexOfDifferences(a, b) {
-    var
-      i = 0,
-      aLength = a.length,
-      bLength = b.length
-    ;
-    while (i < aLength) {
-      if (i < bLength && a[i] === b[i]) i++;
-      else return i;
-    }
-    return i === bLength ? -1 : i;
-  }
- 
-  // accordingly with the content type
-  // it replace the content of a node
-  // with the give child
-  function populateNode(parent, child) {
-    switch (child.nodeType) {
-      case ELEMENT_NODE:
-        var childNodes = parent.childNodes;
-        if (childNodes[0] === child) {
-          removeNodeList(childNodes, 1);
-          break;
-        }
-        resetAndPopulate(parent, child);
-        break;
-      case DOCUMENT_FRAGMENT_NODE:
-        if (indexOfDifferences(parent.childNodes, child.childNodes) !== -1) {
-          resetAndPopulate(parent, child);
-        }
-        break;
-      case TEXT_NODE:
-        parent.textContent = child.textContent;
-        break;
-    }
-  }
- 
-  // remove a list of nodes from startIndex to list.length
-  function removeNodeList(list, startIndex) {
-    var length = list.length, child;
-    while (startIndex < length--) {
-      child = list[length];
-      child.parentNode.removeChild(child);
-    }
-  }
- 
-  // erase a node content and populate it
-  function resetAndPopulate(parent, child) {
-    parent.textContent = '';
-    parent.appendChild(child);
-  }
- 
-  // append childNodes to a node from a specific index
-  function updateViaArray(node, childNodes, i) {
-    var fragment = emptyFragment(node);
-    if (i !== 0) {
-      removeNodeList(node.childNodes, i);
-      appendNodes(fragment, childNodes.slice(i));
-      node.appendChild(fragment);
-    } else {
-      appendNodes(fragment, childNodes);
-      resetAndPopulate(node, fragment);
-    }
-  }
- 
-  // ---------------------------------------------
-  // hyperHTML Operations
-  // ---------------------------------------------
- 
-  // entry point for all TL => DOM operations
-  function render(template) {
-    var hyper = hypers.get(this);
-    if (
-      !hyper ||
-      hyper.template !== TL(template)
-    ) {
-      hyper = upgrade.apply(this, arguments);
-      hypers.set(this, hyper);
-    }
-    update.apply(hyper.updates, arguments);
-    return this;
-  }
- 
-  // `<div class="${'attr'}"></div>`
-  // `<div onclick="${function () {... }}"></div>`
-  // `<div onclick="${{handleEvent(){ ... }}}"></div>`
-  // `<div contenteditable="${true}"></div>`
-  function setAttribute(attribute, removeAttributes, name) {
-    var
-      node = attribute.ownerElement,
-      isEvent = /^on/.test(name),
-      isSpecial = name === 'data' ||
-                  (isSpecialAttribute(node, name) &&
-                  !SHOULD_USE_ATTRIBUTE.test(name)),
-      type = isEvent ? name.slice(2) : '',
-      noOwner = isEvent || isSpecial,
-      oldValue
-    ;
-    if (isEvent && name.toLowerCase() in node) type = type.toLowerCase();
-    if (noOwner) removeAttributes.push(node, name);
-    return isEvent ?
-      function eventAttr(newValue) {
-        if (oldValue !== newValue) {
-          if (oldValue) node.removeEventListener(type, oldValue, false);
-          oldValue = newValue;
-          if (newValue) node.addEventListener(type, newValue, false);
-        }
-      } :
-      (isSpecial ?
-        function specialAttr(newValue) {
-          if (oldValue !== newValue) {
-            oldValue = newValue;
-            // WebKit moves the cursor if input.value
-            // is set again, even if same value
-            if (node[name] !== newValue) {
-              // let the browser handle the case
-              // input.value = null;
-              // input.value; // ''
-              if (newValue == null) {
-                // reflect the null intent,
-                // do not pass undefined!
-                node[name] = null;
-                node.removeAttribute(name);
-              } else {
-                node[name] = newValue;
-              }
-            }
-          }
-        } :
-        function normalAttr(newValue) {
-          if (oldValue !== newValue) {
-            oldValue = newValue;
-            // avoid triggering again attributeChangeCallback
-            // if the value was identical
-            if (attribute.value !== newValue) {
-              if (newValue == null) {
-                if (!noOwner) {
-                  // TODO: should attribute.value = null here?
-                  noOwner = true;
-                  node.removeAttributeNode(attribute);
-                }
-              } else {
-                attribute.value = newValue;
-                if (noOwner) {
-                  noOwner = false;
-                  node.setAttributeNode(attribute);
-                }
-              }
-            }
-          }
-        }
-      );
-  }
- 
-  // `<p>${'any'}</p>`
-  // `<li>a</li>${'virtual'}<li>c</li>`
-  function setVirtualContent(node, childNodes) {
-    var oldValue;
-    var justContent = !childNodes;
-    return function anyVirtual(value) {
-      switch (typeof value) {
-        case 'string':
-        case 'number':
-        case 'boolean':
-          if (justContent) {
-            if (oldValue !== value) {
-              oldValue = value;
-              node.textContent = value;
-            }
-          } else if (
-            childNodes.length === 1 &&
-            childNodes[0].nodeType === TEXT_NODE
-          ) {
-            if (oldValue !== value) {
-              oldValue = value;
-              childNodes[0].textContent = value;
-            }
-          } else {
-            oldValue = value;
-            removeNodeList(childNodes, 0);
-            childNodes = [createText(node, value)];
-            node.parentNode.insertBefore(childNodes[0], node);
-          }
-          break;
-        case 'function':
-          if (justContent) {
-            anyVirtual(value(node, getChildren(node), 0));
-          } else {
-            anyVirtual(value(node.parentNode, childNodes, 0));
-          }
-          break;
-        case 'object':
-        case 'undefined':
-          if (value == null) {
-            oldValue = value;
-            anyVirtual('');
-            break;
-          } else if (value instanceof Component) {
-            value = value.render();
-          }
-        default:
-          oldValue = value;
-          if (isArray(value)) {
-            var length = value.length;
-            if (length === 0 && !justContent) {
-              removeNodeList(childNodes, 0);
-              childNodes = [];
-            } else {
-              switch (typeof value[0]) {
-                case 'string':
-                case 'number':
-                case 'boolean':
-                  anyVirtual({html: value});
-                  break;
-                case 'function':
-                  var parentNode = justContent ? node : node.parentNode;
-                  var children = justContent ?
-                      slice.call(getChildren(node)) : childNodes;
-                  for (var i = 0; i < length; i++) {
-                    value[i] = value[i](parentNode, children, i);
-                  }
-                  if (justContent) removeNodeList(children, i);
-                  anyVirtual(value.concat.apply([], value));
-                  break;
-                case 'object':
-                  if (isArray(value[0])) {
-                    value = value.concat.apply([], value);
-                  }
-                  if (isPromise_ish(value[0])) {
-                    Promise.all(value).then(anyVirtual);
-                    break;
-                  } else {
-                    for (var i = 0, length = value.length; i < length; i++) {
-                      if (value[i] instanceof Component) {
-                        value[i] = value[i].render();
-                      }
-                    }
-                  }
-                default:
-                  if (justContent) {
-                    var i = indexOfDifferences(node.childNodes, value);
-                    if (i !== -1) updateViaArray(node, value, i);
-                  } else {
-                    updateVirtualNodes(node, childNodes, value);
-                  }
-                  break;
-              }
-            }
-          } else if (isNode_ish(value)) {
-            if (justContent) populateNode(node, value);
-            else updateVirtualNodes(
-              node,
-              childNodes,
-              value.nodeType === DOCUMENT_FRAGMENT_NODE ?
-                slice.call(value.childNodes) :
-                [value]
-            );
-          } else if (isPromise_ish(value)) {
-            value.then(anyVirtual);
-          } else if ('placeholder' in value) {
-            invokeAtDistance(anyVirtual, value);
-          } else if ('text' in value) {
-            anyVirtual(String(value.text));
-          } else if ('any' in value) {
-            anyVirtual(value.any);
-          } else if ('html' in value) {
-            var html = [].concat(value.html).join('');
-            // TODO: should it trash the layout each time?
-            //       should it use oldValue instead?
-            if (justContent) node.innerHTML = html;
-            else {
-              removeNodeList(childNodes, 0);
-              var fragment = createFragment(node, html);
-              childNodes = slice.call(fragment.childNodes);
-              node.parentNode.insertBefore(fragment, node);
-            }
-          } else if ('length' in value) {
-            anyVirtual(slice.call(value));
-          } else {
-            anyVirtual(invokeTransformer(value));
-          }
-          break;
-      }
-    };
-  }
- 
-  // ---------------------------------------------
-  // DOM Traversing
-  // ---------------------------------------------
- 
-  // look for attributes that contains the comment text
-  function attributesSeeker(node, paths, parts) {
-    for (var
-      name,
-      attribute,
-      value = UID,
-      attributes = node.attributes,
-      i = 0, length = attributes.length;
-      i < length; i++
-    ) {
-      attribute = attributes[i];
-      if (attribute.value === value) {
-        name = parts.shift().replace(/^(?:|[\S\s]*?\s)(\S+?)=['"]?$/, '$1');
-        paths.push(
-          Path(
-            'attr',
-            // this is needed in both jsdom
-            // and in not-so-standard browsers/engines
-            node.attributes[name.toLowerCase()],
-            name
-          )
-        );
-      }
-    }
-  }
- 
-  // walk the fragment tree in search of comments
-  function hyperSeeker(node, paths, parts) {
-    for (var
-      child,
-      childNodes = node.childNodes,
-      length = childNodes.length,
-      i = 0; i < length; i++
-    ) {
-      child = childNodes[i];
-      switch (child.nodeType) {
-        case ELEMENT_NODE:
-          attributesSeeker(child, paths, parts);
-          hyperSeeker(child, paths, parts);
-          break;
-        case COMMENT_NODE:
-          if (child.textContent === UID) {
-            parts.shift();
-            if (length === 1 || (
-              noContent(child, 'previous') &&
-              noContent(child, 'next')
-            )) {
-              paths.push(Path('any', node));
-              i = length;
-            } else {
-              paths.push(Path('virtual', child));
-            }
-          }
-          break;
-        case TEXT_NODE:
-          if (
-            SHOULD_USE_ATTRIBUTE.test(node.nodeName) &&
-            trim.call(child.textContent) === UIDC
-          ) {
-            parts.shift();
-            paths.push(Path('any', node));
-          }
-          break;
-      }
-    }
-  }
- 
-  // ---------------------------------------------
-  // Features detection / ugly UA sniffs
-  // ---------------------------------------------
-  var featureFragment = createDocumentFragment(globalDocument);
- 
-  // Firefox < 55 has non standard template literals.
-  // https://bugzilla.mozilla.org/show_bug.cgi?id=1108941
-  // TODO: is there any better way to feature detect this ?
-  var FF = typeof navigator === 'object' &&
-            /Firefox\/(\d+)/.test(navigator.userAgent) &&
-            parseFloat(RegExp.$1) < 55;
- 
-  // If attributes order is shuffled, threat the browser differently
-  // Usually this is a well known IE only limitation but some older FF does the same.
-  var IE =  (function () {
-              var p  = globalDocument.createElement('p');
-              p.innerHTML = '<i data-i="" class=""></i>';
-              return /class/i.test(p.firstChild.attributes[0].name);
-            }());
- 
- 
-  // beside IE, old WebKit browsers don't have `children` in DocumentFragment
-  var WK = !('children' in featureFragment);
- 
-  // both Firefox < 55 and TypeScript have issues with template literals
-  // this lazy defined callback should spot issues right away
-  // and in the best case scenario become a no-op
-  var TL = function (template) {
-    if (template.propertyIsEnumerable('raw') || FF) TL = unique;
-    else TL = function (t) { return t; };
-    return TL(template);
-  };
- 
-  // ---------------------------------------------
-  // Helpers
-  // ---------------------------------------------
- 
-  // used to convert childNodes to Array
-  var slice = [].slice;
- 
-  // used to sanitize html
-  var oEscape = {
-    '&': '&amp;',
-    '<': '&lt;',
-    '>': '&gt;',
-    "'": '&#39;',
-    '"': '&quot;'
-  };
-  function fnEscape(m) {
-    return oEscape[m];
-  }
- 
-  // return content as html
-  function asHTML(html) {
-    return {html: html};
-  }
- 
-  // return a single node or an Array or nodes
-  function createContent(node) {
-    for (var
-      child,
-      content = [],
-      childNodes = node.childNodes,
-      i = 0,
-      length = childNodes.length;
-      i < length; i++
-    ) {
-      child = childNodes[i];
-      if (
-        child.nodeType === ELEMENT_NODE ||
-        trim.call(child.textContent).length !== 0
-      ) {
-        content.push(child);
-      }
-    }
-    return content.length === 1 ? content[0] : content;
-  }
- 
-  // just a minifier friendly indirection
-  function createDocumentFragment(document) {
-    return document.createDocumentFragment();
-  }
- 
-  // given a node, inject some html and return
-  // the resulting template document fragment
-  function createFragment(node, html) {
-    return (
-      OWNER_SVG_ELEMENT in node ?
-        createSVGFragment :
-        createHTMLFragment
-    )(node, html.replace(no, comments));
-  }
- 
-  // create fragment for HTML
-  function createHTMLFragment(node, html) {
-    var fragment;
-    var document = node.ownerDocument;
-    var container = document.createElement('template');
-    var hasContent = 'content' in container;
-    var needsTableWrap = false;
-    if (!hasContent) {
-      // DO NOT MOVE THE FOLLOWING LINE ELSEWHERE
-      fragment = createDocumentFragment(document);
-      // (a jsdom + nodejs tests coverage gotcha)
- 
-      // el.innerHTML = '<td></td>'; is not possible
-      // if the content is a partial internal table content
-      // it needs to be wrapped around once injected.
-      // HTMLTemplateElement does not suffer this issue.
-      needsTableWrap = /^[^\S]*?<(col(?:group)?|t(?:head|body|foot|r|d|h))/i.test(html);
-    }
-    if (needsTableWrap) {
-      // secure the RegExp.$1 result ASAP to avoid issues
-      // in case a non-browser DOM library uses RegExp internally
-      // when HTML content is injected (basicHTML / jsdom / others...)
-      var selector = RegExp.$1;
-      container.innerHTML = '<table>' + html + '</table>';
-      appendNodes(fragment, slice.call(container.querySelectorAll(selector)));
-    } else {
-      container.innerHTML = html;
-      if (hasContent) {
-        fragment = container.content;
-      } else {
-        appendNodes(fragment, slice.call(container.childNodes));
-      }
-    }
-    return fragment;
-  }
- 
-  // create a fragment for SVG
-  function createSVGFragment(node, html) {
-    var document = node.ownerDocument;
-    var fragment = createDocumentFragment(document);
-    if (IE || WK) {
-      var container = document.createElement('div');
-      container.innerHTML = '<svg xmlns="' + SVG_NAMESPACE + '">' + html + '</svg>';
-      appendNodes(fragment, slice.call(container.firstChild.childNodes));
-    } else {
-      var container = document.createElementNS(SVG_NAMESPACE, 'svg');
-      container.innerHTML = html;
-      appendNodes(fragment, slice.call(container.childNodes));
-    }
-    return fragment;
-  }
- 
-  // given a node, it does what is says
-  function createText(node, text) {
-    return node.ownerDocument.createTextNode(text);
-  }
- 
-  // given an info, tries to find out the best option
-  // to replace or update the content
-  function discoverNode(parentNode, virtual, info, childNodes) {
-    for (var
-      target = parentNode,
-      document = parentNode.ownerDocument,
-      path = info.path,
-      virtualNode = getNode(virtual, path),
-      i = 0,
-      length = path.length;
-      i < length; i++
-    ) {
-      switch (path[i++]) {
-        case 'attributes':
-          var name = virtualNode.name;
-          if (!parentNode.hasAttribute(name)) {
-            parentNode.setAttribute(name, '');
-          }
-          target = parentNode.attributes[name];
-          break;
-        case 'childNodes':
-          var children = getChildren(parentNode);
-          var virtualChildren = getChildren(virtualNode.parentNode);
-          target = previousElementSibling(virtualNode);
-          var before = target ? (path.indexOf.call(virtualChildren, target) + 1) : -1;
-          target = nextElementSibling(virtualNode);
-          var after = target ? path.indexOf.call(virtualChildren, target) : -1;
-          target = document.createComment(UID);
-          switch (true) {
-            // `${'virtual'}` is actually resolved as `${'any'}`
-            // case before < 0 && after < 0: before = 0;
- 
-            // `</a>${'virtual'}`
-            case after < 0:
-              after = children.length;
-              break;
-            // `${'virtual'}<b>`
-            case before < 0:
-              before = 0;
-            // `</a>${'virtual'}<b>`
-            default:
-              after = -(virtualChildren.length - after);
-              break;
-          }
-          childNodes.push.apply(
-            childNodes,
-            slice.call(children, before, after)
-          );
-          if (childNodes.length) {
-            insertBefore(
-              parentNode,
-              target,
-              nextElementSibling(childNodes[childNodes.length - 1])
-            );
-          } else {
-            insertBefore(
-              parentNode,
-              target,
-              slice.call(children, after)[0]
-            );
-          }
-          if (childNodes.length === 0) {
-            removePreviousText(parentNode, target);
-          }
-          break;
-        default:
-          // if the node is not there, create it
-          target = getChildren(parentNode)[path[i]] ||
-                    parentNode.appendChild(
-                      parentNode.ownerDocument.createElement(
-                        getNode(virtual, path.slice(0, i + 1)).nodeName
-                      )
-                    );
-          parentNode = target;
-          break;
-      }
-    }
-    return target;
-  }
- 
-  // returns current customElements reference
-  // compatible with basicHTML too
-  function getCEClass(node) {
-    var doc = hyper.document;
-    var ce = doc.customElements || doc.defaultView.customElements;
-    return ce && ce.get(node.nodeName.toLowerCase());
-  }
- 
-  // avoid errors on obsolete platforms
-  function insertBefore(parentNode, target, after) {
-    if (after) {
-      parentNode.insertBefore(target, after);
-    } else {
-      parentNode.appendChild(target);
-    }
-  }
- 
-  // verify that an attribute has
-  // a special meaning for the node
-  function isSpecialAttribute(node, name) {
-    var notSVG = !(OWNER_SVG_ELEMENT in node);
-    if (notSVG && /-/.test(node.nodeName)) {
-      var Class = getCEClass(node);
-      if (Class) node = Class.prototype;
-    }
-    return notSVG && name in node;
-  }
- 
-  // create an empty fragment from a generic node
-  function emptyFragment(node) {
-    return createDocumentFragment(node.ownerDocument);
-  }
- 
-  // use a placeholder and resolve with the right callback
-  function invokeAtDistance(callback, value) {
-    callback(value.placeholder);
-    if ('text' in value) {
-      Promise.resolve(value.text).then(String).then(callback);
-    } else if ('any' in value) {
-      Promise.resolve(value.any).then(callback);
-    } else if ('html' in value) {
-      Promise.resolve(value.html).then(asHTML).then(callback);
-    } else {
-      Promise.resolve(invokeTransformer(value)).then(callback);
-    }
-  }
- 
-  // last attempt to transform content
-  function invokeTransformer(object) {
-    for (var key in transformers) {
-      if (object.hasOwnProperty(key)) {
-        return transformers[key](object[key]);
-      }
-    }
-  }
- 
-  // quick and dirty Node check
-  function isNode_ish(value) {
-    return 'ELEMENT_NODE' in value;
-  }
- 
-  // quick and dirty Promise check
-  function isPromise_ish(value) {
-    return value != null && 'then' in value;
-  }
- 
-  // return a descriptor that lazily initialize a property
-  // unless it hasn't be previously set directly
-  function lazyGetter(type, fn) {
-    var secret = '_' + type + '$';
-    return {
-      get: function () {
-        return this[secret] || (this[type] = fn.call(this, type));
-      },
-      set: function (value) {
-        defineProperty(this, secret, {configurable: true, value: value});
-      }
-    };
-  }
- 
-  // given a node and a direction
-  // returns true if there's no content
-  function noContent(node, direction) {
-    while (
-      ((node = node[direction + 'Sibling']) != null) &&
-      node.nodeType === TEXT_NODE &&
-      trim.call(node.textContent).length < 1
-    );
-    return node == null;
-  }
- 
-  // remove a list of [node, attribute]
-  function removeAttributeList(list) {
-    for (var i = 0, length = list.length; i < length; i++) {
-      list[i++].removeAttribute(list[i]);
-    }
-  }
- 
-  // remove all text nodes from a virtual space
-  function removePreviousText(parentNode, node) {
-    var previousSibling = node.previousSibling;
-    if (previousSibling && previousSibling.nodeType === TEXT_NODE) {
-      parentNode.removeChild(previousSibling);
-      removePreviousText(parentNode, node);
-    }
-  }
- 
-  // specify the content to update
-  function setContent(info, target, removeAttributes, childNodes) {
-    var update;
-    switch (info.type) {
-      case 'any':
-        update = setVirtualContent(target, null);
-        break;
-      case 'attr':
-        update = setAttribute(target, removeAttributes, info.name);
-        break;
-      case 'virtual':
-        update = setVirtualContent(target, childNodes);
-        break;
-    }
-    return update;
-  }
- 
-  // update partially or fully the list of virtual nodes
-  // it modifies in place the childNodes list if necessary
-  function updateVirtualNodes(node, childNodes, value) {
-    var i = indexOfDifferences(childNodes, value);
-    if (i !== -1) {
-      var fragment = emptyFragment(node);
-      removeNodeList(childNodes, i);
-      childNodes.splice(i);
-      value = value.slice(i);
-      appendNodes(fragment, value);
-      node.parentNode.insertBefore(fragment, node);
-      childNodes.push.apply(childNodes, value);
-    }
-  }
- 
-  // used for common path creation.
-  function Path(type, node, name) {
-    return {type: type, path: createPath(node), name: name};
-  }
- 
-  // ---------------------------------------------
-  // Hybrid Shims
-  // ---------------------------------------------
- 
-  // WeakMap with partial EXPANDO fallback
-  var $WeakMap = typeof WeakMap === typeof $WeakMap ?
-      function () {
-        return {
-          get: function (obj) { return obj[EXPANDO]; },
-          set: function (obj, value) {
-            Object.defineProperty(obj, EXPANDO, {
-              configurable: true,
-              value: value
-            });
-          }
-        };
-      } :
-      WeakMap;
- 
-  // Map with partial double Array fallback
-  var $Map = typeof Map === typeof $Map ?
-      function () {
-        var k = [], v = [];
-        return {
-          get: function (obj) {
-            return v[k.indexOf(obj)];
-          },
-          // being used with unique template literals
-          // there is never a case when a value is overwritten
-          // no need to check upfront for the indexOf
-          set: function (obj, value) {
-            v[k.push(obj) - 1] = value;
-          }
-        };
-      } :
-      Map;
- 
-  // TODO: which browser needs these partial polyfills here?
- 
-  // BB7 and webOS need this
-  var isArray = Array.isArray ||
-                (function () {
-                  var toString = {}.toString;
-                  // I once had an engine returning [array Array]
-                  // and I've got scared since!
-                  var s = toString.call([]);
-                  return function (a) {
-                    return toString.call(a) === s;
-                  };
-                }());
- 
-  // older WebKit need this
-  var trim = EXPANDO.trim ||
-              function () { return this.replace(/^\s+|\s+$/g, ''); };
- 
-  // ---------------------------------------------
-  // Shared variables
-  // ---------------------------------------------
- 
-  // recycled defineProperty shortcut
-  var defineProperty = Object.defineProperty;
- 
-  // transformers registry
-  var transformers = {};
- 
-  // normalize Firefox issue with template literals
-  var templateObjects = {}, unique;
-  function unique(template) {
-    var key = '_' + template.join(UIDC);
-    return templateObjects[key] ||
-          (templateObjects[key] = template);
-  }
- 
-  // use native .append(...childNodes) where available
-  var appendNodes = 'append' in featureFragment ?
-      function (node, childNodes) {
-        node.append.apply(node, childNodes);
-      } :
-      function appendNodes(node, childNodes) {
-        for (var
-          i = 0,
-          length = childNodes.length;
-          i < length; i++
-        ) {
-          node.appendChild(childNodes[i]);
-        }
-      };
- 
-  // returns children or retrieve them in IE/Edge
-  var getChildren = WK || IE ?
-      function (node) {
-        for (var
-          child,
-          children = [],
-          childNodes = node.childNodes,
-          j = 0, i = 0, length = childNodes.length;
-          i < length; i++
-        ) {
-          child = childNodes[i];
-          if (child.nodeType === ELEMENT_NODE)
-            children[j++] = child;
-        }
-        return children;
-      } :
-      function (node) { return node.children; };
- 
-  // return the correct node walking through a path
-  // fixes IE/Edge issues with attributes and children (fixes old WebKit too)
-  var getNode = IE || WK ?
-      function (parentNode, path) {
-        for (var name, i = 0, length = path.length; i < length; i++) {
-          name = path[i++];
-          switch (name) {
-            case 'children':
-              parentNode = getChildren(parentNode)[path[i]];
-              break;
-            default:
-              parentNode = parentNode[name][path[i]];
-              break;
-          }
-        }
-        return parentNode;
-      } :
-      function (parentNode, path) {
-        for (var i = 0, length = path.length; i < length; i++) {
-          parentNode = parentNode[path[i++]][path[i]];
-        }
-        return parentNode;
-      };
- 
-  // sanitizes interpolations as comments
-  var no = /(<[a-z]+[a-z0-9:_-]*)((?:[^\S]+[a-z0-9:_-]+(?:=(?:'.*?'|".*?"|<.+?>|\S+))?)+)([^\S]*\/?>)/gi;
-  var findAttributes = new RegExp('([^\\S][a-z]+[a-z0-9:_-]*=)([\'"]?)' + UIDC + '\\2', 'gi');
-  var comments = function ($0, $1, $2, $3) {
-    return $1 + $2.replace(findAttributes, replaceAttributes) + $3;
-  };
- 
-  var replaceAttributes = function ($0, $1, $2) {
-    return $1 + ($2 || '"') + UID + ($2 || '"');
-  };
- 
-  // IE/Edge gotcha with comment nodes
-  var nextElementSibling = IE ?
-    function (node) {
-      while (node = node.nextSibling) {
-        if (node.nodeType === ELEMENT_NODE) return node;
-      }
-      return undefined;
-    } :
-    function (node) { return node.nextElementSibling; };
- 
-  var previousElementSibling = IE ?
-    function (node) {
-      while (node = node.previousSibling) {
-        if (node.nodeType === ELEMENT_NODE) return node;
-      }
-      return undefined;
-    } :
-    function (node) { return node.previousElementSibling; };
- 
-  // [element] = {template, updates};
-  var hypers = new $WeakMap;
- 
-  // [element] = {template, updates};
-  var wires = new $WeakMap;
- 
-  // [template] = {fragment, paths};
-  var templates = new $Map;
- 
-  // internal signal to switch adoption
-  var notAdopting = true;
- 
-  // IE 11 has problems with cloning templates too
-  // it "forgets" empty childNodes
-  var cloneNode = (function () {
-    featureFragment.appendChild(createText(featureFragment, 'g'));
-    featureFragment.appendChild(createText(featureFragment, ''));
-    return featureFragment.cloneNode(true).childNodes.length === 1 ?
-      function (node) {
-        for (var
-          clone = node.cloneNode(),
-          childNodes = node.childNodes || [],
-          i = 0, length = childNodes.length;
-          i < length; i++
-        ) {
-          clone.appendChild(cloneNode(childNodes[i]));
-        }
-        return clone;
-      } :
-      function (fragment) {
-        return fragment.cloneNode(true);
-      };
-  }());
- 
-  // ---------------------------------------------
-  // Template related utilities
-  // ---------------------------------------------
- 
-  // given a unique template object
-  // create, parse, and store retrieved info
-  function createTemplate(template) {
-    var paths = [];
-    var fragment = createFragment(this, template.join(UIDC));
-    var info = {fragment: fragment, paths: paths};
-    hyperSeeker(fragment, paths, template.slice());
-    templates.set(template, info);
-    return info;
-  }
- 
-  // given a generic node, returns a path capable
-  // of retrieving such path back again.
-  // TODO: worth passing the index when available ?
-  function createPath(node) {
-    var path = [];
-    var parentNode;
-    switch(node.nodeType) {
-      case ELEMENT_NODE:
-      case DOCUMENT_FRAGMENT_NODE:
-        parentNode = node;
-        break;
-      case COMMENT_NODE:
-        parentNode = node.parentNode;
-        path.unshift(
-          'childNodes',
-          path.indexOf.call(parentNode.childNodes, node)
-        );
-        break;
-      case ATTRIBUTE_NODE:
-      default: // jsdom here does not provide a nodeType 2 ...
-        parentNode = node.ownerElement;
-        path.unshift('attributes', node.name);
-        break;
-    }
-    for (
-      node = parentNode;
-      parentNode = parentNode.parentNode;
-      node = parentNode
-    ) {
-      path.unshift('children', path.indexOf.call(getChildren(parentNode), node));
-    }
-    return path;
-  }
- 
-  // given a root node and a list of paths
-  // creates an array of updates to invoke
-  // whenever the next interpolation happens
-  function createUpdates(fragment, paths) {
-    for (var
-      info, target,
-      updates = [],
-      removeAttributes = [],
-      i = 0, length = paths.length;
-      i < length; i++
-    ) {
-      info = paths[i];
-      target = getNode(fragment, info.path);
-      if (target.nodeType === DOCUMENT_FRAGMENT_NODE) {
-        removeNodeList(target.childNodes, 0);
-        target = this;
-      }
-      updates[i] = setContent(info, target, removeAttributes, []);
-    }
-    removeAttributeList(removeAttributes);
-    return updates;
-  }
- 
-  // like createUpdates but for nodes with already a content
-  function discoverUpdates(fragment, paths) {
-    for (var
-      info, childNodes,
-      updates = [],
-      removeAttributes = [],
-      i = 0, length = paths.length;
-      i < length; i++
-    ) {
-      childNodes = [];
-      info = paths[i];
-      updates[i] = setContent(
-        info,
-        discoverNode(this, fragment, info, childNodes),
-        removeAttributes,
-        childNodes
-      );
-    }
-    removeAttributeList(removeAttributes);
-    return updates;
-  }
- 
-  // invokes each update function passing interpolated value
-  function update() {
-    for (var i = 1, length = arguments.length; i < length; i++) {
-      this[i - 1](arguments[i]);
-    }
-  }
- 
-  // create a template, if unknown
-  // upgrade a node to use such template for future updates
-  function upgrade(template) {
-    template = TL(template);
-    var updates;
-    var info =  templates.get(template) ||
-                createTemplate.call(this, template);
-    if (notAdopting) {
-      var fragment = cloneNode(info.fragment);
-      updates = createUpdates.call(this, fragment, info.paths);
-      resetAndPopulate(this, fragment);
-    } else {
-      updates = discoverUpdates.call(this, info.fragment, info.paths);
-    }
-    return {template: template, updates: updates};
-  }
- 
-  // ---------------------------------------------
-  // Wires
-  // ---------------------------------------------
- 
-  // create a new wire for generic DOM content
-  function wireContent(type) {
-    var adopter, content, container, fragment, render, setup, template;
- 
-    function before(document) {
-      fragment = createDocumentFragment(document);
-      container = type === 'svg' ?
-        document.createElementNS(SVG_NAMESPACE, 'svg') :
-        fragment;
-      render = bind(container);
-    }
- 
-    function after() {
-      if (setup) {
-        setup = false;
-        if (type === 'svg') {
-          appendNodes(fragment, slice.call(container.childNodes));
-        }
-        content = createContent(fragment);
-      }
-      return content;
-    }
- 
-    return type === 'adopt' ?
-      function adopt(statics) {
-        var args = arguments;
-        statics = TL(statics);
-        if (template !== statics) {
-          setup = true;
-          template = statics;
-          adopter = function (parentNode, children, i) {
-            if (setup) {
-              if (i < children.length) {
-                container = children[i];
-                fragment = {
-                  ownerDocument: container.ownerDocument,
-                  childNodes: [container],
-                  children: [container]
-                };
-                render = hyper.adopt(fragment);
-              } else {
-                if (OWNER_SVG_ELEMENT in parentNode) type = 'svg';
-                before(parentNode.ownerDocument);
-              }
-            }
-            render.apply(null, args);
-            return after();
-          };
-        }
-        return adopter;
-      } :
-      function update(statics) {
-        statics = TL(statics);
-        if (template !== statics) {
-          setup = true;
-          template = statics;
-          before(hyper.document);
-        }
-        render.apply(null, arguments);
-        return after();
-      };
-  }
- 
-  // setup a weak reference if needed and return a wire by ID
-  function wireWeakly(obj, type) {
-    var wire = wires.get(obj);
-    var i = type.indexOf(':');
-    var id = type;
-    if (-1 < i) {
-      id = type.slice(i + 1);
-      type = type.slice(0, i) || 'html';
-    }
-    if (!wire) {
-      wire = {};
-      wires.set(obj, wire);
-    }
-    return wire[id] || (wire[id] = wireContent(type));
-  }
- 
-  // ---------------------------------------------
-  // ⚡️ ️️The End ➰
-  // ---------------------------------------------
-  return hyper;
- 
-}(document));
- 
-// umd.KISS
-try { module.exports = hyperHTML; } catch(o_O) {}
-
-
- - - - - - - diff --git a/coverage/lcov-report/hyperHTML/index.html b/coverage/lcov-report/hyperHTML/index.html index 73276e44..747a2964 100644 --- a/coverage/lcov-report/hyperHTML/index.html +++ b/coverage/lcov-report/hyperHTML/index.html @@ -22,22 +22,22 @@

100% Statements - 568/568 + 605/605
100% Branches - 326/326 + 335/335
100% Functions - 94/94 + 98/98
100% Lines - 550/550 + 591/591
@@ -59,16 +59,16 @@

- hyperhtml.js + index.js
100% - 568/568 + 605/605 100% - 326/326 + 335/335 100% - 94/94 + 98/98 100% - 550/550 + 591/591 @@ -77,7 +77,7 @@

diff --git a/coverage/lcov-report/hyperHTML/index.js.html b/coverage/lcov-report/hyperHTML/index.js.html new file mode 100644 index 00000000..763c051d --- /dev/null +++ b/coverage/lcov-report/hyperHTML/index.js.html @@ -0,0 +1,4277 @@ + + + + Code coverage report for hyperHTML/index.js + + + + + + + +
+
+

+ all files / hyperHTML/ index.js +

+
+
+ 100% + Statements + 605/605 +
+
+ 100% + Branches + 335/335 +
+
+ 100% + Functions + 98/98 +
+
+ 100% + Lines + 591/591 +
+
+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299 +300 +301 +302 +303 +304 +305 +306 +307 +308 +309 +310 +311 +312 +313 +314 +315 +316 +317 +318 +319 +320 +321 +322 +323 +324 +325 +326 +327 +328 +329 +330 +331 +332 +333 +334 +335 +336 +337 +338 +339 +340 +341 +342 +343 +344 +345 +346 +347 +348 +349 +350 +351 +352 +353 +354 +355 +356 +357 +358 +359 +360 +361 +362 +363 +364 +365 +366 +367 +368 +369 +370 +371 +372 +373 +374 +375 +376 +377 +378 +379 +380 +381 +382 +383 +384 +385 +386 +387 +388 +389 +390 +391 +392 +393 +394 +395 +396 +397 +398 +399 +400 +401 +402 +403 +404 +405 +406 +407 +408 +409 +410 +411 +412 +413 +414 +415 +416 +417 +418 +419 +420 +421 +422 +423 +424 +425 +426 +427 +428 +429 +430 +431 +432 +433 +434 +435 +436 +437 +438 +439 +440 +441 +442 +443 +444 +445 +446 +447 +448 +449 +450 +451 +452 +453 +454 +455 +456 +457 +458 +459 +460 +461 +462 +463 +464 +465 +466 +467 +468 +469 +470 +471 +472 +473 +474 +475 +476 +477 +478 +479 +480 +481 +482 +483 +484 +485 +486 +487 +488 +489 +490 +491 +492 +493 +494 +495 +496 +497 +498 +499 +500 +501 +502 +503 +504 +505 +506 +507 +508 +509 +510 +511 +512 +513 +514 +515 +516 +517 +518 +519 +520 +521 +522 +523 +524 +525 +526 +527 +528 +529 +530 +531 +532 +533 +534 +535 +536 +537 +538 +539 +540 +541 +542 +543 +544 +545 +546 +547 +548 +549 +550 +551 +552 +553 +554 +555 +556 +557 +558 +559 +560 +561 +562 +563 +564 +565 +566 +567 +568 +569 +570 +571 +572 +573 +574 +575 +576 +577 +578 +579 +580 +581 +582 +583 +584 +585 +586 +587 +588 +589 +590 +591 +592 +593 +594 +595 +596 +597 +598 +599 +600 +601 +602 +603 +604 +605 +606 +607 +608 +609 +610 +611 +612 +613 +614 +615 +616 +617 +618 +619 +620 +621 +622 +623 +624 +625 +626 +627 +628 +629 +630 +631 +632 +633 +634 +635 +636 +637 +638 +639 +640 +641 +642 +643 +644 +645 +646 +647 +648 +649 +650 +651 +652 +653 +654 +655 +656 +657 +658 +659 +660 +661 +662 +663 +664 +665 +666 +667 +668 +669 +670 +671 +672 +673 +674 +675 +676 +677 +678 +679 +680 +681 +682 +683 +684 +685 +686 +687 +688 +689 +690 +691 +692 +693 +694 +695 +696 +697 +698 +699 +700 +701 +702 +703 +704 +705 +706 +707 +708 +709 +710 +711 +712 +713 +714 +715 +716 +717 +718 +719 +720 +721 +722 +723 +724 +725 +726 +727 +728 +729 +730 +731 +732 +733 +734 +735 +736 +737 +738 +739 +740 +741 +742 +743 +744 +745 +746 +747 +748 +749 +750 +751 +752 +753 +754 +755 +756 +757 +758 +759 +760 +761 +762 +763 +764 +765 +766 +767 +768 +769 +770 +771 +772 +773 +774 +775 +776 +777 +778 +779 +780 +781 +782 +783 +784 +785 +786 +787 +788 +789 +790 +791 +792 +793 +794 +795 +796 +797 +798 +799 +800 +801 +802 +803 +804 +805 +806 +807 +808 +809 +810 +811 +812 +813 +814 +815 +816 +817 +818 +819 +820 +821 +822 +823 +824 +825 +826 +827 +828 +829 +830 +831 +832 +833 +834 +835 +836 +837 +838 +839 +840 +841 +842 +843 +844 +845 +846 +847 +848 +849 +850 +851 +852 +853 +854 +855 +856 +857 +858 +859 +860 +861 +862 +863 +864 +865 +866 +867 +868 +869 +870 +871 +872 +873 +874 +875 +876 +877 +878 +879 +880 +881 +882 +883 +884 +885 +886 +887 +888 +889 +890 +891 +892 +893 +894 +895 +896 +897 +898 +899 +900 +901 +902 +903 +904 +905 +906 +907 +908 +909 +910 +911 +912 +913 +914 +915 +916 +917 +918 +919 +920 +921 +922 +923 +924 +925 +926 +927 +928 +929 +930 +931 +932 +933 +934 +935 +936 +937 +938 +939 +940 +941 +942 +943 +944 +945 +946 +947 +948 +949 +950 +951 +952 +953 +954 +955 +956 +957 +958 +959 +960 +961 +962 +963 +964 +965 +966 +967 +968 +969 +970 +971 +972 +973 +974 +975 +976 +977 +978 +979 +980 +981 +982 +983 +984 +985 +986 +987 +988 +989 +990 +991 +992 +993 +994 +995 +996 +997 +998 +999 +1000 +1001 +1002 +1003 +1004 +1005 +1006 +1007 +1008 +1009 +1010 +1011 +1012 +1013 +1014 +1015 +1016 +1017 +1018 +1019 +1020 +1021 +1022 +1023 +1024 +1025 +1026 +1027 +1028 +1029 +1030 +1031 +1032 +1033 +1034 +1035 +1036 +1037 +1038 +1039 +1040 +1041 +1042 +1043 +1044 +1045 +1046 +1047 +1048 +1049 +1050 +1051 +1052 +1053 +1054 +1055 +1056 +1057 +1058 +1059 +1060 +1061 +1062 +1063 +1064 +1065 +1066 +1067 +1068 +1069 +1070 +1071 +1072 +1073 +1074 +1075 +1076 +1077 +1078 +1079 +1080 +1081 +1082 +1083 +1084 +1085 +1086 +1087 +1088 +1089 +1090 +1091 +1092 +1093 +1094 +1095 +1096 +1097 +1098 +1099 +1100 +1101 +1102 +1103 +1104 +1105 +1106 +1107 +1108 +1109 +1110 +1111 +1112 +1113 +1114 +1115 +1116 +1117 +1118 +1119 +1120 +1121 +1122 +1123 +1124 +1125 +1126 +1127 +1128 +1129 +1130 +1131 +1132 +1133 +1134 +1135 +1136 +1137 +1138 +1139 +1140 +1141 +1142 +1143 +1144 +1145 +1146 +1147 +1148 +1149 +1150 +1151 +1152 +1153 +1154 +1155 +1156 +1157 +1158 +1159 +1160 +1161 +1162 +1163 +1164 +1165 +1166 +1167 +1168 +1169 +1170 +1171 +1172 +1173 +1174 +1175 +1176 +1177 +1178 +1179 +1180 +1181 +1182 +1183 +1184 +1185 +1186 +1187 +1188 +1189 +1190 +1191 +1192 +1193 +1194 +1195 +1196 +1197 +1198 +1199 +1200 +1201 +1202 +1203 +1204 +1205 +1206 +1207 +1208 +1209 +1210 +1211 +1212 +1213 +1214 +1215 +1216 +1217 +1218 +1219 +1220 +1221 +1222 +1223 +1224 +1225 +1226 +1227 +1228 +1229 +1230 +1231 +1232 +1233 +1234 +1235 +1236 +1237 +1238 +1239 +1240 +1241 +1242 +1243 +1244 +1245 +1246 +1247 +1248 +1249 +1250 +1251 +1252 +1253 +1254 +1255 +1256 +1257 +1258 +1259 +1260 +1261 +1262 +1263 +1264 +1265 +1266 +1267 +1268 +1269 +1270 +1271 +1272 +1273 +1274 +1275 +1276 +1277 +1278 +1279 +1280 +1281 +1282 +1283 +1284 +1285 +1286 +1287 +1288 +1289 +1290 +1291 +1292 +1293 +1294 +1295 +1296 +1297 +1298 +1299 +1300 +1301 +1302 +1303 +1304 +1305 +1306 +1307 +1308 +1309 +1310 +1311 +1312 +1313 +1314 +1315 +1316 +1317 +1318 +1319 +1320 +1321 +1322 +1323 +1324 +1325 +1326 +1327 +1328 +1329 +1330 +1331 +1332 +1333 +1334 +1335 +1336 +1337 +1338 +1339 +1340 +1341 +1342 +1343 +1344 +1345 +1346 +1347 +1348 +1349 +1350 +1351 +1352 +1353 +1354 +1355 +1356 +1357 +1358 +1359 +1360 +1361 +1362 +1363 +1364 +1365 +1366 +1367 +1368 +1369 +1370 +1371 +1372 +1373 +1374 +1375 +1376 +1377 +1378 +1379 +1380 +1381 +1382 +1383 +1384 +1385 +1386 +1387 +1388 +1389 +1390 +1391 +1392 +1393 +1394 +1395 +1396 +1397 +1398 +1399 +1400 +1401 +1402 +1403 +1404 +1405 +  +  +  +  +  +  +  +  +  + +  +  + +  + +20× +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + +28× +32× +32× +32× +32× +  +  +  +  +  + +210× +  +  + + +  +  +  + + +  +  +  +  + + +62× +  +  +  +  +  +  +  +  +  +  +  + + + +  +  +  +  +  + + +  +  +  +  +  +  +  +  +  + +  + +  +  + + +11× + +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + + + + + +  +  + + +  + + + + +  +  +  +  +  + +104× +104× +104× +  +  + +88× +  +  +  +  +  +  +  +  +  +50× +  +88× +88× +88× +48× +34× +  +14× +14× +38× +  +  +48× +  +88× +  +  +  +  +  +  +  + +282× +282× +  +  +  +156× +156× +  +282× +282× +  +  +  +  +  +  + +48× +  +  +  +  +  +  +  +  +  +48× +48× +48× +  +30× +18× +18× +18× +  +  +  +  +20× +16× +  +  +16× +  +  +  +14× +  +  + + +  +10× +  +  +  +  +  +48× +36× +  +  +36× +34× + +  + + +  +  +30× +30× + + +  +  +  +  +  +  +  +  +  + + + + + + +  +  +  +  +  +  + +104× +104× +286× +  +  +  +114× +114× +  +  +  +46× +28× +28× +  +  +68× +68× + +  +66× +  +  +  +  +  +114× +  + + +  +  +168× + + + +162× + +  +  +162× +162× +78× +78× + +  +74× +  +  +  +24× +24× +  +10× +10× +12× +  +10× +10× +  +40× +12× +  +40× + + +  +36× +78× + +  +  +  +  +36× +36× +  +  +84× +24× +  +  +  +  +  +  +60× + +56× +10× +46× + +42× + +38× +28× +28× +28× +28× +28× +10× + +  + +  +162× +  +  +  +  +  +  +  +  +  + +118× +  +  +  +  +  +  +  +56× +56× +48× +48× +  +  +  +  +  +  +  +  +  +  +  +  +  + +228× +  +  +  +  +  +322× +322× +  +118× +118× +118× +  +66× +64× +64× +  +66× +  +138× +  +  +  + + +  +138× +  +  +  +  +  +  +  + +  +  +  +  + +  +  +  +  +  + + + + +  +  +  +  + +  +  +  +  + + +206× + +  +  +  +  +  +  +  + +  +  + +  +  +  +  +  +  + + +  +  +  + + +  +  +  + +62× +  +  +  +  +  +  +  +90× +90× +  +  +  +66× +  +  +62× +  +  +  + +142× +  +  +  +  + +138× +  +  +  +  +  +  +  + +136× +136× +136× +136× +136× +136× +  +64× +  +  +  +  +  +  +64× +  +136× +  +  +  + + + +  +135× +135× +72× +  +63× +  +  +136× +  +  +  + + + + + + + +  + + + +  + +  +  +  + +72× +  +  +  +  + + + + +  +  +  +  + +46× +46× + + +  +46× +  +  +  + +10× +10× + + + + + +  + +  +  +  +  + +10× +10× + +  +  +  +  +  + +84× +  +  +  + +100× +  +  +  +  + + + +  +42× +  +  +18× +  +  +  +  +  + +156× +24× +  +  +  +  + +156× +156× +  +  +104× +104× +  +48× +48× +  + + +  +156× +  +  +  + +116× +  +  +  +  +  +  +  + +  + +164× +  +90× +  +  +  +  +  +  +  +  +  + +  + + +  +78× +  +  +  +  +  +55× +  +  +  +  +  +  +  +  + +  + +  +  + + +101× +  +  +  +  + +21× +  +  +  +  +  +  + +  +  + +  +  + + +206× +206× +  +  +  +  + +  +69× +  +  + +  +  +  +  + +  +  +  +  + +  +162× +  +  +  +  +  +  +390× +390× +205× +  +162× +  +101× +  +  +  + +  +82× +137× +137× +  +61× +61× +  +76× +76× +  +  +82× +  +  +82× +137× +  +82× +  +  +  + + + +38× +  +  + +48× +  +  +  + +  +  + +  +  + +  +  + +  +  +  + + + + +  +206× +  +  +  +  +  +144× +  +206× +  +  +62× +  +  +  +  +  +  +  +  + +  +21× +15× +  +15× +  +21× +  + +  +18× +12× +  +14× +  +18× +  +  + +40× +40× +10× +10× +  +  +  +  + +36× +10× +  +26× +  +  +  +  +  + +46× +  +  +  +  +  +  +  +  +82× +  + + + +  + + +  +36× +36× +36× +36× +36× +36× +36× +36× +  +  +  +  +  +26× +26× +  +  + +  +  +10× +10× +  +36× +  +  +  +36× + +  +  +  +  +  +30× +  +  +  +  +  +36× +30× +  +36× +  +  +38× +  +  +  +  +  +38× +38× +  +  +46× +  +  +  + +32× +  +  +  +  +  +  +46× +46× +46× +  +  +  +  +  +  +32× +32× +  +  +  +  +  +  +  +  + +110× +110× +110× +110× +110× +110× +  +  +  +  +  + +116× +116× +116× +  +  + + +  +64× +64× +  +  +  +64× +  +  +48× +48× +48× +  +116× +  +  +  +  +92× +  +116× +  +  +  +  +  + +124× +  +  +  +  +  +  +110× +110× +  +  +  +  +  +  +124× +124× +  +  +  + +282× +300× +  +  +  +  +  + +156× +156× +156× +  +156× +124× +124× +124× +124× +  +32× +  +156× +  +  +  +  +  +  +  + +60× +  + +60× +60× +  +  +60× +  +  + +90× +62× +62× + +  +62× +  +90× +  +  +60× +  +14× +14× +14× +10× +10× +10× +14× +10× + + +  +  +  +  + +  + + +  +  +14× +14× +  +  +14× +  +  +76× +76× +52× +52× +52× +  +76× +76× +  +  +  +  + +46× +46× +46× +46× +12× +12× +  +46× +24× +24× +  +46× +  +  +  +  +  +  +  +  +  +  +  + +  +  +  +  + +  +  +  +  +  +  + +  +  +  +  +  +  +  +  + +60× +  +  +  +  +60× +26× +24× +  +26× +  +34× + + +  +30× +  +  +  +  +  +  +  +  +  +  +  + +104× +104× +88× +88× +88× +88× +  +104× +  +  + +  +  +  +  +  +  +  + +30× +30× +30× +30× +30× +30× +30× +30× +30× +30× +30× +30× +50× +30× +46× +46× +46× +46× +46× +84× +84× +84× +84× +  +  +  +  +84× +  +46× +  +30× +  +  +  + +28× +  +  +  +  +  +  +  +  +  + +30× +  +  +  +  +  +  +  +  +30× +50× +50× +50× +50× +50× +50× +50× +42× +42× +42× +16× +  +  + + + +  +  + + +  +  +30× + +  +30× + +  +30× +  +  +  + +30× +  +  +  +  +  +30× +20× +20× + + + + +  + + +  +  + +  + +  +20× +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +
var hyperHTML = (function (globalDocument, majinbuu) {'use strict';
+ 
+  /*! (c) 2017 Andrea Giammarchi @WebReflection, (ISC) */
+ 
+  // ---------------------------------------------
+  // hyperHTML Public API
+  // ---------------------------------------------
+ 
+  // The document must be swap-able at runtime.
+  // Needed by both basicHTML and nativeHTML
+  hyper.document = globalDocument;
+ 
+  // friendly destructuring
+  hyper.hyper = hyper;
+ 
+  function hyper(HTML) {
+    return arguments.length < 2 ?
+      (HTML == null ?
+        wireContent('html') :
+        (typeof HTML === 'string' ?
+          wire(null, HTML) :
+          ('raw' in HTML ?
+            wireContent('html')(HTML) :
+            ('nodeType' in HTML ?
+              bind(HTML) :
+              wireWeakly(HTML, 'html')
+            )
+          )
+        )) :
+      ('raw' in HTML ?
+        wireContent('html') : wire
+      ).apply(null, arguments);
+  }
+ 
+  // hyper.adopt(el) 🐣
+  // import an already live DOM structure
+  // described as TL
+  hyper.adopt = function adopt(node) {
+    return function () {
+      notAdopting = false;
+      render.apply(node, arguments);
+      notAdopting = true;
+      return node;
+    };
+  };
+ 
+  // hyper.bind(el) ⚡️
+  // render TL inside a DOM node used as context
+  hyper.bind = bind;
+  function bind(context) { return render.bind(context); }
+ 
+  // hyper.define('transformer', callback) 🌀
+  hyper.define = function define(transformer, callback) {
+    transformers[transformer] = callback;
+  };
+ 
+  // hyper.escape('<html>') => '&lt;text&gt;' 🏃
+  hyper.escape = function escape(html) {
+    return html.replace(/[&<>'"]/g, fnEscape);
+  };
+ 
+  // hyper.wire(obj, 'type:ID') ➰
+  // relate a renderer to a generic object
+  hyper.wire = wire;
+  function wire(obj, type) {
+    return arguments.length < 1 ?
+      wireContent('html') :
+      (obj == null ?
+        wireContent(type || 'html') :
+        wireWeakly(obj, type || 'html')
+      );
+  }
+ 
+  // hyper.Component([initialState]) 🍻
+  // An overly-simplified Component class.
+  // For full Custom Elements support
+  // see HyperHTMLElement instead.
+  hyper.Component = Component;
+  function Component() {}
+  Object.defineProperties(
+    Component.prototype,
+    {
+      // same as HyperHTMLElement handleEvent
+      handleEvent: {value: function (e) {
+        // both IE < 11 and JSDOM lack dataset
+        var ct = e.currentTarget;
+        this[
+          ('getAttribute' in ct && ct.getAttribute('data-call')) ||
+          ('on' + e.type)
+        ](e);
+      }},
+      // returns its own HTML wire or create it once on comp.render()
+      html: lazyGetter('html', wireContent),
+      // returns its own SVG wire or create it once on comp.render()
+      svg: lazyGetter('svg', wireContent),
+      // same as HyperHTMLElement state
+      state: lazyGetter('state', function () { return this.defaultState; }),
+      // same as HyperHTMLElement get defaultState
+      defaultState: {get: function () { return {}; }},
+      // same as HyperHTMLElement setState
+      setState: {value: function (state) {
+        var target = this.state;
+        var source = typeof state === 'function' ? state.call(this, target) : state;
+        for (var key in source) target[key] = source[key];
+        this.render();
+      }}
+      // the render must be defined when extending hyper.Component
+      // the render **must** return either comp.html or comp.svg wire
+      // render() { return this.html`<p>that's it</p>`; }
+    }
+  );
+ 
+  // - - - - - - - - - - - - - - - - - - - - - - -
+ 
+  // ---------------------------------------------
+  // Constants
+  // ---------------------------------------------
+ 
+  // Node.CONSTANTS
+  // without assuming Node is globally available
+  // since this project is used on the backend too
+  var ELEMENT_NODE = 1;
+  var ATTRIBUTE_NODE = 2;
+  var TEXT_NODE = 3;
+  var COMMENT_NODE = 8;
+  var DOCUMENT_FRAGMENT_NODE = 11;
+ 
+  // SVG related
+  var OWNER_SVG_ELEMENT = 'ownerSVGElement';
+  var SVG_NAMESPACE = 'http://www.w3.org/2000/svg';
+ 
+  var SHOULD_USE_ATTRIBUTE = /^style$/i;
+  var EXPANDO = '_hyper: ';
+  var UID = EXPANDO + ((Math.random() * new Date) | 0) + ';';
+  var UIDC = '<!--' + UID + '-->';
+ 
+  // ---------------------------------------------
+  // DOM Manipulation
+  // ---------------------------------------------
+ 
+  function Aura(node, childNodes) {
+    this.node = node;
+    this.childNodes = childNodes;
+    return majinbuu.aura(this, childNodes);
+  }
+ 
+  Aura.prototype.splice = function splice(start, deleteCount) {
+    for (var
+      tmp,
+      i = start,
+      ph = this.node,
+      cn = this.childNodes,
+      pn = ph.parentNode,
+      length = cn.length,
+      end = deleteCount == null ? length : (start + deleteCount);
+      i < length && i < end; i++
+    ) {
+      pn.removeChild(cn[i]);
+    }
+    i = 2;
+    length = arguments.length;
+    if (i < length) {
+      if ((length - i) === 1) {
+        tmp = arguments[i];
+      } else {
+        tmp = createDocumentFragment(pn.ownerDocument);
+        while (i < length) {
+          tmp.appendChild(arguments[i++]);
+        }
+      }
+      pn.insertBefore(tmp, cn[end] || ph);
+    }
+    return cn.splice.apply(cn, arguments);
+  };
+ 
+  // ---------------------------------------------
+  // hyperHTML Operations
+  // ---------------------------------------------
+ 
+  // entry point for all TL => DOM operations
+  function render(template) {
+    var hyper = hypers.get(this);
+    if (
+      !hyper ||
+      hyper.template !== TL(template)
+    ) {
+      hyper = upgrade.apply(this, arguments);
+      hypers.set(this, hyper);
+    }
+    update.apply(hyper.updates, arguments);
+    return this;
+  }
+ 
+  // `<div class="${'attr'}"></div>`
+  // `<div onclick="${function () {... }}"></div>`
+  // `<div onclick="${{handleEvent(){ ... }}}"></div>`
+  // `<div contenteditable="${true}"></div>`
+  function setAttribute(attribute, removeAttributes, name) {
+    var
+      node = attribute.ownerElement,
+      isEvent = /^on/.test(name),
+      isSpecial = name === 'data' ||
+                  (isSpecialAttribute(node, name) &&
+                  !SHOULD_USE_ATTRIBUTE.test(name)),
+      type = isEvent ? name.slice(2) : '',
+      noOwner = isEvent || isSpecial,
+      oldValue
+    ;
+    if (isEvent && name.toLowerCase() in node) type = type.toLowerCase();
+    if (noOwner) removeAttributes.push(node, name);
+    return isEvent ?
+      function eventAttr(newValue) {
+        if (oldValue !== newValue) {
+          if (oldValue) node.removeEventListener(type, oldValue, false);
+          oldValue = newValue;
+          if (newValue) node.addEventListener(type, newValue, false);
+        }
+      } :
+      (isSpecial ?
+        function specialAttr(newValue) {
+          if (oldValue !== newValue) {
+            oldValue = newValue;
+            // WebKit moves the cursor if input.value
+            // is set again, even if same value
+            if (node[name] !== newValue) {
+              // let the browser handle the case
+              // input.value = null;
+              // input.value; // ''
+              if (newValue == null) {
+                // reflect the null intent,
+                // do not pass undefined!
+                node[name] = null;
+                node.removeAttribute(name);
+              } else {
+                node[name] = newValue;
+              }
+            }
+          }
+        } :
+        function normalAttr(newValue) {
+          if (oldValue !== newValue) {
+            oldValue = newValue;
+            // avoid triggering again attributeChangeCallback
+            // if the value was identical
+            if (attribute.value !== newValue) {
+              if (newValue == null) {
+                if (!noOwner) {
+                  // TODO: should attribute.value = null here?
+                  noOwner = true;
+                  node.removeAttributeNode(attribute);
+                }
+              } else {
+                attribute.value = newValue;
+                if (noOwner) {
+                  noOwner = false;
+                  node.setAttributeNode(attribute);
+                }
+              }
+            }
+          }
+        }
+      );
+  }
+ 
+  // `<style>${'text'}</style>`
+  function setTextContent(node) {
+    var oldValue;
+    return function (value) {
+      if (value !== oldValue) {
+        oldValue = value;
+        node.textContent = value;
+      }
+    };
+  }
+ 
+  // `<p>${'any'}</p>`
+  // `<li>a</li>${'virtual'}<li>c</li>`
+  function setAnyContent(node, childNodes, aura) {
+    var oldValue;
+    return function anyContent(value) {
+      switch (typeof value) {
+        case 'string':
+        case 'number':
+        case 'boolean':
+          var length = childNodes.length;
+          if (
+            length === 1 &&
+            childNodes[0].nodeType === TEXT_NODE
+          ) {
+            if (oldValue !== value) {
+              oldValue = value;
+              childNodes[0].textContent = value;
+            }
+          } else {
+            oldValue = value;
+            if (length) {
+              aura.splice(0, length, createText(node, value));
+            } else {
+              childNodes[0] = node.parentNode.insertBefore(
+                createText(node, value),
+                node
+              );
+            }
+          }
+          break;
+        case 'function':
+          anyContent(value(node.parentNode, childNodes, 0));
+          break;
+        case 'object':
+        case 'undefined':
+          if (value == null) {
+            oldValue = value;
+            anyContent('');
+            break;
+          } else if (value instanceof Component) {
+            value = value.render();
+          }
+        default:
+          oldValue = value;
+          if (isArray(value)) {
+            var length = value.length;
+            if (length === 0) {
+              aura.splice(0);
+            } else {
+              switch (typeof value[0]) {
+                case 'string':
+                case 'number':
+                case 'boolean':
+                  anyContent({html: value});
+                  break;
+                case 'function':
+                  var parentNode = node.parentNode;
+                  for (var i = 0; i < length; i++) {
+                    value[i] = value[i](parentNode, childNodes, i);
+                  }
+                  anyContent(value.concat.apply([], value));
+                  break;
+                case 'object':
+                  if (isArray(value[0])) {
+                    value = value.concat.apply([], value);
+                  }
+                  if (isPromise_ish(value[0])) {
+                    Promise.all(value).then(anyContent);
+                    break;
+                  } else {
+                    for (var i = 0, length = value.length; i < length; i++) {
+                      if (value[i] instanceof Component) {
+                        value[i] = value[i].render();
+                      }
+                    }
+                  }
+                default:
+                  majinbuu(aura, value, hyper.MAX_LIST_SIZE);
+                  break;
+              }
+            }
+          } else if (isNode_ish(value)) {
+            majinbuu(
+              aura,
+              value.nodeType === DOCUMENT_FRAGMENT_NODE ?
+                slice.call(value.childNodes) :
+                [value],
+              hyper.MAX_LIST_SIZE
+            );
+          } else if (isPromise_ish(value)) {
+            value.then(anyContent);
+          } else if ('placeholder' in value) {
+            invokeAtDistance(anyContent, value);
+          } else if ('text' in value) {
+            anyContent(String(value.text));
+          } else if ('any' in value) {
+            anyContent(value.any);
+          } else if ('html' in value) {
+            var html = [].concat(value.html).join('');
+            aura.splice(0);
+            var fragment = createFragment(node, html);
+            childNodes.push.apply(childNodes, fragment.childNodes);
+            node.parentNode.insertBefore(fragment, node);
+          } else if ('length' in value) {
+            anyContent(slice.call(value));
+          } else {
+            anyContent(invokeTransformer(value));
+          }
+          break;
+      }
+    };
+  }
+ 
+  // ---------------------------------------------
+  // DOM Traversing
+  // ---------------------------------------------
+ 
+  // look for attributes that contains the comment text
+  function attributesSeeker(node, paths, parts) {
+    for (var
+      name,
+      attribute,
+      value = UID,
+      attributes = node.attributes,
+      i = 0, length = attributes.length;
+      i < length; i++
+    ) {
+      attribute = attributes[i];
+      if (attribute.value === value) {
+        name = parts.shift().replace(/^(?:|[\S\s]*?\s)(\S+?)=['"]?$/, '$1');
+        paths.push(
+          Path(
+            'attr',
+            // this is needed in both jsdom
+            // and in not-so-standard browsers/engines
+            node.attributes[name.toLowerCase()],
+            name
+          )
+        );
+      }
+    }
+  }
+ 
+  // walk the fragment tree in search of comments
+  function hyperSeeker(node, paths, parts) {
+    for (var
+      child,
+      childNodes = node.childNodes,
+      length = childNodes.length,
+      i = 0; i < length; i++
+    ) {
+      child = childNodes[i];
+      switch (child.nodeType) {
+        case ELEMENT_NODE:
+          attributesSeeker(child, paths, parts);
+          hyperSeeker(child, paths, parts);
+          break;
+        case COMMENT_NODE:
+          if (child.textContent === UID) {
+            parts.shift();
+            paths.push(Path('any', child));
+          }
+          break;
+        case TEXT_NODE:
+          if (
+            SHOULD_USE_ATTRIBUTE.test(node.nodeName) &&
+            trim.call(child.textContent) === UIDC
+          ) {
+            parts.shift();
+            paths.push(Path('text', node));
+          }
+          break;
+      }
+    }
+  }
+ 
+  // ---------------------------------------------
+  // Features detection / ugly UA sniffs
+  // ---------------------------------------------
+  var featureFragment = createDocumentFragment(globalDocument);
+ 
+  // Firefox < 55 has non standard template literals.
+  // https://bugzilla.mozilla.org/show_bug.cgi?id=1108941
+  // TODO: is there any better way to feature detect this ?
+  var FF = typeof navigator === 'object' &&
+            /Firefox\/(\d+)/.test(navigator.userAgent) &&
+            parseFloat(RegExp.$1) < 55;
+ 
+  // If attributes order is shuffled, threat the browser differently
+  // Usually this is a well known IE only limitation but some older FF does the same.
+  var IE =  (function () {
+              var p  = globalDocument.createElement('p');
+              p.innerHTML = '<i data-i="" class=""></i>';
+              return /class/i.test(p.firstChild.attributes[0].name);
+            }());
+ 
+ 
+  // beside IE, old WebKit browsers don't have `children` in DocumentFragment
+  var WK = !('children' in featureFragment);
+ 
+  // both Firefox < 55 and TypeScript have issues with template literals
+  // this lazy defined callback should spot issues right away
+  // and in the best case scenario become a no-op
+  var TL = function (template) {
+    if (template.propertyIsEnumerable('raw') || FF) TL = unique;
+    else TL = function (t) { return t; };
+    return TL(template);
+  };
+ 
+  // ---------------------------------------------
+  // Helpers
+  // ---------------------------------------------
+ 
+  // used to convert childNodes to Array
+  var slice = [].slice;
+ 
+  // used to sanitize html
+  var oEscape = {
+    '&': '&amp;',
+    '<': '&lt;',
+    '>': '&gt;',
+    "'": '&#39;',
+    '"': '&quot;'
+  };
+  function fnEscape(m) {
+    return oEscape[m];
+  }
+ 
+  // return content as html
+  function asHTML(html) {
+    return {html: html};
+  }
+ 
+  // return a single node or an Array or nodes
+  function createContent(node) {
+    for (var
+      child,
+      content = [],
+      childNodes = node.childNodes,
+      i = 0,
+      length = childNodes.length;
+      i < length; i++
+    ) {
+      child = childNodes[i];
+      if (
+        child.nodeType === ELEMENT_NODE ||
+        trim.call(child.textContent).length !== 0
+      ) {
+        content.push(child);
+      }
+    }
+    return content.length === 1 ? content[0] : content;
+  }
+ 
+  // just a minifier friendly indirection
+  function createDocumentFragment(document) {
+    return document.createDocumentFragment();
+  }
+ 
+  // given a node, inject some html and return
+  // the resulting template document fragment
+  function createFragment(node, html) {
+    return (
+      OWNER_SVG_ELEMENT in node ?
+        createSVGFragment :
+        createHTMLFragment
+    )(node, html.replace(no, comments));
+  }
+ 
+  // create fragment for HTML
+  function createHTMLFragment(node, html) {
+    var fragment;
+    var document = node.ownerDocument;
+    var container = document.createElement('template');
+    var hasContent = 'content' in container;
+    var needsTableWrap = false;
+    if (!hasContent) {
+      // DO NOT MOVE THE FOLLOWING LINE ELSEWHERE
+      fragment = createDocumentFragment(document);
+      // (a jsdom + nodejs tests coverage gotcha)
+ 
+      // el.innerHTML = '<td></td>'; is not possible
+      // if the content is a partial internal table content
+      // it needs to be wrapped around once injected.
+      // HTMLTemplateElement does not suffer this issue.
+      needsTableWrap = /^[^\S]*?<(col(?:group)?|t(?:head|body|foot|r|d|h))/i.test(html);
+    }
+    if (needsTableWrap) {
+      // secure the RegExp.$1 result ASAP to avoid issues
+      // in case a non-browser DOM library uses RegExp internally
+      // when HTML content is injected (basicHTML / jsdom / others...)
+      var selector = RegExp.$1;
+      container.innerHTML = '<table>' + html + '</table>';
+      appendNodes(fragment, slice.call(container.querySelectorAll(selector)));
+    } else {
+      container.innerHTML = html;
+      if (hasContent) {
+        fragment = container.content;
+      } else {
+        appendNodes(fragment, slice.call(container.childNodes));
+      }
+    }
+    return fragment;
+  }
+ 
+  // create a fragment for SVG
+  function createSVGFragment(node, html) {
+    var document = node.ownerDocument;
+    var fragment = createDocumentFragment(document);
+    if (IE || WK) {
+      var container = document.createElement('div');
+      container.innerHTML = '<svg xmlns="' + SVG_NAMESPACE + '">' + html + '</svg>';
+      appendNodes(fragment, slice.call(container.firstChild.childNodes));
+    } else {
+      var container = document.createElementNS(SVG_NAMESPACE, 'svg');
+      container.innerHTML = html;
+      appendNodes(fragment, slice.call(container.childNodes));
+    }
+    return fragment;
+  }
+ 
+  // given a node, it does what is says
+  function createText(node, text) {
+    return node.ownerDocument.createTextNode(text);
+  }
+ 
+  // returns current customElements reference
+  // compatible with basicHTML too
+  function getCEClass(node) {
+    var doc = hyper.document;
+    var ce = doc.customElements || doc.defaultView.customElements;
+    return ce && ce.get(node.nodeName.toLowerCase());
+  }
+ 
+  // verify that an attribute has
+  // a special meaning for the node
+  function isSpecialAttribute(node, name) {
+    var notSVG = !(OWNER_SVG_ELEMENT in node);
+    if (notSVG && /-/.test(node.nodeName)) {
+      var Class = getCEClass(node);
+      if (Class) node = Class.prototype;
+    }
+    return notSVG && name in node;
+  }
+ 
+  // use a placeholder and resolve with the right callback
+  function invokeAtDistance(callback, value) {
+    callback(value.placeholder);
+    if ('text' in value) {
+      Promise.resolve(value.text).then(String).then(callback);
+    } else if ('any' in value) {
+      Promise.resolve(value.any).then(callback);
+    } else if ('html' in value) {
+      Promise.resolve(value.html).then(asHTML).then(callback);
+    } else {
+      Promise.resolve(invokeTransformer(value)).then(callback);
+    }
+  }
+ 
+  // last attempt to transform content
+  function invokeTransformer(object) {
+    for (var key in transformers) {
+      if (object.hasOwnProperty(key)) {
+        return transformers[key](object[key]);
+      }
+    }
+  }
+ 
+  // quick and dirty Node check
+  function isNode_ish(value) {
+    return 'ELEMENT_NODE' in value;
+  }
+ 
+  // quick and dirty Promise check
+  function isPromise_ish(value) {
+    return value != null && 'then' in value;
+  }
+ 
+  // return a descriptor that lazily initialize a property
+  // unless it hasn't be previously set directly
+  function lazyGetter(type, fn) {
+    var secret = '_' + type + '$';
+    return {
+      get: function () {
+        return this[secret] || (this[type] = fn.call(this, type));
+      },
+      set: function (value) {
+        defineProperty(this, secret, {configurable: true, value: value});
+      }
+    };
+  }
+ 
+  // remove a list of [node, attribute]
+  function removeAttributeList(list) {
+    for (var i = 0, length = list.length; i < length; i++) {
+      list[i++].removeAttribute(list[i]);
+    }
+  }
+ 
+  // specify the content to update
+  function setContent(info, target, removeAttributes, childNodes) {
+    var update;
+    switch (info.type) {
+      case 'any':
+        // TODO: don't pass the target, it shouldn't be needed
+        update = setAnyContent(target, childNodes, new Aura(target, childNodes));
+        break;
+      case 'attr':
+        update = setAttribute(target, removeAttributes, info.name);
+        break;
+      case 'text':
+        update = setTextContent(target);
+        break;
+    }
+    return update;
+  }
+ 
+  // used for common path creation.
+  function Path(type, node, name) {
+    return {type: type, path: createPath(node), name: name};
+  }
+ 
+  // ---------------------------------------------
+  // Hybrid Shims
+  // ---------------------------------------------
+ 
+  // WeakMap with partial EXPANDO fallback
+  var $WeakMap = typeof WeakMap === typeof $WeakMap ?
+      function () {
+        return {
+          get: function (obj) { return obj[EXPANDO]; },
+          set: function (obj, value) {
+            Object.defineProperty(obj, EXPANDO, {
+              configurable: true,
+              value: value
+            });
+          }
+        };
+      } :
+      WeakMap;
+ 
+  // Map with partial double Array fallback
+  var $Map = typeof Map === typeof $Map ?
+      function () {
+        var k = [], v = [];
+        return {
+          get: function (obj) {
+            return v[k.indexOf(obj)];
+          },
+          // being used with unique template literals
+          // there is never a case when a value is overwritten
+          // no need to check upfront for the indexOf
+          set: function (obj, value) {
+            v[k.push(obj) - 1] = value;
+          }
+        };
+      } :
+      Map;
+ 
+  // TODO: which browser needs these partial polyfills here?
+ 
+  // BB7 and webOS need this
+  var isArray = Array.isArray ||
+                (function () {
+                  var toString = {}.toString;
+                  // I once had an engine returning [array Array]
+                  // and I've got scared since!
+                  var s = toString.call([]);
+                  return function (a) {
+                    return toString.call(a) === s;
+                  };
+                }());
+ 
+  // older WebKit need this
+  var trim = EXPANDO.trim ||
+              function () { return this.replace(/^\s+|\s+$/g, ''); };
+ 
+  // ---------------------------------------------
+  // Shared variables
+  // ---------------------------------------------
+ 
+  // recycled defineProperty shortcut
+  var defineProperty = Object.defineProperty;
+ 
+  // transformers registry
+  var transformers = {};
+ 
+  // normalize Firefox issue with template literals
+  var templateObjects = {}, unique;
+  function unique(template) {
+    var key = '_' + template.join(UIDC);
+    return templateObjects[key] ||
+          (templateObjects[key] = template);
+  }
+ 
+  // use native .append(...childNodes) where available
+  var appendNodes = 'append' in featureFragment ?
+      function (node, childNodes) {
+        node.append.apply(node, childNodes);
+      } :
+      function appendNodes(node, childNodes) {
+        for (var
+          i = 0,
+          length = childNodes.length;
+          i < length; i++
+        ) {
+          node.appendChild(childNodes[i]);
+        }
+      };
+ 
+  // returns children or retrieve them in IE/Edge
+  var getChildren = WK || IE ?
+      function (node) {
+        for (var
+          child,
+          children = [],
+          childNodes = node.childNodes,
+          j = 0, i = 0, length = childNodes.length;
+          i < length; i++
+        ) {
+          child = childNodes[i];
+          if (child.nodeType === ELEMENT_NODE)
+            children[j++] = child;
+        }
+        return children;
+      } :
+      function (node) { return node.children; };
+ 
+  // return the correct node walking through a path
+  // fixes IE/Edge issues with attributes and children (fixes old WebKit too)
+  var getNode = IE || WK ?
+      function (parentNode, path) {
+        for (var name, i = 0, length = path.length; i < length; i++) {
+          name = path[i++];
+          switch (name) {
+            case 'children':
+              parentNode = getChildren(parentNode)[path[i]];
+              break;
+            default:
+              parentNode = parentNode[name][path[i]];
+              break;
+          }
+        }
+        return parentNode;
+      } :
+      function (parentNode, path) {
+        for (var i = 0, length = path.length; i < length; i++) {
+          parentNode = parentNode[path[i++]][path[i]];
+        }
+        return parentNode;
+      };
+ 
+  // sanitizes interpolations as comments
+  var no = /(<[a-z]+[a-z0-9:_-]*)((?:[^\S]+[a-z0-9:_-]+(?:=(?:'.*?'|".*?"|<.+?>|\S+))?)+)([^\S]*\/?>)/gi;
+  var findAttributes = new RegExp('([^\\S][a-z]+[a-z0-9:_-]*=)([\'"]?)' + UIDC + '\\2', 'gi');
+  var comments = function ($0, $1, $2, $3) {
+    return $1 + $2.replace(findAttributes, replaceAttributes) + $3;
+  };
+ 
+  var replaceAttributes = function ($0, $1, $2) {
+    return $1 + ($2 || '"') + UID + ($2 || '"');
+  };
+ 
+  // [element] = {template, updates};
+  var hypers = new $WeakMap;
+ 
+  // [element] = {template, updates};
+  var wires = new $WeakMap;
+ 
+  // [template] = {fragment, paths};
+  var templates = new $Map;
+ 
+  // internal signal to switch adoption
+  var notAdopting = true;
+ 
+  // IE 11 has problems with cloning templates too
+  // it "forgets" empty childNodes
+  var cloneNode = (function () {
+    featureFragment.appendChild(createText(featureFragment, 'g'));
+    featureFragment.appendChild(createText(featureFragment, ''));
+    return featureFragment.cloneNode(true).childNodes.length === 1 ?
+      function (node) {
+        for (var
+          clone = node.cloneNode(),
+          childNodes = node.childNodes || [],
+          i = 0, length = childNodes.length;
+          i < length; i++
+        ) {
+          clone.appendChild(cloneNode(childNodes[i]));
+        }
+        return clone;
+      } :
+      function (fragment) {
+        return fragment.cloneNode(true);
+      };
+  }());
+ 
+  // ---------------------------------------------
+  // Adopting Nodes
+  // ---------------------------------------------
+ 
+  // IE/Edge gotcha with comment nodes
+  var nextElementSibling = IE ?
+    function (node) {
+      while (node = node.nextSibling) {
+        if (node.nodeType === ELEMENT_NODE) return node;
+      }
+      return undefined;
+    } :
+    function (node) { return node.nextElementSibling; };
+ 
+  var previousElementSibling = IE ?
+    function (node) {
+      while (node = node.previousSibling) {
+       if (node.nodeType === ELEMENT_NODE) return node;
+      }
+      return undefined;
+    } :
+    function (node) { return node.previousElementSibling; };
+ 
+  // remove all text nodes from a virtual space
+  function removePreviousText(parentNode, node) {
+    var previousSibling = node.previousSibling;
+    if (previousSibling && previousSibling.nodeType === TEXT_NODE) {
+      parentNode.removeChild(previousSibling);
+      removePreviousText(parentNode, node);
+    }
+  }
+ 
+  // avoid errors on obsolete platforms
+  function insertBefore(parentNode, target, after) {
+    if (after) {
+      parentNode.insertBefore(target, after);
+    } else {
+      parentNode.appendChild(target);
+    }
+  }
+ 
+  // given an info, tries to find out the best option
+  // to replace or update the content
+  function discoverNode(parentNode, virtual, info, childNodes) {
+    for (var
+      target = parentNode,
+      document = parentNode.ownerDocument,
+      path = info.path,
+      virtualNode = getNode(virtual, path),
+      i = 0,
+      length = path.length;
+      i < length; i++
+    ) {
+      switch (path[i++]) {
+        case 'attributes':
+          var name = virtualNode.name;
+          if (!parentNode.hasAttribute(name)) {
+            parentNode.setAttribute(name, '');
+          }
+          target = parentNode.attributes[name];
+          break;
+        case 'childNodes':
+          var children = getChildren(parentNode);
+          var virtualChildren = getChildren(virtualNode.parentNode);
+          target = previousElementSibling(virtualNode);
+          var before = target ? (path.indexOf.call(virtualChildren, target) + 1) : -1;
+          target = nextElementSibling(virtualNode);
+          var after = target ? path.indexOf.call(virtualChildren, target) : -1;
+          target = document.createComment(UID);
+          switch (true) {
+            // `${'virtual'}` is actually resolved as `${'any'}`
+            // case before < 0 && after < 0: before = 0;
+ 
+            // `</a>${'virtual'}`
+            case after < 0:
+              after = children.length;
+              break;
+            // `${'virtual'}<b>`
+            case before < 0:
+              before = 0;
+            // `</a>${'virtual'}<b>`
+            default:
+              after = -(virtualChildren.length - after);
+              break;
+          }
+          childNodes.push.apply(
+            childNodes,
+            slice.call(children, before, after)
+          );
+          if (childNodes.length) {
+            insertBefore(
+              parentNode,
+              target,
+              nextElementSibling(childNodes[childNodes.length - 1])
+            );
+          } else {
+            insertBefore(
+              parentNode,
+              target,
+              slice.call(children, after)[0]
+            );
+          }
+          if (childNodes.length === 0) {
+            removePreviousText(parentNode, target);
+          }
+          break;
+        default:
+          // if the node is not there, create it
+          target = getChildren(parentNode)[path[i]] ||
+                    parentNode.appendChild(
+                      parentNode.ownerDocument.createElement(
+                        getNode(virtual, path.slice(0, i + 1)).nodeName
+                      )
+                    );
+          parentNode = target;
+          break;
+      }
+    }
+    return target;
+  }
+ 
+  // like createUpdates but for nodes with already a content
+  function discoverUpdates(fragment, paths) {
+    for (var
+      info, childNodes,
+      updates = [],
+      removeAttributes = [],
+      i = 0, length = paths.length;
+      i < length; i++
+    ) {
+      childNodes = [];
+      info = paths[i];
+      updates[i] = setContent(
+        info,
+        discoverNode(this, fragment, info, childNodes),
+        removeAttributes,
+        childNodes
+      );
+    }
+    removeAttributeList(removeAttributes);
+    return updates;
+  }
+ 
+  // ---------------------------------------------
+  // Template related utilities
+  // ---------------------------------------------
+ 
+  // given a unique template object
+  // create, parse, and store retrieved info
+  function createTemplate(template) {
+    var paths = [];
+    var fragment = createFragment(this, template.join(UIDC));
+    var info = {fragment: fragment, paths: paths};
+    hyperSeeker(fragment, paths, template.slice());
+    templates.set(template, info);
+    return info;
+  }
+ 
+  // given a generic node, returns a path capable
+  // of retrieving such path back again.
+  // TODO: worth passing the index when available ?
+  function createPath(node) {
+    var path = [];
+    var parentNode;
+    switch(node.nodeType) {
+      case ELEMENT_NODE:
+      case DOCUMENT_FRAGMENT_NODE:
+        parentNode = node;
+        break;
+      case COMMENT_NODE:
+        parentNode = node.parentNode;
+        path.unshift(
+          'childNodes',
+          path.indexOf.call(parentNode.childNodes, node)
+        );
+        break;
+      case ATTRIBUTE_NODE:
+      default: // jsdom here does not provide a nodeType 2 ...
+        parentNode = node.ownerElement;
+        path.unshift('attributes', node.name);
+        break;
+    }
+    for (
+      node = parentNode;
+      parentNode = parentNode.parentNode;
+      node = parentNode
+    ) {
+      path.unshift('children', path.indexOf.call(getChildren(parentNode), node));
+    }
+    return path;
+  }
+ 
+  // given a root node and a list of paths
+  // creates an array of updates to invoke
+  // whenever the next interpolation happens
+  function createUpdates(fragment, paths) {
+    for (var
+      info,
+      updates = [],
+      removeAttributes = [],
+      i = 0, length = paths.length;
+      i < length; i++
+    ) {
+      info = paths[i];
+      updates[i] = setContent(
+        info,
+        getNode(fragment, info.path),
+        removeAttributes,
+        []
+      );
+    }
+    removeAttributeList(removeAttributes);
+    return updates;
+  }
+ 
+  // invokes each update function passing interpolated value
+  function update() {
+    for (var i = 1, length = arguments.length; i < length; i++) {
+      this[i - 1](arguments[i]);
+    }
+  }
+ 
+  // create a template, if unknown
+  // upgrade a node to use such template for future updates
+  function upgrade(template) {
+    template = TL(template);
+    var updates;
+    var info =  templates.get(template) ||
+                createTemplate.call(this, template);
+    if (notAdopting) {
+      var fragment = cloneNode(info.fragment);
+      updates = createUpdates.call(this, fragment, info.paths);
+      this.textContent = '';
+      this.appendChild(fragment);
+    } else {
+      updates = discoverUpdates.call(this, info.fragment, info.paths);
+    }
+    return {template: template, updates: updates};
+  }
+ 
+  // ---------------------------------------------
+  // Wires
+  // ---------------------------------------------
+ 
+  // create a new wire for generic DOM content
+  function wireContent(type) {
+    var adopter, content, container, fragment, render, setup, template;
+ 
+    function before(document) {
+      fragment = createDocumentFragment(document);
+      container = type === 'svg' ?
+        document.createElementNS(SVG_NAMESPACE, 'svg') :
+        fragment;
+      render = bind(container);
+    }
+ 
+    function after() {
+      if (setup) {
+        setup = false;
+        if (type === 'svg') {
+          appendNodes(fragment, slice.call(container.childNodes));
+        }
+        content = createContent(fragment);
+      }
+      return content;
+    }
+ 
+    return type === 'adopt' ?
+      function adopt(statics) {
+        var args = arguments;
+        statics = TL(statics);
+        if (template !== statics) {
+          setup = true;
+          template = statics;
+          adopter = function (parentNode, children, i) {
+            if (setup) {
+              if (i < children.length) {
+                container = children[i];
+                fragment = {
+                  ownerDocument: container.ownerDocument,
+                  childNodes: [container],
+                  children: [container]
+                };
+                render = hyper.adopt(fragment);
+              } else {
+                if (OWNER_SVG_ELEMENT in parentNode) type = 'svg';
+                before(parentNode.ownerDocument);
+              }
+            }
+            render.apply(null, args);
+            return after();
+          };
+        }
+        return adopter;
+      } :
+      function update(statics) {
+        statics = TL(statics);
+        if (template !== statics) {
+          setup = true;
+          template = statics;
+          before(hyper.document);
+        }
+        render.apply(null, arguments);
+        return after();
+      };
+  }
+ 
+  // setup a weak reference if needed and return a wire by ID
+  function wireWeakly(obj, type) {
+    var wire = wires.get(obj);
+    var i = type.indexOf(':');
+    var id = type;
+    if (-1 < i) {
+      id = type.slice(i + 1);
+      type = type.slice(0, i) || 'html';
+    }
+    if (!wire) {
+      wire = {};
+      wires.set(obj, wire);
+    }
+    return wire[id] || (wire[id] = wireContent(type));
+  }
+ 
+  // avoid processing too many nodes
+  // this is about the algorithm used
+  // to calculate the least amount of DOM
+  // changes needed to show the a new list
+  // where there was another one.
+  // There is a limit, in terms of performance,
+  // on how big can the optimal computation be,
+  // so if you change this value be sure your
+  // target hardware is good enough.
+  hyper.MAX_LIST_SIZE = 1000;
+ 
+  // ---------------------------------------------
+  // ⚡️ ️️The End ➰
+  // ---------------------------------------------
+  return hyper;
+ 
+}(document, function () {'use strict';
+ 
+  /*! Copyright (c) 2017, Andrea Giammarchi, @WebReflection */
+ 
+  // grid operations
+  var
+    DELETE = 'del',
+    INSERT = 'ins',
+    SUBSTITUTE = 'sub',
+    TypedArray = /^u/.test(typeof Int32Array) ? Array : Int32Array
+  ;
+ 
+  // readapted from:
+  // http://webreflection.blogspot.co.uk/2009/02/levenshtein-algorithm-revisited-25.html
+  function majinbuu(from, to, MAX_SIZE) {
+    var
+      fromLength = from.length,
+      toLength = to.length,
+      TOO_MANY = (MAX_SIZE || Infinity) < Math.sqrt(fromLength * toLength)
+    ;
+    if (fromLength < 1 || TOO_MANY) {
+      if (toLength || TOO_MANY) {
+        from.splice.apply(from, [0, fromLength].concat(to));
+      }
+      return;
+    }
+    if (toLength < 1) {
+      from.splice(0);
+      return;
+    }
+    performOperations(
+      from,
+      getOperations(from, to, levenstein(from, to))
+    );
+  }
+ 
+  // given an object that would like to intercept
+  // all splice operations performed through a list,
+  // wraps the list.splice method to delegate such object
+  // and it puts back original splice right before
+  // every invocation.
+  // Note: do not use the same list in two different aura
+  majinbuu.aura = function aura(splicer, list) {
+    var splice = list.splice;
+    list.splice = function hodor() {
+      list.splice = splice;
+      var result = splicer.splice.apply(splicer, arguments);
+      list.splice = hodor;
+      return result;
+    };
+    return list;
+  };
+ 
+  return majinbuu;
+ 
+  // Helpers - - - - - - - - - - - - - - - - - - - - - -
+ 
+  // originally readapted from:
+  // http://webreflection.blogspot.co.uk/2009/02/levenshtein-algorithm-revisited-25.html
+  // then rewritten in C for Emscripten (see levenstein.c)
+  // then "screw you ASM" due no much gain but very bloated code
+  function levenstein(from, to) {
+    var fromLength = from.length + 1;
+    var toLength = to.length + 1;
+    var size = fromLength * toLength;
+    var x = 0;
+    var y = 0;
+    var X = 0;
+    var Y = 0;
+    var crow = 0;
+    var prow = 0;
+    var del, ins, sub;
+    var grid = new TypedArray(size);
+    grid[0] = 0;
+    while (++x < toLength) grid[x] = x;
+    while (++y < fromLength) {
+      X = x = 0;
+      crow = y * toLength;
+      prow = Y * toLength;
+      grid[crow + x] = y;
+      while (++x < toLength) {
+        del = grid[prow + x] + 1;
+        ins = grid[crow + X] + 1;
+        sub = grid[prow + X] + (from[Y] == to[X] ? 0 : 1);
+        grid[crow + x] = del < ins ?
+                          (del < sub ?
+                            del : sub) :
+                          (ins < sub ?
+                            ins : sub);
+        ++X;
+      };
+      ++Y;
+    }
+    return grid;
+  }
+ 
+  // add operations (in reversed order)
+  function addOperation(list, type, x, y, count, items) {
+    list.unshift({
+      type: type,
+      x: x,
+      y: y,
+      count: count,
+      items: items
+    });
+  }
+ 
+  // walk the Levenshtein grid bottom -> up
+  function getOperations(Y, X, grid) {
+    var
+      list = [],
+      YL = Y.length + 1,
+      XL = X.length + 1,
+      y = YL - 1,
+      x = XL - 1,
+      cell, top, left, diagonal,
+      crow, prow
+    ;
+    while (x && y) {
+      crow = y * XL;
+      prow = (y - 1) * XL;
+      cell = grid[crow + x];
+      top = grid[prow + x];
+      left = grid[crow + x - 1];
+      diagonal = grid[prow + x - 1];
+      if (diagonal <= left && diagonal <= top && diagonal <= cell) {
+        x--;
+        y--;
+        if (diagonal < cell) {
+          addOperation(list, SUBSTITUTE, x, y, 1, [X[x]]);
+        }
+      }
+      else if (left <= top && left <= cell) {
+        x--;
+        addOperation(list, INSERT, x, y, 0, [X[x]]);
+      }
+      else {
+        y--;
+        addOperation(list, DELETE, x, y, 1, []);
+      }
+    }
+    while (x--) {
+      addOperation(list, INSERT, x, y, 0, [X[x]]);
+    }
+    while (y--) {
+      addOperation(list, DELETE, x, y, 1, []);
+    }
+    return list;
+  }
+ 
+  /* grouped operations */
+  function performOperations(target, operations) {
+    var
+      diff = 0,
+      i = 1,
+      length = operations.length,
+      curr, prev, op
+    ;
+    if (length) {
+      op = (prev = operations[0]);
+      while (i < length) {
+        curr = operations[i++];
+        if (prev.type === curr.type && (curr.x - prev.x) <= 1 && (curr.y - prev.y) <= 1) {
+          op.count += curr.count;
+          op.items = op.items.concat(curr.items);
+        } else {
+          target.splice.apply(target, [op.y + diff, op.count].concat(op.items));
+          diff += op.type === INSERT ?
+            op.items.length : (op.type === DELETE ?
+              -op.count : 0);
+          op = curr;
+        }
+        prev = curr;
+      }
+      target.splice.apply(target, [op.y + diff, op.count].concat(op.items));
+    }
+  }
+ 
+  /* one-by-one operation (testing purpose)
+  function performOperations(target, operations) {
+    for (var op, diff = 0, i = 0, length = operations.length; i < length; i++) {
+      op = operations[i];
+      target.splice.apply(target, [op.y + diff, op.count].concat(op.items));
+      diff += op.type === INSERT ?
+                op.items.length : (op.type === DELETE ?
+                  -op.count : 0);
+    }
+  }
+  // */
+ 
+}()));
+ 
+// umd.KISS
+try { module.exports = hyperHTML; } catch(o_O) {}
+
+
+ + + + + + + diff --git a/coverage/lcov-report/index.html b/coverage/lcov-report/index.html index d1ee2979..fbb81161 100644 --- a/coverage/lcov-report/index.html +++ b/coverage/lcov-report/index.html @@ -22,22 +22,22 @@

100% Statements - 568/568 + 605/605
100% Branches - 326/326 + 335/335
100% Functions - 94/94 + 98/98
100% Lines - 550/550 + 591/591
@@ -62,13 +62,13 @@

hyperHTML/
100% - 568/568 + 605/605 100% - 326/326 + 335/335 100% - 94/94 + 98/98 100% - 550/550 + 591/591 @@ -77,7 +77,7 @@

diff --git a/coverage/lcov.info b/coverage/lcov.info index 296c0e87..3634dfbb 100644 --- a/coverage/lcov.info +++ b/coverage/lcov.info @@ -1,5 +1,5 @@ TN: -SF:/home/webreflection/code/hyperHTML/hyperhtml.js +SF:/home/webreflection/code/hyperHTML/index.js FN:1,(anonymous_1) FN:16,hyper FN:38,adopt @@ -13,94 +13,98 @@ FN:84,(anonymous_10) FN:97,(anonymous_11) FN:99,(anonymous_12) FN:101,(anonymous_13) -FN:143,indexOfDifferences -FN:159,populateNode -FN:181,removeNodeList -FN:190,resetAndPopulate -FN:196,updateViaArray -FN:213,render -FN:230,setAttribute -FN:244,eventAttr -FN:252,specialAttr -FN:272,normalAttr -FN:299,setVirtualContent -FN:302,anyVirtual -FN:434,attributesSeeker -FN:460,hyperSeeker -FN:514,(anonymous_28) -FN:527,(anonymous_29) -FN:529,(anonymous_30) -FN:548,fnEscape -FN:553,asHTML -FN:558,createContent -FN:579,createDocumentFragment -FN:585,createFragment -FN:594,createHTMLFragment -FN:630,createSVGFragment -FN:646,createText -FN:652,discoverNode -FN:732,getCEClass -FN:739,insertBefore -FN:749,isSpecialAttribute -FN:759,emptyFragment -FN:764,invokeAtDistance -FN:778,invokeTransformer -FN:787,isNode_ish -FN:792,isPromise_ish -FN:798,lazyGetter -FN:801,(anonymous_49) -FN:804,(anonymous_50) -FN:812,noContent -FN:822,removeAttributeList -FN:829,removePreviousText -FN:838,setContent -FN:856,updateVirtualNodes -FN:870,Path -FN:880,(anonymous_57) -FN:882,(anonymous_58) -FN:883,(anonymous_59) -FN:895,(anonymous_60) -FN:898,(anonymous_61) -FN:904,(anonymous_62) -FN:915,(anonymous_63) -FN:920,(anonymous_64) -FN:927,(anonymous_65) -FN:941,unique -FN:949,(anonymous_67) -FN:952,appendNodes -FN:964,(anonymous_69) -FN:978,(anonymous_70) -FN:983,(anonymous_71) -FN:997,(anonymous_72) -FN:1007,(anonymous_73) -FN:1011,(anonymous_74) -FN:1017,(anonymous_75) -FN:1023,(anonymous_76) -FN:1026,(anonymous_77) -FN:1032,(anonymous_78) -FN:1048,(anonymous_79) -FN:1052,(anonymous_80) -FN:1063,(anonymous_81) -FN:1074,createTemplate -FN:1086,createPath -FN:1120,createUpdates -FN:1141,discoverUpdates -FN:1163,update -FN:1171,upgrade -FN:1191,wireContent -FN:1194,before -FN:1202,after -FN:1214,adopt -FN:1220,(anonymous_92) -FN:1241,update -FN:1254,wireWeakly -FNF:94 -FNH:94 +FN:141,Aura +FN:147,splice +FN:181,render +FN:198,setAttribute +FN:212,eventAttr +FN:220,specialAttr +FN:240,normalAttr +FN:266,setTextContent +FN:268,(anonymous_22) +FN:278,setAnyContent +FN:280,anyContent +FN:394,attributesSeeker +FN:420,hyperSeeker +FN:466,(anonymous_27) +FN:479,(anonymous_28) +FN:481,(anonymous_29) +FN:500,fnEscape +FN:505,asHTML +FN:510,createContent +FN:531,createDocumentFragment +FN:537,createFragment +FN:546,createHTMLFragment +FN:582,createSVGFragment +FN:598,createText +FN:604,getCEClass +FN:612,isSpecialAttribute +FN:622,invokeAtDistance +FN:636,invokeTransformer +FN:645,isNode_ish +FN:650,isPromise_ish +FN:656,lazyGetter +FN:659,(anonymous_45) +FN:662,(anonymous_46) +FN:669,removeAttributeList +FN:676,setContent +FN:694,Path +FN:704,(anonymous_50) +FN:706,(anonymous_51) +FN:707,(anonymous_52) +FN:719,(anonymous_53) +FN:722,(anonymous_54) +FN:728,(anonymous_55) +FN:739,(anonymous_56) +FN:744,(anonymous_57) +FN:751,(anonymous_58) +FN:765,unique +FN:773,(anonymous_60) +FN:776,appendNodes +FN:788,(anonymous_62) +FN:802,(anonymous_63) +FN:807,(anonymous_64) +FN:821,(anonymous_65) +FN:831,(anonymous_66) +FN:835,(anonymous_67) +FN:853,(anonymous_68) +FN:857,(anonymous_69) +FN:868,(anonymous_70) +FN:879,(anonymous_71) +FN:885,(anonymous_72) +FN:888,(anonymous_73) +FN:894,(anonymous_74) +FN:897,removePreviousText +FN:906,insertBefore +FN:916,discoverNode +FN:995,discoverUpdates +FN:1022,createTemplate +FN:1034,createPath +FN:1068,createUpdates +FN:1089,update +FN:1097,upgrade +FN:1118,wireContent +FN:1121,before +FN:1129,after +FN:1141,adopt +FN:1147,(anonymous_88) +FN:1168,update +FN:1181,wireWeakly +FN:1212,(anonymous_91) +FN:1226,majinbuu +FN:1254,aura +FN:1256,hodor +FN:1273,levenstein +FN:1309,addOperation +FN:1320,getOperations +FN:1363,performOperations +FNF:98 +FNH:98 FNDA:2,(anonymous_1) FNDA:20,hyper FNDA:28,adopt FNDA:32,(anonymous_4) -FNDA:208,bind +FNDA:210,bind FNDA:2,define FNDA:2,escape FNDA:62,wire @@ -109,87 +113,91 @@ FNDA:6,(anonymous_10) FNDA:6,(anonymous_11) FNDA:4,(anonymous_12) FNDA:6,(anonymous_13) -FNDA:48,indexOfDifferences -FNDA:16,populateNode -FNDA:88,removeNodeList -FNDA:148,resetAndPopulate -FNDA:18,updateViaArray -FNDA:278,render +FNDA:104,Aura +FNDA:88,splice +FNDA:282,render FNDA:48,setAttribute FNDA:30,eventAttr FNDA:20,specialAttr FNDA:48,normalAttr -FNDA:106,setVirtualContent -FNDA:288,anyVirtual +FNDA:4,setTextContent +FNDA:6,(anonymous_22) +FNDA:104,setAnyContent +FNDA:286,anyContent FNDA:118,attributesSeeker FNDA:228,hyperSeeker +FNDA:2,(anonymous_27) FNDA:2,(anonymous_28) -FNDA:2,(anonymous_29) -FNDA:203,(anonymous_30) +FNDA:206,(anonymous_29) FNDA:4,fnEscape FNDA:2,asHTML FNDA:62,createContent -FNDA:150,createDocumentFragment -FNDA:120,createFragment -FNDA:118,createHTMLFragment +FNDA:142,createDocumentFragment +FNDA:138,createFragment +FNDA:136,createHTMLFragment FNDA:2,createSVGFragment -FNDA:46,createText -FNDA:46,discoverNode +FNDA:72,createText FNDA:4,getCEClass -FNDA:12,insertBefore FNDA:46,isSpecialAttribute -FNDA:30,emptyFragment FNDA:10,invokeAtDistance FNDA:10,invokeTransformer FNDA:84,isNode_ish -FNDA:96,isPromise_ish +FNDA:100,isPromise_ish FNDA:6,lazyGetter -FNDA:42,(anonymous_49) -FNDA:18,(anonymous_50) -FNDA:68,noContent -FNDA:154,removeAttributeList -FNDA:14,removePreviousText -FNDA:154,setContent -FNDA:16,updateVirtualNodes +FNDA:42,(anonymous_45) +FNDA:18,(anonymous_46) +FNDA:156,removeAttributeList +FNDA:156,setContent FNDA:116,Path -FNDA:2,(anonymous_57) -FNDA:162,(anonymous_58) -FNDA:89,(anonymous_59) -FNDA:1,(anonymous_60) -FNDA:77,(anonymous_61) -FNDA:55,(anonymous_62) -FNDA:1,(anonymous_63) -FNDA:97,(anonymous_64) -FNDA:41,(anonymous_65) -FNDA:203,unique -FNDA:76,(anonymous_67) -FNDA:20,appendNodes -FNDA:143,(anonymous_69) -FNDA:82,(anonymous_70) -FNDA:81,(anonymous_71) -FNDA:81,(anonymous_72) -FNDA:38,(anonymous_73) -FNDA:48,(anonymous_74) -FNDA:7,(anonymous_75) -FNDA:7,(anonymous_76) -FNDA:6,(anonymous_77) -FNDA:6,(anonymous_78) -FNDA:2,(anonymous_79) -FNDA:204,(anonymous_80) -FNDA:61,(anonymous_81) +FNDA:2,(anonymous_50) +FNDA:164,(anonymous_51) +FNDA:90,(anonymous_52) +FNDA:1,(anonymous_53) +FNDA:78,(anonymous_54) +FNDA:55,(anonymous_55) +FNDA:1,(anonymous_56) +FNDA:101,(anonymous_57) +FNDA:21,(anonymous_58) +FNDA:206,unique +FNDA:69,(anonymous_60) +FNDA:5,appendNodes +FNDA:162,(anonymous_62) +FNDA:101,(anonymous_63) +FNDA:82,(anonymous_64) +FNDA:82,(anonymous_65) +FNDA:38,(anonymous_66) +FNDA:48,(anonymous_67) +FNDA:2,(anonymous_68) +FNDA:206,(anonymous_69) +FNDA:62,(anonymous_70) +FNDA:21,(anonymous_71) +FNDA:21,(anonymous_72) +FNDA:18,(anonymous_73) +FNDA:18,(anonymous_74) +FNDA:40,removePreviousText +FNDA:36,insertBefore +FNDA:46,discoverNode +FNDA:32,discoverUpdates FNDA:110,createTemplate FNDA:116,createPath -FNDA:122,createUpdates -FNDA:32,discoverUpdates -FNDA:278,update -FNDA:154,upgrade +FNDA:124,createUpdates +FNDA:282,update +FNDA:156,upgrade FNDA:60,wireContent FNDA:60,before FNDA:90,after FNDA:14,adopt -FNDA:14,(anonymous_92) +FNDA:14,(anonymous_88) FNDA:76,update FNDA:46,wireWeakly +FNDA:2,(anonymous_91) +FNDA:60,majinbuu +FNDA:104,aura +FNDA:88,hodor +FNDA:30,levenstein +FNDA:28,addOperation +FNDA:30,getOperations +FNDA:30,performOperations DA:1,2 DA:11,2 DA:14,2 @@ -202,7 +210,7 @@ DA:41,32 DA:42,32 DA:43,32 DA:49,2 -DA:50,208 +DA:50,210 DA:53,2 DA:54,2 DA:58,2 @@ -232,516 +240,557 @@ DA:132,2 DA:133,2 DA:134,2 DA:135,2 -DA:143,1 -DA:144,48 -DA:149,48 -DA:150,34 -DA:151,12 -DA:153,36 -DA:159,1 -DA:160,16 -DA:162,8 -DA:163,8 -DA:164,2 -DA:165,2 -DA:167,6 -DA:168,6 -DA:170,6 -DA:171,4 -DA:173,6 -DA:175,2 -DA:176,2 +DA:141,1 +DA:142,104 +DA:143,104 +DA:144,104 +DA:147,2 +DA:148,88 +DA:158,50 +DA:160,88 +DA:161,88 +DA:162,88 +DA:163,48 +DA:164,34 +DA:166,14 +DA:167,14 +DA:168,38 +DA:171,48 +DA:173,88 DA:181,1 -DA:182,88 -DA:183,88 -DA:184,26 -DA:185,26 -DA:190,1 -DA:191,148 -DA:192,148 -DA:196,1 -DA:197,18 -DA:198,18 -DA:199,2 -DA:200,2 -DA:201,2 -DA:203,16 -DA:204,16 -DA:213,1 -DA:214,278 -DA:215,278 -DA:219,154 -DA:220,154 -DA:222,278 -DA:223,278 -DA:230,1 -DA:231,48 +DA:182,282 +DA:183,282 +DA:187,156 +DA:188,156 +DA:190,282 +DA:191,282 +DA:198,1 +DA:199,48 +DA:209,48 +DA:210,48 +DA:211,48 +DA:213,30 +DA:214,18 +DA:215,18 +DA:216,18 +DA:221,20 +DA:222,16 +DA:225,16 +DA:229,14 +DA:232,4 +DA:233,4 +DA:235,10 DA:241,48 -DA:242,48 -DA:243,48 -DA:245,30 -DA:246,18 -DA:247,18 -DA:248,18 -DA:253,20 -DA:254,16 -DA:257,16 -DA:261,14 -DA:264,4 -DA:265,4 -DA:267,10 -DA:273,48 -DA:274,36 -DA:277,36 -DA:278,34 -DA:279,4 -DA:281,2 -DA:282,2 -DA:285,30 -DA:286,30 -DA:287,2 -DA:288,2 -DA:299,1 -DA:300,106 -DA:301,106 -DA:302,106 -DA:303,288 -DA:307,120 -DA:308,56 -DA:309,50 -DA:310,50 -DA:312,64 -DA:316,22 -DA:317,8 -DA:318,8 -DA:321,42 -DA:322,42 -DA:323,42 -DA:324,42 -DA:326,120 -DA:328,4 -DA:329,2 -DA:331,2 -DA:333,4 -DA:336,164 -DA:337,6 -DA:338,6 -DA:339,6 -DA:340,158 -DA:341,2 -DA:344,158 -DA:345,158 -DA:346,74 -DA:347,74 -DA:348,2 -DA:349,2 -DA:351,72 -DA:355,24 -DA:356,24 -DA:358,10 -DA:359,10 -DA:361,10 -DA:362,12 -DA:364,10 -DA:365,10 -DA:366,10 -DA:368,36 -DA:369,8 -DA:371,36 +DA:242,36 +DA:245,36 +DA:246,34 +DA:247,4 +DA:249,2 +DA:250,2 +DA:253,30 +DA:254,30 +DA:255,2 +DA:256,2 +DA:266,1 +DA:267,4 +DA:268,4 +DA:269,6 +DA:270,4 +DA:271,4 +DA:278,1 +DA:279,104 +DA:280,104 +DA:281,286 +DA:285,114 +DA:286,114 +DA:290,46 +DA:291,28 +DA:292,28 +DA:295,68 +DA:296,68 +DA:297,2 +DA:299,66 +DA:305,114 +DA:307,4 +DA:308,4 +DA:311,168 +DA:312,6 +DA:313,6 +DA:314,6 +DA:315,162 +DA:316,2 +DA:319,162 +DA:320,162 +DA:321,78 +DA:322,78 +DA:323,4 +DA:325,74 +DA:329,24 +DA:330,24 +DA:332,10 +DA:333,10 +DA:334,12 +DA:336,10 +DA:337,10 +DA:339,40 +DA:340,12 +DA:342,40 +DA:343,4 +DA:344,4 +DA:346,36 +DA:347,78 +DA:348,4 +DA:353,36 +DA:354,36 +DA:357,84 +DA:358,24 +DA:365,60 +DA:366,4 +DA:367,56 +DA:368,10 +DA:369,46 +DA:370,4 +DA:371,42 DA:372,4 -DA:373,4 -DA:375,32 -DA:376,64 -DA:377,4 -DA:382,34 -DA:383,26 -DA:384,26 -DA:386,8 -DA:388,34 -DA:391,84 -DA:392,24 -DA:393,8 -DA:400,60 -DA:401,4 -DA:402,56 -DA:403,10 -DA:404,46 -DA:405,4 -DA:406,42 -DA:407,4 -DA:408,38 -DA:409,28 -DA:412,28 -DA:414,10 -DA:415,10 -DA:416,10 -DA:417,10 -DA:419,10 -DA:420,4 -DA:422,6 -DA:424,158 -DA:434,1 -DA:435,118 -DA:443,56 -DA:444,56 -DA:445,48 -DA:446,48 -DA:460,1 -DA:461,228 -DA:467,312 -DA:468,312 -DA:470,118 -DA:471,118 -DA:472,118 -DA:474,66 -DA:475,64 -DA:476,64 -DA:480,24 -DA:481,24 -DA:483,40 -DA:486,66 -DA:488,128 -DA:492,4 -DA:493,4 -DA:495,128 -DA:503,2 -DA:508,2 -DA:514,2 -DA:515,2 -DA:516,2 -DA:517,2 -DA:522,2 -DA:527,2 -DA:528,2 -DA:529,203 -DA:530,2 -DA:538,2 -DA:541,2 -DA:548,1 -DA:549,4 -DA:553,1 -DA:554,2 -DA:558,1 -DA:559,62 -DA:567,90 -DA:568,90 -DA:572,66 -DA:575,62 -DA:579,1 -DA:580,150 -DA:585,1 -DA:586,120 -DA:594,1 -DA:595,118 -DA:596,118 -DA:597,118 -DA:598,118 -DA:599,118 -DA:600,118 -DA:602,56 -DA:609,56 -DA:611,118 -DA:615,1 -DA:616,1 -DA:617,1 -DA:619,117 -DA:620,117 -DA:621,62 -DA:623,55 -DA:626,118 -DA:630,1 -DA:631,2 -DA:632,2 -DA:633,2 -DA:634,1 -DA:635,1 +DA:373,38 +DA:374,28 +DA:375,28 +DA:376,28 +DA:377,28 +DA:378,28 +DA:379,10 +DA:380,4 +DA:382,6 +DA:384,162 +DA:394,1 +DA:395,118 +DA:403,56 +DA:404,56 +DA:405,48 +DA:406,48 +DA:420,1 +DA:421,228 +DA:427,322 +DA:428,322 +DA:430,118 +DA:431,118 +DA:432,118 +DA:434,66 +DA:435,64 +DA:436,64 +DA:438,66 +DA:440,138 +DA:444,4 +DA:445,4 +DA:447,138 +DA:455,2 +DA:460,2 +DA:466,2 +DA:467,2 +DA:468,2 +DA:469,2 +DA:474,2 +DA:479,2 +DA:480,2 +DA:481,206 +DA:482,2 +DA:490,2 +DA:493,2 +DA:500,1 +DA:501,4 +DA:505,1 +DA:506,2 +DA:510,1 +DA:511,62 +DA:519,90 +DA:520,90 +DA:524,66 +DA:527,62 +DA:531,1 +DA:532,142 +DA:537,1 +DA:538,138 +DA:546,1 +DA:547,136 +DA:548,136 +DA:549,136 +DA:550,136 +DA:551,136 +DA:552,136 +DA:554,64 +DA:561,64 +DA:563,136 +DA:567,1 +DA:568,1 +DA:569,1 +DA:571,135 +DA:572,135 +DA:573,72 +DA:575,63 +DA:578,136 +DA:582,1 +DA:583,2 +DA:584,2 +DA:585,2 +DA:586,1 +DA:587,1 +DA:588,1 +DA:590,1 +DA:591,1 +DA:592,1 +DA:594,2 +DA:598,1 +DA:599,72 +DA:604,1 +DA:605,4 +DA:606,4 +DA:607,4 +DA:612,1 +DA:613,46 +DA:614,46 +DA:615,4 +DA:616,4 +DA:618,46 +DA:622,1 +DA:623,10 +DA:624,10 +DA:625,2 +DA:626,8 +DA:627,2 +DA:628,6 +DA:629,2 +DA:631,4 DA:636,1 -DA:638,1 -DA:639,1 -DA:640,1 -DA:642,2 -DA:646,1 -DA:647,46 -DA:652,1 -DA:653,46 -DA:662,58 -DA:664,8 -DA:665,8 -DA:666,6 -DA:668,8 -DA:669,8 -DA:671,12 -DA:672,12 -DA:673,12 -DA:674,12 -DA:675,12 -DA:676,12 -DA:677,12 -DA:678,12 -DA:684,2 -DA:685,2 +DA:637,10 +DA:638,10 +DA:639,8 +DA:645,1 +DA:646,84 +DA:650,1 +DA:651,100 +DA:656,1 +DA:657,6 +DA:658,6 +DA:660,42 +DA:663,18 +DA:669,1 +DA:670,156 +DA:671,24 +DA:676,1 +DA:677,156 +DA:678,156 +DA:681,104 +DA:682,104 +DA:684,48 +DA:685,48 +DA:687,4 DA:688,4 -DA:691,10 -DA:692,10 -DA:694,12 -DA:698,12 -DA:699,2 -DA:705,10 -DA:711,12 -DA:712,10 -DA:714,12 -DA:717,38 -DA:723,38 -DA:724,38 -DA:727,46 -DA:732,1 -DA:733,4 -DA:734,4 -DA:735,4 -DA:739,1 -DA:740,12 -DA:741,10 -DA:743,2 -DA:749,1 -DA:750,46 -DA:751,46 -DA:752,4 -DA:753,4 -DA:755,46 -DA:759,1 -DA:760,30 -DA:764,1 -DA:765,10 -DA:766,10 -DA:767,2 -DA:768,8 -DA:769,2 -DA:770,6 -DA:771,2 -DA:773,4 -DA:778,1 -DA:779,10 -DA:780,10 -DA:781,8 -DA:787,1 -DA:788,84 -DA:792,1 -DA:793,96 -DA:798,1 -DA:799,6 -DA:800,6 -DA:802,42 -DA:805,18 -DA:812,1 -DA:813,68 -DA:818,68 -DA:822,1 -DA:823,154 -DA:824,24 -DA:829,1 -DA:830,14 -DA:831,14 -DA:832,4 -DA:833,4 -DA:838,1 -DA:839,154 -DA:840,154 -DA:842,54 -DA:843,54 -DA:845,48 -DA:846,48 -DA:848,52 -DA:849,52 -DA:851,154 -DA:856,1 -DA:857,16 -DA:858,16 -DA:859,12 -DA:860,12 -DA:861,12 -DA:862,12 -DA:863,12 -DA:864,12 -DA:865,12 -DA:870,1 -DA:871,116 -DA:879,2 -DA:881,2 -DA:882,162 -DA:884,89 -DA:894,2 -DA:896,1 +DA:690,156 +DA:694,1 +DA:695,116 +DA:703,2 +DA:705,2 +DA:706,164 +DA:708,90 +DA:718,2 +DA:720,1 +DA:721,1 +DA:723,78 +DA:729,55 +DA:738,2 +DA:740,1 +DA:743,1 +DA:744,1 +DA:745,101 +DA:750,2 +DA:751,21 +DA:758,2 +DA:761,2 +DA:764,2 +DA:765,1 +DA:766,206 +DA:767,206 +DA:772,2 +DA:774,69 +DA:777,5 +DA:782,6 +DA:787,2 +DA:789,162 +DA:796,390 +DA:797,390 +DA:798,205 +DA:800,162 +DA:802,101 +DA:806,2 +DA:808,82 +DA:809,137 +DA:810,137 +DA:812,61 +DA:813,61 +DA:815,76 +DA:816,76 +DA:819,82 +DA:822,82 +DA:823,137 +DA:825,82 +DA:829,2 +DA:830,2 +DA:831,2 +DA:832,38 +DA:835,2 +DA:836,48 +DA:840,2 +DA:843,2 +DA:846,2 +DA:849,2 +DA:853,2 +DA:854,2 +DA:855,2 +DA:856,2 +DA:858,206 +DA:864,144 +DA:866,206 +DA:869,62 +DA:878,2 +DA:880,21 +DA:881,15 +DA:883,15 +DA:885,21 +DA:887,2 +DA:889,18 +DA:890,12 +DA:892,14 +DA:894,18 DA:897,1 -DA:899,77 -DA:905,55 -DA:914,2 +DA:898,40 +DA:899,40 +DA:900,10 +DA:901,10 +DA:906,1 +DA:907,36 +DA:908,10 +DA:910,26 DA:916,1 -DA:919,1 -DA:920,1 -DA:921,97 -DA:926,2 -DA:927,41 -DA:934,2 -DA:937,2 -DA:940,2 -DA:941,1 -DA:942,203 -DA:943,203 -DA:948,2 -DA:950,76 -DA:953,20 -DA:958,30 -DA:963,2 -DA:965,143 -DA:972,363 -DA:973,363 -DA:974,205 -DA:976,143 -DA:978,82 -DA:982,2 -DA:984,81 -DA:985,111 -DA:986,111 -DA:988,61 -DA:989,61 -DA:991,50 -DA:992,50 -DA:995,81 -DA:998,81 -DA:999,111 -DA:1001,81 -DA:1005,2 -DA:1006,2 -DA:1007,2 -DA:1008,38 -DA:1011,2 -DA:1012,48 -DA:1016,2 -DA:1018,7 -DA:1019,8 -DA:1021,1 -DA:1023,7 -DA:1025,2 -DA:1027,6 -DA:1028,6 -DA:1030,2 -DA:1032,6 -DA:1035,2 -DA:1038,2 -DA:1041,2 -DA:1044,2 -DA:1048,2 -DA:1049,2 -DA:1050,2 -DA:1051,2 -DA:1053,204 -DA:1059,143 -DA:1061,204 -DA:1064,61 -DA:1074,1 -DA:1075,110 +DA:917,46 +DA:926,82 +DA:928,8 +DA:929,8 +DA:930,6 +DA:932,8 +DA:933,8 +DA:935,36 +DA:936,36 +DA:937,36 +DA:938,36 +DA:939,36 +DA:940,36 +DA:941,36 +DA:942,36 +DA:948,26 +DA:949,26 +DA:952,4 +DA:955,10 +DA:956,10 +DA:958,36 +DA:962,36 +DA:963,6 +DA:969,30 +DA:975,36 +DA:976,30 +DA:978,36 +DA:981,38 +DA:987,38 +DA:988,38 +DA:991,46 +DA:995,1 +DA:996,32 +DA:1003,46 +DA:1004,46 +DA:1005,46 +DA:1012,32 +DA:1013,32 +DA:1022,1 +DA:1023,110 +DA:1024,110 +DA:1025,110 +DA:1026,110 +DA:1027,110 +DA:1028,110 +DA:1034,1 +DA:1035,116 +DA:1036,116 +DA:1037,116 +DA:1040,4 +DA:1041,4 +DA:1043,64 +DA:1044,64 +DA:1048,64 +DA:1051,48 +DA:1052,48 +DA:1053,48 +DA:1055,116 +DA:1060,92 +DA:1062,116 +DA:1068,1 +DA:1069,124 DA:1076,110 DA:1077,110 -DA:1078,110 -DA:1079,110 -DA:1080,110 -DA:1086,1 -DA:1087,116 -DA:1088,116 -DA:1089,116 -DA:1092,28 -DA:1093,28 -DA:1095,40 -DA:1096,40 -DA:1100,40 -DA:1103,48 -DA:1104,48 -DA:1105,48 -DA:1107,116 -DA:1112,92 -DA:1114,116 -DA:1120,1 -DA:1121,122 -DA:1128,108 -DA:1129,108 -DA:1130,108 -DA:1131,10 -DA:1132,10 -DA:1134,108 -DA:1136,122 -DA:1137,122 -DA:1141,1 -DA:1142,32 -DA:1149,46 -DA:1150,46 -DA:1151,46 -DA:1158,32 -DA:1159,32 -DA:1163,1 -DA:1164,278 -DA:1165,296 -DA:1171,1 -DA:1172,154 -DA:1173,154 -DA:1174,154 -DA:1176,154 -DA:1177,122 -DA:1178,122 -DA:1179,122 -DA:1181,32 -DA:1183,154 -DA:1191,1 -DA:1192,60 -DA:1194,1 -DA:1195,60 -DA:1196,60 -DA:1199,60 -DA:1202,1 -DA:1203,90 -DA:1204,62 -DA:1205,62 -DA:1206,8 -DA:1208,62 -DA:1210,90 -DA:1213,60 -DA:1215,14 -DA:1216,14 -DA:1217,14 -DA:1218,10 -DA:1219,10 -DA:1220,10 -DA:1221,14 -DA:1222,10 -DA:1223,2 -DA:1224,2 -DA:1229,2 -DA:1231,8 -DA:1232,8 -DA:1235,14 -DA:1236,14 -DA:1239,14 -DA:1242,76 -DA:1243,76 -DA:1244,52 -DA:1245,52 -DA:1246,52 -DA:1248,76 -DA:1249,76 -DA:1254,1 -DA:1255,46 -DA:1256,46 -DA:1257,46 -DA:1258,46 -DA:1259,12 -DA:1260,12 -DA:1262,46 -DA:1263,24 -DA:1264,24 -DA:1266,46 -DA:1272,2 -DA:1277,2 -LF:550 -LH:550 +DA:1084,124 +DA:1085,124 +DA:1089,1 +DA:1090,282 +DA:1091,300 +DA:1097,1 +DA:1098,156 +DA:1099,156 +DA:1100,156 +DA:1102,156 +DA:1103,124 +DA:1104,124 +DA:1105,124 +DA:1106,124 +DA:1108,32 +DA:1110,156 +DA:1118,1 +DA:1119,60 +DA:1121,1 +DA:1122,60 +DA:1123,60 +DA:1126,60 +DA:1129,1 +DA:1130,90 +DA:1131,62 +DA:1132,62 +DA:1133,8 +DA:1135,62 +DA:1137,90 +DA:1140,60 +DA:1142,14 +DA:1143,14 +DA:1144,14 +DA:1145,10 +DA:1146,10 +DA:1147,10 +DA:1148,14 +DA:1149,10 +DA:1150,2 +DA:1151,2 +DA:1156,2 +DA:1158,8 +DA:1159,8 +DA:1162,14 +DA:1163,14 +DA:1166,14 +DA:1169,76 +DA:1170,76 +DA:1171,52 +DA:1172,52 +DA:1173,52 +DA:1175,76 +DA:1176,76 +DA:1181,1 +DA:1182,46 +DA:1183,46 +DA:1184,46 +DA:1185,46 +DA:1186,12 +DA:1187,12 +DA:1189,46 +DA:1190,24 +DA:1191,24 +DA:1193,46 +DA:1205,2 +DA:1210,2 +DA:1217,2 +DA:1226,1 +DA:1227,60 +DA:1232,60 +DA:1233,26 +DA:1234,24 +DA:1236,26 +DA:1238,34 +DA:1239,4 +DA:1240,4 +DA:1242,30 +DA:1254,2 +DA:1255,104 +DA:1256,104 +DA:1257,88 +DA:1258,88 +DA:1259,88 +DA:1260,88 +DA:1262,104 +DA:1265,2 +DA:1273,1 +DA:1274,30 +DA:1275,30 +DA:1276,30 +DA:1277,30 +DA:1278,30 +DA:1279,30 +DA:1280,30 +DA:1281,30 +DA:1282,30 +DA:1283,30 +DA:1284,30 +DA:1285,30 +DA:1286,50 +DA:1287,30 +DA:1288,46 +DA:1289,46 +DA:1290,46 +DA:1291,46 +DA:1292,46 +DA:1293,84 +DA:1294,84 +DA:1295,84 +DA:1296,84 +DA:1301,84 +DA:1303,46 +DA:1305,30 +DA:1309,1 +DA:1310,28 +DA:1320,1 +DA:1321,30 +DA:1330,30 +DA:1331,50 +DA:1332,50 +DA:1333,50 +DA:1334,50 +DA:1335,50 +DA:1336,50 +DA:1337,50 +DA:1338,42 +DA:1339,42 +DA:1340,42 +DA:1341,16 +DA:1344,8 +DA:1345,6 +DA:1346,6 +DA:1349,2 +DA:1350,2 +DA:1353,30 +DA:1354,2 +DA:1356,30 +DA:1357,2 +DA:1359,30 +DA:1363,1 +DA:1364,30 +DA:1370,30 +DA:1371,20 +DA:1372,20 +DA:1373,8 +DA:1374,8 +DA:1375,2 +DA:1376,2 +DA:1378,6 +DA:1379,6 +DA:1382,6 +DA:1384,8 +DA:1386,20 +DA:1405,2 +LF:591 +LH:591 BRDA:17,1,0,14 BRDA:17,1,1,6 BRDA:18,2,0,2 @@ -767,307 +816,316 @@ BRDA:88,11,1,4 BRDA:88,11,2,4 BRDA:103,12,0,2 BRDA:103,12,1,4 -BRDA:150,13,0,22 -BRDA:150,13,1,12 -BRDA:150,14,0,34 -BRDA:150,14,1,28 -BRDA:153,15,0,14 -BRDA:153,15,1,22 -BRDA:160,16,0,8 -BRDA:160,16,1,6 -BRDA:160,16,2,2 -BRDA:163,17,0,2 -BRDA:163,17,1,6 -BRDA:170,18,0,4 -BRDA:170,18,1,2 -BRDA:198,19,0,2 -BRDA:198,19,1,16 -BRDA:215,20,0,154 -BRDA:215,20,1,124 -BRDA:216,21,0,278 -BRDA:216,21,1,162 -BRDA:234,22,0,48 -BRDA:234,22,1,46 -BRDA:234,22,2,20 -BRDA:237,23,0,14 -BRDA:237,23,1,34 -BRDA:238,24,0,48 -BRDA:238,24,1,34 -BRDA:241,25,0,12 -BRDA:241,25,1,36 -BRDA:241,26,0,48 -BRDA:241,26,1,14 -BRDA:242,27,0,24 -BRDA:242,27,1,24 -BRDA:243,28,0,14 -BRDA:243,28,1,34 -BRDA:245,29,0,18 -BRDA:245,29,1,12 -BRDA:246,30,0,4 -BRDA:246,30,1,14 -BRDA:248,31,0,16 -BRDA:248,31,1,2 -BRDA:251,32,0,10 -BRDA:251,32,1,24 -BRDA:253,33,0,16 -BRDA:253,33,1,4 -BRDA:257,34,0,14 -BRDA:257,34,1,2 -BRDA:261,35,0,4 -BRDA:261,35,1,10 -BRDA:273,36,0,36 -BRDA:273,36,1,12 -BRDA:277,37,0,34 -BRDA:277,37,1,2 -BRDA:278,38,0,4 -BRDA:278,38,1,30 -BRDA:279,39,0,2 -BRDA:279,39,1,2 -BRDA:286,40,0,2 -BRDA:286,40,1,28 -BRDA:303,41,0,106 -BRDA:303,41,1,118 -BRDA:303,41,2,120 -BRDA:303,41,3,4 -BRDA:303,41,4,160 -BRDA:303,41,5,164 -BRDA:303,41,6,158 -BRDA:307,42,0,56 -BRDA:307,42,1,64 -BRDA:308,43,0,50 -BRDA:308,43,1,6 -BRDA:312,44,0,22 -BRDA:312,44,1,42 -BRDA:313,45,0,64 -BRDA:313,45,1,24 -BRDA:316,46,0,8 -BRDA:316,46,1,14 -BRDA:328,47,0,2 -BRDA:328,47,1,2 -BRDA:336,48,0,6 -BRDA:336,48,1,158 -BRDA:340,49,0,2 -BRDA:340,49,1,156 -BRDA:345,50,0,74 -BRDA:345,50,1,84 -BRDA:347,51,0,2 -BRDA:347,51,1,72 -BRDA:347,52,0,74 -BRDA:347,52,1,4 -BRDA:351,53,0,16 -BRDA:351,53,1,24 -BRDA:351,53,2,24 -BRDA:351,53,3,10 -BRDA:351,53,4,36 -BRDA:351,53,5,34 -BRDA:358,54,0,8 -BRDA:358,54,1,2 -BRDA:359,55,0,8 -BRDA:359,55,1,2 -BRDA:364,56,0,8 -BRDA:364,56,1,2 -BRDA:368,57,0,8 -BRDA:368,57,1,28 -BRDA:371,58,0,4 -BRDA:371,58,1,32 -BRDA:376,59,0,4 -BRDA:376,59,1,60 -BRDA:382,60,0,26 -BRDA:382,60,1,8 -BRDA:384,61,0,18 -BRDA:384,61,1,8 -BRDA:391,62,0,24 -BRDA:391,62,1,60 -BRDA:392,63,0,16 -BRDA:392,63,1,8 -BRDA:396,64,0,2 -BRDA:396,64,1,6 -BRDA:400,65,0,4 -BRDA:400,65,1,56 -BRDA:402,66,0,10 -BRDA:402,66,1,46 -BRDA:404,67,0,4 -BRDA:404,67,1,42 -BRDA:406,68,0,4 -BRDA:406,68,1,38 -BRDA:408,69,0,28 -BRDA:408,69,1,10 -BRDA:412,70,0,18 -BRDA:412,70,1,10 -BRDA:419,71,0,4 -BRDA:419,71,1,6 -BRDA:444,72,0,48 -BRDA:444,72,1,8 -BRDA:468,73,0,118 -BRDA:468,73,1,66 -BRDA:468,73,2,128 -BRDA:474,74,0,64 -BRDA:474,74,1,2 -BRDA:476,75,0,24 -BRDA:476,75,1,40 -BRDA:476,76,0,64 -BRDA:476,76,1,50 -BRDA:476,76,2,18 -BRDA:488,77,0,4 -BRDA:488,77,1,124 -BRDA:489,78,0,128 -BRDA:489,78,1,4 -BRDA:508,79,0,2 -BRDA:508,79,1,1 -BRDA:508,79,2,1 -BRDA:528,80,0,1 -BRDA:528,80,1,1 -BRDA:528,81,0,2 -BRDA:528,81,1,2 -BRDA:568,82,0,66 -BRDA:568,82,1,24 -BRDA:569,83,0,90 -BRDA:569,83,1,38 -BRDA:575,84,0,54 -BRDA:575,84,1,8 -BRDA:587,85,0,2 -BRDA:587,85,1,118 -BRDA:600,86,0,56 -BRDA:600,86,1,62 -BRDA:611,87,0,1 -BRDA:611,87,1,117 -BRDA:620,88,0,62 -BRDA:620,88,1,55 -BRDA:633,89,0,1 -BRDA:633,89,1,1 -BRDA:633,90,0,2 -BRDA:633,90,1,1 -BRDA:662,91,0,8 -BRDA:662,91,1,12 -BRDA:662,91,2,38 -BRDA:665,92,0,6 -BRDA:665,92,1,2 -BRDA:674,93,0,8 -BRDA:674,93,1,4 -BRDA:676,94,0,10 -BRDA:676,94,1,2 -BRDA:678,95,0,2 -BRDA:678,95,1,4 -BRDA:678,95,2,10 -BRDA:698,96,0,2 -BRDA:698,96,1,10 -BRDA:711,97,0,10 -BRDA:711,97,1,2 -BRDA:717,98,0,38 -BRDA:717,98,1,8 -BRDA:734,99,0,4 -BRDA:734,99,1,4 -BRDA:735,100,0,4 -BRDA:735,100,1,4 -BRDA:740,101,0,10 -BRDA:740,101,1,2 -BRDA:751,102,0,4 -BRDA:751,102,1,42 -BRDA:751,103,0,46 -BRDA:751,103,1,46 -BRDA:753,104,0,2 -BRDA:753,104,1,2 -BRDA:755,105,0,46 -BRDA:755,105,1,46 -BRDA:766,106,0,2 -BRDA:766,106,1,8 -BRDA:768,107,0,2 -BRDA:768,107,1,6 -BRDA:770,108,0,2 -BRDA:770,108,1,4 -BRDA:780,109,0,8 -BRDA:780,109,1,2 -BRDA:793,110,0,96 -BRDA:793,110,1,96 -BRDA:802,111,0,42 -BRDA:802,111,1,14 -BRDA:814,112,0,92 -BRDA:814,112,1,64 -BRDA:814,112,2,40 -BRDA:831,113,0,4 -BRDA:831,113,1,10 -BRDA:831,114,0,14 -BRDA:831,114,1,10 -BRDA:840,115,0,54 -BRDA:840,115,1,48 -BRDA:840,115,2,52 -BRDA:858,116,0,12 -BRDA:858,116,1,4 -BRDA:879,117,0,1 -BRDA:879,117,1,1 -BRDA:894,118,0,1 -BRDA:894,118,1,1 -BRDA:914,119,0,2 -BRDA:914,119,1,1 -BRDA:926,120,0,2 -BRDA:926,120,1,1 -BRDA:943,121,0,203 -BRDA:943,121,1,55 -BRDA:948,122,0,1 -BRDA:948,122,1,1 -BRDA:963,123,0,1 -BRDA:963,123,1,1 -BRDA:963,124,0,2 -BRDA:963,124,1,1 -BRDA:973,125,0,205 -BRDA:973,125,1,158 -BRDA:982,126,0,1 -BRDA:982,126,1,1 -BRDA:982,127,0,2 -BRDA:982,127,1,1 -BRDA:986,128,0,61 -BRDA:986,128,1,50 -BRDA:1012,129,0,48 -BRDA:1012,129,1,22 -BRDA:1012,130,0,48 -BRDA:1012,130,1,22 -BRDA:1016,131,0,1 -BRDA:1016,131,1,1 -BRDA:1019,132,0,6 -BRDA:1019,132,1,2 -BRDA:1025,133,0,1 -BRDA:1025,133,1,1 -BRDA:1028,134,0,4 -BRDA:1028,134,1,2 -BRDA:1051,135,0,1 -BRDA:1051,135,1,1 -BRDA:1089,136,0,26 -BRDA:1089,136,1,28 -BRDA:1089,136,2,40 -BRDA:1089,136,3,16 -BRDA:1089,136,4,48 -BRDA:1130,137,0,10 -BRDA:1130,137,1,98 -BRDA:1174,138,0,154 -BRDA:1174,138,1,110 -BRDA:1176,139,0,122 -BRDA:1176,139,1,32 -BRDA:1196,140,0,8 -BRDA:1196,140,1,52 -BRDA:1203,141,0,62 -BRDA:1203,141,1,28 -BRDA:1205,142,0,8 -BRDA:1205,142,1,54 -BRDA:1213,143,0,8 -BRDA:1213,143,1,52 -BRDA:1217,144,0,10 -BRDA:1217,144,1,4 -BRDA:1221,145,0,10 -BRDA:1221,145,1,4 -BRDA:1222,146,0,2 -BRDA:1222,146,1,8 -BRDA:1231,147,0,2 -BRDA:1231,147,1,6 -BRDA:1243,148,0,52 -BRDA:1243,148,1,24 -BRDA:1258,149,0,12 -BRDA:1258,149,1,34 -BRDA:1260,150,0,12 -BRDA:1260,150,1,12 -BRDA:1262,151,0,24 -BRDA:1262,151,1,22 -BRDA:1266,152,0,46 -BRDA:1266,152,1,26 -BRF:326 -BRH:326 +BRDA:156,13,0,138 +BRDA:156,13,1,56 +BRDA:162,14,0,48 +BRDA:162,14,1,40 +BRDA:163,15,0,34 +BRDA:163,15,1,14 +BRDA:171,16,0,48 +BRDA:171,16,1,44 +BRDA:183,17,0,156 +BRDA:183,17,1,126 +BRDA:184,18,0,282 +BRDA:184,18,1,166 +BRDA:202,19,0,48 +BRDA:202,19,1,46 +BRDA:202,19,2,20 +BRDA:205,20,0,14 +BRDA:205,20,1,34 +BRDA:206,21,0,48 +BRDA:206,21,1,34 +BRDA:209,22,0,12 +BRDA:209,22,1,36 +BRDA:209,23,0,48 +BRDA:209,23,1,14 +BRDA:210,24,0,24 +BRDA:210,24,1,24 +BRDA:211,25,0,14 +BRDA:211,25,1,34 +BRDA:213,26,0,18 +BRDA:213,26,1,12 +BRDA:214,27,0,4 +BRDA:214,27,1,14 +BRDA:216,28,0,16 +BRDA:216,28,1,2 +BRDA:219,29,0,10 +BRDA:219,29,1,24 +BRDA:221,30,0,16 +BRDA:221,30,1,4 +BRDA:225,31,0,14 +BRDA:225,31,1,2 +BRDA:229,32,0,4 +BRDA:229,32,1,10 +BRDA:241,33,0,36 +BRDA:241,33,1,12 +BRDA:245,34,0,34 +BRDA:245,34,1,2 +BRDA:246,35,0,4 +BRDA:246,35,1,30 +BRDA:247,36,0,2 +BRDA:247,36,1,2 +BRDA:254,37,0,2 +BRDA:254,37,1,28 +BRDA:269,38,0,4 +BRDA:269,38,1,2 +BRDA:281,39,0,100 +BRDA:281,39,1,112 +BRDA:281,39,2,114 +BRDA:281,39,3,4 +BRDA:281,39,4,164 +BRDA:281,39,5,168 +BRDA:281,39,6,162 +BRDA:286,40,0,46 +BRDA:286,40,1,68 +BRDA:287,41,0,114 +BRDA:287,41,1,48 +BRDA:290,42,0,28 +BRDA:290,42,1,18 +BRDA:296,43,0,2 +BRDA:296,43,1,66 +BRDA:311,44,0,6 +BRDA:311,44,1,162 +BRDA:315,45,0,2 +BRDA:315,45,1,160 +BRDA:320,46,0,78 +BRDA:320,46,1,84 +BRDA:322,47,0,4 +BRDA:322,47,1,74 +BRDA:325,48,0,16 +BRDA:325,48,1,24 +BRDA:325,48,2,24 +BRDA:325,48,3,10 +BRDA:325,48,4,40 +BRDA:325,48,5,36 +BRDA:339,49,0,12 +BRDA:339,49,1,28 +BRDA:342,50,0,4 +BRDA:342,50,1,36 +BRDA:347,51,0,4 +BRDA:347,51,1,74 +BRDA:357,52,0,24 +BRDA:357,52,1,60 +BRDA:360,53,0,8 +BRDA:360,53,1,16 +BRDA:365,54,0,4 +BRDA:365,54,1,56 +BRDA:367,55,0,10 +BRDA:367,55,1,46 +BRDA:369,56,0,4 +BRDA:369,56,1,42 +BRDA:371,57,0,4 +BRDA:371,57,1,38 +BRDA:373,58,0,28 +BRDA:373,58,1,10 +BRDA:379,59,0,4 +BRDA:379,59,1,6 +BRDA:404,60,0,48 +BRDA:404,60,1,8 +BRDA:428,61,0,118 +BRDA:428,61,1,66 +BRDA:428,61,2,138 +BRDA:434,62,0,64 +BRDA:434,62,1,2 +BRDA:440,63,0,4 +BRDA:440,63,1,134 +BRDA:441,64,0,138 +BRDA:441,64,1,4 +BRDA:460,65,0,2 +BRDA:460,65,1,1 +BRDA:460,65,2,1 +BRDA:480,66,0,1 +BRDA:480,66,1,1 +BRDA:480,67,0,2 +BRDA:480,67,1,2 +BRDA:520,68,0,66 +BRDA:520,68,1,24 +BRDA:521,69,0,90 +BRDA:521,69,1,38 +BRDA:527,70,0,54 +BRDA:527,70,1,8 +BRDA:539,71,0,2 +BRDA:539,71,1,136 +BRDA:552,72,0,64 +BRDA:552,72,1,72 +BRDA:563,73,0,1 +BRDA:563,73,1,135 +BRDA:572,74,0,72 +BRDA:572,74,1,63 +BRDA:585,75,0,1 +BRDA:585,75,1,1 +BRDA:585,76,0,2 +BRDA:585,76,1,1 +BRDA:606,77,0,4 +BRDA:606,77,1,4 +BRDA:607,78,0,4 +BRDA:607,78,1,4 +BRDA:614,79,0,4 +BRDA:614,79,1,42 +BRDA:614,80,0,46 +BRDA:614,80,1,46 +BRDA:616,81,0,2 +BRDA:616,81,1,2 +BRDA:618,82,0,46 +BRDA:618,82,1,46 +BRDA:624,83,0,2 +BRDA:624,83,1,8 +BRDA:626,84,0,2 +BRDA:626,84,1,6 +BRDA:628,85,0,2 +BRDA:628,85,1,4 +BRDA:638,86,0,8 +BRDA:638,86,1,2 +BRDA:651,87,0,100 +BRDA:651,87,1,100 +BRDA:660,88,0,42 +BRDA:660,88,1,14 +BRDA:678,89,0,104 +BRDA:678,89,1,48 +BRDA:678,89,2,4 +BRDA:703,90,0,1 +BRDA:703,90,1,1 +BRDA:718,91,0,1 +BRDA:718,91,1,1 +BRDA:738,92,0,2 +BRDA:738,92,1,1 +BRDA:750,93,0,2 +BRDA:750,93,1,1 +BRDA:767,94,0,206 +BRDA:767,94,1,55 +BRDA:772,95,0,1 +BRDA:772,95,1,1 +BRDA:787,96,0,1 +BRDA:787,96,1,1 +BRDA:787,97,0,2 +BRDA:787,97,1,1 +BRDA:797,98,0,205 +BRDA:797,98,1,185 +BRDA:806,99,0,1 +BRDA:806,99,1,1 +BRDA:806,100,0,2 +BRDA:806,100,1,1 +BRDA:810,101,0,61 +BRDA:810,101,1,76 +BRDA:836,102,0,48 +BRDA:836,102,1,22 +BRDA:836,103,0,48 +BRDA:836,103,1,22 +BRDA:856,104,0,1 +BRDA:856,104,1,1 +BRDA:878,105,0,1 +BRDA:878,105,1,1 +BRDA:881,106,0,6 +BRDA:881,106,1,9 +BRDA:887,107,0,1 +BRDA:887,107,1,1 +BRDA:890,108,0,4 +BRDA:890,108,1,8 +BRDA:899,109,0,10 +BRDA:899,109,1,30 +BRDA:899,110,0,40 +BRDA:899,110,1,16 +BRDA:907,111,0,10 +BRDA:907,111,1,26 +BRDA:926,112,0,8 +BRDA:926,112,1,36 +BRDA:926,112,2,38 +BRDA:929,113,0,6 +BRDA:929,113,1,2 +BRDA:938,114,0,8 +BRDA:938,114,1,28 +BRDA:940,115,0,10 +BRDA:940,115,1,26 +BRDA:942,116,0,26 +BRDA:942,116,1,4 +BRDA:942,116,2,10 +BRDA:962,117,0,6 +BRDA:962,117,1,30 +BRDA:975,118,0,30 +BRDA:975,118,1,6 +BRDA:981,119,0,38 +BRDA:981,119,1,8 +BRDA:1037,120,0,4 +BRDA:1037,120,1,4 +BRDA:1037,120,2,64 +BRDA:1037,120,3,16 +BRDA:1037,120,4,48 +BRDA:1100,121,0,156 +BRDA:1100,121,1,110 +BRDA:1102,122,0,124 +BRDA:1102,122,1,32 +BRDA:1123,123,0,8 +BRDA:1123,123,1,52 +BRDA:1130,124,0,62 +BRDA:1130,124,1,28 +BRDA:1132,125,0,8 +BRDA:1132,125,1,54 +BRDA:1140,126,0,8 +BRDA:1140,126,1,52 +BRDA:1144,127,0,10 +BRDA:1144,127,1,4 +BRDA:1148,128,0,10 +BRDA:1148,128,1,4 +BRDA:1149,129,0,2 +BRDA:1149,129,1,8 +BRDA:1158,130,0,2 +BRDA:1158,130,1,6 +BRDA:1170,131,0,52 +BRDA:1170,131,1,24 +BRDA:1185,132,0,12 +BRDA:1185,132,1,34 +BRDA:1187,133,0,12 +BRDA:1187,133,1,12 +BRDA:1189,134,0,24 +BRDA:1189,134,1,22 +BRDA:1193,135,0,46 +BRDA:1193,135,1,26 +BRDA:1221,136,0,1 +BRDA:1221,136,1,1 +BRDA:1230,137,0,60 +BRDA:1230,137,1,34 +BRDA:1232,138,0,26 +BRDA:1232,138,1,34 +BRDA:1232,139,0,60 +BRDA:1232,139,1,34 +BRDA:1233,140,0,24 +BRDA:1233,140,1,2 +BRDA:1233,141,0,26 +BRDA:1233,141,1,2 +BRDA:1238,142,0,4 +BRDA:1238,142,1,30 +BRDA:1295,143,0,30 +BRDA:1295,143,1,54 +BRDA:1296,144,0,18 +BRDA:1296,144,1,66 +BRDA:1297,145,0,10 +BRDA:1297,145,1,8 +BRDA:1299,146,0,16 +BRDA:1299,146,1,50 +BRDA:1330,147,0,80 +BRDA:1330,147,1,52 +BRDA:1337,148,0,42 +BRDA:1337,148,1,8 +BRDA:1337,149,0,50 +BRDA:1337,149,1,44 +BRDA:1337,149,2,42 +BRDA:1340,150,0,16 +BRDA:1340,150,1,26 +BRDA:1344,151,0,6 +BRDA:1344,151,1,2 +BRDA:1344,152,0,8 +BRDA:1344,152,1,6 +BRDA:1370,153,0,20 +BRDA:1370,153,1,10 +BRDA:1374,154,0,2 +BRDA:1374,154,1,6 +BRDA:1374,155,0,8 +BRDA:1374,155,1,4 +BRDA:1374,155,2,2 +BRDA:1379,156,0,2 +BRDA:1379,156,1,4 +BRDA:1380,157,0,2 +BRDA:1380,157,1,2 +BRF:335 +BRH:335 end_of_record diff --git a/hyperhtml.js b/hyperhtml.js index dec1bb1f..f2884f08 100644 --- a/hyperhtml.js +++ b/hyperhtml.js @@ -1,4 +1,4 @@ -var hyperHTML = (function (globalDocument) {'use strict'; +var hyperHTML = (function (globalDocument, majinbuu) {'use strict'; /*! (c) 2017 Andrea Giammarchi @WebReflection, (ISC) */ @@ -130,7 +130,7 @@ var hyperHTML = (function (globalDocument) {'use strict'; var SVG_NAMESPACE = 'http://www.w3.org/2000/svg'; var SHOULD_USE_ATTRIBUTE = /^style$/i; - var EXPANDO = '_hyper_html: '; + var EXPANDO = '_hyper: '; var UID = EXPANDO + ((Math.random() * new Date) | 0) + ';'; var UIDC = ''; @@ -138,72 +138,40 @@ var hyperHTML = (function (globalDocument) {'use strict'; // DOM Manipulation // --------------------------------------------- - // return -1 if no differences are found - // the index where differences starts otherwise - function indexOfDifferences(a, b) { - var - i = 0, - aLength = a.length, - bLength = b.length - ; - while (i < aLength) { - if (i < bLength && a[i] === b[i]) i++; - else return i; - } - return i === bLength ? -1 : i; + function Aura(node, childNodes) { + this.node = node; + this.childNodes = childNodes; + return majinbuu.aura(this, childNodes); } - // accordingly with the content type - // it replace the content of a node - // with the give child - function populateNode(parent, child) { - switch (child.nodeType) { - case ELEMENT_NODE: - var childNodes = parent.childNodes; - if (childNodes[0] === child) { - removeNodeList(childNodes, 1); - break; - } - resetAndPopulate(parent, child); - break; - case DOCUMENT_FRAGMENT_NODE: - if (indexOfDifferences(parent.childNodes, child.childNodes) !== -1) { - resetAndPopulate(parent, child); - } - break; - case TEXT_NODE: - parent.textContent = child.textContent; - break; - } - } - - // remove a list of nodes from startIndex to list.length - function removeNodeList(list, startIndex) { - var length = list.length, child; - while (startIndex < length--) { - child = list[length]; - child.parentNode.removeChild(child); + Aura.prototype.splice = function splice(start, deleteCount) { + for (var + tmp, + i = start, + ph = this.node, + cn = this.childNodes, + pn = ph.parentNode, + length = cn.length, + end = deleteCount == null ? length : (start + deleteCount); + i < length && i < end; i++ + ) { + pn.removeChild(cn[i]); } - } - - // erase a node content and populate it - function resetAndPopulate(parent, child) { - parent.textContent = ''; - parent.appendChild(child); - } - - // append childNodes to a node from a specific index - function updateViaArray(node, childNodes, i) { - var fragment = emptyFragment(node); - if (i !== 0) { - removeNodeList(node.childNodes, i); - appendNodes(fragment, childNodes.slice(i)); - node.appendChild(fragment); - } else { - appendNodes(fragment, childNodes); - resetAndPopulate(node, fragment); + i = 2; + length = arguments.length; + if (i < length) { + if ((length - i) === 1) { + tmp = arguments[i]; + } else { + tmp = createDocumentFragment(pn.ownerDocument); + while (i < length) { + tmp.appendChild(arguments[i++]); + } + } + pn.insertBefore(tmp, cn[end] || ph); } - } + return cn.splice.apply(cn, arguments); + }; // --------------------------------------------- // hyperHTML Operations @@ -294,23 +262,29 @@ var hyperHTML = (function (globalDocument) {'use strict'; ); } + // `` + function setTextContent(node) { + var oldValue; + return function (value) { + if (value !== oldValue) { + oldValue = value; + node.textContent = value; + } + }; + } + // `

${'any'}

` // `
  • a
  • ${'virtual'}
  • c
  • ` - function setVirtualContent(node, childNodes) { + function setAnyContent(node, childNodes, aura) { var oldValue; - var justContent = !childNodes; - return function anyVirtual(value) { + return function anyContent(value) { switch (typeof value) { case 'string': case 'number': case 'boolean': - if (justContent) { - if (oldValue !== value) { - oldValue = value; - node.textContent = value; - } - } else if ( - childNodes.length === 1 && + var length = childNodes.length; + if ( + length === 1 && childNodes[0].nodeType === TEXT_NODE ) { if (oldValue !== value) { @@ -319,23 +293,24 @@ var hyperHTML = (function (globalDocument) {'use strict'; } } else { oldValue = value; - removeNodeList(childNodes, 0); - childNodes = [createText(node, value)]; - node.parentNode.insertBefore(childNodes[0], node); + if (length) { + aura.splice(0, length, createText(node, value)); + } else { + childNodes[0] = node.parentNode.insertBefore( + createText(node, value), + node + ); + } } break; case 'function': - if (justContent) { - anyVirtual(value(node, getChildren(node), 0)); - } else { - anyVirtual(value(node.parentNode, childNodes, 0)); - } + anyContent(value(node.parentNode, childNodes, 0)); break; case 'object': case 'undefined': if (value == null) { oldValue = value; - anyVirtual(''); + anyContent(''); break; } else if (value instanceof Component) { value = value.render(); @@ -344,32 +319,28 @@ var hyperHTML = (function (globalDocument) {'use strict'; oldValue = value; if (isArray(value)) { var length = value.length; - if (length === 0 && !justContent) { - removeNodeList(childNodes, 0); - childNodes = []; + if (length === 0) { + aura.splice(0); } else { switch (typeof value[0]) { case 'string': case 'number': case 'boolean': - anyVirtual({html: value}); + anyContent({html: value}); break; case 'function': - var parentNode = justContent ? node : node.parentNode; - var children = justContent ? - slice.call(getChildren(node)) : childNodes; + var parentNode = node.parentNode; for (var i = 0; i < length; i++) { - value[i] = value[i](parentNode, children, i); + value[i] = value[i](parentNode, childNodes, i); } - if (justContent) removeNodeList(children, i); - anyVirtual(value.concat.apply([], value)); + anyContent(value.concat.apply([], value)); break; case 'object': if (isArray(value[0])) { value = value.concat.apply([], value); } if (isPromise_ish(value[0])) { - Promise.all(value).then(anyVirtual); + Promise.all(value).then(anyContent); break; } else { for (var i = 0, length = value.length; i < length; i++) { @@ -379,47 +350,36 @@ var hyperHTML = (function (globalDocument) {'use strict'; } } default: - if (justContent) { - var i = indexOfDifferences(node.childNodes, value); - if (i !== -1) updateViaArray(node, value, i); - } else { - updateVirtualNodes(node, childNodes, value); - } + majinbuu(aura, value, hyper.MAX_LIST_SIZE); break; } } } else if (isNode_ish(value)) { - if (justContent) populateNode(node, value); - else updateVirtualNodes( - node, - childNodes, + majinbuu( + aura, value.nodeType === DOCUMENT_FRAGMENT_NODE ? slice.call(value.childNodes) : - [value] + [value], + hyper.MAX_LIST_SIZE ); } else if (isPromise_ish(value)) { - value.then(anyVirtual); + value.then(anyContent); } else if ('placeholder' in value) { - invokeAtDistance(anyVirtual, value); + invokeAtDistance(anyContent, value); } else if ('text' in value) { - anyVirtual(String(value.text)); + anyContent(String(value.text)); } else if ('any' in value) { - anyVirtual(value.any); + anyContent(value.any); } else if ('html' in value) { var html = [].concat(value.html).join(''); - // TODO: should it trash the layout each time? - // should it use oldValue instead? - if (justContent) node.innerHTML = html; - else { - removeNodeList(childNodes, 0); - var fragment = createFragment(node, html); - childNodes = slice.call(fragment.childNodes); - node.parentNode.insertBefore(fragment, node); - } + aura.splice(0); + var fragment = createFragment(node, html); + childNodes.push.apply(childNodes, fragment.childNodes); + node.parentNode.insertBefore(fragment, node); } else if ('length' in value) { - anyVirtual(slice.call(value)); + anyContent(slice.call(value)); } else { - anyVirtual(invokeTransformer(value)); + anyContent(invokeTransformer(value)); } break; } @@ -473,15 +433,7 @@ var hyperHTML = (function (globalDocument) {'use strict'; case COMMENT_NODE: if (child.textContent === UID) { parts.shift(); - if (length === 1 || ( - noContent(child, 'previous') && - noContent(child, 'next') - )) { - paths.push(Path('any', node)); - i = length; - } else { - paths.push(Path('virtual', child)); - } + paths.push(Path('any', child)); } break; case TEXT_NODE: @@ -490,7 +442,7 @@ var hyperHTML = (function (globalDocument) {'use strict'; trim.call(child.textContent) === UIDC ) { parts.shift(); - paths.push(Path('any', node)); + paths.push(Path('text', node)); } break; } @@ -647,86 +599,6 @@ var hyperHTML = (function (globalDocument) {'use strict'; return node.ownerDocument.createTextNode(text); } - // given an info, tries to find out the best option - // to replace or update the content - function discoverNode(parentNode, virtual, info, childNodes) { - for (var - target = parentNode, - document = parentNode.ownerDocument, - path = info.path, - virtualNode = getNode(virtual, path), - i = 0, - length = path.length; - i < length; i++ - ) { - switch (path[i++]) { - case 'attributes': - var name = virtualNode.name; - if (!parentNode.hasAttribute(name)) { - parentNode.setAttribute(name, ''); - } - target = parentNode.attributes[name]; - break; - case 'childNodes': - var children = getChildren(parentNode); - var virtualChildren = getChildren(virtualNode.parentNode); - target = previousElementSibling(virtualNode); - var before = target ? (path.indexOf.call(virtualChildren, target) + 1) : -1; - target = nextElementSibling(virtualNode); - var after = target ? path.indexOf.call(virtualChildren, target) : -1; - target = document.createComment(UID); - switch (true) { - // `${'virtual'}` is actually resolved as `${'any'}` - // case before < 0 && after < 0: before = 0; - - // `${'virtual'}` - case after < 0: - after = children.length; - break; - // `${'virtual'}` - case before < 0: - before = 0; - // `${'virtual'}` - default: - after = -(virtualChildren.length - after); - break; - } - childNodes.push.apply( - childNodes, - slice.call(children, before, after) - ); - if (childNodes.length) { - insertBefore( - parentNode, - target, - nextElementSibling(childNodes[childNodes.length - 1]) - ); - } else { - insertBefore( - parentNode, - target, - slice.call(children, after)[0] - ); - } - if (childNodes.length === 0) { - removePreviousText(parentNode, target); - } - break; - default: - // if the node is not there, create it - target = getChildren(parentNode)[path[i]] || - parentNode.appendChild( - parentNode.ownerDocument.createElement( - getNode(virtual, path.slice(0, i + 1)).nodeName - ) - ); - parentNode = target; - break; - } - } - return target; - } - // returns current customElements reference // compatible with basicHTML too function getCEClass(node) { @@ -735,15 +607,6 @@ var hyperHTML = (function (globalDocument) {'use strict'; return ce && ce.get(node.nodeName.toLowerCase()); } - // avoid errors on obsolete platforms - function insertBefore(parentNode, target, after) { - if (after) { - parentNode.insertBefore(target, after); - } else { - parentNode.appendChild(target); - } - } - // verify that an attribute has // a special meaning for the node function isSpecialAttribute(node, name) { @@ -755,11 +618,6 @@ var hyperHTML = (function (globalDocument) {'use strict'; return notSVG && name in node; } - // create an empty fragment from a generic node - function emptyFragment(node) { - return createDocumentFragment(node.ownerDocument); - } - // use a placeholder and resolve with the right callback function invokeAtDistance(callback, value) { callback(value.placeholder); @@ -807,17 +665,6 @@ var hyperHTML = (function (globalDocument) {'use strict'; }; } - // given a node and a direction - // returns true if there's no content - function noContent(node, direction) { - while ( - ((node = node[direction + 'Sibling']) != null) && - node.nodeType === TEXT_NODE && - trim.call(node.textContent).length < 1 - ); - return node == null; - } - // remove a list of [node, attribute] function removeAttributeList(list) { for (var i = 0, length = list.length; i < length; i++) { @@ -825,47 +672,24 @@ var hyperHTML = (function (globalDocument) {'use strict'; } } - // remove all text nodes from a virtual space - function removePreviousText(parentNode, node) { - var previousSibling = node.previousSibling; - if (previousSibling && previousSibling.nodeType === TEXT_NODE) { - parentNode.removeChild(previousSibling); - removePreviousText(parentNode, node); - } - } - // specify the content to update function setContent(info, target, removeAttributes, childNodes) { var update; switch (info.type) { case 'any': - update = setVirtualContent(target, null); + // TODO: don't pass the target, it shouldn't be needed + update = setAnyContent(target, childNodes, new Aura(target, childNodes)); break; case 'attr': update = setAttribute(target, removeAttributes, info.name); break; - case 'virtual': - update = setVirtualContent(target, childNodes); + case 'text': + update = setTextContent(target); break; } return update; } - // update partially or fully the list of virtual nodes - // it modifies in place the childNodes list if necessary - function updateVirtualNodes(node, childNodes, value) { - var i = indexOfDifferences(childNodes, value); - if (i !== -1) { - var fragment = emptyFragment(node); - removeNodeList(childNodes, i); - childNodes.splice(i); - value = value.slice(i); - appendNodes(fragment, value); - node.parentNode.insertBefore(fragment, node); - childNodes.push.apply(childNodes, value); - } - } - // used for common path creation. function Path(type, node, name) { return {type: type, path: createPath(node), name: name}; @@ -1012,25 +836,6 @@ var hyperHTML = (function (globalDocument) {'use strict'; return $1 + ($2 || '"') + UID + ($2 || '"'); }; - // IE/Edge gotcha with comment nodes - var nextElementSibling = IE ? - function (node) { - while (node = node.nextSibling) { - if (node.nodeType === ELEMENT_NODE) return node; - } - return undefined; - } : - function (node) { return node.nextElementSibling; }; - - var previousElementSibling = IE ? - function (node) { - while (node = node.previousSibling) { - if (node.nodeType === ELEMENT_NODE) return node; - } - return undefined; - } : - function (node) { return node.previousElementSibling; }; - // [element] = {template, updates}; var hypers = new $WeakMap; @@ -1065,6 +870,149 @@ var hyperHTML = (function (globalDocument) {'use strict'; }; }()); + // --------------------------------------------- + // Adopting Nodes + // --------------------------------------------- + + // IE/Edge gotcha with comment nodes + var nextElementSibling = IE ? + function (node) { + while (node = node.nextSibling) { + if (node.nodeType === ELEMENT_NODE) return node; + } + return undefined; + } : + function (node) { return node.nextElementSibling; }; + + var previousElementSibling = IE ? + function (node) { + while (node = node.previousSibling) { + if (node.nodeType === ELEMENT_NODE) return node; + } + return undefined; + } : + function (node) { return node.previousElementSibling; }; + + // remove all text nodes from a virtual space + function removePreviousText(parentNode, node) { + var previousSibling = node.previousSibling; + if (previousSibling && previousSibling.nodeType === TEXT_NODE) { + parentNode.removeChild(previousSibling); + removePreviousText(parentNode, node); + } + } + + // avoid errors on obsolete platforms + function insertBefore(parentNode, target, after) { + if (after) { + parentNode.insertBefore(target, after); + } else { + parentNode.appendChild(target); + } + } + + // given an info, tries to find out the best option + // to replace or update the content + function discoverNode(parentNode, virtual, info, childNodes) { + for (var + target = parentNode, + document = parentNode.ownerDocument, + path = info.path, + virtualNode = getNode(virtual, path), + i = 0, + length = path.length; + i < length; i++ + ) { + switch (path[i++]) { + case 'attributes': + var name = virtualNode.name; + if (!parentNode.hasAttribute(name)) { + parentNode.setAttribute(name, ''); + } + target = parentNode.attributes[name]; + break; + case 'childNodes': + var children = getChildren(parentNode); + var virtualChildren = getChildren(virtualNode.parentNode); + target = previousElementSibling(virtualNode); + var before = target ? (path.indexOf.call(virtualChildren, target) + 1) : -1; + target = nextElementSibling(virtualNode); + var after = target ? path.indexOf.call(virtualChildren, target) : -1; + target = document.createComment(UID); + switch (true) { + // `${'virtual'}` is actually resolved as `${'any'}` + // case before < 0 && after < 0: before = 0; + + // `${'virtual'}` + case after < 0: + after = children.length; + break; + // `${'virtual'}` + case before < 0: + before = 0; + // `${'virtual'}` + default: + after = -(virtualChildren.length - after); + break; + } + childNodes.push.apply( + childNodes, + slice.call(children, before, after) + ); + if (childNodes.length) { + insertBefore( + parentNode, + target, + nextElementSibling(childNodes[childNodes.length - 1]) + ); + } else { + insertBefore( + parentNode, + target, + slice.call(children, after)[0] + ); + } + if (childNodes.length === 0) { + removePreviousText(parentNode, target); + } + break; + default: + // if the node is not there, create it + target = getChildren(parentNode)[path[i]] || + parentNode.appendChild( + parentNode.ownerDocument.createElement( + getNode(virtual, path.slice(0, i + 1)).nodeName + ) + ); + parentNode = target; + break; + } + } + return target; + } + + // like createUpdates but for nodes with already a content + function discoverUpdates(fragment, paths) { + for (var + info, childNodes, + updates = [], + removeAttributes = [], + i = 0, length = paths.length; + i < length; i++ + ) { + childNodes = []; + info = paths[i]; + updates[i] = setContent( + info, + discoverNode(this, fragment, info, childNodes), + removeAttributes, + childNodes + ); + } + removeAttributeList(removeAttributes); + return updates; + } + // --------------------------------------------- // Template related utilities // --------------------------------------------- @@ -1119,40 +1067,18 @@ var hyperHTML = (function (globalDocument) {'use strict'; // whenever the next interpolation happens function createUpdates(fragment, paths) { for (var - info, target, + info, updates = [], removeAttributes = [], i = 0, length = paths.length; i < length; i++ ) { - info = paths[i]; - target = getNode(fragment, info.path); - if (target.nodeType === DOCUMENT_FRAGMENT_NODE) { - removeNodeList(target.childNodes, 0); - target = this; - } - updates[i] = setContent(info, target, removeAttributes, []); - } - removeAttributeList(removeAttributes); - return updates; - } - - // like createUpdates but for nodes with already a content - function discoverUpdates(fragment, paths) { - for (var - info, childNodes, - updates = [], - removeAttributes = [], - i = 0, length = paths.length; - i < length; i++ - ) { - childNodes = []; info = paths[i]; updates[i] = setContent( info, - discoverNode(this, fragment, info, childNodes), + getNode(fragment, info.path), removeAttributes, - childNodes + [] ); } removeAttributeList(removeAttributes); @@ -1176,7 +1102,8 @@ var hyperHTML = (function (globalDocument) {'use strict'; if (notAdopting) { var fragment = cloneNode(info.fragment); updates = createUpdates.call(this, fragment, info.paths); - resetAndPopulate(this, fragment); + this.textContent = ''; + this.appendChild(fragment); } else { updates = discoverUpdates.call(this, info.fragment, info.paths); } @@ -1266,12 +1193,23 @@ var hyperHTML = (function (globalDocument) {'use strict'; return wire[id] || (wire[id] = wireContent(type)); } + // avoid processing too many nodes + // this is about the algorithm used + // to calculate the least amount of DOM + // changes needed to show the a new list + // where there was another one. + // There is a limit, in terms of performance, + // on how big can the optimal computation be, + // so if you change this value be sure your + // target hardware is good enough. + hyper.MAX_LIST_SIZE = 1000; + // --------------------------------------------- // ⚡️ ️️The End ➰ // --------------------------------------------- return hyper; -}(document)); +}(document/*!majinbuu*/)); // umd.KISS try { module.exports = hyperHTML; } catch(o_O) {} \ No newline at end of file diff --git a/index.js b/index.js new file mode 100644 index 00000000..102f3b71 --- /dev/null +++ b/index.js @@ -0,0 +1,1405 @@ +var hyperHTML = (function (globalDocument, majinbuu) {'use strict'; + + /*! (c) 2017 Andrea Giammarchi @WebReflection, (ISC) */ + + // --------------------------------------------- + // hyperHTML Public API + // --------------------------------------------- + + // The document must be swap-able at runtime. + // Needed by both basicHTML and nativeHTML + hyper.document = globalDocument; + + // friendly destructuring + hyper.hyper = hyper; + + function hyper(HTML) { + return arguments.length < 2 ? + (HTML == null ? + wireContent('html') : + (typeof HTML === 'string' ? + wire(null, HTML) : + ('raw' in HTML ? + wireContent('html')(HTML) : + ('nodeType' in HTML ? + bind(HTML) : + wireWeakly(HTML, 'html') + ) + ) + )) : + ('raw' in HTML ? + wireContent('html') : wire + ).apply(null, arguments); + } + + // hyper.adopt(el) 🐣 + // import an already live DOM structure + // described as TL + hyper.adopt = function adopt(node) { + return function () { + notAdopting = false; + render.apply(node, arguments); + notAdopting = true; + return node; + }; + }; + + // hyper.bind(el) ⚡️ + // render TL inside a DOM node used as context + hyper.bind = bind; + function bind(context) { return render.bind(context); } + + // hyper.define('transformer', callback) 🌀 + hyper.define = function define(transformer, callback) { + transformers[transformer] = callback; + }; + + // hyper.escape('') => '<text>' 🏃 + hyper.escape = function escape(html) { + return html.replace(/[&<>'"]/g, fnEscape); + }; + + // hyper.wire(obj, 'type:ID') ➰ + // relate a renderer to a generic object + hyper.wire = wire; + function wire(obj, type) { + return arguments.length < 1 ? + wireContent('html') : + (obj == null ? + wireContent(type || 'html') : + wireWeakly(obj, type || 'html') + ); + } + + // hyper.Component([initialState]) 🍻 + // An overly-simplified Component class. + // For full Custom Elements support + // see HyperHTMLElement instead. + hyper.Component = Component; + function Component() {} + Object.defineProperties( + Component.prototype, + { + // same as HyperHTMLElement handleEvent + handleEvent: {value: function (e) { + // both IE < 11 and JSDOM lack dataset + var ct = e.currentTarget; + this[ + ('getAttribute' in ct && ct.getAttribute('data-call')) || + ('on' + e.type) + ](e); + }}, + // returns its own HTML wire or create it once on comp.render() + html: lazyGetter('html', wireContent), + // returns its own SVG wire or create it once on comp.render() + svg: lazyGetter('svg', wireContent), + // same as HyperHTMLElement state + state: lazyGetter('state', function () { return this.defaultState; }), + // same as HyperHTMLElement get defaultState + defaultState: {get: function () { return {}; }}, + // same as HyperHTMLElement setState + setState: {value: function (state) { + var target = this.state; + var source = typeof state === 'function' ? state.call(this, target) : state; + for (var key in source) target[key] = source[key]; + this.render(); + }} + // the render must be defined when extending hyper.Component + // the render **must** return either comp.html or comp.svg wire + // render() { return this.html`

    that's it

    `; } + } + ); + + // - - - - - - - - - - - - - - - - - - - - - - - + + // --------------------------------------------- + // Constants + // --------------------------------------------- + + // Node.CONSTANTS + // without assuming Node is globally available + // since this project is used on the backend too + var ELEMENT_NODE = 1; + var ATTRIBUTE_NODE = 2; + var TEXT_NODE = 3; + var COMMENT_NODE = 8; + var DOCUMENT_FRAGMENT_NODE = 11; + + // SVG related + var OWNER_SVG_ELEMENT = 'ownerSVGElement'; + var SVG_NAMESPACE = 'http://www.w3.org/2000/svg'; + + var SHOULD_USE_ATTRIBUTE = /^style$/i; + var EXPANDO = '_hyper: '; + var UID = EXPANDO + ((Math.random() * new Date) | 0) + ';'; + var UIDC = ''; + + // --------------------------------------------- + // DOM Manipulation + // --------------------------------------------- + + function Aura(node, childNodes) { + this.node = node; + this.childNodes = childNodes; + return majinbuu.aura(this, childNodes); + } + + Aura.prototype.splice = function splice(start, deleteCount) { + for (var + tmp, + i = start, + ph = this.node, + cn = this.childNodes, + pn = ph.parentNode, + length = cn.length, + end = deleteCount == null ? length : (start + deleteCount); + i < length && i < end; i++ + ) { + pn.removeChild(cn[i]); + } + i = 2; + length = arguments.length; + if (i < length) { + if ((length - i) === 1) { + tmp = arguments[i]; + } else { + tmp = createDocumentFragment(pn.ownerDocument); + while (i < length) { + tmp.appendChild(arguments[i++]); + } + } + pn.insertBefore(tmp, cn[end] || ph); + } + return cn.splice.apply(cn, arguments); + }; + + // --------------------------------------------- + // hyperHTML Operations + // --------------------------------------------- + + // entry point for all TL => DOM operations + function render(template) { + var hyper = hypers.get(this); + if ( + !hyper || + hyper.template !== TL(template) + ) { + hyper = upgrade.apply(this, arguments); + hypers.set(this, hyper); + } + update.apply(hyper.updates, arguments); + return this; + } + + // `
    ` + // `
    ` + // `
    ` + // `
    ` + function setAttribute(attribute, removeAttributes, name) { + var + node = attribute.ownerElement, + isEvent = /^on/.test(name), + isSpecial = name === 'data' || + (isSpecialAttribute(node, name) && + !SHOULD_USE_ATTRIBUTE.test(name)), + type = isEvent ? name.slice(2) : '', + noOwner = isEvent || isSpecial, + oldValue + ; + if (isEvent && name.toLowerCase() in node) type = type.toLowerCase(); + if (noOwner) removeAttributes.push(node, name); + return isEvent ? + function eventAttr(newValue) { + if (oldValue !== newValue) { + if (oldValue) node.removeEventListener(type, oldValue, false); + oldValue = newValue; + if (newValue) node.addEventListener(type, newValue, false); + } + } : + (isSpecial ? + function specialAttr(newValue) { + if (oldValue !== newValue) { + oldValue = newValue; + // WebKit moves the cursor if input.value + // is set again, even if same value + if (node[name] !== newValue) { + // let the browser handle the case + // input.value = null; + // input.value; // '' + if (newValue == null) { + // reflect the null intent, + // do not pass undefined! + node[name] = null; + node.removeAttribute(name); + } else { + node[name] = newValue; + } + } + } + } : + function normalAttr(newValue) { + if (oldValue !== newValue) { + oldValue = newValue; + // avoid triggering again attributeChangeCallback + // if the value was identical + if (attribute.value !== newValue) { + if (newValue == null) { + if (!noOwner) { + // TODO: should attribute.value = null here? + noOwner = true; + node.removeAttributeNode(attribute); + } + } else { + attribute.value = newValue; + if (noOwner) { + noOwner = false; + node.setAttributeNode(attribute); + } + } + } + } + } + ); + } + + // `` + function setTextContent(node) { + var oldValue; + return function (value) { + if (value !== oldValue) { + oldValue = value; + node.textContent = value; + } + }; + } + + // `

    ${'any'}

    ` + // `
  • a
  • ${'virtual'}
  • c
  • ` + function setAnyContent(node, childNodes, aura) { + var oldValue; + return function anyContent(value) { + switch (typeof value) { + case 'string': + case 'number': + case 'boolean': + var length = childNodes.length; + if ( + length === 1 && + childNodes[0].nodeType === TEXT_NODE + ) { + if (oldValue !== value) { + oldValue = value; + childNodes[0].textContent = value; + } + } else { + oldValue = value; + if (length) { + aura.splice(0, length, createText(node, value)); + } else { + childNodes[0] = node.parentNode.insertBefore( + createText(node, value), + node + ); + } + } + break; + case 'function': + anyContent(value(node.parentNode, childNodes, 0)); + break; + case 'object': + case 'undefined': + if (value == null) { + oldValue = value; + anyContent(''); + break; + } else if (value instanceof Component) { + value = value.render(); + } + default: + oldValue = value; + if (isArray(value)) { + var length = value.length; + if (length === 0) { + aura.splice(0); + } else { + switch (typeof value[0]) { + case 'string': + case 'number': + case 'boolean': + anyContent({html: value}); + break; + case 'function': + var parentNode = node.parentNode; + for (var i = 0; i < length; i++) { + value[i] = value[i](parentNode, childNodes, i); + } + anyContent(value.concat.apply([], value)); + break; + case 'object': + if (isArray(value[0])) { + value = value.concat.apply([], value); + } + if (isPromise_ish(value[0])) { + Promise.all(value).then(anyContent); + break; + } else { + for (var i = 0, length = value.length; i < length; i++) { + if (value[i] instanceof Component) { + value[i] = value[i].render(); + } + } + } + default: + majinbuu(aura, value, hyper.MAX_LIST_SIZE); + break; + } + } + } else if (isNode_ish(value)) { + majinbuu( + aura, + value.nodeType === DOCUMENT_FRAGMENT_NODE ? + slice.call(value.childNodes) : + [value], + hyper.MAX_LIST_SIZE + ); + } else if (isPromise_ish(value)) { + value.then(anyContent); + } else if ('placeholder' in value) { + invokeAtDistance(anyContent, value); + } else if ('text' in value) { + anyContent(String(value.text)); + } else if ('any' in value) { + anyContent(value.any); + } else if ('html' in value) { + var html = [].concat(value.html).join(''); + aura.splice(0); + var fragment = createFragment(node, html); + childNodes.push.apply(childNodes, fragment.childNodes); + node.parentNode.insertBefore(fragment, node); + } else if ('length' in value) { + anyContent(slice.call(value)); + } else { + anyContent(invokeTransformer(value)); + } + break; + } + }; + } + + // --------------------------------------------- + // DOM Traversing + // --------------------------------------------- + + // look for attributes that contains the comment text + function attributesSeeker(node, paths, parts) { + for (var + name, + attribute, + value = UID, + attributes = node.attributes, + i = 0, length = attributes.length; + i < length; i++ + ) { + attribute = attributes[i]; + if (attribute.value === value) { + name = parts.shift().replace(/^(?:|[\S\s]*?\s)(\S+?)=['"]?$/, '$1'); + paths.push( + Path( + 'attr', + // this is needed in both jsdom + // and in not-so-standard browsers/engines + node.attributes[name.toLowerCase()], + name + ) + ); + } + } + } + + // walk the fragment tree in search of comments + function hyperSeeker(node, paths, parts) { + for (var + child, + childNodes = node.childNodes, + length = childNodes.length, + i = 0; i < length; i++ + ) { + child = childNodes[i]; + switch (child.nodeType) { + case ELEMENT_NODE: + attributesSeeker(child, paths, parts); + hyperSeeker(child, paths, parts); + break; + case COMMENT_NODE: + if (child.textContent === UID) { + parts.shift(); + paths.push(Path('any', child)); + } + break; + case TEXT_NODE: + if ( + SHOULD_USE_ATTRIBUTE.test(node.nodeName) && + trim.call(child.textContent) === UIDC + ) { + parts.shift(); + paths.push(Path('text', node)); + } + break; + } + } + } + + // --------------------------------------------- + // Features detection / ugly UA sniffs + // --------------------------------------------- + var featureFragment = createDocumentFragment(globalDocument); + + // Firefox < 55 has non standard template literals. + // https://bugzilla.mozilla.org/show_bug.cgi?id=1108941 + // TODO: is there any better way to feature detect this ? + var FF = typeof navigator === 'object' && + /Firefox\/(\d+)/.test(navigator.userAgent) && + parseFloat(RegExp.$1) < 55; + + // If attributes order is shuffled, threat the browser differently + // Usually this is a well known IE only limitation but some older FF does the same. + var IE = (function () { + var p = globalDocument.createElement('p'); + p.innerHTML = ''; + return /class/i.test(p.firstChild.attributes[0].name); + }()); + + + // beside IE, old WebKit browsers don't have `children` in DocumentFragment + var WK = !('children' in featureFragment); + + // both Firefox < 55 and TypeScript have issues with template literals + // this lazy defined callback should spot issues right away + // and in the best case scenario become a no-op + var TL = function (template) { + if (template.propertyIsEnumerable('raw') || FF) TL = unique; + else TL = function (t) { return t; }; + return TL(template); + }; + + // --------------------------------------------- + // Helpers + // --------------------------------------------- + + // used to convert childNodes to Array + var slice = [].slice; + + // used to sanitize html + var oEscape = { + '&': '&', + '<': '<', + '>': '>', + "'": ''', + '"': '"' + }; + function fnEscape(m) { + return oEscape[m]; + } + + // return content as html + function asHTML(html) { + return {html: html}; + } + + // return a single node or an Array or nodes + function createContent(node) { + for (var + child, + content = [], + childNodes = node.childNodes, + i = 0, + length = childNodes.length; + i < length; i++ + ) { + child = childNodes[i]; + if ( + child.nodeType === ELEMENT_NODE || + trim.call(child.textContent).length !== 0 + ) { + content.push(child); + } + } + return content.length === 1 ? content[0] : content; + } + + // just a minifier friendly indirection + function createDocumentFragment(document) { + return document.createDocumentFragment(); + } + + // given a node, inject some html and return + // the resulting template document fragment + function createFragment(node, html) { + return ( + OWNER_SVG_ELEMENT in node ? + createSVGFragment : + createHTMLFragment + )(node, html.replace(no, comments)); + } + + // create fragment for HTML + function createHTMLFragment(node, html) { + var fragment; + var document = node.ownerDocument; + var container = document.createElement('template'); + var hasContent = 'content' in container; + var needsTableWrap = false; + if (!hasContent) { + // DO NOT MOVE THE FOLLOWING LINE ELSEWHERE + fragment = createDocumentFragment(document); + // (a jsdom + nodejs tests coverage gotcha) + + // el.innerHTML = ''; is not possible + // if the content is a partial internal table content + // it needs to be wrapped around once injected. + // HTMLTemplateElement does not suffer this issue. + needsTableWrap = /^[^\S]*?<(col(?:group)?|t(?:head|body|foot|r|d|h))/i.test(html); + } + if (needsTableWrap) { + // secure the RegExp.$1 result ASAP to avoid issues + // in case a non-browser DOM library uses RegExp internally + // when HTML content is injected (basicHTML / jsdom / others...) + var selector = RegExp.$1; + container.innerHTML = '' + html + '
    '; + appendNodes(fragment, slice.call(container.querySelectorAll(selector))); + } else { + container.innerHTML = html; + if (hasContent) { + fragment = container.content; + } else { + appendNodes(fragment, slice.call(container.childNodes)); + } + } + return fragment; + } + + // create a fragment for SVG + function createSVGFragment(node, html) { + var document = node.ownerDocument; + var fragment = createDocumentFragment(document); + if (IE || WK) { + var container = document.createElement('div'); + container.innerHTML = '' + html + ''; + appendNodes(fragment, slice.call(container.firstChild.childNodes)); + } else { + var container = document.createElementNS(SVG_NAMESPACE, 'svg'); + container.innerHTML = html; + appendNodes(fragment, slice.call(container.childNodes)); + } + return fragment; + } + + // given a node, it does what is says + function createText(node, text) { + return node.ownerDocument.createTextNode(text); + } + + // returns current customElements reference + // compatible with basicHTML too + function getCEClass(node) { + var doc = hyper.document; + var ce = doc.customElements || doc.defaultView.customElements; + return ce && ce.get(node.nodeName.toLowerCase()); + } + + // verify that an attribute has + // a special meaning for the node + function isSpecialAttribute(node, name) { + var notSVG = !(OWNER_SVG_ELEMENT in node); + if (notSVG && /-/.test(node.nodeName)) { + var Class = getCEClass(node); + if (Class) node = Class.prototype; + } + return notSVG && name in node; + } + + // use a placeholder and resolve with the right callback + function invokeAtDistance(callback, value) { + callback(value.placeholder); + if ('text' in value) { + Promise.resolve(value.text).then(String).then(callback); + } else if ('any' in value) { + Promise.resolve(value.any).then(callback); + } else if ('html' in value) { + Promise.resolve(value.html).then(asHTML).then(callback); + } else { + Promise.resolve(invokeTransformer(value)).then(callback); + } + } + + // last attempt to transform content + function invokeTransformer(object) { + for (var key in transformers) { + if (object.hasOwnProperty(key)) { + return transformers[key](object[key]); + } + } + } + + // quick and dirty Node check + function isNode_ish(value) { + return 'ELEMENT_NODE' in value; + } + + // quick and dirty Promise check + function isPromise_ish(value) { + return value != null && 'then' in value; + } + + // return a descriptor that lazily initialize a property + // unless it hasn't be previously set directly + function lazyGetter(type, fn) { + var secret = '_' + type + '$'; + return { + get: function () { + return this[secret] || (this[type] = fn.call(this, type)); + }, + set: function (value) { + defineProperty(this, secret, {configurable: true, value: value}); + } + }; + } + + // remove a list of [node, attribute] + function removeAttributeList(list) { + for (var i = 0, length = list.length; i < length; i++) { + list[i++].removeAttribute(list[i]); + } + } + + // specify the content to update + function setContent(info, target, removeAttributes, childNodes) { + var update; + switch (info.type) { + case 'any': + // TODO: don't pass the target, it shouldn't be needed + update = setAnyContent(target, childNodes, new Aura(target, childNodes)); + break; + case 'attr': + update = setAttribute(target, removeAttributes, info.name); + break; + case 'text': + update = setTextContent(target); + break; + } + return update; + } + + // used for common path creation. + function Path(type, node, name) { + return {type: type, path: createPath(node), name: name}; + } + + // --------------------------------------------- + // Hybrid Shims + // --------------------------------------------- + + // WeakMap with partial EXPANDO fallback + var $WeakMap = typeof WeakMap === typeof $WeakMap ? + function () { + return { + get: function (obj) { return obj[EXPANDO]; }, + set: function (obj, value) { + Object.defineProperty(obj, EXPANDO, { + configurable: true, + value: value + }); + } + }; + } : + WeakMap; + + // Map with partial double Array fallback + var $Map = typeof Map === typeof $Map ? + function () { + var k = [], v = []; + return { + get: function (obj) { + return v[k.indexOf(obj)]; + }, + // being used with unique template literals + // there is never a case when a value is overwritten + // no need to check upfront for the indexOf + set: function (obj, value) { + v[k.push(obj) - 1] = value; + } + }; + } : + Map; + + // TODO: which browser needs these partial polyfills here? + + // BB7 and webOS need this + var isArray = Array.isArray || + (function () { + var toString = {}.toString; + // I once had an engine returning [array Array] + // and I've got scared since! + var s = toString.call([]); + return function (a) { + return toString.call(a) === s; + }; + }()); + + // older WebKit need this + var trim = EXPANDO.trim || + function () { return this.replace(/^\s+|\s+$/g, ''); }; + + // --------------------------------------------- + // Shared variables + // --------------------------------------------- + + // recycled defineProperty shortcut + var defineProperty = Object.defineProperty; + + // transformers registry + var transformers = {}; + + // normalize Firefox issue with template literals + var templateObjects = {}, unique; + function unique(template) { + var key = '_' + template.join(UIDC); + return templateObjects[key] || + (templateObjects[key] = template); + } + + // use native .append(...childNodes) where available + var appendNodes = 'append' in featureFragment ? + function (node, childNodes) { + node.append.apply(node, childNodes); + } : + function appendNodes(node, childNodes) { + for (var + i = 0, + length = childNodes.length; + i < length; i++ + ) { + node.appendChild(childNodes[i]); + } + }; + + // returns children or retrieve them in IE/Edge + var getChildren = WK || IE ? + function (node) { + for (var + child, + children = [], + childNodes = node.childNodes, + j = 0, i = 0, length = childNodes.length; + i < length; i++ + ) { + child = childNodes[i]; + if (child.nodeType === ELEMENT_NODE) + children[j++] = child; + } + return children; + } : + function (node) { return node.children; }; + + // return the correct node walking through a path + // fixes IE/Edge issues with attributes and children (fixes old WebKit too) + var getNode = IE || WK ? + function (parentNode, path) { + for (var name, i = 0, length = path.length; i < length; i++) { + name = path[i++]; + switch (name) { + case 'children': + parentNode = getChildren(parentNode)[path[i]]; + break; + default: + parentNode = parentNode[name][path[i]]; + break; + } + } + return parentNode; + } : + function (parentNode, path) { + for (var i = 0, length = path.length; i < length; i++) { + parentNode = parentNode[path[i++]][path[i]]; + } + return parentNode; + }; + + // sanitizes interpolations as comments + var no = /(<[a-z]+[a-z0-9:_-]*)((?:[^\S]+[a-z0-9:_-]+(?:=(?:'.*?'|".*?"|<.+?>|\S+))?)+)([^\S]*\/?>)/gi; + var findAttributes = new RegExp('([^\\S][a-z]+[a-z0-9:_-]*=)([\'"]?)' + UIDC + '\\2', 'gi'); + var comments = function ($0, $1, $2, $3) { + return $1 + $2.replace(findAttributes, replaceAttributes) + $3; + }; + + var replaceAttributes = function ($0, $1, $2) { + return $1 + ($2 || '"') + UID + ($2 || '"'); + }; + + // [element] = {template, updates}; + var hypers = new $WeakMap; + + // [element] = {template, updates}; + var wires = new $WeakMap; + + // [template] = {fragment, paths}; + var templates = new $Map; + + // internal signal to switch adoption + var notAdopting = true; + + // IE 11 has problems with cloning templates too + // it "forgets" empty childNodes + var cloneNode = (function () { + featureFragment.appendChild(createText(featureFragment, 'g')); + featureFragment.appendChild(createText(featureFragment, '')); + return featureFragment.cloneNode(true).childNodes.length === 1 ? + function (node) { + for (var + clone = node.cloneNode(), + childNodes = node.childNodes || [], + i = 0, length = childNodes.length; + i < length; i++ + ) { + clone.appendChild(cloneNode(childNodes[i])); + } + return clone; + } : + function (fragment) { + return fragment.cloneNode(true); + }; + }()); + + // --------------------------------------------- + // Adopting Nodes + // --------------------------------------------- + + // IE/Edge gotcha with comment nodes + var nextElementSibling = IE ? + function (node) { + while (node = node.nextSibling) { + if (node.nodeType === ELEMENT_NODE) return node; + } + return undefined; + } : + function (node) { return node.nextElementSibling; }; + + var previousElementSibling = IE ? + function (node) { + while (node = node.previousSibling) { + if (node.nodeType === ELEMENT_NODE) return node; + } + return undefined; + } : + function (node) { return node.previousElementSibling; }; + + // remove all text nodes from a virtual space + function removePreviousText(parentNode, node) { + var previousSibling = node.previousSibling; + if (previousSibling && previousSibling.nodeType === TEXT_NODE) { + parentNode.removeChild(previousSibling); + removePreviousText(parentNode, node); + } + } + + // avoid errors on obsolete platforms + function insertBefore(parentNode, target, after) { + if (after) { + parentNode.insertBefore(target, after); + } else { + parentNode.appendChild(target); + } + } + + // given an info, tries to find out the best option + // to replace or update the content + function discoverNode(parentNode, virtual, info, childNodes) { + for (var + target = parentNode, + document = parentNode.ownerDocument, + path = info.path, + virtualNode = getNode(virtual, path), + i = 0, + length = path.length; + i < length; i++ + ) { + switch (path[i++]) { + case 'attributes': + var name = virtualNode.name; + if (!parentNode.hasAttribute(name)) { + parentNode.setAttribute(name, ''); + } + target = parentNode.attributes[name]; + break; + case 'childNodes': + var children = getChildren(parentNode); + var virtualChildren = getChildren(virtualNode.parentNode); + target = previousElementSibling(virtualNode); + var before = target ? (path.indexOf.call(virtualChildren, target) + 1) : -1; + target = nextElementSibling(virtualNode); + var after = target ? path.indexOf.call(virtualChildren, target) : -1; + target = document.createComment(UID); + switch (true) { + // `${'virtual'}` is actually resolved as `${'any'}` + // case before < 0 && after < 0: before = 0; + + // `${'virtual'}` + case after < 0: + after = children.length; + break; + // `${'virtual'}` + case before < 0: + before = 0; + // `${'virtual'}` + default: + after = -(virtualChildren.length - after); + break; + } + childNodes.push.apply( + childNodes, + slice.call(children, before, after) + ); + if (childNodes.length) { + insertBefore( + parentNode, + target, + nextElementSibling(childNodes[childNodes.length - 1]) + ); + } else { + insertBefore( + parentNode, + target, + slice.call(children, after)[0] + ); + } + if (childNodes.length === 0) { + removePreviousText(parentNode, target); + } + break; + default: + // if the node is not there, create it + target = getChildren(parentNode)[path[i]] || + parentNode.appendChild( + parentNode.ownerDocument.createElement( + getNode(virtual, path.slice(0, i + 1)).nodeName + ) + ); + parentNode = target; + break; + } + } + return target; + } + + // like createUpdates but for nodes with already a content + function discoverUpdates(fragment, paths) { + for (var + info, childNodes, + updates = [], + removeAttributes = [], + i = 0, length = paths.length; + i < length; i++ + ) { + childNodes = []; + info = paths[i]; + updates[i] = setContent( + info, + discoverNode(this, fragment, info, childNodes), + removeAttributes, + childNodes + ); + } + removeAttributeList(removeAttributes); + return updates; + } + + // --------------------------------------------- + // Template related utilities + // --------------------------------------------- + + // given a unique template object + // create, parse, and store retrieved info + function createTemplate(template) { + var paths = []; + var fragment = createFragment(this, template.join(UIDC)); + var info = {fragment: fragment, paths: paths}; + hyperSeeker(fragment, paths, template.slice()); + templates.set(template, info); + return info; + } + + // given a generic node, returns a path capable + // of retrieving such path back again. + // TODO: worth passing the index when available ? + function createPath(node) { + var path = []; + var parentNode; + switch(node.nodeType) { + case ELEMENT_NODE: + case DOCUMENT_FRAGMENT_NODE: + parentNode = node; + break; + case COMMENT_NODE: + parentNode = node.parentNode; + path.unshift( + 'childNodes', + path.indexOf.call(parentNode.childNodes, node) + ); + break; + case ATTRIBUTE_NODE: + default: // jsdom here does not provide a nodeType 2 ... + parentNode = node.ownerElement; + path.unshift('attributes', node.name); + break; + } + for ( + node = parentNode; + parentNode = parentNode.parentNode; + node = parentNode + ) { + path.unshift('children', path.indexOf.call(getChildren(parentNode), node)); + } + return path; + } + + // given a root node and a list of paths + // creates an array of updates to invoke + // whenever the next interpolation happens + function createUpdates(fragment, paths) { + for (var + info, + updates = [], + removeAttributes = [], + i = 0, length = paths.length; + i < length; i++ + ) { + info = paths[i]; + updates[i] = setContent( + info, + getNode(fragment, info.path), + removeAttributes, + [] + ); + } + removeAttributeList(removeAttributes); + return updates; + } + + // invokes each update function passing interpolated value + function update() { + for (var i = 1, length = arguments.length; i < length; i++) { + this[i - 1](arguments[i]); + } + } + + // create a template, if unknown + // upgrade a node to use such template for future updates + function upgrade(template) { + template = TL(template); + var updates; + var info = templates.get(template) || + createTemplate.call(this, template); + if (notAdopting) { + var fragment = cloneNode(info.fragment); + updates = createUpdates.call(this, fragment, info.paths); + this.textContent = ''; + this.appendChild(fragment); + } else { + updates = discoverUpdates.call(this, info.fragment, info.paths); + } + return {template: template, updates: updates}; + } + + // --------------------------------------------- + // Wires + // --------------------------------------------- + + // create a new wire for generic DOM content + function wireContent(type) { + var adopter, content, container, fragment, render, setup, template; + + function before(document) { + fragment = createDocumentFragment(document); + container = type === 'svg' ? + document.createElementNS(SVG_NAMESPACE, 'svg') : + fragment; + render = bind(container); + } + + function after() { + if (setup) { + setup = false; + if (type === 'svg') { + appendNodes(fragment, slice.call(container.childNodes)); + } + content = createContent(fragment); + } + return content; + } + + return type === 'adopt' ? + function adopt(statics) { + var args = arguments; + statics = TL(statics); + if (template !== statics) { + setup = true; + template = statics; + adopter = function (parentNode, children, i) { + if (setup) { + if (i < children.length) { + container = children[i]; + fragment = { + ownerDocument: container.ownerDocument, + childNodes: [container], + children: [container] + }; + render = hyper.adopt(fragment); + } else { + if (OWNER_SVG_ELEMENT in parentNode) type = 'svg'; + before(parentNode.ownerDocument); + } + } + render.apply(null, args); + return after(); + }; + } + return adopter; + } : + function update(statics) { + statics = TL(statics); + if (template !== statics) { + setup = true; + template = statics; + before(hyper.document); + } + render.apply(null, arguments); + return after(); + }; + } + + // setup a weak reference if needed and return a wire by ID + function wireWeakly(obj, type) { + var wire = wires.get(obj); + var i = type.indexOf(':'); + var id = type; + if (-1 < i) { + id = type.slice(i + 1); + type = type.slice(0, i) || 'html'; + } + if (!wire) { + wire = {}; + wires.set(obj, wire); + } + return wire[id] || (wire[id] = wireContent(type)); + } + + // avoid processing too many nodes + // this is about the algorithm used + // to calculate the least amount of DOM + // changes needed to show the a new list + // where there was another one. + // There is a limit, in terms of performance, + // on how big can the optimal computation be, + // so if you change this value be sure your + // target hardware is good enough. + hyper.MAX_LIST_SIZE = 1000; + + // --------------------------------------------- + // ⚡️ ️️The End ➰ + // --------------------------------------------- + return hyper; + +}(document, function () {'use strict'; + + /*! Copyright (c) 2017, Andrea Giammarchi, @WebReflection */ + + // grid operations + var + DELETE = 'del', + INSERT = 'ins', + SUBSTITUTE = 'sub', + TypedArray = /^u/.test(typeof Int32Array) ? Array : Int32Array + ; + + // readapted from: + // http://webreflection.blogspot.co.uk/2009/02/levenshtein-algorithm-revisited-25.html + function majinbuu(from, to, MAX_SIZE) { + var + fromLength = from.length, + toLength = to.length, + TOO_MANY = (MAX_SIZE || Infinity) < Math.sqrt(fromLength * toLength) + ; + if (fromLength < 1 || TOO_MANY) { + if (toLength || TOO_MANY) { + from.splice.apply(from, [0, fromLength].concat(to)); + } + return; + } + if (toLength < 1) { + from.splice(0); + return; + } + performOperations( + from, + getOperations(from, to, levenstein(from, to)) + ); + } + + // given an object that would like to intercept + // all splice operations performed through a list, + // wraps the list.splice method to delegate such object + // and it puts back original splice right before + // every invocation. + // Note: do not use the same list in two different aura + majinbuu.aura = function aura(splicer, list) { + var splice = list.splice; + list.splice = function hodor() { + list.splice = splice; + var result = splicer.splice.apply(splicer, arguments); + list.splice = hodor; + return result; + }; + return list; + }; + + return majinbuu; + + // Helpers - - - - - - - - - - - - - - - - - - - - - - + + // originally readapted from: + // http://webreflection.blogspot.co.uk/2009/02/levenshtein-algorithm-revisited-25.html + // then rewritten in C for Emscripten (see levenstein.c) + // then "screw you ASM" due no much gain but very bloated code + function levenstein(from, to) { + var fromLength = from.length + 1; + var toLength = to.length + 1; + var size = fromLength * toLength; + var x = 0; + var y = 0; + var X = 0; + var Y = 0; + var crow = 0; + var prow = 0; + var del, ins, sub; + var grid = new TypedArray(size); + grid[0] = 0; + while (++x < toLength) grid[x] = x; + while (++y < fromLength) { + X = x = 0; + crow = y * toLength; + prow = Y * toLength; + grid[crow + x] = y; + while (++x < toLength) { + del = grid[prow + x] + 1; + ins = grid[crow + X] + 1; + sub = grid[prow + X] + (from[Y] == to[X] ? 0 : 1); + grid[crow + x] = del < ins ? + (del < sub ? + del : sub) : + (ins < sub ? + ins : sub); + ++X; + }; + ++Y; + } + return grid; + } + + // add operations (in reversed order) + function addOperation(list, type, x, y, count, items) { + list.unshift({ + type: type, + x: x, + y: y, + count: count, + items: items + }); + } + + // walk the Levenshtein grid bottom -> up + function getOperations(Y, X, grid) { + var + list = [], + YL = Y.length + 1, + XL = X.length + 1, + y = YL - 1, + x = XL - 1, + cell, top, left, diagonal, + crow, prow + ; + while (x && y) { + crow = y * XL; + prow = (y - 1) * XL; + cell = grid[crow + x]; + top = grid[prow + x]; + left = grid[crow + x - 1]; + diagonal = grid[prow + x - 1]; + if (diagonal <= left && diagonal <= top && diagonal <= cell) { + x--; + y--; + if (diagonal < cell) { + addOperation(list, SUBSTITUTE, x, y, 1, [X[x]]); + } + } + else if (left <= top && left <= cell) { + x--; + addOperation(list, INSERT, x, y, 0, [X[x]]); + } + else { + y--; + addOperation(list, DELETE, x, y, 1, []); + } + } + while (x--) { + addOperation(list, INSERT, x, y, 0, [X[x]]); + } + while (y--) { + addOperation(list, DELETE, x, y, 1, []); + } + return list; + } + + /* grouped operations */ + function performOperations(target, operations) { + var + diff = 0, + i = 1, + length = operations.length, + curr, prev, op + ; + if (length) { + op = (prev = operations[0]); + while (i < length) { + curr = operations[i++]; + if (prev.type === curr.type && (curr.x - prev.x) <= 1 && (curr.y - prev.y) <= 1) { + op.count += curr.count; + op.items = op.items.concat(curr.items); + } else { + target.splice.apply(target, [op.y + diff, op.count].concat(op.items)); + diff += op.type === INSERT ? + op.items.length : (op.type === DELETE ? + -op.count : 0); + op = curr; + } + prev = curr; + } + target.splice.apply(target, [op.y + diff, op.count].concat(op.items)); + } + } + + /* one-by-one operation (testing purpose) + function performOperations(target, operations) { + for (var op, diff = 0, i = 0, length = operations.length; i < length; i++) { + op = operations[i]; + target.splice.apply(target, [op.y + diff, op.count].concat(op.items)); + diff += op.type === INSERT ? + op.items.length : (op.type === DELETE ? + -op.count : 0); + } + } + // */ + +}())); + +// umd.KISS +try { module.exports = hyperHTML; } catch(o_O) {} \ No newline at end of file diff --git a/majinbuu.js b/majinbuu.js new file mode 100644 index 00000000..725e7e41 --- /dev/null +++ b/majinbuu.js @@ -0,0 +1,12 @@ +var fs = require('fs'); +fs.writeFileSync( + 'index.js', + fs.readFileSync('hyperhtml.js') + .toString() + .replace(/\/\*!([a-z-]+)\*\//g, function ($0, $1) { + return fs.readFileSync(require.resolve($1)) + .toString() + .replace(/^.+?(function\s*\()/, ', $1') + .replace(/(}\(\));[\s\S]*$/, '$1'); + }) +); \ No newline at end of file diff --git a/min.js b/min.js index 03fe1241..670fd5fb 100644 --- a/min.js +++ b/min.js @@ -1,2 +1,3 @@ -var hyperHTML=function(e){"use strict";function t(e){return arguments.length<2?null==e?I("html"):"string"==typeof e?r(null,e):"raw"in e?I("html")(e):"nodeType"in e?n(e):J(e,"html"):("raw"in e?I("html"):r).apply(null,arguments)}function n(e){return s.bind(e)}function r(e,t){return arguments.length<1?I("html"):null==e?I(t||"html"):J(e,t||"html")}function i(){}function o(e,t){for(var n=0,r=e.length,i=t.length;n"+t+"",be(n,se.call(i.querySelectorAll(l)))}else i.innerHTML=t,o?n=i.content:be(n,se.call(i.childNodes));return n}function w(e,t){var n=e.ownerDocument,r=y(n);if(le||ce){var i=n.createElement("div");i.innerHTML=''+t+"",be(r,se.call(i.firstChild.childNodes))}else{var i=n.createElementNS(ee,"svg");i.innerHTML=t,be(r,se.call(i.childNodes))}return r}function x(e,t){return e.ownerDocument.createTextNode(t)}function C(e,t,n,r){for(var i=e,o=e.ownerDocument,a=n.path,l=we(t,a),c=0,u=a.length;c'"]/g,v)},t.wire=r,t.Component=i,Object.defineProperties(i.prototype,{handleEvent:{value:function(e){var t=e.currentTarget;this["getAttribute"in t&&t.getAttribute("data-call")||"on"+e.type](e)}},html:O("html",I),svg:O("svg",I),state:O("state",function(){return this.defaultState}),defaultState:{get:function(){return{}}},setState:{value:function(e){var t=this.state,n="function"==typeof e?e.call(this,t):e;for(var r in n)t[r]=n[r];this.render()}}});var B,K=1,Q=2,U=3,X=8,Y=11,Z="ownerSVGElement",ee="http://www.w3.org/2000/svg",te=/^style$/i,ne="_hyper_html: ",re=ne+(Math.random()*new Date|0)+";",ie="\x3c!--"+re+"--\x3e",oe=y(e),ae="object"==typeof navigator&&/Firefox\/(\d+)/.test(navigator.userAgent)&&parseFloat(RegExp.$1)<55,le=function(){var t=e.createElement("p");return t.innerHTML='',/class/i.test(t.firstChild.attributes[0].name)}(),ce=!("children"in oe),ue=function(e){return(ue=e.propertyIsEnumerable("raw")||ae?B:function(e){return e})(e)},se=[].slice,fe={"&":"&","<":"<",">":">","'":"'",'"':"""},he=typeof WeakMap==typeof he?function(){return{get:function(e){return e[ne]},set:function(e,t){Object.defineProperty(e,ne,{configurable:!0,value:t})}}}:WeakMap,de=typeof Map==typeof de?function(){var e=[],t=[];return{get:function(n){return t[e.indexOf(n)]},set:function(n,r){t[e.push(n)-1]=r}}}:Map,pe=Array.isArray||function(){var e={}.toString,t=e.call([]);return function(n){return e.call(n)===t}}(),ve=ne.trim||function(){return this.replace(/^\s+|\s+$/g,"")},ge=Object.defineProperty,me={},ye={},be="append"in oe?function(e,t){e.append.apply(e,t)}:function(e,t){for(var n=0,r=t.length;n|\S+))?)+)([^\S]*\/?>)/gi,Ce=new RegExp("([^\\S][a-z]+[a-z0-9:_-]*=)(['\"]?)"+ie+"\\2","gi"),Ee=function(e,t,n,r){return t+n.replace(Ce,Te)+r},Te=function(e,t,n){return t+(n||'"')+re+(n||'"')},Se=le?function(e){for(;e=e.nextSibling;)if(e.nodeType===K)return e}:function(e){return e.nextElementSibling},ke=le?function(e){for(;e=e.previousSibling;)if(e.nodeType===K)return e}:function(e){return e.previousElementSibling},Le=new he,Me=new he,Ae=new de,De=!0,Oe=function(){return oe.appendChild(x(oe,"g")),oe.appendChild(x(oe,"")),1===oe.cloneNode(!0).childNodes.length?function(e){for(var t=e.cloneNode(),n=e.childNodes||[],r=0,i=n.length;r"+t+"",pe(n,ie.call(i.querySelectorAll(l)))}else i.innerHTML=t,o?n=i.content:pe(n,ie.call(i.childNodes));return n}function b(e,t){var n=e.ownerDocument,r=g(n);if(te||ne){var i=n.createElement("div");i.innerHTML=''+t+"",pe(r,ie.call(i.firstChild.childNodes))}else{var i=n.createElementNS(J,"svg");i.innerHTML=t,pe(r,ie.call(i.childNodes))}return r}function w(e,t){return e.ownerDocument.createTextNode(t)}function N(e){var t=n.document,r=t.customElements||t.defaultView.customElements;return r&&r.get(e.nodeName.toLowerCase())}function x(e,t){var n=!(G in e);if(n&&/-/.test(e.nodeName)){var r=N(e);r&&(e=r.prototype)}return n&&t in e}function S(e,t){e(t.placeholder),"text"in t?Promise.resolve(t.text).then(String).then(e):"any"in t?Promise.resolve(t.any).then(e):"html"in t?Promise.resolve(t.html).then(d).then(e):Promise.resolve(E(t)).then(e)}function E(e){for(var t in fe)if(e.hasOwnProperty(t))return fe[t](e[t])}function C(e){return"ELEMENT_NODE"in e}function T(e){return null!=e&&"then"in e}function k(e,t){var n="_"+e+"$";return{get:function(){return this[n]||(this[e]=t.call(this,e))},set:function(e){se(this,n,{configurable:!0,value:e})}}}function A(e){for(var t=0,n=e.length;t'"]/g,p)},n.wire=i,n.Component=o,Object.defineProperties(o.prototype,{handleEvent:{value:function(e){var t=e.currentTarget;this["getAttribute"in t&&t.getAttribute("data-call")||"on"+e.type](e)}},html:k("html",q),svg:k("svg",q),state:k("state",function(){return this.defaultState}),defaultState:{get:function(){return{}}},setState:{value:function(e){var t=this.state,n="function"==typeof e?e.call(this,t):e;for(var r in n)t[r]=n[r];this.render()}}});var R=1,X=2,Z=3,V=8,W=11,G="ownerSVGElement",J="http://www.w3.org/2000/svg",K=/^style$/i,Q="_hyper: "+(Math.random()*new Date|0)+";",U="\x3c!--"+Q+"--\x3e";a.prototype.splice=function(e,t){for(var n,r=e,i=this.node,o=this.childNodes,a=i.parentNode,l=o.length,c=null==t?l:e+t;r":">","'":"'",'"':"""},ae=typeof WeakMap==typeof ae?function(){return{get:function(e){return e["_hyper: "]},set:function(e,t){Object.defineProperty(e,"_hyper: ",{configurable:!0,value:t})}}}:WeakMap,le=typeof Map==typeof le?function(){var e=[],t=[];return{get:function(n){return t[e.indexOf(n)]},set:function(n,r){t[e.push(n)-1]=r}}}:Map,ce=Array.isArray||function(){var e={}.toString,t=e.call([]);return function(n){return e.call(n)===t}}(),ue="_hyper: ".trim||function(){return this.replace(/^\s+|\s+$/g,"")},se=Object.defineProperty,fe={},he={},pe="append"in Y?function(e,t){e.append.apply(e,t)}:function(e,t){for(var n=0,r=t.length;n|\S+))?)+)([^\S]*\/?>)/gi,me=new RegExp("([^\\S][a-z]+[a-z0-9:_-]*=)(['\"]?)"+U+"\\2","gi"),ye=function(e,t,n,r){return t+n.replace(me,be)+r},be=function(e,t,n){return t+(n||'"')+Q+(n||'"')},we=new ae,Ne=new ae,xe=new le,Se=!0,Ee=function(){return Y.appendChild(w(Y,"g")),Y.appendChild(w(Y,"")),1===Y.cloneNode(!0).childNodes.length?function(e){for(var t=e.cloneNode(),n=e.childNodes||[],r=0,i=n.length;r + src="../index.js">
    before diff --git a/test/basic.html b/test/basic.html index 9f98ee22..b5bd75e4 100644 --- a/test/basic.html +++ b/test/basic.html @@ -7,7 +7,7 @@ document.write(' - + + - +
    diff --git a/test/ie/index.html b/test/ie/index.html index 9daf942d..ea692584 100644 --- a/test/ie/index.html +++ b/test/ie/index.html @@ -50,6 +50,6 @@

    results in console

    if (!window.Promise) window.Promise = ES6Promise; - + \ No newline at end of file diff --git a/test/ie/test/test.js b/test/ie/test/test.js index d49f677a..d3bb702c 100644 --- a/test/ie/test/test.js +++ b/test/ie/test/test.js @@ -76,7 +76,7 @@ tressa.title('HyperHTML'); tressa.assert(typeof hyperHTML === 'function', 'hyperHTML is a function'); try { - tressa.log(1); + tressa.log(''); } catch (e) { tressa.log = console.log.bind(console); } @@ -91,35 +91,42 @@ tressa.async(function (done) { }) */ tressa.async(function (done) { - tressa.log('## injecting text and attributes'); - var i = 0; - var div = document.body.appendChild(document.createElement('div')); - var render = hyperHTML.bind(div); - function update(i) { - return render(_templateObject, i, - // IE Edge mobile did something funny here - // as template string returned xxx.xxxx - // but as innerHTML returned xxx.xx - (Math.random() * new Date()).toFixed(2)); - } - function compare(html) { - return (/^\s*

    \s*Time: \d+\.\d+<[^>]+?>\s*<\/p>\s*$/i.test(html) - ); - } - var html = update(i++).innerHTML; - var p = div.querySelector('p'); - var attr = p.attributes[0]; - tressa.assert(compare(html), 'correct HTML'); - tressa.assert(html === div.innerHTML, 'correctly returned'); - setTimeout(function () { - tressa.log('## updating same nodes'); + try { + var update = function update(i) { + return render(_templateObject, i, + // IE Edge mobile did something funny here + // as template string returned xxx.xxxx + // but as innerHTML returned xxx.xx + (Math.random() * new Date()).toFixed(2)); + }; + + var compare = function compare(html) { + return (/^\s*

    \s*Time: \d+\.\d+<[^>]+?>\s*<\/p>\s*$/i.test(html) + ); + }; + + tressa.log('## injecting text and attributes'); + var i = 0; + var div = document.body.appendChild(document.createElement('div')); + var render = hyperHTML.bind(div); + var html = update(i++).innerHTML; - tressa.assert(compare(html), 'correct HTML update'); - tressa.assert(html === div.innerHTML, 'update applied'); - tressa.assert(p === div.querySelector('p'), 'no node was changed'); - tressa.assert(attr === p.attributes[0], 'no attribute was changed'); - done(); - }); + var p = div.querySelector('p'); + var attr = p.attributes[0]; + tressa.assert(compare(html), 'correct HTML'); + tressa.assert(html === div.innerHTML, 'correctly returned'); + setTimeout(function () { + tressa.log('## updating same nodes'); + var html = update(i++).innerHTML; + tressa.assert(compare(html), 'correct HTML update'); + tressa.assert(html === div.innerHTML, 'update applied'); + tressa.assert(p === div.querySelector('p'), 'no node was changed'); + tressa.assert(attr === p.attributes[0], 'no attribute was changed'); + done(); + }); + } catch (e) { + console.error(e); + } }).then(function () { return tressa.async(function (done) { tressa.log('## perf: same virtual text twice'); @@ -142,7 +149,7 @@ tressa.async(function (done) { return render(_templateObject3, ['' + text + '']); } function compare(html) { - return (/^

    \w+<\/strong><\/p>$/i.test(html) + return (/^

    \w+<\/strong><\/p>$/i.test(html) ); } tressa.assert(compare(html), 'HTML injected'); @@ -189,7 +196,7 @@ tressa.async(function (done) { return render(_templateObject3, { any: ['' + text + ''] }); } function compare(html) { - return (/^

    \w+<\/em><\/p>$/i.test(html) + return (/^

    \w+<\/em><\/p>$/i.test(html) ); } tressa.assert(compare(html), 'new HTML injected'); @@ -237,7 +244,7 @@ tressa.async(function (done) { render = hyperHTML.bind(div); render(_templateObject8, node); same = div.childNodes; - tressa.assert(node.length === same.length && node[0] && node.every(function (n, i) { + tressa.assert(node[0] && node.every(function (n, i) { return same[i] === n; }), 'same list applied'); @@ -334,6 +341,7 @@ tressa.async(function (done) { tressa.assert(div.firstChild.firstChild === br, 'one child is added'); hyperHTML.bind(div)(_templateObject14, hr); tressa.assert(div.firstChild.firstChild === hr, 'one child is changed'); + debugger; hyperHTML.bind(div)(_templateObject14, [hr, br]); tressa.assert(div.firstChild.childNodes[0] === hr && div.firstChild.childNodes[1] === br, 'more children are added'); hyperHTML.bind(div)(_templateObject14, [br, hr]); @@ -341,7 +349,7 @@ tressa.async(function (done) { hyperHTML.bind(div)(_templateObject14, br); tressa.assert(div.firstChild.firstChild === br, 'one child is kept'); hyperHTML.bind(div)(_templateObject14, []); - tressa.assert(div.firstChild.childNodes.length === 0, 'dropped all children'); + tressa.assert(/

    <\/div>/.test(div.innerHTML), 'dropped all children'); }).then(function () { tressa.log('## wire by id'); var ref = {}; @@ -389,16 +397,18 @@ tressa.async(function (done) { }), model.inBetween); } }).then(function () { + if (SKIP_ADOPT) return; tressa.log('## weird .adopt(node) cases'); var wrap = document.createElement('div'); wrap.innerHTML = '
    text
    '; hyperHTML.adopt(wrap)(_templateObject14, ' right'); - tressa.assert(wrap.innerHTML === '
    right
    ', 'right text OK'); + tressa.assert(/
    right<\/div>/.test(wrap.innerHTML), 'right text OK'); + wrap.innerHTML = '
    text
    '; hyperHTML.adopt(wrap)(_templateObject18, 'left '); - tressa.assert(wrap.innerHTML === '
    left
    ', 'left text OK'); + tressa.assert(/
    left <\/div>/.test(wrap.innerHTML), 'left text OK'); wrap.innerHTML = ''; hyperHTML.adopt(wrap)(_templateObject8, 'any'); - tressa.assert(wrap.innerHTML === 'any', '`${\'virtual\'}` is like `${\'any\'}`'); + tressa.assert(/any/.test(wrap.innerHTML), '`${\'virtual\'}` is like `${\'any\'}`'); wrap.innerHTML = '
    '; hyperHTML.adopt(wrap)(_templateObject19, 'virtual'); if (SKIP_ADOPT) return; @@ -420,19 +430,19 @@ tressa.async(function (done) { return hyperHTML.wire(item, 'adopt')(_templateObject23, item.text); })); var list = wrap.querySelectorAll('li'); - tressa.assert(list.length === 1 && list[0] === li && result.innerHTML === '
    • first
    ', 'one element can be adopted'); + tressa.assert(list.length === 1 && list[0] === li && /
    • first<\/li><\/ul>/.test(result.innerHTML), 'one element can be adopted'); result = hyperHTML.adopt(wrap)(_templateObject22, items.map(function (item) { return hyperHTML.wire(item, 'adopt')(_templateObject23, item.text); })); list = wrap.querySelectorAll('li'); - tressa.assert(list.length === 1 && list[0] === li && result.innerHTML === '
      • first
      ', 'even after multiple passes'); + tressa.assert(list.length === 1 && list[0] === li && /
      • first<\/li><\/ul>/.test(result.innerHTML), 'even after multiple passes'); wrap = document.createElement('div'); wrap.innerHTML = '
          '; result = hyperHTML.adopt(wrap)(_templateObject22, [{ text: 'new' }, { text: 'nodes' }].map(function (item) { return hyperHTML.wire(item, 'adopt')(_templateObject23, item.text); })); list = wrap.querySelectorAll('li'); - tressa.assert(list.length === 2 && result.innerHTML === '
          • new
          • nodes
          ', 'if not there, elements get created'); + tressa.assert(list.length === 2 && /
          • new<\/li>
          • nodes<\/li><\/ul>/.test(result.innerHTML), 'if not there, elements get created'); wrap = document.createElement('div'); wrap.innerHTML = '


            '; @@ -449,7 +459,7 @@ tressa.async(function (done) { result = hyperHTML.adopt(wrap)(_templateObject26, [{ x: 1, y: 2 }].map(function (item) { return hyperHTML.wire(item, 'adopt')(_templateObject27, item.x, item.y); })); - tressa.assert(/]+?)?>\s*\s*<\/rect>\s*<\/svg>/.test(result.innerHTML) && result.querySelector('rect').getAttribute('x') == 1 && result.querySelector('rect').getAttribute('y') == 2, 'svg content can be adopted too'); + tressa.assert(/]+?)?>\s*\s*<\/rect>\s*<\/svg>/.test(result.innerHTML) && result.querySelector('rect').getAttribute('x') == 1 && result.querySelector('rect').getAttribute('y') == 2, 'svg content can be adopted too'); }).then(function () { return tressa.async(function (done) { tressa.log('## Promises instead of nodes'); @@ -471,13 +481,23 @@ tressa.async(function (done) { var result = wrap.innerHTML; setTimeout(function () { tressa.assert(result !== wrap.innerHTML, 'promises fullfilled'); - tressa.assert(/^

            any<\/p>virtual


            12<\/div>34$/.test(wrap.innerHTML), 'both any and virtual content correct'); + tressa.assert(/^

            any<\/p>virtual


            12<\/div>34$/.test(wrap.innerHTML), 'both any and virtual content correct'); done(); }, 100); }); }).then(function () { tressa.log('## for code coverage sake'); + hyperHTML.MAX_LIST_SIZE = 0; var wrap = document.createElement('div'); + var text = [document.createTextNode('a'), document.createTextNode('b'), document.createTextNode('c')]; + var testingMajinBuu = hyperHTML.bind(wrap); + testingMajinBuu(_templateObject8, [text]); + tressa.assert(wrap.textContent === 'abc'); + text[0] = document.createTextNode('c'); + text[2] = document.createTextNode('a'); + testingMajinBuu(_templateObject8, [text]); + tressa.assert(wrap.textContent === 'cba'); + var result = hyperHTML.wire()(_templateObject29); tressa.assert(result.nodeType === 8, 'it is a comment'); tressa.assert(result.textContent === 'not hyprHTML', 'correct content'); @@ -573,13 +593,13 @@ tressa.async(function (done) { tressa.log('## any content extras'); var div = document.createElement('div'); hyperHTML.bind(div)(_templateObject3, undefined); - tressa.assert(div.innerHTML === '

            ', 'expected layout'); + tressa.assert(/

            <\/p>/.test(div.innerHTML), 'expected layout'); hyperHTML.bind(div)(_templateObject3, { text: '' }); - tressa.assert(div.innerHTML === '

            <img>

            ', 'expected text'); + tressa.assert(/

            <img><\/p>/.test(div.innerHTML), 'expected text'); hyperHTML.bind(div)(_templateObject3, function () { return ''; }); - tressa.assert(div.innerHTML === '

            <b>

            ', 'expected callback'); + tressa.assert(/

            <b><\/p>/.test(div.innerHTML), 'expected callback'); }).then(function () { tressa.log('## virtual content extras'); var div = document.createElement('div'); @@ -600,7 +620,7 @@ tressa.async(function (done) { hyperHTML.bind(div)(_templateObject32, { eUC: 'b c' }); tressa.assert(/a=b%20c<[^>]+?>/.test(div.innerHTML), 'expected virtual layout'); hyperHTML.bind(div)(_templateObject3, { eUC: 'b c' }); - tressa.assert(/

            b%20c<\/p>/.test(div.innerHTML), 'expected layout'); + tressa.assert(/

            b%20c<\/p>/.test(div.innerHTML), 'expected layout'); }).then(function () { tressa.log('## attributes with null values'); var div = document.createElement('div'); @@ -627,20 +647,20 @@ tressa.async(function (done) { var vdiv = document.createElement('div'); hyperHTML.bind(div)(_templateObject3, { eUC: 'b c', placeholder: 'z' }); hyperHTML.bind(vdiv)(_templateObject32, { eUC: 'b c', placeholder: 'z' }); - tressa.assert(/

            z<\/p>/.test(div.innerHTML), 'expected inner placeholder layout'); + tressa.assert(/

            z<\/p>/.test(div.innerHTML), 'expected inner placeholder layout'); tressa.assert(/a=z<[^>]+?>/.test(vdiv.innerHTML), 'expected virtual placeholder layout'); setTimeout(function () { - tressa.assert(/

            b%20c<\/p>/.test(div.innerHTML), 'expected inner resolved layout'); + tressa.assert(/

            b%20c<\/p>/.test(div.innerHTML), 'expected inner resolved layout'); tressa.assert(/a=b%20c<[^>]+?>/.test(vdiv.innerHTML), 'expected virtual resolved layout'); hyperHTML.bind(div)(_templateObject3, { text: 1, placeholder: '9' }); setTimeout(function () { - tressa.assert(/

            1<\/p>/.test(div.innerHTML), 'placeholder with text'); + tressa.assert(/

            1<\/p>/.test(div.innerHTML), 'placeholder with text'); hyperHTML.bind(div)(_templateObject3, { any: [1, 2], placeholder: '9' }); setTimeout(function () { - tressa.assert(/

            12<\/p>/.test(div.innerHTML), 'placeholder with any'); + tressa.assert(/

            12<\/p>/.test(div.innerHTML), 'placeholder with any'); hyperHTML.bind(div)(_templateObject3, { html: '3', placeholder: '9' }); setTimeout(function () { - tressa.assert(/

            3<\/b><\/p>/.test(div.innerHTML), 'placeholder with html'); + tressa.assert(/

            3<\/b><\/p>/.test(div.innerHTML), 'placeholder with html'); done(); }, 10); }, 10); diff --git a/test/index.html b/test/index.html index 1a2ab05d..b8f1eb6a 100644 --- a/test/index.html +++ b/test/index.html @@ -17,6 +17,6 @@

            results in console

            - + \ No newline at end of file diff --git a/test/infinite.html b/test/infinite.html new file mode 100644 index 00000000..99266107 --- /dev/null +++ b/test/infinite.html @@ -0,0 +1,83 @@ + + + + + + Infinite Scroll + + + + + +
            + + \ No newline at end of file diff --git a/test/lib.html b/test/lib.html index 38a39c81..9229b6a4 100644 --- a/test/lib.html +++ b/test/lib.html @@ -1,7 +1,7 @@ - + \ No newline at end of file diff --git a/test/many-rows-adopted.html b/test/many-rows-adopted.html index 6c5694b5..24c31867 100644 --- a/test/many-rows-adopted.html +++ b/test/many-rows-adopted.html @@ -3,7 +3,7 @@ - +

            Boot speed:

            diff --git a/test/many-rows.html b/test/many-rows.html index b45cb3ae..d60a1381 100644 --- a/test/many-rows.html +++ b/test/many-rows.html @@ -3,7 +3,7 @@ - +

            Boot speed:

            diff --git a/test/my-button.html b/test/my-button.html index cf481b54..9f9d8b31 100644 --- a/test/my-button.html +++ b/test/my-button.html @@ -4,7 +4,7 @@ Custom Elements meet hyperHTML - + diff --git a/test/runner.js b/test/runner.js index eda2ef13..0c276c5d 100644 --- a/test/runner.js +++ b/test/runner.js @@ -14,7 +14,10 @@ require('jsdom').env( //*/ global.document = window.document; global.tressa = require('tressa'); - global.hyperHTML = require('../hyperhtml.js'); + var Int32Array = global.Int32Array; + global.Int32Array = void 0; + global.hyperHTML = require('../index.js'); + global.Int32Array = Int32Array; require('./test.js'); setTimeout(function () { var proto = global.document.createDocumentFragment(); @@ -32,7 +35,7 @@ require('jsdom').env( var $Map = global.Map; // var $CustomEvent = global.CustomEvent; global.String.prototype.trim = global.WeakMap = global.Map = void 0; - delete require.cache[require.resolve('../hyperhtml.js')]; + delete require.cache[require.resolve('../index.js')]; delete require.cache[require.resolve('./test.js')]; // fake initial feature detection var createElement = global.document.createElement; @@ -64,7 +67,9 @@ require('jsdom').env( }; var bind = Function.prototype.bind; delete Function.prototype.bind; - global.hyperHTML = require('../hyperhtml.js'); + + global.hyperHTML = require('../index.js'); + Function.prototype.bind = bind; Array.isArray = isArray; diff --git a/test/test.js b/test/test.js index 32bf833b..70741149 100644 --- a/test/test.js +++ b/test/test.js @@ -3,7 +3,7 @@ var SKIP_ADOPT = typeof location !== typeof SKIP_ADOPT && -1 < location.search.i tressa.title('HyperHTML'); tressa.assert(typeof hyperHTML === 'function', 'hyperHTML is a function'); -try { tressa.log(1); } catch(e) { tressa.log = console.log.bind(console); } +try { tressa.log(''); } catch(e) { tressa.log = console.log.bind(console); } /* tressa.async(function (done) { @@ -15,6 +15,7 @@ tressa.async(function (done) { }) */ tressa.async(function (done) { + try { tressa.log('## injecting text and attributes'); var i = 0; var div = document.body.appendChild(document.createElement('div')); @@ -48,6 +49,7 @@ tressa.async(function (done) { tressa.assert(attr === p.attributes[0], 'no attribute was changed'); done(); }); + } catch(e) { console.error(e); } }) .then(function () { return tressa.async(function (done) { @@ -76,7 +78,7 @@ tressa.async(function (done) { return render`

            ${['' + text + '']}

            `; } function compare(html) { - return /^

            \w+<\/strong><\/p>$/i.test(html); + return /^

            \w+<\/strong><\/p>$/i.test(html); } tressa.assert(compare(html), 'HTML injected'); tressa.assert(html === div.innerHTML, 'HTML returned'); @@ -124,7 +126,7 @@ tressa.async(function (done) { return render`

            ${{any: ['' + text + '']}}

            `; } function compare(html) { - return /^

            \w+<\/em><\/p>$/i.test(html); + return /^

            \w+<\/em><\/p>$/i.test(html); } tressa.assert(compare(html), 'new HTML injected'); tressa.assert(html === div.innerHTML, 'new HTML returned'); @@ -184,7 +186,6 @@ tressa.async(function (done) { render`${node}`; same = div.childNodes; tressa.assert( - node.length === same.length && node[0] && node.every(function (n, i) { return same[i] === n; }), 'same list applied' @@ -316,7 +317,7 @@ tressa.async(function (done) { hyperHTML.bind(div)`

            ${br}
            `; tressa.assert(div.firstChild.firstChild === br, 'one child is kept'); hyperHTML.bind(div)`
            ${[]}
            `; - tressa.assert(div.firstChild.childNodes.length === 0, 'dropped all children'); + tressa.assert(/
            <\/div>/.test(div.innerHTML), 'dropped all children'); }) .then(function () { tressa.log('## wire by id'); @@ -379,16 +380,18 @@ tressa.async(function (done) { } }) .then(function () { + if (SKIP_ADOPT) return; tressa.log('## weird .adopt(node) cases'); let wrap = document.createElement('div'); wrap.innerHTML = '
            text
            '; hyperHTML.adopt(wrap)`
            ${' right'}
            `; - tressa.assert(wrap.innerHTML === '
            right
            ', 'right text OK'); + tressa.assert(/
            right<\/div>/.test(wrap.innerHTML), 'right text OK'); + wrap.innerHTML = '
            text
            '; hyperHTML.adopt(wrap)`
            ${'left '}
            `; - tressa.assert(wrap.innerHTML === '
            left
            ', 'left text OK'); + tressa.assert(/
            left <\/div>/.test(wrap.innerHTML), 'left text OK'); wrap.innerHTML = ''; hyperHTML.adopt(wrap)`${'any'}`; - tressa.assert(wrap.innerHTML === 'any', '`${\'virtual\'}` is like `${\'any\'}`'); + tressa.assert(/any/.test(wrap.innerHTML), '`${\'virtual\'}` is like `${\'any\'}`'); wrap.innerHTML = '
            '; hyperHTML.adopt(wrap)`
            ${'virtual'}`; if (SKIP_ADOPT) return; @@ -416,7 +419,7 @@ tressa.async(function (done) { tressa.assert( list.length === 1 && list[0] === li && - result.innerHTML === '
            • first
            ', + /
            • first<\/li><\/ul>/.test(result.innerHTML), 'one element can be adopted' ); result = hyperHTML.adopt(wrap)`
                ${ @@ -428,7 +431,7 @@ tressa.async(function (done) { tressa.assert( list.length === 1 && list[0] === li && - result.innerHTML === '
                • first
                ', + /
                • first<\/li><\/ul>/.test(result.innerHTML), 'even after multiple passes' ); wrap = document.createElement('div'); @@ -441,7 +444,7 @@ tressa.async(function (done) { list = wrap.querySelectorAll('li'); tressa.assert( list.length === 2 && - result.innerHTML === '
                  • new
                  • nodes
                  ', + /
                  • new<\/li>
                  • nodes<\/li><\/ul>/.test(result.innerHTML), 'if not there, elements get created' ); @@ -469,7 +472,7 @@ tressa.async(function (done) { `) }`; tressa.assert( - /]+?)?>\s*\s*<\/rect>\s*<\/svg>/.test(result.innerHTML) && + /]+?)?>\s*\s*<\/rect>\s*<\/svg>/.test(result.innerHTML) && result.querySelector('rect').getAttribute('x') == 1 && result.querySelector('rect').getAttribute('y') == 2, 'svg content can be adopted too' @@ -496,7 +499,7 @@ tressa.async(function (done) { setTimeout(function () { tressa.assert(result !== wrap.innerHTML, 'promises fullfilled'); tressa.assert( - /^

                    any<\/p>virtual


                    12<\/div>34$/.test(wrap.innerHTML), + /^

                    any<\/p>virtual


                    12<\/div>34$/.test(wrap.innerHTML), 'both any and virtual content correct' ); done(); @@ -505,7 +508,17 @@ tressa.async(function (done) { }) .then(function () { tressa.log('## for code coverage sake'); + hyperHTML.MAX_LIST_SIZE = 0; let wrap = document.createElement('div'); + let text = [document.createTextNode('a'), document.createTextNode('b'), document.createTextNode('c')]; + let testingMajinBuu = hyperHTML.bind(wrap); + testingMajinBuu`${[text]}`; + tressa.assert(wrap.textContent === 'abc'); + text[0] = document.createTextNode('c'); + text[2] = document.createTextNode('a'); + testingMajinBuu`${[text]}`; + tressa.assert(wrap.textContent === 'cba'); + let result = hyperHTML.wire()``; tressa.assert(result.nodeType === 8, 'it is a comment'); tressa.assert(result.textContent === 'not hyprHTML', 'correct content'); @@ -619,11 +632,11 @@ tressa.async(function (done) { tressa.log('## any content extras'); var div = document.createElement('div'); hyperHTML.bind(div)`

                    ${undefined}

                    `; - tressa.assert(div.innerHTML === '

                    ', 'expected layout'); + tressa.assert(/

                    <\/p>/.test(div.innerHTML), 'expected layout'); hyperHTML.bind(div)`

                    ${{text: ''}}

                    `; - tressa.assert(div.innerHTML === '

                    <img>

                    ', 'expected text'); + tressa.assert(/

                    <img><\/p>/.test(div.innerHTML), 'expected text'); hyperHTML.bind(div)`

                    ${function () { return ''; }}

                    `; - tressa.assert(div.innerHTML === '

                    <b>

                    ', 'expected callback'); + tressa.assert(/

                    <b><\/p>/.test(div.innerHTML), 'expected callback'); }) .then(function () { tressa.log('## virtual content extras'); @@ -646,7 +659,7 @@ tressa.async(function (done) { hyperHTML.bind(div)`a=${{eUC: 'b c'}}`; tressa.assert(/a=b%20c<[^>]+?>/.test(div.innerHTML), 'expected virtual layout'); hyperHTML.bind(div)`

                    ${{eUC: 'b c'}}

                    `; - tressa.assert(/

                    b%20c<\/p>/.test(div.innerHTML), 'expected layout'); + tressa.assert(/

                    b%20c<\/p>/.test(div.innerHTML), 'expected layout'); }) .then(function () { tressa.log('## attributes with null values'); @@ -706,20 +719,20 @@ tressa.async(function (done) { var vdiv = document.createElement('div'); hyperHTML.bind(div)`

                    ${{eUC: 'b c', placeholder: 'z'}}

                    `; hyperHTML.bind(vdiv)`a=${{eUC: 'b c', placeholder: 'z'}}`; - tressa.assert(/

                    z<\/p>/.test(div.innerHTML), 'expected inner placeholder layout'); + tressa.assert(/

                    z<\/p>/.test(div.innerHTML), 'expected inner placeholder layout'); tressa.assert(/a=z<[^>]+?>/.test(vdiv.innerHTML), 'expected virtual placeholder layout'); setTimeout(function () { - tressa.assert(/

                    b%20c<\/p>/.test(div.innerHTML), 'expected inner resolved layout'); + tressa.assert(/

                    b%20c<\/p>/.test(div.innerHTML), 'expected inner resolved layout'); tressa.assert(/a=b%20c<[^>]+?>/.test(vdiv.innerHTML), 'expected virtual resolved layout'); hyperHTML.bind(div)`

                    ${{text: 1, placeholder: '9'}}

                    `; setTimeout(function () { - tressa.assert(/

                    1<\/p>/.test(div.innerHTML), 'placeholder with text'); + tressa.assert(/

                    1<\/p>/.test(div.innerHTML), 'placeholder with text'); hyperHTML.bind(div)`

                    ${{any: [1, 2], placeholder: '9'}}

                    `; setTimeout(function () { - tressa.assert(/

                    12<\/p>/.test(div.innerHTML), 'placeholder with any'); + tressa.assert(/

                    12<\/p>/.test(div.innerHTML), 'placeholder with any'); hyperHTML.bind(div)`

                    ${{html: '3', placeholder: '9'}}

                    `; setTimeout(function () { - tressa.assert(/

                    3<\/b><\/p>/.test(div.innerHTML), 'placeholder with html'); + tressa.assert(/

                    3<\/b><\/p>/.test(div.innerHTML), 'placeholder with html'); done(); }, 10); }, 10); diff --git a/test/value.html b/test/value.html index b3a4c6ef..d2bb3a40 100644 --- a/test/value.html +++ b/test/value.html @@ -1,7 +1,7 @@ - + + +