Your IP : 192.168.165.1


Current Path : C:/Users/Mahmood/Desktop/moodle/lib/amd/build/
Upload File :
Current File : C:/Users/Mahmood/Desktop/moodle/lib/amd/build/mustache.min.js.map

{"version":3,"sources":["../src/mustache.js"],"names":["global","factory","exports","nodeName","define","amd","Mustache","mustache","objectToString","Object","prototype","toString","isArray","Array","object","call","isFunction","typeStr","obj","escapeRegExp","string","replace","hasProperty","propName","primitiveHasOwnProperty","primitive","hasOwnProperty","regExpTest","RegExp","test","testRegExp","re","isWhitespace","entityMap","equalsRe","parseTemplate","template","tags","lineHasNonSpace","sections","tokens","spaces","hasTag","nonSpace","indentation","tagIndex","stripSpace","length","pop","openingTagRe","closingTagRe","closingCurlyRe","compileTags","tagsToCompile","split","Error","scanner","Scanner","start","type","value","chr","token","openSection","eos","pos","scanUntil","i","valueLength","charAt","push","scan","nestTokens","squashTokens","squashedTokens","lastToken","numTokens","nestedTokens","collector","section","tail","match","index","substring","search","Context","view","parentContext","blocks","cache","parent","setBlockVar","name","clearBlockVars","getBlockVar","lookup","context","intermediateValue","names","lookupHit","indexOf","Writer","clearCache","parse","cacheKey","join","render","partials","renderTokens","originalTemplate","buffer","symbol","renderSection","renderInverted","renderPartial","renderBlock","renderBlockVariable","unescapedValue","escapedValue","rawValue","self","subRender","j","slice","indentPartial","partial","filteredIndentation","partialByNl","indentedValue","result","exists","escape","version","defaultWriter","TypeError","to_html","send","s"],"mappings":"mSA0CC,UAAyBA,CAAzB,CAAiCC,CAAjC,CAA0C,CACzC,GAAuB,QAAnB,uBAAOC,CAAAA,OAAP,qBAAOA,OAAP,IAA+BA,OAA/B,EAAsE,QAA5B,QAAOA,CAAAA,OAAO,CAACC,QAA7D,CAAoF,CAClFF,CAAO,CAACC,OAAD,CACR,CAFD,IAEO,IAAsB,UAAlB,QAAOE,CAAAA,MAAP,EAAgCA,MAAM,CAACC,GAA3C,CAAgD,CACrDD,OAAM,iBAAC,CAAC,SAAD,CAAD,CAAcH,CAAd,CACP,CAFM,IAEA,CACLD,CAAM,CAACM,QAAP,CAAkB,EAAlB,CACAL,CAAO,CAACD,CAAM,CAACM,QAAR,CACR,CACF,CATA,EASC,IATD,CASO,SAA0BC,CAA1B,CAAoC,IAEtCC,CAAAA,CAAc,CAAGC,MAAM,CAACC,SAAP,CAAiBC,QAFI,CAGtCC,CAAO,CAAGC,KAAK,CAACD,OAAN,EAAiB,SAA0BE,CAA1B,CAAkC,CAC/D,MAAuC,gBAAhC,GAAAN,CAAc,CAACO,IAAf,CAAoBD,CAApB,CACR,CALyC,CAO1C,QAASE,CAAAA,CAAT,CAAqBF,CAArB,CAA6B,CAC3B,MAAyB,UAAlB,QAAOA,CAAAA,CACf,CAMD,QAASG,CAAAA,CAAT,CAAkBC,CAAlB,CAAuB,CACrB,MAAON,CAAAA,CAAO,CAACM,CAAD,CAAP,CAAe,OAAf,SAAgCA,CAAhC,CACR,CAED,QAASC,CAAAA,CAAT,CAAuBC,CAAvB,CAA+B,CAC7B,MAAOA,CAAAA,CAAM,CAACC,OAAP,CAAe,6BAAf,CAA8C,MAA9C,CACR,CAMD,QAASC,CAAAA,CAAT,CAAsBJ,CAAtB,CAA2BK,CAA3B,CAAqC,CACnC,MAAc,KAAP,EAAAL,CAAG,EAA2B,QAAf,WAAOA,CAAP,CAAf,EAA2CK,CAAQ,GAAIL,CAAAA,CAC/D,CAMD,QAASM,CAAAA,CAAT,CAAkCC,CAAlC,CAA6CF,CAA7C,CAAuD,CACrD,MACe,KAAb,EAAAE,CAAS,EACe,QAArB,WAAOA,CAAP,CADH,EAEGA,CAAS,CAACC,cAFb,EAGGD,CAAS,CAACC,cAAV,CAAyBH,CAAzB,CAEN,CAID,GAAII,CAAAA,CAAU,CAAGC,MAAM,CAAClB,SAAP,CAAiBmB,IAAlC,CACA,QAASC,CAAAA,CAAT,CAAqBC,CAArB,CAAyBX,CAAzB,CAAiC,CAC/B,MAAOO,CAAAA,CAAU,CAACZ,IAAX,CAAgBgB,CAAhB,CAAoBX,CAApB,CACR,CAGD,QAASY,CAAAA,CAAT,CAAuBZ,CAAvB,CAA+B,CAC7B,MAAO,CAACU,CAAU,CAFH,IAEG,CAAaV,CAAb,CACnB,CAED,GAAIa,CAAAA,CAAS,CAAG,CACd,IAAK,OADS,CAEd,IAAK,MAFS,CAGd,IAAK,MAHS,CAId,IAAK,QAJS,CAKd,IAAK,OALS,CAMd,IAAK,QANS,CAOd,IAAK,QAPS,CAQd,IAAK,QARS,CAAhB,CAxD0C,GA2EtCC,CAAAA,CAAQ,CAAG,MA3E2B,CAyG1C,QAASC,CAAAA,CAAT,CAAwBC,CAAxB,CAAkCC,CAAlC,CAAwC,CACtC,GAAI,CAACD,CAAL,CACE,MAAO,EAAP,CAFoC,GAGlCE,CAAAA,CAAe,GAHmB,CAIlCC,CAAQ,CAAG,EAJuB,CAKlCC,CAAM,CAAG,EALyB,CAMlCC,CAAM,CAAG,EANyB,CAOlCC,CAAM,GAP4B,CAQlCC,CAAQ,GAR0B,CASlCC,CAAW,CAAG,EAToB,CAUlCC,CAAQ,CAAG,CAVuB,CActC,QAASC,CAAAA,CAAT,EAAuB,CACrB,GAAIJ,CAAM,EAAI,CAACC,CAAf,CAAyB,CACvB,MAAOF,CAAM,CAACM,MAAd,EACE,MAAOP,CAAAA,CAAM,CAACC,CAAM,CAACO,GAAP,EAAD,CADf,CAED,CAHD,IAGO,CACLP,CAAM,CAAG,EACV,CAEDC,CAAM,GAAN,CACAC,CAAQ,GACT,CAED,GAAIM,CAAAA,CAAJ,CAAkBC,CAAlB,CAAgCC,CAAhC,CACA,QAASC,CAAAA,CAAT,CAAsBC,CAAtB,CAAqC,CACnC,GAA6B,QAAzB,QAAOA,CAAAA,CAAX,CACEA,CAAa,CAAGA,CAAa,CAACC,KAAd,CA5DR,KA4DQ,CAA6B,CAA7B,CAAhB,CAEF,GAAI,CAAC1C,CAAO,CAACyC,CAAD,CAAR,EAAoD,CAAzB,GAAAA,CAAa,CAACN,MAA7C,CACE,KAAM,IAAIQ,CAAAA,KAAJ,CAAU,iBAAmBF,CAA7B,CAAN,CAEFJ,CAAY,CAAG,GAAIrB,CAAAA,MAAJ,CAAWT,CAAY,CAACkC,CAAa,CAAC,CAAD,CAAd,CAAZ,CAAiC,MAA5C,CAAf,CACAH,CAAY,CAAG,GAAItB,CAAAA,MAAJ,CAAW,OAAST,CAAY,CAACkC,CAAa,CAAC,CAAD,CAAd,CAAhC,CAAf,CACAF,CAAc,CAAG,GAAIvB,CAAAA,MAAJ,CAAW,OAAST,CAAY,CAAC,IAAMkC,CAAa,CAAC,CAAD,CAApB,CAAhC,CAClB,CAEDD,CAAW,CAACf,CAAI,EAAI9B,CAAQ,CAAC8B,IAAlB,CAAX,CAvCsC,GAyClCmB,CAAAA,CAAO,CAAG,GAAIC,CAAAA,CAAJ,CAAYrB,CAAZ,CAzCwB,CA2ClCsB,CA3CkC,CA2C3BC,CA3C2B,CA2CrBC,CA3CqB,CA2CdC,CA3Cc,CA2CTC,CA3CS,CA2CFC,CA3CE,CA4CtC,MAAO,CAACP,CAAO,CAACQ,GAAR,EAAR,CAAuB,CACrBN,CAAK,CAAGF,CAAO,CAACS,GAAhB,CAGAL,CAAK,CAAGJ,CAAO,CAACU,SAAR,CAAkBjB,CAAlB,CAAR,CAEA,GAAIW,CAAJ,CAAW,CACT,IAAK,GAAIO,CAAAA,CAAC,CAAG,CAAR,CAAWC,CAAW,CAAGR,CAAK,CAACb,MAApC,CAA4CoB,CAAC,CAAGC,CAAhD,CAA6D,EAAED,CAA/D,CAAkE,CAChEN,CAAG,CAAGD,CAAK,CAACS,MAAN,CAAaF,CAAb,CAAN,CAEA,GAAInC,CAAY,CAAC6B,CAAD,CAAhB,CAAuB,CACrBpB,CAAM,CAAC6B,IAAP,CAAY9B,CAAM,CAACO,MAAnB,EACAH,CAAW,EAAIiB,CAChB,CAHD,IAGO,CACLlB,CAAQ,GAAR,CACAL,CAAe,GAAf,CACAM,CAAW,EAAI,GAChB,CAEDJ,CAAM,CAAC8B,IAAP,CAAY,CAAE,MAAF,CAAUT,CAAV,CAAeH,CAAf,CAAsBA,CAAK,CAAG,CAA9B,CAAZ,EACAA,CAAK,EAAI,CAAT,CAGA,GAAY,IAAR,GAAAG,CAAJ,CAAkB,CAChBf,CAAU,GACVF,CAAW,CAAG,EAAd,CACAC,CAAQ,CAAG,CAAX,CACAP,CAAe,GAChB,CACF,CACF,CAGD,GAAI,CAACkB,CAAO,CAACe,IAAR,CAAatB,CAAb,CAAL,CACE,MAEFP,CAAM,GAAN,CAGAiB,CAAI,CAAGH,CAAO,CAACe,IAAR,CA/GC,yBA+GD,GAAuB,MAA9B,CACAf,CAAO,CAACe,IAAR,CApHU,KAoHV,EAGA,GAAa,GAAT,GAAAZ,CAAJ,CAAkB,CAChBC,CAAK,CAAGJ,CAAO,CAACU,SAAR,CAAkBhC,CAAlB,CAAR,CACAsB,CAAO,CAACe,IAAR,CAAarC,CAAb,EACAsB,CAAO,CAACU,SAAR,CAAkBhB,CAAlB,CACD,CAJD,IAIO,IAAa,GAAT,GAAAS,CAAJ,CAAkB,CACvBC,CAAK,CAAGJ,CAAO,CAACU,SAAR,CAAkBf,CAAlB,CAAR,CACAK,CAAO,CAACe,IAAR,CA1HQ,OA0HR,EACAf,CAAO,CAACU,SAAR,CAAkBhB,CAAlB,EACAS,CAAI,CAAG,GACR,CALM,IAKA,CACLC,CAAK,CAAGJ,CAAO,CAACU,SAAR,CAAkBhB,CAAlB,CACT,CAGD,GAAI,CAACM,CAAO,CAACe,IAAR,CAAarB,CAAb,CAAL,CACE,KAAM,IAAIK,CAAAA,KAAJ,CAAU,mBAAqBC,CAAO,CAACS,GAAvC,CAAN,CAEF,GAAY,GAAR,EAAAN,CAAJ,CAAiB,CACfG,CAAK,CAAG,CAAEH,CAAF,CAAQC,CAAR,CAAeF,CAAf,CAAsBF,CAAO,CAACS,GAA9B,CAAmCrB,CAAnC,CAAgDC,CAAhD,CAA0DP,CAA1D,CACT,CAFD,IAEO,CACLwB,CAAK,CAAG,CAAEH,CAAF,CAAQC,CAAR,CAAeF,CAAf,CAAsBF,CAAO,CAACS,GAA9B,CACT,CACDpB,CAAQ,GACRL,CAAM,CAAC8B,IAAP,CAAYR,CAAZ,EAEA,GAAa,GAAT,GAAAH,CAAI,EAAqB,GAAT,GAAAA,CAAhB,EAAyC,GAAT,GAAAA,CAAhC,EAAyD,GAAT,GAAAA,CAApD,CAAkE,CAChEpB,CAAQ,CAAC+B,IAAT,CAAcR,CAAd,CACD,CAFD,IAEO,IAAa,GAAT,GAAAH,CAAJ,CAAkB,CAEvBI,CAAW,CAAGxB,CAAQ,CAACS,GAAT,EAAd,CAEA,GAAI,CAACe,CAAL,CACE,KAAM,IAAIR,CAAAA,KAAJ,CAAU,sBAAuBK,CAAvB,CAA+B,QAA/B,CAAyCF,CAAnD,CAAN,CAEF,GAAIK,CAAW,CAAC,CAAD,CAAX,GAAmBH,CAAvB,CACE,KAAM,IAAIL,CAAAA,KAAJ,CAAU,sBAAuBQ,CAAW,CAAC,CAAD,CAAlC,CAAwC,QAAxC,CAAkDL,CAA5D,CACT,CATM,IASA,IAAa,MAAT,GAAAC,CAAI,EAAwB,GAAT,GAAAA,CAAnB,EAA4C,GAAT,GAAAA,CAAvC,CAAqD,CAC1DhB,CAAQ,GACT,CAFM,IAEA,IAAa,GAAT,GAAAgB,CAAJ,CAAkB,CAEvBP,CAAW,CAACQ,CAAD,CACZ,CACF,CAEDd,CAAU,GAGViB,CAAW,CAAGxB,CAAQ,CAACS,GAAT,EAAd,CAEA,GAAIe,CAAJ,CACE,KAAM,IAAIR,CAAAA,KAAJ,CAAU,sBAAuBQ,CAAW,CAAC,CAAD,CAAlC,CAAwC,QAAxC,CAAkDP,CAAO,CAACS,GAApE,CAAN,CAEF,MAAOO,CAAAA,CAAU,CAACC,CAAY,CAACjC,CAAD,CAAb,CAClB,CAMD,QAASiC,CAAAA,CAAT,CAAuBjC,CAAvB,CAA+B,CAI7B,OAHIkC,CAAAA,CAAc,CAAG,EAGrB,CADIZ,CACJ,CADWa,CACX,CAASR,CAAC,CAAG,CAAb,CAAgBS,CAAS,CAAGpC,CAAM,CAACO,MAAnC,CAA2CoB,CAAC,CAAGS,CAA/C,CAA0D,EAAET,CAA5D,CAA+D,CAC7DL,CAAK,CAAGtB,CAAM,CAAC2B,CAAD,CAAd,CAEA,GAAIL,CAAJ,CAAW,CACT,GAAiB,MAAb,GAAAA,CAAK,CAAC,CAAD,CAAL,EAAuBa,CAAvB,EAAqD,MAAjB,GAAAA,CAAS,CAAC,CAAD,CAAjD,CAAiE,CAC/DA,CAAS,CAAC,CAAD,CAAT,EAAgBb,CAAK,CAAC,CAAD,CAArB,CACAa,CAAS,CAAC,CAAD,CAAT,CAAeb,CAAK,CAAC,CAAD,CACrB,CAHD,IAGO,CACLY,CAAc,CAACJ,IAAf,CAAoBR,CAApB,EACAa,CAAS,CAAGb,CACb,CACF,CACF,CAED,MAAOY,CAAAA,CACR,CAQD,QAASF,CAAAA,CAAT,CAAqBhC,CAArB,CAA6B,CAM3B,OALIqC,CAAAA,CAAY,CAAG,EAKnB,CAJIC,CAAS,CAAGD,CAIhB,CAHItC,CAAQ,CAAG,EAGf,CADIuB,CACJ,CADWiB,CACX,CAASZ,CAAC,CAAG,CAAb,CAAgBS,CAAS,CAAGpC,CAAM,CAACO,MAAnC,CAA2CoB,CAAC,CAAGS,CAA/C,CAA0D,EAAET,CAA5D,CAA+D,CAC7DL,CAAK,CAAGtB,CAAM,CAAC2B,CAAD,CAAd,CAEA,OAAQL,CAAK,CAAC,CAAD,CAAb,EACE,IAAK,GAAL,CACA,IAAK,GAAL,CACA,IAAK,GAAL,CACA,IAAK,GAAL,CACEgB,CAAS,CAACR,IAAV,CAAeR,CAAf,EACAvB,CAAQ,CAAC+B,IAAT,CAAcR,CAAd,EACAgB,CAAS,CAAGhB,CAAK,CAAC,CAAD,CAAL,CAAW,EAAvB,CACA,MACF,IAAK,GAAL,CACEiB,CAAO,CAAGxC,CAAQ,CAACS,GAAT,EAAV,CACA+B,CAAO,CAAC,CAAD,CAAP,CAAajB,CAAK,CAAC,CAAD,CAAlB,CACAgB,CAAS,CAAqB,CAAlB,CAAAvC,CAAQ,CAACQ,MAAT,CAAsBR,CAAQ,CAACA,CAAQ,CAACQ,MAAT,CAAkB,CAAnB,CAAR,CAA8B,CAA9B,CAAtB,CAAyD8B,CAArE,CACA,MACF,QACEC,CAAS,CAACR,IAAV,CAAeR,CAAf,EAfJ,CAiBD,CAED,MAAOe,CAAAA,CACR,CAMD,QAASpB,CAAAA,CAAT,CAAkBrC,CAAlB,CAA0B,CACxB,KAAKA,MAAL,CAAcA,CAAd,CACA,KAAK4D,IAAL,CAAY5D,CAAZ,CACA,KAAK6C,GAAL,CAAW,CACZ,CAKDR,CAAO,CAAC/C,SAAR,CAAkBsD,GAAlB,CAAwB,UAAgB,CACtC,MAAqB,EAAd,QAAKgB,IACb,CAFD,CAQAvB,CAAO,CAAC/C,SAAR,CAAkB6D,IAAlB,CAAyB,SAAexC,CAAf,CAAmB,CAC1C,GAAIkD,CAAAA,CAAK,CAAG,KAAKD,IAAL,CAAUC,KAAV,CAAgBlD,CAAhB,CAAZ,CAEA,GAAI,CAACkD,CAAD,EAA0B,CAAhB,GAAAA,CAAK,CAACC,KAApB,CACE,MAAO,EAAP,CAEF,GAAI9D,CAAAA,CAAM,CAAG6D,CAAK,CAAC,CAAD,CAAlB,CAEA,KAAKD,IAAL,CAAY,KAAKA,IAAL,CAAUG,SAAV,CAAoB/D,CAAM,CAAC2B,MAA3B,CAAZ,CACA,KAAKkB,GAAL,EAAY7C,CAAM,CAAC2B,MAAnB,CAEA,MAAO3B,CAAAA,CACR,CAZD,CAkBAqC,CAAO,CAAC/C,SAAR,CAAkBwD,SAAlB,CAA8B,SAAoBnC,CAApB,CAAwB,CACpD,GAAImD,CAAAA,CAAK,CAAG,KAAKF,IAAL,CAAUI,MAAV,CAAiBrD,CAAjB,CAAZ,CAAkCkD,CAAlC,CAEA,OAAQC,CAAR,EACE,IAAK,CAAC,CAAN,CACED,CAAK,CAAG,KAAKD,IAAb,CACA,KAAKA,IAAL,CAAY,EAAZ,CACA,MACF,IAAK,EAAL,CACEC,CAAK,CAAG,EAAR,CACA,MACF,QACEA,CAAK,CAAG,KAAKD,IAAL,CAAUG,SAAV,CAAoB,CAApB,CAAuBD,CAAvB,CAAR,CACA,KAAKF,IAAL,CAAY,KAAKA,IAAL,CAAUG,SAAV,CAAoBD,CAApB,CAAZ,CAVJ,CAaA,KAAKjB,GAAL,EAAYgB,CAAK,CAAClC,MAAlB,CAEA,MAAOkC,CAAAA,CACR,CAnBD,CAyBA,QAASI,CAAAA,CAAT,CAAkBC,CAAlB,CAAwBC,CAAxB,CAAuC,CACrC,KAAKD,IAAL,CAAYA,CAAZ,CACA,KAAKE,MAAL,CAAc,EAAd,CACA,KAAKC,KAAL,CAAa,CAAE,IAAK,KAAKH,IAAZ,CAAb,CACA,KAAKI,MAAL,CAAcH,CACf,CAMDF,CAAO,CAAC3E,SAAR,CAAkB4D,IAAlB,CAAyB,SAAegB,CAAf,CAAqB,CAC5C,MAAO,IAAID,CAAAA,CAAJ,CAAYC,CAAZ,CAAkB,IAAlB,CACR,CAFD,CAOAD,CAAO,CAAC3E,SAAR,CAAkBiF,WAAlB,CAAgC,SAAcC,CAAd,CAAoBhC,CAApB,CAA2B,CACzD,GAAI4B,CAAAA,CAAM,CAAG,KAAKA,MAAlB,CAEAA,CAAM,CAACI,CAAD,CAAN,CAAehC,CAAf,CAEA,MAAOA,CAAAA,CACR,CAND,CAWAyB,CAAO,CAAC3E,SAAR,CAAkBmF,cAAlB,CAAmC,UAA2B,CAC5D,KAAKL,MAAL,CAAc,EACf,CAFD,CAOAH,CAAO,CAAC3E,SAAR,CAAkBoF,WAAlB,CAAgC,SAAsBF,CAAtB,CAA4B,IACtDJ,CAAAA,CAAM,CAAG,KAAKA,MADwC,CAGtD5B,CAHsD,CAI1D,GAAI4B,CAAM,CAAC9D,cAAP,CAAsBkE,CAAtB,CAAJ,CAAiC,CAC/BhC,CAAK,CAAG4B,CAAM,CAACI,CAAD,CACf,CAFD,IAEO,CACL,GAAI,KAAKF,MAAT,CAAiB,CACf9B,CAAK,CAAG,KAAK8B,MAAL,CAAYI,WAAZ,CAAwBF,CAAxB,CACT,CACF,CAED,MAAOhC,CAAAA,CACR,CAbD,CAmBAyB,CAAO,CAAC3E,SAAR,CAAkBqF,MAAlB,CAA2B,SAAiBH,CAAjB,CAAuB,IAC5CH,CAAAA,CAAK,CAAG,KAAKA,KAD+B,CAG5C7B,CAH4C,CAIhD,GAAI6B,CAAK,CAAC/D,cAAN,CAAqBkE,CAArB,CAAJ,CAAgC,CAC9BhC,CAAK,CAAG6B,CAAK,CAACG,CAAD,CACd,CAFD,IAEO,CACL,GAAII,CAAAA,CAAO,CAAG,IAAd,CAAoBC,CAApB,CAAuCC,CAAvC,CAA8ChB,CAA9C,CAAqDiB,CAAS,GAA9D,CAEA,MAAOH,CAAP,CAAgB,CACd,GAAwB,CAApB,CAAAJ,CAAI,CAACQ,OAAL,CAAa,GAAb,CAAJ,CAA2B,CACzBH,CAAiB,CAAGD,CAAO,CAACV,IAA5B,CACAY,CAAK,CAAGN,CAAI,CAACtC,KAAL,CAAW,GAAX,CAAR,CACA4B,CAAK,CAAG,CAAR,CAmBA,MAA4B,IAArB,EAAAe,CAAiB,EAAYf,CAAK,CAAGgB,CAAK,CAACnD,MAAlD,CAA0D,CACxD,GAAImC,CAAK,GAAKgB,CAAK,CAACnD,MAAN,CAAe,CAA7B,CACEoD,CAAS,CACP7E,CAAW,CAAC2E,CAAD,CAAoBC,CAAK,CAAChB,CAAD,CAAzB,CAAX,EACG1D,CAAuB,CAACyE,CAAD,CAAoBC,CAAK,CAAChB,CAAD,CAAzB,CAF5B,CAKFe,CAAiB,CAAGA,CAAiB,CAACC,CAAK,CAAChB,CAAK,EAAN,CAAN,CACtC,CACF,CA/BD,IA+BO,CACLe,CAAiB,CAAGD,CAAO,CAACV,IAAR,CAAaM,CAAb,CAApB,CAqBAO,CAAS,CAAG7E,CAAW,CAAC0E,CAAO,CAACV,IAAT,CAAeM,CAAf,CACxB,CAED,GAAIO,CAAJ,CAAe,CACbvC,CAAK,CAAGqC,CAAR,CACA,KACD,CAEDD,CAAO,CAAGA,CAAO,CAACN,MACnB,CAEDD,CAAK,CAACG,CAAD,CAAL,CAAchC,CACf,CAED,GAAI5C,CAAU,CAAC4C,CAAD,CAAd,CACEA,CAAK,CAAGA,CAAK,CAAC7C,IAAN,CAAW,KAAKuE,IAAhB,CAAR,CAEF,MAAO1B,CAAAA,CACR,CAjFD,CAwFA,QAASyC,CAAAA,CAAT,EAAmB,CACjB,KAAKZ,KAAL,CAAa,EACd,CAKDY,CAAM,CAAC3F,SAAP,CAAiB4F,UAAjB,CAA8B,UAAuB,CACnD,KAAKb,KAAL,CAAa,EACd,CAFD,CASAY,CAAM,CAAC3F,SAAP,CAAiB6F,KAAjB,CAAyB,SAAgBnE,CAAhB,CAA0BC,CAA1B,CAAgC,IACnDoD,CAAAA,CAAK,CAAG,KAAKA,KADsC,CAEnDe,CAAQ,CAAGpE,CAAQ,CAAG,GAAX,CAAiB,CAACC,CAAI,EAAI9B,CAAQ,CAAC8B,IAAlB,EAAwBoE,IAAxB,CAA6B,GAA7B,CAFuB,CAGnDjE,CAAM,CAAGiD,CAAK,CAACe,CAAD,CAHqC,CAKvD,GAAc,IAAV,EAAAhE,CAAJ,CACEA,CAAM,CAAGiD,CAAK,CAACe,CAAD,CAAL,CAAkBrE,CAAa,CAACC,CAAD,CAAWC,CAAX,CAAxC,CAEF,MAAOG,CAAAA,CACR,CATD,CAwBA6D,CAAM,CAAC3F,SAAP,CAAiBgG,MAAjB,CAA0B,SAAiBtE,CAAjB,CAA2BkD,CAA3B,CAAiCqB,CAAjC,CAA2CtE,CAA3C,CAAiD,IACrEG,CAAAA,CAAM,CAAG,KAAK+D,KAAL,CAAWnE,CAAX,CAAqBC,CAArB,CAD4D,CAErE2D,CAAO,CAAIV,CAAI,WAAYD,CAAAA,CAAjB,CAA4BC,CAA5B,CAAmC,GAAID,CAAAA,CAAJ,CAAYC,CAAZ,CAFwB,CAGzE,MAAO,MAAKsB,YAAL,CAAkBpE,CAAlB,CAA0BwD,CAA1B,CAAmCW,CAAnC,CAA6CvE,CAA7C,CAAuDC,CAAvD,CACR,CAJD,CAeAgE,CAAM,CAAC3F,SAAP,CAAiBkG,YAAjB,CAAgC,SAAuBpE,CAAvB,CAA+BwD,CAA/B,CAAwCW,CAAxC,CAAkDE,CAAlD,CAAoExE,CAApE,CAA0E,CAIxG,OAHIyE,CAAAA,CAAM,CAAG,EAGb,CADIhD,CACJ,CADWiD,CACX,CADmBnD,CACnB,CAASO,CAAC,CAAG,CAAb,CAAgBS,CAAS,CAAGpC,CAAM,CAACO,MAAnC,CAA2CoB,CAAC,CAAGS,CAA/C,CAA0D,EAAET,CAA5D,CAA+D,CAC7DP,CAAK,OAAL,CACAE,CAAK,CAAGtB,CAAM,CAAC2B,CAAD,CAAd,CACA4C,CAAM,CAAGjD,CAAK,CAAC,CAAD,CAAd,CAEA,GAAe,GAAX,GAAAiD,CAAJ,CAAoBnD,CAAK,CAAG,KAAKoD,aAAL,CAAmBlD,CAAnB,CAA0BkC,CAA1B,CAAmCW,CAAnC,CAA6CE,CAA7C,CAAR,CAApB,IACK,IAAe,GAAX,GAAAE,CAAJ,CAAoBnD,CAAK,CAAG,KAAKqD,cAAL,CAAoBnD,CAApB,CAA2BkC,CAA3B,CAAoCW,CAApC,CAA8CE,CAA9C,CAAR,CAApB,IACA,IAAe,GAAX,GAAAE,CAAJ,CAAoBnD,CAAK,CAAG,KAAKsD,aAAL,CAAmBpD,CAAnB,CAA0BkC,CAA1B,CAAmCW,CAAnC,CAA6CtE,CAA7C,CAAR,CAApB,IACA,IAAe,GAAX,GAAA0E,CAAJ,CAAoBnD,CAAK,CAAG,KAAKuD,WAAL,CAAiBrD,CAAjB,CAAwBkC,CAAxB,CAAiCW,CAAjC,CAA2CE,CAA3C,CAAR,CAApB,IACA,IAAe,GAAX,GAAAE,CAAJ,CAAoBnD,CAAK,CAAG,KAAKwD,mBAAL,CAAyBtD,CAAzB,CAAgCkC,CAAhC,CAAyCW,CAAzC,CAAmDE,CAAnD,CAAR,CAApB,IACA,IAAe,GAAX,GAAAE,CAAJ,CAAoBnD,CAAK,CAAG,KAAKyD,cAAL,CAAoBvD,CAApB,CAA2BkC,CAA3B,CAAR,CAApB,IACA,IAAe,MAAX,GAAAe,CAAJ,CAAuBnD,CAAK,CAAG,KAAK0D,YAAL,CAAkBxD,CAAlB,CAAyBkC,CAAzB,CAAR,CAAvB,IACA,IAAe,MAAX,GAAAe,CAAJ,CAAuBnD,CAAK,CAAG,KAAK2D,QAAL,CAAczD,CAAd,CAAR,CAE5B,GAAIF,CAAK,SAAT,CACEkD,CAAM,EAAIlD,CACb,CAED,MAAOkD,CAAAA,CACR,CAvBD,CAyBAT,CAAM,CAAC3F,SAAP,CAAiBsG,aAAjB,CAAiC,SAAwBlD,CAAxB,CAA+BkC,CAA/B,CAAwCW,CAAxC,CAAkDE,CAAlD,CAAoE,IAC/FW,CAAAA,CAAI,CAAG,IADwF,CAE/FV,CAAM,CAAG,EAFsF,CAG/FlD,CAAK,CAAGoC,CAAO,CAACD,MAAR,CAAejC,CAAK,CAAC,CAAD,CAApB,CAHuF,CAOnG,QAAS2D,CAAAA,CAAT,CAAoBrF,CAApB,CAA8B,CAC5B,MAAOoF,CAAAA,CAAI,CAACd,MAAL,CAAYtE,CAAZ,CAAsB4D,CAAtB,CAA+BW,CAA/B,CACR,CAED,GAAI,CAAC/C,CAAL,CAAY,OAEZ,GAAIhD,CAAO,CAACgD,CAAD,CAAX,CAAoB,CAClB,IAAK,GAAI8D,CAAAA,CAAC,CAAG,CAAR,CAAWtD,CAAW,CAAGR,CAAK,CAACb,MAApC,CAA4C2E,CAAC,CAAGtD,CAAhD,CAA6D,EAAEsD,CAA/D,CAAkE,CAChEZ,CAAM,EAAI,KAAKF,YAAL,CAAkB9C,CAAK,CAAC,CAAD,CAAvB,CAA4BkC,CAAO,CAAC1B,IAAR,CAAaV,CAAK,CAAC8D,CAAD,CAAlB,CAA5B,CAAoDf,CAApD,CAA8DE,CAA9D,CACX,CACF,CAJD,IAIO,IAAqB,QAAjB,WAAOjD,CAAP,GAA8C,QAAjB,QAAOA,CAAAA,CAApC,EAA2E,QAAjB,QAAOA,CAAAA,CAArE,CAAyF,CAC9FkD,CAAM,EAAI,KAAKF,YAAL,CAAkB9C,CAAK,CAAC,CAAD,CAAvB,CAA4BkC,CAAO,CAAC1B,IAAR,CAAaV,CAAb,CAA5B,CAAiD+C,CAAjD,CAA2DE,CAA3D,CACX,CAFM,IAEA,IAAI7F,CAAU,CAAC4C,CAAD,CAAd,CAAuB,CAC5B,GAAgC,QAA5B,QAAOiD,CAAAA,CAAX,CACE,KAAM,IAAItD,CAAAA,KAAJ,CAAU,gEAAV,CAAN,CAGFK,CAAK,CAAGA,CAAK,CAAC7C,IAAN,CAAWiF,CAAO,CAACV,IAAnB,CAAyBuB,CAAgB,CAACc,KAAjB,CAAuB7D,CAAK,CAAC,CAAD,CAA5B,CAAiCA,CAAK,CAAC,CAAD,CAAtC,CAAzB,CAAqE2D,CAArE,CAAR,CAEA,GAAa,IAAT,EAAA7D,CAAJ,CACEkD,CAAM,EAAIlD,CACb,CATM,IASA,CACLkD,CAAM,EAAI,KAAKF,YAAL,CAAkB9C,CAAK,CAAC,CAAD,CAAvB,CAA4BkC,CAA5B,CAAqCW,CAArC,CAA+CE,CAA/C,CACX,CACD,MAAOC,CAAAA,CACR,CAhCD,CAkCAT,CAAM,CAAC3F,SAAP,CAAiBuG,cAAjB,CAAkC,SAAyBnD,CAAzB,CAAgCkC,CAAhC,CAAyCW,CAAzC,CAAmDE,CAAnD,CAAqE,CACrG,GAAIjD,CAAAA,CAAK,CAAGoC,CAAO,CAACD,MAAR,CAAejC,CAAK,CAAC,CAAD,CAApB,CAAZ,CAIA,GAAI,CAACF,CAAD,EAAWhD,CAAO,CAACgD,CAAD,CAAP,EAAmC,CAAjB,GAAAA,CAAK,CAACb,MAAvC,CACE,MAAO,MAAK6D,YAAL,CAAkB9C,CAAK,CAAC,CAAD,CAAvB,CAA4BkC,CAA5B,CAAqCW,CAArC,CAA+CE,CAA/C,CACV,CAPD,CASAR,CAAM,CAAC3F,SAAP,CAAiBkH,aAAjB,CAAiC,SAAwBC,CAAxB,CAAiCjF,CAAjC,CAA8CN,CAA9C,CAA+D,CAG9F,OAFIwF,CAAAA,CAAmB,CAAGlF,CAAW,CAACvB,OAAZ,CAAoB,SAApB,CAA+B,EAA/B,CAE1B,CADI0G,CAAW,CAAGF,CAAO,CAACvE,KAAR,CAAc,IAAd,CAClB,CAASa,CAAC,CAAG,CAAb,CAAgBA,CAAC,CAAG4D,CAAW,CAAChF,MAAhC,CAAwCoB,CAAC,EAAzC,CAA6C,CAC3C,GAAI4D,CAAW,CAAC5D,CAAD,CAAX,CAAepB,MAAf,GAA8B,CAAJ,CAAAoB,CAAC,EAAQ,CAAC7B,CAApC,CAAJ,CAA0D,CACxDyF,CAAW,CAAC5D,CAAD,CAAX,CAAiB2D,CAAmB,CAAGC,CAAW,CAAC5D,CAAD,CACnD,CACF,CACD,MAAO4D,CAAAA,CAAW,CAACtB,IAAZ,CAAiB,IAAjB,CACR,CATD,CAWAJ,CAAM,CAAC3F,SAAP,CAAiBwG,aAAjB,CAAiC,SAAwBpD,CAAxB,CAA+BkC,CAA/B,CAAwCW,CAAxC,CAAkDtE,CAAlD,CAAwD,CACvF,GAAI,CAACsE,CAAL,CAAe,OAEf,GAAI/C,CAAAA,CAAK,CAAG5C,CAAU,CAAC2F,CAAD,CAAV,CAAuBA,CAAQ,CAAC7C,CAAK,CAAC,CAAD,CAAN,CAA/B,CAA4C6C,CAAQ,CAAC7C,CAAK,CAAC,CAAD,CAAN,CAAhE,CACA,GAAa,IAAT,EAAAF,CAAJ,CAAmB,IACbtB,CAAAA,CAAe,CAAGwB,CAAK,CAAC,CAAD,CADV,CAEbjB,CAAQ,CAAGiB,CAAK,CAAC,CAAD,CAFH,CAGblB,CAAW,CAAGkB,CAAK,CAAC,CAAD,CAHN,CAIbkE,CAAa,CAAGpE,CAJH,CAKjB,GAAgB,CAAZ,EAAAf,CAAQ,EAASD,CAArB,CAAkC,CAChCoF,CAAa,CAAG,KAAKJ,aAAL,CAAmBhE,CAAnB,CAA0BhB,CAA1B,CAAuCN,CAAvC,CACjB,CACD,MAAO,MAAKsE,YAAL,CAAkB,KAAKL,KAAL,CAAWyB,CAAX,CAA0B3F,CAA1B,CAAlB,CAAmD2D,CAAnD,CAA4DW,CAA5D,CAAsEqB,CAAtE,CACR,CACF,CAdD,CAgBA3B,CAAM,CAAC3F,SAAP,CAAiByG,WAAjB,CAA+B,SAAsBrD,CAAtB,CAA6BkC,CAA7B,CAAsCW,CAAtC,CAAgDE,CAAhD,CAAkE,CAC/F,GAAI,CAACF,CAAL,CAAe,OAEf,GAAI/C,CAAAA,CAAK,CAAG5C,CAAU,CAAC2F,CAAD,CAAV,CAAuBA,CAAQ,CAAC7C,CAAK,CAAC,CAAD,CAAN,CAA/B,CAA4C6C,CAAQ,CAAC7C,CAAK,CAAC,CAAD,CAAN,CAAhE,CACA,GAAa,IAAT,EAAAF,CAAJ,CAEEoC,CAAO,CAACH,cAAR,GAEF,KAAKe,YAAL,CAAkB9C,CAAK,CAAC,CAAD,CAAvB,CAA4BkC,CAA5B,CAAqCW,CAArC,CAA+CE,CAA/C,EAEA,GAAIoB,CAAAA,CAAM,CAAG,KAAKrB,YAAL,CAAkB,KAAKL,KAAL,CAAW3C,CAAX,CAAlB,CAAqCoC,CAArC,CAA8CW,CAA9C,CAAwD/C,CAAxD,CAAb,CAEAoC,CAAO,CAACH,cAAR,GACA,MAAOoC,CAAAA,CACR,CAdD,CAgBA5B,CAAM,CAAC3F,SAAP,CAAiB0G,mBAAjB,CAAuC,SAA8BtD,CAA9B,CAAqCkC,CAArC,CAA8CW,CAA9C,CAAwDE,CAAxD,CAA0E,IAC3GjD,CAAAA,CAAK,CAAGE,CAAK,CAAC,CAAD,CAD8F,CAG3GoE,CAAM,CAAGlC,CAAO,CAACF,WAAR,CAAoBlC,CAApB,CAHkG,CAI/G,GAAI,CAACsE,CAAL,CAAa,CACXlC,CAAO,CAACL,WAAR,CAAoB/B,CAApB,CAA2BiD,CAAgB,CAACc,KAAjB,CAAuB7D,CAAK,CAAC,CAAD,CAA5B,CAAiCA,CAAK,CAAC,CAAD,CAAtC,CAA3B,EACA,MAAO,MAAK8C,YAAL,CAAkB9C,CAAK,CAAC,CAAD,CAAvB,CAA4BkC,CAA5B,CAAqCW,CAArC,CAA+CE,CAA/C,CACR,CAHD,IAGO,CACL,MAAO,MAAKD,YAAL,CAAkB,KAAKL,KAAL,CAAW2B,CAAX,CAAlB,CAAsClC,CAAtC,CAA+CW,CAA/C,CAAyDuB,CAAzD,CACR,CACF,CAVD,CAYA7B,CAAM,CAAC3F,SAAP,CAAiB2G,cAAjB,CAAkC,SAAyBvD,CAAzB,CAAgCkC,CAAhC,CAAyC,CACzE,GAAIpC,CAAAA,CAAK,CAAGoC,CAAO,CAACD,MAAR,CAAejC,CAAK,CAAC,CAAD,CAApB,CAAZ,CACA,GAAa,IAAT,EAAAF,CAAJ,CACE,MAAOA,CAAAA,CACV,CAJD,CAMAyC,CAAM,CAAC3F,SAAP,CAAiB4G,YAAjB,CAAgC,SAAuBxD,CAAvB,CAA8BkC,CAA9B,CAAuC,CACrE,GAAIpC,CAAAA,CAAK,CAAGoC,CAAO,CAACD,MAAR,CAAejC,CAAK,CAAC,CAAD,CAApB,CAAZ,CACA,GAAa,IAAT,EAAAF,CAAJ,CACE,MAAOrD,CAAAA,CAAQ,CAAC4H,MAAT,CAAgBvE,CAAhB,CACV,CAJD,CAMAyC,CAAM,CAAC3F,SAAP,CAAiB6G,QAAjB,CAA4B,SAAmBzD,CAAnB,CAA0B,CACpD,MAAOA,CAAAA,CAAK,CAAC,CAAD,CACb,CAFD,CAIAvD,CAAQ,CAACqF,IAAT,CAAgB,aAAhB,CACArF,CAAQ,CAAC6H,OAAT,CAAmB,OAAnB,CACA7H,CAAQ,CAAC8B,IAAT,CAAgB,CAAE,IAAF,CAAQ,IAAR,CAAhB,CAGA,GAAIgG,CAAAA,CAAa,CAAG,GAAIhC,CAAAA,CAAxB,CAKA9F,CAAQ,CAAC+F,UAAT,CAAsB,UAAuB,CAC3C,MAAO+B,CAAAA,CAAa,CAAC/B,UAAd,EACR,CAFD,CASA/F,CAAQ,CAACgG,KAAT,CAAiB,SAAgBnE,CAAhB,CAA0BC,CAA1B,CAAgC,CAC/C,MAAOgG,CAAAA,CAAa,CAAC9B,KAAd,CAAoBnE,CAApB,CAA8BC,CAA9B,CACR,CAFD,CAUA9B,CAAQ,CAACmG,MAAT,CAAkB,SAAiBtE,CAAjB,CAA2BkD,CAA3B,CAAiCqB,CAAjC,CAA2CtE,CAA3C,CAAiD,CACjE,GAAwB,QAApB,QAAOD,CAAAA,CAAX,CAAkC,CAChC,KAAM,IAAIkG,CAAAA,SAAJ,CAAc,2DACUrH,CAAO,CAACmB,CAAD,CADjB,mFAAd,CAGP,CAED,MAAOiG,CAAAA,CAAa,CAAC3B,MAAd,CAAqBtE,CAArB,CAA+BkD,CAA/B,CAAqCqB,CAArC,CAA+CtE,CAA/C,CACR,CARD,CAYA9B,CAAQ,CAACgI,OAAT,CAAmB,SAAkBnG,CAAlB,CAA4BkD,CAA5B,CAAkCqB,CAAlC,CAA4C6B,CAA5C,CAAkD,CAGnE,GAAIP,CAAAA,CAAM,CAAG1H,CAAQ,CAACmG,MAAT,CAAgBtE,CAAhB,CAA0BkD,CAA1B,CAAgCqB,CAAhC,CAAb,CAEA,GAAI3F,CAAU,CAACwH,CAAD,CAAd,CAAsB,CACpBA,CAAI,CAACP,CAAD,CACL,CAFD,IAEO,CACL,MAAOA,CAAAA,CACR,CACF,CAVD,CAcA1H,CAAQ,CAAC4H,MAAT,CA1rBA,SAAqB/G,CAArB,CAA6B,CAC3B,MAAO,CAAOA,CAAP,KAAeC,OAAf,CAAuB,cAAvB,CAAuC,SAAwBoH,CAAxB,CAA2B,CACvE,MAAOxG,CAAAA,CAAS,CAACwG,CAAD,CACjB,CAFM,CAGR,CAsrBD,CAGAlI,CAAQ,CAACkD,OAAT,CAAmBA,CAAnB,CACAlD,CAAQ,CAAC8E,OAAT,CAAmBA,CAAnB,CACA9E,CAAQ,CAAC8F,MAAT,CAAkBA,CAAlB,CAEA,MAAO9F,CAAAA,CACR,CA9wBA,CAAD","sourcesContent":["// The MIT License\n//\n// Copyright (c) 2009 Chris Wanstrath (Ruby)\n// Copyright (c) 2010-2014 Jan Lehnardt (JavaScript)\n// Copyright (c) 2010-2015 The mustache.js community\n//\n// Permission is hereby granted, free of charge, to any person obtaining\n// a copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to\n// permit persons to whom the Software is furnished to do so, subject to\n// the following conditions:\n//\n// The above copyright notice and this permission notice shall be\n// included in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n//\n\n// Description of import into Moodle:\n// Checkout from https://github.com/moodle/custom-mustache.js Branch: LAMBDA_ARGS\n// Rebase onto latest release tag from https://github.com/janl/mustache.js\n// Copy mustache.js into lib/amd/src/ in Moodle folder.\n// Add the license as a comment to the file and these instructions.\n// Add jshint tags so this file is not linted.\n// Remove the \"global define:\" comment (hint for linter)\n// Make sure that you have not removed the custom code for '$' and '<'.\n\n/*!\n * mustache.js - Logic-less {{mustache}} templates with JavaScript\n * http://github.com/janl/mustache.js\n */\n\n/* jshint ignore:start */\n\n(function defineMustache (global, factory) {\n  if (typeof exports === 'object' && exports && typeof exports.nodeName !== 'string') {\n    factory(exports); // CommonJS\n  } else if (typeof define === 'function' && define.amd) {\n    define(['exports'], factory); // AMD\n  } else {\n    global.Mustache = {};\n    factory(global.Mustache); // script, wsh, asp\n  }\n}(this, function mustacheFactory (mustache) {\n\n  var objectToString = Object.prototype.toString;\n  var isArray = Array.isArray || function isArrayPolyfill (object) {\n    return objectToString.call(object) === '[object Array]';\n  };\n\n  function isFunction (object) {\n    return typeof object === 'function';\n  }\n\n  /**\n   * More correct typeof string handling array\n   * which normally returns typeof 'object'\n   */\n  function typeStr (obj) {\n    return isArray(obj) ? 'array' : typeof obj;\n  }\n\n  function escapeRegExp (string) {\n    return string.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, '\\\\$&');\n  }\n\n  /**\n   * Null safe way of checking whether or not an object,\n   * including its prototype, has a given property\n   */\n  function hasProperty (obj, propName) {\n    return obj != null && typeof obj === 'object' && (propName in obj);\n  }\n\n  /**\n   * Safe way of detecting whether or not the given thing is a primitive and\n   * whether it has the given property\n   */\n  function primitiveHasOwnProperty (primitive, propName) {\n    return (\n      primitive != null\n      && typeof primitive !== 'object'\n      && primitive.hasOwnProperty\n      && primitive.hasOwnProperty(propName)\n    );\n  }\n\n  // Workaround for https://issues.apache.org/jira/browse/COUCHDB-577\n  // See https://github.com/janl/mustache.js/issues/189\n  var regExpTest = RegExp.prototype.test;\n  function testRegExp (re, string) {\n    return regExpTest.call(re, string);\n  }\n\n  var nonSpaceRe = /\\S/;\n  function isWhitespace (string) {\n    return !testRegExp(nonSpaceRe, string);\n  }\n\n  var entityMap = {\n    '&': '&amp;',\n    '<': '&lt;',\n    '>': '&gt;',\n    '\"': '&quot;',\n    \"'\": '&#39;',\n    '/': '&#x2F;',\n    '`': '&#x60;',\n    '=': '&#x3D;'\n  };\n\n  function escapeHtml (string) {\n    return String(string).replace(/[&<>\"'`=\\/]/g, function fromEntityMap (s) {\n      return entityMap[s];\n    });\n  }\n\n  var whiteRe = /\\s*/;\n  var spaceRe = /\\s+/;\n  var equalsRe = /\\s*=/;\n  var curlyRe = /\\s*\\}/;\n  var tagRe = /#|\\^|\\/|>|\\{|&|=|!|\\$|</;\n\n  /**\n   * Breaks up the given `template` string into a tree of tokens. If the `tags`\n   * argument is given here it must be an array with two string values: the\n   * opening and closing tags used in the template (e.g. [ \"<%\", \"%>\" ]). Of\n   * course, the default is to use mustaches (i.e. mustache.tags).\n   *\n   * A token is an array with at least 4 elements. The first element is the\n   * mustache symbol that was used inside the tag, e.g. \"#\" or \"&\". If the tag\n   * did not contain a symbol (i.e. {{myValue}}) this element is \"name\". For\n   * all text that appears outside a symbol this element is \"text\".\n   *\n   * The second element of a token is its \"value\". For mustache tags this is\n   * whatever else was inside the tag besides the opening symbol. For text tokens\n   * this is the text itself.\n   *\n   * The third and fourth elements of the token are the start and end indices,\n   * respectively, of the token in the original template.\n   *\n   * Tokens that are the root node of a subtree contain two more elements: 1) an\n   * array of tokens in the subtree and 2) the index in the original template at\n   * which the closing tag for that section begins.\n   *\n   * Tokens for partials also contain two more elements: 1) a string value of\n   * indendation prior to that tag and 2) the index of that tag on that line -\n   * eg a value of 2 indicates the partial is the third tag on this line.\n   */\n  function parseTemplate (template, tags) {\n    if (!template)\n      return [];\n    var lineHasNonSpace = false;\n    var sections = [];     // Stack to hold section tokens\n    var tokens = [];       // Buffer to hold the tokens\n    var spaces = [];       // Indices of whitespace tokens on the current line\n    var hasTag = false;    // Is there a {{tag}} on the current line?\n    var nonSpace = false;  // Is there a non-space char on the current line?\n    var indentation = '';  // Tracks indentation for tags that use it\n    var tagIndex = 0;      // Stores a count of number of tags encountered on a line\n\n    // Strips all whitespace tokens array for the current line\n    // if there was a {{#tag}} on it and otherwise only space.\n    function stripSpace () {\n      if (hasTag && !nonSpace) {\n        while (spaces.length)\n          delete tokens[spaces.pop()];\n      } else {\n        spaces = [];\n      }\n\n      hasTag = false;\n      nonSpace = false;\n    }\n\n    var openingTagRe, closingTagRe, closingCurlyRe;\n    function compileTags (tagsToCompile) {\n      if (typeof tagsToCompile === 'string')\n        tagsToCompile = tagsToCompile.split(spaceRe, 2);\n\n      if (!isArray(tagsToCompile) || tagsToCompile.length !== 2)\n        throw new Error('Invalid tags: ' + tagsToCompile);\n\n      openingTagRe = new RegExp(escapeRegExp(tagsToCompile[0]) + '\\\\s*');\n      closingTagRe = new RegExp('\\\\s*' + escapeRegExp(tagsToCompile[1]));\n      closingCurlyRe = new RegExp('\\\\s*' + escapeRegExp('}' + tagsToCompile[1]));\n    }\n\n    compileTags(tags || mustache.tags);\n\n    var scanner = new Scanner(template);\n\n    var start, type, value, chr, token, openSection;\n    while (!scanner.eos()) {\n      start = scanner.pos;\n\n      // Match any text between tags.\n      value = scanner.scanUntil(openingTagRe);\n\n      if (value) {\n        for (var i = 0, valueLength = value.length; i < valueLength; ++i) {\n          chr = value.charAt(i);\n\n          if (isWhitespace(chr)) {\n            spaces.push(tokens.length);\n            indentation += chr;\n          } else {\n            nonSpace = true;\n            lineHasNonSpace = true;\n            indentation += ' ';\n          }\n\n          tokens.push([ 'text', chr, start, start + 1 ]);\n          start += 1;\n\n          // Check for whitespace on the current line.\n          if (chr === '\\n') {\n            stripSpace();\n            indentation = '';\n            tagIndex = 0;\n            lineHasNonSpace = false;\n          }\n        }\n      }\n\n      // Match the opening tag.\n      if (!scanner.scan(openingTagRe))\n        break;\n\n      hasTag = true;\n\n      // Get the tag type.\n      type = scanner.scan(tagRe) || 'name';\n      scanner.scan(whiteRe);\n\n      // Get the tag value.\n      if (type === '=') {\n        value = scanner.scanUntil(equalsRe);\n        scanner.scan(equalsRe);\n        scanner.scanUntil(closingTagRe);\n      } else if (type === '{') {\n        value = scanner.scanUntil(closingCurlyRe);\n        scanner.scan(curlyRe);\n        scanner.scanUntil(closingTagRe);\n        type = '&';\n      } else {\n        value = scanner.scanUntil(closingTagRe);\n      }\n\n      // Match the closing tag.\n      if (!scanner.scan(closingTagRe))\n        throw new Error('Unclosed tag at ' + scanner.pos);\n\n      if (type == '>') {\n        token = [ type, value, start, scanner.pos, indentation, tagIndex, lineHasNonSpace ];\n      } else {\n        token = [ type, value, start, scanner.pos ];\n      }\n      tagIndex++;\n      tokens.push(token);\n\n      if (type === '#' || type === '^' || type === '$' || type === '<') {\n        sections.push(token);\n      } else if (type === '/') {\n        // Check section nesting.\n        openSection = sections.pop();\n\n        if (!openSection)\n          throw new Error('Unopened section \"' + value + '\" at ' + start);\n\n        if (openSection[1] !== value)\n          throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + start);\n      } else if (type === 'name' || type === '{' || type === '&') {\n        nonSpace = true;\n      } else if (type === '=') {\n        // Set the tags for the next time around.\n        compileTags(value);\n      }\n    }\n\n    stripSpace();\n\n    // Make sure there are no open sections when we're done.\n    openSection = sections.pop();\n\n    if (openSection)\n      throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + scanner.pos);\n\n    return nestTokens(squashTokens(tokens));\n  }\n\n  /**\n   * Combines the values of consecutive text tokens in the given `tokens` array\n   * to a single token.\n   */\n  function squashTokens (tokens) {\n    var squashedTokens = [];\n\n    var token, lastToken;\n    for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n      token = tokens[i];\n\n      if (token) {\n        if (token[0] === 'text' && lastToken && lastToken[0] === 'text') {\n          lastToken[1] += token[1];\n          lastToken[3] = token[3];\n        } else {\n          squashedTokens.push(token);\n          lastToken = token;\n        }\n      }\n    }\n\n    return squashedTokens;\n  }\n\n  /**\n   * Forms the given array of `tokens` into a nested tree structure where\n   * tokens that represent a section have two additional items: 1) an array of\n   * all tokens that appear in that section and 2) the index in the original\n   * template that represents the end of that section.\n   */\n  function nestTokens (tokens) {\n    var nestedTokens = [];\n    var collector = nestedTokens;\n    var sections = [];\n\n    var token, section;\n    for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n      token = tokens[i];\n\n      switch (token[0]) {\n        case '$':\n        case '<':\n        case '#':\n        case '^':\n          collector.push(token);\n          sections.push(token);\n          collector = token[4] = [];\n          break;\n        case '/':\n          section = sections.pop();\n          section[5] = token[2];\n          collector = sections.length > 0 ? sections[sections.length - 1][4] : nestedTokens;\n          break;\n        default:\n          collector.push(token);\n      }\n    }\n\n    return nestedTokens;\n  }\n\n  /**\n   * A simple string scanner that is used by the template parser to find\n   * tokens in template strings.\n   */\n  function Scanner (string) {\n    this.string = string;\n    this.tail = string;\n    this.pos = 0;\n  }\n\n  /**\n   * Returns `true` if the tail is empty (end of string).\n   */\n  Scanner.prototype.eos = function eos () {\n    return this.tail === '';\n  };\n\n  /**\n   * Tries to match the given regular expression at the current position.\n   * Returns the matched text if it can match, the empty string otherwise.\n   */\n  Scanner.prototype.scan = function scan (re) {\n    var match = this.tail.match(re);\n\n    if (!match || match.index !== 0)\n      return '';\n\n    var string = match[0];\n\n    this.tail = this.tail.substring(string.length);\n    this.pos += string.length;\n\n    return string;\n  };\n\n  /**\n   * Skips all text until the given regular expression can be matched. Returns\n   * the skipped string, which is the entire tail if no match can be made.\n   */\n  Scanner.prototype.scanUntil = function scanUntil (re) {\n    var index = this.tail.search(re), match;\n\n    switch (index) {\n      case -1:\n        match = this.tail;\n        this.tail = '';\n        break;\n      case 0:\n        match = '';\n        break;\n      default:\n        match = this.tail.substring(0, index);\n        this.tail = this.tail.substring(index);\n    }\n\n    this.pos += match.length;\n\n    return match;\n  };\n\n  /**\n   * Represents a rendering context by wrapping a view object and\n   * maintaining a reference to the parent context.\n   */\n  function Context (view, parentContext) {\n    this.view = view;\n    this.blocks = {};\n    this.cache = { '.': this.view };\n    this.parent = parentContext;\n  }\n\n  /**\n   * Creates a new context using the given view with this context\n   * as the parent.\n   */\n  Context.prototype.push = function push (view) {\n    return new Context(view, this);\n  };\n\n  /**\n   * Set a value in the current block context.\n   */\n  Context.prototype.setBlockVar = function set (name, value) {\n    var blocks = this.blocks;\n\n    blocks[name] = value;\n\n    return value;\n  };\n\n  /**\n   * Clear all current block vars.\n   */\n  Context.prototype.clearBlockVars = function clearBlockVars () {\n    this.blocks = {};\n  };\n\n  /**\n   * Get a value only from the current block context.\n   */\n  Context.prototype.getBlockVar = function getBlockVar (name) {\n    var blocks = this.blocks;\n\n    var value;\n    if (blocks.hasOwnProperty(name)) {\n      value = blocks[name];\n    } else {\n      if (this.parent) {\n        value = this.parent.getBlockVar(name);\n      }\n    }\n    // Can return undefined.\n    return value;\n  };\n\n  /**\n   * Returns the value of the given name in this context, traversing\n   * up the context hierarchy if the value is absent in this context's view.\n   */\n  Context.prototype.lookup = function lookup (name) {\n    var cache = this.cache;\n\n    var value;\n    if (cache.hasOwnProperty(name)) {\n      value = cache[name];\n    } else {\n      var context = this, intermediateValue, names, index, lookupHit = false;\n\n      while (context) {\n        if (name.indexOf('.') > 0) {\n          intermediateValue = context.view;\n          names = name.split('.');\n          index = 0;\n\n          /**\n           * Using the dot notion path in `name`, we descend through the\n           * nested objects.\n           *\n           * To be certain that the lookup has been successful, we have to\n           * check if the last object in the path actually has the property\n           * we are looking for. We store the result in `lookupHit`.\n           *\n           * This is specially necessary for when the value has been set to\n           * `undefined` and we want to avoid looking up parent contexts.\n           *\n           * In the case where dot notation is used, we consider the lookup\n           * to be successful even if the last \"object\" in the path is\n           * not actually an object but a primitive (e.g., a string, or an\n           * integer), because it is sometimes useful to access a property\n           * of an autoboxed primitive, such as the length of a string.\n           **/\n          while (intermediateValue != null && index < names.length) {\n            if (index === names.length - 1)\n              lookupHit = (\n                hasProperty(intermediateValue, names[index])\n                || primitiveHasOwnProperty(intermediateValue, names[index])\n              );\n\n            intermediateValue = intermediateValue[names[index++]];\n          }\n        } else {\n          intermediateValue = context.view[name];\n\n          /**\n           * Only checking against `hasProperty`, which always returns `false` if\n           * `context.view` is not an object. Deliberately omitting the check\n           * against `primitiveHasOwnProperty` if dot notation is not used.\n           *\n           * Consider this example:\n           * ```\n           * Mustache.render(\"The length of a football field is {{#length}}{{length}}{{/length}}.\", {length: \"100 yards\"})\n           * ```\n           *\n           * If we were to check also against `primitiveHasOwnProperty`, as we do\n           * in the dot notation case, then render call would return:\n           *\n           * \"The length of a football field is 9.\"\n           *\n           * rather than the expected:\n           *\n           * \"The length of a football field is 100 yards.\"\n           **/\n          lookupHit = hasProperty(context.view, name);\n        }\n\n        if (lookupHit) {\n          value = intermediateValue;\n          break;\n        }\n\n        context = context.parent;\n      }\n\n      cache[name] = value;\n    }\n\n    if (isFunction(value))\n      value = value.call(this.view);\n\n    return value;\n  };\n\n  /**\n   * A Writer knows how to take a stream of tokens and render them to a\n   * string, given a context. It also maintains a cache of templates to\n   * avoid the need to parse the same template twice.\n   */\n  function Writer () {\n    this.cache = {};\n  }\n\n  /**\n   * Clears all cached templates in this writer.\n   */\n  Writer.prototype.clearCache = function clearCache () {\n    this.cache = {};\n  };\n\n  /**\n   * Parses and caches the given `template` according to the given `tags` or\n   * `mustache.tags` if `tags` is omitted,  and returns the array of tokens\n   * that is generated from the parse.\n   */\n  Writer.prototype.parse = function parse (template, tags) {\n    var cache = this.cache;\n    var cacheKey = template + ':' + (tags || mustache.tags).join(':');\n    var tokens = cache[cacheKey];\n\n    if (tokens == null)\n      tokens = cache[cacheKey] = parseTemplate(template, tags);\n\n    return tokens;\n  };\n\n  /**\n   * High-level method that is used to render the given `template` with\n   * the given `view`.\n   *\n   * The optional `partials` argument may be an object that contains the\n   * names and templates of partials that are used in the template. It may\n   * also be a function that is used to load partial templates on the fly\n   * that takes a single argument: the name of the partial.\n   *\n   * If the optional `tags` argument is given here it must be an array with two\n   * string values: the opening and closing tags used in the template (e.g.\n   * [ \"<%\", \"%>\" ]). The default is to mustache.tags.\n   */\n  Writer.prototype.render = function render (template, view, partials, tags) {\n    var tokens = this.parse(template, tags);\n    var context = (view instanceof Context) ? view : new Context(view);\n    return this.renderTokens(tokens, context, partials, template, tags);\n  };\n\n  /**\n   * Low-level method that renders the given array of `tokens` using\n   * the given `context` and `partials`.\n   *\n   * Note: The `originalTemplate` is only ever used to extract the portion\n   * of the original template that was contained in a higher-order section.\n   * If the template doesn't use higher-order sections, this argument may\n   * be omitted.\n   */\n  Writer.prototype.renderTokens = function renderTokens (tokens, context, partials, originalTemplate, tags) {\n    var buffer = '';\n\n    var token, symbol, value;\n    for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n      value = undefined;\n      token = tokens[i];\n      symbol = token[0];\n\n      if (symbol === '#') value = this.renderSection(token, context, partials, originalTemplate);\n      else if (symbol === '^') value = this.renderInverted(token, context, partials, originalTemplate);\n      else if (symbol === '>') value = this.renderPartial(token, context, partials, tags);\n      else if (symbol === '<') value = this.renderBlock(token, context, partials, originalTemplate);\n      else if (symbol === '$') value = this.renderBlockVariable(token, context, partials, originalTemplate);\n      else if (symbol === '&') value = this.unescapedValue(token, context);\n      else if (symbol === 'name') value = this.escapedValue(token, context);\n      else if (symbol === 'text') value = this.rawValue(token);\n\n      if (value !== undefined)\n        buffer += value;\n    }\n\n    return buffer;\n  };\n\n  Writer.prototype.renderSection = function renderSection (token, context, partials, originalTemplate) {\n    var self = this;\n    var buffer = '';\n    var value = context.lookup(token[1]);\n\n    // This function is used to render an arbitrary template\n    // in the current context by higher-order sections.\n    function subRender (template) {\n      return self.render(template, context, partials);\n    }\n\n    if (!value) return;\n\n    if (isArray(value)) {\n      for (var j = 0, valueLength = value.length; j < valueLength; ++j) {\n        buffer += this.renderTokens(token[4], context.push(value[j]), partials, originalTemplate);\n      }\n    } else if (typeof value === 'object' || typeof value === 'string' || typeof value === 'number') {\n      buffer += this.renderTokens(token[4], context.push(value), partials, originalTemplate);\n    } else if (isFunction(value)) {\n      if (typeof originalTemplate !== 'string')\n        throw new Error('Cannot use higher-order sections without the original template');\n\n      // Extract the portion of the original template that the section contains.\n      value = value.call(context.view, originalTemplate.slice(token[3], token[5]), subRender);\n\n      if (value != null)\n        buffer += value;\n    } else {\n      buffer += this.renderTokens(token[4], context, partials, originalTemplate);\n    }\n    return buffer;\n  };\n\n  Writer.prototype.renderInverted = function renderInverted (token, context, partials, originalTemplate) {\n    var value = context.lookup(token[1]);\n\n    // Use JavaScript's definition of falsy. Include empty arrays.\n    // See https://github.com/janl/mustache.js/issues/186\n    if (!value || (isArray(value) && value.length === 0))\n      return this.renderTokens(token[4], context, partials, originalTemplate);\n  };\n\n  Writer.prototype.indentPartial = function indentPartial (partial, indentation, lineHasNonSpace) {\n    var filteredIndentation = indentation.replace(/[^ \\t]/g, '');\n    var partialByNl = partial.split('\\n');\n    for (var i = 0; i < partialByNl.length; i++) {\n      if (partialByNl[i].length && (i > 0 || !lineHasNonSpace)) {\n        partialByNl[i] = filteredIndentation + partialByNl[i];\n      }\n    }\n    return partialByNl.join('\\n');\n  };\n\n  Writer.prototype.renderPartial = function renderPartial (token, context, partials, tags) {\n    if (!partials) return;\n\n    var value = isFunction(partials) ? partials(token[1]) : partials[token[1]];\n    if (value != null) {\n      var lineHasNonSpace = token[6];\n      var tagIndex = token[5];\n      var indentation = token[4];\n      var indentedValue = value;\n      if (tagIndex == 0 && indentation) {\n        indentedValue = this.indentPartial(value, indentation, lineHasNonSpace);\n      }\n      return this.renderTokens(this.parse(indentedValue, tags), context, partials, indentedValue);\n    }\n  };\n\n  Writer.prototype.renderBlock = function renderBlock (token, context, partials, originalTemplate) {\n    if (!partials) return;\n\n    var value = isFunction(partials) ? partials(token[1]) : partials[token[1]];\n    if (value != null)\n    // Ignore any wrongly set block vars before we started.\n      context.clearBlockVars();\n    // We are only rendering to record the default block variables.\n    this.renderTokens(token[4], context, partials, originalTemplate);\n    // Now we render and return the result.\n    var result = this.renderTokens(this.parse(value), context, partials, value);\n    // Don't leak the block variables outside this include.\n    context.clearBlockVars();\n    return result;\n  };\n\n  Writer.prototype.renderBlockVariable = function renderBlockVariable (token, context, partials, originalTemplate) {\n    var value = token[1];\n\n    var exists = context.getBlockVar(value);\n    if (!exists) {\n      context.setBlockVar(value, originalTemplate.slice(token[3], token[5]));\n      return this.renderTokens(token[4], context, partials, originalTemplate);\n    } else {\n      return this.renderTokens(this.parse(exists), context, partials, exists);\n    }\n  };\n\n  Writer.prototype.unescapedValue = function unescapedValue (token, context) {\n    var value = context.lookup(token[1]);\n    if (value != null)\n      return value;\n  };\n\n  Writer.prototype.escapedValue = function escapedValue (token, context) {\n    var value = context.lookup(token[1]);\n    if (value != null)\n      return mustache.escape(value);\n  };\n\n  Writer.prototype.rawValue = function rawValue (token) {\n    return token[1];\n  };\n\n  mustache.name = 'mustache.js';\n  mustache.version = '3.1.0';\n  mustache.tags = [ '{{', '}}' ];\n\n  // All high-level mustache.* functions use this writer.\n  var defaultWriter = new Writer();\n\n  /**\n   * Clears all cached templates in the default writer.\n   */\n  mustache.clearCache = function clearCache () {\n    return defaultWriter.clearCache();\n  };\n\n  /**\n   * Parses and caches the given template in the default writer and returns the\n   * array of tokens it contains. Doing this ahead of time avoids the need to\n   * parse templates on the fly as they are rendered.\n   */\n  mustache.parse = function parse (template, tags) {\n    return defaultWriter.parse(template, tags);\n  };\n\n  /**\n   * Renders the `template` with the given `view` and `partials` using the\n   * default writer. If the optional `tags` argument is given here it must be an\n   * array with two string values: the opening and closing tags used in the\n   * template (e.g. [ \"<%\", \"%>\" ]). The default is to mustache.tags.\n   */\n  mustache.render = function render (template, view, partials, tags) {\n    if (typeof template !== 'string') {\n      throw new TypeError('Invalid template! Template should be a \"string\" ' +\n                          'but \"' + typeStr(template) + '\" was given as the first ' +\n                          'argument for mustache#render(template, view, partials)');\n    }\n\n    return defaultWriter.render(template, view, partials, tags);\n  };\n\n  // This is here for backwards compatibility with 0.4.x.,\n  /*eslint-disable */ // eslint wants camel cased function name\n  mustache.to_html = function to_html (template, view, partials, send) {\n    /*eslint-enable*/\n\n    var result = mustache.render(template, view, partials);\n\n    if (isFunction(send)) {\n      send(result);\n    } else {\n      return result;\n    }\n  };\n\n  // Export the escaping function so that the user may override it.\n  // See https://github.com/janl/mustache.js/issues/244\n  mustache.escape = escapeHtml;\n\n  // Export these mainly for testing, but also for advanced usage.\n  mustache.Scanner = Scanner;\n  mustache.Context = Context;\n  mustache.Writer = Writer;\n\n  return mustache;\n}));\n/* jshint ignore:end */\n"],"file":"mustache.min.js"}