{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./app/javascript/packs/translation.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/i18n-js/app/assets/javascripts/i18n.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","i18n","require","global","I18n","g","this","Function","e","window","root","_typeof","iterator","obj","constructor","slice","Array","padding","number","toString","substr","isObject","type","isFunction","func","isSet","isArray","val","isNumber","isBoolean","isNull","decimalAdjust","exp","Math","isNaN","NaN","split","lazyEvaluate","message","scope","DATE","day_names","abbr_day_names","month_names","abbr_month_names","meridian","NUMBER_FORMAT","precision","separator","delimiter","strip_insignificant_zeros","CURRENCY_FORMAT","unit","format","sign_first","PERCENTAGE_FORMAT","SIZE_UNITS","DEFAULT_OPTIONS","defaultLocale","locale","defaultSeparator","placeholder","fallbacks","translations","missingBehaviour","missingTranslationPrefix","reset","initializeOptions","locales","result","list","push","forEach","localeParts","firstFallback","secondFallback","length","join","indexOf","nullableFallbackLocale","pluralization","count","currentLocale","lookup","options","scopes","fullScope","getFullScope","shift","undefined","defaultValue","pluralizationLookupWithoutFallback","pluralizerKey","pluralizerKeys","pluralizer","pluralizationLookup","time","date","am","pm","prepareOptions","subject","args","arguments","attr","createTranslationOptions","translationOptions","defaults","concat","translate","translation","usedScope","optionsWithoutDefault","some","translationOption","interpolate","map","pluralize","missingTranslation","regex","matches","match","replace","nullPlaceholder","missingPlaceholder","RegExp","String","p1","p2","toLowerCase","apply","toNumber","formattedNumber","negative","parts","toFixed","abs","buffer","sign","unshift","max","toCurrency","localize","toPercentage","localizedValue","toTime","parseDate","convertedDate","fraction","parseInt","Date","UTC","setTime","parse","$1","$2","$3","$6","$4","$5","strftime","meridianOptions","getTime","Error","weekDay","getDay","day","getDate","year","getFullYear","month","getMonth","hour","getHours","hour12","secs","getSeconds","mins","getMinutes","offset","getTimezoneOffset","absOffsetHours","floor","absOffsetMinutes","timezoneoffset","dateString","date_string","toHumanSize","size","iterations","extend","obj1","obj2","merge","dest","factory"],"mappings":"aACE,IAAIA,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUC,QAGnC,IAAIC,EAASJ,EAAiBE,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,IAUV,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAASF,GAG/DG,EAAOE,GAAI,EAGJF,EAAOD,QAKfF,EAAoBQ,EAAIF,EAGxBN,EAAoBS,EAAIV,EAGxBC,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3CZ,EAAoBa,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEZ,EAAoBkB,EAAI,SAAShB,GACX,qBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,KAQvDrB,EAAoBsB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQrB,EAAoBqB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,kBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA1B,EAAoBkB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOrB,EAAoBU,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRzB,EAAoB6B,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAH,EAAoBU,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRZ,EAAoBa,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG/B,EAAoBkC,EAAI,UAIjBlC,EAAoBA,EAAoBmC,EAAI,I,sBClFrD,gBAAIC,EAAOC,EAAQ,IACnBC,EAAOC,KAAOH,I,mCCDd,IAAII,EAGJA,EAAI,WACH,OAAOC,KADJ,GAIJ,IAECD,EAAIA,GAAK,IAAIE,SAAS,cAAb,GACR,MAAOC,GAEc,kBAAXC,SAAqBJ,EAAII,QAOrCzC,EAAOD,QAAUsC,G,mBCnBjB,MAoBWK,EApBX,cAAyU,OAAtOC,EAArD,oBAAX3B,QAAoD,kBAApBA,OAAO4B,SAAmC,SAAiBC,GAAO,cAAcA,GAA2B,SAAiBA,GAAO,OAAOA,GAAyB,oBAAX7B,QAAyB6B,EAAIC,cAAgB9B,QAAU6B,IAAQ7B,OAAOa,UAAY,gBAAkBgB,IAAyBA,GAoB7UH,EAeRJ,UAVE,KAFD,aACE,OAWG,SAAUH,GACjB,aAEA,IAAIC,EAAOD,GAAUA,EAAOC,MAAQ,GAEhCW,EAAQC,MAAMnB,UAAUkB,MAExBE,EAAU,SAAiBC,GAC7B,OAAQ,IAAMA,EAAOC,YAAYC,QAAQ,IAWvCC,EAAW,SAAkBR,GAC/B,IAAIS,EAAOX,EAAQE,GAEnB,MAAgB,aAATS,GAAgC,WAATA,GAG5BC,EAAa,SAAoBC,GAGnC,MAAgB,aAFLb,EAAQa,IAMjBC,EAAQ,SAAevC,GACzB,MAAwB,qBAAVA,GAAmC,OAAVA,GAKrCwC,EAAU,SAAiBC,GAC7B,OAAIX,MAAMU,QACDV,MAAMU,QAAQC,GAGwB,mBAAxChD,OAAOkB,UAAUsB,SAAS/C,KAAKuD,IAOpCC,EAAW,SAAkBD,GAC/B,MAAsB,kBAARA,GAA4D,oBAAxChD,OAAOkB,UAAUsB,SAAS/C,KAAKuD,IAG/DE,EAAY,SAAmBF,GACjC,OAAe,IAARA,IAAwB,IAARA,GAGrBG,EAAS,SAAgBH,GAC3B,OAAe,OAARA,GAGLI,EAAgB,SAAuBT,EAAMpC,EAAO8C,GAEtD,MAAmB,qBAARA,GAAgC,KAARA,EAC1BC,KAAKX,GAAMpC,IAGpBA,GAASA,EACT8C,GAAOA,EAEHE,MAAMhD,IAA2B,kBAAR8C,GAAoBA,EAAM,IAAM,EACpDG,KAITjD,EAAQA,EAAMiC,WAAWiB,MAAM,QAG/BlD,GAFAA,EAAQ+C,KAAKX,KAAQpC,EAAM,GAAK,KAAOA,EAAM,IAAMA,EAAM,GAAK8C,GAAOA,MAEvDb,WAAWiB,MAAM,MAChB,GAAK,KAAOlD,EAAM,IAAMA,EAAM,GAAK8C,EAAMA,OAGtDK,EAAe,SAAsBC,EAASC,GAChD,OAAIhB,EAAWe,GACNA,EAAQC,GAERD,GAwBPE,EAAO,CACTC,UAAW,CAAC,SAAU,SAAU,UAAW,YAAa,WAAY,SAAU,YAC9EC,eAAgB,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC3DC,YAAa,CAAC,KAAM,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,YAClIC,iBAAkB,CAAC,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OACtGC,SAAU,CAAC,KAAM,OAGfC,EAAgB,CAClBC,UAAW,EACXC,UAAW,IACXC,UAAW,IACXC,2BAA2B,GAGzBC,EAAkB,CACpBC,KAAM,IACNL,UAAW,EACXM,OAAQ,OACRC,YAAY,EACZL,UAAW,IACXD,UAAW,KAGTO,EAAoB,CACtBH,KAAM,IACNL,UAAW,EACXM,OAAQ,OACRL,UAAW,IACXC,UAAW,IAGTO,EAAa,CAAC,KAAM,KAAM,KAAM,KAAM,MAEtCC,EAAkB,CAGpBC,cAAe,KAEfC,OAAQ,KAERC,iBAAkB,IAElBC,YAAa,+BAGbC,WAAW,EAEXC,aAAc,GAGdC,iBAAkB,UAIlBC,yBAA0B,IA02B5B,OAt2BA7D,EAAK8D,MAAQ,WACX,IAAI1E,EAEJ,IAAKA,KAAOiE,EACVnD,KAAKd,GAAOiE,EAAgBjE,IAKhCY,EAAK+D,kBAAoB,WACvB,IAAI3E,EAEJ,IAAKA,KAAOiE,EACLhC,EAAMnB,KAAKd,MACdc,KAAKd,GAAOiE,EAAgBjE,KAKlCY,EAAK+D,oBAgBL/D,EAAKgE,QAAU,GAGfhE,EAAKgE,QAAQtF,IAAM,SAAU6E,GAC3B,IAAIU,EAAS/D,KAAKqD,IAAWrD,KAAKF,EAAKuD,SAAWrD,KAAc,QAUhE,OARIiB,EAAW8C,KACbA,EAASA,EAAOV,KAGM,IAApBjC,EAAQ2C,KACVA,EAAS,CAACA,IAGLA,GAITjE,EAAKgE,QAAiB,QAAI,SAAUT,GAClC,IAAIS,EAAU,GACVE,EAAO,GAwGX,OArGIX,GACFS,EAAQG,KAAKZ,IAIVA,GAAUvD,EAAKuD,QAClBS,EAAQG,KAAKnE,EAAKuD,QAIhBvD,EAAK0D,WAAa1D,EAAKsD,eACzBU,EAAQG,KAAKnE,EAAKsD,eAwCpBU,EAAQI,SAAQ,SAAUb,GACxB,IAAIc,EAAcd,EAAOvB,MAAM,KAC3BsC,EAAgB,KAChBC,EAAiB,KAEM,IAAvBF,EAAYG,QACdF,EAAgB,CAACD,EAAY,GAAIA,EAAY,IAAII,KAAK,KACtDF,EAAiBF,EAAY,IACG,IAAvBA,EAAYG,SACrBF,EAAgBD,EAAY,KAGA,IAA1BH,EAAKQ,QAAQnB,IACfW,EAAKC,KAAKZ,GAGPvD,EAAK0D,WAIV,CAACY,EAAeC,GAAgBH,SAAQ,SAAUO,GAEV,qBAA3BA,GAIoB,OAA3BA,GAQAA,IAA2BpB,IAIe,IAA1CW,EAAKQ,QAAQC,IAIjBT,EAAKC,KAAKQ,SAITX,EAAQQ,QACXR,EAAQG,KAAK,MAGRD,GAITlE,EAAK4E,cAAgB,GAGrB5E,EAAK4E,cAAclG,IAAM,SAAU6E,GACjC,OAAOrD,KAAKqD,IAAWrD,KAAKF,EAAKuD,SAAWrD,KAAc,SAK5DF,EAAK4E,cAAuB,QAAI,SAAUC,GACxC,OAAQA,GACN,KAAK,EACH,MAAO,CAAC,OAAQ,SAElB,KAAK,EACH,MAAO,CAAC,OAEV,QACE,MAAO,CAAC,WAMd7E,EAAK8E,cAAgB,WACnB,OAAO5E,KAAKqD,QAAUrD,KAAKoD,eAI7BtD,EAAKqB,MAAQA,EAIbrB,EAAK+E,OAAS,SAAU5C,EAAO6C,GAC7BA,EAAUA,GAAW,GACrB,IACIzB,EACA0B,EACAC,EACAvB,EAJAK,EAAU9D,KAAK8D,QAAQtF,IAAIsG,EAAQzB,QAAQ5C,QAO/C,IAFAuE,EAAYhF,KAAKiF,aAAahD,EAAO6C,GAE9BhB,EAAQQ,QAKb,GAJAjB,EAASS,EAAQoB,QACjBH,EAASC,EAAUlD,MAAM9B,KAAKsD,kBAC9BG,EAAezD,KAAKyD,aAAaJ,GAEjC,CAIA,KAAO0B,EAAOT,aAGSa,KAFrB1B,EAAeA,EAAasB,EAAOG,WAEgB,OAAjBzB,IAKpC,QAAqB0B,IAAjB1B,GAA+C,OAAjBA,EAChC,OAAOA,EAIX,GAAItC,EAAM2D,EAAQM,cAChB,OAAOrD,EAAa+C,EAAQM,aAAcnD,IAK9CnC,EAAKuF,mCAAqC,SAAUV,EAAOtB,EAAQI,GACjE,IAEI6B,EACAtD,EAFAuD,EADavF,KAAK0E,cAAclG,IAAI6E,EACnBmC,CAAWb,GAIhC,GAAI5D,EAAS0C,GACX,KAAO8B,EAAejB,QAGpB,GAFAgB,EAAgBC,EAAeL,QAE3B/D,EAAMsC,EAAa6B,IAAiB,CACtCtD,EAAUyB,EAAa6B,GACvB,MAKN,OAAOtD,GAITlC,EAAK2F,oBAAsB,SAAUd,EAAO1C,EAAO6C,GACjDA,EAAUA,GAAW,GACrB,IACIzB,EACA0B,EACAtB,EACAzB,EAJA8B,EAAU9D,KAAK8D,QAAQtF,IAAIsG,EAAQzB,QAAQ5C,QAO/C,IAFAwB,EAAQjC,KAAKiF,aAAahD,EAAO6C,GAE1BhB,EAAQQ,QAKb,GAJAjB,EAASS,EAAQoB,QACjBH,EAAS9C,EAAMH,MAAM9B,KAAKsD,kBAC1BG,EAAezD,KAAKyD,aAAaJ,GAEjC,CAIA,KAAO0B,EAAOT,SACZb,EAAeA,EAAasB,EAAOG,SAE9BnE,EAAS0C,KAIQ,IAAlBsB,EAAOT,SACTtC,EAAUhC,KAAKqF,mCAAmCV,EAAOtB,EAAQI,IAIrE,GAAuB,qBAAZzB,GAAuC,OAAZA,EACpC,MAgBJ,MAZuB,qBAAZA,GAAuC,OAAZA,GAChCb,EAAM2D,EAAQM,gBAEdpD,EADEjB,EAAS+D,EAAQM,cACTpF,KAAKqF,mCAAmCV,EAAOG,EAAQzB,OAAQyB,EAAQM,cAEvEN,EAAQM,aAGpB3B,EAAeqB,EAAQM,cAIpB,CACLpD,QAASA,EACTyB,aAAcA,IASlB3D,EAAKyC,SAAW,WACd,IAAImD,EAAO1F,KAAK6E,OAAO,QACnBc,EAAO3F,KAAK6E,OAAO,QAEvB,OAAIa,GAAQA,EAAKE,IAAMF,EAAKG,GACnB,CAACH,EAAKE,GAAIF,EAAKG,IACbF,GAAQA,EAAKpD,SACfoD,EAAKpD,SAELL,EAAKK,UAUhBzC,EAAKgG,eAAiB,WAKpB,IAJA,IAEIC,EAFAC,EAAOvF,EAAM3C,KAAKmI,WAClBnB,EAAU,GAGPkB,EAAK1B,QAGV,GAAwB,UAApBjE,EAFJ0F,EAAUC,EAAKd,SAMf,IAAK,IAAIgB,KAAQH,EACVA,EAAQvG,eAAe0G,KAIxB/E,EAAM2D,EAAQoB,MAIlBpB,EAAQoB,GAAQH,EAAQG,KAI5B,OAAOpB,GAMThF,EAAKqG,yBAA2B,SAAUlE,EAAO6C,GAC/C,IAAIsB,EAAqB,CAAC,CACxBnE,MAAOA,IAgBT,OAZId,EAAM2D,EAAQuB,YAChBD,EAAqBA,EAAmBE,OAAOxB,EAAQuB,WAKrDlF,EAAM2D,EAAQM,eAChBgB,EAAmBnC,KAAK,CACtBjC,QAAS8C,EAAQM,eAIdgB,GAITtG,EAAKyG,UAAY,SAAUtE,EAAO6C,GAChCA,EAAUA,GAAW,GACrB,IACI0B,EADAJ,EAAqBpG,KAAKmG,yBAAyBlE,EAAO6C,GAE1D2B,EAAYxE,EACZyE,EAAwB1G,KAAK8F,eAAehB,GAiBhD,cAhBO4B,EAAsBtB,aAGNgB,EAAmBO,MAAK,SAAUC,GAQvD,GAPIzF,EAAMyF,EAAkB3E,QAC1BwE,EAAYG,EAAkB3E,MAC9BuE,EAAcxG,KAAK6E,OAAO4B,EAAWC,IAC5BvF,EAAMyF,EAAkB5E,WACjCwE,EAAczE,EAAa6E,EAAkB5E,QAASC,SAGpCkD,IAAhBqB,GAA6C,OAAhBA,EAC/B,OAAO,IAERxG,OAMwB,kBAAhBwG,EACTA,EAAcxG,KAAK6G,YAAYL,EAAa1B,GACnC1D,EAAQoF,GACjBA,EAAcA,EAAYM,KAAI,SAAUjI,GACtC,MAAoB,kBAANA,EAAiBmB,KAAK6G,YAAYhI,EAAGiG,GAAWjG,IAC7DmB,MACMe,EAASyF,IAAgBrF,EAAM2D,EAAQH,SAChD6B,EAAcxG,KAAK+G,UAAUjC,EAAQH,MAAO8B,EAAW3B,IAGlD0B,GAbExG,KAAKgH,mBAAmB/E,EAAO6C,IAiB1ChF,EAAK+G,YAAc,SAAU7E,EAAS8C,GACpC,GAAe,MAAX9C,EACF,OAAOA,EAGT8C,EAAUA,GAAW,GACrB,IACIvB,EACA3E,EACAV,EACA+I,EAJAC,EAAUlF,EAAQmF,MAAMnH,KAAKuD,aAMjC,IAAK2D,EACH,OAAOlF,EAGT,KAAOkF,EAAQ5C,QAEbpG,GADAqF,EAAc2D,EAAQhC,SACHkC,QAAQpH,KAAKuD,YAAa,MAG3C3E,EADEuC,EAAM2D,EAAQ5G,IACR4G,EAAQ5G,GAAM2C,WAAWuG,QAAQ,OAAQ,SACxClJ,KAAQ4G,EACT9E,KAAKqH,gBAAgB9D,EAAavB,EAAS8C,GAE3C9E,KAAKsH,mBAAmB/D,EAAavB,EAAS8C,GAGxDmC,EAAQ,IAAIM,OAAOhE,EAAY6D,QAAQ,MAAO,OAAOA,QAAQ,MAAO,QACpEpF,EAAUA,EAAQoF,QAAQH,EAAOrI,GAGnC,OAAOoD,EAAQoF,QAAQ,UAAW,MAMpCtH,EAAKiH,UAAY,SAAUpC,EAAO1C,EAAO6C,GAIvC,IAAIU,EAAYzB,EAGhB,OANAe,EAAU9E,KAAK8F,eAAe,CAC5BnB,MAAO6C,OAAO7C,IACbG,GAIgC,qBAFnCf,EAAS/D,KAAKyF,oBAAoBd,EAAO1C,EAAO6C,IAE9BrB,cAAuD,MAAvBM,EAAON,aAChDzD,KAAKgH,mBAAmB/E,EAAO6C,GAGV,qBAAnBf,EAAO/B,SAA6C,MAAlB+B,EAAO/B,QAC3ChC,KAAK6G,YAAY9C,EAAO/B,QAAS8C,IAExCU,EAAaxF,KAAK0E,cAAclG,IAAIsG,EAAQzB,QACrCrD,KAAKgH,mBAAmB/E,EAAQ,IAAMuD,EAAWb,GAAO,GAAIG,KAKvEhF,EAAKkH,mBAAqB,SAAU/E,EAAO6C,GAEzC,GAA8B,UAA1B9E,KAAK0D,iBAA8B,CAErC,IAAIhE,EAAIuC,EAAMH,MAAM,KAAKrB,OAAO,GAAG,GAEnC,OAAQT,KAAK2D,yBAAyBW,OAAS,EAAItE,KAAK2D,yBAA2B,IAAMjE,EAAE0H,QAAQ,KAAM,KAAKA,QAAQ,mBAAmB,SAAUD,EAAOM,EAAIC,GAC5J,OAAOD,EAAK,IAAMC,EAAGC,iBAOzB,MAAO,aADmB,CAFY,MAAX7C,GAAqC,MAAlBA,EAAQzB,OAAiByB,EAAQzB,OAASrD,KAAK4E,gBAC7E5E,KAAKiF,aAAahD,EAAO6C,IACmBP,KAAKvE,KAAKsD,kBAC1B,kBAI9CxD,EAAKwH,mBAAqB,SAAU/D,EAAavB,EAAS8C,GACxD,MAAO,YAAcvB,EAAc,WAGrCzD,EAAKuH,gBAAkB,WACrB,OAAOvH,EAAKwH,mBAAmBM,MAAM9H,EAAMmG,YAc7CnG,EAAK+H,SAAW,SAAUjH,EAAQkE,GAChCA,EAAU9E,KAAK8F,eAAehB,EAAS9E,KAAK6E,OAAO,iBAAkBrC,GACrE,IAGIC,EAEAqF,EALAC,EAAWnH,EAAS,EAEpBoH,EAxqBQ,SAAiBpH,EAAQ6B,GACrC,OAAOhB,EAAc,QAASb,GAAS6B,GAAWwF,QAAQxF,GAsqB7CwF,CAAQtG,KAAKuG,IAAItH,GAASkE,EAAQrC,WAAW5B,WACvCiB,MAAM,KAErBqG,EAAS,GAETpF,EAAS+B,EAAQ/B,QAAU,KAC3BqF,EAAOL,EAAW,IAAM,GAI5B,IAHAnH,EAASoH,EAAM,GACfvF,EAAYuF,EAAM,GAEXpH,EAAO0D,OAAS,GACrB6D,EAAOE,QAAQzH,EAAOE,OAAOa,KAAK2G,IAAI,EAAG1H,EAAO0D,OAAS,GAAI,IAC7D1D,EAASA,EAAOE,OAAO,EAAGF,EAAO0D,OAAS,GAoB5C,OAjBAwD,EAAkBK,EAAO5D,KAAKO,EAAQnC,WAElCmC,EAAQlC,2BAA6BH,IACvCA,EAAYA,EAAU2E,QAAQ,MAAO,KAGnCtC,EAAQrC,UAAY,GAAKA,IAC3BqF,GAAmBhD,EAAQpC,UAAYD,GASzCqF,GALE/E,EADE+B,EAAQ9B,WACD,KAAOD,EAEPA,EAAOqE,QAAQ,KAAM,SAGPA,QAAQ,KAAMtC,EAAQhC,MAAMsE,QAAQ,KAAMU,GAAiBV,QAAQ,KAAMgB,IAmBpGtI,EAAKyI,WAAa,SAAU3H,EAAQkE,GAElC,OADAA,EAAU9E,KAAK8F,eAAehB,EAAS9E,KAAK6E,OAAO,yBAA0BC,GAAU9E,KAAK6E,OAAO,gBAAiBC,GAAUjC,GACvH7C,KAAK6H,SAASjH,EAAQkE,IAU/BhF,EAAK0I,SAAW,SAAUvG,EAAOrD,EAAOkG,GAGtC,OAFAA,IAAYA,EAAU,IAEd7C,GACN,IAAK,WACH,OAAOjC,KAAKuI,WAAW3J,EAAOkG,GAEhC,IAAK,SAEH,OADA7C,EAAQjC,KAAK6E,OAAO,gBAAiBC,GAC9B9E,KAAK6H,SAASjJ,EAAOqD,GAE9B,IAAK,aACH,OAAOjC,KAAKyI,aAAa7J,EAAOkG,GAElC,QACE,IAAI4D,EAQJ,OALEA,EADEzG,EAAMkF,MAAM,gBACGnH,KAAK2I,OAAO1G,EAAOrD,EAAOkG,GAE1BlG,EAAMiC,WAGlBb,KAAK6G,YAAY6B,EAAgB5D,KAiB9ChF,EAAK8I,UAAY,SAAUjD,GACzB,IAAIuB,EAAS2B,EAAeC,EAE5B,GAAY,MAARnD,EACF,OAAOA,EAIT,GAAsB,WAAlBtF,EAAQsF,GACV,OAAOA,EAKT,GAFAuB,EAAUvB,EAAK9E,WAAWsG,MAAM,uFAEnB,CACX,IAAK,IAAIxJ,EAAI,EAAGA,GAAK,EAAGA,IACtBuJ,EAAQvJ,GAAKoL,SAAS7B,EAAQvJ,GAAI,KAAO,EAI3CuJ,EAAQ,IAAM,EACd4B,EAAW5B,EAAQ,GAAK,KAAQ,IAAMA,EAAQ,IAAM,KAGlD2B,EADE3B,EAAQ,GACM,IAAI8B,KAAKA,KAAKC,IAAI/B,EAAQ,GAAIA,EAAQ,GAAIA,EAAQ,GAAIA,EAAQ,GAAIA,EAAQ,GAAIA,EAAQ,GAAI4B,IAE1F,IAAIE,KAAK9B,EAAQ,GAAIA,EAAQ,GAAIA,EAAQ,GAAIA,EAAQ,GAAIA,EAAQ,GAAIA,EAAQ,GAAI4B,OAE3E,iBAARnD,GAEhBkD,EAAgB,IAAIG,MACNE,QAAQvD,GACbA,EAAKwB,MAAM,wEAGpB0B,EAAgB,IAAIG,MACNE,QAAQF,KAAKG,MAAM,CAAC5B,OAAO6B,GAAI7B,OAAO8B,GAAI9B,OAAO+B,GAAI/B,OAAOgC,GAAIhC,OAAOiC,GAAIjC,OAAOkC,IAAIlF,KAAK,QAChGoB,EAAKwB,MAAM,gCAEpB0B,EAAgB,IAAIG,MACNE,QAAQF,KAAKG,MAAMxD,KAOnC,OAAOkD,GAkCT/I,EAAK4J,SAAW,SAAU/D,EAAM5C,EAAQ+B,GAClCA,EAAU9E,KAAK6E,OAAO,OAAQC,GAAlC,IACI6E,EAAkB7J,EAAKyC,WAQ3B,GANKuC,IACHA,EAAU,IAGZA,EAAU9E,KAAK8F,eAAehB,EAAS5C,GAEnCN,MAAM+D,EAAKiE,WACb,MAAM,IAAIC,MAAM,+EAGlB,IAAIC,EAAUnE,EAAKoE,SACfC,EAAMrE,EAAKsE,UACXC,EAAOvE,EAAKwE,cACZC,EAAQzE,EAAK0E,WAAa,EAC1BC,EAAO3E,EAAK4E,WACZC,EAASF,EACT/H,EAAW+H,EAAO,GAAK,EAAI,EAC3BG,EAAO9E,EAAK+E,aACZC,EAAOhF,EAAKiF,aACZC,EAASlF,EAAKmF,oBACdC,EAAiBpJ,KAAKqJ,MAAMrJ,KAAKuG,IAAI2C,EAAS,KAC9CI,EAAmBtJ,KAAKuG,IAAI2C,GAA2B,GAAjBE,EACtCG,GAAkBL,EAAS,EAAI,IAAM,MAAQE,EAAelK,WAAWyD,OAAS,EAAI,IAAMyG,EAAiBA,IAAmBE,EAAiBpK,WAAWyD,OAAS,EAAI,IAAM2G,EAAmBA,GAmCpM,OAjCIT,EAAS,GACXA,GAAkB,GACE,IAAXA,IACTA,EAAS,IA6BXzH,GADAA,GADAA,GADAA,GADAA,GADAA,GADAA,GADAA,GADAA,GADAA,GADAA,GADAA,GADAA,GADAA,GADAA,GADAA,GADAA,GADAA,GADAA,GADAA,GADAA,GADAA,GADAA,GADAA,GADAA,GADAA,GADAA,EAASA,EAAOqE,QAAQ,KAAMtC,EAAQ1C,eAAe0H,KACrC1C,QAAQ,KAAMtC,EAAQ3C,UAAU2H,KAChC1C,QAAQ,KAAMtC,EAAQxC,iBAAiB8H,KACvChD,QAAQ,KAAMtC,EAAQzC,YAAY+H,KAClChD,QAAQ,KAAMzG,EAAQqJ,KACtB5C,QAAQ,KAAM4C,IACd5C,QAAQ,MAAO4C,IACf5C,QAAQ,KAAMzG,EAAQ2J,KACtBlD,QAAQ,MAAOkD,IACflD,QAAQ,KAAMkD,IACdlD,QAAQ,KAAMzG,EAAQ6J,KACtBpD,QAAQ,MAAOoD,IACfpD,QAAQ,KAAMoD,IACdpD,QAAQ,KAAMzG,EAAQyJ,KACtBhD,QAAQ,MAAOgD,IACfhD,QAAQ,KAAMzG,EAAQgK,KACtBvD,QAAQ,MAAOuD,IACfvD,QAAQ,KAAMuC,EAAgBpH,KAC9B6E,QAAQ,KAAMuC,EAAgBpH,GAAUoF,gBACxCP,QAAQ,KAAMzG,EAAQ8J,KACtBrD,QAAQ,MAAOqD,IACfrD,QAAQ,KAAM0C,IACd1C,QAAQ,KAAMzG,EAAQuJ,KACtB9C,QAAQ,MAAOzG,EAAQuJ,GAAM9C,QAAQ,MAAO,MAC5CA,QAAQ,KAAM8C,IACd9C,QAAQ,KAAM8D,IACd9D,QAAQ,KAAM8D,IAKhCpL,EAAK6I,OAAS,SAAU1G,EAAOkJ,EAAYrG,GACzC,IAAIa,EAAO3F,KAAK4I,UAAUuC,GACtBpI,EAAS/C,KAAK6E,OAAO5C,EAAO6C,GAEhC,GAAY,MAARa,EACF,OAAOA,EAGT,IAAIyF,EAAczF,EAAK9E,WAEvB,OAAIuK,EAAYjE,MAAM,YACbiE,EAGJrI,EAIE/C,KAAK0J,SAAS/D,EAAM5C,EAAQ+B,GAH1BsG,GAOXtL,EAAK2I,aAAe,SAAU7H,EAAQkE,GAEpC,OADAA,EAAU9E,KAAK8F,eAAehB,EAAS9E,KAAK6E,OAAO,2BAA4BC,GAAU9E,KAAK6E,OAAO,gBAAiBC,GAAU7B,GACzHjD,KAAK6H,SAASjH,EAAQkE,IAI/BhF,EAAKuL,YAAc,SAAUzK,EAAQkE,GAOnC,IANA,IAGIhC,EACAL,EAHA6I,EAAO1K,EACP2K,EAAa,EAIVD,GANE,MAMYC,EAAa,GAChCD,GAPO,KAQPC,GAAc,EAmBhB,OAhBmB,IAAfA,GACFzI,EAAO9C,KAAKnB,EAAE,wCAAyC,CACrD8F,MAAO2G,IAET7I,EAAY,IAEZK,EAAO9C,KAAKnB,EAAE,oCAAsCqE,EAAWqI,IAC/D9I,EAAY6I,EAAO3J,KAAKqJ,MAAMM,KAAU,EAAI,EAAI,GAGlDxG,EAAU9E,KAAK8F,eAAehB,EAAS,CACrChC,KAAMA,EACNL,UAAWA,EACXM,OAAQ,OACRJ,UAAW,KAEN3C,KAAK6H,SAASyD,EAAMxG,IAG7BhF,EAAKmF,aAAe,SAAUhD,EAAO6C,GAenC,OAdAA,EAAUA,GAAW,GAEjB1D,EAAQa,KACVA,EAAQA,EAAMsC,KAAKvE,KAAKsD,mBAOtBwB,EAAQ7C,QACVA,EAAQ,CAAC6C,EAAQ7C,MAAOA,GAAOsC,KAAKvE,KAAKsD,mBAGpCrB,GAcTnC,EAAK0L,OAAS,SAAUC,EAAMC,GAC5B,MAAoB,qBAATD,GAAwC,qBAATC,EACjC,GA36BC,SAASC,EAAMC,EAAMrL,GAC/B,IAAIrB,EAAKN,EA9CsByC,EAgD/B,IAAKnC,KAAOqB,EACNA,EAAIf,eAAeN,KACrBN,EAAQ2B,EAAIrB,GAjDM,kBADSmC,EAoDdzC,IAnDyD,oBAAxCP,OAAOkB,UAAUsB,SAAS/C,KAAKuD,IAmDtCC,EAAS1C,IAAU2C,EAAU3C,IAAUwC,EAAQxC,IAAU4C,EAAO5C,GACrFgN,EAAK1M,GAAON,GAEK,MAAbgN,EAAK1M,KAAc0M,EAAK1M,GAAO,IACnCyM,EAAMC,EAAK1M,GAAMN,KAKvB,OAAOgN,EA85BAD,CAAMF,EAAMC,IAIrB5L,EAAKjB,EAAIiB,EAAKyG,UAAUpH,KAAKW,GAC7BA,EAAKlC,EAAIkC,EAAK0I,SAASrJ,KAAKW,GAC5BA,EAAKL,EAAIK,EAAKiH,UAAU5H,KAAKW,GACtBA,EA3hCI+L,CAAQzL,IAChB","file":"js/translation-d7711fe5b69bb65856d1.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/packs/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 12);\n","var i18n = require(\"i18n-js\");\nglobal.I18n = i18n;\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n// I18n.js\n// =======\n//\n// This small library provides the Rails I18n API on the Javascript.\n// You don't actually have to use Rails (or even Ruby) to use I18n.js.\n// Just make sure you export all translations in an object like this:\n//\n// I18n.translations.en = {\n// hello: \"Hello World\"\n// };\n//\n// See tests for specific formatting like numbers and dates.\n//\n// Using UMD pattern from\n// https://github.com/umdjs/umd#regular-module\n// `returnExports.js` version\n;\n\n(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(\"i18n\", function () {\n return factory(root);\n });\n } else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) === 'object' && module.exports) {\n // Node. Does not work with strict CommonJS, but\n // only CommonJS-like environments that support module.exports,\n // like Node.\n module.exports = factory(root);\n } else {\n // Browser globals (root is window)\n root.I18n = factory(root);\n }\n})(this, function (global) {\n \"use strict\"; // Use previously defined object if exists in current scope\n\n var I18n = global && global.I18n || {}; // Just cache the Array#slice function.\n\n var slice = Array.prototype.slice; // Apply number padding.\n\n var padding = function padding(number) {\n return (\"0\" + number.toString()).substr(-2);\n }; // Improved toFixed number rounding function with support for unprecise floating points\n // JavaScript's standard toFixed function does not round certain numbers correctly (for example 0.105 with precision 2).\n\n\n var toFixed = function toFixed(number, precision) {\n return decimalAdjust('round', number, -precision).toFixed(precision);\n }; // Is a given variable an object?\n // Borrowed from Underscore.js\n\n\n var isObject = function isObject(obj) {\n var type = _typeof(obj);\n\n return type === 'function' || type === 'object';\n };\n\n var isFunction = function isFunction(func) {\n var type = _typeof(func);\n\n return type === 'function';\n }; // Check if value is different than undefined and null;\n\n\n var isSet = function isSet(value) {\n return typeof value !== 'undefined' && value !== null;\n }; // Is a given value an array?\n // Borrowed from Underscore.js\n\n\n var isArray = function isArray(val) {\n if (Array.isArray) {\n return Array.isArray(val);\n }\n\n return Object.prototype.toString.call(val) === '[object Array]';\n };\n\n var isString = function isString(val) {\n return typeof val === 'string' || Object.prototype.toString.call(val) === '[object String]';\n };\n\n var isNumber = function isNumber(val) {\n return typeof val === 'number' || Object.prototype.toString.call(val) === '[object Number]';\n };\n\n var isBoolean = function isBoolean(val) {\n return val === true || val === false;\n };\n\n var isNull = function isNull(val) {\n return val === null;\n };\n\n var decimalAdjust = function decimalAdjust(type, value, exp) {\n // If the exp is undefined or zero...\n if (typeof exp === 'undefined' || +exp === 0) {\n return Math[type](value);\n }\n\n value = +value;\n exp = +exp; // If the value is not a number or the exp is not an integer...\n\n if (isNaN(value) || !(typeof exp === 'number' && exp % 1 === 0)) {\n return NaN;\n } // Shift\n\n\n value = value.toString().split('e');\n value = Math[type](+(value[0] + 'e' + (value[1] ? +value[1] - exp : -exp))); // Shift back\n\n value = value.toString().split('e');\n return +(value[0] + 'e' + (value[1] ? +value[1] + exp : exp));\n };\n\n var lazyEvaluate = function lazyEvaluate(message, scope) {\n if (isFunction(message)) {\n return message(scope);\n } else {\n return message;\n }\n };\n\n var merge = function merge(dest, obj) {\n var key, value;\n\n for (key in obj) {\n if (obj.hasOwnProperty(key)) {\n value = obj[key];\n\n if (isString(value) || isNumber(value) || isBoolean(value) || isArray(value) || isNull(value)) {\n dest[key] = value;\n } else {\n if (dest[key] == null) dest[key] = {};\n merge(dest[key], value);\n }\n }\n }\n\n return dest;\n }; // Set default days/months translations.\n\n\n var DATE = {\n day_names: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n abbr_day_names: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n month_names: [null, \"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n abbr_month_names: [null, \"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n meridian: [\"AM\", \"PM\"]\n }; // Set default number format.\n\n var NUMBER_FORMAT = {\n precision: 3,\n separator: \".\",\n delimiter: \",\",\n strip_insignificant_zeros: false\n }; // Set default currency format.\n\n var CURRENCY_FORMAT = {\n unit: \"$\",\n precision: 2,\n format: \"%u%n\",\n sign_first: true,\n delimiter: \",\",\n separator: \".\"\n }; // Set default percentage format.\n\n var PERCENTAGE_FORMAT = {\n unit: \"%\",\n precision: 3,\n format: \"%n%u\",\n separator: \".\",\n delimiter: \"\"\n }; // Set default size units.\n\n var SIZE_UNITS = [null, \"kb\", \"mb\", \"gb\", \"tb\"]; // Other default options\n\n var DEFAULT_OPTIONS = {\n // Set default locale. This locale will be used when fallback is enabled and\n // the translation doesn't exist in a particular locale.\n defaultLocale: \"en\" // Set the current locale to `en`.\n ,\n locale: \"en\" // Set the translation key separator.\n ,\n defaultSeparator: \".\" // Set the placeholder format. Accepts `{{placeholder}}` and `%{placeholder}`.\n ,\n placeholder: /(?:\\{\\{|%\\{)(.*?)(?:\\}\\}?)/gm // Set if engine should fallback to the default locale when a translation\n // is missing.\n ,\n fallbacks: false // Set the default translation object.\n ,\n translations: {} // Set missing translation behavior. 'message' will display a message\n // that the translation is missing, 'guess' will try to guess the string\n ,\n missingBehaviour: 'message' // if you use missingBehaviour with 'message', but want to know that the\n // string is actually missing for testing purposes, you can prefix the\n // guessed string by setting the value here. By default, no prefix!\n ,\n missingTranslationPrefix: ''\n }; // Set default locale. This locale will be used when fallback is enabled and\n // the translation doesn't exist in a particular locale.\n\n I18n.reset = function () {\n var key;\n\n for (key in DEFAULT_OPTIONS) {\n this[key] = DEFAULT_OPTIONS[key];\n }\n }; // Much like `reset`, but only assign options if not already assigned\n\n\n I18n.initializeOptions = function () {\n var key;\n\n for (key in DEFAULT_OPTIONS) {\n if (!isSet(this[key])) {\n this[key] = DEFAULT_OPTIONS[key];\n }\n }\n };\n\n I18n.initializeOptions(); // Return a list of all locales that must be tried before returning the\n // missing translation message. By default, this will consider the inline option,\n // current locale and fallback locale.\n //\n // I18n.locales.get(\"de-DE\");\n // // [\"de-DE\", \"de\", \"en\"]\n //\n // You can define custom rules for any locale. Just make sure you return a array\n // containing all locales.\n //\n // // Default the Wookie locale to English.\n // I18n.locales[\"wk\"] = function(locale) {\n // return [\"en\"];\n // };\n //\n\n I18n.locales = {}; // Retrieve locales based on inline locale, current locale or default to\n // I18n's detection.\n\n I18n.locales.get = function (locale) {\n var result = this[locale] || this[I18n.locale] || this[\"default\"];\n\n if (isFunction(result)) {\n result = result(locale);\n }\n\n if (isArray(result) === false) {\n result = [result];\n }\n\n return result;\n }; // The default locale list.\n\n\n I18n.locales[\"default\"] = function (locale) {\n var locales = [],\n list = []; // Handle the inline locale option that can be provided to\n // the `I18n.t` options.\n\n if (locale) {\n locales.push(locale);\n } // Add the current locale to the list.\n\n\n if (!locale && I18n.locale) {\n locales.push(I18n.locale);\n } // Add the default locale if fallback strategy is enabled.\n\n\n if (I18n.fallbacks && I18n.defaultLocale) {\n locales.push(I18n.defaultLocale);\n } // Locale code format 1:\n // According to RFC4646 (http://www.ietf.org/rfc/rfc4646.txt)\n // language codes for Traditional Chinese should be `zh-Hant`\n //\n // But due to backward compatibility\n // We use older version of IETF language tag\n // @see http://www.w3.org/TR/html401/struct/dirlang.html\n // @see http://en.wikipedia.org/wiki/IETF_language_tag\n //\n // Format: `language-code = primary-code ( \"-\" subcode )*`\n //\n // primary-code uses ISO639-1\n // @see http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes\n // @see http://www.iso.org/iso/home/standards/language_codes.htm\n //\n // subcode uses ISO 3166-1 alpha-2\n // @see http://en.wikipedia.org/wiki/ISO_3166\n // @see http://www.iso.org/iso/country_codes.htm\n //\n // @note\n // subcode can be in upper case or lower case\n // defining it in upper case is a convention only\n // Locale code format 2:\n // Format: `code = primary-code ( \"-\" region-code )*`\n // primary-code uses ISO 639-1\n // script-code uses ISO 15924\n // region-code uses ISO 3166-1 alpha-2\n // Example: zh-Hant-TW, en-HK, zh-Hant-CN\n //\n // It is similar to RFC4646 (or actually the same),\n // but seems to be limited to language, script, region\n // Compute each locale with its country code.\n // So this will return an array containing\n // `de-DE` and `de`\n // or\n // `zh-hans-tw`, `zh-hans`, `zh`\n // locales.\n\n\n locales.forEach(function (locale) {\n var localeParts = locale.split(\"-\");\n var firstFallback = null;\n var secondFallback = null;\n\n if (localeParts.length === 3) {\n firstFallback = [localeParts[0], localeParts[1]].join(\"-\");\n secondFallback = localeParts[0];\n } else if (localeParts.length === 2) {\n firstFallback = localeParts[0];\n }\n\n if (list.indexOf(locale) === -1) {\n list.push(locale);\n }\n\n if (!I18n.fallbacks) {\n return;\n }\n\n [firstFallback, secondFallback].forEach(function (nullableFallbackLocale) {\n // We don't want null values\n if (typeof nullableFallbackLocale === \"undefined\") {\n return;\n }\n\n if (nullableFallbackLocale === null) {\n return;\n } // We don't want duplicate values\n //\n // Comparing with `locale` first is faster than\n // checking whether value's presence in the list\n\n\n if (nullableFallbackLocale === locale) {\n return;\n }\n\n if (list.indexOf(nullableFallbackLocale) !== -1) {\n return;\n }\n\n list.push(nullableFallbackLocale);\n });\n }); // No locales set? English it is.\n\n if (!locales.length) {\n locales.push(\"en\");\n }\n\n return list;\n }; // Hold pluralization rules.\n\n\n I18n.pluralization = {}; // Return the pluralizer for a specific locale.\n // If no specify locale is found, then I18n's default will be used.\n\n I18n.pluralization.get = function (locale) {\n return this[locale] || this[I18n.locale] || this[\"default\"];\n }; // The default pluralizer rule.\n // It detects the `zero`, `one`, and `other` scopes.\n\n\n I18n.pluralization[\"default\"] = function (count) {\n switch (count) {\n case 0:\n return [\"zero\", \"other\"];\n\n case 1:\n return [\"one\"];\n\n default:\n return [\"other\"];\n }\n }; // Return current locale. If no locale has been set, then\n // the current locale will be the default locale.\n\n\n I18n.currentLocale = function () {\n return this.locale || this.defaultLocale;\n }; // Check if value is different than undefined and null;\n\n\n I18n.isSet = isSet; // Find and process the translation using the provided scope and options.\n // This is used internally by some functions and should not be used as an\n // public API.\n\n I18n.lookup = function (scope, options) {\n options = options || {};\n var locales = this.locales.get(options.locale).slice(),\n locale,\n scopes,\n fullScope,\n translations;\n fullScope = this.getFullScope(scope, options);\n\n while (locales.length) {\n locale = locales.shift();\n scopes = fullScope.split(this.defaultSeparator);\n translations = this.translations[locale];\n\n if (!translations) {\n continue;\n }\n\n while (scopes.length) {\n translations = translations[scopes.shift()];\n\n if (translations === undefined || translations === null) {\n break;\n }\n }\n\n if (translations !== undefined && translations !== null) {\n return translations;\n }\n }\n\n if (isSet(options.defaultValue)) {\n return lazyEvaluate(options.defaultValue, scope);\n }\n }; // lookup pluralization rule key into translations\n\n\n I18n.pluralizationLookupWithoutFallback = function (count, locale, translations) {\n var pluralizer = this.pluralization.get(locale),\n pluralizerKeys = pluralizer(count),\n pluralizerKey,\n message;\n\n if (isObject(translations)) {\n while (pluralizerKeys.length) {\n pluralizerKey = pluralizerKeys.shift();\n\n if (isSet(translations[pluralizerKey])) {\n message = translations[pluralizerKey];\n break;\n }\n }\n }\n\n return message;\n }; // Lookup dedicated to pluralization\n\n\n I18n.pluralizationLookup = function (count, scope, options) {\n options = options || {};\n var locales = this.locales.get(options.locale).slice(),\n locale,\n scopes,\n translations,\n message;\n scope = this.getFullScope(scope, options);\n\n while (locales.length) {\n locale = locales.shift();\n scopes = scope.split(this.defaultSeparator);\n translations = this.translations[locale];\n\n if (!translations) {\n continue;\n }\n\n while (scopes.length) {\n translations = translations[scopes.shift()];\n\n if (!isObject(translations)) {\n break;\n }\n\n if (scopes.length === 0) {\n message = this.pluralizationLookupWithoutFallback(count, locale, translations);\n }\n }\n\n if (typeof message !== \"undefined\" && message !== null) {\n break;\n }\n }\n\n if (typeof message === \"undefined\" || message === null) {\n if (isSet(options.defaultValue)) {\n if (isObject(options.defaultValue)) {\n message = this.pluralizationLookupWithoutFallback(count, options.locale, options.defaultValue);\n } else {\n message = options.defaultValue;\n }\n\n translations = options.defaultValue;\n }\n }\n\n return {\n message: message,\n translations: translations\n };\n }; // Rails changed the way the meridian is stored.\n // It started with `date.meridian` returning an array,\n // then it switched to `time.am` and `time.pm`.\n // This function abstracts this difference and returns\n // the correct meridian or the default value when none is provided.\n\n\n I18n.meridian = function () {\n var time = this.lookup(\"time\");\n var date = this.lookup(\"date\");\n\n if (time && time.am && time.pm) {\n return [time.am, time.pm];\n } else if (date && date.meridian) {\n return date.meridian;\n } else {\n return DATE.meridian;\n }\n }; // Merge serveral hash options, checking if value is set before\n // overwriting any value. The precedence is from left to right.\n //\n // I18n.prepareOptions({name: \"John Doe\"}, {name: \"Mary Doe\", role: \"user\"});\n // #=> {name: \"John Doe\", role: \"user\"}\n //\n\n\n I18n.prepareOptions = function () {\n var args = slice.call(arguments),\n options = {},\n subject;\n\n while (args.length) {\n subject = args.shift();\n\n if (_typeof(subject) != \"object\") {\n continue;\n }\n\n for (var attr in subject) {\n if (!subject.hasOwnProperty(attr)) {\n continue;\n }\n\n if (isSet(options[attr])) {\n continue;\n }\n\n options[attr] = subject[attr];\n }\n }\n\n return options;\n }; // Generate a list of translation options for default fallbacks.\n // `defaultValue` is also deleted from options as it is returned as part of\n // the translationOptions array.\n\n\n I18n.createTranslationOptions = function (scope, options) {\n var translationOptions = [{\n scope: scope\n }]; // Defaults should be an array of hashes containing either\n // fallback scopes or messages\n\n if (isSet(options.defaults)) {\n translationOptions = translationOptions.concat(options.defaults);\n } // Maintain support for defaultValue. Since it is always a message\n // insert it in to the translation options as such.\n\n\n if (isSet(options.defaultValue)) {\n translationOptions.push({\n message: options.defaultValue\n });\n }\n\n return translationOptions;\n }; // Translate the given scope with the provided options.\n\n\n I18n.translate = function (scope, options) {\n options = options || {};\n var translationOptions = this.createTranslationOptions(scope, options);\n var translation;\n var usedScope = scope;\n var optionsWithoutDefault = this.prepareOptions(options);\n delete optionsWithoutDefault.defaultValue; // Iterate through the translation options until a translation\n // or message is found.\n\n var translationFound = translationOptions.some(function (translationOption) {\n if (isSet(translationOption.scope)) {\n usedScope = translationOption.scope;\n translation = this.lookup(usedScope, optionsWithoutDefault);\n } else if (isSet(translationOption.message)) {\n translation = lazyEvaluate(translationOption.message, scope);\n }\n\n if (translation !== undefined && translation !== null) {\n return true;\n }\n }, this);\n\n if (!translationFound) {\n return this.missingTranslation(scope, options);\n }\n\n if (typeof translation === \"string\") {\n translation = this.interpolate(translation, options);\n } else if (isArray(translation)) {\n translation = translation.map(function (t) {\n return typeof t === \"string\" ? this.interpolate(t, options) : t;\n }, this);\n } else if (isObject(translation) && isSet(options.count)) {\n translation = this.pluralize(options.count, usedScope, options);\n }\n\n return translation;\n }; // This function interpolates the all variables in the given message.\n\n\n I18n.interpolate = function (message, options) {\n if (message == null) {\n return message;\n }\n\n options = options || {};\n var matches = message.match(this.placeholder),\n placeholder,\n value,\n name,\n regex;\n\n if (!matches) {\n return message;\n }\n\n while (matches.length) {\n placeholder = matches.shift();\n name = placeholder.replace(this.placeholder, \"$1\");\n\n if (isSet(options[name])) {\n value = options[name].toString().replace(/\\$/gm, \"_#$#_\");\n } else if (name in options) {\n value = this.nullPlaceholder(placeholder, message, options);\n } else {\n value = this.missingPlaceholder(placeholder, message, options);\n }\n\n regex = new RegExp(placeholder.replace(/{/gm, \"\\\\{\").replace(/}/gm, \"\\\\}\"));\n message = message.replace(regex, value);\n }\n\n return message.replace(/_#\\$#_/g, \"$\");\n }; // Pluralize the given scope using the `count` value.\n // The pluralized translation may have other placeholders,\n // which will be retrieved from `options`.\n\n\n I18n.pluralize = function (count, scope, options) {\n options = this.prepareOptions({\n count: String(count)\n }, options);\n var pluralizer, result;\n result = this.pluralizationLookup(count, scope, options);\n\n if (typeof result.translations === \"undefined\" || result.translations == null) {\n return this.missingTranslation(scope, options);\n }\n\n if (typeof result.message !== \"undefined\" && result.message != null) {\n return this.interpolate(result.message, options);\n } else {\n pluralizer = this.pluralization.get(options.locale);\n return this.missingTranslation(scope + '.' + pluralizer(count)[0], options);\n }\n }; // Return a missing translation message for the given parameters.\n\n\n I18n.missingTranslation = function (scope, options) {\n //guess intended string\n if (this.missingBehaviour === 'guess') {\n //get only the last portion of the scope\n var s = scope.split('.').slice(-1)[0]; //replace underscore with space && camelcase with space and lowercase letter\n\n return (this.missingTranslationPrefix.length > 0 ? this.missingTranslationPrefix : '') + s.replace(/_/g, ' ').replace(/([a-z])([A-Z])/g, function (match, p1, p2) {\n return p1 + ' ' + p2.toLowerCase();\n });\n }\n\n var localeForTranslation = options != null && options.locale != null ? options.locale : this.currentLocale();\n var fullScope = this.getFullScope(scope, options);\n var fullScopeWithLocale = [localeForTranslation, fullScope].join(this.defaultSeparator);\n return '[missing \"' + fullScopeWithLocale + '\" translation]';\n }; // Return a missing placeholder message for given parameters\n\n\n I18n.missingPlaceholder = function (placeholder, message, options) {\n return \"[missing \" + placeholder + \" value]\";\n };\n\n I18n.nullPlaceholder = function () {\n return I18n.missingPlaceholder.apply(I18n, arguments);\n }; // Format number using localization rules.\n // The options will be retrieved from the `number.format` scope.\n // If this isn't present, then the following options will be used:\n //\n // - `precision`: `3`\n // - `separator`: `\".\"`\n // - `delimiter`: `\",\"`\n // - `strip_insignificant_zeros`: `false`\n //\n // You can also override these options by providing the `options` argument.\n //\n\n\n I18n.toNumber = function (number, options) {\n options = this.prepareOptions(options, this.lookup(\"number.format\"), NUMBER_FORMAT);\n var negative = number < 0,\n string = toFixed(Math.abs(number), options.precision).toString(),\n parts = string.split(\".\"),\n precision,\n buffer = [],\n formattedNumber,\n format = options.format || \"%n\",\n sign = negative ? \"-\" : \"\";\n number = parts[0];\n precision = parts[1];\n\n while (number.length > 0) {\n buffer.unshift(number.substr(Math.max(0, number.length - 3), 3));\n number = number.substr(0, number.length - 3);\n }\n\n formattedNumber = buffer.join(options.delimiter);\n\n if (options.strip_insignificant_zeros && precision) {\n precision = precision.replace(/0+$/, \"\");\n }\n\n if (options.precision > 0 && precision) {\n formattedNumber += options.separator + precision;\n }\n\n if (options.sign_first) {\n format = \"%s\" + format;\n } else {\n format = format.replace(\"%n\", \"%s%n\");\n }\n\n formattedNumber = format.replace(\"%u\", options.unit).replace(\"%n\", formattedNumber).replace(\"%s\", sign);\n return formattedNumber;\n }; // Format currency with localization rules.\n // The options will be retrieved from the `number.currency.format` and\n // `number.format` scopes, in that order.\n //\n // Any missing option will be retrieved from the `I18n.toNumber` defaults and\n // the following options:\n //\n // - `unit`: `\"$\"`\n // - `precision`: `2`\n // - `format`: `\"%u%n\"`\n // - `delimiter`: `\",\"`\n // - `separator`: `\".\"`\n //\n // You can also override these options by providing the `options` argument.\n //\n\n\n I18n.toCurrency = function (number, options) {\n options = this.prepareOptions(options, this.lookup(\"number.currency.format\", options), this.lookup(\"number.format\", options), CURRENCY_FORMAT);\n return this.toNumber(number, options);\n }; // Localize several values.\n // You can provide the following scopes: `currency`, `number`, or `percentage`.\n // If you provide a scope that matches the `/^(date|time)/` regular expression\n // then the `value` will be converted by using the `I18n.toTime` function.\n //\n // It will default to the value's `toString` function.\n //\n\n\n I18n.localize = function (scope, value, options) {\n options || (options = {});\n\n switch (scope) {\n case \"currency\":\n return this.toCurrency(value, options);\n\n case \"number\":\n scope = this.lookup(\"number.format\", options);\n return this.toNumber(value, scope);\n\n case \"percentage\":\n return this.toPercentage(value, options);\n\n default:\n var localizedValue;\n\n if (scope.match(/^(date|time)/)) {\n localizedValue = this.toTime(scope, value, options);\n } else {\n localizedValue = value.toString();\n }\n\n return this.interpolate(localizedValue, options);\n }\n }; // Parse a given `date` string into a JavaScript Date object.\n // This function is time zone aware.\n //\n // The following string formats are recognized:\n //\n // yyyy-mm-dd\n // yyyy-mm-dd[ T]hh:mm::ss\n // yyyy-mm-dd[ T]hh:mm::ss\n // yyyy-mm-dd[ T]hh:mm::ssZ\n // yyyy-mm-dd[ T]hh:mm::ss+0000\n // yyyy-mm-dd[ T]hh:mm::ss+00:00\n // yyyy-mm-dd[ T]hh:mm::ss.123Z\n //\n\n\n I18n.parseDate = function (date) {\n var matches, convertedDate, fraction; // A date input of `null` or `undefined` will be returned as-is\n\n if (date == null) {\n return date;\n } // we have a date, so just return it.\n\n\n if (_typeof(date) === \"object\") {\n return date;\n }\n\n matches = date.toString().match(/(\\d{4})-(\\d{2})-(\\d{2})(?:[ T](\\d{2}):(\\d{2}):(\\d{2})([\\.,]\\d{1,3})?)?(Z|\\+00:?00)?/);\n\n if (matches) {\n for (var i = 1; i <= 6; i++) {\n matches[i] = parseInt(matches[i], 10) || 0;\n } // month starts on 0\n\n\n matches[2] -= 1;\n fraction = matches[7] ? 1000 * (\"0\" + matches[7]) : null;\n\n if (matches[8]) {\n convertedDate = new Date(Date.UTC(matches[1], matches[2], matches[3], matches[4], matches[5], matches[6], fraction));\n } else {\n convertedDate = new Date(matches[1], matches[2], matches[3], matches[4], matches[5], matches[6], fraction);\n }\n } else if (typeof date == \"number\") {\n // UNIX timestamp\n convertedDate = new Date();\n convertedDate.setTime(date);\n } else if (date.match(/([A-Z][a-z]{2}) ([A-Z][a-z]{2}) (\\d+) (\\d+:\\d+:\\d+) ([+-]\\d+) (\\d+)/)) {\n // This format `Wed Jul 20 13:03:39 +0000 2011` is parsed by\n // webkit/firefox, but not by IE, so we must parse it manually.\n convertedDate = new Date();\n convertedDate.setTime(Date.parse([RegExp.$1, RegExp.$2, RegExp.$3, RegExp.$6, RegExp.$4, RegExp.$5].join(\" \")));\n } else if (date.match(/\\d+ \\d+:\\d+:\\d+ [+-]\\d+ \\d+/)) {\n // a valid javascript format with timezone info\n convertedDate = new Date();\n convertedDate.setTime(Date.parse(date));\n } else {\n // an arbitrary javascript string\n convertedDate = new Date();\n convertedDate.setTime(Date.parse(date));\n }\n\n return convertedDate;\n }; // Formats time according to the directives in the given format string.\n // The directives begins with a percent (%) character. Any text not listed as a\n // directive will be passed through to the output string.\n //\n // The accepted formats are:\n //\n // %a - The abbreviated weekday name (Sun)\n // %A - The full weekday name (Sunday)\n // %b - The abbreviated month name (Jan)\n // %B - The full month name (January)\n // %c - The preferred local date and time representation\n // %d - Day of the month (01..31)\n // %-d - Day of the month (1..31)\n // %H - Hour of the day, 24-hour clock (00..23)\n // %-H/%k - Hour of the day, 24-hour clock (0..23)\n // %I - Hour of the day, 12-hour clock (01..12)\n // %-I/%l - Hour of the day, 12-hour clock (1..12)\n // %m - Month of the year (01..12)\n // %-m - Month of the year (1..12)\n // %M - Minute of the hour (00..59)\n // %-M - Minute of the hour (0..59)\n // %p - Meridian indicator (AM or PM)\n // %P - Meridian indicator (am or pm)\n // %S - Second of the minute (00..60)\n // %-S - Second of the minute (0..60)\n // %w - Day of the week (Sunday is 0, 0..6)\n // %y - Year without a century (00..99)\n // %-y - Year without a century (0..99)\n // %Y - Year with century\n // %z/%Z - Timezone offset (+0545)\n //\n\n\n I18n.strftime = function (date, format, options) {\n var options = this.lookup(\"date\", options),\n meridianOptions = I18n.meridian();\n\n if (!options) {\n options = {};\n }\n\n options = this.prepareOptions(options, DATE);\n\n if (isNaN(date.getTime())) {\n throw new Error('I18n.strftime() requires a valid date object, but received an invalid date.');\n }\n\n var weekDay = date.getDay(),\n day = date.getDate(),\n year = date.getFullYear(),\n month = date.getMonth() + 1,\n hour = date.getHours(),\n hour12 = hour,\n meridian = hour > 11 ? 1 : 0,\n secs = date.getSeconds(),\n mins = date.getMinutes(),\n offset = date.getTimezoneOffset(),\n absOffsetHours = Math.floor(Math.abs(offset / 60)),\n absOffsetMinutes = Math.abs(offset) - absOffsetHours * 60,\n timezoneoffset = (offset > 0 ? \"-\" : \"+\") + (absOffsetHours.toString().length < 2 ? \"0\" + absOffsetHours : absOffsetHours) + (absOffsetMinutes.toString().length < 2 ? \"0\" + absOffsetMinutes : absOffsetMinutes);\n\n if (hour12 > 12) {\n hour12 = hour12 - 12;\n } else if (hour12 === 0) {\n hour12 = 12;\n }\n\n format = format.replace(\"%a\", options.abbr_day_names[weekDay]);\n format = format.replace(\"%A\", options.day_names[weekDay]);\n format = format.replace(\"%b\", options.abbr_month_names[month]);\n format = format.replace(\"%B\", options.month_names[month]);\n format = format.replace(\"%d\", padding(day));\n format = format.replace(\"%e\", day);\n format = format.replace(\"%-d\", day);\n format = format.replace(\"%H\", padding(hour));\n format = format.replace(\"%-H\", hour);\n format = format.replace(\"%k\", hour);\n format = format.replace(\"%I\", padding(hour12));\n format = format.replace(\"%-I\", hour12);\n format = format.replace(\"%l\", hour12);\n format = format.replace(\"%m\", padding(month));\n format = format.replace(\"%-m\", month);\n format = format.replace(\"%M\", padding(mins));\n format = format.replace(\"%-M\", mins);\n format = format.replace(\"%p\", meridianOptions[meridian]);\n format = format.replace(\"%P\", meridianOptions[meridian].toLowerCase());\n format = format.replace(\"%S\", padding(secs));\n format = format.replace(\"%-S\", secs);\n format = format.replace(\"%w\", weekDay);\n format = format.replace(\"%y\", padding(year));\n format = format.replace(\"%-y\", padding(year).replace(/^0+/, \"\"));\n format = format.replace(\"%Y\", year);\n format = format.replace(\"%z\", timezoneoffset);\n format = format.replace(\"%Z\", timezoneoffset);\n return format;\n }; // Convert the given dateString into a formatted date.\n\n\n I18n.toTime = function (scope, dateString, options) {\n var date = this.parseDate(dateString),\n format = this.lookup(scope, options); // A date input of `null` or `undefined` will be returned as-is\n\n if (date == null) {\n return date;\n }\n\n var date_string = date.toString();\n\n if (date_string.match(/invalid/i)) {\n return date_string;\n }\n\n if (!format) {\n return date_string;\n }\n\n return this.strftime(date, format, options);\n }; // Convert a number into a formatted percentage value.\n\n\n I18n.toPercentage = function (number, options) {\n options = this.prepareOptions(options, this.lookup(\"number.percentage.format\", options), this.lookup(\"number.format\", options), PERCENTAGE_FORMAT);\n return this.toNumber(number, options);\n }; // Convert a number into a readable size representation.\n\n\n I18n.toHumanSize = function (number, options) {\n var kb = 1024,\n size = number,\n iterations = 0,\n unit,\n precision;\n\n while (size >= kb && iterations < 4) {\n size = size / kb;\n iterations += 1;\n }\n\n if (iterations === 0) {\n unit = this.t(\"number.human.storage_units.units.byte\", {\n count: size\n });\n precision = 0;\n } else {\n unit = this.t(\"number.human.storage_units.units.\" + SIZE_UNITS[iterations]);\n precision = size - Math.floor(size) === 0 ? 0 : 1;\n }\n\n options = this.prepareOptions(options, {\n unit: unit,\n precision: precision,\n format: \"%n%u\",\n delimiter: \"\"\n });\n return this.toNumber(size, options);\n };\n\n I18n.getFullScope = function (scope, options) {\n options = options || {}; // Deal with the scope as an array.\n\n if (isArray(scope)) {\n scope = scope.join(this.defaultSeparator);\n } // Deal with the scope option provided through the second argument.\n //\n // I18n.t('hello', {scope: 'greetings'});\n //\n\n\n if (options.scope) {\n scope = [options.scope, scope].join(this.defaultSeparator);\n }\n\n return scope;\n };\n /**\n * Merge obj1 with obj2 (shallow merge), without modifying inputs\n * @param {Object} obj1\n * @param {Object} obj2\n * @returns {Object} Merged values of obj1 and obj2\n *\n * In order to support ES3, `Object.prototype.hasOwnProperty.call` is used\n * Idea is from:\n * https://stackoverflow.com/questions/8157700/object-has-no-hasownproperty-method-i-e-its-undefined-ie8\n */\n\n\n I18n.extend = function (obj1, obj2) {\n if (typeof obj1 === \"undefined\" && typeof obj2 === \"undefined\") {\n return {};\n }\n\n return merge(obj1, obj2);\n }; // Set aliases, so we can save some typing.\n\n\n I18n.t = I18n.translate.bind(I18n);\n I18n.l = I18n.localize.bind(I18n);\n I18n.p = I18n.pluralize.bind(I18n);\n return I18n;\n});"],"sourceRoot":""}