{"version":3,"file":"productDetail.min.js","mappings":"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UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,QAAQ,IAAI,SAAS,IAAI,UAAU,IAAI,WAAW,IAAI,SAAS,IAAI,UAAU,IAAI,QAAQ,IAAI,SAAS,IAAI,QAAQ,IAAI,SAAS,IAAI,SAAS,IAAI,UAAU,IAAI,UAAU,IAAI,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,SAAS,IAAI,UAAU,IAAI,UAAU,IAAI,WAAW,IAAI,QAAQ,IAAI,SAAS,IAAI,SAAS,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,UAAU,IAAI,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,SAAS,IAAI,UAAU,IAAI,QAAQ,IAAI,SAAS,IAAI,UAAU,IAAI,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,SAAS,IAAI,UAAU,IAAI,QAAQ,IAAI,SAAS,IAAI,OAAO,IAAI,QAAQ,IAAI,UAAU,IAAI,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,SAAS,IAAI,UAAU,IAAI,UAAU,IAAI,WAAW,IAAI,QAAQ,IAAI,SAAS,IAAI,SAAS,IAAI,UAAU,IAAI,UAAU,IAAI,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,SAAS,IAAI,UAAU,IAAI,QAAQ,IAAI,SAAS,IAAI,UAAU,IAAI,WAAW,IAAI,SAAS,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,UAAU,IAAI,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,SAAS,IAAI,UAAU,IAAI,UAAU,IAAI,WAAW,IAAI,QAAQ,IAAI,SAAS,IAAI,SAAS,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,UAAU,IAAI,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,SAAS,IAAI,UAAU,IAAI,QAAQ,IAAI,SAAS,IAAI,UAAU,IAAI,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,SAAS,IAAI,UAAU,IAAI,QAAQ,IAAI,SAAS,IAAI,OAAO,IAAI,QAAQ,IAAI,UAAU,IAAI,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,SAAS,IAAI,UAAU,IAAI,UAAU,IAAI,WAAW,IAAI,QAAQ,IAAI,SAAS,IAAI,UAAU,IAAI,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,SAAS,IAAI,UAAU,IAAI,QAAQ,IAAI,SAAS,IAAI,UAAU,IAAI,WAAW,IAAI,SAAS,IAAI,UAAU,IAAI,QAAQ,IAAI,SAAS,IAAI,QAAQ,IAAI,SAAS,IAAI,OAAO,IAAI,QAAQ,IAAI,MAAM,IAAI,OAAO,IAAI,MAAM,IAAI,OAAO,IAAI,UAAU,IAAI,UAAU,IAAI,WAAW,IAAI,WAAW,IAAI,SAAS,IAAI,SAAS,IAAI,UAAU,IAAI,SAAS,IAAI,SAAS,IAAI,WAAW,IAAI,SAAS,IAAI,QAAQ,IAAI,QAAQ,IAAI,QAAQ,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,WAAW,IAAI,WAAW,IAAI,WAAW,IAAI,WAAW,IAAI,WAAW,IAAI,SAAS,IAAI,SAAS,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,UAAU,IAAI,YAAY,IAAI,SAAS,IAAI,QAAQ,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,WAAW,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,YAAY,IAAI,OAAO,IAAI,QAAQ,IAAI,UAAU,IAAI,QAAQ,IAAI,YAAY,IAAI,QAAQ,IAAI,QAAQ,IAAI,QAAQ,IAAI,UAAU,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,UAAU,IAAI,YAAY,IAAI,SAAS,IAAI,QAAQ,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,WAAW,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,YAAY,IAAI,OAAO,IAAI,QAAQ,IAAI,WAAW,IAAI,UAAU,IAAI,QAAQ,IAAI,YAAY,IAAI,QAAQ,IAAI,QAAQ,IAAI,QAAQ,IAAI,UAAU,IAAI,aAAa,IAAI,UAAU,IAAI,QAAQ,IAAI,SAAS,IAAI,WAAW,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,WAAW,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,YAAY,IAAI,SAAS,IAAI,SAAS,IAAI,SAAS,IAAI,SAAS,IAAI,SAAS,IAAI,UAAU,IAAI,SAAS,IAAI,SAAS,IAAI,SAAS,IAAI,SAAS,IAAI,SAAS,IAAI,WAAW,IAAI,SAAS,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,OAAO,IAAI,SAAS,IAAI,QAAQ,IAAI,UAAU,IAAI,WAAW,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,QAAQ,IAAI,QAAQ,IAAI,OAAO,IAAI,QAAQ,IAAI,QAAQ,IAAI,QAAQ,IAAI,WAAW,IAAI,QAAQ,IAAI,SAAS,IAAI,UAAU,IAAI,OAAO,IAAI,UAAU,IAAI,OAAO,IAAI,OAAO,IAAI,QAAQ,IAAI,QAAQ,IAAI,SAAS,IAAI,SAAS,IAAI,SAAS,IAAI,UAAU,IAAI,WAAW,IAAI,SAAS,IAAI,SAAS,IAAI,UAAU,IAAI,UAAU,IAAI,WAAW,IAAI,WAAW,IAAI,SAAS,IAAI,SAAS,IAAI,QAAQ,IAAI,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,UAAU,KAAKzB,WAAW,CAAC,IAAI,SAAS,IAAI,SAAS,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,WAAW,IAAI,QAAQ,IAAI,WAAW,IAAI,SAAS,IAAI,QAAQ,IAAI,SAAS,IAAI,SAAS,IAAI,UAAU,IAAI,QAAQ,IAAI,QAAQ,IAAI,QAAQ,IAAI,SAAS,IAAI,QAAQ,IAAI,WAAW,IAAI,SAAS,IAAI,SAAS,IAAI,UAAU,IAAI,UAAU,IAAI,SAAS,IAAI,WAAW,IAAI,UAAU,IAAI,SAAS,IAAI,SAAS,IAAI,UAAU,IAAI,WAAW,IAAI,WAAW,IAAI,WAAW,IAAI,WAAW,IAAI,WAAW,IAAI,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,SAAS,IAAI,UAAU,IAAI,UAAU,IAAI,WAAW,IAAI,WAAW,IAAI,WAAW,IAAI,UAAU,IAAI,SAAS,IAAI,WAAW,IAAI,WAAW,IAAI,UAAU,IAAI,SAAS,IAAI,QAAQ,IAAI,WAAW,IAAI,WAAW,IAAI,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,SAAS,IAAI,UAAU,IAAI,WAAW,IAAI,WAAW,IAAI,WAAW,IAAI,UAAU,IAAI,SAAS,IAAI,WAAW,IAAI,UAAU,IAAI,UAAU,IAAI,WAAW,IAAI,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,SAAS,IAAI,UAAU,IAAI,UAAU,IAAI,WAAW,IAAI,WAAW,IAAI,WAAW,IAAI,UAAU,IAAI,SAAS,IAAI,WAAW,IAAI,WAAW,IAAI,UAAU,IAAI,SAAS,IAAI,QAAQ,IAAI,WAAW,IAAI,WAAW,IAAI,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,SAAS,IAAI,WAAW,IAAI,WAAW,IAAI,WAAW,IAAI,WAAW,IAAI,UAAU,IAAI,SAAS,IAAI,WAAW,IAAI,UAAU,IAAI,SAAS,IAAI,SAAS,IAAI,QAAQ,IAAI,OAAO,IAAI,OAAO,IAAI,UAAU,IAAI,UAAU,IAAI,WAAW,IAAI,WAAW,IAAI,SAAS,IAAI,SAAS,IAAI,UAAU,IAAI,SAAS,IAAI,SAAS,IAAI,WAAW,IAAI,SAAS,IAAI,QAAQ,IAAI,QAAQ,IAAI,QAAQ,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,WAAW,IAAI,WAAW,IAAI,WAAW,IAAI,WAAW,IAAI,WAAW,IAAI,SAAS,IAAI,SAAS,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,UAAU,IAAI,YAAY,IAAI,SAAS,IAAI,QAAQ,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,WAAW,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,YAAY,IAAI,OAAO,IAAI,QAAQ,IAAI,UAAU,IAAI,QAAQ,IAAI,YAAY,IAAI,QAAQ,IAAI,QAAQ,IAAI,QAAQ,IAAI,UAAU,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,UAAU,IAAI,YAAY,IAAI,SAAS,IAAI,QAAQ,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,WAAW,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,YAAY,IAAI,OAAO,IAAI,QAAQ,IAAI,WAAW,IAAI,UAAU,IAAI,QAAQ,IAAI,YAAY,IAAI,QAAQ,IAAI,QAAQ,IAAI,QAAQ,IAAI,UAAU,IAAI,aAAa,IAAI,UAAU,IAAI,QAAQ,IAAI,SAAS,IAAI,WAAW,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,WAAW,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,YAAY,IAAI,SAAS,IAAI,SAAS,IAAI,SAAS,IAAI,SAAS,IAAI,SAAS,IAAI,UAAU,IAAI,SAAS,IAAI,SAAS,IAAI,SAAS,IAAI,SAAS,IAAI,SAAS,IAAI,WAAW,IAAI,SAAS,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,OAAO,IAAI,SAAS,IAAI,QAAQ,IAAI,UAAU,IAAI,WAAW,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,QAAQ,IAAI,QAAQ,IAAI,OAAO,IAAI,QAAQ,IAAI,QAAQ,IAAI,QAAQ,IAAI,WAAW,IAAI,QAAQ,IAAI,SAAS,IAAI,UAAU,IAAI,OAAO,IAAI,UAAU,IAAI,OAAO,IAAI,OAAO,IAAI,QAAQ,IAAI,QAAQ,IAAI,SAAS,IAAI,SAAS,IAAI,SAAS,IAAI,UAAU,IAAI,WAAW,IAAI,SAAS,IAAI,SAAS,IAAI,UAAU,IAAI,UAAU,IAAI,WAAW,IAAI,WAAW,IAAI,SAAS,IAAI,SAAS,IAAI,QAAQ,IAAI,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,YAAYzrF,MAAM,CAACktF,SAAS,CAAC,SAAS,IAAI,UAAU,IAAI,OAAO,IAAI,QAAQ,IAAI,UAAU,IAAI,WAAW,IAAI,WAAW,IAAI,SAAS,IAAI,UAAU,IAAI,QAAQ,IAAI,QAAQ,KAAK,UAAU,IAAI,WAAW,IAAI,UAAU,IAAI,UAAU,IAAI,QAAQ,IAAI,UAAU,IAAI,SAAS,KAAK,kBAAkB,IAAI,SAAS,IAAI,UAAU,IAAI,SAAS,KAAK,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,QAAQ,IAAI,SAAS,IAAI,cAAc,IAAI,SAAS,IAAI,WAAW,IAAI,QAAQ,IAAI,YAAY,IAAI,eAAe,IAAI,SAAS,IAAI,QAAQ,KAAK,SAAS,KAAK,UAAU,IAAI,SAAS,IAAI,WAAW,IAAI,SAAS,IAAI,QAAQ,IAAI,SAAS,IAAI,WAAW,IAAI,QAAQ,IAAI,yBAAyB,IAAI,YAAY,IAAI,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,UAAU,IAAI,YAAY,IAAI,SAAS,IAAI,YAAY,IAAI,cAAc,IAAI,QAAQ,IAAI,QAAQ,IAAI,cAAc,IAAI,gBAAgB,IAAI,eAAe,IAAI,gBAAgB,IAAI,6BAA6B,IAAI,0BAA0B,IAAI,oBAAoB,IAAI,UAAU,IAAI,WAAW,IAAI,cAAc,IAAI,WAAW,IAAI,oBAAoB,IAAI,SAAS,IAAI,cAAc,IAAI,oCAAoC,IAAI,UAAU,IAAI,SAAS,KAAK,QAAQ,IAAI,WAAW,IAAI,OAAO,IAAI,aAAa,IAAI,SAAS,IAAI,SAAS,IAAI,SAAS,IAAI,WAAW,IAAI,SAAS,IAAI,UAAU,IAAI,WAAW,IAAI,QAAQ,IAAI,QAAQ,IAAI,UAAU,IAAI,QAAQ,KAAK,qBAAqB,IAAI,mBAAmB,IAAI,2BAA2B,IAAI,qBAAqB,IAAI,qBAAqB,IAAI,YAAY,IAAI,kBAAkB,IAAI,SAAS,KAAK,QAAQ,IAAI,WAAW,IAAI,aAAa,IAAI,0BAA0B,IAAI,cAAc,IAAI,oBAAoB,IAAI,oBAAoB,IAAI,yBAAyB,IAAI,kBAAkB,IAAI,wBAAwB,IAAI,6BAA6B,IAAI,yBAAyB,IAAI,qBAAqB,IAAI,mBAAmB,IAAI,kBAAkB,IAAI,sBAAsB,IAAI,sBAAsB,IAAI,cAAc,IAAI,iBAAiB,IAAI,qBAAqB,IAAI,cAAc,IAAI,wBAAwB,IAAI,sBAAsB,IAAI,mBAAmB,IAAI,sBAAsB,IAAI,uBAAuB,IAAI,oBAAoB,IAAI,uBAAuB,IAAI,YAAY,IAAI,iBAAiB,IAAI,cAAc,IAAI,SAAS,KAAK,WAAW,IAAI,QAAQ,IAAI,OAAO,IAAI,QAAQ,IAAI,UAAU,IAAI,WAAW,IAAI,WAAW,IAAI,SAAS,IAAI,UAAU,IAAI,QAAQ,IAAI,SAAS,IAAI,QAAQ,KAAK,UAAU,IAAI,WAAW,IAAI,YAAY,IAAI,UAAU,IAAI,qBAAqB,IAAI,yBAAyB,IAAI,UAAU,IAAI,SAAS,KAAK,YAAY,IAAI,UAAU,IAAI,eAAe,IAAI,gBAAgB,IAAI,SAAS,IAAI,SAAS,IAAI,QAAQ,IAAI,QAAQ,IAAI,SAAS,IAAI,WAAW,IAAI,iBAAiB,IAAI,QAAQ,IAAI,QAAQ,KAAK,sBAAsB,IAAI,0BAA0B,IAAI,SAAS,KAAK,WAAW,IAAI,eAAe,IAAI,SAAS,IAAI,SAAS,IAAI,MAAM,IAAI,OAAO,IAAI,UAAU,IAAI,WAAW,IAAI,WAAW,IAAI,WAAW,IAAI,UAAU,IAAI,QAAQ,IAAI,SAAS,IAAI,QAAQ,KAAK,OAAO,IAAI,SAAS,KAAK,iBAAiB,IAAI,qBAAqB,IAAI,qBAAqB,IAAI,mBAAmB,IAAI,gBAAgB,IAAI,sBAAsB,IAAI,iBAAiB,IAAI,SAAS,KAAK,OAAO,IAAI,WAAW,IAAI,UAAU,IAAI,QAAQ,IAAI,UAAU,IAAI,QAAQ,IAAI,iBAAiB,IAAI,SAAS,IAAI,mBAAmB,IAAI,SAAS,IAAI,WAAW,IAAI,iBAAiB,IAAI,cAAc,IAAI,SAAS,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,WAAW,IAAI,SAAS,IAAI,UAAU,IAAI,QAAQ,IAAI,SAAS,IAAI,QAAQ,IAAI,UAAU,IAAI,WAAW,IAAI,OAAO,IAAI,UAAU,IAAI,eAAe,IAAI,YAAY,IAAI,QAAQ,IAAI,aAAa,IAAI,iBAAiB,IAAI,mBAAmB,IAAI,mBAAmB,IAAI,UAAU,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,IAAI,WAAW,IAAI,UAAU,IAAI,QAAQ,IAAI,SAAS,IAAI,UAAU,IAAI,QAAQ,IAAI,QAAQ,KAAK,SAAS,KAAK,SAAS,KAAK,WAAW,IAAI,UAAU,IAAI,SAAS,IAAI,SAAS,IAAI,UAAU,IAAI,WAAW,IAAI,QAAQ,IAAI,QAAQ,KAAK,SAAS,KAAK,SAAS,KAAK,SAAS,IAAI,MAAM,IAAI,OAAO,IAAI,WAAW,IAAI,WAAW,IAAI,SAAS,IAAI,eAAe,IAAI,SAAS,IAAI,WAAW,IAAI,WAAW,IAAI,QAAQ,IAAI,qBAAqB,IAAI,cAAc,IAAI,iBAAiB,IAAI,wBAAwB,IAAI,gBAAgB,IAAI,sBAAsB,IAAI,sBAAsB,IAAI,mBAAmB,IAAI,sBAAsB,IAAI,cAAc,IAAI,mBAAmB,IAAI,oBAAoB,IAAI,YAAY,IAAI,iBAAiB,IAAI,kBAAkB,IAAI,iBAAiB,IAAI,oBAAoB,IAAI,sBAAsB,IAAI,qBAAqB,IAAI,oBAAoB,IAAI,iBAAiB,IAAI,oBAAoB,IAAI,eAAe,IAAI,kBAAkB,IAAI,cAAc,IAAI,mBAAmB,IAAI,qBAAqB,IAAI,kBAAkB,IAAI,gBAAgB,IAAI,aAAa,IAAI,mBAAmB,IAAI,cAAc,IAAI,QAAQ,KAAK,OAAO,IAAI,eAAe,IAAI,WAAW,IAAI,kBAAkB,IAAI,uBAAuB,IAAI,mBAAmB,IAAI,kBAAkB,IAAI,uBAAuB,IAAI,mBAAmB,IAAI,SAAS,KAAK,mBAAmB,IAAI,oBAAoB,IAAI,SAAS,IAAI,QAAQ,IAAI,WAAW,IAAI,OAAO,IAAI,QAAQ,IAAI,QAAQ,IAAI,gBAAgB,IAAI,cAAc,IAAI,QAAQ,KAAK,cAAc,IAAI,SAAS,KAAK,SAAS,IAAI,OAAO,IAAI,SAAS,IAAI,WAAW,IAAI,WAAW,IAAI,WAAW,IAAI,QAAQ,IAAI,wBAAwB,IAAI,uBAAuB,IAAI,sBAAsB,IAAI,0BAA0B,IAAI,yBAAyB,IAAI,mBAAmB,IAAI,YAAY,KAAK,QAAQ,KAAK,YAAY,IAAI,qBAAqB,IAAI,SAAS,IAAI,QAAQ,IAAI,iBAAiB,IAAI,cAAc,IAAI,yBAAyB,IAAI,eAAe,IAAI,aAAa,IAAI,kBAAkB,KAAK,cAAc,IAAI,eAAe,IAAI,oBAAoB,IAAI,wBAAwB,KAAK,sBAAsB,KAAK,mBAAmB,IAAI,yBAAyB,KAAK,oBAAoB,IAAI,oBAAoB,KAAK,iBAAiB,KAAK,oBAAoB,IAAI,uBAAuB,KAAK,yBAAyB,IAAI,YAAY,IAAI,iBAAiB,IAAI,mBAAmB,IAAI,gBAAgB,KAAK,sBAAsB,KAAK,iBAAiB,IAAI,4BAA4B,KAAK,sBAAsB,KAAK,gBAAgB,IAAI,qBAAqB,KAAK,0BAA0B,IAAI,sBAAsB,IAAI,qBAAqB,IAAI,wBAAwB,KAAK,0BAA0B,IAAI,oBAAoB,KAAK,yBAAyB,IAAI,sBAAsB,KAAK,2BAA2B,IAAI,cAAc,KAAK,mBAAmB,IAAI,gBAAgB,IAAI,qBAAqB,KAAK,0BAA0B,IAAI,qBAAqB,KAAK,gBAAgB,KAAK,qBAAqB,IAAI,aAAa,IAAI,kBAAkB,IAAI,sBAAsB,IAAI,kBAAkB,IAAI,mBAAmB,IAAI,SAAS,KAAK,UAAU,IAAI,WAAW,IAAI,OAAO,IAAI,UAAU,IAAI,UAAU,IAAI,WAAW,IAAI,SAAS,IAAI,UAAU,IAAI,QAAQ,IAAI,WAAW,IAAI,QAAQ,KAAK,UAAU,IAAI,WAAW,IAAI,UAAU,IAAI,UAAU,IAAI,YAAY,IAAI,SAAS,KAAK,yBAAyB,IAAI,mBAAmB,IAAI,OAAO,IAAI,SAAS,KAAK,UAAU,IAAI,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,WAAW,IAAI,QAAQ,IAAI,SAAS,IAAI,YAAY,IAAI,cAAc,IAAI,gBAAgB,IAAI,oBAAoB,IAAI,aAAa,IAAI,QAAQ,IAAI,QAAQ,KAAK,QAAQ,IAAI,OAAO,IAAI,cAAc,IAAI,kBAAkB,IAAI,SAAS,IAAI,OAAO,IAAI,aAAa,IAAI,kBAAkB,IAAI,uBAAuB,IAAI,kBAAkB,IAAI,UAAU,IAAI,YAAY,IAAI,eAAe,IAAI,iBAAiB,IAAI,SAAS,KAAK,QAAQ,IAAI,QAAQ,IAAI,SAAS,IAAI,QAAQ,KAAK,SAAS,IAAI,SAAS,KAAK,UAAU,IAAI,OAAO,IAAI,QAAQ,IAAI,WAAW,IAAI,SAAS,IAAI,SAAS,IAAI,WAAW,IAAI,WAAW,IAAI,WAAW,IAAI,QAAQ,IAAI,OAAO,IAAI,mBAAmB,IAAI,uBAAuB,IAAI,yBAAyB,IAAI,QAAQ,IAAI,QAAQ,IAAI,sBAAsB,IAAI,eAAe,IAAI,kBAAkB,IAAI,wBAAwB,IAAI,iBAAiB,IAAI,uBAAuB,IAAI,uBAAuB,IAAI,oBAAoB,IAAI,uBAAuB,IAAI,eAAe,IAAI,aAAa,IAAI,kBAAkB,IAAI,mBAAmB,IAAI,kBAAkB,IAAI,qBAAqB,IAAI,uBAAuB,IAAI,sBAAsB,IAAI,qBAAqB,IAAI,kBAAkB,IAAI,qBAAqB,IAAI,gBAAgB,IAAI,mBAAmB,IAAI,eAAe,IAAI,SAAS,IAAI,iBAAiB,IAAI,gBAAgB,IAAI,SAAS,IAAI,QAAQ,IAAI,gBAAgB,IAAI,WAAW,IAAI,SAAS,IAAI,WAAW,IAAI,WAAW,IAAI,OAAO,IAAI,WAAW,IAAI,WAAW,IAAI,UAAU,IAAI,QAAQ,IAAI,QAAQ,KAAK,mBAAmB,IAAI,mBAAmB,IAAI,oBAAoB,IAAI,iBAAiB,IAAI,UAAU,IAAI,gBAAgB,IAAI,SAAS,KAAK,SAAS,IAAI,WAAW,IAAI,uBAAuB,IAAI,iBAAiB,IAAI,sBAAsB,IAAI,mBAAmB,IAAI,wBAAwB,IAAI,gBAAgB,IAAI,SAAS,KAAK,SAAS,IAAI,QAAQ,IAAI,WAAW,IAAI,gBAAgB,IAAI,aAAa,IAAI,kBAAkB,IAAI,uBAAuB,IAAI,kBAAkB,IAAI,aAAa,IAAI,QAAQ,IAAI,QAAQ,IAAI,aAAa,IAAI,kBAAkB,IAAI,WAAW,IAAI,SAAS,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,SAAS,IAAI,QAAQ,KAAK,QAAQ,IAAI,WAAW,IAAI,WAAW,IAAI,QAAQ,IAAI,QAAQ,KAAK,cAAc,IAAI,UAAU,IAAI,eAAe,KAAK,cAAc,IAAI,UAAU,IAAI,eAAe,IAAI,mBAAmB,IAAI,eAAe,IAAI,SAAS,KAAK,cAAc,IAAI,SAAS,KAAK,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,SAAS,IAAI,aAAa,IAAI,UAAU,IAAI,WAAW,IAAI,SAAS,IAAI,UAAU,IAAI,QAAQ,IAAI,WAAW,IAAI,QAAQ,KAAK,UAAU,IAAI,WAAW,IAAI,UAAU,IAAI,aAAa,IAAI,eAAe,IAAI,iBAAiB,IAAI,qBAAqB,IAAI,UAAU,IAAI,cAAc,IAAI,UAAU,IAAI,SAAS,KAAK,YAAY,IAAI,eAAe,IAAI,qBAAqB,IAAI,gBAAgB,IAAI,kBAAkB,IAAI,UAAU,IAAI,eAAe,IAAI,YAAY,IAAI,gBAAgB,IAAI,mBAAmB,IAAI,oBAAoB,IAAI,SAAS,IAAI,YAAY,IAAI,UAAU,IAAI,SAAS,KAAK,WAAW,IAAI,QAAQ,IAAI,SAAS,IAAI,UAAU,IAAI,SAAS,IAAI,QAAQ,IAAI,UAAU,IAAI,WAAW,IAAI,QAAQ,IAAI,WAAW,IAAI,SAAS,IAAI,gBAAgB,IAAI,iBAAiB,IAAI,sBAAsB,IAAI,kBAAkB,IAAI,kBAAkB,IAAI,QAAQ,KAAK,SAAS,KAAK,SAAS,KAAK,WAAW,IAAI,UAAU,IAAI,UAAU,IAAI,QAAQ,KAAK,SAAS,KAAK,SAAS,KAAK,QAAQ,KAAK,OAAO,IAAI,SAAS,KAAK,SAAS,KAAK,SAAS,IAAI,SAAS,IAAI,SAAS,IAAI,UAAU,IAAI,WAAW,IAAI,UAAU,IAAI,QAAQ,IAAI,QAAQ,KAAK,SAAS,KAAK,SAAS,KAAK,SAAS,IAAI,SAAS,IAAI,WAAW,IAAI,WAAW,IAAI,QAAQ,IAAI,SAAS,IAAI,mBAAmB,IAAI,SAAS,IAAI,QAAQ,IAAI,SAAS,IAAI,SAAS,KAAK,UAAU,IAAI,WAAW,IAAI,WAAW,IAAI,OAAO,IAAI,QAAQ,KAAK,QAAQ,IAAI,SAAS,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,QAAQ,IAAI,SAAS,IAAI,UAAU,IAAI,OAAO,IAAI,QAAQ,KAAK,UAAU,IAAI,WAAW,IAAI,YAAY,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,OAAO,IAAI,QAAQ,IAAI,QAAQ,IAAI,WAAW,IAAI,SAAS,IAAI,aAAa,IAAI,SAAS,IAAI,QAAQ,IAAI,SAAS,IAAI,UAAU,IAAI,WAAW,IAAI,aAAa,IAAI,aAAa,IAAI,aAAa,IAAI,aAAa,IAAI,aAAa,IAAI,aAAa,IAAI,aAAa,IAAI,aAAa,IAAI,UAAU,IAAI,YAAY,IAAI,aAAa,IAAI,WAAW,IAAI,UAAU,IAAI,YAAY,IAAI,UAAU,IAAI,SAAS,KAAK,OAAO,IAAI,QAAQ,IAAI,WAAW,IAAI,QAAQ,IAAI,SAAS,IAAI,SAAS,IAAI,WAAW,IAAI,aAAa,IAAI,SAAS,IAAI,UAAU,IAAI,SAAS,KAAK,QAAQ,IAAI,UAAU,IAAI,YAAY,IAAI,UAAU,IAAI,WAAW,IAAI,QAAQ,IAAI,SAAS,IAAI,aAAa,IAAI,UAAU,IAAI,SAAS,IAAI,aAAa,IAAI,gBAAgB,IAAI,cAAc,IAAI,YAAY,IAAI,cAAc,IAAI,WAAW,IAAI,WAAW,IAAI,aAAa,IAAI,SAAS,IAAI,aAAa,IAAI,UAAU,IAAI,QAAQ,IAAI,UAAU,IAAI,WAAW,IAAI,YAAY,IAAI,YAAY,IAAI,UAAU,IAAI,WAAW,IAAI,SAAS,IAAI,SAAS,IAAI,YAAY,IAAI,QAAQ,KAAK,WAAW,IAAI,YAAY,IAAI,WAAW,IAAI,YAAY,IAAI,aAAa,IAAI,cAAc,IAAI,aAAa,IAAI,YAAY,IAAI,oBAAoB,IAAI,kBAAkB,IAAI,aAAa,IAAI,WAAW,IAAI,aAAa,IAAI,WAAW,IAAI,iBAAiB,IAAI,gBAAgB,IAAI,kBAAkB,IAAI,sBAAsB,IAAI,sBAAsB,IAAI,uBAAuB,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,QAAQ,KAAK,YAAY,KAAK,SAAS,IAAI,SAAS,KAAK,QAAQ,IAAI,WAAW,IAAI,WAAW,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,WAAW,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,aAAa,IAAI,YAAY,IAAI,aAAa,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,WAAW,IAAI,UAAU,IAAI,UAAU,IAAI,WAAW,IAAI,SAAS,KAAK,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,SAAS,KAAK,UAAU,IAAI,aAAa,IAAI,SAAS,IAAI,WAAW,IAAI,SAAS,IAAI,UAAU,IAAI,UAAU,IAAI,WAAW,IAAI,WAAW,IAAI,QAAQ,IAAI,WAAW,IAAI,aAAa,IAAI,WAAW,IAAI,WAAW,IAAI,WAAW,IAAI,SAAS,KAAK,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,UAAU,IAAI,UAAU,IAAI,YAAY,IAAI,SAAS,IAAI,SAAS,IAAI,UAAU,IAAI,YAAY,IAAI,QAAQ,IAAI,SAAS,IAAI,cAAc,IAAI,QAAQ,KAAK,SAAS,IAAI,UAAU,IAAI,cAAc,IAAI,QAAQ,IAAI,QAAQ,IAAI,SAAS,IAAI,SAAS,IAAI,WAAW,IAAI,oBAAoB,IAAI,qBAAqB,IAAI,aAAa,IAAI,aAAa,IAAI,eAAe,IAAI,gBAAgB,IAAI,gBAAgB,IAAI,SAAS,IAAI,aAAa,IAAI,WAAW,IAAI,YAAY,IAAI,UAAU,IAAI,aAAa,IAAI,UAAU,IAAI,WAAW,IAAI,YAAY,IAAI,UAAU,IAAI,WAAW,IAAI,SAAS,IAAI,WAAW,IAAI,eAAe,IAAI,cAAc,IAAI,SAAS,IAAI,YAAY,IAAI,WAAW,IAAI,SAAS,KAAK,WAAW,IAAI,QAAQ,IAAI,SAAS,IAAI,WAAW,IAAI,UAAU,IAAI,UAAU,IAAI,SAAS,KAAK,SAAS,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,UAAU,IAAI,YAAY,IAAI,YAAY,IAAI,UAAU,IAAI,UAAU,IAAI,WAAW,IAAI,YAAY,IAAI,QAAQ,IAAI,aAAa,IAAI,WAAW,IAAI,WAAW,IAAI,WAAW,IAAI,UAAU,IAAI,SAAS,KAAK,WAAW,IAAI,YAAY,IAAI,gBAAgB,IAAI,gBAAgB,IAAI,aAAa,IAAI,eAAe,IAAI,UAAU,IAAI,WAAW,IAAI,mBAAmB,IAAI,oBAAoB,IAAI,UAAU,IAAI,UAAU,IAAI,aAAa,IAAI,UAAU,IAAI,WAAW,IAAI,SAAS,IAAI,SAAS,IAAI,WAAW,IAAI,WAAW,IAAI,SAAS,IAAI,SAAS,IAAI,UAAU,IAAI,YAAY,IAAI,UAAU,IAAI,WAAW,IAAI,QAAQ,IAAI,OAAO,IAAI,YAAY,IAAI,UAAU,IAAI,YAAY,IAAI,OAAO,IAAI,QAAQ,IAAI,UAAU,IAAI,YAAY,IAAI,WAAW,IAAI,QAAQ,KAAK,UAAU,IAAI,UAAU,IAAI,SAAS,IAAI,YAAY,IAAI,gBAAgB,IAAI,UAAU,IAAI,QAAQ,IAAI,YAAY,IAAI,UAAU,IAAI,QAAQ,IAAI,UAAU,IAAI,WAAW,IAAI,kBAAkB,IAAI,WAAW,IAAI,SAAS,IAAI,WAAW,IAAI,WAAW,IAAI,WAAW,IAAI,SAAS,KAAK,QAAQ,IAAI,UAAU,IAAI,aAAa,IAAI,aAAa,IAAI,YAAY,IAAI,cAAc,IAAI,mBAAmB,IAAI,cAAc,IAAI,mBAAmB,IAAI,oBAAoB,IAAI,qBAAqB,IAAI,aAAa,IAAI,WAAW,IAAI,WAAW,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,IAAI,WAAW,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,YAAY,IAAI,SAAS,IAAI,aAAa,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,WAAW,IAAI,WAAW,IAAI,WAAW,IAAI,SAAS,IAAI,SAAS,IAAI,UAAU,IAAI,WAAW,IAAI,QAAQ,IAAI,SAAS,IAAI,OAAO,IAAI,UAAU,IAAI,QAAQ,KAAK,OAAO,IAAI,UAAU,IAAI,WAAW,IAAI,QAAQ,IAAI,WAAW,IAAI,OAAO,IAAI,aAAa,IAAI,QAAQ,IAAI,QAAQ,IAAI,WAAW,IAAI,UAAU,IAAI,UAAU,IAAI,aAAa,IAAI,WAAW,IAAI,WAAW,IAAI,WAAW,IAAI,SAAS,IAAI,QAAQ,IAAI,SAAS,IAAI,UAAU,IAAI,SAAS,KAAK,SAAS,IAAI,WAAW,IAAI,UAAU,IAAI,SAAS,IAAI,YAAY,IAAI,UAAU,IAAI,WAAW,IAAI,YAAY,IAAI,UAAU,IAAI,eAAe,IAAI,gBAAgB,IAAI,WAAW,IAAI,WAAW,IAAI,UAAU,IAAI,YAAY,IAAI,aAAa,IAAI,UAAU,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,SAAS,IAAI,QAAQ,IAAI,OAAO,IAAI,QAAQ,IAAI,QAAQ,IAAI,SAAS,IAAI,SAAS,IAAI,SAAS,IAAI,UAAU,IAAI,gBAAgB,IAAI,iBAAiB,IAAI,kBAAkB,IAAI,QAAQ,IAAI,WAAW,IAAI,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,QAAQ,KAAK,UAAU,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,IAAI,UAAU,IAAI,SAAS,IAAI,SAAS,KAAK,WAAW,IAAI,SAAS,IAAI,UAAU,IAAI,aAAa,IAAI,UAAU,IAAI,WAAW,IAAI,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,WAAW,IAAI,WAAW,IAAI,WAAW,IAAI,WAAW,IAAI,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,WAAW,IAAI,WAAW,IAAI,WAAW,IAAI,WAAW,IAAI,WAAW,IAAI,WAAW,IAAI,UAAU,IAAI,UAAU,IAAI,SAAS,KAAK,OAAO,IAAI,QAAQ,IAAI,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,QAAQ,IAAI,WAAW,IAAI,UAAU,IAAI,QAAQ,IAAI,SAAS,IAAI,OAAO,IAAI,QAAQ,IAAI,QAAQ,IAAI,SAAS,IAAI,aAAa,IAAI,QAAQ,IAAI,UAAU,IAAI,WAAW,IAAI,YAAY,IAAI,aAAa,IAAI,SAAS,KAAK,WAAW,IAAI,QAAQ,KAAK,OAAO,IAAI,QAAQ,IAAI,UAAU,IAAI,SAAS,IAAI,OAAO,IAAI,QAAQ,IAAI,QAAQ,IAAI,QAAQ,IAAI,QAAQ,IAAI,SAAS,IAAI,aAAa,IAAI,QAAQ,IAAI,SAAS,IAAI,UAAU,IAAI,UAAU,IAAI,SAAS,KAAK,UAAU,IAAI,SAAS,IAAI,SAAS,IAAI,UAAU,IAAI,UAAU,IAAI,MAAM,IAAI,OAAO,IAAI,SAAS,IAAI,UAAU,IAAI,UAAU,IAAI,WAAW,IAAI,YAAY,IAAI,cAAc,IAAI,WAAW,IAAI,WAAW,IAAI,cAAc,IAAI,eAAe,IAAI,YAAY,IAAI,WAAW,IAAI,cAAc,KAAK,SAAS,KAAK,SAAS,IAAI,WAAW,IAAI,SAAS,IAAI,WAAW,IAAI,WAAW,IAAI,SAAS,IAAI,YAAY,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,WAAW,IAAI,cAAc,IAAI,WAAW,IAAI,WAAW,IAAI,QAAQ,KAAK,aAAa,IAAI,aAAa,IAAI,UAAU,IAAI,WAAW,IAAI,kBAAkB,IAAI,mBAAmB,IAAI,SAAS,KAAK,WAAW,IAAI,SAAS,KAAK,WAAW,IAAI,WAAW,IAAI,WAAW,IAAI,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,OAAO,IAAI,SAAS,IAAI,UAAU,IAAI,QAAQ,IAAI,SAAS,IAAI,SAAS,IAAI,UAAU,IAAI,QAAQ,IAAI,QAAQ,KAAK,UAAU,IAAI,WAAW,IAAI,OAAO,IAAI,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,aAAa,IAAI,aAAa,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,OAAO,IAAI,WAAW,IAAI,UAAU,IAAI,aAAa,IAAI,WAAW,IAAI,QAAQ,IAAI,WAAW,IAAI,aAAa,IAAI,aAAa,IAAI,aAAa,IAAI,YAAY,IAAI,SAAS,IAAI,UAAU,IAAI,SAAS,KAAK,SAAS,IAAI,UAAU,IAAI,UAAU,IAAI,WAAW,IAAI,SAAS,KAAK,SAAS,IAAI,UAAU,IAAI,YAAY,IAAI,UAAU,IAAI,WAAW,IAAI,UAAU,IAAI,OAAO,IAAI,WAAW,IAAI,UAAU,IAAI,QAAQ,IAAI,SAAS,IAAI,UAAU,IAAI,QAAQ,IAAI,QAAQ,KAAK,UAAU,IAAI,SAAS,KAAK,SAAS,KAAK,WAAW,IAAI,UAAU,IAAI,UAAU,IAAI,WAAW,IAAI,WAAW,IAAI,QAAQ,IAAI,QAAQ,KAAK,WAAW,IAAI,SAAS,IAAI,SAAS,IAAI,SAAS,KAAK,SAAS,KAAK,UAAU,IAAI,SAAS,IAAI,WAAW,IAAI,UAAU,IAAI,OAAO,IAAI,QAAQ,IAAI,SAAS,IAAI,WAAW,IAAI,aAAa,IAAI,WAAW,IAAI,WAAW,IAAI,SAAS,IAAI,UAAU,IAAI,WAAW,IAAI,QAAQ,IAAI,SAAS,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,YAAY,IAAI,WAAW,IAAI,WAAW,IAAI,WAAW,IAAI,WAAW,IAAI,YAAY,IAAI,WAAW,IAAI,QAAQ,IAAI,WAAW,IAAI,SAAS,IAAI,UAAU,KAAK,UAAU,IAAI,UAAU,IAAI,WAAW,IAAI,WAAW,IAAI,UAAU,IAAI,YAAY,IAAI,YAAY,IAAI,WAAW,IAAI,WAAW,IAAI,UAAU,IAAI,SAAS,IAAI,QAAQ,IAAI,SAAS,IAAI,UAAU,IAAI,WAAW,IAAI,YAAY,IAAI,aAAa,IAAI,SAAS,IAAI,OAAO,IAAI,cAAc,IAAI,kBAAkB,IAAI,oBAAoB,IAAI,kBAAkB,IAAI,mBAAmB,IAAI,mBAAmB,IAAI,oBAAoB,IAAI,sBAAsB,IAAI,wBAAwB,IAAI,mBAAmB,IAAI,QAAQ,IAAI,QAAQ,IAAI,SAAS,IAAI,aAAa,IAAI,QAAQ,IAAI,UAAU,IAAI,WAAW,IAAI,YAAY,IAAI,aAAa,IAAI,SAAS,KAAK,WAAW,IAAI,eAAe,IAAI,YAAY,IAAI,cAAc,IAAI,eAAe,IAAI,YAAY,IAAI,YAAY,IAAI,WAAW,IAAI,WAAW,IAAI,QAAQ,KAAK,OAAO,IAAI,QAAQ,IAAI,UAAU,IAAI,UAAU,IAAI,WAAW,IAAI,UAAU,IAAI,SAAS,IAAI,OAAO,IAAI,UAAU,IAAI,aAAa,IAAI,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,WAAW,IAAI,eAAe,IAAI,QAAQ,IAAI,SAAS,IAAI,aAAa,IAAI,QAAQ,IAAI,SAAS,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,kBAAkB,IAAI,uBAAuB,IAAI,eAAe,IAAI,mBAAmB,IAAI,kBAAkB,IAAI,mBAAmB,IAAI,UAAU,IAAI,SAAS,KAAK,WAAW,IAAI,YAAY,IAAI,WAAW,IAAI,WAAW,IAAI,QAAQ,IAAI,YAAY,IAAI,SAAS,IAAI,SAAS,IAAI,WAAW,IAAI,UAAU,IAAI,aAAa,IAAI,UAAU,IAAI,WAAW,IAAI,QAAQ,IAAI,UAAU,IAAI,WAAW,IAAI,SAAS,KAAK,QAAQ,IAAI,SAAS,IAAI,UAAU,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,WAAW,IAAI,WAAW,IAAI,MAAM,IAAI,OAAO,IAAI,SAAS,IAAI,UAAU,IAAI,UAAU,IAAI,WAAW,IAAI,WAAW,IAAI,WAAW,IAAI,YAAY,IAAI,WAAW,IAAI,SAAS,IAAI,UAAU,IAAI,UAAU,IAAI,aAAa,IAAI,YAAY,IAAI,cAAc,KAAK,SAAS,KAAK,UAAU,IAAI,QAAQ,IAAI,SAAS,IAAI,SAAS,IAAI,SAAS,IAAI,YAAY,IAAI,QAAQ,IAAI,WAAW,IAAI,eAAe,IAAI,eAAe,IAAI,aAAa,IAAI,WAAW,IAAI,WAAW,IAAI,QAAQ,IAAI,UAAU,IAAI,kBAAkB,IAAI,QAAQ,KAAK,QAAQ,IAAI,SAAS,IAAI,UAAU,IAAI,QAAQ,IAAI,WAAW,IAAI,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,WAAW,IAAI,YAAY,IAAI,SAAS,IAAI,SAAS,IAAI,WAAW,IAAI,WAAW,IAAI,SAAS,KAAK,OAAO,IAAI,SAAS,KAAK,WAAW,IAAI,OAAO,IAAI,aAAa,IAAI,UAAU,IAAI,QAAQ,KAAK,QAAQ,KAAK,SAAS,KAAK,eAAe,IAAI,oBAAoB,IAAI,QAAQ,KAAK,QAAQ,KAAK,SAAS,KAAK,gBAAgB,IAAI,WAAW,IAAI,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,UAAU,KAAK,UAAU,IAAI,YAAY,IAAI,UAAU,IAAI,YAAY,IAAI,aAAa,IAAI,QAAQ,IAAI,SAAS,IAAI,UAAU,KAAK,WAAW,KAAK,SAAS,IAAI,WAAW,IAAI,WAAW,IAAI,UAAU,IAAI,aAAa,KAAK,SAAS,IAAI,QAAQ,IAAI,UAAU,IAAI,OAAO,IAAI,UAAU,IAAI,WAAW,IAAI,UAAU,IAAI,YAAY,IAAI,UAAU,KAAK,WAAW,IAAI,WAAW,IAAI,UAAU,KAAK,WAAW,IAAI,YAAY,IAAI,QAAQ,KAAK,QAAQ,KAAK,QAAQ,IAAI,SAAS,IAAI,UAAU,KAAK,cAAc,KAAK,SAAS,KAAK,UAAU,IAAI,QAAQ,IAAI,SAAS,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,OAAO,IAAI,QAAQ,IAAI,SAAS,IAAI,QAAQ,IAAI,SAAS,IAAI,UAAU,IAAI,QAAQ,KAAK,UAAU,IAAI,SAAS,IAAI,QAAQ,IAAI,eAAe,IAAI,oBAAoB,IAAI,SAAS,IAAI,UAAU,KAAK,cAAc,KAAK,SAAS,KAAK,UAAU,IAAI,UAAU,IAAI,QAAQ,IAAI,UAAU,IAAI,WAAW,IAAI,SAAS,IAAI,SAAS,KAAK,OAAO,IAAI,QAAQ,IAAI,UAAU,IAAI,WAAW,KAAK,aAAa,KAAK,YAAY,IAAI,YAAY,IAAI,YAAY,IAAI,UAAU,IAAI,YAAY,IAAI,YAAY,IAAI,YAAY,IAAI,SAAS,IAAI,cAAc,IAAI,WAAW,KAAK,UAAU,KAAK,YAAY,IAAI,QAAQ,IAAI,WAAW,IAAI,SAAS,KAAK,UAAU,IAAI,YAAY,KAAK,UAAU,IAAI,UAAU,IAAI,WAAW,KAAK,WAAW,KAAK,gBAAgB,IAAI,UAAU,IAAI,WAAW,IAAI,QAAQ,IAAI,WAAW,IAAI,SAAS,KAAK,SAAS,KAAK,cAAc,IAAI,mBAAmB,IAAI,SAAS,IAAI,UAAU,IAAI,WAAW,IAAI,UAAU,IAAI,UAAU,IAAI,YAAY,IAAI,YAAY,IAAI,SAAS,IAAI,UAAU,KAAK,UAAU,IAAI,YAAY,KAAK,cAAc,IAAI,eAAe,KAAK,UAAU,IAAI,YAAY,KAAK,SAAS,IAAI,UAAU,KAAK,UAAU,IAAI,YAAY,KAAK,cAAc,IAAI,eAAe,KAAK,SAAS,IAAI,UAAU,IAAI,WAAW,IAAI,SAAS,IAAI,kBAAkB,IAAI,oBAAoB,IAAI,mBAAmB,IAAI,qBAAqB,IAAI,OAAO,IAAI,QAAQ,IAAI,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,WAAW,IAAI,SAAS,KAAK,WAAW,IAAI,SAAS,KAAK,SAAS,KAAK,YAAY,IAAI,WAAW,IAAI,SAAS,KAAK,SAAS,KAAK,YAAY,KAAK,WAAW,IAAI,YAAY,KAAK,UAAU,KAAK,UAAU,IAAI,WAAW,IAAI,UAAU,IAAI,YAAY,IAAI,WAAW,IAAI,OAAO,IAAI,UAAU,IAAI,WAAW,IAAI,SAAS,IAAI,SAAS,IAAI,SAAS,IAAI,UAAU,IAAI,QAAQ,IAAI,UAAU,IAAI,WAAW,IAAI,SAAS,IAAI,SAAS,IAAI,WAAW,IAAI,UAAU,IAAI,UAAU,IAAI,QAAQ,KAAK,SAAS,IAAI,UAAU,IAAI,WAAW,IAAI,QAAQ,IAAI,UAAU,IAAI,QAAQ,IAAI,SAAS,IAAI,UAAU,IAAI,UAAU,IAAI,YAAY,IAAI,UAAU,IAAI,QAAQ,IAAI,UAAU,IAAI,UAAU,IAAI,YAAY,IAAI,SAAS,IAAI,WAAW,IAAI,SAAS,KAAK,SAAS,IAAI,UAAU,IAAI,UAAU,IAAI,OAAO,IAAI,UAAU,IAAI,QAAQ,IAAI,UAAU,IAAI,YAAY,IAAI,QAAQ,IAAI,SAAS,IAAI,QAAQ,IAAI,SAAS,IAAI,WAAW,IAAI,SAAS,IAAI,YAAY,IAAI,QAAQ,IAAI,SAAS,IAAI,UAAU,IAAI,WAAW,IAAI,SAAS,IAAI,UAAU,IAAI,WAAW,IAAI,WAAW,IAAI,aAAa,IAAI,QAAQ,IAAI,SAAS,IAAI,UAAU,IAAI,QAAQ,IAAI,QAAQ,IAAI,SAAS,IAAI,aAAa,IAAI,WAAW,IAAI,UAAU,IAAI,SAAS,IAAI,QAAQ,IAAI,WAAW,IAAI,WAAW,IAAI,WAAW,IAAI,SAAS,IAAI,YAAY,IAAI,QAAQ,KAAK,QAAQ,IAAI,SAAS,IAAI,WAAW,IAAI,UAAU,IAAI,OAAO,IAAI,cAAc,IAAI,QAAQ,IAAI,WAAW,IAAI,YAAY,IAAI,WAAW,IAAI,SAAS,IAAI,aAAa,IAAI,UAAU,IAAI,YAAY,IAAI,WAAW,IAAI,WAAW,IAAI,UAAU,IAAI,UAAU,IAAI,WAAW,IAAI,YAAY,IAAI,YAAY,IAAI,OAAO,IAAI,aAAa,IAAI,SAAS,KAAK,SAAS,IAAI,UAAU,IAAI,OAAO,IAAI,QAAQ,IAAI,SAAS,IAAI,UAAU,IAAI,QAAQ,IAAI,SAAS,IAAI,eAAe,IAAI,gBAAgB,IAAI,WAAW,IAAI,gBAAgB,IAAI,aAAa,IAAI,aAAa,IAAI,YAAY,IAAI,UAAU,IAAI,WAAW,IAAI,SAAS,IAAI,UAAU,IAAI,WAAW,IAAI,SAAS,IAAI,aAAa,IAAI,aAAa,IAAI,aAAa,IAAI,SAAS,IAAI,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,SAAS,KAAK,QAAQ,IAAI,WAAW,IAAI,QAAQ,KAAK,SAAS,IAAI,SAAS,KAAK,WAAW,IAAI,SAAS,KAAK,gBAAgB,IAAI,YAAY,IAAI,UAAU,IAAI,YAAY,IAAI,QAAQ,IAAI,SAAS,IAAI,UAAU,IAAI,SAAS,IAAI,WAAW,IAAI,UAAU,IAAI,SAAS,IAAI,SAAS,KAAK,WAAW,IAAI,UAAU,IAAI,aAAa,IAAI,SAAS,IAAI,UAAU,IAAI,UAAU,IAAI,WAAW,IAAI,SAAS,IAAI,UAAU,IAAI,SAAS,IAAI,WAAW,IAAI,UAAU,IAAI,YAAY,IAAI,UAAU,IAAI,WAAW,IAAI,WAAW,IAAI,WAAW,IAAI,WAAW,IAAI,YAAY,IAAI,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,UAAU,IAAI,cAAc,IAAI,UAAU,IAAI,UAAU,IAAI,WAAW,IAAI,WAAW,IAAI,UAAU,IAAI,YAAY,IAAI,YAAY,IAAI,WAAW,IAAI,WAAW,IAAI,UAAU,IAAI,SAAS,IAAI,QAAQ,IAAI,SAAS,IAAI,YAAY,IAAI,UAAU,IAAI,WAAW,IAAI,SAAS,IAAI,SAAS,IAAI,YAAY,IAAI,aAAa,IAAI,UAAU,IAAI,SAAS,IAAI,OAAO,IAAI,QAAQ,IAAI,WAAW,IAAI,WAAW,IAAI,QAAQ,KAAK,UAAU,IAAI,UAAU,IAAI,WAAW,IAAI,QAAQ,IAAI,SAAS,IAAI,eAAe,IAAI,mBAAmB,IAAI,qBAAqB,IAAI,mBAAmB,IAAI,oBAAoB,IAAI,sBAAsB,IAAI,qBAAqB,IAAI,oBAAoB,IAAI,oBAAoB,IAAI,SAAS,IAAI,iBAAiB,IAAI,UAAU,IAAI,UAAU,IAAI,QAAQ,IAAI,WAAW,IAAI,eAAe,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,SAAS,KAAK,WAAW,IAAI,YAAY,IAAI,SAAS,IAAI,WAAW,IAAI,aAAa,IAAI,UAAU,IAAI,WAAW,IAAI,SAAS,KAAK,QAAQ,IAAI,SAAS,IAAI,UAAU,IAAI,WAAW,IAAI,WAAW,IAAI,WAAW,IAAI,SAAS,IAAI,UAAU,IAAI,UAAU,IAAI,aAAa,IAAI,YAAY,IAAI,OAAO,IAAI,WAAW,IAAI,UAAU,IAAI,OAAO,IAAI,QAAQ,IAAI,SAAS,IAAI,WAAW,IAAI,UAAU,IAAI,QAAQ,IAAI,WAAW,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,WAAW,IAAI,aAAa,IAAI,UAAU,IAAI,QAAQ,IAAI,SAAS,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,WAAW,IAAI,UAAU,IAAI,YAAY,IAAI,QAAQ,IAAI,SAAS,IAAI,SAAS,IAAI,WAAW,IAAI,aAAa,IAAI,UAAU,IAAI,SAAS,IAAI,QAAQ,KAAK,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,SAAS,IAAI,aAAa,IAAI,kBAAkB,IAAI,OAAO,IAAI,QAAQ,IAAI,UAAU,IAAI,WAAW,IAAI,WAAW,IAAI,QAAQ,IAAI,WAAW,IAAI,SAAS,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,UAAU,IAAI,YAAY,IAAI,YAAY,IAAI,UAAU,IAAI,kBAAkB,IAAI,WAAW,IAAI,aAAa,IAAI,SAAS,IAAI,UAAU,IAAI,QAAQ,IAAI,SAAS,IAAI,UAAU,KAAK,WAAW,IAAI,QAAQ,IAAI,SAAS,IAAI,WAAW,IAAI,SAAS,KAAK,WAAW,IAAI,cAAc,IAAI,SAAS,IAAI,UAAU,IAAI,WAAW,KAAK,UAAU,IAAI,WAAW,KAAK,UAAU,IAAI,WAAW,IAAI,aAAa,IAAI,eAAe,IAAI,UAAU,IAAI,WAAW,IAAI,aAAa,IAAI,eAAe,IAAI,QAAQ,IAAI,WAAW,IAAI,WAAW,IAAI,SAAS,IAAI,UAAU,IAAI,SAAS,KAAK,WAAW,IAAI,WAAW,IAAI,WAAW,IAAI,SAAS,IAAI,UAAU,IAAI,oBAAoB,IAAI,gBAAgB,IAAI,UAAU,IAAI,QAAQ,IAAI,SAAS,IAAI,WAAW,IAAI,SAAS,IAAI,YAAY,IAAI,YAAY,IAAI,UAAU,IAAI,UAAU,IAAI,YAAY,IAAI,YAAY,IAAI,WAAW,IAAI,aAAa,IAAI,cAAc,IAAI,cAAc,IAAI,eAAe,IAAI,WAAW,IAAI,WAAW,IAAI,WAAW,IAAI,SAAS,IAAI,eAAe,IAAI,gBAAgB,IAAI,WAAW,IAAI,gBAAgB,IAAI,aAAa,IAAI,aAAa,IAAI,YAAY,IAAI,QAAQ,IAAI,SAAS,IAAI,QAAQ,IAAI,SAAS,IAAI,QAAQ,IAAI,SAAS,IAAI,QAAQ,IAAI,SAAS,IAAI,QAAQ,IAAI,SAAS,IAAI,WAAW,IAAI,YAAY,IAAI,SAAS,IAAI,YAAY,IAAI,YAAY,IAAI,YAAY,IAAI,YAAY,IAAI,YAAY,IAAI,UAAU,IAAI,UAAU,IAAI,YAAY,IAAI,WAAW,IAAI,aAAa,IAAI,cAAc,IAAI,cAAc,IAAI,eAAe,IAAI,WAAW,IAAI,WAAW,IAAI,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,UAAU,IAAI,YAAY,IAAI,WAAW,IAAI,SAAS,IAAI,UAAU,IAAI,WAAW,IAAI,QAAQ,IAAI,SAAS,IAAI,WAAW,IAAI,WAAW,IAAI,QAAQ,IAAI,SAAS,IAAI,WAAW,IAAI,QAAQ,KAAK,WAAW,IAAI,cAAc,IAAI,UAAU,IAAI,aAAa,IAAI,WAAW,IAAI,gBAAgB,IAAI,aAAa,IAAI,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,SAAS,IAAI,UAAU,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,WAAW,IAAI,aAAa,IAAI,WAAW,IAAI,SAAS,IAAI,SAAS,IAAI,QAAQ,IAAI,WAAW,IAAI,WAAW,IAAI,SAAS,KAAK,YAAY,IAAI,SAAS,IAAI,WAAW,IAAI,UAAU,IAAI,aAAa,IAAI,iBAAiB,IAAI,iBAAiB,IAAI,mBAAmB,IAAI,cAAc,IAAI,kBAAkB,IAAI,oBAAoB,IAAI,WAAW,IAAI,SAAS,IAAI,aAAa,IAAI,YAAY,IAAI,UAAU,IAAI,YAAY,IAAI,aAAa,IAAI,SAAS,KAAK,SAAS,IAAI,UAAU,IAAI,WAAW,IAAI,UAAU,IAAI,qBAAqB,IAAI,sBAAsB,IAAI,SAAS,IAAI,SAAS,IAAI,UAAU,IAAI,WAAW,IAAI,SAAS,IAAI,UAAU,IAAI,WAAW,IAAI,SAAS,IAAI,UAAU,IAAI,QAAQ,IAAI,UAAU,IAAI,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,QAAQ,KAAK,UAAU,IAAI,WAAW,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,WAAW,IAAI,aAAa,IAAI,WAAW,IAAI,UAAU,IAAI,UAAU,IAAI,OAAO,IAAI,QAAQ,IAAI,UAAU,IAAI,SAAS,KAAK,YAAY,IAAI,gBAAgB,IAAI,kBAAkB,IAAI,mBAAmB,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,YAAY,IAAI,eAAe,IAAI,WAAW,IAAI,aAAa,IAAI,WAAW,IAAI,UAAU,IAAI,UAAU,IAAI,SAAS,KAAK,UAAU,IAAI,WAAW,IAAI,SAAS,IAAI,UAAU,IAAI,UAAU,IAAI,QAAQ,IAAI,SAAS,IAAI,YAAY,IAAI,SAAS,IAAI,SAAS,IAAI,UAAU,IAAI,UAAU,IAAI,WAAW,IAAI,eAAe,IAAI,aAAa,IAAI,eAAe,IAAI,WAAW,IAAI,UAAU,IAAI,cAAc,IAAI,SAAS,IAAI,WAAW,IAAI,aAAa,IAAI,iBAAiB,KAAK,kBAAkB,KAAK,iBAAiB,KAAK,kBAAkB,KAAK,aAAa,IAAI,oBAAoB,IAAI,qBAAqB,IAAI,QAAQ,IAAI,UAAU,IAAI,QAAQ,IAAI,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,WAAW,IAAI,SAAS,IAAI,QAAQ,KAAK,UAAU,IAAI,UAAU,KAAK,UAAU,KAAK,SAAS,KAAK,UAAU,IAAI,UAAU,IAAI,SAAS,KAAK,WAAW,KAAK,WAAW,KAAK,WAAW,KAAK,WAAW,KAAK,YAAY,IAAI,UAAU,IAAI,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,WAAW,IAAI,QAAQ,KAAK,SAAS,KAAK,OAAO,IAAI,OAAO,IAAI,WAAW,IAAI,SAAS,KAAK,SAAS,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,QAAQ,KAAK,UAAU,IAAI,UAAU,IAAI,OAAO,IAAI,UAAU,IAAI,UAAU,IAAI,SAAS,IAAI,SAAS,IAAI,UAAU,IAAI,SAAS,KAAK,WAAW,IAAI,WAAW,IAAI,UAAU,IAAI,UAAU,IAAI,SAAS,KAAK,WAAW,IAAI,WAAW,IAAI,UAAU,IAAI,SAAS,IAAI,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,SAAS,IAAI,UAAU,IAAI,QAAQ,IAAI,OAAO,IAAI,QAAQ,IAAI,QAAQ,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS,KAAK,SAAS,IAAI,QAAQ,IAAI,SAAS,IAAI,WAAW,IAAI,WAAW,IAAI,QAAQ,IAAI,SAAS,IAAI,WAAW,IAAI,SAAS,IAAI,QAAQ,KAAK,SAAS,IAAI,YAAY,IAAI,SAAS,KAAK,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAKzB,WAAW,CAAC,IAAI,UAAU,IAAI,QAAQ,IAAI,WAAW,IAAI,WAAW,IAAI,UAAU,IAAI,QAAQ,KAAK,QAAQ,IAAI,WAAW,IAAI,UAAU,IAAI,UAAU,IAAI,QAAQ,IAAI,UAAU,KAAK,SAAS,IAAI,OAAO,IAAI,UAAU,KAAK,SAAS,IAAI,YAAY,IAAI,WAAW,IAAI,SAAS,IAAI,WAAW,IAAI,SAAS,IAAI,mBAAmB,IAAI,QAAQ,IAAI,YAAY,IAAI,WAAW,IAAI,SAAS,KAAK,QAAQ,KAAK,SAAS,IAAI,UAAU,IAAI,SAAS,IAAI,SAAS,IAAI,SAAS,IAAI,WAAW,IAAI,QAAQ,IAAI,OAAO,IAAI,QAAQ,IAAI,WAAW,IAAI,WAAW,IAAI,UAAU,IAAI,YAAY,IAAI,SAAS,IAAI,UAAU,IAAI,WAAW,IAAI,QAAQ,IAAI,SAAS,IAAI,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,aAAa,IAAI,WAAW,IAAI,WAAW,IAAI,eAAe,IAAI,WAAW,IAAI,UAAU,IAAI,0BAA0B,IAAI,SAAS,IAAI,cAAc,IAAI,WAAW,IAAI,aAAa,IAAI,UAAU,KAAK,SAAS,IAAI,QAAQ,IAAI,YAAY,IAAI,aAAa,IAAI,SAAS,IAAI,SAAS,IAAI,SAAS,IAAI,YAAY,IAAI,SAAS,IAAI,kBAAkB,IAAI,WAAW,IAAI,QAAQ,IAAI,UAAU,IAAI,UAAU,KAAK,QAAQ,IAAI,UAAU,IAAI,QAAQ,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,YAAY,IAAI,OAAO,KAAK,SAAS,IAAI,QAAQ,IAAI,WAAW,IAAI,UAAU,IAAI,SAAS,IAAI,SAAS,IAAI,QAAQ,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,SAAS,IAAI,SAAS,IAAI,SAAS,IAAI,cAAc,IAAI,iBAAiB,IAAI,UAAU,IAAI,cAAc,IAAI,wBAAwB,IAAI,sBAAsB,IAAI,UAAU,IAAI,sBAAsB,IAAI,uBAAuB,IAAI,qBAAqB,IAAI,uBAAuB,IAAI,QAAQ,IAAI,eAAe,KAAK,SAAS,IAAI,WAAW,IAAI,QAAQ,IAAI,QAAQ,IAAI,WAAW,IAAI,WAAW,IAAI,UAAU,IAAI,QAAQ,IAAI,SAAS,KAAK,QAAQ,IAAI,WAAW,IAAI,UAAU,IAAI,UAAU,IAAI,qBAAqB,IAAI,yBAAyB,IAAI,UAAU,KAAK,SAAS,IAAI,YAAY,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,gBAAgB,IAAI,SAAS,IAAI,QAAQ,IAAI,SAAS,IAAI,UAAU,IAAI,iBAAiB,IAAI,QAAQ,KAAK,QAAQ,IAAI,sBAAsB,IAAI,SAAS,KAAK,SAAS,IAAI,WAAW,IAAI,SAAS,IAAI,SAAS,IAAI,OAAO,IAAI,UAAU,IAAI,WAAW,IAAI,WAAW,IAAI,WAAW,IAAI,UAAU,IAAI,QAAQ,IAAI,SAAS,KAAK,QAAQ,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,IAAI,cAAc,IAAI,SAAS,IAAI,mBAAmB,IAAI,YAAY,IAAI,QAAQ,IAAI,WAAW,KAAK,SAAS,IAAI,OAAO,IAAI,WAAW,IAAI,UAAU,IAAI,QAAQ,IAAI,UAAU,IAAI,kBAAkB,IAAI,WAAW,IAAI,gBAAgB,IAAI,SAAS,IAAI,WAAW,IAAI,WAAW,IAAI,SAAS,IAAI,UAAU,IAAI,SAAS,IAAI,WAAW,IAAI,UAAU,IAAI,QAAQ,IAAI,SAAS,IAAI,aAAa,IAAI,WAAW,IAAI,UAAU,IAAI,OAAO,IAAI,QAAQ,IAAI,QAAQ,IAAI,SAAS,IAAI,OAAO,IAAI,OAAO,IAAI,UAAU,KAAK,SAAS,IAAI,SAAS,IAAI,aAAa,IAAI,WAAW,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,QAAQ,KAAK,QAAQ,KAAK,SAAS,KAAK,SAAS,IAAI,WAAW,IAAI,UAAU,IAAI,SAAS,IAAI,SAAS,IAAI,UAAU,IAAI,WAAW,IAAI,QAAQ,KAAK,QAAQ,KAAK,SAAS,KAAK,SAAS,IAAI,SAAS,IAAI,OAAO,IAAI,WAAW,IAAI,WAAW,IAAI,SAAS,IAAI,WAAW,IAAI,qBAAqB,IAAI,WAAW,IAAI,WAAW,IAAI,QAAQ,IAAI,WAAW,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,sBAAsB,IAAI,oBAAoB,IAAI,sBAAsB,IAAI,WAAW,IAAI,mBAAmB,IAAI,oBAAoB,IAAI,UAAU,IAAI,eAAe,IAAI,kBAAkB,IAAI,UAAU,IAAI,oBAAoB,IAAI,mBAAmB,IAAI,qBAAqB,IAAI,oBAAoB,IAAI,kBAAkB,IAAI,oBAAoB,IAAI,UAAU,IAAI,kBAAkB,IAAI,cAAc,IAAI,SAAS,IAAI,OAAO,IAAI,aAAa,IAAI,QAAQ,IAAI,SAAS,KAAK,QAAQ,IAAI,OAAO,IAAI,UAAU,IAAI,WAAW,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,KAAK,SAAS,IAAI,YAAY,IAAI,YAAY,IAAI,QAAQ,IAAI,WAAW,IAAI,OAAO,IAAI,QAAQ,IAAI,QAAQ,IAAI,gBAAgB,IAAI,WAAW,KAAK,QAAQ,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,IAAI,SAAS,IAAI,WAAW,IAAI,WAAW,IAAI,WAAW,IAAI,QAAQ,IAAI,mBAAmB,KAAK,YAAY,KAAK,QAAQ,IAAI,YAAY,IAAI,SAAS,IAAI,aAAa,IAAI,QAAQ,IAAI,WAAW,IAAI,cAAc,IAAI,UAAU,IAAI,YAAY,IAAI,OAAO,KAAK,UAAU,IAAI,YAAY,IAAI,SAAS,IAAI,SAAS,KAAK,UAAU,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS,IAAI,UAAU,KAAK,UAAU,KAAK,WAAW,IAAI,kBAAkB,KAAK,uBAAuB,IAAI,oBAAoB,IAAI,QAAQ,IAAI,SAAS,IAAI,SAAS,KAAK,SAAS,KAAK,SAAS,IAAI,UAAU,KAAK,4BAA4B,KAAK,sBAAsB,IAAI,UAAU,KAAK,YAAY,IAAI,WAAW,IAAI,YAAY,IAAI,mBAAmB,KAAK,wBAAwB,IAAI,qBAAqB,KAAK,oBAAoB,IAAI,YAAY,KAAK,sBAAsB,IAAI,YAAY,KAAK,UAAU,IAAI,cAAc,IAAI,UAAU,KAAK,YAAY,IAAI,WAAW,KAAK,qBAAqB,KAAK,UAAU,IAAI,cAAc,IAAI,SAAS,IAAI,WAAW,IAAI,UAAU,IAAI,YAAY,IAAI,UAAU,KAAK,SAAS,IAAI,WAAW,IAAI,OAAO,IAAI,UAAU,IAAI,WAAW,IAAI,UAAU,IAAI,QAAQ,IAAI,WAAW,KAAK,QAAQ,IAAI,WAAW,IAAI,UAAU,IAAI,QAAQ,IAAI,YAAY,KAAK,SAAS,IAAI,UAAU,IAAI,UAAU,IAAI,OAAO,KAAK,SAAS,IAAI,WAAW,IAAI,WAAW,IAAI,WAAW,IAAI,SAAS,IAAI,UAAU,IAAI,cAAc,IAAI,SAAS,IAAI,oBAAoB,IAAI,SAAS,IAAI,QAAQ,KAAK,QAAQ,IAAI,QAAQ,IAAI,OAAO,IAAI,OAAO,IAAI,WAAW,IAAI,OAAO,IAAI,SAAS,IAAI,WAAW,IAAI,gBAAgB,IAAI,UAAU,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,KAAK,SAAS,IAAI,QAAQ,IAAI,SAAS,KAAK,QAAQ,IAAI,cAAc,KAAK,SAAS,IAAI,aAAa,IAAI,QAAQ,IAAI,WAAW,IAAI,SAAS,IAAI,sBAAsB,IAAI,WAAW,IAAI,WAAW,IAAI,WAAW,IAAI,QAAQ,IAAI,aAAa,IAAI,QAAQ,IAAI,UAAU,IAAI,UAAU,IAAI,QAAQ,IAAI,WAAW,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,uBAAuB,IAAI,qBAAqB,IAAI,uBAAuB,IAAI,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,mBAAmB,IAAI,UAAU,IAAI,qBAAqB,IAAI,oBAAoB,IAAI,sBAAsB,IAAI,qBAAqB,IAAI,mBAAmB,IAAI,qBAAqB,IAAI,mBAAmB,IAAI,mBAAmB,IAAI,UAAU,IAAI,iBAAiB,IAAI,UAAU,IAAI,YAAY,IAAI,QAAQ,IAAI,gBAAgB,IAAI,WAAW,IAAI,SAAS,IAAI,WAAW,IAAI,WAAW,IAAI,OAAO,IAAI,WAAW,IAAI,WAAW,IAAI,UAAU,IAAI,QAAQ,KAAK,QAAQ,IAAI,YAAY,IAAI,UAAU,IAAI,WAAW,KAAK,SAAS,IAAI,UAAU,IAAI,WAAW,IAAI,UAAU,IAAI,aAAa,IAAI,eAAe,IAAI,aAAa,IAAI,eAAe,IAAI,UAAU,KAAK,SAAS,IAAI,WAAW,IAAI,WAAW,IAAI,aAAa,IAAI,SAAS,IAAI,WAAW,IAAI,gBAAgB,IAAI,YAAY,IAAI,QAAQ,IAAI,WAAW,IAAI,WAAW,IAAI,aAAa,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,SAAS,KAAK,QAAQ,IAAI,QAAQ,IAAI,WAAW,IAAI,WAAW,IAAI,QAAQ,KAAK,QAAQ,IAAI,cAAc,IAAI,UAAU,KAAK,eAAe,IAAI,WAAW,IAAI,WAAW,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS,IAAI,WAAW,IAAI,WAAW,IAAI,SAAS,IAAI,aAAa,IAAI,UAAU,IAAI,WAAW,IAAI,UAAU,IAAI,QAAQ,IAAI,WAAW,KAAK,QAAQ,IAAI,WAAW,IAAI,UAAU9gG,EAAE,WAAW,IAAI,eAAe,IAAI,SAAS,IAAI,qBAAqB,IAAI,SAAS,IAAI,UAAU,IAAI,UAAU,KAAK,SAAS,IAAI,eAAe,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,SAAS,IAAI,aAAa,IAAI,YAAY,IAAI,YAAY,IAAI,UAAU,IAAI,YAAY,IAAI,UAAU,KAAK,SAAS,IAAI,WAAW,IAAI,SAAS,IAAI,UAAU,IAAI,SAAS,IAAI,QAAQ,IAAI,UAAU,IAAI,WAAW,IAAI,SAAS,IAAI,SAAS,IAAI,SAAS,IAAI,SAAS,IAAI,sBAAsB,IAAI,WAAW,IAAI,WAAW,KAAK,QAAQ,KAAK,SAAS,KAAK,SAAS,IAAI,WAAW,IAAI,UAAU,IAAI,WAAW,KAAK,QAAQ,KAAK,SAAS,KAAK,SAAS,KAAK,QAAQ,IAAI,OAAO,KAAK,SAAS,KAAK,SAAS,IAAI,SAAS,IAAI,SAAS,IAAI,SAAS,IAAI,WAAW,IAAI,UAAU,IAAI,QAAQ,KAAK,QAAQ,KAAK,SAAS,KAAK,SAAS,IAAI,SAAS,IAAI,SAAS,IAAI,WAAW,IAAI,WAAW,IAAI,QAAQ,IAAI,SAAS,IAAI,SAAS,IAAI,WAAW,IAAI,aAAa,KAAK,SAAS,IAAI,WAAW,IAAI,WAAW,IAAI,WAAW,KAAK,QAAQ,IAAI,QAAQ,IAAI,UAAU,IAAI,QAAQ,IAAI,UAAU,KAAK,QAAQ,IAAI,WAAW,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,WAAW,IAAI,SAAS,IAAI,aAAa,IAAI,SAAS,IAAI,UAAU,IAAI,SAAS,IAAI,kBAAkB,IAAI,aAAa,IAAI,aAAa,IAAI,aAAa,IAAI,aAAa,IAAI,aAAa,IAAI,aAAa,IAAI,aAAa,IAAI,aAAa,IAAI,UAAU,IAAI,YAAY,IAAI,aAAa,IAAI,WAAW,IAAI,YAAY,IAAI,UAAU,KAAK,SAAS,IAAI,QAAQ,IAAI,WAAW,IAAI,aAAa,IAAI,SAAS,IAAI,SAAS,IAAI,UAAU,KAAK,SAAS,IAAI,WAAW,IAAI,WAAW,IAAI,SAAS,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,UAAU,IAAI,WAAW,IAAI,SAAS,IAAI,UAAU,IAAI,WAAW,IAAI,aAAa,IAAI,aAAa,IAAI,QAAQ,IAAI,WAAW,IAAI,YAAY,IAAI,SAAS,IAAI,SAAS,IAAI,UAAU,KAAK,QAAQ,IAAI,UAAU,IAAI,UAAU,IAAI,WAAW,IAAI,WAAW,IAAI,WAAW,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,WAAW,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,KAAK,QAAQ,KAAK,YAAY,IAAI,SAAS,KAAK,SAAS,IAAI,WAAW,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,WAAW,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,WAAW,KAAK,SAAS,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,IAAI,aAAa,IAAI,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,QAAQ,IAAI,WAAW,IAAI,aAAa,IAAI,WAAW,IAAI,WAAW,IAAI,WAAW,KAAK,SAAS,IAAI,UAAU,IAAI,UAAU,IAAI,WAAW,IAAI,WAAW,IAAI,UAAU,IAAI,UAAU,IAAI,YAAY,IAAI,SAAS,IAAI,YAAY,IAAI,SAAS,KAAK,QAAQ,IAAI,SAAS,IAAI,cAAc,IAAI,QAAQ,IAAI,QAAQ,IAAI,SAAS,IAAI,SAAS,IAAI,SAAS,IAAI,UAAU,IAAI,UAAU,IAAI,OA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","sources":["webpack://ecommerce/webpack/runtime/chunk loaded","webpack://ecommerce/webpack/runtime/load script","webpack://ecommerce/./node_modules/@fancyapps/ui/dist/fancybox.esm.js","webpack://ecommerce/./src/common/common.js","webpack://ecommerce/./src/common/httpService.js","webpack://ecommerce/./src/common/translateService.js","webpack://ecommerce/./src/components/modules/products/ProductFullScreenHandler.jsx","webpack://ecommerce/./src/components/modules/reviews/ReviewStars.jsx","webpack://ecommerce/./src/config/config.inwild.js","webpack://ecommerce/./src/config/config.js","webpack://ecommerce/./src/config/config.production.inwild.js","webpack://ecommerce/./src/config/config.production.js","webpack://ecommerce/./src/config/config.production.runkd.js","webpack://ecommerce/./src/config/config.runkd.js","webpack://ecommerce/./src/config/config.staging.inwild.js","webpack://ecommerce/./src/config/config.staging.js","webpack://ecommerce/./src/config/config.staging.runkd.js","webpack://ecommerce/./src/config/index.js","webpack://ecommerce/./src/globalizer.js","webpack://ecommerce/./src/services/product/productInteraction.js","webpack://ecommerce/./src/services/questionAndAnswers/questionAndAnswersService.js","webpack://ecommerce/./src/services/reviews/reviewsService.js","webpack://ecommerce/./src/components/modules/products/productsAvailabilityStatus.js","webpack://ecommerce/./src/services/product/productService.js","webpack://ecommerce/./src/common/expirationStorageService.js","webpack://ecommerce/./src/services/product/recentlyViewedProductsService.js","webpack://ecommerce/./src/tracing.js","webpack://ecommerce/./src/services/cookieService.js","webpack://ecommerce/./src/services/data/dataPageService.js","webpack://ecommerce/./src/services/marketingAndAnalytics/ga4Service.js","webpack://ecommerce/./src/services/marketingAndAnalytics/adsService.js","webpack://ecommerce/./src/services/marketingAndAnalytics/facebookService.js","webpack://ecommerce/./src/services/marketingAndAnalytics/marketingAndAnalyticsService.js","webpack://ecommerce/./src/common/routesCreator.js","webpack://ecommerce/./src/services/product/tagService.js","webpack://ecommerce/./src/components/link/LinkHovered.jsx","webpack://ecommerce/./src/components/modules/products/ProductTags.jsx","webpack://ecommerce/./src/components/modules/products/ProductHeader.jsx","webpack://ecommerce/./src/components/modules/products/ProductCarousel.jsx","webpack://ecommerce/./src/components/DisbursementSimulator.jsx","webpack://ecommerce/./src/help/countdown.js","webpack://ecommerce/./src/components/modules/products/ProductOfferDescription.jsx","webpack://ecommerce/./src/components/modules/products/LowerPriceMessage.jsx","webpack://ecommerce/./src/components/modules/products/ProductPrice.jsx","webpack://ecommerce/./src/components/modules/products/ProductDestinationNote.jsx","webpack://ecommerce/./src/components/modules/products/ProductInfo.jsx","webpack://ecommerce/./src/components/modules/products/ProductOptionsColor.jsx","webpack://ecommerce/./src/components/modules/products/ProductOptionsSize.jsx","webpack://ecommerce/./src/components/modules/products/ProductOptionsOther.jsx","webpack://ecommerce/./src/components/modules/products/ProductOptions.jsx","webpack://ecommerce/./src/components/modules/products/ProductAvailabilityNote.jsx","webpack://ecommerce/./src/components/modules/common/RangeInput.jsx","webpack://ecommerce/./src/components/Button.jsx","webpack://ecommerce/./src/components/modules/products/ProductQuantity.jsx","webpack://ecommerce/./src/components/modules/products/ProductSelectionHint.jsx","webpack://ecommerce/./src/components/modules/products/ProductDescription.jsx","webpack://ecommerce/./src/components/modules/reviews/ProductReviews.jsx","webpack://ecommerce/./src/components/modules/questionAndAnswers/ProductQuestionsAndAnswers.jsx","webpack://ecommerce/./src/components/modules/products/ProductTabs.jsx","webpack://ecommerce/./src/components/modules/products/ProductNotes.jsx","webpack://ecommerce/./src/components/modules/products/ProductSummary.jsx","webpack://ecommerce/./src/components/modules/products/ProductCard.jsx","webpack://ecommerce/./src/components/modules/products/ProductSlider.jsx","webpack://ecommerce/./src/components/modules/products/RelatedProducts.jsx","webpack://ecommerce/./src/components/PopUp.jsx","webpack://ecommerce/./src/components/modules/products/ProductDetails.jsx","webpack://ecommerce/./src/views/product/productDetail.js","webpack://ecommerce/./wwwroot/js/modernizr-custom-mq.js","webpack://ecommerce/./node_modules/cldrjs/dist/cldr.js","webpack://ecommerce/./node_modules/cldrjs/dist/cldr/event.js","webpack://ecommerce/./node_modules/cldrjs/dist/cldr/supplemental.js","webpack://ecommerce/./node_modules/desandro-matches-selector/matches-selector.js","webpack://ecommerce/./node_modules/ev-emitter/ev-emitter.js","webpack://ecommerce/./node_modules/exenv/index.js","webpack://ecommerce/./node_modules/fizzy-ui-utils/utils.js","webpack://ecommerce/./node_modules/flickity-as-nav-for/as-nav-for.js","webpack://ecommerce/./node_modules/flickity-fullscreen/fullscreen.js","webpack://ecommerce/./node_modules/flickity/js/add-remove-cell.js","webpack://ecommerce/./node_modules/flickity/js/animate.js","webpack://ecommerce/./node_modules/flickity/js/cell.js","webpack://ecommerce/./node_modules/flickity/js/drag.js","webpack://ecommerce/./node_modules/flickity/js/flickity.js","webpack://ecommerce/./node_modules/flickity/js/index.js","webpack://ecommerce/./node_modules/flickity/js/lazyload.js","webpack://ecommerce/./node_modules/flickity/js/page-dots.js","webpack://ecommerce/./node_modules/flickity/js/player.js","webpack://ecommerce/./node_modules/flickity/js/prev-next-button.js","webpack://ecommerce/./node_modules/flickity/js/slide.js","webpack://ecommerce/./node_modules/get-size/get-size.js","webpack://ecommerce/./node_modules/globalize/dist/globalize.js","webpack://ecommerce/./node_modules/globalize/dist/globalize/currency.js","webpack://ecommerce/./node_modules/globalize/dist/globalize/date.js","webpack://ecommerce/./node_modules/globalize/dist/globalize/message.js","webpack://ecommerce/./node_modules/globalize/dist/globalize/number.js","webpack://ecommerce/./node_modules/globalize/dist/globalize/plural.js","webpack://ecommerce/./node_modules/globalize/dist/globalize/relative-time.js","webpack://ecommerce/./node_modules/globalize/dist/globalize/unit.js","webpack://ecommerce/./node_modules/globalize/dist/node-main.js","webpack://ecommerce/./node_modules/html-entities/lib/index.js","webpack://ecommerce/./node_modules/html-entities/lib/named-references.js","webpack://ecommerce/./node_modules/html-entities/lib/numeric-unicode-map.js","webpack://ecommerce/./node_modules/html-entities/lib/surrogate-pairs.js","webpack://ecommerce/./node_modules/i18next/dist/es/BackendConnector.js","webpack://ecommerce/./node_modules/i18next/dist/es/EventEmitter.js","webpack://ecommerce/./node_modules/i18next/dist/es/Interpolator.js","webpack://ecommerce/./node_modules/i18next/dist/es/LanguageUtils.js","webpack://ecommerce/./node_modules/i18next/dist/es/PluralResolver.js","webpack://ecommerce/./node_modules/i18next/dist/es/ResourceStore.js","webpack://ecommerce/./node_modules/i18next/dist/es/Translator.js","webpack://ecommerce/./node_modules/i18next/dist/es/defaults.js","webpack://ecommerce/./node_modules/i18next/dist/es/i18next.js","webpack://ecommerce/./node_modules/i18next/dist/es/index.js","webpack://ecommerce/./node_modules/i18next/dist/es/logger.js","webpack://ecommerce/./node_modules/i18next/dist/es/postProcessor.js","webpack://ecommerce/./node_modules/i18next/dist/es/utils.js","webpack://ecommerce/./node_modules/imagesloaded/imagesloaded.js","webpack://ecommerce/./node_modules/intersection-observer/intersection-observer.js","webpack://ecommerce/./node_modules/object-assign/index.js","webpack://ecommerce/./node_modules/prop-types/factoryWithThrowingShims.js","webpack://ecommerce/./node_modules/prop-types/index.js","webpack://ecommerce/./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://ecommerce/./node_modules/react-flickity-component/lib/index.js","webpack://ecommerce/./node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","webpack://ecommerce/./node_modules/react-modal/lib/components/Modal.js","webpack://ecommerce/./node_modules/react-modal/lib/components/ModalPortal.js","webpack://ecommerce/./node_modules/react-modal/lib/helpers/ariaAppHider.js","webpack://ecommerce/./node_modules/react-modal/lib/helpers/bodyTrap.js","webpack://ecommerce/./node_modules/react-modal/lib/helpers/classList.js","webpack://ecommerce/./node_modules/react-modal/lib/helpers/focusManager.js","webpack://ecommerce/./node_modules/react-modal/lib/helpers/portalOpenInstances.js","webpack://ecommerce/./node_modules/react-modal/lib/helpers/safeHTMLElement.js","webpack://ecommerce/./node_modules/react-modal/lib/helpers/scopeTab.js","webpack://ecommerce/./node_modules/react-modal/lib/helpers/tabbable.js","webpack://ecommerce/./node_modules/react-modal/lib/index.js","webpack://ecommerce/./node_modules/scheduler/cjs/scheduler.production.min.js","webpack://ecommerce/./node_modules/scheduler/index.js","webpack://ecommerce/./node_modules/unidragger/unidragger.js","webpack://ecommerce/./node_modules/unipointer/unipointer.js","webpack://ecommerce/./node_modules/warning/warning.js","webpack://ecommerce/./node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack://ecommerce/./node_modules/@babel/runtime/helpers/typeof.js","webpack://ecommerce/./node_modules/@babel/runtime/regenerator/index.js","webpack://ecommerce/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://ecommerce/./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack://ecommerce/./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://ecommerce/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://ecommerce/./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack://ecommerce/./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack://ecommerce/./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack://ecommerce/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://ecommerce/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://ecommerce/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://ecommerce/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://ecommerce/webpack/bootstrap","webpack://ecommerce/webpack/runtime/compat get default export","webpack://ecommerce/webpack/runtime/define property getters","webpack://ecommerce/webpack/runtime/ensure chunk","webpack://ecommerce/webpack/runtime/get javascript chunk filename","webpack://ecommerce/webpack/runtime/get mini-css chunk filename","webpack://ecommerce/webpack/runtime/global","webpack://ecommerce/webpack/runtime/harmony module decorator","webpack://ecommerce/webpack/runtime/hasOwnProperty shorthand","webpack://ecommerce/webpack/runtime/make namespace object","webpack://ecommerce/webpack/runtime/node module decorator","webpack://ecommerce/webpack/runtime/runtimeId","webpack://ecommerce/webpack/runtime/publicPath","webpack://ecommerce/webpack/runtime/css loading","webpack://ecommerce/webpack/runtime/jsonp chunk loading","webpack://ecommerce/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"ecommerce:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// @fancyapps/ui/Fancybox v4.0.31\nconst t=t=>\"object\"==typeof t&&null!==t&&t.constructor===Object&&\"[object Object]\"===Object.prototype.toString.call(t),e=(...i)=>{let s=!1;\"boolean\"==typeof i[0]&&(s=i.shift());let o=i[0];if(!o||\"object\"!=typeof o)throw new Error(\"extendee must be an object\");const n=i.slice(1),a=n.length;for(let i=0;i(t=parseFloat(t)||0,Math.round((t+Number.EPSILON)*e)/e),s=function(t){return!!(t&&\"object\"==typeof t&&t instanceof Element&&t!==document.body)&&(!t.__Panzoom&&(function(t){const e=getComputedStyle(t)[\"overflow-y\"],i=getComputedStyle(t)[\"overflow-x\"],s=(\"scroll\"===e||\"auto\"===e)&&Math.abs(t.scrollHeight-t.clientHeight)>1,o=(\"scroll\"===i||\"auto\"===i)&&Math.abs(t.scrollWidth-t.clientWidth)>1;return s||o}(t)?t:s(t.parentNode)))},o=\"undefined\"!=typeof window&&window.ResizeObserver||class{constructor(t){this.observables=[],this.boundCheck=this.check.bind(this),this.boundCheck(),this.callback=t}observe(t){if(this.observables.some((e=>e.el===t)))return;const e={el:t,size:{height:t.clientHeight,width:t.clientWidth}};this.observables.push(e)}unobserve(t){this.observables=this.observables.filter((e=>e.el!==t))}disconnect(){this.observables=[]}check(){const t=this.observables.filter((t=>{const e=t.el.clientHeight,i=t.el.clientWidth;if(t.size.height!==e||t.size.width!==i)return t.size.height=e,t.size.width=i,!0})).map((t=>t.el));t.length>0&&this.callback(t),window.requestAnimationFrame(this.boundCheck)}};class n{constructor(t){this.id=self.Touch&&t instanceof Touch?t.identifier:-1,this.pageX=t.pageX,this.pageY=t.pageY,this.clientX=t.clientX,this.clientY=t.clientY}}const a=(t,e)=>e?Math.sqrt((e.clientX-t.clientX)**2+(e.clientY-t.clientY)**2):0,r=(t,e)=>e?{clientX:(t.clientX+e.clientX)/2,clientY:(t.clientY+e.clientY)/2}:t;class h{constructor(t,{start:e=(()=>!0),move:i=(()=>{}),end:s=(()=>{})}={}){this._element=t,this.startPointers=[],this.currentPointers=[],this._pointerStart=t=>{if(t.buttons>0&&0!==t.button)return;const e=new n(t);this.currentPointers.some((t=>t.id===e.id))||this._triggerPointerStart(e,t)&&(window.addEventListener(\"mousemove\",this._move),window.addEventListener(\"mouseup\",this._pointerEnd))},this._touchStart=t=>{for(const e of Array.from(t.changedTouches||[]))this._triggerPointerStart(new n(e),t)},this._move=t=>{const e=this.currentPointers.slice(),i=(t=>\"changedTouches\"in t)(t)?Array.from(t.changedTouches).map((t=>new n(t))):[new n(t)];for(const t of i){const e=this.currentPointers.findIndex((e=>e.id===t.id));e<0||(this.currentPointers[e]=t)}this._moveCallback(e,this.currentPointers.slice(),t)},this._triggerPointerEnd=(t,e)=>{const i=this.currentPointers.findIndex((e=>e.id===t.id));return!(i<0)&&(this.currentPointers.splice(i,1),this.startPointers.splice(i,1),this._endCallback(t,e),!0)},this._pointerEnd=t=>{t.buttons>0&&0!==t.button||this._triggerPointerEnd(new n(t),t)&&(window.removeEventListener(\"mousemove\",this._move,{passive:!1}),window.removeEventListener(\"mouseup\",this._pointerEnd,{passive:!1}))},this._touchEnd=t=>{for(const e of Array.from(t.changedTouches||[]))this._triggerPointerEnd(new n(e),t)},this._startCallback=e,this._moveCallback=i,this._endCallback=s,this._element.addEventListener(\"mousedown\",this._pointerStart,{passive:!1}),this._element.addEventListener(\"touchstart\",this._touchStart,{passive:!1}),this._element.addEventListener(\"touchmove\",this._move,{passive:!1}),this._element.addEventListener(\"touchend\",this._touchEnd),this._element.addEventListener(\"touchcancel\",this._touchEnd)}stop(){this._element.removeEventListener(\"mousedown\",this._pointerStart,{passive:!1}),this._element.removeEventListener(\"touchstart\",this._touchStart,{passive:!1}),this._element.removeEventListener(\"touchmove\",this._move,{passive:!1}),this._element.removeEventListener(\"touchend\",this._touchEnd),this._element.removeEventListener(\"touchcancel\",this._touchEnd),window.removeEventListener(\"mousemove\",this._move),window.removeEventListener(\"mouseup\",this._pointerEnd)}_triggerPointerStart(t,e){return!!this._startCallback(t,e)&&(this.currentPointers.push(t),this.startPointers.push(t),!0)}}class l{constructor(t={}){this.options=e(!0,{},t),this.plugins=[],this.events={};for(const t of[\"on\",\"once\"])for(const e of Object.entries(this.options[t]||{}))this[t](...e)}option(t,e,...i){t=String(t);let s=(o=t,n=this.options,o.split(\".\").reduce((function(t,e){return t&&t[e]}),n));var o,n;return\"function\"==typeof s&&(s=s.call(this,this,...i)),void 0===s?e:s}localize(t,e=[]){return t=(t=String(t).replace(/\\{\\{(\\w+).?(\\w+)?\\}\\}/g,((t,i,s)=>{let o=\"\";s?o=this.option(`${i[0]+i.toLowerCase().substring(1)}.l10n.${s}`):i&&(o=this.option(`l10n.${i}`)),o||(o=t);for(let t=0;te))}on(e,i){if(t(e)){for(const t of Object.entries(e))this.on(...t);return this}return String(e).split(\" \").forEach((t=>{const e=this.events[t]=this.events[t]||[];-1==e.indexOf(i)&&e.push(i)})),this}once(e,i){if(t(e)){for(const t of Object.entries(e))this.once(...t);return this}return String(e).split(\" \").forEach((t=>{const e=(...s)=>{this.off(t,e),i.call(this,this,...s)};e._=i,this.on(t,e)})),this}off(e,i){if(!t(e))return e.split(\" \").forEach((t=>{const e=this.events[t];if(!e||!e.length)return this;let s=-1;for(let t=0,o=e.length;t1||Math.abs(e.left-this.dragStart.rect.left)>1))return t.preventDefault(),void t.stopPropagation();!1!==this.trigger(\"click\",t)&&this.option(\"zoom\")&&\"toggleZoom\"===this.option(\"click\")&&(t.preventDefault(),t.stopPropagation(),this.zoomWithClick(t))}onWheel(t){!1!==this.trigger(\"wheel\",t)&&this.option(\"zoom\")&&this.option(\"wheel\")&&this.zoomWithWheel(t)}zoomWithWheel(t){void 0===this.changedDelta&&(this.changedDelta=0);const e=Math.max(-1,Math.min(1,-t.deltaY||-t.deltaX||t.wheelDelta||-t.detail)),i=this.content.scale;let s=i*(100+e*this.option(\"wheelFactor\"))/100;if(e<0&&Math.abs(i-this.option(\"minScale\"))<.01||e>0&&Math.abs(i-this.option(\"maxScale\"))<.01?(this.changedDelta+=Math.abs(e),s=i):(this.changedDelta=0,s=Math.max(Math.min(s,this.option(\"maxScale\")),this.option(\"minScale\"))),this.changedDelta>this.option(\"wheelLimit\"))return;if(t.preventDefault(),s===i)return;const o=this.$content.getBoundingClientRect(),n=t.clientX-o.left,a=t.clientY-o.top;this.zoomTo(s,{x:n,y:a})}zoomWithClick(t){const e=this.$content.getClientRects()[0],i=t.clientX-e.left,s=t.clientY-e.top;this.toggleZoom({x:i,y:s})}attachEvents(){this.$content.addEventListener(\"load\",this.onLoad),this.$container.addEventListener(\"wheel\",this.onWheel,{passive:!1}),this.$container.addEventListener(\"click\",this.onClick,{passive:!1}),this.initObserver();const t=new h(this.$container,{start:(e,i)=>{if(!this.option(\"touch\"))return!1;if(this.velocity.scale<0)return!1;const o=i.composedPath()[0];if(!t.currentPointers.length){if(-1!==[\"BUTTON\",\"TEXTAREA\",\"OPTION\",\"INPUT\",\"SELECT\",\"VIDEO\"].indexOf(o.nodeName))return!1;if(this.option(\"textSelection\")&&((t,e,i)=>{const s=t.childNodes,o=document.createRange();for(let t=0;t=a.left&&i>=a.top&&e<=a.right&&i<=a.bottom)return n}return!1})(o,e.clientX,e.clientY))return!1}return!s(o)&&(!1!==this.trigger(\"touchStart\",i)&&(\"mousedown\"===i.type&&i.preventDefault(),this.state=\"pointerdown\",this.resetDragPosition(),this.dragPosition.midPoint=null,this.dragPosition.time=Date.now(),!0))},move:(e,i,s)=>{if(\"pointerdown\"!==this.state)return;if(!1===this.trigger(\"touchMove\",s))return void s.preventDefault();if(i.length<2&&!0===this.option(\"panOnlyZoomed\")&&this.content.width<=this.viewport.width&&this.content.height<=this.viewport.height&&this.transform.scale<=this.option(\"baseScale\"))return;if(i.length>1&&(!this.option(\"zoom\")||!1===this.option(\"pinchToZoom\")))return;const o=r(e[0],e[1]),n=r(i[0],i[1]),h=n.clientX-o.clientX,l=n.clientY-o.clientY,c=a(e[0],e[1]),d=a(i[0],i[1]),u=c&&d?d/c:1;this.dragOffset.x+=h,this.dragOffset.y+=l,this.dragOffset.scale*=u,this.dragOffset.time=Date.now()-this.dragPosition.time;const f=1===this.dragStart.scale&&this.option(\"lockAxis\");if(f&&!this.lockAxis){if(Math.abs(this.dragOffset.x)<6&&Math.abs(this.dragOffset.y)<6)return void s.preventDefault();const t=Math.abs(180*Math.atan2(this.dragOffset.y,this.dragOffset.x)/Math.PI);this.lockAxis=t>45&&t<135?\"y\":\"x\"}if(\"xy\"===f||\"y\"!==this.lockAxis){if(s.preventDefault(),s.stopPropagation(),s.stopImmediatePropagation(),this.lockAxis&&(this.dragOffset[\"x\"===this.lockAxis?\"y\":\"x\"]=0),this.$container.classList.add(this.option(\"draggingClass\")),this.transform.scale===this.option(\"baseScale\")&&\"y\"===this.lockAxis||(this.dragPosition.x=this.dragStart.x+this.dragOffset.x),this.transform.scale===this.option(\"baseScale\")&&\"x\"===this.lockAxis||(this.dragPosition.y=this.dragStart.y+this.dragOffset.y),this.dragPosition.scale=this.dragStart.scale*this.dragOffset.scale,i.length>1){const e=r(t.startPointers[0],t.startPointers[1]),i=e.clientX-this.dragStart.rect.x,s=e.clientY-this.dragStart.rect.y,{deltaX:o,deltaY:a}=this.getZoomDelta(this.content.scale*this.dragOffset.scale,i,s);this.dragPosition.x-=o,this.dragPosition.y-=a,this.dragPosition.midPoint=n}else this.setDragResistance();this.transform={x:this.dragPosition.x,y:this.dragPosition.y,scale:this.dragPosition.scale},this.startAnimation()}},end:(e,i)=>{if(\"pointerdown\"!==this.state)return;if(this._dragOffset={...this.dragOffset},t.currentPointers.length)return void this.resetDragPosition();if(this.state=\"decel\",this.friction=this.option(\"decelFriction\"),this.recalculateTransform(),this.$container.classList.remove(this.option(\"draggingClass\")),!1===this.trigger(\"touchEnd\",i))return;if(\"decel\"!==this.state)return;const s=this.option(\"minScale\");if(this.transform.scale.01){const t=this.dragPosition.midPoint||e,i=this.$content.getClientRects()[0];this.zoomTo(o,{friction:.64,x:t.clientX-i.left,y:t.clientY-i.top})}else;}});this.pointerTracker=t}initObserver(){this.resizeObserver||(this.resizeObserver=new o((()=>{this.updateTimer||(this.updateTimer=setTimeout((()=>{const t=this.$container.getBoundingClientRect();t.width&&t.height?((Math.abs(t.width-this.container.width)>1||Math.abs(t.height-this.container.height)>1)&&(this.isAnimating()&&this.endAnimation(!0),this.updateMetrics(),this.panTo({x:this.content.x,y:this.content.y,scale:this.option(\"baseScale\"),friction:0})),this.updateTimer=null):this.updateTimer=null}),this.updateRate))})),this.resizeObserver.observe(this.$container))}resetDragPosition(){this.lockAxis=null,this.friction=this.option(\"friction\"),this.velocity={x:0,y:0,scale:0};const{x:t,y:e,scale:i}=this.content;this.dragStart={rect:this.$content.getBoundingClientRect(),x:t,y:e,scale:i},this.dragPosition={...this.dragPosition,x:t,y:e,scale:i},this.dragOffset={x:0,y:0,scale:1,time:0}}updateMetrics(t){!0!==t&&this.trigger(\"beforeUpdate\");const e=this.$container,s=this.$content,o=this.$viewport,n=s instanceof HTMLImageElement,a=this.option(\"zoom\"),r=this.option(\"resizeParent\",a);let h=this.option(\"width\"),l=this.option(\"height\"),c=h||(d=s,Math.max(parseFloat(d.naturalWidth||0),parseFloat(d.width&&d.width.baseVal&&d.width.baseVal.value||0),parseFloat(d.offsetWidth||0),parseFloat(d.scrollWidth||0)));var d;let u=l||(t=>Math.max(parseFloat(t.naturalHeight||0),parseFloat(t.height&&t.height.baseVal&&t.height.baseVal.value||0),parseFloat(t.offsetHeight||0),parseFloat(t.scrollHeight||0)))(s);Object.assign(s.style,{width:h?`${h}px`:\"\",height:l?`${l}px`:\"\",maxWidth:\"\",maxHeight:\"\"}),r&&Object.assign(o.style,{width:\"\",height:\"\"});const f=this.option(\"ratio\");c=i(c*f),u=i(u*f),h=c,l=u;const g=s.getBoundingClientRect(),p=o.getBoundingClientRect(),m=o==e?p:e.getBoundingClientRect();let y=Math.max(o.offsetWidth,i(p.width)),v=Math.max(o.offsetHeight,i(p.height)),b=window.getComputedStyle(o);if(y-=parseFloat(b.paddingLeft)+parseFloat(b.paddingRight),v-=parseFloat(b.paddingTop)+parseFloat(b.paddingBottom),this.viewport.width=y,this.viewport.height=v,a){if(Math.abs(c-g.width)>.1||Math.abs(u-g.height)>.1){const t=((t,e,i,s)=>{const o=Math.min(i/t||0,s/e);return{width:t*o||0,height:e*o||0}})(c,u,Math.min(c,g.width),Math.min(u,g.height));h=i(t.width),l=i(t.height)}Object.assign(s.style,{width:`${h}px`,height:`${l}px`,transform:\"\"})}if(r&&(Object.assign(o.style,{width:`${h}px`,height:`${l}px`}),this.viewport={...this.viewport,width:h,height:l}),n&&a&&\"function\"!=typeof this.options.maxScale){const t=this.option(\"maxScale\");this.options.maxScale=function(){return this.content.origWidth>0&&this.content.fitWidth>0?this.content.origWidth/this.content.fitWidth:t}}this.content={...this.content,origWidth:c,origHeight:u,fitWidth:h,fitHeight:l,width:h,height:l,scale:1,isZoomable:a},this.container={width:m.width,height:m.height},!0!==t&&this.trigger(\"afterUpdate\")}zoomIn(t){this.zoomTo(this.content.scale+(t||this.option(\"step\")))}zoomOut(t){this.zoomTo(this.content.scale-(t||this.option(\"step\")))}toggleZoom(t={}){const e=this.option(\"maxScale\"),i=this.option(\"baseScale\"),s=this.content.scale>i+.5*(e-i)?i:e;this.zoomTo(s,t)}zoomTo(t=this.option(\"baseScale\"),{x:e=null,y:s=null}={}){t=Math.max(Math.min(t,this.option(\"maxScale\")),this.option(\"minScale\"));const o=i(this.content.scale/(this.content.width/this.content.fitWidth),1e7);null===e&&(e=this.content.width*o*.5),null===s&&(s=this.content.height*o*.5);const{deltaX:n,deltaY:a}=this.getZoomDelta(t,e,s);e=this.content.x-n,s=this.content.y-a,this.panTo({x:e,y:s,scale:t,friction:this.option(\"zoomFriction\")})}getZoomDelta(t,e=0,i=0){const s=this.content.fitWidth*this.content.scale,o=this.content.fitHeight*this.content.scale,n=e>0&&s?e/s:0,a=i>0&&o?i/o:0;return{deltaX:(this.content.fitWidth*t-s)*n,deltaY:(this.content.fitHeight*t-o)*a}}panTo({x:t=this.content.x,y:e=this.content.y,scale:i,friction:s=this.option(\"friction\"),ignoreBounds:o=!1}={}){if(i=i||this.content.scale||1,!o){const{boundX:s,boundY:o}=this.getBounds(i);s&&(t=Math.max(Math.min(t,s.to),s.from)),o&&(e=Math.max(Math.min(e,o.to),o.from))}this.friction=s,this.transform={...this.transform,x:t,y:e,scale:i},s?(this.state=\"panning\",this.velocity={x:(1/this.friction-1)*(t-this.content.x),y:(1/this.friction-1)*(e-this.content.y),scale:(1/this.friction-1)*(i-this.content.scale)},this.startAnimation()):this.endAnimation()}startAnimation(){this.rAF?cancelAnimationFrame(this.rAF):this.trigger(\"startAnimation\"),this.rAF=requestAnimationFrame((()=>this.animate()))}animate(){if(this.setEdgeForce(),this.setDragForce(),this.velocity.x*=this.friction,this.velocity.y*=this.friction,this.velocity.scale*=this.friction,this.content.x+=this.velocity.x,this.content.y+=this.velocity.y,this.content.scale+=this.velocity.scale,this.isAnimating())this.setTransform();else if(\"pointerdown\"!==this.state)return void this.endAnimation();this.rAF=requestAnimationFrame((()=>this.animate()))}getBounds(t){let e=this.boundX,s=this.boundY;if(void 0!==e&&void 0!==s)return{boundX:e,boundY:s};e={from:0,to:0},s={from:0,to:0},t=t||this.transform.scale;const o=this.content.fitWidth*t,n=this.content.fitHeight*t,a=this.viewport.width,r=this.viewport.height;if(oe.to),i&&(n=this.content.yi.to),s||o){let i=((s?e.from:e.to)-this.content.x)*t;const o=this.content.x+(this.velocity.x+i)/this.friction;o>=e.from&&o<=e.to&&(i+=this.velocity.x),this.velocity.x=i,this.recalculateTransform()}if(n||a){let e=((n?i.from:i.to)-this.content.y)*t;const s=this.content.y+(e+this.velocity.y)/this.friction;s>=i.from&&s<=i.to&&(e+=this.velocity.y),this.velocity.y=e,this.recalculateTransform()}}setDragResistance(){if(\"pointerdown\"!==this.state)return;const{boundX:t,boundY:e}=this.getBounds(this.dragPosition.scale);let i,s,o,n;if(t&&(i=this.dragPosition.xt.to),e&&(o=this.dragPosition.ye.to),(i||s)&&(!i||!s)){const e=i?t.from:t.to,s=e-this.dragPosition.x;this.dragPosition.x=e-.3*s}if((o||n)&&(!o||!n)){const t=o?e.from:e.to,i=t-this.dragPosition.y;this.dragPosition.y=t-.3*i}}setDragForce(){\"pointerdown\"===this.state&&(this.velocity.x=this.dragPosition.x-this.content.x,this.velocity.y=this.dragPosition.y-this.content.y,this.velocity.scale=this.dragPosition.scale-this.content.scale)}recalculateTransform(){this.transform.x=this.content.x+this.velocity.x/(1/this.friction-1),this.transform.y=this.content.y+this.velocity.y/(1/this.friction-1),this.transform.scale=this.content.scale+this.velocity.scale/(1/this.friction-1)}isAnimating(){return!(!this.friction||!(Math.abs(this.velocity.x)>.05||Math.abs(this.velocity.y)>.05||Math.abs(this.velocity.scale)>.05))}setTransform(t){let e,s,o;if(t?(e=i(this.transform.x),s=i(this.transform.y),o=this.transform.scale,this.content={...this.content,x:e,y:s,scale:o}):(e=i(this.content.x),s=i(this.content.y),o=this.content.scale/(this.content.width/this.content.fitWidth),this.content={...this.content,x:e,y:s}),this.trigger(\"beforeTransform\"),e=i(this.content.x),s=i(this.content.y),t&&this.option(\"zoom\")){let t,n;t=i(this.content.fitWidth*o),n=i(this.content.fitHeight*o),this.content.width=t,this.content.height=n,this.transform={...this.transform,width:t,height:n,scale:o},Object.assign(this.$content.style,{width:`${t}px`,height:`${n}px`,maxWidth:\"none\",maxHeight:\"none\",transform:`translate3d(${e}px, ${s}px, 0) scale(1)`})}else this.$content.style.transform=`translate3d(${e}px, ${s}px, 0) scale(${o})`;this.trigger(\"afterTransform\")}endAnimation(t){cancelAnimationFrame(this.rAF),this.rAF=null,this.velocity={x:0,y:0,scale:0},this.setTransform(!0),this.state=\"ready\",this.handleCursor(),!0!==t&&this.trigger(\"endAnimation\")}handleCursor(){const t=this.option(\"draggableClass\");t&&this.option(\"touch\")&&(1==this.option(\"panOnlyZoomed\")&&this.content.width<=this.viewport.width&&this.content.height<=this.viewport.height&&this.transform.scale<=this.option(\"baseScale\")?this.$container.classList.remove(t):this.$container.classList.add(t))}detachEvents(){this.$content.removeEventListener(\"load\",this.onLoad),this.$container.removeEventListener(\"wheel\",this.onWheel,{passive:!1}),this.$container.removeEventListener(\"click\",this.onClick,{passive:!1}),this.pointerTracker&&(this.pointerTracker.stop(),this.pointerTracker=null),this.resizeObserver&&(this.resizeObserver.disconnect(),this.resizeObserver=null)}destroy(){\"destroy\"!==this.state&&(this.state=\"destroy\",clearTimeout(this.updateTimer),this.updateTimer=null,cancelAnimationFrame(this.rAF),this.rAF=null,this.detachEvents(),this.detachPlugins(),this.resetDragPosition())}}d.version=\"4.0.31\",d.Plugins={};const u=(t,e)=>{let i=0;return function(...s){const o=(new Date).getTime();if(!(o-i{e.preventDefault(),e.stopPropagation(),this.carousel[\"slide\"+(\"next\"===t?\"Next\":\"Prev\")]()})),e}build(){this.$container||(this.$container=document.createElement(\"div\"),this.$container.classList.add(...this.option(\"classNames.main\").split(\" \")),this.carousel.$container.appendChild(this.$container)),this.$next||(this.$next=this.createButton(\"next\"),this.$container.appendChild(this.$next)),this.$prev||(this.$prev=this.createButton(\"prev\"),this.$container.appendChild(this.$prev))}onRefresh(){const t=this.carousel.pages.length;t<=1||t>1&&this.carousel.elemDimWidth=t-1&&this.$next.setAttribute(\"disabled\",\"\")))}cleanup(){this.$prev&&this.$prev.remove(),this.$prev=null,this.$next&&this.$next.remove(),this.$next=null,this.$container&&this.$container.remove(),this.$container=null}attach(){this.carousel.on(\"refresh change\",this.onRefresh)}detach(){this.carousel.off(\"refresh change\",this.onRefresh),this.cleanup()}}f.defaults={prevTpl:'',nextTpl:'',classNames:{main:\"carousel__nav\",button:\"carousel__button\",next:\"is-next\",prev:\"is-prev\"}};class g{constructor(t){this.carousel=t,this.selectedIndex=null,this.friction=0,this.onNavReady=this.onNavReady.bind(this),this.onNavClick=this.onNavClick.bind(this),this.onNavCreateSlide=this.onNavCreateSlide.bind(this),this.onTargetChange=this.onTargetChange.bind(this)}addAsTargetFor(t){this.target=this.carousel,this.nav=t,this.attachEvents()}addAsNavFor(t){this.target=t,this.nav=this.carousel,this.attachEvents()}attachEvents(){this.nav.options.initialSlide=this.target.options.initialPage,this.nav.on(\"ready\",this.onNavReady),this.nav.on(\"createSlide\",this.onNavCreateSlide),this.nav.on(\"Panzoom.click\",this.onNavClick),this.target.on(\"change\",this.onTargetChange),this.target.on(\"Panzoom.afterUpdate\",this.onTargetChange)}onNavReady(){this.onTargetChange(!0)}onNavClick(t,e,i){const s=i.target.closest(\".carousel__slide\");if(!s)return;i.stopPropagation();const o=parseInt(s.dataset.index,10),n=this.target.findPageForSlide(o);this.target.page!==n&&this.target.slideTo(n,{friction:this.friction}),this.markSelectedSlide(o)}onNavCreateSlide(t,e){e.index===this.selectedIndex&&this.markSelectedSlide(e.index)}onTargetChange(){const t=this.target.pages[this.target.page].indexes[0],e=this.nav.findPageForSlide(t);this.nav.slideTo(e),this.markSelectedSlide(t)}markSelectedSlide(t){this.selectedIndex=t,[...this.nav.slides].filter((t=>t.$el&&t.$el.classList.remove(\"is-nav-selected\")));const e=this.nav.slides[t];e&&e.$el&&e.$el.classList.add(\"is-nav-selected\")}attach(t){const e=t.options.Sync;(e.target||e.nav)&&(e.target?this.addAsNavFor(e.target):e.nav&&this.addAsTargetFor(e.nav),this.friction=e.friction)}detach(){this.nav&&(this.nav.off(\"ready\",this.onNavReady),this.nav.off(\"Panzoom.click\",this.onNavClick),this.nav.off(\"createSlide\",this.onNavCreateSlide)),this.target&&(this.target.off(\"Panzoom.afterUpdate\",this.onTargetChange),this.target.off(\"change\",this.onTargetChange))}}g.defaults={friction:.92};const p={Navigation:f,Dots:class{constructor(t){this.carousel=t,this.$list=null,this.events={change:this.onChange.bind(this),refresh:this.onRefresh.bind(this)}}buildList(){if(this.carousel.pages.length{if(!(\"page\"in t.target.dataset))return;t.preventDefault(),t.stopPropagation();const e=parseInt(t.target.dataset.page,10),i=this.carousel;e!==i.page&&(i.pages.length<3&&i.option(\"infinite\")?i[0==e?\"slidePrev\":\"slideNext\"]():i.slideTo(e))})),this.$list=t,this.carousel.$container.appendChild(t),this.carousel.$container.classList.add(\"has-dots\"),t}removeList(){this.$list&&(this.$list.parentNode.removeChild(this.$list),this.$list=null),this.carousel.$container.classList.remove(\"has-dots\")}rebuildDots(){let t=this.$list;const e=!!t,i=this.carousel.pages.length;if(i<2)return void(e&&this.removeList());e||(t=this.buildList());const s=this.$list.children.length;if(s>i)for(let t=i;t{const i=t.code;let s;\"Enter\"===i||\"NumpadEnter\"===i?s=e:\"ArrowRight\"===i?s=e.nextSibling:\"ArrowLeft\"===i&&(s=e.previousSibling),s&&s.click()})),this.$list.appendChild(e)}this.setActiveDot()}}setActiveDot(){if(!this.$list)return;this.$list.childNodes.forEach((t=>{t.classList.remove(\"is-selected\")}));const t=this.$list.childNodes[this.carousel.page];t&&t.classList.add(\"is-selected\")}onChange(){this.setActiveDot()}onRefresh(){this.rebuildDots()}attach(){this.carousel.on(this.events)}detach(){this.removeList(),this.carousel.off(this.events),this.carousel=null}},Sync:g};const m={slides:[],preload:0,slidesPerPage:\"auto\",initialPage:null,initialSlide:null,friction:.92,center:!0,infinite:!0,fill:!0,dragFree:!1,prefix:\"\",classNames:{viewport:\"carousel__viewport\",track:\"carousel__track\",slide:\"carousel__slide\",slideSelected:\"is-selected\"},l10n:{NEXT:\"Next slide\",PREV:\"Previous slide\",GOTO:\"Go to slide #%d\"}};class y extends l{constructor(t,i={}){if(super(i=e(!0,{},m,i)),this.state=\"init\",this.$container=t,!(this.$container instanceof HTMLElement))throw new Error(\"No root element provided\");this.slideNext=u(this.slideNext.bind(this),250),this.slidePrev=u(this.slidePrev.bind(this),250),this.init(),t.__Carousel=this}init(){this.pages=[],this.page=this.pageIndex=null,this.prevPage=this.prevPageIndex=null,this.attachPlugins(y.Plugins),this.trigger(\"init\"),this.initLayout(),this.initSlides(),this.updateMetrics(),this.$track&&this.pages.length&&(this.$track.style.transform=`translate3d(${-1*this.pages[this.page].left}px, 0px, 0) scale(1)`),this.manageSlideVisiblity(),this.initPanzoom(),this.state=\"ready\",this.trigger(\"ready\")}initLayout(){const t=this.option(\"prefix\"),e=this.option(\"classNames\");this.$viewport=this.option(\"viewport\")||this.$container.querySelector(`.${t}${e.viewport}`),this.$viewport||(this.$viewport=document.createElement(\"div\"),this.$viewport.classList.add(...(t+e.viewport).split(\" \")),this.$viewport.append(...this.$container.childNodes),this.$container.appendChild(this.$viewport)),this.$track=this.option(\"track\")||this.$container.querySelector(`.${t}${e.track}`),this.$track||(this.$track=document.createElement(\"div\"),this.$track.classList.add(...(t+e.track).split(\" \")),this.$track.append(...this.$viewport.childNodes),this.$viewport.appendChild(this.$track))}initSlides(){this.slides=[];this.$viewport.querySelectorAll(`.${this.option(\"prefix\")}${this.option(\"classNames.slide\")}`).forEach((t=>{const e={$el:t,isDom:!0};this.slides.push(e),this.trigger(\"createSlide\",e,this.slides.length)})),Array.isArray(this.options.slides)&&(this.slides=e(!0,[...this.slides],this.options.slides))}updateMetrics(){let t,e=0,s=[];this.slides.forEach(((i,o)=>{const n=i.$el,a=i.isDom||!t?this.getSlideMetrics(n):t;i.index=o,i.width=a,i.left=e,t=a,e+=a,s.push(o)}));let o=Math.max(this.$track.offsetWidth,i(this.$track.getBoundingClientRect().width)),n=getComputedStyle(this.$track);o-=parseFloat(n.paddingLeft)+parseFloat(n.paddingRight),this.contentWidth=e,this.viewportWidth=o;const a=[],r=this.option(\"slidesPerPage\");if(Number.isInteger(r)&&e>o)for(let t=0;to)&&(a.push({indexes:[],slides:[]}),t=a.length-1,e=0),e+=s.width,a[t].indexes.push(i),a[t].slides.push(s)}}const h=this.option(\"center\"),l=this.option(\"fill\");a.forEach(((t,i)=>{t.index=i,t.width=t.slides.reduce(((t,e)=>t+e.width),0),t.left=t.slides[0].left,h&&(t.left+=.5*(o-t.width)*-1),l&&!this.option(\"infiniteX\",this.option(\"infinite\"))&&e>o&&(t.left=Math.max(t.left,0),t.left=Math.min(t.left,e-o))}));const c=[];let d;a.forEach((t=>{const e={...t};d&&e.left===d.left?(d.width+=e.width,d.slides=[...d.slides,...e.slides],d.indexes=[...d.indexes,...e.indexes]):(e.index=c.length,d=e,c.push(e))})),this.pages=c;let u=this.page;if(null===u){const t=this.option(\"initialSlide\");u=null!==t?this.findPageForSlide(t):parseInt(this.option(\"initialPage\",0),10)||0,c[u]||(u=c.length&&u>c.length?c[c.length-1].index:0),this.page=u,this.pageIndex=u}this.updatePanzoom(),this.trigger(\"refresh\")}getSlideMetrics(t){if(!t){const e=this.slides[0];(t=document.createElement(\"div\")).dataset.isTestEl=1,t.style.visibility=\"hidden\",t.classList.add(...(this.option(\"prefix\")+this.option(\"classNames.slide\")).split(\" \")),e.customClass&&t.classList.add(...e.customClass.split(\" \")),this.$track.prepend(t)}let e=Math.max(t.offsetWidth,i(t.getBoundingClientRect().width));const s=t.currentStyle||window.getComputedStyle(t);return e=e+(parseFloat(s.marginLeft)||0)+(parseFloat(s.marginRight)||0),t.dataset.isTestEl&&t.remove(),e}findPageForSlide(t){t=parseInt(t,10)||0;const e=this.pages.find((e=>e.indexes.indexOf(t)>-1));return e?e.index:null}slideNext(){this.slideTo(this.pageIndex+1)}slidePrev(){this.slideTo(this.pageIndex-1)}slideTo(t,e={}){const{x:i=-1*this.setPage(t,!0),y:s=0,friction:o=this.option(\"friction\")}=e;this.Panzoom.content.x===i&&!this.Panzoom.velocity.x&&o||(this.Panzoom.panTo({x:i,y:s,friction:o,ignoreBounds:!0}),\"ready\"===this.state&&\"ready\"===this.Panzoom.state&&this.trigger(\"settle\"))}initPanzoom(){this.Panzoom&&this.Panzoom.destroy();const t=e(!0,{},{content:this.$track,wrapInner:!1,resizeParent:!1,zoom:!1,click:!1,lockAxis:\"x\",x:this.pages.length?-1*this.pages[this.page].left:0,centerOnStart:!1,textSelection:()=>this.option(\"textSelection\",!1),panOnlyZoomed:function(){return this.content.width<=this.viewport.width}},this.option(\"Panzoom\"));this.Panzoom=new d(this.$container,t),this.Panzoom.on({\"*\":(t,...e)=>this.trigger(`Panzoom.${t}`,...e),afterUpdate:()=>{this.updatePage()},beforeTransform:this.onBeforeTransform.bind(this),touchEnd:this.onTouchEnd.bind(this),endAnimation:()=>{this.trigger(\"settle\")}}),this.updateMetrics(),this.manageSlideVisiblity()}updatePanzoom(){this.Panzoom&&(this.Panzoom.content={...this.Panzoom.content,fitWidth:this.contentWidth,origWidth:this.contentWidth,width:this.contentWidth},this.pages.length>1&&this.option(\"infiniteX\",this.option(\"infinite\"))?this.Panzoom.boundX=null:this.pages.length&&(this.Panzoom.boundX={from:-1*this.pages[this.pages.length-1].left,to:-1*this.pages[0].left}),this.option(\"infiniteY\",this.option(\"infinite\"))?this.Panzoom.boundY=null:this.Panzoom.boundY={from:0,to:0},this.Panzoom.handleCursor())}manageSlideVisiblity(){const t=this.contentWidth,e=this.viewportWidth;let i=this.Panzoom?-1*this.Panzoom.content.x:this.pages.length?this.pages[this.page].left:0;const s=this.option(\"preload\"),o=this.option(\"infiniteX\",this.option(\"infinite\")),n=parseFloat(getComputedStyle(this.$viewport,null).getPropertyValue(\"padding-left\")),a=parseFloat(getComputedStyle(this.$viewport,null).getPropertyValue(\"padding-right\"));this.slides.forEach((r=>{let h,l,c=0;h=i-n,l=i+e+a,h-=s*(e+n+a),l+=s*(e+n+a);const d=r.left+r.width>h&&r.lefth&&r.lefth&&r.lefti&&r.left<=i+e+a&&(c=0)):this.removeSlideEl(r),r.hasDiff=c}));let r=0,h=0;this.slides.forEach(((e,i)=>{let s=0;e.$el?(i!==r||e.hasDiff?s=h+e.hasDiff*t:h=0,e.$el.style.left=Math.abs(s)>.1?`${h+e.hasDiff*t}px`:\"\",r++):h+=e.width})),this.markSelectedSlides()}createSlideEl(t){if(!t)return;if(t.$el){let e=t.$el.dataset.index;if(!e||parseInt(e,10)!==t.index){let e;t.$el.dataset.index=t.index,t.$el.querySelectorAll(\"[data-lazy-srcset]\").forEach((t=>{t.srcset=t.dataset.lazySrcset})),t.$el.querySelectorAll(\"[data-lazy-src]\").forEach((t=>{let e=t.dataset.lazySrc;t instanceof HTMLImageElement?t.src=e:t.style.backgroundImage=`url('${e}')`})),(e=t.$el.dataset.lazySrc)&&(t.$el.style.backgroundImage=`url('${e}')`),t.state=\"ready\"}return}const e=document.createElement(\"div\");e.dataset.index=t.index,e.classList.add(...(this.option(\"prefix\")+this.option(\"classNames.slide\")).split(\" \")),t.customClass&&e.classList.add(...t.customClass.split(\" \")),t.html&&(e.innerHTML=t.html);const i=[];this.slides.forEach(((t,e)=>{t.$el&&i.push(e)}));const s=t.index;let o=null;if(i.length){let t=i.reduce(((t,e)=>Math.abs(e-s){const o=i.$el;if(!o)return;const n=this.pages[this.page];n&&n.indexes&&n.indexes.indexOf(s)>-1?(t&&!o.classList.contains(t)&&(o.classList.add(t),this.trigger(\"selectSlide\",i)),o.removeAttribute(e)):(t&&o.classList.contains(t)&&(o.classList.remove(t),this.trigger(\"unselectSlide\",i)),o.setAttribute(e,!0))}))}updatePage(){this.updateMetrics(),this.slideTo(this.page,{friction:0})}onBeforeTransform(){this.option(\"infiniteX\",this.option(\"infinite\"))&&this.manageInfiniteTrack(),this.manageSlideVisiblity()}manageInfiniteTrack(){const t=this.contentWidth,e=this.viewportWidth;if(!this.option(\"infiniteX\",this.option(\"infinite\"))||this.pages.length<2||te&&(i.content.x-=t,this.pageIndex=this.pageIndex+this.pages.length,s=!0),s&&\"pointerdown\"===i.state&&i.resetDragPosition(),s}onTouchEnd(t,e){const i=this.option(\"dragFree\");if(!i&&this.pages.length>1&&t.dragOffset.time<350&&Math.abs(t.dragOffset.y)<1&&Math.abs(t.dragOffset.x)>5)this[t.dragOffset.x<0?\"slideNext\":\"slidePrev\"]();else if(i){const[,e]=this.getPageFromPosition(-1*t.transform.x);this.setPage(e)}else this.slideToClosest()}slideToClosest(t={}){let[,e]=this.getPageFromPosition(-1*this.Panzoom.content.x);this.slideTo(e,t)}getPageFromPosition(t){const e=this.pages.length;this.option(\"center\")&&(t+=.5*this.viewportWidth);const i=Math.floor(t/this.contentWidth);t-=i*this.contentWidth;let s=this.slides.find((e=>e.left<=t&&e.left+e.width>t));if(s){let t=this.findPageForSlide(s.index);return[t,t+i*e]}return[0,0]}setPage(t,e){let i=0,s=parseInt(t,10)||0;const o=this.page,n=this.pageIndex,a=this.pages.length,r=this.contentWidth,h=this.viewportWidth;if(t=(s%a+a)%a,this.option(\"infiniteX\",this.option(\"infinite\"))&&r>h){const o=Math.floor(s/a)||0,n=r;if(i=this.pages[t].left+o*n,!0===e&&a>2){let t=-1*this.Panzoom.content.x;const e=i-n,o=i+n,r=Math.abs(t-i),h=Math.abs(t-e),l=Math.abs(t-o);l{this.removeSlideEl(t)})),this.slides=[],this.Panzoom.destroy(),this.detachPlugins()}}y.version=\"4.0.31\",y.Plugins=p;const v=!(\"undefined\"==typeof window||!window.document||!window.document.createElement);let b=null;const x=[\"a[href]\",\"area[href]\",'input:not([disabled]):not([type=\"hidden\"]):not([aria-hidden])',\"select:not([disabled]):not([aria-hidden])\",\"textarea:not([disabled]):not([aria-hidden])\",\"button:not([disabled]):not([aria-hidden])\",\"iframe\",\"object\",\"embed\",\"video\",\"audio\",\"[contenteditable]\",'[tabindex]:not([tabindex^=\"-\"]):not([disabled]):not([aria-hidden])'],w=t=>{if(t&&v){null===b&&document.createElement(\"div\").focus({get preventScroll(){return b=!0,!1}});try{if(t.setActive)t.setActive();else if(b)t.focus({preventScroll:!0});else{const e=window.pageXOffset||document.body.scrollTop,i=window.pageYOffset||document.body.scrollLeft;t.focus(),document.body.scrollTo({top:e,left:i,behavior:\"auto\"})}}catch(t){}}};const $={minSlideCount:2,minScreenHeight:500,autoStart:!0,key:\"t\",Carousel:{},tpl:'
'};class C{constructor(t){this.fancybox=t,this.$container=null,this.state=\"init\";for(const t of[\"onPrepare\",\"onClosing\",\"onKeydown\"])this[t]=this[t].bind(this);this.events={prepare:this.onPrepare,closing:this.onClosing,keydown:this.onKeydown}}onPrepare(){this.getSlides().length=this.fancybox.option(\"Thumbs.minScreenHeight\")&&this.build()}onClosing(){this.Carousel&&this.Carousel.Panzoom.detachEvents()}onKeydown(t,e){e===t.option(\"Thumbs.key\")&&this.toggle()}build(){if(this.$container)return;const t=document.createElement(\"div\");t.classList.add(\"fancybox__thumbs\"),this.fancybox.$carousel.parentNode.insertBefore(t,this.fancybox.$carousel.nextSibling),this.Carousel=new y(t,e(!0,{Dots:!1,Navigation:!1,Sync:{friction:0},infinite:!1,center:!0,fill:!0,dragFree:!0,slidesPerPage:1,preload:1},this.fancybox.option(\"Thumbs.Carousel\"),{Sync:{target:this.fancybox.Carousel},slides:this.getSlides()})),this.Carousel.Panzoom.on(\"wheel\",((t,e)=>{e.preventDefault(),this.fancybox[e.deltaY<0?\"prev\":\"next\"]()})),this.$container=t,this.state=\"visible\"}getSlides(){const t=[];for(const e of this.fancybox.items){const i=e.thumb;i&&t.push({html:this.fancybox.option(\"Thumbs.tpl\").replace(/\\{\\{src\\}\\}/gi,i),customClass:`has-thumb has-${e.type||\"image\"}`})}return t}toggle(){\"visible\"===this.state?this.hide():\"hidden\"===this.state?this.show():this.build()}show(){\"hidden\"===this.state&&(this.$container.style.display=\"\",this.Carousel.Panzoom.attachEvents(),this.state=\"visible\")}hide(){\"visible\"===this.state&&(this.Carousel.Panzoom.detachEvents(),this.$container.style.display=\"none\",this.state=\"hidden\")}cleanup(){this.Carousel&&(this.Carousel.destroy(),this.Carousel=null),this.$container&&(this.$container.remove(),this.$container=null),this.state=\"init\"}attach(){this.fancybox.on(this.events)}detach(){this.fancybox.off(this.events),this.cleanup()}}C.defaults=$;const S=(t,e)=>{const i=new URL(t),s=new URLSearchParams(i.search);let o=new URLSearchParams;for(const[t,i]of[...s,...Object.entries(e)])\"t\"===t?o.set(\"start\",parseInt(i)):o.set(t,i);o=o.toString();let n=t.match(/#t=((.*)?\\d+s)/);return n&&(o+=`#t=${n[1]}`),o},E={video:{autoplay:!0,ratio:16/9},youtube:{autohide:1,fs:1,rel:0,hd:1,wmode:\"transparent\",enablejsapi:1,html5:1},vimeo:{hd:1,show_title:1,show_byline:1,show_portrait:0,fullscreen:1},html5video:{tpl:'',format:\"\"}};class P{constructor(t){this.fancybox=t;for(const t of[\"onInit\",\"onReady\",\"onCreateSlide\",\"onRemoveSlide\",\"onSelectSlide\",\"onUnselectSlide\",\"onRefresh\",\"onMessage\"])this[t]=this[t].bind(this);this.events={init:this.onInit,ready:this.onReady,\"Carousel.createSlide\":this.onCreateSlide,\"Carousel.removeSlide\":this.onRemoveSlide,\"Carousel.selectSlide\":this.onSelectSlide,\"Carousel.unselectSlide\":this.onUnselectSlide,\"Carousel.refresh\":this.onRefresh}}onInit(){for(const t of this.fancybox.items)this.processType(t)}processType(t){if(t.html)return t.src=t.html,t.type=\"html\",void delete t.html;const i=t.src||\"\";let s=t.type||this.fancybox.options.type,o=null;if(!i||\"string\"==typeof i){if(o=i.match(/(?:youtube\\.com|youtu\\.be|youtube\\-nocookie\\.com)\\/(?:watch\\?(?:.*&)?v=|v\\/|u\\/|embed\\/?)?(videoseries\\?list=(?:.*)|[\\w-]{11}|\\?listType=(?:.*)&list=(?:.*))(?:.*)/i)){const e=S(i,this.fancybox.option(\"Html.youtube\")),n=encodeURIComponent(o[1]);t.videoId=n,t.src=`https://www.youtube-nocookie.com/embed/${n}?${e}`,t.thumb=t.thumb||`https://i.ytimg.com/vi/${n}/mqdefault.jpg`,t.vendor=\"youtube\",s=\"video\"}else if(o=i.match(/^.+vimeo.com\\/(?:\\/)?([\\d]+)(.*)?/)){const e=S(i,this.fancybox.option(\"Html.vimeo\")),n=encodeURIComponent(o[1]);t.videoId=n,t.src=`https://player.vimeo.com/video/${n}?${e}`,t.vendor=\"vimeo\",s=\"video\"}else(o=i.match(/(?:maps\\.)?google\\.([a-z]{2,3}(?:\\.[a-z]{2})?)\\/(?:(?:(?:maps\\/(?:place\\/(?:.*)\\/)?\\@(.*),(\\d+.?\\d+?)z))|(?:\\?ll=))(.*)?/i))?(t.src=`//maps.google.${o[1]}/?ll=${(o[2]?o[2]+\"&z=\"+Math.floor(o[3])+(o[4]?o[4].replace(/^\\//,\"&\"):\"\"):o[4]+\"\").replace(/\\?/,\"&\")}&output=${o[4]&&o[4].indexOf(\"layer=c\")>0?\"svembed\":\"embed\"}`,s=\"map\"):(o=i.match(/(?:maps\\.)?google\\.([a-z]{2,3}(?:\\.[a-z]{2})?)\\/(?:maps\\/search\\/)(.*)/i))&&(t.src=`//maps.google.${o[1]}/maps?q=${o[2].replace(\"query=\",\"q=\").replace(\"api=1\",\"\")}&output=embed`,s=\"map\");s||(\"#\"===i.charAt(0)?s=\"inline\":(o=i.match(/\\.(mp4|mov|ogv|webm)((\\?|#).*)?$/i))?(s=\"html5video\",t.format=t.format||\"video/\"+(\"ogv\"===o[1]?\"ogg\":o[1])):i.match(/(^data:image\\/[a-z0-9+\\/=]*,)|(\\.(jp(e|g|eg)|gif|png|bmp|webp|svg|ico)((\\?|#).*)?$)/i)?s=\"image\":i.match(/\\.(pdf)((\\?|#).*)?$/i)&&(s=\"pdf\")),t.type=s||this.fancybox.option(\"defaultType\",\"image\"),\"html5video\"!==s&&\"video\"!==s||(t.video=e({},this.fancybox.option(\"Html.video\"),t.video),t._width&&t._height?t.ratio=parseFloat(t._width)/parseFloat(t._height):t.ratio=t.ratio||t.video.ratio||E.video.ratio)}}onReady(){this.fancybox.Carousel.slides.forEach((t=>{t.$el&&(this.setContent(t),t.index===this.fancybox.getSlide().index&&this.playVideo(t))}))}onCreateSlide(t,e,i){\"ready\"===this.fancybox.state&&this.setContent(i)}loadInlineContent(t){let e;if(t.src instanceof HTMLElement)e=t.src;else if(\"string\"==typeof t.src){const i=t.src.split(\"#\",2),s=2===i.length&&\"\"===i[0]?i[1]:i[0];e=document.getElementById(s)}if(e){if(\"clone\"===t.type||e.$placeHolder){e=e.cloneNode(!0);let i=e.getAttribute(\"id\");i=i?`${i}--clone`:`clone-${this.fancybox.id}-${t.index}`,e.setAttribute(\"id\",i)}else{const t=document.createElement(\"div\");t.classList.add(\"fancybox-placeholder\"),e.parentNode.insertBefore(t,e),e.$placeHolder=t}this.fancybox.setContent(t,e)}else this.fancybox.setError(t,\"{{ELEMENT_NOT_FOUND}}\")}loadAjaxContent(t){const e=this.fancybox,i=new XMLHttpRequest;e.showLoading(t),i.onreadystatechange=function(){i.readyState===XMLHttpRequest.DONE&&\"ready\"===e.state&&(e.hideLoading(t),200===i.status?e.setContent(t,i.responseText):e.setError(t,404===i.status?\"{{AJAX_NOT_FOUND}}\":\"{{AJAX_FORBIDDEN}}\"))};const s=t.ajax||null;i.open(s?\"POST\":\"GET\",t.src),i.setRequestHeader(\"Content-Type\",\"application/x-www-form-urlencoded\"),i.setRequestHeader(\"X-Requested-With\",\"XMLHttpRequest\"),i.send(s),t.xhr=i}loadIframeContent(t){const e=this.fancybox,i=document.createElement(\"iframe\");if(i.className=\"fancybox__iframe\",i.setAttribute(\"id\",`fancybox__iframe_${e.id}_${t.index}`),i.setAttribute(\"allow\",\"autoplay; fullscreen\"),i.setAttribute(\"scrolling\",\"auto\"),t.$iframe=i,\"iframe\"!==t.type||!1===t.preload)return i.setAttribute(\"src\",t.src),this.fancybox.setContent(t,i),void this.resizeIframe(t);e.showLoading(t);const s=document.createElement(\"div\");s.style.visibility=\"hidden\",this.fancybox.setContent(t,s),s.appendChild(i),i.onerror=()=>{e.setError(t,\"{{IFRAME_ERROR}}\")},i.onload=()=>{e.hideLoading(t);let s=!1;i.isReady||(i.isReady=!0,s=!0),i.src.length&&(i.parentNode.style.visibility=\"\",this.resizeIframe(t),s&&e.revealContent(t))},i.setAttribute(\"src\",t.src)}setAspectRatio(t){const e=t.$content,i=t.ratio;if(!e)return;let s=t._width,o=t._height;if(i||s&&o){Object.assign(e.style,{width:s&&o?\"100%\":\"\",height:s&&o?\"100%\":\"\",maxWidth:\"\",maxHeight:\"\"});let t=e.offsetWidth,n=e.offsetHeight;if(s=s||t,o=o||n,s>t||o>n){let e=Math.min(t/s,n/o);s*=e,o*=e}Math.abs(s/o-i)>.01&&(i{t.$el&&(t.$iframe&&this.resizeIframe(t),t.ratio&&this.setAspectRatio(t))}))}setContent(t){if(t&&!t.isDom){switch(t.type){case\"html\":this.fancybox.setContent(t,t.src);break;case\"html5video\":this.fancybox.setContent(t,this.fancybox.option(\"Html.html5video.tpl\").replace(/\\{\\{src\\}\\}/gi,t.src).replace(\"{{format}}\",t.format||t.html5video&&t.html5video.format||\"\").replace(\"{{poster}}\",t.poster||t.thumb||\"\"));break;case\"inline\":case\"clone\":this.loadInlineContent(t);break;case\"ajax\":this.loadAjaxContent(t);break;case\"pdf\":case\"video\":case\"map\":t.preload=!1;case\"iframe\":this.loadIframeContent(t)}t.ratio&&this.setAspectRatio(t)}}onSelectSlide(t,e,i){\"ready\"===t.state&&this.playVideo(i)}playVideo(t){if(\"html5video\"===t.type&&t.video.autoplay)try{const e=t.$el.querySelector(\"video\");if(e){const t=e.play();void 0!==t&&t.then((()=>{})).catch((t=>{e.muted=!0,e.play()}))}}catch(t){}if(\"video\"!==t.type||!t.$iframe||!t.$iframe.contentWindow)return;const e=()=>{if(\"done\"===t.state&&t.$iframe&&t.$iframe.contentWindow){let e;if(t.$iframe.isReady)return t.video&&t.video.autoplay&&(e=\"youtube\"==t.vendor?{event:\"command\",func:\"playVideo\"}:{method:\"play\",value:\"true\"}),void(e&&t.$iframe.contentWindow.postMessage(JSON.stringify(e),\"*\"));\"youtube\"===t.vendor&&(e={event:\"listening\",id:t.$iframe.getAttribute(\"id\")},t.$iframe.contentWindow.postMessage(JSON.stringify(e),\"*\"))}t.poller=setTimeout(e,250)};e()}onUnselectSlide(t,e,i){if(\"html5video\"===i.type){try{i.$el.querySelector(\"video\").pause()}catch(t){}return}let s=!1;\"vimeo\"==i.vendor?s={method:\"pause\",value:\"true\"}:\"youtube\"===i.vendor&&(s={event:\"command\",func:\"pauseVideo\"}),s&&i.$iframe&&i.$iframe.contentWindow&&i.$iframe.contentWindow.postMessage(JSON.stringify(s),\"*\"),clearTimeout(i.poller)}onRemoveSlide(t,e,i){i.xhr&&(i.xhr.abort(),i.xhr=null),i.$iframe&&(i.$iframe.onload=i.$iframe.onerror=null,i.$iframe.src=\"//about:blank\",i.$iframe=null);const s=i.$content;\"inline\"===i.type&&s&&(s.classList.remove(\"fancybox__content\"),\"none\"!==s.style.display&&(s.style.display=\"none\")),i.$closeButton&&(i.$closeButton.remove(),i.$closeButton=null);const o=s&&s.$placeHolder;o&&(o.parentNode.insertBefore(s,o),o.remove(),s.$placeHolder=null)}onMessage(t){try{let e=JSON.parse(t.data);if(\"https://player.vimeo.com\"===t.origin){if(\"ready\"===e.event)for(let e of document.getElementsByClassName(\"fancybox__iframe\"))e.contentWindow===t.source&&(e.isReady=1)}else\"https://www.youtube-nocookie.com\"===t.origin&&\"onReady\"===e.event&&(document.getElementById(e.id).isReady=1)}catch(t){}}attach(){this.fancybox.on(this.events),window.addEventListener(\"message\",this.onMessage,!1)}detach(){this.fancybox.off(this.events),window.removeEventListener(\"message\",this.onMessage,!1)}}P.defaults=E;class T{constructor(t){this.fancybox=t;for(const t of[\"onReady\",\"onClosing\",\"onDone\",\"onPageChange\",\"onCreateSlide\",\"onRemoveSlide\",\"onImageStatusChange\"])this[t]=this[t].bind(this);this.events={ready:this.onReady,closing:this.onClosing,done:this.onDone,\"Carousel.change\":this.onPageChange,\"Carousel.createSlide\":this.onCreateSlide,\"Carousel.removeSlide\":this.onRemoveSlide}}onReady(){this.fancybox.Carousel.slides.forEach((t=>{t.$el&&this.setContent(t)}))}onDone(t,e){this.handleCursor(e)}onClosing(t){clearTimeout(this.clickTimer),this.clickTimer=null,t.Carousel.slides.forEach((t=>{t.$image&&(t.state=\"destroy\"),t.Panzoom&&t.Panzoom.detachEvents()})),\"closing\"===this.fancybox.state&&this.canZoom(t.getSlide())&&this.zoomOut()}onCreateSlide(t,e,i){\"ready\"===this.fancybox.state&&this.setContent(i)}onRemoveSlide(t,e,i){i.$image&&(i.$el.classList.remove(t.option(\"Image.canZoomInClass\")),i.$image.remove(),i.$image=null),i.Panzoom&&(i.Panzoom.destroy(),i.Panzoom=null),i.$el&&i.$el.dataset&&delete i.$el.dataset.imageFit}setContent(t){if(t.isDom||t.html||t.type&&\"image\"!==t.type)return;if(t.$image)return;t.type=\"image\",t.state=\"loading\";const e=document.createElement(\"div\");e.style.visibility=\"hidden\";const i=document.createElement(\"img\");i.addEventListener(\"load\",(e=>{e.stopImmediatePropagation(),this.onImageStatusChange(t)})),i.addEventListener(\"error\",(()=>{this.onImageStatusChange(t)})),i.src=t.src,i.alt=\"\",i.draggable=!1,i.classList.add(\"fancybox__image\"),t.srcset&&i.setAttribute(\"srcset\",t.srcset),t.sizes&&i.setAttribute(\"sizes\",t.sizes),t.$image=i;const s=this.fancybox.option(\"Image.wrap\");if(s){const o=document.createElement(\"div\");o.classList.add(\"string\"==typeof s?s:\"fancybox__image-wrap\"),o.appendChild(i),e.appendChild(o),t.$wrap=o}else e.appendChild(i);t.$el.dataset.imageFit=this.fancybox.option(\"Image.fit\"),this.fancybox.setContent(t,e),i.complete||i.error?this.onImageStatusChange(t):this.fancybox.showLoading(t)}onImageStatusChange(t){const e=t.$image;e&&\"loading\"===t.state&&(e.complete&&e.naturalWidth&&e.naturalHeight?(this.fancybox.hideLoading(t),\"contain\"===this.fancybox.option(\"Image.fit\")&&this.initSlidePanzoom(t),t.$el.addEventListener(\"wheel\",(e=>this.onWheel(t,e)),{passive:!1}),t.$content.addEventListener(\"click\",(e=>this.onClick(t,e)),{passive:!1}),this.revealContent(t)):this.fancybox.setError(t,\"{{IMAGE_ERROR}}\"))}initSlidePanzoom(t){t.Panzoom||(t.Panzoom=new d(t.$el,e(!0,this.fancybox.option(\"Image.Panzoom\",{}),{viewport:t.$wrap,content:t.$image,width:t._width,height:t._height,wrapInner:!1,textSelection:!0,touch:this.fancybox.option(\"Image.touch\"),panOnlyZoomed:!0,click:!1,wheel:!1})),t.Panzoom.on(\"startAnimation\",(()=>{this.fancybox.trigger(\"Image.startAnimation\",t)})),t.Panzoom.on(\"endAnimation\",(()=>{\"zoomIn\"===t.state&&this.fancybox.done(t),this.handleCursor(t),this.fancybox.trigger(\"Image.endAnimation\",t)})),t.Panzoom.on(\"afterUpdate\",(()=>{this.handleCursor(t),this.fancybox.trigger(\"Image.afterUpdate\",t)})))}revealContent(t){null===this.fancybox.Carousel.prevPage&&t.index===this.fancybox.options.startIndex&&this.canZoom(t)?this.zoomIn():this.fancybox.revealContent(t)}getZoomInfo(t){const e=t.$thumb.getBoundingClientRect(),i=e.width,s=e.height,o=t.$content.getBoundingClientRect(),n=o.width,a=o.height,r=o.top-e.top,h=o.left-e.left;let l=this.fancybox.option(\"Image.zoomOpacity\");return\"auto\"===l&&(l=Math.abs(i/s-n/a)>.1),{top:r,left:h,scale:n&&i?i/n:1,opacity:l}}canZoom(t){const e=this.fancybox,i=e.$container;if(window.visualViewport&&1!==window.visualViewport.scale)return!1;if(t.Panzoom&&!t.Panzoom.content.width)return!1;if(!e.option(\"Image.zoom\")||\"contain\"!==e.option(\"Image.fit\"))return!1;const s=t.$thumb;if(!s||\"loading\"===t.state)return!1;i.classList.add(\"fancybox__no-click\");const o=s.getBoundingClientRect();let n;if(this.fancybox.option(\"Image.ignoreCoveredThumbnail\")){const t=document.elementFromPoint(o.left+1,o.top+1)===s,e=document.elementFromPoint(o.right-1,o.bottom-1)===s;n=t&&e}else n=document.elementFromPoint(o.left+.5*o.width,o.top+.5*o.height)===s;return i.classList.remove(\"fancybox__no-click\"),n}zoomIn(){const t=this.fancybox,e=t.getSlide(),i=e.Panzoom,{top:s,left:o,scale:n,opacity:a}=this.getZoomInfo(e);t.trigger(\"reveal\",e),i.panTo({x:-1*o,y:-1*s,scale:n,friction:0,ignoreBounds:!0}),e.$content.style.visibility=\"\",e.state=\"zoomIn\",!0===a&&i.on(\"afterTransform\",(t=>{\"zoomIn\"!==e.state&&\"zoomOut\"!==e.state||(t.$content.style.opacity=Math.min(1,1-(1-t.content.scale)/(1-n)))})),i.panTo({x:0,y:0,scale:1,friction:this.fancybox.option(\"Image.zoomFriction\")})}zoomOut(){const t=this.fancybox,e=t.getSlide(),i=e.Panzoom;if(!i)return;e.state=\"zoomOut\",t.state=\"customClosing\",e.$caption&&(e.$caption.style.visibility=\"hidden\");let s=this.fancybox.option(\"Image.zoomFriction\");const o=t=>{const{top:o,left:n,scale:a,opacity:r}=this.getZoomInfo(e);t||r||(s*=.82),i.panTo({x:-1*n,y:-1*o,scale:a,friction:s,ignoreBounds:!0}),s*=.98};window.addEventListener(\"scroll\",o),i.once(\"endAnimation\",(()=>{window.removeEventListener(\"scroll\",o),t.destroy()})),o()}handleCursor(t){if(\"image\"!==t.type||!t.$el)return;const e=t.Panzoom,i=this.fancybox.option(\"Image.click\",!1,t),s=this.fancybox.option(\"Image.touch\"),o=t.$el.classList,n=this.fancybox.option(\"Image.canZoomInClass\"),a=this.fancybox.option(\"Image.canZoomOutClass\");if(o.remove(a),o.remove(n),e&&\"toggleZoom\"===i){e&&1===e.content.scale&&e.option(\"maxScale\")-e.content.scale>.01?o.add(n):e.content.scale>1&&!s&&o.add(a)}else\"close\"===i&&o.add(a)}onWheel(t,e){if(\"ready\"===this.fancybox.state&&!1!==this.fancybox.trigger(\"Image.wheel\",e))switch(this.fancybox.option(\"Image.wheel\")){case\"zoom\":\"done\"===t.state&&t.Panzoom&&t.Panzoom.zoomWithWheel(e);break;case\"close\":this.fancybox.close();break;case\"slide\":this.fancybox[e.deltaY<0?\"prev\":\"next\"]()}}onClick(t,e){if(\"ready\"!==this.fancybox.state)return;const i=t.Panzoom;if(i&&(i.dragPosition.midPoint||0!==i.dragOffset.x||0!==i.dragOffset.y||1!==i.dragOffset.scale))return;if(this.fancybox.Carousel.Panzoom.lockAxis)return!1;const s=i=>{switch(i){case\"toggleZoom\":e.stopPropagation(),t.Panzoom&&t.Panzoom.zoomWithClick(e);break;case\"close\":this.fancybox.close();break;case\"next\":e.stopPropagation(),this.fancybox.next()}},o=this.fancybox.option(\"Image.click\"),n=this.fancybox.option(\"Image.doubleClick\");n?this.clickTimer?(clearTimeout(this.clickTimer),this.clickTimer=null,s(n)):this.clickTimer=setTimeout((()=>{this.clickTimer=null,s(o)}),300):s(o)}onPageChange(t,e){const i=t.getSlide();e.slides.forEach((t=>{t.Panzoom&&\"done\"===t.state&&t.index!==i.index&&t.Panzoom.panTo({x:0,y:0,scale:1,friction:.8})}))}attach(){this.fancybox.on(this.events)}detach(){this.fancybox.off(this.events)}}T.defaults={canZoomInClass:\"can-zoom_in\",canZoomOutClass:\"can-zoom_out\",zoom:!0,zoomOpacity:\"auto\",zoomFriction:.82,ignoreCoveredThumbnail:!1,touch:!0,click:\"toggleZoom\",doubleClick:null,wheel:\"zoom\",fit:\"contain\",wrap:!1,Panzoom:{ratio:1}};class L{constructor(t){this.fancybox=t;for(const t of[\"onChange\",\"onClosing\"])this[t]=this[t].bind(this);this.events={initCarousel:this.onChange,\"Carousel.change\":this.onChange,closing:this.onClosing},this.hasCreatedHistory=!1,this.origHash=\"\",this.timer=null}onChange(t){const e=t.Carousel;this.timer&&clearTimeout(this.timer);const i=null===e.prevPage,s=t.getSlide(),o=new URL(document.URL).hash;let n=!1;if(s.slug)n=\"#\"+s.slug;else{const i=s.$trigger&&s.$trigger.dataset,o=t.option(\"slug\")||i&&i.fancybox;o&&o.length&&\"true\"!==o&&(n=\"#\"+o+(e.slides.length>1?\"-\"+(s.index+1):\"\"))}i&&(this.origHash=o!==n?o:\"\"),n&&o!==n&&(this.timer=setTimeout((()=>{try{window.history[i?\"pushState\":\"replaceState\"]({},document.title,window.location.pathname+window.location.search+n),i&&(this.hasCreatedHistory=!0)}catch(t){}}),300))}onClosing(){if(this.timer&&clearTimeout(this.timer),!0!==this.hasSilentClose)try{return void window.history.replaceState({},document.title,window.location.pathname+window.location.search+(this.origHash||\"\"))}catch(t){}}attach(t){t.on(this.events)}detach(t){t.off(this.events)}static startFromUrl(){const t=L.Fancybox;if(!t||t.getInstance()||!1===t.defaults.Hash)return;const{hash:e,slug:i,index:s}=L.getParsedURL();if(!i)return;let o=document.querySelector(`[data-slug=\"${e}\"]`);if(o&&o.dispatchEvent(new CustomEvent(\"click\",{bubbles:!0,cancelable:!0})),t.getInstance())return;const n=document.querySelectorAll(`[data-fancybox=\"${i}\"]`);n.length&&(null===s&&1===n.length?o=n[0]:s&&(o=n[s-1]),o&&o.dispatchEvent(new CustomEvent(\"click\",{bubbles:!0,cancelable:!0})))}static onHashChange(){const{slug:t,index:e}=L.getParsedURL(),i=L.Fancybox,s=i&&i.getInstance();if(s&&s.plugins.Hash){if(t){const i=s.Carousel;if(t===s.option(\"slug\"))return i.slideTo(e-1);for(let e of i.slides)if(e.slug&&e.slug===t)return i.slideTo(e.index);const o=s.getSlide(),n=o.$trigger&&o.$trigger.dataset;if(n&&n.fancybox===t)return i.slideTo(e-1)}s.plugins.Hash.hasSilentClose=!0,s.close()}L.startFromUrl()}static create(t){function e(){window.addEventListener(\"hashchange\",L.onHashChange,!1),L.startFromUrl()}L.Fancybox=t,v&&window.requestAnimationFrame((()=>{/complete|interactive|loaded/.test(document.readyState)?e():document.addEventListener(\"DOMContentLoaded\",e)}))}static destroy(){window.removeEventListener(\"hashchange\",L.onHashChange,!1)}static getParsedURL(){const t=window.location.hash.substr(1),e=t.split(\"-\"),i=e.length>1&&/^\\+?\\d+$/.test(e[e.length-1])&&parseInt(e.pop(-1),10)||null;return{hash:t,slug:e.join(\"-\"),index:i}}}const _={pageXOffset:0,pageYOffset:0,element:()=>document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement,activate(t){_.pageXOffset=window.pageXOffset,_.pageYOffset=window.pageYOffset,t.requestFullscreen?t.requestFullscreen():t.mozRequestFullScreen?t.mozRequestFullScreen():t.webkitRequestFullscreen?t.webkitRequestFullscreen():t.msRequestFullscreen&&t.msRequestFullscreen()},deactivate(){document.exitFullscreen?document.exitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitExitFullscreen&&document.webkitExitFullscreen()}};class A{constructor(t){this.fancybox=t,this.active=!1,this.handleVisibilityChange=this.handleVisibilityChange.bind(this)}isActive(){return this.active}setTimer(){if(!this.active||this.timer)return;const t=this.fancybox.option(\"slideshow.delay\",3e3);this.timer=setTimeout((()=>{this.timer=null,this.fancybox.option(\"infinite\")||this.fancybox.getSlide().index!==this.fancybox.Carousel.slides.length-1?this.fancybox.next():this.fancybox.jumpTo(0,{friction:0})}),t);let e=this.$progress;e||(e=document.createElement(\"div\"),e.classList.add(\"fancybox__progress\"),this.fancybox.$carousel.parentNode.insertBefore(e,this.fancybox.$carousel),this.$progress=e,e.offsetHeight),e.style.transitionDuration=`${t}ms`,e.style.transform=\"scaleX(1)\"}clearTimer(){clearTimeout(this.timer),this.timer=null,this.$progress&&(this.$progress.style.transitionDuration=\"\",this.$progress.style.transform=\"\",this.$progress.offsetHeight)}activate(){this.active||(this.active=!0,this.fancybox.$container.classList.add(\"has-slideshow\"),\"done\"===this.fancybox.getSlide().state&&this.setTimer(),document.addEventListener(\"visibilitychange\",this.handleVisibilityChange,!1))}handleVisibilityChange(){this.deactivate()}deactivate(){this.active=!1,this.clearTimer(),this.fancybox.$container.classList.remove(\"has-slideshow\"),document.removeEventListener(\"visibilitychange\",this.handleVisibilityChange,!1)}toggle(){this.active?this.deactivate():this.fancybox.Carousel.slides.length>1&&this.activate()}}const z={display:[\"counter\",\"zoom\",\"slideshow\",\"fullscreen\",\"thumbs\",\"close\"],autoEnable:!0,items:{counter:{position:\"left\",type:\"div\",class:\"fancybox__counter\",html:' / ',attr:{tabindex:-1}},prev:{type:\"button\",class:\"fancybox__button--prev\",label:\"PREV\",html:'',attr:{\"data-fancybox-prev\":\"\"}},next:{type:\"button\",class:\"fancybox__button--next\",label:\"NEXT\",html:'',attr:{\"data-fancybox-next\":\"\"}},fullscreen:{type:\"button\",class:\"fancybox__button--fullscreen\",label:\"TOGGLE_FULLSCREEN\",html:'\\n \\n \\n ',click:function(t){t.preventDefault(),_.element()?_.deactivate():_.activate(this.fancybox.$container)}},slideshow:{type:\"button\",class:\"fancybox__button--slideshow\",label:\"TOGGLE_SLIDESHOW\",html:'\\n \\n \\n ',click:function(t){t.preventDefault(),this.Slideshow.toggle()}},zoom:{type:\"button\",class:\"fancybox__button--zoom\",label:\"TOGGLE_ZOOM\",html:'',click:function(t){t.preventDefault();const e=this.fancybox.getSlide().Panzoom;e&&e.toggleZoom()}},download:{type:\"link\",label:\"DOWNLOAD\",class:\"fancybox__button--download\",html:'',click:function(t){t.stopPropagation()}},thumbs:{type:\"button\",label:\"TOGGLE_THUMBS\",class:\"fancybox__button--thumbs\",html:'',click:function(t){t.stopPropagation();const e=this.fancybox.plugins.Thumbs;e&&e.toggle()}},close:{type:\"button\",label:\"CLOSE\",class:\"fancybox__button--close\",html:'',attr:{\"data-fancybox-close\":\"\",tabindex:0}}}};class k{constructor(t){this.fancybox=t,this.$container=null,this.state=\"init\";for(const t of[\"onInit\",\"onPrepare\",\"onDone\",\"onKeydown\",\"onClosing\",\"onChange\",\"onSettle\",\"onRefresh\"])this[t]=this[t].bind(this);this.events={init:this.onInit,prepare:this.onPrepare,done:this.onDone,keydown:this.onKeydown,closing:this.onClosing,\"Carousel.change\":this.onChange,\"Carousel.settle\":this.onSettle,\"Carousel.Panzoom.touchStart\":()=>this.onRefresh(),\"Image.startAnimation\":(t,e)=>this.onRefresh(e),\"Image.afterUpdate\":(t,e)=>this.onRefresh(e)}}onInit(){if(this.fancybox.option(\"Toolbar.autoEnable\")){let t=!1;for(const e of this.fancybox.items)if(\"image\"===e.type){t=!0;break}if(!t)return void(this.state=\"disabled\")}for(const e of this.fancybox.option(\"Toolbar.display\")){if(\"close\"===(t(e)?e.id:e)){this.fancybox.options.closeButton=!1;break}}}onPrepare(){const t=this.fancybox;if(\"init\"===this.state&&(this.build(),this.update(),this.Slideshow=new A(t),!t.Carousel.prevPage&&(t.option(\"slideshow.autoStart\")&&this.Slideshow.activate(),t.option(\"fullscreen.autoStart\")&&!_.element())))try{_.activate(t.$container)}catch(t){}}onFsChange(){window.scrollTo(_.pageXOffset,_.pageYOffset)}onSettle(){const t=this.fancybox,e=this.Slideshow;e&&e.isActive()&&(t.getSlide().index!==t.Carousel.slides.length-1||t.option(\"infinite\")?\"done\"===t.getSlide().state&&e.setTimer():e.deactivate())}onChange(){this.update(),this.Slideshow&&this.Slideshow.isActive()&&this.Slideshow.clearTimer()}onDone(t,e){const i=this.Slideshow;e.index===t.getSlide().index&&(this.update(),i&&i.isActive()&&(t.option(\"infinite\")||e.index!==t.Carousel.slides.length-1?i.setTimer():i.deactivate()))}onRefresh(t){t&&t.index!==this.fancybox.getSlide().index||(this.update(),!this.Slideshow||!this.Slideshow.isActive()||t&&\"done\"!==t.state||this.Slideshow.deactivate())}onKeydown(t,e,i){\" \"===e&&this.Slideshow&&(this.Slideshow.toggle(),i.preventDefault())}onClosing(){this.Slideshow&&this.Slideshow.deactivate(),document.removeEventListener(\"fullscreenchange\",this.onFsChange)}createElement(t){let e;\"div\"===t.type?e=document.createElement(\"div\"):(e=document.createElement(\"link\"===t.type?\"a\":\"button\"),e.classList.add(\"carousel__button\")),e.innerHTML=t.html,e.setAttribute(\"tabindex\",t.tabindex||0),t.class&&e.classList.add(...t.class.split(\" \"));for(const i in t.attr)e.setAttribute(i,t.attr[i]);t.label&&e.setAttribute(\"title\",this.fancybox.localize(`{{${t.label}}}`)),t.click&&e.addEventListener(\"click\",t.click.bind(this)),\"prev\"===t.id&&e.setAttribute(\"data-fancybox-prev\",\"\"),\"next\"===t.id&&e.setAttribute(\"data-fancybox-next\",\"\");const i=e.querySelector(\"svg\");return i&&(i.setAttribute(\"role\",\"img\"),i.setAttribute(\"tabindex\",\"-1\"),i.setAttribute(\"xmlns\",\"http://www.w3.org/2000/svg\")),e}build(){this.cleanup();const i=this.fancybox.option(\"Toolbar.items\"),s=[{position:\"left\",items:[]},{position:\"center\",items:[]},{position:\"right\",items:[]}],o=this.fancybox.plugins.Thumbs;for(const n of this.fancybox.option(\"Toolbar.display\")){let a,r;if(t(n)?(a=n.id,r=e({},i[a],n)):(a=n,r=i[a]),[\"counter\",\"next\",\"prev\",\"slideshow\"].includes(a)&&this.fancybox.items.length<2)continue;if(\"fullscreen\"===a){if(!document.fullscreenEnabled||window.fullScreen)continue;document.addEventListener(\"fullscreenchange\",this.onFsChange)}if(\"thumbs\"===a&&(!o||\"disabled\"===o.state))continue;if(!r)continue;let h=r.position||\"right\",l=s.find((t=>t.position===h));l&&l.items.push(r)}const n=document.createElement(\"div\");n.classList.add(\"fancybox__toolbar\");for(const t of s)if(t.items.length){const e=document.createElement(\"div\");e.classList.add(\"fancybox__toolbar__items\"),e.classList.add(`fancybox__toolbar__items--${t.position}`);for(const i of t.items)e.appendChild(this.createElement(i));n.appendChild(e)}this.fancybox.$carousel.parentNode.insertBefore(n,this.fancybox.$carousel),this.$container=n}update(){const t=this.fancybox.getSlide(),e=t.index,i=this.fancybox.items.length,s=t.downloadSrc||(\"image\"!==t.type||t.error?null:t.src);for(const t of this.fancybox.$container.querySelectorAll(\"a.fancybox__button--download\"))s?(t.removeAttribute(\"disabled\"),t.removeAttribute(\"tabindex\"),t.setAttribute(\"href\",s),t.setAttribute(\"download\",s),t.setAttribute(\"target\",\"_blank\")):(t.setAttribute(\"disabled\",\"\"),t.setAttribute(\"tabindex\",-1),t.removeAttribute(\"href\"),t.removeAttribute(\"download\"));const o=t.Panzoom,n=o&&o.option(\"maxScale\")>o.option(\"baseScale\");for(const t of this.fancybox.$container.querySelectorAll(\".fancybox__button--zoom\"))n?t.removeAttribute(\"disabled\"):t.setAttribute(\"disabled\",\"\");for(const e of this.fancybox.$container.querySelectorAll(\"[data-fancybox-index]\"))e.innerHTML=t.index+1;for(const t of this.fancybox.$container.querySelectorAll(\"[data-fancybox-count]\"))t.innerHTML=i;if(!this.fancybox.option(\"infinite\")){for(const t of this.fancybox.$container.querySelectorAll(\"[data-fancybox-prev]\"))0===e?t.setAttribute(\"disabled\",\"\"):t.removeAttribute(\"disabled\");for(const t of this.fancybox.$container.querySelectorAll(\"[data-fancybox-next]\"))e===i-1?t.setAttribute(\"disabled\",\"\"):t.removeAttribute(\"disabled\")}}cleanup(){this.Slideshow&&this.Slideshow.isActive()&&this.Slideshow.clearTimer(),this.$container&&this.$container.remove(),this.$container=null}attach(){this.fancybox.on(this.events)}detach(){this.fancybox.off(this.events),this.cleanup()}}k.defaults=z;const O={ScrollLock:class{constructor(t){this.fancybox=t,this.viewport=null,this.pendingUpdate=null;for(const t of[\"onReady\",\"onResize\",\"onTouchstart\",\"onTouchmove\"])this[t]=this[t].bind(this)}onReady(){const t=window.visualViewport;t&&(this.viewport=t,this.startY=0,t.addEventListener(\"resize\",this.onResize),this.updateViewport()),window.addEventListener(\"touchstart\",this.onTouchstart,{passive:!1}),window.addEventListener(\"touchmove\",this.onTouchmove,{passive:!1}),window.addEventListener(\"wheel\",this.onWheel,{passive:!1})}onResize(){this.updateViewport()}updateViewport(){const t=this.fancybox,e=this.viewport,i=e.scale||1,s=t.$container;if(!s)return;let o=\"\",n=\"\",a=\"\";i-1>.1&&(o=e.width*i+\"px\",n=e.height*i+\"px\",a=`translate3d(${e.offsetLeft}px, ${e.offsetTop}px, 0) scale(${1/i})`),s.style.width=o,s.style.height=n,s.style.transform=a}onTouchstart(t){this.startY=t.touches?t.touches[0].screenY:t.screenY}onTouchmove(t){const e=this.startY,i=window.innerWidth/window.document.documentElement.clientWidth;if(!t.cancelable)return;if(t.touches.length>1||1!==i)return;const o=s(t.composedPath()[0]);if(!o)return void t.preventDefault();const n=window.getComputedStyle(o),a=parseInt(n.getPropertyValue(\"height\"),10),r=t.touches?t.touches[0].screenY:t.screenY,h=e<=r&&0===o.scrollTop,l=e>=r&&o.scrollHeight-o.scrollTop===a;(h||l)&&t.preventDefault()}onWheel(t){s(t.composedPath()[0])||t.preventDefault()}cleanup(){this.pendingUpdate&&(cancelAnimationFrame(this.pendingUpdate),this.pendingUpdate=null);const t=this.viewport;t&&(t.removeEventListener(\"resize\",this.onResize),this.viewport=null),window.removeEventListener(\"touchstart\",this.onTouchstart,!1),window.removeEventListener(\"touchmove\",this.onTouchmove,!1),window.removeEventListener(\"wheel\",this.onWheel,{passive:!1})}attach(){this.fancybox.on(\"initLayout\",this.onReady)}detach(){this.fancybox.off(\"initLayout\",this.onReady),this.cleanup()}},Thumbs:C,Html:P,Toolbar:k,Image:T,Hash:L};const M={startIndex:0,preload:1,infinite:!0,showClass:\"fancybox-zoomInUp\",hideClass:\"fancybox-fadeOut\",animated:!0,hideScrollbar:!0,parentEl:null,mainClass:null,autoFocus:!0,trapFocus:!0,placeFocusBack:!0,click:\"close\",closeButton:\"inside\",dragToClose:!0,keyboard:{Escape:\"close\",Delete:\"close\",Backspace:\"close\",PageUp:\"next\",PageDown:\"prev\",ArrowUp:\"next\",ArrowDown:\"prev\",ArrowRight:\"next\",ArrowLeft:\"prev\"},template:{closeButton:'',spinner:'',main:null},l10n:{CLOSE:\"Close\",NEXT:\"Next\",PREV:\"Previous\",MODAL:\"You can close this modal content with the ESC key\",ERROR:\"Something Went Wrong, Please Try Again Later\",IMAGE_ERROR:\"Image Not Found\",ELEMENT_NOT_FOUND:\"HTML Element Not Found\",AJAX_NOT_FOUND:\"Error Loading AJAX : Not Found\",AJAX_FORBIDDEN:\"Error Loading AJAX : Forbidden\",IFRAME_ERROR:\"Error Loading Page\",TOGGLE_ZOOM:\"Toggle zoom level\",TOGGLE_THUMBS:\"Toggle thumbnails\",TOGGLE_SLIDESHOW:\"Toggle slideshow\",TOGGLE_FULLSCREEN:\"Toggle full-screen mode\",DOWNLOAD:\"Download\"}},I=new Map;let F=0;class R extends l{constructor(t,i={}){t=t.map((t=>(t.width&&(t._width=t.width),t.height&&(t._height=t.height),t))),super(e(!0,{},M,i)),this.bindHandlers(),this.state=\"init\",this.setItems(t),this.attachPlugins(R.Plugins),this.trigger(\"init\"),!0===this.option(\"hideScrollbar\")&&this.hideScrollbar(),this.initLayout(),this.initCarousel(),this.attachEvents(),I.set(this.id,this),this.trigger(\"prepare\"),this.state=\"ready\",this.trigger(\"ready\"),this.$container.setAttribute(\"aria-hidden\",\"false\"),this.option(\"trapFocus\")&&this.focus()}option(t,...e){const i=this.getSlide();let s=i?i[t]:void 0;return void 0!==s?(\"function\"==typeof s&&(s=s.call(this,this,...e)),s):super.option(t,...e)}bindHandlers(){for(const t of[\"onMousedown\",\"onKeydown\",\"onClick\",\"onFocus\",\"onCreateSlide\",\"onSettle\",\"onTouchMove\",\"onTouchEnd\",\"onTransform\"])this[t]=this[t].bind(this)}attachEvents(){document.addEventListener(\"mousedown\",this.onMousedown),document.addEventListener(\"keydown\",this.onKeydown,!0),this.option(\"trapFocus\")&&document.addEventListener(\"focus\",this.onFocus,!0),this.$container.addEventListener(\"click\",this.onClick)}detachEvents(){document.removeEventListener(\"mousedown\",this.onMousedown),document.removeEventListener(\"keydown\",this.onKeydown,!0),document.removeEventListener(\"focus\",this.onFocus,!0),this.$container.removeEventListener(\"click\",this.onClick)}initLayout(){this.$root=this.option(\"parentEl\")||document.body;let t=this.option(\"template.main\");t&&(this.$root.insertAdjacentHTML(\"beforeend\",this.localize(t)),this.$container=this.$root.querySelector(\".fancybox__container\")),this.$container||(this.$container=document.createElement(\"div\"),this.$root.appendChild(this.$container)),this.$container.onscroll=()=>(this.$container.scrollLeft=0,!1),Object.entries({class:\"fancybox__container\",role:\"dialog\",tabIndex:\"-1\",\"aria-modal\":\"true\",\"aria-hidden\":\"true\",\"aria-label\":this.localize(\"{{MODAL}}\")}).forEach((t=>this.$container.setAttribute(...t))),this.option(\"animated\")&&this.$container.classList.add(\"is-animated\"),this.$backdrop=this.$container.querySelector(\".fancybox__backdrop\"),this.$backdrop||(this.$backdrop=document.createElement(\"div\"),this.$backdrop.classList.add(\"fancybox__backdrop\"),this.$container.appendChild(this.$backdrop)),this.$carousel=this.$container.querySelector(\".fancybox__carousel\"),this.$carousel||(this.$carousel=document.createElement(\"div\"),this.$carousel.classList.add(\"fancybox__carousel\"),this.$container.appendChild(this.$carousel)),this.$container.Fancybox=this,this.id=this.$container.getAttribute(\"id\"),this.id||(this.id=this.options.id||++F,this.$container.setAttribute(\"id\",\"fancybox-\"+this.id));const e=this.option(\"mainClass\");return e&&this.$container.classList.add(...e.split(\" \")),document.documentElement.classList.add(\"with-fancybox\"),this.trigger(\"initLayout\"),this}setItems(t){const e=[];for(const i of t){const t=i.$trigger;if(t){const e=t.dataset||{};i.src=e.src||t.getAttribute(\"href\")||i.src,i.type=e.type||i.type,!i.src&&t instanceof HTMLImageElement&&(i.src=t.currentSrc||i.$trigger.src)}let s=i.$thumb;if(!s){let t=i.$trigger&&i.$trigger.origTarget;t&&(s=t instanceof HTMLImageElement?t:t.querySelector(\"img:not([aria-hidden])\")),!s&&i.$trigger&&(s=i.$trigger instanceof HTMLImageElement?i.$trigger:i.$trigger.querySelector(\"img:not([aria-hidden])\"))}i.$thumb=s||null;let o=i.thumb;!o&&s&&(o=s.currentSrc||s.src,!o&&s.dataset&&(o=s.dataset.lazySrc||s.dataset.src)),o||\"image\"!==i.type||(o=i.src),i.thumb=o||null,i.caption=i.caption||\"\",e.push(i)}this.items=e}initCarousel(){return this.Carousel=new y(this.$carousel,e(!0,{},{prefix:\"\",classNames:{viewport:\"fancybox__viewport\",track:\"fancybox__track\",slide:\"fancybox__slide\"},textSelection:!0,preload:this.option(\"preload\"),friction:.88,slides:this.items,initialPage:this.options.startIndex,slidesPerPage:1,infiniteX:this.option(\"infinite\"),infiniteY:!0,l10n:this.option(\"l10n\"),Dots:!1,Navigation:{classNames:{main:\"fancybox__nav\",button:\"carousel__button\",next:\"is-next\",prev:\"is-prev\"}},Panzoom:{textSelection:!0,panOnlyZoomed:()=>this.Carousel&&this.Carousel.pages&&this.Carousel.pages.length<2&&!this.option(\"dragToClose\"),lockAxis:()=>{if(this.Carousel){let t=\"x\";return this.option(\"dragToClose\")&&(t+=\"y\"),t}}},on:{\"*\":(t,...e)=>this.trigger(`Carousel.${t}`,...e),init:t=>this.Carousel=t,createSlide:this.onCreateSlide,settle:this.onSettle}},this.option(\"Carousel\"))),this.option(\"dragToClose\")&&this.Carousel.Panzoom.on({touchMove:this.onTouchMove,afterTransform:this.onTransform,touchEnd:this.onTouchEnd}),this.trigger(\"initCarousel\"),this}onCreateSlide(t,e){let i=e.caption||\"\";if(\"function\"==typeof this.options.caption&&(i=this.options.caption.call(this,this,this.Carousel,e)),\"string\"==typeof i&&i.length){const t=document.createElement(\"div\"),s=`fancybox__caption_${this.id}_${e.index}`;t.className=\"fancybox__caption\",t.innerHTML=i,t.setAttribute(\"id\",s),e.$caption=e.$el.appendChild(t),e.$el.classList.add(\"has-caption\"),e.$el.setAttribute(\"aria-labelledby\",s)}}onSettle(){this.option(\"autoFocus\")&&this.focus()}onFocus(t){this.isTopmost()&&this.focus(t)}onClick(t){if(t.defaultPrevented)return;let e=t.composedPath()[0];if(e.matches(\"[data-fancybox-close]\"))return t.preventDefault(),void R.close(!1,t);if(e.matches(\"[data-fancybox-next]\"))return t.preventDefault(),void R.next();if(e.matches(\"[data-fancybox-prev]\"))return t.preventDefault(),void R.prev();const i=document.activeElement;if(i){if(i.closest(\"[contenteditable]\"))return;e.matches(x)||i.blur()}if(e.closest(\".fancybox__content\"))return;if(getSelection().toString().length)return;if(!1===this.trigger(\"click\",t))return;switch(this.option(\"click\")){case\"close\":this.close();break;case\"next\":this.next()}}onTouchMove(){const t=this.getSlide().Panzoom;return!t||1===t.content.scale}onTouchEnd(t){const e=t.dragOffset.y;Math.abs(e)>=150||Math.abs(e)>=35&&t.dragOffset.time<350?(this.option(\"hideClass\")&&(this.getSlide().hideClass=\"fancybox-throwOut\"+(t.content.y<0?\"Up\":\"Down\")),this.close()):\"y\"===t.lockAxis&&t.panTo({y:0})}onTransform(t){if(this.$backdrop){const e=Math.abs(t.content.y),i=e<1?\"\":Math.max(.33,Math.min(1,1-e/t.content.fitHeight*1.5));this.$container.style.setProperty(\"--fancybox-ts\",i?\"0s\":\"\"),this.$container.style.setProperty(\"--fancybox-opacity\",i)}}onMousedown(){\"ready\"===this.state&&document.body.classList.add(\"is-using-mouse\")}onKeydown(t){if(!this.isTopmost())return;document.body.classList.remove(\"is-using-mouse\");const e=t.key,i=this.option(\"keyboard\");if(!i||t.ctrlKey||t.altKey||t.shiftKey)return;const s=t.composedPath()[0],o=document.activeElement&&document.activeElement.classList,n=o&&o.contains(\"carousel__button\");if(\"Escape\"!==e&&!n){if(t.target.isContentEditable||-1!==[\"BUTTON\",\"TEXTAREA\",\"OPTION\",\"INPUT\",\"SELECT\",\"VIDEO\"].indexOf(s.nodeName))return}if(!1===this.trigger(\"keydown\",e,t))return;const a=i[e];\"function\"==typeof this[a]&&this[a]()}getSlide(){const t=this.Carousel;if(!t)return null;const e=null===t.page?t.option(\"initialPage\"):t.page,i=t.pages||[];return i.length&&i[e]?i[e].slides[0]:null}focus(t){if(R.ignoreFocusChange)return;if([\"init\",\"closing\",\"customClosing\",\"destroy\"].indexOf(this.state)>-1)return;const e=this.$container,i=this.getSlide(),s=\"done\"===i.state?i.$el:null;if(s&&s.contains(document.activeElement))return;t&&t.preventDefault(),R.ignoreFocusChange=!0;const o=Array.from(e.querySelectorAll(x));let n,a=[];for(let t of o){const e=t.offsetParent,i=s&&s.contains(t),o=!this.Carousel.$viewport.contains(t);e&&(i||o)?(a.push(t),void 0!==t.dataset.origTabindex&&(t.tabIndex=t.dataset.origTabindex,t.removeAttribute(\"data-orig-tabindex\")),(t.hasAttribute(\"autoFocus\")||!n&&i&&!t.classList.contains(\"carousel__button\"))&&(n=t)):(t.dataset.origTabindex=void 0===t.dataset.origTabindex?t.getAttribute(\"tabindex\"):t.dataset.origTabindex,t.tabIndex=-1)}t?a.indexOf(t.target)>-1?this.lastFocus=t.target:this.lastFocus===e?w(a[a.length-1]):w(e):this.option(\"autoFocus\")&&n?w(n):a.indexOf(document.activeElement)<0&&w(e),this.lastFocus=document.activeElement,R.ignoreFocusChange=!1}hideScrollbar(){if(!v)return;const t=window.innerWidth-document.documentElement.getBoundingClientRect().width,e=\"fancybox-style-noscroll\";let i=document.getElementById(e);i||t>0&&(i=document.createElement(\"style\"),i.id=e,i.type=\"text/css\",i.innerHTML=`.compensate-for-scrollbar {padding-right: ${t}px;}`,document.getElementsByTagName(\"head\")[0].appendChild(i),document.body.classList.add(\"compensate-for-scrollbar\"))}revealScrollbar(){document.body.classList.remove(\"compensate-for-scrollbar\");const t=document.getElementById(\"fancybox-style-noscroll\");t&&t.remove()}clearContent(t){this.Carousel.trigger(\"removeSlide\",t),t.$content&&(t.$content.remove(),t.$content=null),t.$closeButton&&(t.$closeButton.remove(),t.$closeButton=null),t._className&&t.$el.classList.remove(t._className)}setContent(t,e,i={}){let s;const o=t.$el;if(e instanceof HTMLElement)[\"img\",\"iframe\",\"video\",\"audio\"].indexOf(e.nodeName.toLowerCase())>-1?(s=document.createElement(\"div\"),s.appendChild(e)):s=e;else{const t=document.createRange().createContextualFragment(e);s=document.createElement(\"div\"),s.appendChild(t)}if(t.filter&&!t.error&&(s=s.querySelector(t.filter)),s instanceof Element)return t._className=`has-${i.suffix||t.type||\"unknown\"}`,o.classList.add(t._className),s.classList.add(\"fancybox__content\"),\"none\"!==s.style.display&&\"none\"!==getComputedStyle(s).getPropertyValue(\"display\")||(s.style.display=t.display||this.option(\"defaultDisplay\")||\"flex\"),t.id&&s.setAttribute(\"id\",t.id),t.$content=s,o.prepend(s),this.manageCloseButton(t),\"loading\"!==t.state&&this.revealContent(t),s;this.setError(t,\"{{ELEMENT_NOT_FOUND}}\")}manageCloseButton(t){const e=void 0===t.closeButton?this.option(\"closeButton\"):t.closeButton;if(!e||\"top\"===e&&this.$closeButton)return;const i=document.createElement(\"button\");i.classList.add(\"carousel__button\",\"is-close\"),i.setAttribute(\"title\",this.options.l10n.CLOSE),i.innerHTML=this.option(\"template.closeButton\"),i.addEventListener(\"click\",(t=>this.close(t))),\"inside\"===e?(t.$closeButton&&t.$closeButton.remove(),t.$closeButton=t.$content.appendChild(i)):this.$closeButton=this.$container.insertBefore(i,this.$container.firstChild)}revealContent(t){this.trigger(\"reveal\",t),t.$content.style.visibility=\"\";let e=!1;t.error||\"loading\"===t.state||null!==this.Carousel.prevPage||t.index!==this.options.startIndex||(e=void 0===t.showClass?this.option(\"showClass\"):t.showClass),e?(t.state=\"animating\",this.animateCSS(t.$content,e,(()=>{this.done(t)}))):this.done(t)}animateCSS(t,e,i){if(t&&t.dispatchEvent(new CustomEvent(\"animationend\",{bubbles:!0,cancelable:!0})),!t||!e)return void(\"function\"==typeof i&&i());const s=function(o){o.currentTarget===this&&(t.removeEventListener(\"animationend\",s),i&&i(),t.classList.remove(e))};t.addEventListener(\"animationend\",s),t.classList.add(e)}done(t){t.state=\"done\",this.trigger(\"done\",t);const e=this.getSlide();e&&t.index===e.index&&this.option(\"autoFocus\")&&this.focus()}setError(t,e){t.error=e,this.hideLoading(t),this.clearContent(t);const i=document.createElement(\"div\");i.classList.add(\"fancybox-error\"),i.innerHTML=this.localize(e||\"

{{ERROR}}

\"),this.setContent(t,i,{suffix:\"error\"})}showLoading(t){t.state=\"loading\",t.$el.classList.add(\"is-loading\");let e=t.$el.querySelector(\".fancybox__spinner\");e||(e=document.createElement(\"div\"),e.classList.add(\"fancybox__spinner\"),e.innerHTML=this.option(\"template.spinner\"),e.addEventListener(\"click\",(()=>{this.Carousel.Panzoom.velocity||this.close()})),t.$el.prepend(e))}hideLoading(t){const e=t.$el&&t.$el.querySelector(\".fancybox__spinner\");e&&(e.remove(),t.$el.classList.remove(\"is-loading\")),\"loading\"===t.state&&(this.trigger(\"load\",t),t.state=\"ready\")}next(){const t=this.Carousel;t&&t.pages.length>1&&t.slideNext()}prev(){const t=this.Carousel;t&&t.pages.length>1&&t.slidePrev()}jumpTo(...t){this.Carousel&&this.Carousel.slideTo(...t)}isClosing(){return[\"closing\",\"customClosing\",\"destroy\"].includes(this.state)}isTopmost(){return R.getInstance().id==this.id}close(t){if(t&&t.preventDefault(),this.isClosing())return;if(!1===this.trigger(\"shouldClose\",t))return;if(this.state=\"closing\",this.Carousel.Panzoom.destroy(),this.detachEvents(),this.trigger(\"closing\",t),\"destroy\"===this.state)return;this.$container.setAttribute(\"aria-hidden\",\"true\"),this.$container.classList.add(\"is-closing\");const e=this.getSlide();if(this.Carousel.slides.forEach((t=>{t.$content&&t.index!==e.index&&this.Carousel.trigger(\"removeSlide\",t)})),\"closing\"===this.state){const t=void 0===e.hideClass?this.option(\"hideClass\"):e.hideClass;this.animateCSS(e.$content,t,(()=>{this.destroy()}),!0)}}destroy(){if(\"destroy\"===this.state)return;this.state=\"destroy\",this.trigger(\"destroy\");const t=this.option(\"placeFocusBack\")?this.option(\"triggerTarget\",this.getSlide().$trigger):null;this.Carousel.destroy(),this.detachPlugins(),this.Carousel=null,this.options={},this.events={},this.$container.remove(),this.$container=this.$backdrop=this.$carousel=null,t&&w(t),I.delete(this.id);const e=R.getInstance();e?e.focus():(document.documentElement.classList.remove(\"with-fancybox\"),document.body.classList.remove(\"is-using-mouse\"),this.revealScrollbar())}static show(t,e={}){return new R(t,e)}static fromEvent(t,e={}){if(t.defaultPrevented)return;if(t.button&&0!==t.button)return;if(t.ctrlKey||t.metaKey||t.shiftKey)return;const i=t.composedPath()[0];let s,o,n,a=i;if((a.matches(\"[data-fancybox-trigger]\")||(a=a.closest(\"[data-fancybox-trigger]\")))&&(e.triggerTarget=a,s=a&&a.dataset&&a.dataset.fancyboxTrigger),s){const t=document.querySelectorAll(`[data-fancybox=\"${s}\"]`),e=parseInt(a.dataset.fancyboxIndex,10)||0;a=t.length?t[e]:a}Array.from(R.openers.keys()).reverse().some((e=>{n=a||i;let s=!1;try{n instanceof Element&&(\"string\"==typeof e||e instanceof String)&&(s=n.matches(e)||(n=n.closest(e)))}catch(t){}return!!s&&(t.preventDefault(),o=e,!0)}));let r=!1;if(o){e.event=t,e.target=n,n.origTarget=i,r=R.fromOpener(o,e);const s=R.getInstance();s&&\"ready\"===s.state&&t.detail&&document.body.classList.add(\"is-using-mouse\")}return r}static fromOpener(t,i={}){let s=[],o=i.startIndex||0,n=i.target||null;const a=void 0!==(i=e({},i,R.openers.get(t))).groupAll&&i.groupAll,r=void 0===i.groupAttr?\"data-fancybox\":i.groupAttr,h=r&&n?n.getAttribute(`${r}`):\"\";if(!n||h||a){const e=i.root||(n?n.getRootNode():document.body);s=[].slice.call(e.querySelectorAll(t))}if(n&&!a&&(s=h?s.filter((t=>t.getAttribute(`${r}`)===h)):[n]),!s.length)return!1;const l=R.getInstance();return!(l&&s.indexOf(l.options.$trigger)>-1)&&(o=n?s.indexOf(n):o,s=s.map((function(t){const e=[\"false\",\"0\",\"no\",\"null\",\"undefined\"],i=[\"true\",\"1\",\"yes\"],s=Object.assign({},t.dataset),o={};for(let[t,n]of Object.entries(s))if(\"fancybox\"!==t)if(\"width\"===t||\"height\"===t)o[`_${t}`]=n;else if(\"string\"==typeof n||n instanceof String)if(e.indexOf(n)>-1)o[t]=!1;else if(i.indexOf(o[t])>-1)o[t]=!0;else try{o[t]=JSON.parse(n)}catch(e){o[t]=n}else o[t]=n;return t instanceof Element&&(o.$trigger=t),o})),new R(s,e({},i,{startIndex:o,$trigger:n})))}static bind(t,e={}){function i(){document.body.addEventListener(\"click\",R.fromEvent,!1)}v&&(R.openers.size||(/complete|interactive|loaded/.test(document.readyState)?i():document.addEventListener(\"DOMContentLoaded\",i)),R.openers.set(t,e))}static unbind(t){R.openers.delete(t),R.openers.size||R.destroy()}static destroy(){let t;for(;t=R.getInstance();)t.destroy();R.openers=new Map,document.body.removeEventListener(\"click\",R.fromEvent,!1)}static getInstance(t){if(t)return I.get(t);return Array.from(I.values()).reverse().find((t=>!t.isClosing()&&t))||null}static close(t=!0,e){if(t)for(const t of I.values())t.close(e);else{const t=R.getInstance();t&&t.close(e)}}static next(){const t=R.getInstance();t&&t.next()}static prev(){const t=R.getInstance();t&&t.prev()}}R.version=\"4.0.31\",R.defaults=M,R.openers=new Map,R.Plugins=O,R.bind(\"[data-fancybox]\");for(const[t,e]of Object.entries(R.Plugins||{}))\"function\"==typeof e.create&&e.create(R);export{y as Carousel,R as Fancybox,d as Panzoom};\n","const configHelper = require('../config/index');\r\nimport { reduce, replace, isNil, some, startsWith, isEmpty } from 'lodash';\r\n\r\nrequire('../../wwwroot/js/modernizr-custom-mq.js');\r\nconst trimTrailingSlash = (virtualdir = '') => {\r\n return virtualdir.length > 0 && virtualdir[virtualdir.length - 1] === '/'\r\n ? virtualdir.slice(0, virtualdir.length - 1)\r\n : virtualdir;\r\n};\r\nconst getSiteUrl = (virtualdir = window.$pathBase) => {\r\n if (virtualdir === undefined) {\r\n throw new Error(\r\n 'common.getSiteUrl: virtualdir undefined. Should be emtpy or set.'\r\n );\r\n }\r\n if (window.location.port === '') {\r\n return trimTrailingSlash(\r\n window.location.protocol +\r\n '//' +\r\n window.location.hostname +\r\n virtualdir\r\n );\r\n }\r\n return trimTrailingSlash(\r\n window.location.protocol +\r\n '//' +\r\n window.location.hostname +\r\n ':' +\r\n window.location.port +\r\n virtualdir\r\n );\r\n};\r\nconst getSiteCommercialName = () => {\r\n const siteName = {\r\n lordgun: 'LordGun',\r\n runkd: 'RUNKD',\r\n inwild: 'INWILD',\r\n };\r\n return siteName[SITE.toLowerCase()];\r\n};\r\nconst contentFromCdn = ({ path, keepUrlAsIs }) => {\r\n try {\r\n if (keepUrlAsIs === true) {\r\n return path;\r\n }\r\n const config = configHelper.getConfig();\r\n const { useCdn, cdnImagesUrl, cdnImagesFallbackUrl, cms } = config;\r\n\r\n if (cms && cms.cmsUrl && !isNil(cms.cmsUrl) && !isEmpty(cms.cmsUrl)) {\r\n if (startsWith(path, cms.cmsUrl)) {\r\n return path;\r\n }\r\n }\r\n\r\n if (some([useCdn, cdnImagesUrl, cdnImagesFallbackUrl], isNil)) {\r\n throw new Error('Some config for contentFromCdn is missing');\r\n }\r\n let transformedPath = replace(path.toLowerCase(), '~', '');\r\n transformedPath = replace(\r\n transformedPath,\r\n '/content/products',\r\n '/products'\r\n );\r\n transformedPath = replace(transformedPath, '/content/kits', '/kits');\r\n transformedPath = replace(transformedPath, '/content/img/', '/img/');\r\n transformedPath = replace(transformedPath, '/content/img', '/img');\r\n transformedPath = replace(transformedPath, 'content/img/', '/img/');\r\n transformedPath = replace(transformedPath, 'content/', '');\r\n transformedPath = replace(transformedPath, cdnImagesUrl, '');\r\n transformedPath = replace(transformedPath, cdnImagesFallbackUrl, '');\r\n let siteUrl = getSiteUrl().toLowerCase();\r\n transformedPath = transformedPath.replace(siteUrl, '');\r\n transformedPath = replace(\r\n transformedPath,\r\n window.$pathBase.toLowerCase(),\r\n ''\r\n );\r\n transformedPath = transformedPath.startsWith('/')\r\n ? transformedPath.slice(1, transformedPath.length)\r\n : transformedPath;\r\n if (useCdn && startsWith(transformedPath, cdnImagesUrl.toLowerCase())) {\r\n transformedPath = replace(\r\n transformedPath,\r\n cdnImagesUrl.toLowerCase(),\r\n ''\r\n );\r\n }\r\n if (\r\n useCdn === false &&\r\n startsWith(transformedPath, cdnImagesFallbackUrl.toLowerCase())\r\n ) {\r\n transformedPath = replace(\r\n transformedPath,\r\n cdnImagesFallbackUrl.toLowerCase(),\r\n ''\r\n );\r\n }\r\n\r\n let finalPath = useCdn\r\n ? `${cdnImagesUrl}/${transformedPath}`\r\n : `${cdnImagesFallbackUrl}/${transformedPath}`;\r\n return finalPath;\r\n } catch (error) {\r\n console.error('contentFromCdn. Set content from Cdn', error);\r\n }\r\n};\r\nconst getPartnersByCulture = ({ culture, partners }) => {\r\n const items = reduce(\r\n partners,\r\n (acc, el) => {\r\n return el.Culture === culture ? acc.concat(el) : acc;\r\n },\r\n []\r\n );\r\n return reduce(\r\n items,\r\n (acc, p) => {\r\n acc.push({\r\n title: p.Name,\r\n url: p.Url,\r\n culture: p.Culture,\r\n logo: contentFromCdn({\r\n path: `/Content/img/${p.Logo}`,\r\n keepUrlAsIs: false,\r\n }),\r\n });\r\n return acc;\r\n },\r\n []\r\n );\r\n};\r\nconst getParameterByName = function (name, url = window.location.href) {\r\n name = name.replace(/[\\[\\]]/g, '\\\\$&');\r\n var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),\r\n results = regex.exec(url);\r\n if (!results) return null;\r\n if (!results[2]) return '';\r\n return decodeURIComponent(results[2].replace(/\\+/g, ' '));\r\n};\r\nexport default {\r\n getSiteUrl,\r\n getLang: () => document.documentElement.lang,\r\n isTouch: () => Modernizr.touch || window.innerWidth <= 768,\r\n isDesktop: () => Modernizr.mq('(min-width: 64em)'),\r\n getSite: () => SITE.trim().toLowerCase(),\r\n getSiteCommercialName,\r\n contentFromCdn,\r\n getPartnersByCulture,\r\n getParameterByName,\r\n};\r\n","import { hasIn, includes, split } from 'lodash';\r\n// import \"whatwg-fetch\"; // Polyfill per fetch su IE11\r\n\r\nconst _normalizeUrl = (url) => {\r\n if (!window.location.origin) {\r\n window.location.origin =\r\n window.location.protocol +\r\n '//' +\r\n window.location.hostname +\r\n (window.location.port ? ':' + window.location.port : '');\r\n }\r\n return window.location.origin + $pathBase + url;\r\n};\r\n\r\nconst get = async function ({ url, headers = {} }) {\r\n const mergedHeaders = {\r\n ...{\r\n method: 'GET', // *GET, POST, PUT, DELETE, etc.\r\n // mode: 'no-cors', // no-cors, cors, *same-origin\r\n // cache: 'no-cache', // *default, no-cache, reload, force-cache, only-if-cached\r\n // credentials: 'same-origin', // include, *same-origin, omit\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Cache-Control': 'max-age=15',\r\n // 'Content-Type': 'application/x-www-form-urlencoded',\r\n },\r\n // redirect: 'follow', // manual, *follow, error\r\n // referrer: 'no-referrer', // no-referrer, *client\r\n // body: JSON.stringify(data), // body data type must match \"Content-Type\" header\r\n },\r\n ...headers,\r\n };\r\n url = _normalizeUrl(url);\r\n return fetch(url, mergedHeaders)\r\n .then((response) => {\r\n if (response.status >= 400 && response.status < 600) {\r\n const errorMessage = hasIn(response, 'statusText')\r\n ? response.statusText\r\n : 'Bad response from server';\r\n // throw new Error( errorMessage );\r\n throw { status: response.status, errorMessage };\r\n } else if (response.redirected) {\r\n if (includes(response.url.toLowerCase(), 'logon?returnurl')) {\r\n const returnUrl = encodeURIComponent(\r\n split(\r\n window.location.toString(),\r\n window.location.origin\r\n )[1]\r\n );\r\n window.location = `${\r\n split(response.url, '?')[0]\r\n }?returnUrl=${returnUrl}`;\r\n return;\r\n }\r\n window.location = response.url;\r\n return;\r\n }\r\n return response;\r\n })\r\n .then((returnedResponse) => {\r\n // Your response to manipulate\r\n return includes(\r\n returnedResponse.headers.get('Content-Type'),\r\n 'application/json'\r\n )\r\n ? returnedResponse.json()\r\n : returnedResponse;\r\n })\r\n .catch((error) => {\r\n // Your error is here!\r\n if (error.status && error.status === 500) {\r\n console.error(error);\r\n }\r\n throw error;\r\n });\r\n};\r\n\r\nconst postFormData = async function ({ url, body }) {\r\n url = _normalizeUrl(url);\r\n const response = await fetch(url, {\r\n method: 'POST',\r\n body: body,\r\n });\r\n return response;\r\n};\r\n\r\nconst post = async function ({ url, body = {} }) {\r\n url = _normalizeUrl(url);\r\n const rawResponse = await fetch(url, {\r\n method: 'POST',\r\n headers: {\r\n Accept: 'application/json',\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(body),\r\n });\r\n\r\n if (rawResponse.redirected) {\r\n if (includes(rawResponse.url.toLowerCase(), 'logon?returnurl')) {\r\n const returnUrl = encodeURIComponent(\r\n split(window.location.toString(), window.location.origin)[1]\r\n );\r\n window.location = `${\r\n split(rawResponse.url, '?')[0]\r\n }?returnUrl=${returnUrl}`;\r\n return {};\r\n }\r\n window.location = rawResponse.url;\r\n return {};\r\n }\r\n\r\n const content = await rawResponse.json();\r\n return content;\r\n};\r\n\r\nconst remove = async function ({ url, headers = {} }) {\r\n url = _normalizeUrl(url);\r\n return fetch(url, {\r\n ...{\r\n method: 'DELETE', // *GET, POST, PUT, DELETE, etc.\r\n cache: 'no-cache', // *default, no-cache, reload, force-cache, only-if-cached\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n },\r\n ...headers,\r\n })\r\n .then((returnedResponse) => {\r\n return includes(\r\n returnedResponse.headers.get('Content-Type'),\r\n 'application/json'\r\n )\r\n ? returnedResponse.json()\r\n : returnedResponse;\r\n })\r\n .catch((error) => {\r\n if (error.status && error.status === 500) {\r\n console.error(error);\r\n }\r\n throw error;\r\n });\r\n};\r\n\r\nexport { get, postFormData, post, remove };\r\n","import i18next from 'i18next';\r\nimport keys from 'lodash/keys';\r\nimport reduce from 'lodash/reduce';\r\nimport common from './common';\r\nimport commonTranslation from '../translations/common';\r\nimport reviewImages from '../translations/reviewImages';\r\nimport customFeesLordgun from '../translations/customFees.lordgun';\r\nimport customFeesRunkd from '../translations/customFees.runkd';\r\nimport customFeesInwild from '../translations/customFees.inwild';\r\nimport cartStep1 from '../translations/cartStep1';\r\nimport cartStep2Lordgun from '../translations/cartStep2.lordgun';\r\nimport cartStep2Inwild from '../translations/cartStep2.inwild';\r\nimport cartStep2Runkd from '../translations/cartStep2.runkd';\r\nimport reassortmentNotification from '../translations/reassortmentNotification';\r\nimport paymentInfo from '../translations/paymentInfo';\r\nimport nicknameValidator from '../translations/nicknameValidator';\r\nimport disbursementSimulator from '../translations/disbursementSimulator';\r\nimport cookieConsentLordgun from '../translations/cookieConsent.lordgun';\r\nimport cookieConsentRunkd from '../translations/cookieConsent.runkd';\r\nimport cookieConsentInwild from '../translations/cookieConsent.inwild';\r\nimport socialLinks from '../translations/socialLinks';\r\nimport blog from '../translations/blog/blog';\r\nimport productCard from '../translations/productCard';\r\nimport recentlyViewedProducts from '../translations/product/recentlyViewedProducts';\r\nimport productDetail from '../translations/product/detail';\r\nimport carousel from '../translations/carousel';\r\nimport topBrands from '../translations/brands/topBrands';\r\nimport cartRightSummary from '../translations/cartRightSummary';\r\nimport topBlogPosts from '../translations/blog/topBlogPosts';\r\nimport serviceLinks from '../translations/serviceLinks';\r\nimport reviews from '../translations/reviews/reviews';\r\nimport questions from '../translations/questionAndAnswers/questions';\r\nimport feedbacks from '../translations/feedbacks/feedbacks';\r\nimport bannerRedirectLordgun from '../translations/bannerRedirect.lordgun';\r\nimport bannerRedirectRunkd from '../translations/bannerRedirect.runkd';\r\nimport bannerRedirectInwild from '../translations/bannerRedirect.inwild';\r\nimport form from '../translations/form/form';\r\nimport home from '../translations/home/homeTranslations';\r\nimport orders from '../translations/orders/orders';\r\nimport returns from '../translations/returns/returns';\r\nimport search from '../translations/search';\r\nimport newsletter from '../translations/newsletter';\r\nimport lowerPrice from '../translations/product/lowerPrice';\r\n\r\nconst configHelper = require('../config/index.js');\r\n\r\nlet initialized = false;\r\nconst commonTranslations = [\r\n { reviewImages },\r\n { common: commonTranslation },\r\n { cartStep1 },\r\n { reassortmentNotification },\r\n { nicknameValidator },\r\n { disbursementSimulator },\r\n { paymentInfo },\r\n { socialLinks },\r\n { blog },\r\n { productCard },\r\n { recentlyViewedProducts },\r\n { carousel },\r\n { topBrands },\r\n { cartRightSummary },\r\n { topBlogPosts },\r\n { serviceLinks },\r\n { productDetail },\r\n { reviews },\r\n { questions },\r\n { feedbacks },\r\n { form },\r\n { home },\r\n { orders },\r\n { returns },\r\n { search },\r\n { newsletter },\r\n { lowerPrice },\r\n];\r\nconst translationsForLordgun = commonTranslations.concat([\r\n { customFees: customFeesLordgun },\r\n { cookieConsent: cookieConsentLordgun },\r\n { bannerRedirect: bannerRedirectLordgun },\r\n { cartStep2: cartStep2Lordgun },\r\n]);\r\nconst translationsForRunkd = commonTranslations.concat([\r\n { customFees: customFeesRunkd },\r\n { cookieConsent: cookieConsentRunkd },\r\n { bannerRedirect: bannerRedirectRunkd },\r\n { cartStep2: cartStep2Runkd },\r\n]);\r\nconst translationsForInwild = commonTranslations.concat([\r\n { customFees: customFeesInwild },\r\n { cookieConsent: cookieConsentInwild },\r\n { bannerRedirect: bannerRedirectInwild },\r\n { cartStep2: cartStep2Inwild },\r\n]);\r\nlet translations;\r\n\r\nswitch (common.getSite()) {\r\n case 'lordgun':\r\n translations = translationsForLordgun;\r\n break;\r\n case 'runkd':\r\n translations = translationsForRunkd;\r\n break;\r\n case 'inwild':\r\n translations = translationsForInwild;\r\n break;\r\n}\r\n\r\nconst getMappedTranslation = (culture, translations) => {\r\n const mappedTranslation = reduce(\r\n translations,\r\n (acc, translation) => {\r\n let key = keys(translation)[0];\r\n acc[key] = translation[key][culture];\r\n return acc;\r\n },\r\n {}\r\n );\r\n return mappedTranslation;\r\n};\r\n\r\nconst init = () => {\r\n if (initialized === false) {\r\n let staticResources = reduce(\r\n configHelper.getConfig().supportedCultures(),\r\n (acc, culture) => {\r\n acc[culture] = {\r\n translation: getMappedTranslation(culture, translations),\r\n };\r\n return acc;\r\n },\r\n {}\r\n );\r\n i18next.init({\r\n lng: common.getLang(),\r\n resources: staticResources,\r\n });\r\n initialized = true;\r\n }\r\n return initialized;\r\n};\r\n\r\nexport default {\r\n get: (key) => {\r\n if (init()) {\r\n const translation = i18next.t(key);\r\n return translation;\r\n }\r\n throw new Error('translateService not initialized');\r\n },\r\n interpolate: (key, params) => {\r\n if (init()) {\r\n let translation = i18next.t(key);\r\n translation = _.reduce(\r\n _.keys(params),\r\n (acc, paramKey) => {\r\n acc = _.replace(\r\n acc,\r\n `{${paramKey}}`,\r\n `${params[paramKey]}`\r\n );\r\n return acc;\r\n },\r\n translation\r\n );\r\n return translation;\r\n }\r\n throw new Error('translateService not initialized');\r\n },\r\n};\r\n","import React, { useEffect } from 'react';\r\nimport { Fancybox as NativeFancybox } from '@fancyapps/ui/dist/fancybox.esm.js';\r\nimport '@fancyapps/ui/dist/fancybox.css';\r\n\r\nfunction ProductFullScreenHandler(props) {\r\n const delegate = props.delegate || '[data-fancybox]';\r\n\r\n useEffect(() => {\r\n const opts = props.options || {};\r\n\r\n NativeFancybox.bind(delegate, opts);\r\n NativeFancybox.show(props.items, opts);\r\n\r\n return () => {\r\n NativeFancybox.destroy();\r\n };\r\n }, []);\r\n\r\n return <>;\r\n}\r\n\r\nexport default ProductFullScreenHandler;\r\n","import { isNil } from 'lodash';\r\nimport React from 'react';\r\nimport './ReviewStars.scss';\r\n\r\nconst ReviewStars = (props) => {\r\n const stars = [];\r\n\r\n for (let i = 0; i < props.maxRating; i++) {\r\n stars.push(\r\n \r\n ★\r\n \r\n );\r\n }\r\n\r\n return (\r\n <>\r\n {!isNil(props.count) && {`(${props.count}) `}}\r\n {stars}\r\n \r\n );\r\n};\r\n\r\nexport default ReviewStars;\r\n","module.exports = {\r\n debug: true,\r\n realtime: {\r\n tokenUrl: 'http://localhost/JSport.RealtimeServiceWeb/api/Token',\r\n paymentHubUrl: 'http://localhost/JSport.RealtimeServiceWeb/paymenthub',\r\n username: 'Admin',\r\n password: 'SignalR2020',\r\n },\r\n useCdn: false,\r\n cdnImagesUrl: 'https://d26ztvr3v93474.cloudfront.net',\r\n cdnImagesFallbackUrl: 'https://sync.inwild.com:4433',\r\n cdnCmsAssetsUrl: 'https://d19sv9e4y8qwzh.cloudfront.net',\r\n supportedCultures: () => [\r\n 'it-IT',\r\n 'es-ES',\r\n 'fr-FR',\r\n 'en-GB',\r\n 'en-US',\r\n 'de-DE',\r\n ],\r\n cms: {\r\n cmsUrl: 'http://localhost:1339',\r\n },\r\n tracingUrl:\r\n 'https://6f569c242a3a4173b354adf56020c011@o245932.ingest.sentry.io/5905368',\r\n};\r\n","module.exports = {\r\n debug: true,\r\n realtime: {\r\n tokenUrl: 'http://localhost/JSport.RealtimeServiceWeb/api/Token',\r\n paymentHubUrl: 'http://localhost/JSport.RealtimeServiceWeb/paymenthub',\r\n username: 'Admin',\r\n password: 'SignalR2020',\r\n },\r\n useCdn: false,\r\n cdnImagesUrl: 'https://d3n8mmvj9ns1ml.cloudfront.net',\r\n cdnImagesFallbackUrl: 'https://sync.lordgunbicycles.com:4433',\r\n cdnCmsAssetsUrl: 'https://d2umopxfu128sk.cloudfront.net',\r\n supportedCultures: () => [\r\n 'it-IT',\r\n 'es-ES',\r\n 'fr-FR',\r\n 'en-GB',\r\n 'en-US',\r\n 'de-DE',\r\n 'en-AU',\r\n 'ko-KR',\r\n ],\r\n cms: {\r\n cmsUrl: 'http://localhost:1337',\r\n },\r\n tracingUrl:\r\n 'https://6f569c242a3a4173b354adf56020c011@o245932.ingest.sentry.io/5905368',\r\n};\r\n","module.exports = {\r\n debug: false,\r\n realtime: {\r\n tokenUrl: 'https://api.inwild.com/realtime/api/Token',\r\n paymentHubUrl: 'https://api.inwild.com/realtime/paymenthub',\r\n username: 'Admin',\r\n password: 'SignalR2020',\r\n },\r\n useCdn: true,\r\n cdnImagesUrl: 'https://d26ztvr3v93474.cloudfront.net',\r\n cdnImagesFallbackUrl: 'https://sync.inwild.com:4433',\r\n cdnCmsAssetsUrl: 'https://d19sv9e4y8qwzh.cloudfront.net',\r\n supportedCultures: () => [\r\n 'it-IT',\r\n 'es-ES',\r\n 'fr-FR',\r\n 'en-GB',\r\n 'en-US',\r\n 'de-DE',\r\n ],\r\n cms: {\r\n cmsUrl: 'https://news.inwild.com',\r\n },\r\n tracingUrl:\r\n 'https://6f569c242a3a4173b354adf56020c011@o245932.ingest.sentry.io/5905368',\r\n};\r\n","module.exports = {\r\n debug: false,\r\n realtime: {\r\n tokenUrl: 'https://api.lordgunbicycles.com/realtime/api/Token',\r\n paymentHubUrl: 'https://api.lordgunbicycles.com/realtime/paymenthub',\r\n username: 'Admin',\r\n password: 'SignalR2020',\r\n },\r\n useCdn: true,\r\n cdnImagesUrl: 'https://d3n8mmvj9ns1ml.cloudfront.net',\r\n cdnImagesFallbackUrl: 'https://sync.lordgunbicycles.com:4433',\r\n cdnCmsAssetsUrl: 'https://d2umopxfu128sk.cloudfront.net',\r\n supportedCultures: () => [\r\n 'it-IT',\r\n 'es-ES',\r\n 'fr-FR',\r\n 'en-GB',\r\n 'en-US',\r\n 'de-DE',\r\n 'en-AU',\r\n 'ko-KR',\r\n ],\r\n cms: {\r\n cmsUrl: 'https://news.lordgun.com',\r\n },\r\n tracingUrl:\r\n 'https://6f569c242a3a4173b354adf56020c011@o245932.ingest.sentry.io/5905368',\r\n};\r\n","module.exports = {\r\n debug: false,\r\n realtime: {\r\n tokenUrl: 'https://api.runkd.com/realtime/api/Token',\r\n paymentHubUrl: 'https://api.runkd.com/realtime/paymenthub',\r\n username: 'Admin',\r\n password: 'SignalR2020',\r\n },\r\n useCdn: true,\r\n cdnImagesUrl: 'https://dufrl78eaxiu3.cloudfront.net',\r\n cdnImagesFallbackUrl: 'https://sync.runkd.com:4433',\r\n cdnCmsAssetsUrl: 'https://d218t1pkbrmetd.cloudfront.net',\r\n supportedCultures: () => [\r\n 'it-IT',\r\n 'es-ES',\r\n 'fr-FR',\r\n 'en-GB',\r\n 'en-US',\r\n 'de-DE',\r\n ],\r\n cms: {\r\n cmsUrl: 'https://news.runkd.com',\r\n },\r\n tracingUrl:\r\n 'https://6f569c242a3a4173b354adf56020c011@o245932.ingest.sentry.io/5905368',\r\n};\r\n","module.exports = {\r\n debug: true,\r\n realtime: {\r\n tokenUrl: 'http://localhost/JSport.RealtimeServiceWeb/api/Token',\r\n paymentHubUrl: 'http://localhost/JSport.RealtimeServiceWeb/paymenthub',\r\n username: 'Admin',\r\n password: 'SignalR2020',\r\n },\r\n useCdn: false,\r\n cdnImagesUrl: 'https://dufrl78eaxiu3.cloudfront.net',\r\n cdnImagesFallbackUrl: 'https://sync.runkd.com:4433',\r\n cdnCmsAssetsUrl: 'https://d218t1pkbrmetd.cloudfront.net',\r\n supportedCultures: () => [\r\n 'it-IT',\r\n 'es-ES',\r\n 'fr-FR',\r\n 'en-GB',\r\n 'en-US',\r\n 'de-DE',\r\n ],\r\n cms: {\r\n cmsUrl: 'http://localhost:1338',\r\n },\r\n tracingUrl:\r\n 'https://6f569c242a3a4173b354adf56020c011@o245932.ingest.sentry.io/5905368',\r\n};\r\n","module.exports = {\r\n debug: true,\r\n realtime: {\r\n tokenUrl: 'https://staging.lordgunbicycles.com/inwild/webapi/realtime/api/Token',\r\n paymentHubUrl: 'https://staging.lordgunbicycles.com/inwild/webapi/realtime/paymenthub',\r\n username: 'Admin',\r\n password: 'SignalR2020',\r\n },\r\n useCdn: false,\r\n cdnImagesUrl: 'https://d26ztvr3v93474.cloudfront.net',\r\n cdnImagesFallbackUrl: 'https://sync.inwild.com:4433',\r\n cdnCmsAssetsUrl: 'https://d19sv9e4y8qwzh.cloudfront.net',\r\n supportedCultures: () => [\r\n 'it-IT',\r\n 'es-ES',\r\n 'fr-FR',\r\n 'en-GB',\r\n 'en-US',\r\n 'de-DE',\r\n ],\r\n cms: {\r\n cmsUrl: 'https://lnxtest.lordgunbicycles.com',\r\n },\r\n tracingUrl:\r\n 'https://6f569c242a3a4173b354adf56020c011@o245932.ingest.sentry.io/5905368',\r\n};\r\n","module.exports = {\r\n debug: true,\r\n realtime: {\r\n tokenUrl: 'https://staging.lordgunbicycles.com/webapi/realtime/api/Token',\r\n paymentHubUrl: 'https://staging.lordgunbicycles.com/webapi/realtime/paymenthub',\r\n username: 'Admin',\r\n password: 'SignalR2020',\r\n },\r\n useCdn: false,\r\n cdnImagesUrl: 'https://d3n8mmvj9ns1ml.cloudfront.net',\r\n cdnImagesFallbackUrl: 'https://sync.lordgunbicycles.com:4433',\r\n cdnCmsAssetsUrl: 'https://d2umopxfu128sk.cloudfront.net',\r\n supportedCultures: () => [\r\n 'it-IT',\r\n 'es-ES',\r\n 'fr-FR',\r\n 'en-GB',\r\n 'en-US',\r\n 'de-DE',\r\n 'en-AU',\r\n 'ko-KR',\r\n ],\r\n cms: {\r\n cmsUrl: 'https://lnxtest.lordgunbicycles.com',\r\n },\r\n tracingUrl:\r\n 'https://6f569c242a3a4173b354adf56020c011@o245932.ingest.sentry.io/5905368',\r\n};\r\n","module.exports = {\r\n debug: true,\r\n realtime: {\r\n tokenUrl: 'https://staging.lordgunbicycles.com/runkd/webapi/realtime/api/Token',\r\n paymentHubUrl: 'https://staging.lordgunbicycles.com/runkd/webapi/realtime/paymenthub',\r\n username: 'Admin',\r\n password: 'SignalR2020',\r\n },\r\n useCdn: false,\r\n cdnImagesUrl: 'https://dufrl78eaxiu3.cloudfront.net',\r\n cdnImagesFallbackUrl: 'https://sync.runkd.com:4433',\r\n cdnCmsAssetsUrl: 'https://d218t1pkbrmetd.cloudfront.net',\r\n supportedCultures: () => [\r\n 'it-IT',\r\n 'es-ES',\r\n 'fr-FR',\r\n 'en-GB',\r\n 'en-US',\r\n 'de-DE',\r\n ],\r\n cms: {\r\n cmsUrl: 'https://lnxtest.lordgunbicycles.com',\r\n },\r\n tracingUrl:\r\n 'https://6f569c242a3a4173b354adf56020c011@o245932.ingest.sentry.io/5905368',\r\n};\r\n","const config_lordgun = require('./config');\r\nconst config_staging_lordgun = require('./config.staging');\r\nconst config_production_lordgun = require('./config.production');\r\n// RUNKD\r\nconst config_runkd = require('./config.runkd');\r\nconst config_staging_runkd = require('./config.staging.runkd');\r\nconst config_production_runkd = require('./config.production.runkd');\r\n// INWILD\r\nconst config_inwild = require('./config.inwild');\r\nconst config_staging_inwild = require('./config.staging.inwild');\r\nconst config_production_inwild = require('./config.production.inwild');\r\n\r\nconst config = {\r\n lordgun: {\r\n development: config_lordgun,\r\n staging: config_staging_lordgun,\r\n production: config_production_lordgun,\r\n },\r\n runkd: {\r\n development: config_runkd,\r\n staging: config_staging_runkd,\r\n production: config_production_runkd,\r\n },\r\n inwild: {\r\n development: config_inwild,\r\n staging: config_staging_inwild,\r\n production: config_production_inwild,\r\n },\r\n};\r\n\r\nconst isEnvironmentSet =\r\n NODE_ENV !== null && NODE_ENV !== undefined && NODE_ENV !== '';\r\n\r\nlet environment = isEnvironmentSet\r\n ? NODE_ENV.toLowerCase().trim()\r\n : 'production';\r\n\r\nlet configObj = {\r\n getConfig: () => config[SITE.toLowerCase()][environment],\r\n};\r\n\r\nmodule.exports = configObj;\r\n","var Globalize = require('globalize');\r\n\r\nconst getLangMapping = () => {\r\n var lang = document.getElementsByTagName('html')[0].getAttribute('lang');\r\n switch (lang.toLowerCase()) {\r\n case 'it':\r\n case 'it-it':\r\n return 'it';\r\n case 'fr':\r\n case 'fr-fr':\r\n return 'fr';\r\n case 'es':\r\n case 'es-es':\r\n return 'es';\r\n case 'de':\r\n case 'de-de':\r\n return 'de';\r\n case 'en-gb':\r\n return 'en-GB';\r\n case 'ko':\r\n case 'ko-kr':\r\n return 'ko';\r\n default:\r\n return 'en';\r\n }\r\n};\r\n\r\nconst init = () => {\r\n var langMapped = getLangMapping();\r\n if (langMapped === 'it') {\r\n Globalize.load(\r\n require('cldr-data/main/it/ca-gregorian'),\r\n // require(\"cldr-data/main/it/currencies\"),\r\n require('cldr-data/main/it/dateFields'),\r\n require('cldr-data/main/it/numbers'),\r\n require('cldr-data/main/it/timeZoneNames'),\r\n require('cldr-data/main/it/units')\r\n );\r\n } else if (langMapped === 'fr') {\r\n Globalize.load(\r\n require('cldr-data/main/fr/ca-gregorian'),\r\n // require(\"cldr-data/main/fr/currencies\"),\r\n require('cldr-data/main/fr/dateFields'),\r\n require('cldr-data/main/fr/numbers'),\r\n require('cldr-data/main/fr/timeZoneNames'),\r\n require('cldr-data/main/fr/units')\r\n );\r\n } else if (langMapped === 'es') {\r\n Globalize.load(\r\n require('cldr-data/main/es/ca-gregorian'),\r\n // require(\"cldr-data/main/es/currencies\"),\r\n require('cldr-data/main/es/dateFields'),\r\n require('cldr-data/main/es/numbers'),\r\n require('cldr-data/main/es/timeZoneNames'),\r\n require('cldr-data/main/es/units')\r\n );\r\n } else if (langMapped === 'de') {\r\n Globalize.load(\r\n require('cldr-data/main/de/ca-gregorian'),\r\n // require(\"cldr-data/main/de/currencies\"),\r\n require('cldr-data/main/de/dateFields'),\r\n require('cldr-data/main/de/numbers'),\r\n require('cldr-data/main/de/timeZoneNames'),\r\n require('cldr-data/main/de/units')\r\n );\r\n } else if (langMapped === 'en-GB') {\r\n Globalize.load(\r\n require('cldr-data/main/en-GB/ca-gregorian'),\r\n // require(\"cldr-data/main/en-GB/currencies\"),\r\n require('cldr-data/main/en-GB/dateFields'),\r\n require('cldr-data/main/en-GB/numbers'),\r\n require('cldr-data/main/en-GB/timeZoneNames'),\r\n require('cldr-data/main/en-GB/units')\r\n );\r\n } else if (langMapped === 'ko') {\r\n Globalize.load(\r\n require('cldr-data/main/ko/ca-gregorian'),\r\n // require(\"cldr-data/main/ko/currencies\"),\r\n require('cldr-data/main/ko/dateFields'),\r\n require('cldr-data/main/ko/numbers'),\r\n require('cldr-data/main/ko/timeZoneNames'),\r\n require('cldr-data/main/ko/units')\r\n );\r\n } else {\r\n Globalize.load(\r\n require('cldr-data/main/en/ca-gregorian'),\r\n // require(\"cldr-data/main/en/currencies\"),\r\n require('cldr-data/main/en/dateFields'),\r\n require('cldr-data/main/en/numbers'),\r\n require('cldr-data/main/en/timeZoneNames'),\r\n require('cldr-data/main/en/units')\r\n );\r\n }\r\n\r\n Globalize.load(\r\n // require(\"cldr-data/supplemental/currencyData\"),\r\n require('cldr-data/supplemental/likelySubtags'),\r\n require('cldr-data/supplemental/metaZones'),\r\n // require(\"cldr-data/supplemental/plurals\"),\r\n require('cldr-data/supplemental/timeData'),\r\n require('cldr-data/supplemental/weekData')\r\n );\r\n\r\n Globalize.locale(langMapped);\r\n};\r\n\r\nconst parseDate = (value) => {\r\n return Globalize.parseDate(value, { skeleton: 'yMd' });\r\n};\r\n\r\nconst formatDateShort = (date) => {\r\n return Globalize.formatDate(new Date(date), { date: 'short' });\r\n};\r\n\r\nconst formatDateLong = (date) => {\r\n return Globalize.formatDate(new Date(date), { date: 'long' });\r\n};\r\n\r\nconst formatDateFull = (date) => {\r\n // \"The fields are from the Date Field Symbol Table in Date Format Patterns\"\r\n // Ref: http://www.unicode.org/reports/tr35/tr35-dates.html#availableFormats_appendItems\r\n // I.e., check for invalid characters.\r\n // /[^GyYuUrQqMLlwWEecdDFghHKkmsSAzZOvVXx]/\r\n return Globalize.formatDate(new Date(date), {\r\n skeleton: 'MMMMEEEEd',\r\n });\r\n};\r\n\r\nconst numberFormatterPercent = (\r\n number,\r\n maximumFractionDigits = 0,\r\n round = 'floor'\r\n) => {\r\n return Globalize.numberFormatter({\r\n style: 'percent',\r\n round: round,\r\n maximumFractionDigits: maximumFractionDigits,\r\n })(number / 100);\r\n};\r\n\r\nconst formatNumber = (number, fractionDigits = 2) => {\r\n return Globalize.formatNumber(number, {\r\n minimumFractionDigits: fractionDigits,\r\n maximumFractionDigits: fractionDigits,\r\n });\r\n};\r\n\r\nvar Globalizer = {\r\n getLangMapping,\r\n init,\r\n parseDate,\r\n formatDateShort,\r\n formatDateLong,\r\n formatDateFull,\r\n numberFormatterPercent,\r\n formatNumber,\r\n};\r\n\r\nexport default Globalizer;\r\n","import { forEach } from 'lodash';\r\n\r\nconst openDetails = (e, isMobile) => {\r\n const tab = e.currentTarget.parentElement;\r\n\r\n if (isMobile || tab.classList.contains('prd-tab-techspecs')) {\r\n if (tab.classList.contains('open')) {\r\n tab.classList.remove('open');\r\n } else {\r\n tab.classList.add('open');\r\n }\r\n }\r\n};\r\n\r\nconst openDestinationNotes = (e) => {\r\n const div = e.currentTarget.parentElement.querySelector(\r\n '.prd-destination-note'\r\n );\r\n\r\n if (div.classList.contains('open')) {\r\n div.classList.remove('open');\r\n } else {\r\n div.classList.add('open');\r\n }\r\n};\r\n\r\nconst scrollToReviews = (isMobile, reviewsRef) => {\r\n if (isMobile) reviewsRef.current.classList.add('open');\r\n reviewsRef.current.scrollIntoView({ behavior: 'smooth' });\r\n};\r\n\r\nconst scrollToSizeChart = (sizeChartRef) => {\r\n sizeChartRef.current.classList.add('open');\r\n sizeChartRef.current.scrollIntoView({ behavior: 'smooth' });\r\n};\r\n\r\nconst scrollToSection = (e) => {\r\n const index = Number(e.currentTarget.dataset.index);\r\n const items = document.querySelectorAll('.prd-tab');\r\n\r\n items[index].classList.add('open');\r\n items[index].scrollIntoView({ behavior: 'smooth' });\r\n};\r\n\r\nconst enterFullScreen = (flktyRef) => {\r\n if (flktyRef) {\r\n flktyRef.viewFullscreen();\r\n }\r\n};\r\n\r\nconst zoomFullscreen = (e, flktyRef) => {\r\n if (\r\n document\r\n .querySelector('.big.flickity-enabled')\r\n .classList.contains('is-fullscreen') ||\r\n flktyRef.element.classList.contains('review-img') ||\r\n flktyRef.element.classList.contains('qanda')\r\n ) {\r\n if (e.currentTarget.classList.contains('zoom')) {\r\n e.currentTarget.classList.remove('zoom');\r\n } else {\r\n e.currentTarget.classList.add('zoom');\r\n }\r\n }\r\n};\r\n\r\nconst showOverlay = (e, isMobile) => {\r\n const overlay = e.currentTarget.querySelector('div');\r\n overlay.classList.add('overlay');\r\n\r\n if (\r\n !isMobile &&\r\n e.currentTarget.classList.contains('carousel-large-cell')\r\n ) {\r\n const img = e.currentTarget.querySelector('img');\r\n img.classList.add('hovered');\r\n }\r\n};\r\n\r\nconst hideOverlay = (e, isMobile) => {\r\n const overlay = e.currentTarget.querySelector('div');\r\n overlay.classList.remove('overlay');\r\n\r\n if (\r\n !isMobile &&\r\n e.currentTarget.classList.contains('carousel-large-cell')\r\n ) {\r\n const img = e.currentTarget.querySelector('img');\r\n img.classList.remove('hovered');\r\n }\r\n};\r\n\r\nconst toggleNextElementVisibility = (e) => {\r\n const element = e.currentTarget.nextElementSibling;\r\n\r\n if (element.classList.contains('open')) {\r\n element.classList.remove('open');\r\n } else {\r\n element.classList.add('open');\r\n }\r\n};\r\n\r\nconst handleAbuseTypeChange = (e, reportAbuseFormRef) => {\r\n e.preventDefault();\r\n const radioButtons = reportAbuseFormRef.current.querySelectorAll(\r\n 'input[type=\"radio\"]'\r\n );\r\n\r\n forEach(radioButtons, (r) => {\r\n r.removeAttribute('checked');\r\n });\r\n e.currentTarget.setAttribute('checked', '');\r\n};\r\n\r\nexport {\r\n openDetails,\r\n openDestinationNotes,\r\n scrollToReviews,\r\n scrollToSizeChart,\r\n scrollToSection,\r\n zoomFullscreen,\r\n showOverlay,\r\n hideOverlay,\r\n toggleNextElementVisibility,\r\n enterFullScreen,\r\n handleAbuseTypeChange,\r\n};\r\n","import { get, post } from '../../common/httpService';\r\n\r\nconst getQAndA = (slug, pageSize = 5, page = 0, sortType = 2) => {\r\n return get({\r\n url: `QuestionAndAnswers/QuestionsAndAnswersJson?productSlug=${slug}&page=${page}&pageSize=${pageSize}&t=${sortType}`,\r\n });\r\n};\r\n\r\nconst reportQuestionAbuse = (questionId, slug, type) => {\r\n return post({\r\n url: `QuestionAndAnswers/UserReportQuestionAbuse/${questionId}?ProductSlug=${slug}`,\r\n body: type,\r\n });\r\n};\r\n\r\nconst userVoteYes = (questionId, answerId, slug) => {\r\n return post({\r\n url: `QuestionAndAnswers/UserVoteYes/${questionId}?AnswerId=${answerId}`,\r\n body: slug,\r\n });\r\n};\r\n\r\nconst userVoteNo = (questionId, answerId, slug) => {\r\n return post({\r\n url: `QuestionAndAnswers/UserVoteNo/${questionId}?AnswerId=${answerId}`,\r\n body: slug,\r\n });\r\n};\r\n\r\nconst reportAnswerAbuse = (questionId, answerId, slug, type) => {\r\n return post({\r\n url: `QuestionAndAnswers/UserReportAnswerAbuse/${questionId}?AnswerId=${answerId}&ProductSlug=${slug}`,\r\n body: type,\r\n });\r\n};\r\n\r\nexport {\r\n getQAndA,\r\n reportQuestionAbuse,\r\n userVoteYes,\r\n userVoteNo,\r\n reportAnswerAbuse,\r\n};\r\n","import { get, post } from '../../common/httpService';\r\n\r\nconst getReviews = (slug, pageSize = 5, page = 0, sortType = 2) => {\r\n return get({\r\n url: `Review/ReviewsJson?productSlug=${slug}&page=${page}&pageSize=${pageSize}&t=${sortType}`,\r\n });\r\n};\r\n\r\nconst userVoteYes = (id, slug) => {\r\n return post({\r\n url: `Review/UserVoteYes/${id}`,\r\n body: slug,\r\n });\r\n};\r\n\r\nconst userVoteNo = (id, slug) => {\r\n return post({\r\n url: `Review/UserVoteNo/${id}`,\r\n body: slug,\r\n });\r\n};\r\n\r\nconst reportAbuse = (id, slug, type) => {\r\n return post({\r\n url: `Review/UserReportAbuse/${id}?ProductSlug=${slug}`,\r\n body: type,\r\n });\r\n};\r\n\r\nexport { getReviews, userVoteYes, userVoteNo, reportAbuse };\r\n","export default {\r\n optionUnavailable: 'optionUnavailable',\r\n preorder: 'preorder',\r\n comingSoon: 'comingSoon',\r\n booking: 'booking',\r\n discontinued: 'discontinued',\r\n unavailable: 'unavailable',\r\n oneAvailable: 'oneAvailable',\r\n available: 'available',\r\n discontinued: 'discontinued',\r\n qtyDiscontinued: 'qtyDiscontinued',\r\n qtyUnavailable: 'qtyUnavailable',\r\n soonAvailable: 'soonAvailable',\r\n};\r\n","import React from 'react';\r\nimport { decode } from 'html-entities';\r\nimport {\r\n filter,\r\n find,\r\n findIndex,\r\n forEach,\r\n includes,\r\n isEmpty,\r\n isNil,\r\n reduce,\r\n some,\r\n split,\r\n} from 'lodash';\r\nimport { get, post } from '../../common/httpService';\r\nimport translateService from '../../common/translateService';\r\nimport productsAvailabilityStatus from '../../components/modules/products/productsAvailabilityStatus';\r\n\r\nconst getOriginalDescription = async (url) => {\r\n return get({ url: `Product/Description?${url}` });\r\n};\r\n\r\nconst addToCart = (slug, quantitySelected, options, isKit) => {\r\n return post({\r\n url: isKit ? `Cart/AddKitToCart` : `Cart/AddProductToCart`,\r\n body: {\r\n slug: slug,\r\n quantity: quantitySelected,\r\n groupAndOptionIds: options,\r\n },\r\n });\r\n};\r\n\r\nconst addReassNotification = (slug, quantitySelected, options, isKit) => {\r\n return post({\r\n url: isKit\r\n ? `ReassortmentNotification/AddKit`\r\n : `ReassortmentNotification/AddProduct`,\r\n body: {\r\n slug: slug,\r\n quantity: quantitySelected,\r\n groupAndOptionIds: options,\r\n },\r\n });\r\n};\r\n\r\nconst getTabsNumber = (data, enableNews) => {\r\n return (\r\n // reviews + q&a\r\n 2 +\r\n (data.description ? 1 : 0) +\r\n (data.techSpecs && data.techSpecs.length > 0 ? 1 : 0) +\r\n (data.technologies ? 1 : 0) +\r\n (data.brandsGuides ? 1 : 0)\r\n // +\r\n // (enableNews === 'True' ? 1 : 0)\r\n );\r\n};\r\n\r\nconst getColorSelectedFromQueryString = () => {\r\n const queryStringPairs = split(window.location.search.slice(1), '&');\r\n const colorPair = find(queryStringPairs, (pair) => includes(pair, 'color='));\r\n const colorValue = split(colorPair, 'color=')[1]\r\n ? decodeURIComponent(split(colorPair, 'color=')[1])\r\n : null;\r\n\r\n return colorValue;\r\n};\r\n\r\nconst getOptionSelectedFromQueryString = () => {\r\n const queryStringPairs = split(window.location.search.slice(1), '&');\r\n const optionPair = find(queryStringPairs, (pair) =>\r\n includes(pair, 'option='),\r\n );\r\n const optionValue = split(optionPair, 'option=')[1]\r\n ? decodeURI(split(optionPair, 'option=')[1])\r\n : null;\r\n\r\n return optionValue;\r\n};\r\n\r\nconst findOption = (options, optionId) => {\r\n if (isNil(optionId)) return null;\r\n\r\n return find(options, (o) => Number(o.sourceId) === Number(optionId));\r\n};\r\n\r\nconst findColorFromOption = (foundOption, colorAttributeName) => {\r\n if (isNil(foundOption) || isNil(colorAttributeName)) {\r\n return null;\r\n }\r\n\r\n return !isNil(foundOption.attributes) && !isEmpty(foundOption.attributes)\r\n ? foundOption.attributes[colorAttributeName]\r\n : null;\r\n};\r\n\r\nconst getPreselectionAndModals = (\r\n attributes,\r\n isKit,\r\n foundOption,\r\n colorFromQueryString,\r\n) => {\r\n let attr = {},\r\n modals = {};\r\n\r\n if (!isKit) {\r\n if (!isNil(foundOption)) {\r\n const optionAttributes = foundOption.attributes;\r\n\r\n forEach(optionAttributes, (val, key) => {\r\n attr[key] = val;\r\n modals[key] = false;\r\n });\r\n\r\n return [attr, modals];\r\n }\r\n }\r\n\r\n forEach(attributes, (attribute) => {\r\n const foundColor = find(\r\n attribute.values,\r\n (v) => decode(v.value) === decode(colorFromQueryString),\r\n );\r\n\r\n attr[attribute.fieldId] =\r\n attribute.values === null\r\n ? isKit\r\n ? String(attribute.kitOptionId)\r\n : null\r\n : attribute.values.length === 1\r\n ? attribute.values[0].value\r\n : foundColor\r\n ? foundColor.value\r\n : null;\r\n modals[attribute.fieldId] = false;\r\n });\r\n\r\n return [attr, modals];\r\n};\r\n\r\nconst getFilteredOptions = (isKit, selection, array, attrName, attrValue) => {\r\n if (isKit) {\r\n return find(array, (item) => {\r\n return decode(item.attributes[attrName]) === decode(String(attrValue));\r\n });\r\n }\r\n\r\n let filteredArray = array;\r\n\r\n forEach(selection, (value, key) => {\r\n filteredArray =\r\n key === attrName\r\n ? filter(filteredArray, (item) => {\r\n return decode(item.attributes[key]) === decode(attrValue);\r\n })\r\n : value\r\n ? filter(filteredArray, (item) => {\r\n return decode(item.attributes[key]) === decode(value);\r\n })\r\n : filteredArray;\r\n });\r\n\r\n return filteredArray;\r\n};\r\n\r\nconst getOptionSelected = (isKit, selection, array) => {\r\n if (isKit) {\r\n const optionsArray = [];\r\n\r\n if (some(selection, (value) => value === null)) return [];\r\n\r\n forEach(selection, (value, key) => {\r\n const found = find(\r\n array,\r\n (item) => decode(item.attributes[key]) === decode(value),\r\n );\r\n\r\n if (!isNil(found)) {\r\n optionsArray.push(found);\r\n }\r\n });\r\n\r\n return optionsArray;\r\n }\r\n\r\n const foundElements = getFilteredOptions(isKit, selection, array);\r\n\r\n return foundElements.length === 1\r\n ? foundElements[0]\r\n : foundElements.length === 0\r\n ? undefined\r\n : null;\r\n};\r\n\r\nconst getQtyAvailable = (isKit, selection, array, attrName, attrValue) => {\r\n let q = 0;\r\n\r\n const found = getFilteredOptions(\r\n isKit,\r\n selection,\r\n array,\r\n attrName,\r\n attrValue,\r\n );\r\n\r\n if (isKit) {\r\n if (isNil(found)) return 0;\r\n return !found.isBooking ? found.quantityKit : 0;\r\n }\r\n\r\n forEach(found, (f) => {\r\n if (!f.isBooking) {\r\n q += f.quantity ? f.quantity : 0;\r\n }\r\n });\r\n\r\n return q;\r\n};\r\n\r\nconst getKitQtyAvailable = (options) => {\r\n if (isNil(options) || isEmpty(options)) return 0;\r\n\r\n const kitUniqueProducts = [];\r\n\r\n forEach(options, (opt) => {\r\n let uniqueProductIndex = findIndex(\r\n kitUniqueProducts,\r\n (p) => p.sourceId === opt.sourceId,\r\n );\r\n if (uniqueProductIndex === -1) {\r\n kitUniqueProducts.push({\r\n sourceId: opt.sourceId,\r\n quantityKit: opt.quantityKit,\r\n qtyNeeded: opt.quantityNeeded,\r\n });\r\n } else {\r\n kitUniqueProducts[uniqueProductIndex].qtyNeeded += opt.quantityNeeded;\r\n }\r\n });\r\n\r\n const minAvailable = reduce(\r\n kitUniqueProducts,\r\n (prev, curr) => {\r\n return Math.floor(prev.quantityKit / prev.qtyNeeded) >\r\n Math.floor(curr.quantityKit / curr.qtyNeeded)\r\n ? curr\r\n : prev;\r\n },\r\n { quantityKit: 10000, qtyNeeded: 1 },\r\n );\r\n\r\n return minAvailable\r\n ? Math.floor(minAvailable.quantityKit / minAvailable.qtyNeeded)\r\n : 0;\r\n};\r\n\r\nconst isAvailable = (\r\n isKit,\r\n selection,\r\n array,\r\n attrName,\r\n attrValue,\r\n qtySelected,\r\n) => {\r\n if (isKit) {\r\n const option = getFilteredOptions(\r\n isKit,\r\n selection,\r\n array,\r\n attrName,\r\n attrValue,\r\n );\r\n\r\n return option.quantityKit >= qtySelected || option.bookingOverstock;\r\n }\r\n\r\n const filteredArray = getFilteredOptions(\r\n isKit,\r\n selection,\r\n array,\r\n attrName,\r\n attrValue,\r\n );\r\n\r\n return filteredArray.some(\r\n (element) => element.quantity >= qtySelected || element.bookingOverstock,\r\n );\r\n};\r\n\r\nconst isDiscontinued = (options, isKit) => {\r\n return isKit\r\n ? some(options, (o) => o.discontinued)\r\n : options\r\n ? options.discontinued\r\n : false;\r\n};\r\n\r\nconst isComingSoon = (val, attrName, options, selection, isKit) => {\r\n const found = getFilteredOptions(isKit, selection, options, attrName, val);\r\n\r\n if (isKit) {\r\n if (!isNil(found)) {\r\n return found.isComingSoon;\r\n }\r\n return false;\r\n }\r\n\r\n let comingSoon = false;\r\n\r\n forEach(found, (f) => {\r\n comingSoon = comingSoon || f.isComingSoon;\r\n });\r\n\r\n return comingSoon;\r\n};\r\n\r\nconst isPreorder = (val, attrName, options, selection, isKit) => {\r\n const found = getFilteredOptions(isKit, selection, options, attrName, val);\r\n\r\n if (isKit) {\r\n if (!isNil(found)) {\r\n return found.isPreOrder;\r\n }\r\n return false;\r\n }\r\n\r\n let preorder = false;\r\n\r\n forEach(found, (f) => {\r\n preorder = preorder || f.isPreOrder;\r\n });\r\n\r\n return preorder;\r\n};\r\n\r\nconst isBooking = (val, attrName, options, selection, isKit) => {\r\n const found = getFilteredOptions(isKit, selection, options, attrName, val);\r\n\r\n if (isKit) {\r\n if (!isNil(found)) {\r\n return found.isBooking;\r\n }\r\n return false;\r\n }\r\n\r\n let booking = false;\r\n\r\n forEach(found, (f) => {\r\n booking = booking || f.isBooking;\r\n });\r\n\r\n return booking;\r\n};\r\n\r\nconst isSoonAvailable = (val, attrName, options, selection, isKit) => {\r\n const found = getFilteredOptions(isKit, selection, options, attrName, val);\r\n\r\n if (isKit) {\r\n if (!isNil(found)) {\r\n return (\r\n (found.isBooking || found.bookingOverstock) &&\r\n found.bookingOrderDays <= 10\r\n );\r\n }\r\n return false;\r\n }\r\n\r\n let soonAvailable = false;\r\n\r\n forEach(found, (f) => {\r\n soonAvailable =\r\n soonAvailable ||\r\n ((f.isBooking || f.bookingOverstock) && f.bookingOrderDays <= 10);\r\n });\r\n\r\n return soonAvailable;\r\n};\r\n\r\nconst isBookingOverstock = (options, attrName, attrVal, selection, isKit) => {\r\n const found = getFilteredOptions(\r\n isKit,\r\n selection,\r\n options,\r\n attrName,\r\n attrVal,\r\n );\r\n\r\n if (isKit) {\r\n if (!isNil(found)) {\r\n return found.bookingOverstock;\r\n }\r\n return false;\r\n }\r\n\r\n let bookingOverstock = false;\r\n\r\n forEach(found, (f) => {\r\n bookingOverstock = bookingOverstock || f.bookingOverstock;\r\n });\r\n\r\n return bookingOverstock;\r\n};\r\n\r\nconst getAvailability = (option) => {\r\n if (option === null) return '';\r\n if (option === undefined) return productsAvailabilityStatus.optionUnavailable;\r\n if (option.isPreOrder) return productsAvailabilityStatus.preorder;\r\n if (option.isComingSoon) return productsAvailabilityStatus.comingSoon;\r\n if (option.isBooking)\r\n return option.bookingOrderDays > 10\r\n ? productsAvailabilityStatus.booking\r\n : productsAvailabilityStatus.soonAvailable;\r\n if (option.discontinued) return productsAvailabilityStatus.discontinued;\r\n if (option.quantity === 0) {\r\n if (option.bookingOverstock)\r\n return option.bookingOrderDays > 10\r\n ? productsAvailabilityStatus.booking\r\n : productsAvailabilityStatus.soonAvailable;\r\n\r\n return productsAvailabilityStatus.unavailable;\r\n }\r\n if (option.quantity === 1) return productsAvailabilityStatus.oneAvailable;\r\n return productsAvailabilityStatus.available;\r\n};\r\n\r\nconst handleBookingOverStock = (options, qtySelected) => {\r\n const bookingOverstockOptions = filter(options, (o) => o.bookingOverstock);\r\n const unavailableQtyBookingOverstockOptions = filter(\r\n bookingOverstockOptions,\r\n (o) => o.quantityKit < qtySelected,\r\n );\r\n\r\n // caso 1:\r\n // le opzioni con booking overstock sono disponibili:\r\n // la qta zero deriva dalle altre -> non disponibile.\r\n if (\r\n isNil(unavailableQtyBookingOverstockOptions) ||\r\n isEmpty(unavailableQtyBookingOverstockOptions)\r\n )\r\n return productsAvailabilityStatus.unavailable;\r\n\r\n const unavailableOptions = filter(\r\n options,\r\n (o) => !o.bookingOverstock && o.quantityKit < qtySelected,\r\n );\r\n\r\n // caso 2:\r\n // ho opzioni non disponibili senza booking overstock\r\n // -> non disponibile\r\n if (!isNil(unavailableOptions) && !isEmpty(unavailableOptions))\r\n return productsAvailabilityStatus.unavailable;\r\n\r\n // caso 3:\r\n // le uniche opzioni non disponibili sono quelle con booking overstock:\r\n // -> booking\r\n return productsAvailabilityStatus.booking;\r\n};\r\n\r\nconst getKitAvailabilityStatus = (qtyAvailable, options, qtySelected) => {\r\n if (isEmpty(options)) return '';\r\n let status = {},\r\n discontinued = [],\r\n days = 0;\r\n\r\n forEach(options, (o) => {\r\n status.isPreOrder = status.isPreOrder || o.isPreOrder;\r\n status.isComingSoon = status.isComingSoon || o.isComingSoon;\r\n status.isBooking = status.isBooking || o.isBooking;\r\n status.discontinued = status.discontinued || o.discontinued;\r\n days = Math.max(days, o.bookingOrderDays);\r\n\r\n if (o.discontinued) {\r\n discontinued.push(o);\r\n }\r\n });\r\n\r\n if (status.discontinued) {\r\n const minAvailable = getKitQtyAvailable(discontinued);\r\n if (qtySelected > minAvailable) {\r\n return minAvailable === 0\r\n ? productsAvailabilityStatus.discontinued\r\n : productsAvailabilityStatus.qtyDiscontinued;\r\n }\r\n }\r\n if (qtyAvailable < qtySelected && some(options, (o) => o.bookingOverstock))\r\n return handleBookingOverStock(options, qtySelected);\r\n\r\n if (qtyAvailable === 0) return productsAvailabilityStatus.unavailable;\r\n if (status.isComingSoon) return productsAvailabilityStatus.comingSoon;\r\n if (status.isPreOrder) return productsAvailabilityStatus.preorder;\r\n if (status.isBooking)\r\n return days > 10\r\n ? productsAvailabilityStatus.booking\r\n : productsAvailabilityStatus.soonAvailable;\r\n\r\n return qtySelected <= qtyAvailable\r\n ? qtyAvailable === 1\r\n ? productsAvailabilityStatus.oneAvailable\r\n : productsAvailabilityStatus.available\r\n : productsAvailabilityStatus.qtyUnavailable;\r\n};\r\n\r\nconst getAvailabilityStatus = (qtyAvailable, option, qtySelected) => {\r\n const availabilityStatus = getAvailability(option);\r\n if (\r\n availabilityStatus === '' ||\r\n availabilityStatus === productsAvailabilityStatus.comingSoon ||\r\n availabilityStatus === productsAvailabilityStatus.booking ||\r\n availabilityStatus === productsAvailabilityStatus.optionUnavailable ||\r\n availabilityStatus === productsAvailabilityStatus.unavailable ||\r\n availabilityStatus === productsAvailabilityStatus.soonAvailable\r\n )\r\n return availabilityStatus;\r\n\r\n if (availabilityStatus === productsAvailabilityStatus.preorder) {\r\n if (option.discontinued) {\r\n return qtySelected > qtyAvailable\r\n ? qtyAvailable === 0\r\n ? productsAvailabilityStatus.discontinued\r\n : productsAvailabilityStatus.qtyDiscontinued\r\n : availabilityStatus;\r\n }\r\n return qtySelected <= qtyAvailable\r\n ? availabilityStatus\r\n : productsAvailabilityStatus.qtyUnavailable;\r\n }\r\n\r\n if (availabilityStatus === productsAvailabilityStatus.discontinued) {\r\n return qtySelected > qtyAvailable\r\n ? qtyAvailable === 0\r\n ? availabilityStatus\r\n : productsAvailabilityStatus.qtyDiscontinued\r\n : qtyAvailable === 1\r\n ? productsAvailabilityStatus.oneAvailable\r\n : productsAvailabilityStatus.available;\r\n }\r\n\r\n if (qtySelected <= qtyAvailable) {\r\n return qtyAvailable === 1\r\n ? productsAvailabilityStatus.oneAvailable\r\n : productsAvailabilityStatus.available;\r\n }\r\n\r\n return option.bookingOverstock\r\n ? option.bookingOrderDays > 10\r\n ? productsAvailabilityStatus.booking\r\n : productsAvailabilityStatus.soonAvailable\r\n : productsAvailabilityStatus.qtyUnavailable;\r\n};\r\n\r\nconst getBookingDays = (option, isKit) => {\r\n if (isKit && !isEmpty(option)) {\r\n const found = filter(option, (o) => o.isBooking || o.bookingOverstock);\r\n\r\n const days = reduce(\r\n found,\r\n (curr, next) => {\r\n return Math.max(curr, next.bookingOrderDays);\r\n },\r\n 0,\r\n );\r\n\r\n return isNil(days) ? '' : days;\r\n }\r\n\r\n return isNil(option) || isEmpty(option) ? '' : option.bookingOrderDays;\r\n};\r\n\r\nconst getPreorderDate = (option, isKit) => {\r\n if (isKit && !isEmpty(option)) {\r\n const found = find(option, (o) => o.isPreOrder);\r\n\r\n return found ? found.preOrderArrivalDate : '';\r\n }\r\n\r\n return isNil(option) || isEmpty(option) ? '' : option.preOrderArrivalDate;\r\n};\r\n\r\nconst getComingSoonDate = (option, isKit) => {\r\n if (isKit && !isEmpty(option)) {\r\n const found = find(option, (o) => o.isComingSoon);\r\n\r\n return found ? found.comingSoonArrivalDate : '';\r\n }\r\n\r\n return isNil(option) || isEmpty(option) ? '' : option.comingSoonArrivalDate;\r\n};\r\n\r\nconst getSelectedAttributes = (selection) => {\r\n let s = '';\r\n\r\n forEach(selection, (value) => {\r\n if (!isNil(value)) {\r\n s += value;\r\n s += ', ';\r\n }\r\n });\r\n\r\n s = s.slice(0, s.length - 2);\r\n // s += '.';\r\n\r\n return s;\r\n};\r\n\r\nconst isFastShipping = (minutesToTodayShipping) => {\r\n return minutesToTodayShipping > 0;\r\n};\r\n\r\nconst getDeliveryMessage = (now) => {\r\n return get({\r\n url: `product/DeliveryMessage?localTime=${now.toISOString()}&utcOffset=${now.getTimezoneOffset()}`,\r\n });\r\n};\r\n\r\nconst getFastShippingMessage = (h, m) => {\r\n const hours = h === 1 ? 'hour' : 'hours';\r\n const minutes = m === 1 ? 'minute' : 'minutes';\r\n\r\n return translateService.interpolate(\r\n h === 0\r\n ? `productDetail.fastShippingMM`\r\n : m === 0\r\n ? `productDetail.fastShippingHH`\r\n : `productDetail.fastShippingHHMM`,\r\n {\r\n hh: `${h} ${translateService.get(`productDetail.time.${hours}`)}`,\r\n mm: `${m} ${translateService.get(`productDetail.time.${minutes}`)}`,\r\n },\r\n );\r\n};\r\n\r\nconst getPriceGroup = (priceObj, qtySelected) => {\r\n let g = null;\r\n\r\n for (let i = 0; i < 4; i++) {\r\n if (qtySelected >= priceObj[`price${i}QtaMin`]) {\r\n if (priceObj[`price${i}QtaMax`] <= 0) {\r\n g = i;\r\n break;\r\n }\r\n\r\n if (qtySelected <= priceObj[`price${i}QtaMax`]) {\r\n g = i;\r\n break;\r\n }\r\n }\r\n }\r\n return g;\r\n};\r\n\r\nconst getPrice = (isKit, options, basePrice, qtySelected) => {\r\n if (\r\n isNil(qtySelected) ||\r\n qtySelected < 1 ||\r\n isNil(options) ||\r\n isEmpty(options)\r\n )\r\n return undefined;\r\n\r\n if (isKit) {\r\n if (isNil(basePrice)) return undefined;\r\n const g = getPriceGroup(basePrice, qtySelected);\r\n let p = basePrice[`price${g}`];\r\n\r\n forEach(options, (o) => {\r\n p += o.priceVariation;\r\n });\r\n\r\n return p;\r\n }\r\n\r\n const g = getPriceGroup(options.price, qtySelected);\r\n return options.price[`price${g}`];\r\n};\r\n\r\nconst getProductsBySlugs = async (products) => {\r\n const res = await post({\r\n url: `ProductBrowse/GetProductsBySlugsWithColor`,\r\n body: products.slice(0, 30),\r\n });\r\n return reduce(\r\n res,\r\n (acc, p) => {\r\n let prd = find(products, (item) => includes(item.slug, p.slug));\r\n if (\r\n !isNil(prd) &&\r\n !isNil(prd.alternativeImage) &&\r\n !isEmpty(prd.alternativeImage)\r\n ) {\r\n p.imageSrc = prd.alternativeImage;\r\n }\r\n acc.push(p);\r\n return acc;\r\n },\r\n [],\r\n );\r\n};\r\n\r\nconst _getAvailabilityText = (\r\n qtyAvailable,\r\n qtySelected,\r\n isBooking,\r\n bookingOverstock,\r\n comingSoon,\r\n preorder,\r\n) => {\r\n if (qtyAvailable === 0 || qtyAvailable < qtySelected) {\r\n if (bookingOverstock | isBooking)\r\n return translateService.get(`productDetail.availability.booking`);\r\n if (comingSoon)\r\n return translateService.get(`productDetail.availability.comingSoon`);\r\n if (preorder)\r\n return translateService.get(`productDetail.availability.preorder`);\r\n return translateService.get(`productDetail.availability.unavailable`);\r\n }\r\n\r\n if (qtyAvailable >= qtySelected) {\r\n if (qtyAvailable === 1)\r\n return translateService.get(`productDetail.availability.oneAvailable`);\r\n if (qtyAvailable > 1)\r\n return translateService.get(`productDetail.availability.available`);\r\n }\r\n\r\n if (isBooking)\r\n return translateService.get(`productDetail.availability.booking`);\r\n\r\n return '';\r\n};\r\n\r\nconst _getCssClassAvailability = (\r\n qtyAvailable,\r\n qtySelected,\r\n isBooking,\r\n bookingOverstock,\r\n soonAvailable,\r\n preorder,\r\n) => {\r\n if (qtyAvailable === 0 || qtyAvailable < qtySelected) {\r\n if (bookingOverstock | isBooking)\r\n return soonAvailable ? 'available' : 'booking';\r\n\r\n if (preorder) return 'available';\r\n return 'unavailable';\r\n }\r\n if (qtyAvailable >= 1 || qtyAvailable >= qtySelected) return 'available';\r\n\r\n if (isBooking) return soonAvailable ? 'available' : 'booking';\r\n\r\n return '';\r\n};\r\n\r\nconst getAvailabilityLabel = (\r\n isKit,\r\n selection,\r\n options,\r\n attrName,\r\n attrValue,\r\n qtySelected,\r\n) => {\r\n const qtyAvailable = getQtyAvailable(\r\n isKit,\r\n selection,\r\n options,\r\n attrName,\r\n attrValue,\r\n );\r\n\r\n const booking = isBooking(attrValue, attrName, options, selection, isKit);\r\n const soonAvailable = isSoonAvailable(\r\n attrValue,\r\n attrName,\r\n options,\r\n selection,\r\n isKit,\r\n );\r\n const bookingOverstock = isBookingOverstock(\r\n options,\r\n attrName,\r\n attrValue,\r\n selection,\r\n isKit,\r\n );\r\n const comingSoon = isComingSoon(\r\n attrValue,\r\n attrName,\r\n options,\r\n selection,\r\n isKit,\r\n );\r\n const preorder = isPreorder(attrValue, attrName, options, selection, isKit);\r\n\r\n const t = _getAvailabilityText(\r\n qtyAvailable,\r\n qtySelected,\r\n booking,\r\n bookingOverstock,\r\n comingSoon,\r\n preorder,\r\n );\r\n return (\r\n \r\n {t}\r\n \r\n );\r\n};\r\n\r\nconst getAvailabilityCssClass = (\r\n isKit,\r\n selection,\r\n options,\r\n attrName,\r\n attrValue,\r\n qtySelected,\r\n) => {\r\n const qtyAvailable = getQtyAvailable(\r\n isKit,\r\n selection,\r\n options,\r\n attrName,\r\n attrValue,\r\n );\r\n\r\n const booking = isBooking(attrValue, attrName, options, selection, isKit);\r\n const soonAvailable = isSoonAvailable(\r\n attrValue,\r\n attrName,\r\n options,\r\n selection,\r\n isKit,\r\n );\r\n const bookingOverstock = isBookingOverstock(\r\n options,\r\n attrName,\r\n attrValue,\r\n selection,\r\n isKit,\r\n );\r\n const preorder = isPreorder(attrValue, attrName, options, selection, isKit);\r\n\r\n return _getCssClassAvailability(\r\n qtyAvailable,\r\n qtySelected,\r\n booking,\r\n bookingOverstock,\r\n soonAvailable,\r\n preorder,\r\n );\r\n};\r\n\r\nexport {\r\n getOriginalDescription,\r\n addToCart,\r\n addReassNotification,\r\n getTabsNumber,\r\n getColorSelectedFromQueryString,\r\n getOptionSelectedFromQueryString,\r\n findOption,\r\n findColorFromOption,\r\n getPreselectionAndModals,\r\n getFilteredOptions,\r\n getOptionSelected,\r\n getQtyAvailable,\r\n getKitQtyAvailable,\r\n isAvailable,\r\n isDiscontinued,\r\n isComingSoon,\r\n isPreorder,\r\n isBooking,\r\n isSoonAvailable,\r\n isBookingOverstock,\r\n getAvailability,\r\n handleBookingOverStock,\r\n getKitAvailabilityStatus,\r\n getAvailabilityStatus,\r\n getBookingDays,\r\n getPreorderDate,\r\n getComingSoonDate,\r\n getSelectedAttributes,\r\n isFastShipping,\r\n getDeliveryMessage,\r\n getFastShippingMessage,\r\n getPriceGroup,\r\n getPrice,\r\n getProductsBySlugs,\r\n getAvailabilityLabel,\r\n getAvailabilityCssClass,\r\n};\r\n","import { isArray, reduce, filter } from 'lodash';\r\n\r\nconst DEFAULT_EXPIRATION = 60000 * 60 * 5; // 5h\r\n\r\nconst isKeyExpired = ({ dataByKey, expirationMillis }) =>\r\n dataByKey.timestamp + expirationMillis < new Date().getTime();\r\n\r\nconst purgeExpired = (key, expirationMillis = DEFAULT_EXPIRATION) => {\r\n const values = localStorage.getItem(key);\r\n const dataByKey = JSON.parse(values);\r\n if (isArray(dataByKey)) {\r\n const result = reduce(\r\n dataByKey,\r\n (acc, element, index) => {\r\n const expired = isKeyExpired({ dataByKey: element, expirationMillis });\r\n if (!expired) {\r\n acc.push(element);\r\n }\r\n return acc;\r\n },\r\n []\r\n );\r\n if (result.length === 0) {\r\n localStorage.removeItem(key);\r\n } else {\r\n localStorage.setItem(key, JSON.stringify(result));\r\n }\r\n }\r\n};\r\n\r\nconst init = (key) => {\r\n purgeExpired(key);\r\n};\r\n\r\nconst add = ({ key, data }) => {\r\n const existing = get({ key });\r\n if (existing !== undefined) {\r\n if (isArray(existing)) {\r\n var object = { ...data, timestamp: new Date().getTime() };\r\n existing.push(object);\r\n localStorage.setItem(key, JSON.stringify(existing));\r\n }\r\n } else {\r\n localStorage.setItem(\r\n key,\r\n JSON.stringify([{ ...data, timestamp: new Date().getTime() }])\r\n );\r\n }\r\n};\r\n\r\nconst get = ({ key }) => {\r\n purgeExpired(key);\r\n var item = localStorage.getItem(key);\r\n return item != null ? JSON.parse(item) : undefined;\r\n};\r\n\r\nconst remove = ({ key, keyName, valueToRemove }) => {\r\n const existing = get({ key });\r\n if (existing !== undefined) {\r\n if (isArray(existing)) {\r\n const newItems = filter(existing, (data) => {\r\n return data[keyName] !== valueToRemove;\r\n });\r\n localStorage.setItem(key, JSON.stringify(newItems));\r\n }\r\n }\r\n};\r\n\r\nexport default {\r\n init,\r\n set: ({ key, data }) => {\r\n var object = { data, timestamp: new Date().getTime() };\r\n localStorage.setItem(key, JSON.stringify(object));\r\n },\r\n add,\r\n get,\r\n remove,\r\n};\r\n","import expirationStorageService from '../../common/expirationStorageService';\r\nimport common from '../../common/common';\r\nimport _ from 'lodash';\r\n\r\nconst add = (absoluteUrl) => {\r\n const RECENTLY_VIEWED_PRODUCTS = 'RECENTLY_VIEWED_PRODUCTS_' + SITE;\r\n expirationStorageService.init(RECENTLY_VIEWED_PRODUCTS);\r\n\r\n const siteUrl = common.getSiteUrl();\r\n const unescapedUrl = unescape(absoluteUrl.replace(siteUrl + '/', ''));\r\n\r\n const storedData = expirationStorageService.get({\r\n key: RECENTLY_VIEWED_PRODUCTS,\r\n });\r\n const visitedProducts = storedData === undefined ? [] : storedData;\r\n\r\n if (_.some(visitedProducts, (vp) => vp.url === unescapedUrl)) {\r\n expirationStorageService.remove({\r\n key: RECENTLY_VIEWED_PRODUCTS,\r\n keyName: 'url',\r\n valueToRemove: unescapedUrl,\r\n });\r\n }\r\n expirationStorageService.add({\r\n key: RECENTLY_VIEWED_PRODUCTS,\r\n data: { url: unescapedUrl },\r\n });\r\n};\r\n\r\nexport default { add };\r\n","import * as Sentry from '@sentry/browser';\r\nimport { JL } from 'jsnlog';\r\nimport { Integrations } from '@sentry/tracing';\r\nimport common from './common/common';\r\nconst configHelper = require('./config/index');\r\n\r\nconst initTracing = () => {\r\n const site = common.getSite();\r\n if (configHelper.getConfig().debug === false) {\r\n Sentry.init({\r\n dsn: configHelper.getConfig().tracingUrl,\r\n integrations: [new Integrations.BrowserTracing()],\r\n\r\n // Set tracesSampleRate to 1.0 to capture 100%\r\n // of transactions for performance monitoring.\r\n // We recommend adjusting this value in production\r\n tracesSampleRate: NODE_ENV.toLowerCase() === 'development' ? 1.0 : 0.5,\r\n environment: NODE_ENV,\r\n });\r\n Sentry.setTag('SITE', site);\r\n Sentry.setTag('getSiteUrl', common.getSiteUrl());\r\n Sentry.setTag('lang', common.getLang());\r\n Sentry.setTag('isTouch', common.isTouch());\r\n Sentry.setTag('isDesktop', common.isDesktop());\r\n }\r\n};\r\nlet initializedLoggers = [];\r\nconst _initJsNlog = ({ loggerName }) => {\r\n if (initializedLoggers.indexOf(loggerName) === -1) {\r\n const defaultLoggingUrl = window.$pathBase + 'jsnlog.logger';\r\n var appender = JL.createAjaxAppender('mycustomappender.' + loggerName);\r\n var consoleAppender = JL.createConsoleAppender(\r\n 'consoleAppender.' + loggerName\r\n );\r\n appender.setOptions({\r\n bufferSize: 80,\r\n maxBatchSize: 80,\r\n url: defaultLoggingUrl,\r\n });\r\n JL.setOptions({\r\n defaultAjaxUrl: defaultLoggingUrl,\r\n });\r\n JL(loggerName).setOptions({\r\n appenders: [appender, consoleAppender],\r\n });\r\n if (typeof window !== 'undefined') {\r\n let _oldOnErrorHandler = window.onerror || null;\r\n window.onerror = function (msg, url, line, column, error) {\r\n let sourceUrl =\r\n window && window.location && window.location.href\r\n ? `${url} window.location.href: ${window.location.href}`\r\n : url;\r\n JL('onerrorLogger').fatalException(\r\n {\r\n msg: 'Uncaught Exception',\r\n errorMsg: `onerror: ${msg}`,\r\n url: sourceUrl,\r\n 'line number': line,\r\n column: column,\r\n },\r\n error\r\n );\r\n if (_oldOnErrorHandler) {\r\n // eslint-disable-next-line prefer-rest-params\r\n return _oldOnErrorHandler.apply(this, arguments);\r\n }\r\n return false;\r\n };\r\n let _oldOnUnhandledRejectionHandler =\r\n window.onunhandledrejection || null;\r\n window.onunhandledrejection = function (event) {\r\n // How to test this handler: window.setTimeout(function() {throw new Error('abc')}, 0);\r\n let sourceUrl =\r\n window && window.location && window.location.href\r\n ? ` window.location.href: ${window.location.href}`\r\n : '';\r\n let reasonMessage =\r\n event.reason && event.reason.message\r\n ? event.reason.message\r\n : '';\r\n JL('onerrorLogger').fatal(\r\n `Reason message: ${reasonMessage} SourceUrl: ${sourceUrl}`\r\n );\r\n JL('onerrorLogger').fatalException(\r\n {\r\n msg: 'unhandledrejection',\r\n errorMsg: `onunhandledrejection: ${reasonMessage} SourceUrl: ${sourceUrl}`,\r\n },\r\n event.reason\r\n );\r\n if (_oldOnUnhandledRejectionHandler) {\r\n // eslint-disable-next-line prefer-rest-params\r\n return _oldOnUnhandledRejectionHandler.apply(\r\n this,\r\n arguments\r\n );\r\n }\r\n return false;\r\n };\r\n }\r\n initializedLoggers.push(loggerName);\r\n }\r\n};\r\nconst logDebug = function (...args) {\r\n _initJsNlog({ loggerName: 'jsnlogfile' });\r\n JL('jsnlogfile').debug(args);\r\n};\r\nconst logInfo = function (...args) {\r\n _initJsNlog({ loggerName: 'jsnlogfile' });\r\n JL('jsnlogfile').info(args);\r\n};\r\nconst logEvent = function (...args) {\r\n _initJsNlog({ loggerName: 'jsnlogfile' });\r\n _initJsNlog({ loggerName: 'jsnlogeventfile' });\r\n JL('jsnlogeventfile').debug(args);\r\n JL('jsnlogfile').debug(args);\r\n};\r\nconst logWarn = function (...args) {\r\n console.warn(args);\r\n _initJsNlog({ loggerName: 'jsnlogfile' });\r\n JL('jsnlogfile').warn(args);\r\n};\r\nconst logError = function (...args) {\r\n console.error(args);\r\n _initJsNlog({ loggerName: 'jsnlogfile' });\r\n JL('jsnlogfile').error(args);\r\n};\r\nexport { initTracing, logDebug, logInfo, logWarn, logError, logEvent };\r\n","import { logError } from '../tracing';\r\nconst _defaultCookieConsent = {\r\n name: 'cookiesConsent',\r\n exists: false,\r\n firstParty: false,\r\n thirdParty: false,\r\n marketingParty: false,\r\n showBanner: true,\r\n expirationDays: 180, // 6 mesi\r\n};\r\n\r\nconst getDefaultCookieConsentValues = () => _defaultCookieConsent;\r\n\r\nconst _getCookieConsent = () => {\r\n const name = _defaultCookieConsent.name;\r\n return decodeURIComponent(\r\n document.cookie.replace(\r\n new RegExp(\r\n '(?:(?:^|.*;)\\\\s*' +\r\n encodeURIComponent(name).replace(/[\\-\\.\\+\\*]/g, '\\\\$&') +\r\n '\\\\s*\\\\=\\\\s*([^;]*).*$)|^.*$'\r\n ),\r\n '$1'\r\n )\r\n );\r\n};\r\n\r\nconst existsCookieConsent = () => _getCookieConsent() || null;\r\n\r\nconst _removeCookies = (cookieNames) => {\r\n //Works only for cookie without \"httponly\" attribute\r\n if (!cookieNames || cookieNames.length === 0) return;\r\n for (var i = 0; i < cookieNames.length; i++) {\r\n var cookie = cookieNames[i];\r\n if (existsCookieConsent(cookie.name))\r\n document.cookie = btoa(\r\n `${encodeURIComponent(\r\n cookie.name\r\n )}=; expires=Thu, 01 Jan 1970 00:00:00 GMT${\r\n cookie.domain ? '; domain=' + cookie.domain : ''\r\n }; path=/`\r\n );\r\n }\r\n};\r\n\r\nconst removeCookieConsent = () =>\r\n _removeCookies([{ name: _defaultCookieConsent.name }]);\r\n\r\nconst cookiesEnabled = () => {\r\n //navigator.cookieEnabled proved to be not reliable at all\r\n return (\r\n 'cookie' in document &&\r\n (document.cookie.length > 0 ||\r\n (document.cookie = 'test').indexOf.call(document.cookie, 'test') >\r\n -1)\r\n );\r\n};\r\n\r\nconst _setCookieConsent = ({\r\n name,\r\n showBanner,\r\n firstParty,\r\n thirdParty,\r\n marketingParty,\r\n}) => {\r\n /*jshint validthis:true */\r\n const cookieName =\r\n !name || /^(?:expires|max\\-age|path|domain|secure)$/i.test(name)\r\n ? _defaultCookieConsent.name\r\n : name;\r\n\r\n var expires = '';\r\n var date = new Date();\r\n date.setTime(\r\n date.getTime() +\r\n _defaultCookieConsent.expirationDays * 24 * 60 * 60 * 1000\r\n );\r\n expires = '; expires=' + date.toUTCString();\r\n\r\n // NOTA: properties pascalCase per deserializzazione lato server!!\r\n var value = JSON.stringify({\r\n FirstParty: firstParty, // NOTA: properties pascalCase per deserializzazione lato server!!\r\n ThirdParty: thirdParty, // NOTA: properties pascalCase per deserializzazione lato server!!\r\n MarketingParty: marketingParty, // NOTA: properties pascalCase per deserializzazione lato server!!\r\n ShowBanner: showBanner, // NOTA: properties pascalCase per deserializzazione lato server!!\r\n });\r\n document.cookie =\r\n `${encodeURIComponent(cookieName)}=` +\r\n btoa(`${value}`) +\r\n `${expires}; path=/`;\r\n return true;\r\n};\r\n\r\nconst acceptAllAndDontShowBanner = () =>\r\n _setCookieConsent({\r\n showBanner: false,\r\n firstParty: true,\r\n thirdParty: true,\r\n marketingParty: true,\r\n });\r\n\r\nconst getDecodedCookieConsentValues = () => {\r\n try {\r\n const cookie = _getCookieConsent();\r\n var asciiVal = atob(cookie);\r\n let values = JSON.parse(asciiVal);\r\n return values;\r\n } catch (error) {\r\n console.error(\r\n 'getDecodedCookieValues: Cannot decode or parse cookie ',\r\n error\r\n );\r\n return null;\r\n }\r\n};\r\n\r\nconst setCookieConsent = ({\r\n showBanner,\r\n firstParty,\r\n thirdParty,\r\n marketingParty,\r\n}) => _setCookieConsent({ showBanner, firstParty, thirdParty, marketingParty });\r\n\r\nconst getMarketingParty = () => {\r\n const cookieConsentValues = getDecodedCookieConsentValues();\r\n let partyConsent =\r\n cookieConsentValues === null ||\r\n cookieConsentValues === undefined ||\r\n cookieConsentValues.MarketingParty === null ||\r\n cookieConsentValues.MarketingParty === undefined\r\n ? false\r\n : cookieConsentValues.MarketingParty === true;\r\n return partyConsent;\r\n};\r\n\r\nconst getThirdParty = () => {\r\n const cookieConsentValues = getDecodedCookieConsentValues();\r\n let partyConsent =\r\n cookieConsentValues === null ||\r\n cookieConsentValues === undefined ||\r\n cookieConsentValues.ThirdParty === null ||\r\n cookieConsentValues.ThirdParty === undefined\r\n ? false\r\n : cookieConsentValues.ThirdParty === true;\r\n return partyConsent;\r\n};\r\n\r\nconst _getCookie = function (cname) {\r\n let name = cname + '=';\r\n let decodedCookie = decodeURIComponent(document.cookie);\r\n let ca = decodedCookie.split(';');\r\n for (let i = 0; i < ca.length; i++) {\r\n let c = ca[i];\r\n while (c.charAt(0) == ' ') {\r\n c = c.substring(1);\r\n }\r\n if (c.indexOf(name) == 0) {\r\n return c.substring(name.length, c.length);\r\n }\r\n }\r\n return '';\r\n};\r\n\r\nconst getUserProfileOptions = () => {\r\n const userProfileCookieKey = 'userProfile';\r\n try {\r\n const cookie = _getCookie(userProfileCookieKey);\r\n if (cookie) {\r\n const parsedCookie = JSON.parse(atob(cookie));\r\n return {\r\n countryCode: parsedCookie.CountryCode,\r\n currencyCode: parsedCookie.CurrencyCode,\r\n name: parsedCookie.Name,\r\n };\r\n }\r\n throw new Error(\r\n `Cookie ${userProfileCookieKey} not found, falling back to defaults`\r\n );\r\n } catch (error) {\r\n logError(`Error decoding cookie ${userProfileCookieKey}`, error);\r\n return {\r\n countryCode: 'ITA',\r\n currencyCode: 'EUR',\r\n name: userProfileCookieKey,\r\n };\r\n }\r\n};\r\n\r\nexport default {\r\n getDefaultCookieConsentValues,\r\n removeCookieConsent,\r\n existsCookieConsent,\r\n cookiesEnabled,\r\n acceptAllAndDontShowBanner,\r\n getDecodedCookieConsentValues,\r\n setCookieConsent,\r\n getMarketingParty,\r\n getThirdParty,\r\n getUserProfileOptions,\r\n};\r\n","import {\r\n logDebug,\r\n logInfo,\r\n logWarn,\r\n logError,\r\n logEvent,\r\n} from '../../tracing.js';\r\n\r\nconst validateGoogleData = (prop, defaultValue) => {\r\n if (!window.googleData) {\r\n throw new Error('window.googleData is not defined');\r\n }\r\n if (\r\n window.googleData[prop] === null ||\r\n window.googleData[prop] === undefined\r\n ) {\r\n if (defaultValue !== undefined) {\r\n logWarn(\r\n `${prop} is not defined on window.googleData. Falling back ${defaultValue}`\r\n );\r\n return defaultValue;\r\n } else {\r\n throw new Error(`${prop} is not defined on window.googleData`);\r\n }\r\n }\r\n logDebug(\r\n `Google data prop found. Retrieving prop ${prop} with value ${window.googleData[prop]}`\r\n );\r\n return window.googleData[prop];\r\n};\r\nconst validateEcommerceData = (prop, defaultValue) => {\r\n if (!window.ecommerceData) {\r\n throw new Error('window.ecommerceData is not defined');\r\n }\r\n if (\r\n window.ecommerceData[prop] === null ||\r\n window.ecommerceData[prop] === undefined\r\n ) {\r\n if (defaultValue !== undefined) {\r\n logWarn(\r\n `${prop} is not defined on window.ecommerceData. Falling back ${defaultValue}`\r\n );\r\n return defaultValue;\r\n } else {\r\n throw new Error(`${prop} is not defined on window.ecommerceData`);\r\n }\r\n }\r\n logDebug(\r\n `Ecommerce data prop found. Retrieving prop ${prop} with value ${window.ecommerceData[prop]}`\r\n );\r\n return window.ecommerceData[prop];\r\n};\r\n\r\nconst extractAdwordsConfiguration = () => {\r\n const adwordsConfiguration = validateGoogleData('adwordsConfiguration');\r\n const ads = JSON.parse(adwordsConfiguration.replace(/"/g, '\"'));\r\n return ads;\r\n};\r\nexport {\r\n validateGoogleData,\r\n extractAdwordsConfiguration,\r\n validateEcommerceData,\r\n};\r\n","// https://developers.google.com/analytics/devguides/collection/ga4/reference/events\r\nimport { logDebug, logWarn, logError, logEvent } from '../../tracing.js';\r\n\r\nimport {\r\n map,\r\n isArray,\r\n find,\r\n some,\r\n includes,\r\n forEach,\r\n isNil,\r\n isEmpty,\r\n} from 'lodash';\r\n\r\nimport { validateGoogleData } from '../data/dataPageService.js';\r\n\r\nconst _prefix = 'GA4';\r\nconst _validateGtag = () => {\r\n if (!window.gtag) {\r\n throw new Error('window.gtag is null or undefined');\r\n }\r\n};\r\n\r\nconst _setCategories = ({ itemObj, categories }) => {\r\n forEach(categories, (category, index) => {\r\n itemObj[`item_category${index === 0 ? '' : index}`] = category;\r\n });\r\n return itemObj;\r\n};\r\n\r\nconst _mapItems = (items) =>\r\n map(items, (item) => {\r\n const itemObj = {\r\n item_id: item.googleId,\r\n item_name: item.slug,\r\n };\r\n if (!isNil(item.quantity)) {\r\n itemObj.quantity = item.quantity;\r\n }\r\n if (!isNil(item.currency)) {\r\n itemObj.currency = item.currency;\r\n }\r\n if (!isNil(item.price)) {\r\n itemObj.price = item.price;\r\n }\r\n if (!isNil(item.disciplines)) {\r\n itemObj.disciplines = item.disciplines;\r\n }\r\n if (!isNil(item.brandName)) {\r\n itemObj.item_brand = item.brandName;\r\n }\r\n if (\r\n !isNil(item.categories) &&\r\n item.categories &&\r\n item.categories.length > 0\r\n ) {\r\n return _setCategories({ itemObj, categories: item.categories });\r\n }\r\n return itemObj;\r\n });\r\n\r\nconst beginCheckout = ({ currency, totaleuro, items }) => {\r\n _validateGtag();\r\n const analytics4MeasurementId = validateGoogleData(\r\n 'analytics4MeasurementId'\r\n );\r\n const analytics4MeasurementGlobalId = validateGoogleData(\r\n 'analytics4MeasurementGlobalId'\r\n );\r\n\r\n const obj = {\r\n send_to: [analytics4MeasurementId, analytics4MeasurementGlobalId],\r\n // transaction_id: cartId, // CREDO NON sia passabile, non è documentato e non mi pare registrare l'evento se lo aggiungo.\r\n currency,\r\n value: totaleuro,\r\n items: _mapItems(items),\r\n };\r\n logEvent(`${_prefix} begin_checkout`, obj);\r\n gtag('event', 'begin_checkout', obj);\r\n};\r\n\r\nconst purchase = ({ transaction_id, currency, value, shipping, items }) => {\r\n _validateGtag();\r\n const analytics4MeasurementId = validateGoogleData(\r\n 'analytics4MeasurementId'\r\n );\r\n const analytics4MeasurementGlobalId = validateGoogleData(\r\n 'analytics4MeasurementGlobalId'\r\n );\r\n\r\n let obj = {\r\n transaction_id,\r\n send_to: [analytics4MeasurementId, analytics4MeasurementGlobalId],\r\n currency,\r\n value,\r\n shipping,\r\n items: items.map((li) => ({\r\n item_id: li.googleId,\r\n item_name: li.slug,\r\n item_category:\r\n li.categories &&\r\n isArray(li.categories) &&\r\n li.categories.length > 0\r\n ? li.categories[0]\r\n : '',\r\n item_brand:\r\n isNil(li.brandName) || isEmpty(li.brandName)\r\n ? ''\r\n : li.brandName,\r\n price: li.price,\r\n quantity: li.quantity,\r\n })),\r\n };\r\n logEvent(`${_prefix} purchase`, obj);\r\n gtag('event', 'purchase', obj);\r\n};\r\n\r\nconst newsletterRegistration = ({ url, email }) => {\r\n _validateGtag();\r\n const analytics4MeasurementId = validateGoogleData(\r\n 'analytics4MeasurementId'\r\n );\r\n const analytics4MeasurementGlobalId = validateGoogleData(\r\n 'analytics4MeasurementGlobalId'\r\n );\r\n\r\n let obj = {\r\n send_to: [analytics4MeasurementId, analytics4MeasurementGlobalId],\r\n url: url === undefined ? window.location.href : url,\r\n email,\r\n };\r\n logEvent(`${_prefix} CompleteRegistration`, obj);\r\n gtag('event', 'CompleteRegistration', obj);\r\n};\r\n\r\nconst viewItem = ({ currency, value, items }) => {\r\n _validateGtag();\r\n const analytics4MeasurementId = validateGoogleData(\r\n 'analytics4MeasurementId'\r\n );\r\n const analytics4MeasurementGlobalId = validateGoogleData(\r\n 'analytics4MeasurementGlobalId'\r\n );\r\n\r\n const obj = {\r\n send_to: [analytics4MeasurementId, analytics4MeasurementGlobalId],\r\n\r\n currency,\r\n value,\r\n items: _mapItems(items),\r\n };\r\n\r\n logEvent(`${_prefix} view_item`, obj);\r\n gtag('event', 'view_item', obj);\r\n};\r\n\r\nconst searchItemsResults = ({ searchterm }) => {\r\n // NOTA: abbiamo disabilitato l'enhancement measure su GA4 (stream web)\r\n // al fine di evitare duplicazione di questi eventi.\r\n // Disabilitandolo, nei report ne risulta uno,\r\n // anche se comunque ne vengono sparati due (uno dal nostro codice e uno by default da Google)\r\n _validateGtag();\r\n const obj = {\r\n search_term: searchterm,\r\n };\r\n\r\n logEvent(`${_prefix} search`, obj);\r\n gtag('event', 'search', obj);\r\n};\r\n\r\nconst viewItemList = ({ items }) => {\r\n _validateGtag();\r\n const analytics4MeasurementId = validateGoogleData(\r\n 'analytics4MeasurementId'\r\n );\r\n const analytics4MeasurementGlobalId = validateGoogleData(\r\n 'analytics4MeasurementGlobalId'\r\n );\r\n\r\n const obj = {\r\n send_to: [analytics4MeasurementId, analytics4MeasurementGlobalId],\r\n items: _mapItems(items),\r\n };\r\n\r\n logEvent(`${_prefix} view_item_list`, obj);\r\n gtag('event', 'view_item_list', obj);\r\n};\r\n\r\nconst viewCart = ({ cartId, currency, totaleuro, items }) => {\r\n _validateGtag();\r\n const obj = {\r\n // transaction_id: cartId,\r\n currency,\r\n value: parseFloat(totaleuro),\r\n items: _mapItems(items),\r\n };\r\n\r\n logEvent(`${_prefix} view_cart`, obj);\r\n gtag('event', 'view_cart', obj);\r\n};\r\n\r\nconst addShippingInfo = ({ cartId, currency, value, items, shipping_tier }) => {\r\n _validateGtag();\r\n const obj = {\r\n // transaction_id: cartId, // NON SI PUO' METTERE o NON REGISTRA L'EVENTO\r\n currency,\r\n value: parseFloat(value),\r\n items: _mapItems(items),\r\n shipping_tier: shipping_tier,\r\n };\r\n logEvent(`${_prefix} add_shipping_info`, obj);\r\n gtag('event', 'add_shipping_info', obj);\r\n};\r\n\r\nconst addToCart = ({\r\n id,\r\n quantity,\r\n currency,\r\n price,\r\n items,\r\n disciplines,\r\n categories,\r\n brandName,\r\n}) => {\r\n _validateGtag();\r\n\r\n if (!some(items, (item) => item.googleId === id)) {\r\n logWarn(\r\n `Mismatch between serverside ids and current clientside id ${id} on add_to_cart. Serverside ids: ${map(\r\n items,\r\n (i) => i.googleId\r\n )}`\r\n );\r\n }\r\n const analytics4MeasurementId = validateGoogleData(\r\n 'analytics4MeasurementId'\r\n );\r\n const analytics4MeasurementGlobalId = validateGoogleData(\r\n 'analytics4MeasurementGlobalId'\r\n );\r\n const obj = {\r\n send_to: [analytics4MeasurementId, analytics4MeasurementGlobalId],\r\n currency,\r\n value: find(items, (item) => item.googleId === id).price,\r\n items: _mapItems([\r\n {\r\n googleId: id,\r\n slug: find(items, (item) => item.googleId === id).slug,\r\n quantity,\r\n currency,\r\n price: find(items, (item) => item.googleId === id).price,\r\n disciplines,\r\n brandName,\r\n categories,\r\n },\r\n ]),\r\n };\r\n\r\n logEvent(`${_prefix} add_to_cart`, obj);\r\n gtag('event', 'add_to_cart', obj);\r\n};\r\n\r\nconst addPaymentInfo = ({ currency, value, items, payment }) => {\r\n _validateGtag();\r\n const obj = {\r\n currency,\r\n value,\r\n payment_type: payment,\r\n items: _mapItems(items),\r\n };\r\n logEvent(`${_prefix} add_payment_info`, obj);\r\n gtag('event', 'add_payment_info', obj);\r\n};\r\n\r\nconst closePopUp = () => {\r\n _validateGtag();\r\n const analytics4MeasurementId = validateGoogleData(\r\n 'analytics4MeasurementId'\r\n );\r\n const analytics4MeasurementGlobalId = validateGoogleData(\r\n 'analytics4MeasurementGlobalId'\r\n );\r\n\r\n const obj = {\r\n send_to: [analytics4MeasurementId, analytics4MeasurementGlobalId],\r\n content_type: 'close pop up',\r\n };\r\n\r\n logEvent(`${_prefix} select_content`, obj);\r\n gtag('event', 'select_content', obj);\r\n};\r\n\r\nconst popUpButtonClick = () => {\r\n _validateGtag();\r\n const analytics4MeasurementId = validateGoogleData(\r\n 'analytics4MeasurementId'\r\n );\r\n const analytics4MeasurementGlobalId = validateGoogleData(\r\n 'analytics4MeasurementGlobalId'\r\n );\r\n\r\n const obj = {\r\n send_to: [analytics4MeasurementId, analytics4MeasurementGlobalId],\r\n content_type: 'pop up button click',\r\n };\r\n\r\n logEvent(`${_prefix} select_content`, obj);\r\n gtag('event', 'select_content', obj);\r\n};\r\n\r\nconst init = ({ debug }) => {\r\n // Analytics 4\r\n if (!window.dataLayer) {\r\n logDebug('window.dataLayer does not exist. Creating it as empty array');\r\n }\r\n window.dataLayer = window.dataLayer || [];\r\n logDebug('window.dataLayer set...');\r\n function gtag() {\r\n dataLayer.push(arguments);\r\n }\r\n window.gtag = gtag;\r\n _validateGtag();\r\n logDebug('window.gtag set...');\r\n gtag('js', new Date());\r\n};\r\nconst setConfigGoogleAnalytics4 = ({ debug }) => {\r\n _validateGtag();\r\n // Questo config in automatico, per default, setta send_page_view a true per GA4 (con dei parametri di default).\r\n const analytics4MeasurementId = validateGoogleData(\r\n 'analytics4MeasurementId'\r\n );\r\n\r\n const configAlreadySetAnalytics4MeasurementId = some(\r\n dataLayer,\r\n (d) => includes(d, 'config') && includes(d, analytics4MeasurementId)\r\n );\r\n if (!configAlreadySetAnalytics4MeasurementId) {\r\n if (debug === true) {\r\n gtag('config', analytics4MeasurementId, {\r\n debug_mode: debug,\r\n });\r\n } else {\r\n gtag('config', analytics4MeasurementId);\r\n }\r\n logEvent(\r\n `GA4 pageview via \\'config\\' for measurement id ${analytics4MeasurementId}`\r\n );\r\n }\r\n\r\n const analytics4MeasurementGlobalId = validateGoogleData(\r\n 'analytics4MeasurementGlobalId'\r\n );\r\n\r\n const configAlreadySetAnalytics4MeasurementGlobalId = some(\r\n dataLayer,\r\n (d) =>\r\n includes(d, 'config') && includes(d, analytics4MeasurementGlobalId)\r\n );\r\n if (!configAlreadySetAnalytics4MeasurementGlobalId) {\r\n if (debug === true) {\r\n gtag('config', configAlreadySetAnalytics4MeasurementGlobalId, {\r\n debug_mode: debug,\r\n });\r\n } else {\r\n gtag('config', configAlreadySetAnalytics4MeasurementGlobalId);\r\n }\r\n logEvent(\r\n `GA4 pageview via \\'config\\' for Global measurement id ${analytics4MeasurementGlobalId}`\r\n );\r\n }\r\n};\r\n\r\nconst recordGA4BannerClick = ({ linkUrl, title, index }) => {\r\n _validateGtag();\r\n const obj = {\r\n content_type: 'banner',\r\n item_id: linkUrl,\r\n title,\r\n index,\r\n };\r\n logEvent(\r\n `GA4 custom event BANNER CLICK: ${linkUrl} ${title} ${index}`,\r\n obj\r\n );\r\n gtag('event', 'select_content', obj);\r\n};\r\n\r\nconst recordGA4PromoImagesClick = ({\r\n linkUrl,\r\n promoMessage,\r\n index,\r\n imageSrc,\r\n}) => {\r\n _validateGtag();\r\n const obj = {\r\n content_type: 'promoImages',\r\n item_id: linkUrl,\r\n promoMessage,\r\n index,\r\n imageSrc,\r\n };\r\n logEvent(\r\n `GA4 custom event PROMO IMAGES CLICK: ${linkUrl} ${promoMessage.message} ${index}`,\r\n obj\r\n );\r\n gtag('event', 'select_content', obj);\r\n};\r\n\r\nconst recordGA4InfoboxClick = ({ linkUrl }) => {\r\n _validateGtag();\r\n const obj = {\r\n content_type: 'infobox',\r\n item_id: linkUrl,\r\n };\r\n logEvent(`GA4 custom event INFOBOX CLICK: ${linkUrl}`, obj);\r\n gtag('event', 'select_content', obj);\r\n};\r\n\r\nconst recordGA4NewsHomepageClick = () => {\r\n _validateGtag();\r\n const obj = {\r\n content_type: 'news',\r\n };\r\n logEvent(`GA4 custom event NEWS HOMEPAGE`, obj);\r\n gtag('event', 'select_content', obj);\r\n};\r\n\r\nconst recordGA4HelpClick = () => {\r\n _validateGtag();\r\n const obj = {\r\n content_type: 'help',\r\n };\r\n logEvent(`GA4 custom event HELP PAGE`, obj);\r\n gtag('event', 'select_content', obj);\r\n};\r\n\r\nconst recordGA4CategoryClick = ({ linkUrl }) => {\r\n _validateGtag();\r\n const obj = {\r\n content_type: 'category',\r\n item_id: linkUrl,\r\n };\r\n logEvent(`GA4 custom event CATEGORY CLICK: ${linkUrl}`, obj);\r\n gtag('event', 'select_content', obj);\r\n};\r\n\r\nconst recordGA4LogonClick = ({ linkUrl }) => {\r\n _validateGtag();\r\n const obj = {\r\n content_type: 'logon',\r\n item_id: linkUrl,\r\n };\r\n logEvent(`GA4 custom event LOGON CLICK: ${linkUrl}`, obj);\r\n gtag('event', 'select_content', obj);\r\n};\r\n\r\nconst recordGA4RegisterClick = ({ linkUrl }) => {\r\n _validateGtag();\r\n const obj = {\r\n content_type: 'register',\r\n item_id: linkUrl,\r\n };\r\n logEvent(`GA4 custom event REGISTER CLICK: ${linkUrl}`, obj);\r\n gtag('event', 'select_content', obj);\r\n};\r\n\r\nexport {\r\n beginCheckout,\r\n purchase,\r\n newsletterRegistration,\r\n viewItem,\r\n searchItemsResults,\r\n viewItemList,\r\n viewCart,\r\n addShippingInfo,\r\n addToCart,\r\n addPaymentInfo,\r\n closePopUp,\r\n popUpButtonClick,\r\n init,\r\n setConfigGoogleAnalytics4,\r\n recordGA4BannerClick,\r\n recordGA4PromoImagesClick,\r\n recordGA4InfoboxClick,\r\n recordGA4NewsHomepageClick,\r\n recordGA4HelpClick,\r\n recordGA4CategoryClick,\r\n recordGA4LogonClick,\r\n recordGA4RegisterClick,\r\n};\r\n","// https://developers.google.com/analytics/devguides/collection/ga4/reference/events\r\nimport {\r\n logDebug,\r\n logInfo,\r\n logWarn,\r\n logError,\r\n logEvent,\r\n} from '../../tracing.js';\r\nimport {\r\n map,\r\n reduce,\r\n isArray,\r\n uniq,\r\n intersection,\r\n find,\r\n some,\r\n isNil,\r\n isEmpty,\r\n includes,\r\n hasIn,\r\n result,\r\n} from 'lodash';\r\nimport { validateGoogleData } from '../data/dataPageService.js';\r\n\r\nimport cookieService from '../cookieService.js';\r\n\r\nimport {\r\n extractAdwordsConfiguration,\r\n validateEcommerceData,\r\n} from '../data/dataPageService.js';\r\n\r\nconst _prefix = 'ADS';\r\n\r\nconst _getDestinationId = (property) => {\r\n try {\r\n const adwordsConfiguration = extractAdwordsConfiguration();\r\n const countryCode = cookieService.getUserProfileOptions().countryCode;\r\n const defaultCountryCode = validateEcommerceData('defaultCountryCode');\r\n if (!adwordsConfiguration[property]) {\r\n logError(`${_prefix} ${property} is not defined`);\r\n throw new Error(` ${property} is not defined`);\r\n }\r\n\r\n const valueForSelectedCountry =\r\n adwordsConfiguration[property][countryCode];\r\n if (\r\n isNil(valueForSelectedCountry) ||\r\n isEmpty(valueForSelectedCountry)\r\n ) {\r\n logInfo(\r\n `${_prefix} ${property} for ${countryCode} is not defined...falling back to default.`\r\n );\r\n const valueForDefaultCountry =\r\n adwordsConfiguration[property][defaultCountryCode];\r\n\r\n if (\r\n isNil(valueForDefaultCountry) ||\r\n isEmpty(valueForDefaultCountry)\r\n ) {\r\n throw new Error(\r\n `${property} for defaultCountryCode ${defaultCountryCode} is not defined`\r\n );\r\n }\r\n return valueForDefaultCountry;\r\n }\r\n return valueForSelectedCountry;\r\n } catch (error) {\r\n logError(`${_prefix} ${error.message}`);\r\n throw new Error(error.message);\r\n }\r\n};\r\n\r\nconst _getConversionId = () => _getDestinationId('conversionId');\r\nconst _getConversionLabel = () => _getDestinationId('conversionLabel');\r\nconst _getInitiateCheckoutLabel = () =>\r\n _getDestinationId('initiateCheckoutLabel');\r\nconst _getAddToCartLabel = () => _getDestinationId('addToCartLabel');\r\nconst _getNewsletterLabel = () => _getDestinationId('newsletterLabel');\r\nconst _getValuePropertyForCountryWithFallback = ({\r\n property,\r\n fallbackValue,\r\n}) => {\r\n const adwordsConfiguration = extractAdwordsConfiguration();\r\n const countryCode = cookieService.getUserProfileOptions().countryCode;\r\n const defaultCountryCode = validateEcommerceData('defaultCountryCode');\r\n if (!hasIn(adwordsConfiguration, property)) {\r\n logError(`${_prefix} ${property} is not defined`);\r\n return fallbackValue;\r\n }\r\n\r\n if (!hasIn(adwordsConfiguration, property + '.' + countryCode)) {\r\n logWarn(\r\n `${property} not found for countryCode ${countryCode}. Falling back to ${defaultCountryCode}`\r\n );\r\n const resultFromDefaultCountryCode =\r\n result(adwordsConfiguration, property + '.' + defaultCountryCode) ||\r\n fallbackValue;\r\n logDebug(\r\n `Using value ${resultFromDefaultCountryCode} for property ${property}`\r\n );\r\n return resultFromDefaultCountryCode;\r\n }\r\n const resultFromMatchedCountryCode =\r\n result(adwordsConfiguration, property + '.' + countryCode) ||\r\n fallbackValue;\r\n return resultFromMatchedCountryCode;\r\n};\r\n\r\nconst _getCategoriesConversionLabel = (conversionLabel) => {\r\n let fallbackValue = conversionLabel;\r\n try {\r\n const property = 'categoriesConversionLabel';\r\n return _getValuePropertyForCountryWithFallback({\r\n property,\r\n fallbackValue,\r\n });\r\n } catch (error) {\r\n logDebug(\r\n `${_prefix} no retrieval of categories conversion label. Maybe there is none? I will return empty string.`\r\n );\r\n return fallbackValue;\r\n }\r\n};\r\nconst _getTrackedCategories = () => {\r\n let fallbackValue = [];\r\n try {\r\n const property = 'trackedCategories';\r\n return _getValuePropertyForCountryWithFallback({\r\n property,\r\n fallbackValue,\r\n });\r\n } catch (error) {\r\n logDebug(\r\n `${_prefix} no retrieval of tracked categories. Maybe there are none? I will return empty tracked categories.`\r\n );\r\n return fallbackValue;\r\n }\r\n};\r\n\r\nconst _validateGtag = () => {\r\n if (!window.gtag) {\r\n throw new Error('window.gtag is null or undefined');\r\n }\r\n};\r\n\r\nconst _mapItemsForDynamicRemarketing = (items) =>\r\n map(items, (item) => ({\r\n id: item.googleId,\r\n google_business_vertical: 'retail',\r\n }));\r\n\r\nconst beginCheckout = ({ cartId, currency, totaleuro, items }) => {\r\n _validateGtag();\r\n const conversionId = _getConversionId();\r\n const initiateCheckoutLabel = _getInitiateCheckoutLabel();\r\n if (!isNil(initiateCheckoutLabel) && !isEmpty(initiateCheckoutLabel)) {\r\n const beginCheckoutObj = {\r\n transaction_id: cartId, // transaction_id è documentato solo per purchase...?\r\n send_to: `${conversionId}/${initiateCheckoutLabel}`,\r\n currency,\r\n value: totaleuro,\r\n items: map(items, (item) => ({\r\n item_id: item.googleId,\r\n item_name: item.slug,\r\n })),\r\n };\r\n logEvent(`${_prefix} begin_checkout`, beginCheckoutObj);\r\n gtag('event', 'begin_checkout', beginCheckoutObj);\r\n }\r\n};\r\n\r\nconst purchaseDynamicRemarketing = ({ value, items }) => {\r\n _validateGtag();\r\n const conversionId = _getConversionId();\r\n const obj = {\r\n send_to: conversionId,\r\n value,\r\n items: _mapItemsForDynamicRemarketing(items),\r\n };\r\n logEvent(`${_prefix} purchase dynamic remarketing`, obj);\r\n gtag('event', 'purchase', obj);\r\n};\r\n\r\nconst purchaseConversion = ({ orderId, currency, totalEuro, items }) => {\r\n try {\r\n _validateGtag();\r\n // O quella della country o quella di default\r\n const conversionId = _getConversionId();\r\n // O quella della country o quella di default\r\n const conversionLabel = _getConversionLabel();\r\n logDebug(\r\n `conversionId ${conversionId} and conversionLabel ${conversionLabel}`\r\n );\r\n // O quella della country o quella di default\r\n const categoriesConversionLabel =\r\n _getCategoriesConversionLabel(conversionLabel);\r\n // Quelle della country o quelle di default\r\n const trackedCategories = _getTrackedCategories();\r\n\r\n logDebug(\r\n `categoriesConversionLabel and trackedCategories`,\r\n categoriesConversionLabel,\r\n trackedCategories\r\n );\r\n\r\n const orderCategories = uniq(\r\n reduce(\r\n items,\r\n (acc, item) => {\r\n const itms = map(\r\n item.categories,\r\n (category) => category.slug\r\n );\r\n acc = acc.concat(itms);\r\n return acc;\r\n },\r\n []\r\n )\r\n );\r\n let send_to_address_label = conversionLabel || '';\r\n const foundMatchingCategories =\r\n intersection(orderCategories, trackedCategories).length > 0;\r\n if (foundMatchingCategories) {\r\n logDebug(\r\n `Tracked category found. TrackedCategories: ${trackedCategories}, Order categories: ${orderCategories}`\r\n );\r\n send_to_address_label = categoriesConversionLabel;\r\n }\r\n\r\n let conversionData = {\r\n transaction_id: orderId,\r\n send_to: `${conversionId}/${send_to_address_label}`,\r\n value: totalEuro,\r\n currency,\r\n items: map(items, (item) => {\r\n return {\r\n id: item.googleId,\r\n quantity: item.quantity,\r\n price: item.price,\r\n };\r\n }),\r\n };\r\n logEvent('conversion', conversionData);\r\n if (window.enhanced_conversion_data) {\r\n console.log(\r\n 'Enhanced conversion data',\r\n window.enhanced_conversion_data\r\n );\r\n\r\n logEvent('EnhancedConversionData', window.enhanced_conversion_data);\r\n }\r\n return window.gtag('event', 'conversion', conversionData);\r\n } catch (error) {\r\n logError(`purchaseConversion: ${error.message}`);\r\n throw new Error(`purchaseConversion: ${error.message}`);\r\n }\r\n};\r\n\r\nconst newsletterRegistration = ({ url, email }) => {\r\n try {\r\n _validateGtag();\r\n const conversionId = _getConversionId();\r\n const newsletterLabel = _getNewsletterLabel();\r\n\r\n if (!isNil(newsletterLabel) && !isEmpty(newsletterLabel)) {\r\n let obj = {\r\n send_to: `${conversionId}/${newsletterLabel}`,\r\n url: url === undefined ? window.location.href : url,\r\n email,\r\n value: 1,\r\n };\r\n logEvent(`${_prefix} CompleteRegistration`, obj);\r\n gtag('event', 'CompleteRegistration', obj);\r\n }\r\n } catch (error) {\r\n logError(`${_prefix} ${error.message}`);\r\n throw new Error(error.message);\r\n }\r\n};\r\n\r\nconst adsSearchItemResultsDynamicRemarketing = ({ searchterm, items }) => {\r\n _validateGtag();\r\n const viewItemObject = {\r\n search_term: searchterm,\r\n items: _mapItemsForDynamicRemarketing(items),\r\n };\r\n\r\n logEvent(\r\n `${_prefix} view_search_results dynamic remarketing`,\r\n viewItemObject\r\n );\r\n gtag('event', 'view_search_results', viewItemObject);\r\n};\r\n\r\nconst adsViewItemListDynamicRemarketing = ({ items }) => {\r\n _validateGtag();\r\n const conversionId = _getConversionId();\r\n\r\n const obj = {\r\n send_to: conversionId,\r\n items: _mapItemsForDynamicRemarketing(items),\r\n };\r\n\r\n logEvent(`${_prefix} view_item_list dynamic remarketing`, obj);\r\n gtag('event', 'view_item_list', obj);\r\n};\r\n\r\nconst adsViewItemDynamicRemarketing = ({ value, items }) => {\r\n _validateGtag();\r\n const conversionId = _getConversionId();\r\n const obj = {\r\n send_to: conversionId,\r\n value,\r\n items: _mapItemsForDynamicRemarketing(items),\r\n };\r\n\r\n logEvent(`${_prefix} view_item dynamic remarketing`, obj);\r\n gtag('event', 'view_item', obj);\r\n};\r\n\r\nconst adsAddToCartDynamicRemarketing = ({ id, price }) => {\r\n _validateGtag();\r\n const conversionId = _getConversionId();\r\n const obj = {\r\n send_to: conversionId,\r\n value: price,\r\n items: [\r\n {\r\n id,\r\n google_business_vertical: 'retail',\r\n },\r\n ],\r\n };\r\n\r\n logEvent(`${_prefix} add_to_cart dynamic remarketing`, obj);\r\n gtag('event', 'add_to_cart', obj);\r\n};\r\n\r\nconst adsAddToCartConversion = ({\r\n id,\r\n currency,\r\n price,\r\n items,\r\n transactionId,\r\n}) => {\r\n _validateGtag();\r\n const conversionId = _getConversionId();\r\n const addToCartLabel = _getAddToCartLabel();\r\n if (!isNil(addToCartLabel) && !isEmpty(addToCartLabel)) {\r\n if (!some(items, (item) => item.googleId === id)) {\r\n logWarn(\r\n `Mismatch between serverside ids and current clientside id ${id} on add_to_cart. Serverside ids: ${map(\r\n items,\r\n (i) => i.googleId\r\n )}`\r\n );\r\n }\r\n\r\n let obj = {\r\n send_to: `${conversionId}/${addToCartLabel}`,\r\n currency,\r\n value: price,\r\n };\r\n if (!isNil(transactionId) && !isEmpty(transactionId)) {\r\n obj.transaction_id = transactionId;\r\n }\r\n\r\n logEvent(`${_prefix} add_to_cart conversion`, obj);\r\n gtag('event', 'add_to_cart', obj);\r\n }\r\n};\r\n\r\nconst initConversions = () => {\r\n const conversionId = _getConversionId();\r\n const analytics4EnableDebug = validateGoogleData(\r\n 'analytics4EnableDebug',\r\n false\r\n );\r\n\r\n const configAlreadySetConversionId = some(\r\n dataLayer,\r\n (d) => includes(d, 'config') && includes(d, conversionId)\r\n );\r\n if (!configAlreadySetConversionId) {\r\n if (analytics4EnableDebug === true) {\r\n gtag('config', conversionId, {\r\n debug_mode: analytics4EnableDebug, // Per ora uso lo stesso config\r\n });\r\n } else {\r\n gtag('config', conversionId);\r\n }\r\n logEvent(`Setting \\'config\\' with conversionId ${conversionId}`);\r\n }\r\n};\r\n\r\nexport {\r\n beginCheckout,\r\n purchaseDynamicRemarketing,\r\n purchaseConversion,\r\n newsletterRegistration,\r\n adsSearchItemResultsDynamicRemarketing,\r\n adsViewItemListDynamicRemarketing,\r\n adsViewItemDynamicRemarketing,\r\n adsAddToCartDynamicRemarketing,\r\n adsAddToCartConversion,\r\n initConversions,\r\n};\r\n","import {\r\n logDebug,\r\n logInfo,\r\n logWarn,\r\n logError,\r\n logEvent,\r\n} from '../../tracing.js';\r\n\r\nimport { map } from 'lodash';\r\nconst _prefix = 'FBQ';\r\n\r\nconst _validateFbq = () => {\r\n if (!fbq) {\r\n throw new Error('fbq is null or undefined');\r\n }\r\n};\r\n\r\nconst _validateFbqData = (prop) => {\r\n if (!window.facebookData) {\r\n throw new Error(`${_prefix} window.facebookData is not defined`);\r\n }\r\n if (!window.facebookData[prop]) {\r\n throw new Error(\r\n `${_prefix} ${prop} is not defined on window.facebookData`\r\n );\r\n }\r\n};\r\n\r\nconst fbqPixelId = () => {\r\n _validateFbqData('pixelId');\r\n _validateFbqData('fbCulture');\r\n _validateFbq();\r\n logDebug(\r\n `PixelId: ${window.facebookData.pixelId} fbCulture: ${window.facebookData.fbCulture} `\r\n );\r\n logDebug('Firing pixelId', window.facebookData.pixelId);\r\n fbq('init', window.facebookData.pixelId);\r\n};\r\n\r\nconst init = () => {\r\n //Facebook pixelId\r\n !(function (f, b, e, v, n, t, s) {\r\n if (f.fbq) return;\r\n n = f.fbq = function () {\r\n n.callMethod\r\n ? n.callMethod.apply(n, arguments)\r\n : n.queue.push(arguments);\r\n };\r\n if (!f._fbq) f._fbq = n;\r\n n.push = n;\r\n n.loaded = !0;\r\n n.version = '2.0';\r\n n.queue = [];\r\n t = b.createElement(e);\r\n t.async = !0;\r\n t.src = v;\r\n s = b.getElementsByTagName(e)[0];\r\n s.parentNode.insertBefore(t, s);\r\n })(\r\n window,\r\n document,\r\n 'script',\r\n 'https://connect.facebook.net/en_US/fbevents.js'\r\n );\r\n};\r\n\r\nconst addToCart = ({ isKit, id, quantity, currency, price, eventId }) => {\r\n _validateFbq();\r\n const addToCartObject = {\r\n content_name: isKit\r\n ? `${window.$pathBase}Cart/AddKitToCartNew`\r\n : `${window.$pathBase}Cart/AddProductToCartNew`,\r\n content_type: 'product',\r\n contents: [\r\n {\r\n id,\r\n quantity: Number(quantity),\r\n },\r\n ],\r\n currency: currency,\r\n value: price,\r\n };\r\n\r\n logEvent(`${_prefix} AddToCart Facebook`, addToCartObject);\r\n fbq('track', 'AddToCart', addToCartObject, { eventID: eventId });\r\n};\r\n\r\nconst pageView = () => {\r\n _validateFbq();\r\n logEvent(`${_prefix} PageView Facebook`);\r\n fbq('track', 'PageView');\r\n};\r\n\r\nconst beginCheckout = ({ currency, value, items, eventId }) => {\r\n logDebug('_sendFbqInitiateCheckout');\r\n _validateFbq();\r\n const initiateCheckoutData = {\r\n currency,\r\n value,\r\n num_items: items.length,\r\n contents: map(items, (item) => ({\r\n id: item.facebookId,\r\n quantity: item.quantity,\r\n })),\r\n };\r\n logEvent(`${_prefix} InitiateCheckout Facebook`, initiateCheckoutData);\r\n fbq('track', 'InitiateCheckout', initiateCheckoutData, {\r\n eventID: eventId,\r\n });\r\n};\r\n\r\nconst newsletterRegistration = ({ url, email }) => {\r\n logDebug('_sendFbqRegistration');\r\n _validateFbq();\r\n const completeRegistrationObj = {\r\n status: true,\r\n content_name: url === undefined ? window.location.href : url,\r\n value: email,\r\n };\r\n logEvent(\r\n `${_prefix} CompleteRegistration Facebook`,\r\n completeRegistrationObj\r\n );\r\n fbq('track', 'CompleteRegistration', completeRegistrationObj);\r\n};\r\n\r\nconst contact = () => {\r\n _validateFbq();\r\n\r\n logEvent(`${_prefix} Contact Facebook`);\r\n fbq('track', 'Contact');\r\n};\r\n\r\nconst search = ({ searchterm }) => {\r\n _validateFbq();\r\n logEvent(`${_prefix} Search Facebook`, searchterm);\r\n fbq('track', 'Search', {\r\n search_string: searchterm,\r\n });\r\n};\r\n\r\nconst addPaymentInfo = ({ currency, value, items, eventId }) => {\r\n _validateFbq();\r\n const paymentObj = {\r\n currency,\r\n value,\r\n contents: map(items, (item) => ({\r\n id: item.googleId,\r\n quantity: item.quantity,\r\n })),\r\n };\r\n logEvent(`${_prefix} AddPaymentInfo Facebook`, paymentObj);\r\n fbq('track', 'AddPaymentInfo', paymentObj, { eventID: eventId });\r\n};\r\n\r\nconst viewItem = ({ slug, guid, options, currencyCode, isKit }) => {\r\n _validateFbq();\r\n fbqPixelId();\r\n const viewItemObject = {\r\n content_name: `${window.$pathBase}${slug}`,\r\n content_ids: isKit\r\n ? [`${guid}`]\r\n : map(options, (o) => `${guid}-${o.sourceId}`),\r\n currency: currencyCode,\r\n };\r\n logEvent(`${_prefix} ViewContent Facebook`, viewItemObject);\r\n fbq('track', 'ViewContent', viewItemObject);\r\n};\r\n\r\nconst purchase = ({ currency, value, items, eventId }) => {\r\n _validateFbq();\r\n let purchaseData = {\r\n contents: items.map((li) => ({\r\n id: li.facebookId,\r\n quantity: li.quantity,\r\n })),\r\n content_type: 'product',\r\n value,\r\n currency,\r\n };\r\n logEvent(`${_prefix} Purchase Facebook`, purchaseData);\r\n fbq('track', 'Purchase', purchaseData, { eventID: eventId });\r\n};\r\n\r\nexport {\r\n init,\r\n addToCart,\r\n fbqPixelId,\r\n pageView,\r\n beginCheckout,\r\n newsletterRegistration,\r\n contact,\r\n search,\r\n addPaymentInfo,\r\n viewItem,\r\n purchase,\r\n};\r\n","import cookieService from '../cookieService.js';\r\nimport {\r\n beginCheckout as ga4BeginCheckout,\r\n purchase as ga4Purchase,\r\n newsletterRegistration as ga4NewsletterRegistration,\r\n viewItem as ga4ViewItem,\r\n searchItemsResults as ga4SearchItemsResults,\r\n viewItemList as ga4ViewItemList,\r\n viewCart as ga4ViewCart,\r\n addShippingInfo as ga4AddShippingInfo,\r\n addToCart as ga4AddToCart,\r\n addPaymentInfo as ga4AddPaymentInfo,\r\n closePopUp as ga4ClosePopUp,\r\n popUpButtonClick as ga4PopUpButtonClick,\r\n init as initGoogleAnalytics4,\r\n setConfigGoogleAnalytics4,\r\n recordGA4BannerClick,\r\n recordGA4PromoImagesClick,\r\n recordGA4InfoboxClick,\r\n recordGA4NewsHomepageClick,\r\n recordGA4HelpClick,\r\n recordGA4CategoryClick,\r\n recordGA4LogonClick,\r\n recordGA4RegisterClick,\r\n} from './ga4Service.js';\r\nimport {\r\n beginCheckout as adsBeginCheckoutSendConversion,\r\n purchaseDynamicRemarketing,\r\n purchaseConversion,\r\n adsSearchItemResultsDynamicRemarketing,\r\n adsViewItemListDynamicRemarketing,\r\n adsViewItemDynamicRemarketing,\r\n adsAddToCartDynamicRemarketing,\r\n adsAddToCartConversion,\r\n newsletterRegistration as adsNewsletterRegistrationSendConversion,\r\n initConversions,\r\n} from './adsService.js';\r\nimport {\r\n init as initFbq,\r\n addToCart as fbqAddToCart,\r\n fbqPixelId,\r\n pageView as fbqPageView,\r\n beginCheckout as fbqBeginCheckout,\r\n newsletterRegistration as fbqNewsletterRegistration,\r\n contact as fbqContact,\r\n search as fbqSearch,\r\n addPaymentInfo as fbqAddPaymentInfo,\r\n viewItem as fbqViewItem,\r\n purchase as fbqPurchase,\r\n} from './facebookService.js';\r\n\r\nimport { logDebug, logWarn, logError, logEvent } from '../../tracing.js';\r\nimport { isArray } from 'lodash';\r\nimport { validateGoogleData } from '../data/dataPageService.js';\r\n\r\nconst pageTypes = {\r\n view_item: 'view_item',\r\n view_item_list: 'view_item_list',\r\n cart: 'cart',\r\n view_search_results: 'view_search_results',\r\n registration: 'registration',\r\n contact: 'contact',\r\n view_cart: 'view_cart',\r\n add_shipping_info: 'add_shipping_info',\r\n add_payment_info: 'add_payment_info',\r\n purchase: 'purchase',\r\n};\r\n\r\nconst _validateEcommPageType = () => {\r\n if (!window.ecomm_pagetype) {\r\n throw new Error('window.ecomm_pagetype is not defined');\r\n }\r\n return window.ecomm_pagetype;\r\n};\r\nconst _validateEcommTransactionId = () => {\r\n if (!window.ecomm_transactionid) {\r\n logError('window.ecomm_transactionid is not defined');\r\n throw new Error('window.ecomm_transactionid is not defined');\r\n }\r\n\r\n if (window.ecomm_transactionid === '00000000-0000-0000-0000-000000000000') {\r\n logError(\r\n 'Skipping because orderId happens to be 00000000-0000-0000-0000-000000000000'\r\n );\r\n throw new Error(\r\n 'Skipping because orderId happens to be 00000000-0000-0000-0000-000000000000'\r\n );\r\n }\r\n return window.ecomm_transactionid;\r\n};\r\nconst _validateEcommTotalValue = () => {\r\n if (!window.ecomm_totalvalue) {\r\n logError('window.ecomm_totalvalue is not defined');\r\n throw new Error('window.ecomm_totalvalue is not defined');\r\n }\r\n return window.ecomm_totalvalue;\r\n};\r\nconst _validateEcommTotalValueEuro = () => {\r\n if (!window.ecomm_totalvalueeuro) {\r\n logError('window.ecomm_totalvalueeuro is not defined');\r\n throw new Error('window.ecomm_totalvalueeuro is not defined');\r\n }\r\n return window.ecomm_totalvalueeuro;\r\n};\r\n\r\nconst _validateEcommCurrency = () => {\r\n if (!window.ecomm_currency) {\r\n logError('window.ecomm_currency is undefined');\r\n throw new Error('window.ecomm_currency is undefined');\r\n }\r\n return window.ecomm_currency;\r\n};\r\n\r\nconst _validateEcommSearchTerm = () => {\r\n if (!window.ecomm_searchterm) {\r\n logError('window.ecomm_searchterm is undefined');\r\n throw new Error('window.ecomm_searchterm is undefined');\r\n }\r\n if (window.ecomm_searchterm === '') {\r\n logWarn('window.ecomm_searchterm is empty');\r\n }\r\n return window.ecomm_searchterm;\r\n};\r\nconst _validateEcommItems = () => {\r\n if (!window.ecomm_items) {\r\n logError('window.ecomm_items is undefined');\r\n throw new Error('window.ecomm_items is undefined');\r\n }\r\n if (isArray(window.ecomm_items) && window.ecomm_items.length === 0) {\r\n logWarn('window.ecomm_items is empty');\r\n }\r\n return window.ecomm_items;\r\n};\r\nconst _validateEcommShippingOptionName = () => {\r\n if (!window.ecomm_shippingoptionname) {\r\n logError('window.ecomm_shippingoptionname is undefined');\r\n throw new Error('window.ecomm_shippingoptionname is undefined');\r\n }\r\n if (window.ecomm_shippingoptionname === '') {\r\n logWarn('window.ecomm_shippingoptionname is empty');\r\n }\r\n return window.ecomm_shippingoptionname;\r\n};\r\nconst _validateEcommShippingFeesEuro = () => {\r\n if (!window.ecomm_shippingfeeseuro) {\r\n logError('window.ecomm_shippingfeeseuro is undefined');\r\n throw new Error('window.ecomm_shippingfeeseuro is undefined');\r\n }\r\n if (window.ecomm_shippingfeeseuro === '') {\r\n logWarn('window.ecomm_shippingfeeseuro is empty');\r\n }\r\n return window.ecomm_shippingfeeseuro;\r\n};\r\nconst _validateEcommEmail = () => {\r\n if (!window.ecomm_email) {\r\n logError('window.ecomm_email is undefined');\r\n throw new Error('window.ecomm_email is undefined');\r\n }\r\n return window.ecomm_email;\r\n};\r\n\r\nconst _sendInitiateCheckout = () => {\r\n if (window.ecomm_pagetype && window.ecomm_pagetype === pageTypes.cart) {\r\n const cartId = _validateEcommTransactionId();\r\n const totaleuro = _validateEcommTotalValueEuro();\r\n const currency = _validateEcommCurrency();\r\n const items = _validateEcommItems();\r\n fbqBeginCheckout({\r\n currency,\r\n value: totaleuro,\r\n items,\r\n eventId: cartId,\r\n });\r\n\r\n ga4BeginCheckout({\r\n currency,\r\n totaleuro,\r\n items,\r\n });\r\n adsBeginCheckoutSendConversion({\r\n cartId,\r\n currency,\r\n totaleuro,\r\n items,\r\n });\r\n }\r\n};\r\n\r\nconst _sendNewsletterRegistration = ({ url, email }) => {\r\n logDebug('_sendRegistration');\r\n fbqNewsletterRegistration({ url, email });\r\n ga4NewsletterRegistration({\r\n url,\r\n email,\r\n });\r\n adsNewsletterRegistrationSendConversion({\r\n email,\r\n });\r\n};\r\n\r\nconst sendRegistration = ({ url, email }) => {\r\n return initLibs()\r\n .then(() => {\r\n try {\r\n _sendNewsletterRegistration({ url, email });\r\n } catch (error) {\r\n throw new Error(error.message);\r\n }\r\n })\r\n .catch((err) => {\r\n logError('sendRegistration from form ', err.message, url, email);\r\n return err;\r\n });\r\n};\r\n\r\nconst _sendRegistration = () => {\r\n if (\r\n window.ecomm_pagetype &&\r\n window.ecomm_pagetype === pageTypes.registration\r\n ) {\r\n const email = _validateEcommEmail();\r\n _sendNewsletterRegistration({ url: window.location.href, email });\r\n }\r\n};\r\n\r\nconst _sendFbqContact = () => {\r\n if (window.ecomm_pagetype && window.ecomm_pagetype === pageTypes.contact) {\r\n logDebug('_sendFbqContact');\r\n fbqContact();\r\n }\r\n};\r\n\r\nconst _sendViewItem = () => {\r\n if (\r\n window.ecomm_pagetype &&\r\n window.ecomm_pagetype === pageTypes.view_item\r\n ) {\r\n logDebug('_sendGoogleAnalyticsFourViewItem');\r\n const currency = _validateEcommCurrency();\r\n const value = _validateEcommTotalValue();\r\n const items = _validateEcommItems();\r\n\r\n // Commentato per evitare eventi duplicati, essendoci dynamic remarketing\r\n ga4ViewItem({\r\n currency,\r\n value,\r\n items,\r\n });\r\n adsViewItemDynamicRemarketing({ value, items });\r\n }\r\n};\r\n\r\nconst _sendSearchItemResults = () => {\r\n if (\r\n window.ecomm_pagetype &&\r\n window.ecomm_pagetype === pageTypes.view_search_results\r\n ) {\r\n logDebug('_sendSearchItemResults');\r\n const searchterm = _validateEcommSearchTerm();\r\n const items = _validateEcommItems();\r\n\r\n fbqSearch({ searchterm });\r\n ga4SearchItemsResults({ searchterm });\r\n adsSearchItemResultsDynamicRemarketing({ searchterm, items });\r\n }\r\n};\r\n\r\nconst _sendViewItemList = () => {\r\n if (\r\n window.ecomm_pagetype &&\r\n window.ecomm_pagetype === pageTypes.view_item_list\r\n ) {\r\n logDebug('_sendViewItemList');\r\n const items = _validateEcommItems();\r\n ga4ViewItemList({\r\n items,\r\n });\r\n adsViewItemListDynamicRemarketing({ items });\r\n }\r\n};\r\n\r\nconst _sendViewCart = () => {\r\n if (\r\n window.ecomm_pagetype &&\r\n window.ecomm_pagetype === pageTypes.view_cart\r\n ) {\r\n logDebug('_sendViewCart');\r\n const cartId = _validateEcommTransactionId();\r\n const currency = _validateEcommCurrency();\r\n const totaleuro = _validateEcommTotalValueEuro();\r\n const items = _validateEcommItems();\r\n ga4ViewCart({ cartId, currency, totaleuro, items });\r\n }\r\n};\r\n\r\nconst _sendShippingInfo = () => {\r\n if (\r\n window.ecomm_pagetype &&\r\n window.ecomm_pagetype === pageTypes.add_shipping_info\r\n ) {\r\n logDebug('_sendGoogleAnalyticsFourShippingInfo');\r\n const cartId = _validateEcommTransactionId();\r\n const currency = _validateEcommCurrency();\r\n const value = _validateEcommTotalValue();\r\n const items = _validateEcommItems();\r\n const shipping_tier = _validateEcommShippingOptionName();\r\n ga4AddShippingInfo({ cartId, currency, value, items, shipping_tier });\r\n }\r\n};\r\n\r\nconst addPaymentInfo = ({ payment, value }) => {\r\n logDebug('addPaymentInfo');\r\n return initLibs().then(() => {\r\n const cartId = _validateEcommTransactionId();\r\n const currency = _validateEcommCurrency();\r\n const items = _validateEcommItems();\r\n fbqAddPaymentInfo({ currency, value, items, eventId: cartId });\r\n ga4AddPaymentInfo({ currency, value, items, payment });\r\n return payment;\r\n });\r\n};\r\n\r\nconst closePopUp = () => {\r\n logDebug('closePopUp');\r\n return initLibs().then(() => {\r\n ga4ClosePopUp();\r\n return;\r\n });\r\n};\r\n\r\nconst popUpButtonClick = () => {\r\n logDebug('popUpButtonClick');\r\n return initLibs().then(() => {\r\n ga4PopUpButtonClick();\r\n return;\r\n });\r\n};\r\n\r\nconst initLibs = () => {\r\n // https://support.google.com/analytics/answer/7201382?hl=en\r\n\r\n return new Promise((resolve, reject) => {\r\n if (window.gtag && window.fbq) {\r\n logDebug('window.gtag && window.fbq ALL INITIALIZED!');\r\n \r\n const analytics4EnableDebug = validateGoogleData(\r\n 'analytics4EnableDebug',\r\n false\r\n );\r\n return resolve({\r\n gtag: window.gtag,\r\n fbq: window.fbq,\r\n analytics4EnableDebug,\r\n });\r\n }\r\n let retryCount = 4;\r\n const interval = setInterval(function () {\r\n try {\r\n logDebug('--> Run analytics script');\r\n\r\n const analytics4EnableDebug = validateGoogleData(\r\n 'analytics4EnableDebug',\r\n false\r\n );\r\n\r\n if (!window.gtag) {\r\n initGoogleAnalytics4({ debug: analytics4EnableDebug });\r\n }\r\n // FACEBOOK\r\n if (!window.fbq) {\r\n initFbq();\r\n }\r\n\r\n if (window.gtag && window.fbq) {\r\n logDebug('--> ga gtag and fbq ALL DEFINED');\r\n\r\n clearInterval(interval);\r\n return resolve({\r\n gtag: window.gtag,\r\n fbq: window.fbq,\r\n analytics4EnableDebug,\r\n });\r\n }\r\n if (retryCount === 0) {\r\n clearInterval(interval);\r\n return reject('Some function is not defined');\r\n }\r\n\r\n retryCount = retryCount - 1;\r\n } catch (error) {\r\n reject(error);\r\n }\r\n }, 1000);\r\n });\r\n};\r\n\r\nconst addToCart = ({\r\n isKit,\r\n guid,\r\n quantity,\r\n options,\r\n currency,\r\n price,\r\n disciplines,\r\n categories,\r\n brandName,\r\n transactionId,\r\n}) => {\r\n if (\r\n window.ecomm_pagetype &&\r\n window.ecomm_pagetype === pageTypes.view_item\r\n ) {\r\n initLibs().then(() => {\r\n const id = isKit ? guid : `${guid}-${options[0].optionId}`;\r\n fbqAddToCart({\r\n isKit,\r\n id,\r\n quantity,\r\n currency,\r\n price,\r\n eventId: transactionId,\r\n });\r\n const items = _validateEcommItems();\r\n\r\n // Commentato per evitare eventi duplicati, essendoci dynamic remarketing\r\n ga4AddToCart({\r\n id,\r\n quantity,\r\n currency,\r\n price,\r\n items,\r\n disciplines,\r\n categories,\r\n brandName,\r\n });\r\n\r\n adsAddToCartDynamicRemarketing({\r\n id,\r\n price,\r\n });\r\n adsAddToCartConversion({\r\n id,\r\n currency,\r\n price,\r\n items,\r\n transactionId,\r\n });\r\n });\r\n }\r\n};\r\n\r\nconst viewItemFbq = async ({ slug, guid, options, currencyCode, isKit }) => {\r\n if (\r\n window.ecomm_pagetype &&\r\n window.ecomm_pagetype === pageTypes.view_item\r\n ) {\r\n await initLibs();\r\n\r\n fbqViewItem({ slug, guid, options, currencyCode, isKit });\r\n }\r\n};\r\n\r\nconst _sendPurchase = () => {\r\n if (window.ecomm_pagetype && window.ecomm_pagetype === pageTypes.purchase) {\r\n const transaction_id = _validateEcommTransactionId();\r\n const currency = _validateEcommCurrency();\r\n const value = _validateEcommTotalValue();\r\n const items = _validateEcommItems();\r\n const shipping = _validateEcommShippingFeesEuro();\r\n const valueDecimal = parseFloat(value);\r\n const shippingDecimal = parseFloat(shipping);\r\n fbqPurchase({ currency, value, items, eventId: transaction_id });\r\n ga4Purchase({\r\n transaction_id,\r\n currency,\r\n value: valueDecimal,\r\n shipping: shippingDecimal,\r\n items,\r\n });\r\n purchaseDynamicRemarketing({\r\n value: valueDecimal,\r\n items,\r\n });\r\n\r\n logDebug(`Preparing purchaseConversion data...`);\r\n logDebug(`transaction_id ${transaction_id}`);\r\n const totalEuro = parseFloat(_validateEcommTotalValueEuro());\r\n logDebug(`totalEuro ${totalEuro}`);\r\n purchaseConversion({\r\n orderId: transaction_id,\r\n currency,\r\n totalEuro,\r\n items,\r\n });\r\n }\r\n};\r\n\r\nconst sendGoogleSurvey = ({\r\n enableGoogleSurvey,\r\n merchantId,\r\n orderId,\r\n userEmail,\r\n deliveryCountry,\r\n estimatedDeliveryDate,\r\n surveyoptin,\r\n}) => {\r\n const handleSurvey =\r\n window.ecomm_pagetype &&\r\n window.ecomm_pagetype === pageTypes.purchase &&\r\n enableGoogleSurvey;\r\n console.log('handleSurvey', handleSurvey);\r\n if (handleSurvey) {\r\n console.log('handle');\r\n\r\n const surveyObj = {\r\n merchant_id: merchantId,\r\n order_id: orderId,\r\n email: userEmail,\r\n delivery_country: deliveryCountry,\r\n estimated_delivery_date: estimatedDeliveryDate,\r\n };\r\n logEvent('gooogle survey', surveyObj);\r\n if (!surveyoptin) {\r\n logError('window.gapi.surveyoptin is not defined');\r\n return;\r\n }\r\n console.log('surveyoptin');\r\n surveyoptin.render(surveyObj);\r\n } else {\r\n logDebug(\r\n `Google survey script is disabled for merchantId ${merchantId}. Delivery country: ${deliveryCountry} Order id: ${orderId}`\r\n );\r\n }\r\n};\r\n\r\nconst run = () => {\r\n try {\r\n logDebug('Starting marketing and analytics service...');\r\n initLibs()\r\n .then(({ gtag, fbq, analytics4EnableDebug }) => {\r\n try {\r\n logDebug('window.googleData', window.googleData);\r\n logDebug('window.facebookData', window.facebookData);\r\n\r\n setConfigGoogleAnalytics4({ debug: analytics4EnableDebug });\r\n initConversions();\r\n let thirdPartyConsent = cookieService.getThirdParty();\r\n let marketingPartyConsent =\r\n cookieService.getMarketingParty();\r\n\r\n if (thirdPartyConsent) {\r\n logDebug('Executing actions for thirdPartyConsent...');\r\n fbqPixelId();\r\n fbqPageView();\r\n } else {\r\n logDebug(`No third party consent given`);\r\n }\r\n if (marketingPartyConsent) {\r\n logDebug(\r\n 'Executing actions for marketingPartyConsent...'\r\n );\r\n\r\n _sendInitiateCheckout();\r\n _sendPurchase();\r\n\r\n _sendRegistration();\r\n _sendFbqContact();\r\n _sendViewItem();\r\n _sendSearchItemResults();\r\n _sendViewItemList();\r\n _sendViewCart();\r\n _sendShippingInfo();\r\n } else {\r\n logDebug(`No marketing consent given`);\r\n }\r\n } catch (error) {\r\n logError(`Error on run. ${error}`);\r\n }\r\n })\r\n .catch((err) => {\r\n logError(`Error on run after initializing libs. ${err}`);\r\n });\r\n } catch (error) {\r\n logError(`Error on run() : ${error}`);\r\n }\r\n};\r\n\r\nconst recordBannerClick = async ({ linkUrl, title, index }) => {\r\n try {\r\n await initLibs();\r\n recordGA4BannerClick({ linkUrl, title, index });\r\n } catch (error) {\r\n logError(\r\n `Error recording banner click for url: ${linkUrl} - title: ${title} - index: ${index}`,\r\n error.message\r\n );\r\n }\r\n};\r\n\r\nconst recordPromoImagesClick = async ({\r\n linkUrl,\r\n promoMessage,\r\n index,\r\n imageSrc,\r\n}) => {\r\n try {\r\n await initLibs();\r\n recordGA4PromoImagesClick({\r\n linkUrl,\r\n promoMessage,\r\n index,\r\n imageSrc,\r\n });\r\n } catch (error) {\r\n logError(\r\n `Error recording promo images click for url: ${linkUrl} - promoMessage: ${promoMessage} - index: ${index} - imageSrc: ${imageSrc}`,\r\n error.message\r\n );\r\n }\r\n};\r\n\r\nconst recordInfoboxClick = async ({ linkUrl }) => {\r\n try {\r\n await initLibs();\r\n recordGA4InfoboxClick({\r\n linkUrl,\r\n });\r\n } catch (error) {\r\n logError(\r\n `Error recording infoboxes click for url: ${linkUrl}`,\r\n error.message\r\n );\r\n }\r\n};\r\n\r\nconst recordNewsHomepageClick = async () => {\r\n try {\r\n await initLibs();\r\n recordGA4NewsHomepageClick();\r\n } catch (error) {\r\n logError(`Error recording news homepage click.`, error.message);\r\n }\r\n};\r\n\r\nconst recordHelpClick = async () => {\r\n try {\r\n await initLibs();\r\n recordGA4HelpClick();\r\n } catch (error) {\r\n logError(`Error recording news homepage click.`, error.message);\r\n }\r\n};\r\nconst recordCategoryClick = async ({ linkUrl }) => {\r\n try {\r\n await initLibs();\r\n recordGA4CategoryClick({ linkUrl });\r\n } catch (error) {\r\n logError(\r\n `Error recording category click for ${linkUrl}`,\r\n error.message\r\n );\r\n }\r\n};\r\n\r\nconst recordLogonClick = async ({ linkUrl }) => {\r\n try {\r\n await initLibs();\r\n recordGA4LogonClick({ linkUrl });\r\n } catch (error) {\r\n logError(`Error recording logon click for ${linkUrl}`, error.message);\r\n }\r\n};\r\n\r\nconst recordRegisterClick = async ({ linkUrl }) => {\r\n try {\r\n await initLibs();\r\n recordGA4RegisterClick({ linkUrl });\r\n } catch (error) {\r\n logError(\r\n `Error recording register click for ${linkUrl}`,\r\n error.message\r\n );\r\n }\r\n};\r\n\r\nexport default {\r\n run,\r\n initLibs,\r\n addToCart,\r\n viewItemFbq,\r\n addPaymentInfo,\r\n closePopUp,\r\n popUpButtonClick,\r\n sendGoogleSurvey,\r\n sendRegistration,\r\n recordBannerClick,\r\n recordPromoImagesClick,\r\n recordInfoboxClick,\r\n recordNewsHomepageClick,\r\n recordHelpClick,\r\n recordCategoryClick,\r\n recordLogonClick,\r\n recordRegisterClick,\r\n};\r\n","import common from './common';\r\n\r\nconst offersRoute = () => {\r\n const culture = common.getLang();\r\n const offers = {\r\n 'it-IT': 'offerte',\r\n 'es-ES': 'ofertas',\r\n 'fr-FR': 'promotions',\r\n 'en-GB': 'offers',\r\n 'en-US': 'sales',\r\n 'en-AU': 'offers-1',\r\n 'de-DE': 'sale',\r\n };\r\n return `${common.getSiteUrl()}/${offers[culture]}`;\r\n};\r\n\r\nconst latestArrivalsRoute = () => {\r\n const culture = common.getLang();\r\n const latestArrivals = {\r\n 'it-IT': 'ultimi-arrivi',\r\n 'es-ES': 'ultimas-novedades',\r\n 'fr-FR': 'derniers-arrivages',\r\n 'en-GB': 'latest-arrivals',\r\n 'en-US': 'new-products',\r\n 'en-AU': 'latest-arrivals-1',\r\n 'de-DE': 'neuheiten',\r\n };\r\n return `${common.getSiteUrl()}/${latestArrivals[culture]}`;\r\n};\r\nexport { offersRoute, latestArrivalsRoute };\r\n","import { memoize } from 'lodash';\r\nimport { get } from '../../common/httpService';\r\nconst fallbackOfferData = {\r\n hexColorTopRight: 'gray',\r\n hexColorBottomLeft: 'white',\r\n labelColor: 'black',\r\n labelColorHover: 'black',\r\n labelText: 'promo',\r\n};\r\n\r\nconst getActiveOffersTag = async ({ offerdata }) => {\r\n try {\r\n if (offerdata) {\r\n let {\r\n hexColorTopRight,\r\n hexColorBottomLeft,\r\n labelColor,\r\n labelColorHover,\r\n labelText,\r\n } = JSON.parse(offerdata);\r\n\r\n return {\r\n hexColorTopRight,\r\n hexColorBottomLeft,\r\n labelColor,\r\n labelColorHover,\r\n labelText,\r\n };\r\n } else {\r\n const obj = await memoActiveOffersTag();\r\n return obj;\r\n }\r\n } catch (error) {\r\n console.error('Error on offerTags on ProductTags', error);\r\n return fallbackOfferData;\r\n }\r\n};\r\nconst memoActiveOffersTag = memoize(\r\n async () => await get({ url: `Tag/getActiveOffersTag` })\r\n);\r\nexport { getActiveOffersTag, fallbackOfferData };\r\n","import React, { useState } from 'react';\r\nimport './LinkHovered.scss';\r\n\r\nconst LinkHovered = ({\r\n className,\r\n classNameLink,\r\n href,\r\n title,\r\n baseStyle,\r\n hoverStyle,\r\n anchorHoverStyle,\r\n anchorBaseStyle,\r\n children,\r\n}) => {\r\n const [spanHovered, setHover] = useState(false);\r\n const [anchorHovered, setAnchorHover] = useState(false);\r\n const toggleHover = function () {\r\n setHover(!spanHovered);\r\n };\r\n const toggleAnchorHover = function () {\r\n setAnchorHover(!anchorHovered);\r\n };\r\n return (\r\n \r\n \r\n {children}\r\n \r\n \r\n );\r\n};\r\nexport default LinkHovered;\r\n","import React, { useEffect, useState } from 'react';\r\nimport {\r\n filter,\r\n isArray,\r\n isEmpty,\r\n isNil,\r\n isObject,\r\n isString,\r\n join,\r\n map,\r\n replace,\r\n toUpper,\r\n trim,\r\n} from 'lodash';\r\nimport translateService from '../../../common/translateService';\r\nimport {\r\n offersRoute,\r\n latestArrivalsRoute,\r\n} from '../../../common/routesCreator';\r\nimport common from '../../../common/common';\r\nimport {\r\n getActiveOffersTag,\r\n fallbackOfferData,\r\n} from '../../../services/product/tagService';\r\nimport './ProductTags.scss';\r\nimport LinkHovered from '../../link/LinkHovered.jsx';\r\nconst ProductTags = ({ latestArrival, offer, offerdata, tags }) => {\r\n const [offerData, setOfferData] = useState(fallbackOfferData);\r\n\r\n const [labelsState, setLabelsState] = useState({\r\n isLatestArrival: false,\r\n isOffer: false,\r\n tagsArray: [],\r\n });\r\n\r\n useEffect(() => {\r\n if (typeof latestArrival === 'string' && typeof offer === 'string') {\r\n setLabelsState({\r\n isLatestArrival: latestArrival === 'True',\r\n isOffer: offer === 'True',\r\n });\r\n } else {\r\n setLabelsState({\r\n isLatestArrival: latestArrival,\r\n isOffer: offer,\r\n });\r\n }\r\n }, [latestArrival, offer]);\r\n\r\n useEffect(() => {\r\n setLabelsState((prevState) => {\r\n return {\r\n ...prevState,\r\n tagsArray: getTagsArray(tags),\r\n };\r\n });\r\n }, [tags]);\r\n\r\n useEffect(() => {\r\n const getoffersTag = async () =>\r\n await getActiveOffersTag({ offerdata });\r\n getoffersTag().then((obj) => {\r\n setOfferData(obj);\r\n });\r\n }, []);\r\n\r\n const getTagsArray = (tags) => {\r\n try {\r\n if (isArray(tags)) return isEmpty(tags) ? [] : tags;\r\n\r\n if (isString(tags)) {\r\n const serializedData = JSON.parse(tags);\r\n if (isArray(serializedData))\r\n return isEmpty(serializedData) ? [] : serializedData;\r\n\r\n if (isObject(serializedData))\r\n return isEmpty(serializedData) ? [] : [serializedData];\r\n\r\n return [];\r\n }\r\n if (isObject(tags)) return isEmpty(tags) ? [] : [tags];\r\n\r\n return [];\r\n } catch (error) {\r\n console.error('Error in ProductTags', error);\r\n return [];\r\n }\r\n };\r\n\r\n const getCleanTag = (tag) => {\r\n if (isNil(tag)) return '';\r\n\r\n const n = join(\r\n filter(tag, (char) => char !== ' '),\r\n ''\r\n );\r\n if (isNil(n) || isEmpty(n) || n.length <= 0) return '';\r\n\r\n let cleanTag = tag;\r\n\r\n for (let i = 0; i < n.length; i++) {\r\n cleanTag = replace(cleanTag, ' ', '_');\r\n }\r\n\r\n return cleanTag;\r\n };\r\n\r\n return labelsState.isLatestArrival ||\r\n labelsState.isOffer ||\r\n !isEmpty(labelsState.tagsArray) ? (\r\n
\r\n {labelsState.isLatestArrival && (\r\n \r\n \r\n {translateService.get(\r\n `productCard.ProductLabelLatestArrival`\r\n )}\r\n \r\n \r\n )}\r\n {labelsState.isOffer && (\r\n \r\n {offerData.labelText ||\r\n translateService.get(`productCard.ProductLabelOffer`)}\r\n \r\n )}\r\n {map(labelsState.tagsArray, (t, idx) => (\r\n \r\n \r\n {trim(toUpper(t.labelText))}\r\n \r\n \r\n ))}\r\n
\r\n ) : (\r\n <>\r\n );\r\n};\r\n\r\nexport default ProductTags;\r\n","import React from 'react';\r\nimport { scrollToReviews } from '../../../services/product/productInteraction.js';\r\nimport translateService from '../../../common/translateService';\r\nimport common from '../../../common/common';\r\nimport ReviewStars from '../reviews/ReviewStars.jsx';\r\nimport './ProductHeader.scss';\r\n\r\nconst ProductHeader = (props) => {\r\n const handleScrollToReviews = () => {\r\n scrollToReviews(props.isMobile, props.reviewsRef);\r\n };\r\n\r\n return (\r\n
\r\n
\r\n

\r\n \r\n {props.brandName}\r\n \r\n

\r\n \r\n {props.revCount > 0 ? (\r\n \r\n ) : (\r\n translateService.get(`productDetail.writeAReview`)\r\n )}\r\n \r\n
\r\n
\r\n

\r\n {props.title}\r\n

\r\n {!props.isKit && props.option ? (\r\n

\r\n {translateService.interpolate(\r\n `productDetail.productCode`,\r\n {\r\n code: props.option.manufacturerCode,\r\n }\r\n )}\r\n

\r\n ) : (\r\n <>\r\n )}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default ProductHeader;\r\n","require('flickity-fullscreen');\r\nrequire('flickity-as-nav-for');\r\nimport React, { useState } from 'react';\r\nimport Flickity from 'react-flickity-component';\r\nimport { isArray, map, hasIn } from 'lodash';\r\nimport common from '../../../common/common';\r\nimport {\r\n showOverlay,\r\n hideOverlay,\r\n} from '../../../services/product/productInteraction.js';\r\nimport ProductFullScreenHandler from './ProductFullScreenHandler.jsx';\r\nimport './ProductCarousel.scss';\r\n\r\nconst ProductCarousel = (props) => {\r\n const [flktyRef, setFlktyRef] = useState(undefined);\r\n const [fullScreenActive, setFullScreenActive] = useState(false);\r\n const [indexZoom, setIndexZoom] = useState(0);\r\n\r\n const handleMouseEnter = (e) => {\r\n showOverlay(e, props.isMobile);\r\n };\r\n\r\n const handleMouseLeave = (e) => {\r\n hideOverlay(e, props.isMobile);\r\n };\r\n\r\n const itemsByCarouselSizeHtml = ({ items, carouselSize }) =>\r\n map(items, (item, index) => {\r\n return (\r\n \r\n \r\n
\r\n
\r\n );\r\n });\r\n\r\n const itemsZoom = (items) =>\r\n map(items, (item) => ({ type: 'image', src: item['zoom'] }));\r\n\r\n const carouselFullscreen = (propsItems, carouselSize) => {\r\n if (!isArray(propsItems) || carouselSize === undefined) {\r\n return [];\r\n }\r\n\r\n const items = map(propsItems, (item) => ({\r\n imageUrl: item[carouselSize],\r\n type: carouselSize,\r\n }));\r\n return itemsByCarouselSizeHtml({\r\n items,\r\n carouselSize,\r\n });\r\n };\r\n\r\n if (flktyRef) {\r\n flktyRef.on('staticClick', (event, pointer, cellElement, cellIndex) => {\r\n if (!cellElement) {\r\n return;\r\n }\r\n const type = hasIn(cellElement, 'dataset.type')\r\n ? cellElement.dataset.type\r\n : undefined;\r\n if (type && type === 'big' && fullScreenActive === false) {\r\n setIndexZoom(cellIndex);\r\n setFullScreenActive(!fullScreenActive);\r\n }\r\n });\r\n }\r\n return (\r\n <>\r\n {fullScreenActive && (\r\n {\r\n setFullScreenActive(false);\r\n },\r\n },\r\n startIndex: indexZoom,\r\n }}\r\n items={itemsZoom(\r\n props.carousel\r\n )}>\r\n )}\r\n {\r\n {\r\n setFlktyRef(c);\r\n }}\r\n options={props.flcktyOption}>\r\n {carouselFullscreen(props.carousel, props.carouselSize)}\r\n \r\n }\r\n \r\n );\r\n};\r\n\r\nexport default ProductCarousel;\r\n","import React from 'react';\r\nimport { includes, isNil } from 'lodash';\r\nimport './DisbursementSimulator.scss';\r\n\r\nconst DisbursementSimulator = ({ financingEnabled, currentAmount }) => {\r\n return (\r\n <>\r\n {financingEnabled &&\r\n !isNil(currentAmount) &&\r\n currentAmount !== 0 && (\r\n
\r\n \r\n
\r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default DisbursementSimulator;\r\n","const generateCountdown = (target) => {\r\n const now = Date.now();\r\n const timeLeftInSeconds = Math.floor((target.getTime() - now) / 1000);\r\n const daysLeft = Math.floor(timeLeftInSeconds / (24 * 60 * 60));\r\n const timeLeftInHours = timeLeftInSeconds % (24 * 60 * 60);\r\n const hoursLeft = Math.floor(timeLeftInHours / (60 * 60));\r\n const timeLeftInMinutes = timeLeftInHours % (60 * 60);\r\n const minutesLeft = Math.floor(timeLeftInMinutes / 60);\r\n const secondsLeft = timeLeftInMinutes % 60;\r\n\r\n return {\r\n days: daysLeft,\r\n hours: hoursLeft,\r\n minutes: minutesLeft,\r\n seconds: secondsLeft,\r\n };\r\n};\r\n\r\nconst generateCountdownText = ({ days, hours, minutes, seconds }) => {\r\n if (!days && !hours && !minutes && !seconds) return '';\r\n\r\n return `${days < 10 ? '0' + days : days}d ${\r\n hours < 10 ? '0' + hours : hours\r\n }h ${\r\n minutes < 10 ? '0' + minutes : minutes\r\n }m ${seconds < 10 ? '0' + seconds : seconds}s`;\r\n};\r\n\r\nexport default { generateCountdown, generateCountdownText };\r\n","import { isNaN, isNil } from 'lodash';\r\nimport React, { useEffect, useState } from 'react';\r\nimport countDownHelper from '../../../help/countdown';\r\n\r\nconst ProductOfferDescription = ({ tag, idx }) => {\r\n const [countDown, setCountDown] = useState({\r\n days: 0,\r\n hours: 0,\r\n minutes: 0,\r\n seconds: 0,\r\n });\r\n\r\n const generateDescription = () => {\r\n const targetDate = new Date(tag.countdown);\r\n const r = new RegExp(/(\\[\\[\\s*countdown\\s*\\]\\])+/gi);\r\n if (\r\n isNil(tag.countdown) ||\r\n isNaN(targetDate.getTime()) ||\r\n Date.now() >= targetDate.getTime()\r\n ) {\r\n return tag.descriptionText.replace(r, '').trim();\r\n }\r\n const countDownText = countDownHelper.generateCountdownText(countDown);\r\n return tag.descriptionText.replace(r, countDownText);\r\n };\r\n\r\n useEffect(() => {\r\n const targetDate = new Date(tag.countdown);\r\n if (\r\n !isNil(tag.countdown) &&\r\n !isNaN(targetDate.getTime()) &&\r\n Date.now() < targetDate.getTime()\r\n ) {\r\n const interval = setInterval(() => {\r\n const c = countDownHelper.generateCountdown(targetDate);\r\n setCountDown(c);\r\n }, 250);\r\n\r\n return () => clearInterval(interval);\r\n }\r\n }, []);\r\n\r\n return !tag.descriptionText ? (\r\n <>\r\n ) : (\r\n
\r\n {idx === 0 && (\r\n \r\n \r\n \r\n )}\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default ProductOfferDescription;\r\n","import React from \"react\";\r\nimport translateService from \"../../../common/translateService\";\r\n\r\nimport \"./LowerPriceMessage.scss\";\r\n\r\nconst LowerPriceMessage = ({ lowerPrice }) => {\r\n return !_.isNil(lowerPrice) && !_.isEmpty(lowerPrice) ? (\r\n
\r\n
\r\n \r\n {translateService.interpolate(`lowerPrice.lowerPriceThanXDays`, {\r\n days: 30,\r\n })}\r\n \r\n  \r\n \r\n {lowerPrice}\r\n \r\n
\r\n
\r\n ) : (\r\n <>\r\n );\r\n};\r\n\r\nexport default LowerPriceMessage;\r\n","import React, { useState, useEffect } from 'react';\r\nimport {\r\n forEach,\r\n isArray,\r\n isEmpty,\r\n isNil,\r\n isObject,\r\n isString,\r\n map,\r\n some,\r\n trim,\r\n} from 'lodash';\r\nimport Globalizer from '../../../globalizer';\r\nimport translateService from '../../../common/translateService';\r\nimport { getPriceGroup } from '../../../services/product/productService';\r\nimport DisbursementSimulator from '../../DisbursementSimulator.jsx';\r\nimport ProductOfferDescription from './ProductOfferDescription.jsx';\r\nimport LowerPriceMessage from './LowerPriceMessage.jsx';\r\n\r\nimport './ProductPrice.scss';\r\n\r\nconst ProductPrice = ({\r\n isKit,\r\n basePrice,\r\n option,\r\n qtySelected,\r\n tagsProps,\r\n currencySymbol,\r\n decimalPlaces,\r\n lowerPrice,\r\n isKlarnaAvailable,\r\n culture,\r\n financingEnabled,\r\n hasManyPrices,\r\n}) => {\r\n Globalizer.init();\r\n\r\n const [price, setPrice] = useState({\r\n priceCalculated: 0,\r\n discount: 0,\r\n priceRetail: 0,\r\n priceGroup: 0,\r\n fullPriceObject: isKit\r\n ? basePrice\r\n : !isEmpty(option)\r\n ? option.price\r\n : basePrice,\r\n });\r\n const [tags, setTags] = useState([]);\r\n\r\n useEffect(() => {\r\n const newFullPriceObject = isKit\r\n ? basePrice\r\n : !isEmpty(option)\r\n ? option.price\r\n : basePrice;\r\n const g = getPriceGroup(newFullPriceObject, qtySelected);\r\n const discount = calculateDiscount(\r\n newFullPriceObject[`price${g}`],\r\n newFullPriceObject.priceRetail\r\n );\r\n\r\n setPrice({\r\n priceCalculated: newFullPriceObject[`price${g}`],\r\n discount: discount,\r\n priceRetail: newFullPriceObject.priceRetail,\r\n priceGroup: g,\r\n fullPriceObject: newFullPriceObject,\r\n });\r\n }, [basePrice]);\r\n\r\n useEffect(() => {\r\n const g = getPriceGroup(price.fullPriceObject, qtySelected);\r\n\r\n if (g !== price.priceGroup) {\r\n setPrice((prevPrice) => {\r\n return {\r\n ...prevPrice,\r\n priceGroup: g,\r\n };\r\n });\r\n }\r\n }, [qtySelected]);\r\n\r\n useEffect(() => {\r\n const p = isKit ? basePrice : !isEmpty(option) ? option.price : basePrice;\r\n\r\n setPrice((prevPrice) => {\r\n const newPrice = p[`price${prevPrice.priceGroup}`];\r\n const discount = calculateDiscount(newPrice, price.priceRetail);\r\n\r\n return {\r\n ...prevPrice,\r\n priceCalculated: newPrice,\r\n discount: discount,\r\n fullPriceObject: p,\r\n };\r\n });\r\n }, [price.priceGroup]);\r\n\r\n useEffect(() => {\r\n if (!isNil(option) && !isEmpty(option)) {\r\n let priceVariation = 0;\r\n\r\n if (isKit) {\r\n forEach(option, (o) => {\r\n priceVariation += o.priceVariation;\r\n });\r\n } else {\r\n priceVariation += option.priceVariation;\r\n }\r\n\r\n setPrice((prevPrice) => {\r\n const newFullPriceObject = isKit ? basePrice : option.price;\r\n const newPriceRetail = newFullPriceObject.priceRetail;\r\n const newPrice =\r\n newFullPriceObject[`price${prevPrice.priceGroup}`] + priceVariation;\r\n const discount = calculateDiscount(newPrice, newPriceRetail);\r\n\r\n return {\r\n ...prevPrice,\r\n priceCalculated: newPrice,\r\n priceRetail: newPriceRetail,\r\n discount: discount,\r\n fullPriceObject: newFullPriceObject,\r\n };\r\n });\r\n } else {\r\n setPrice((prevPrice) => {\r\n const newFullPriceObject = basePrice;\r\n const newPriceRetail = newFullPriceObject.priceRetail;\r\n const newPrice = newFullPriceObject[`price${prevPrice.priceGroup}`];\r\n const discount = calculateDiscount(newPrice, newPriceRetail);\r\n\r\n return {\r\n ...prevPrice,\r\n fullPriceObject: newFullPriceObject,\r\n priceRetail: newPriceRetail,\r\n priceCalculated: newPrice,\r\n discount: discount,\r\n };\r\n });\r\n }\r\n }, [option]);\r\n\r\n useEffect(() => {\r\n setTags(getTagsArray(tagsProps));\r\n }, [tagsProps]);\r\n\r\n const getTagsArray = (tags) => {\r\n try {\r\n if (isArray(tags)) return tags;\r\n\r\n if (isString(tags)) {\r\n const serializedData = JSON.parse(tags);\r\n if (isArray(serializedData)) return serializedData;\r\n if (isObject(serializedData)) return [serializedData];\r\n\r\n return [];\r\n }\r\n if (isObject(tags)) return [tags];\r\n\r\n return [];\r\n } catch (error) {\r\n console.error('Error in ProductTags', error);\r\n return [];\r\n }\r\n };\r\n\r\n const shouldShowDiscountDescriptionContainer = (tags) =>\r\n some(tags, (t) => !isNil(t.descriptionText) && !isEmpty(t.descriptionText));\r\n\r\n const calculateDiscount = (price, retailPrice) => {\r\n const discount = Math.floor(100 - (price * 100) / retailPrice);\r\n return discount > 0 ? discount : 0;\r\n };\r\n\r\n const getFormattedPrice = (price, decimalPlaces) => {\r\n return price ? Globalizer.formatNumber(price, decimalPlaces) : '';\r\n };\r\n\r\n const getFormattedDiscount = (discount) => {\r\n return discount\r\n ? Math.floor(discount) === 0\r\n ? ''\r\n : `-${Math.floor(discount)}%`\r\n : '';\r\n };\r\n\r\n const priceRanges = () => {\r\n const ranges = [];\r\n for (let i = 0; i < 4; i++) {\r\n if (price.fullPriceObject[`price${i}`] === 0) {\r\n break;\r\n }\r\n\r\n ranges.push(\r\n = price.fullPriceObject[`price${i}QtaMin`] &&\r\n qtySelected <= price.fullPriceObject[`price${i}QtaMax`]\r\n ? 'selected'\r\n : ''\r\n : qtySelected >= price.fullPriceObject[`price${i}QtaMin`]\r\n ? 'selected'\r\n : ''\r\n }`\r\n )}\r\n key={i}>\r\n
\r\n {price.fullPriceObject[`price${i}QtaMax`] !== 0\r\n ? i === 0\r\n ? translateService.get('productDetail.oneUnit')\r\n : translateService.interpolate(`productDetail.fromXToY`, {\r\n x: price.fullPriceObject[`price${i}QtaMin`],\r\n y: price.fullPriceObject[`price${i}QtaMax`],\r\n })\r\n : translateService.interpolate(`productDetail.moreThan`, {\r\n x: price.fullPriceObject[`price${i}QtaMin`],\r\n })}\r\n
\r\n
\r\n {`${currencySymbol} \r\n ${getFormattedPrice(\r\n price.fullPriceObject[`price${i}`],\r\n decimalPlaces\r\n )}`}\r\n
\r\n
\r\n {getFormattedDiscount(\r\n calculateDiscount(\r\n price.fullPriceObject[`price${i}`],\r\n price.priceRetail\r\n )\r\n )}\r\n
\r\n \r\n );\r\n }\r\n\r\n return ranges;\r\n };\r\n\r\n return (\r\n <>\r\n
\r\n
\r\n

\r\n {price.priceCalculated\r\n ? `${\r\n !isEmpty(option)\r\n ? ''\r\n : isKit || hasManyPrices\r\n ? translateService.get(\r\n 'productCard.ProductPriceStartingFrom'\r\n )\r\n : ''\r\n } ${currencySymbol} ${getFormattedPrice(\r\n price.priceCalculated,\r\n decimalPlaces\r\n )}`\r\n : ''}\r\n

\r\n {price.discount !== 0 ? (\r\n
\r\n

\r\n {`${currencySymbol} \r\n ${getFormattedPrice(\r\n price.priceRetail,\r\n decimalPlaces\r\n )}`}\r\n

\r\n  \r\n

\r\n {getFormattedDiscount(price.discount)}\r\n

\r\n
\r\n ) : (\r\n <>\r\n )}\r\n \r\n {!isNil(tags) &&\r\n !isEmpty(tags) &&\r\n shouldShowDiscountDescriptionContainer(tags) ? (\r\n
\r\n {map(tags, (t, idx) => (\r\n \r\n ))}\r\n
\r\n ) : (\r\n <>\r\n )}\r\n
\r\n
\r\n {financingEnabled && (\r\n \r\n )}\r\n {isKlarnaAvailable && (\r\n \r\n )}\r\n {/* {isPayPalAvailable && (\r\n
\r\n
\r\n
\r\n )} */}\r\n
\r\n \r\n {Boolean(price.fullPriceObject.price1) && (\r\n
{priceRanges()}
\r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default ProductPrice;\r\n","import React from 'react';\r\nimport { decode } from 'html-entities';\r\nimport './ProductDestinationNote.scss';\r\nimport translateService from '../../../common/translateService';\r\nimport { openDestinationNotes } from '../../../services/product/productInteraction';\r\n\r\nconst ProductDestinationNote = (props) => {\r\n const toggleSection = (e) => {\r\n openDestinationNotes(e);\r\n };\r\n\r\n return (\r\n <>\r\n {Boolean(props.destinationNote) && (\r\n <>\r\n {\r\n toggleSection(e);\r\n }}>\r\n {translateService.get('common.whyDoISeeThisPrice')}\r\n

\r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default ProductDestinationNote;\r\n","import React from 'react';\r\nimport translateService from '../../../common/translateService';\r\nimport { isDiscontinued } from '../../../services/product/productService';\r\n\r\nimport './ProductInfo.scss';\r\n\r\nconst ProductInfo = (props) => {\r\n return (\r\n <>\r\n {props.isKit && (\r\n <>\r\n {!props.kitAvailable && (\r\n
\r\n

\r\n {translateService.get(\r\n `productDetail.oneOrMoreComponentUnavailable`\r\n )}\r\n

\r\n
\r\n )}\r\n

\r\n {translateService.get(\r\n `productDetail.productKitIncludes`\r\n )}\r\n

\r\n \r\n )}\r\n {isDiscontinued(props.options, props.isKit) && (\r\n
\r\n

\r\n {translateService.get(`productDetail.untilDepletion`)}\r\n

\r\n
\r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default ProductInfo;\r\n","import React from 'react';\r\nimport { map } from 'lodash';\r\nimport common from '../../../common/common';\r\nimport translateService from '../../../common/translateService';\r\nimport {\r\n getQtyAvailable,\r\n isAvailable,\r\n isBooking,\r\n isBookingOverstock,\r\n isPreorder,\r\n isSoonAvailable,\r\n} from '../../../services/product/productService';\r\nimport {\r\n showOverlay,\r\n hideOverlay,\r\n} from '../../../services/product/productInteraction';\r\n\r\nconst ProductOptionsColor = (props) => {\r\n const handleMouseEnter = (e) => {\r\n showOverlay(e, props.isMobile);\r\n };\r\n\r\n const handleMouseLeave = (e) => {\r\n hideOverlay(e, props.isMobile);\r\n };\r\n\r\n const handleClick = (e) => {\r\n props.updateSelection(e, true);\r\n };\r\n\r\n const colorGallery = map(props.values, (v, i) => {\r\n const qtyAvailable = getQtyAvailable(\r\n props.isKit,\r\n props.selection,\r\n props.options,\r\n props.attrName,\r\n v.value,\r\n );\r\n const booking =\r\n isBooking(\r\n v.value,\r\n props.attrName,\r\n props.options,\r\n props.selection,\r\n props.isKit,\r\n ) ||\r\n isBookingOverstock(\r\n props.options,\r\n props.attrName,\r\n v.value,\r\n props.selection,\r\n props.isKit,\r\n );\r\n const soonAvailable = isSoonAvailable(\r\n v.value,\r\n props.attrName,\r\n props.options,\r\n props.selection,\r\n props.isKit,\r\n );\r\n const preorder = isPreorder(\r\n v.value,\r\n props.attrName,\r\n props.options,\r\n props.selection,\r\n props.isKit,\r\n );\r\n\r\n const availableOrBooking =\r\n isAvailable(\r\n props.isKit,\r\n props.selection,\r\n props.options,\r\n props.attrName,\r\n v.value,\r\n props.qtySelected,\r\n ) ||\r\n booking ||\r\n preorder;\r\n\r\n return (\r\n \r\n \r\n \r\n {availableOrBooking && (\r\n = props.qtySelected || soonAvailable || preorder\r\n ? 'green'\r\n : 'blue'\r\n }`}\r\n />\r\n )}\r\n {availableOrBooking && v.value === props.selection[props.attrName] && (\r\n = props.qtySelected || soonAvailable || preorder\r\n ? 'green'\r\n : 'blue'\r\n }`}\r\n >\r\n {qtyAvailable >= props.qtySelected\r\n ? translateService.get(`productDetail.availability.available`)\r\n : preorder\r\n ? translateService.get(`productDetail.availability.preorder`)\r\n : translateService.get(`productDetail.availability.booking`)}\r\n

\r\n )}\r\n \r\n );\r\n });\r\n\r\n return (\r\n
\r\n

\r\n {props.name}:{' '}\r\n {props.selection[props.attrName]}\r\n

\r\n
{colorGallery}
\r\n
\r\n );\r\n};\r\n\r\nexport default ProductOptionsColor;\r\n","import React from 'react';\r\nimport Modal from 'react-modal';\r\nimport { isNil, map, toUpper } from 'lodash';\r\nimport translateService from '../../../common/translateService';\r\nimport { scrollToSizeChart } from '../../../services/product/productInteraction';\r\nimport {\r\n getAvailabilityLabel,\r\n getAvailabilityCssClass,\r\n} from '../../../services/product/productService';\r\n\r\nconst ProductOptionsSize = (props) => {\r\n Modal.setAppElement('body');\r\n\r\n const handleClick = (e) => {\r\n props.updateSelection(e, false);\r\n props.updateModalState(props.attrName);\r\n };\r\n\r\n const handleScrollToSizeChart = () => {\r\n scrollToSizeChart(props.sizeChartRef);\r\n };\r\n\r\n const handleModalStateChange = () => {\r\n props.updateModalState(props.attrName);\r\n };\r\n\r\n const sizeSelection = map(props.values, (v, i) => {\r\n const cssClassAvailability = getAvailabilityCssClass(\r\n props.isKit,\r\n props.selection,\r\n props.options,\r\n props.attrName,\r\n v.value,\r\n props.qtySelected,\r\n );\r\n const text = getAvailabilityLabel(\r\n props.isKit,\r\n props.selection,\r\n props.options,\r\n props.attrName,\r\n v.value,\r\n props.qtySelected,\r\n );\r\n\r\n return (\r\n \r\n {toUpper(v.value)}\r\n {text}\r\n \r\n );\r\n });\r\n\r\n return (\r\n
\r\n

\r\n {props.name}\r\n {!isNil(props.sizeChartRef.current) && (\r\n \r\n {translateService.get(`productDetail.sizeChart`)}\r\n \r\n )}\r\n

\r\n
\r\n {props.isMobile ? (\r\n <>\r\n \r\n \r\n {props.selection[props.attrName] ? (\r\n <>\r\n {toUpper(props.selection[props.attrName])} -{' '}\r\n {getAvailabilityLabel(\r\n props.isKit,\r\n props.selection,\r\n props.options,\r\n props.attrName,\r\n props.selection[props.attrName],\r\n props.qtySelected,\r\n )}\r\n \r\n ) : (\r\n translateService.get(`productDetail.select`)\r\n )}\r\n \r\n \r\n 〉\r\n \r\n \r\n \r\n
\r\n
\r\n

{translateService.get(`productDetail.selectSize`)}

\r\n \r\n ×\r\n \r\n
\r\n
\r\n {sizeSelection}\r\n
\r\n
\r\n \r\n \r\n ) : (\r\n sizeSelection\r\n )}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default ProductOptionsSize;\r\n","import React from 'react';\r\nimport Modal from 'react-modal';\r\nimport { find, isEmpty, isNil, map, trim } from 'lodash';\r\nimport translateService from '../../../common/translateService';\r\nimport {\r\n getAvailabilityLabel,\r\n getAvailabilityCssClass,\r\n} from '../../../services/product/productService';\r\nimport common from '../../../common/common';\r\n\r\nconst ProductOptionsOther = (props) => {\r\n Modal.setAppElement('body');\r\n\r\n const handleClick = (e) => {\r\n props.updateSelection(e, false);\r\n props.updateModalState(props.attrName);\r\n };\r\n\r\n const handleModalStateChange = () => {\r\n props.updateModalState(props.attrName);\r\n };\r\n\r\n const generateSelectionPropValues = () => {\r\n return map(props.values, (v, i) => {\r\n const val = props.isKit ? String(v.kitOptionId) : v.value;\r\n return (\r\n \r\n {v.value}\r\n {getAvailabilityLabel(\r\n props.isKit,\r\n props.selection,\r\n props.options,\r\n props.attrName,\r\n val,\r\n props.qtySelected,\r\n )}\r\n \r\n );\r\n });\r\n };\r\n\r\n const generateSelectionWithNoPropValues = () => {\r\n return (\r\n \r\n {getAvailabilityLabel(\r\n props.isKit,\r\n props.selection,\r\n props.options,\r\n props.attrName,\r\n props.kitOptionId,\r\n props.qtySelected,\r\n )}\r\n \r\n );\r\n };\r\n\r\n const otherSelection = !isEmpty(props.values) ? (\r\n generateSelectionPropValues()\r\n ) : (\r\n <>\r\n {!isEmpty(props.nameAttributes) && (\r\n \r\n {props.nameAttributes}\r\n \r\n )}\r\n {generateSelectionWithNoPropValues()}\r\n \r\n );\r\n\r\n const getAttributeSelectText = () => {\r\n if (props.selection[props.attrName]) {\r\n if (props.isKit) {\r\n console.log('selection: ', props.selection);\r\n const attribute = find(\r\n props.attributes,\r\n (i) => i.fieldId === props.attrName,\r\n );\r\n if (!isNil(attribute)) {\r\n const val = find(\r\n attribute.values,\r\n (v) => String(v.kitOptionId) === props.selection[props.attrName],\r\n );\r\n\r\n console.log('val: ', val);\r\n return isNil(val) ? (\r\n ''\r\n ) : (\r\n <>\r\n {val.value} -{' '}\r\n {getAvailabilityLabel(\r\n props.isKit,\r\n props.selection,\r\n props.options,\r\n props.attrName,\r\n props.selection[props.attrName],\r\n props.qtySelected,\r\n )}\r\n \r\n );\r\n }\r\n }\r\n return (\r\n <>\r\n {props.selection[props.attrName]} -{' '}\r\n {getAvailabilityLabel(\r\n props.isKit,\r\n props.selection,\r\n props.options,\r\n props.attrName,\r\n props.selection[props.attrName],\r\n props.qtySelected,\r\n )}\r\n \r\n );\r\n }\r\n return translateService.get(`productDetail.select`);\r\n };\r\n\r\n return (\r\n
\r\n \r\n {props.isKit ? (\r\n <>\r\n {props.qtyNeeded > 1 ? (\r\n \r\n {props.qtyNeeded} x \r\n \r\n ) : (\r\n <>\r\n )}\r\n \r\n {props.name}\r\n \r\n \r\n ) : (\r\n {props.name}\r\n )}\r\n \r\n\r\n {otherSelection.length > 0 ? (\r\n \r\n \r\n \r\n {getAttributeSelectText()}\r\n \r\n \r\n 〉\r\n \r\n \r\n \r\n
\r\n
\r\n

{translateService.get(`productDetail.select`)}

\r\n \r\n ×\r\n \r\n
\r\n
\r\n {otherSelection}\r\n
\r\n
\r\n \r\n
\r\n ) : (\r\n otherSelection\r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default ProductOptionsOther;\r\n","import React from 'react';\r\nimport ProductOptionsColor from './ProductOptionsColor.jsx';\r\nimport ProductOptionsSize from './ProductOptionsSize.jsx';\r\nimport ProductOptionsOther from './ProductOptionsOther.jsx';\r\nimport { map } from 'lodash';\r\nimport './ProductOptions.scss';\r\n\r\nconst ProductOptions = (props) => {\r\n const options = map(props.attributes, (a, idx) => {\r\n const attrName = a.fieldId;\r\n\r\n switch (a.kind) {\r\n case 0:\r\n return (\r\n \r\n );\r\n case 1:\r\n return (\r\n \r\n );\r\n case 2:\r\n return (\r\n \r\n );\r\n default:\r\n return <>;\r\n }\r\n });\r\n\r\n return <>{options};\r\n};\r\n\r\nexport default ProductOptions;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { trim } from 'lodash';\r\nimport Globalizer from '../../../globalizer';\r\nimport translateService from '../../../common/translateService';\r\nimport {\r\n isFastShipping,\r\n getDeliveryMessage,\r\n getFastShippingMessage,\r\n getBookingDays,\r\n getPreorderDate,\r\n getComingSoonDate,\r\n} from '../../../services/product/productService';\r\nimport productsAvailabilityStatus from './productsAvailabilityStatus';\r\n\r\nimport './ProductAvailabilityNote.scss';\r\n\r\nconst ProductAvailabilityNote = (props) => {\r\n Globalizer.init();\r\n\r\n const [deliveryInfo, setDeliveryInfo] = useState({\r\n minutesToTodayShipping: 0,\r\n shippingDate: '',\r\n });\r\n const [timeToFastShipping, setTimeToFastShipping] = useState({\r\n hours: 0,\r\n minutes: 0,\r\n });\r\n\r\n async function manageDeliveryInfo() {\r\n const now = new Date();\r\n const deliveryInformation = await getDeliveryMessage(now);\r\n\r\n setDeliveryInfo({\r\n minutesToTodayShipping: deliveryInformation.minutesToTodayShipping,\r\n shippingDate: deliveryInformation.shippingDate,\r\n });\r\n\r\n const target =\r\n deliveryInformation.minutesToTodayShipping > 0\r\n ? new Date(\r\n now.getTime() + deliveryInformation.minutesToTodayShipping * 60000,\r\n )\r\n : new Date();\r\n\r\n if (deliveryInformation.minutesToTodayShipping > 0) {\r\n const totalMinutes = Math.floor(\r\n (target.getTime() - now.getTime()) / 60000,\r\n );\r\n const hours = Math.floor(totalMinutes / 60);\r\n const minutes = totalMinutes % 60;\r\n\r\n setTimeToFastShipping({\r\n hours: hours,\r\n minutes: minutes,\r\n });\r\n\r\n setInterval(() => {\r\n updateCountdown(target);\r\n }, 15000);\r\n }\r\n }\r\n\r\n const updateCountdown = (target) => {\r\n const now = new Date();\r\n\r\n if (now.getTime() <= target.getTime()) {\r\n const totalMinutes = Math.floor(\r\n (target.getTime() - now.getTime()) / 60000,\r\n );\r\n const hours = Math.floor(totalMinutes / 60);\r\n const minutes = totalMinutes % 60;\r\n\r\n setTimeToFastShipping({\r\n hours: hours,\r\n minutes: minutes,\r\n });\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n manageDeliveryInfo();\r\n }, []);\r\n\r\n return (\r\n \r\n 10\r\n ? translateService.get(`productDetail.moreThanTen`)\r\n : props.qtyAvailable > 5\r\n ? translateService.get(`productDetail.moreThanFive`)\r\n : props.qtyAvailable,\r\n shippingMessage: isFastShipping(\r\n deliveryInfo.minutesToTodayShipping,\r\n )\r\n ? getFastShippingMessage(\r\n timeToFastShipping.hours,\r\n timeToFastShipping.minutes,\r\n )\r\n : deliveryInfo.shippingDate\r\n ? translateService.interpolate(`productDetail.shippingDate`, {\r\n date: Globalizer.formatDateFull(deliveryInfo.shippingDate),\r\n })\r\n : '',\r\n pathBase: window.$pathBase,\r\n days:\r\n props.availabilityStatus ===\r\n productsAvailabilityStatus.booking ||\r\n props.availabilityStatus ===\r\n productsAvailabilityStatus.soonAvailable\r\n ? getBookingDays(props.option, props.isKit)\r\n : '',\r\n date:\r\n props.availabilityStatus === productsAvailabilityStatus.preorder\r\n ? Globalizer.formatDateShort(\r\n getPreorderDate(props.option, props.isKit),\r\n )\r\n : props.availabilityStatus ===\r\n productsAvailabilityStatus.comingSoon\r\n ? Globalizer.formatDateShort(\r\n getComingSoonDate(props.option, props.isKit),\r\n )\r\n : '',\r\n },\r\n ),\r\n }}\r\n />\r\n \r\n );\r\n};\r\n\r\nexport default ProductAvailabilityNote;\r\n","import React from \"react\";\r\nimport { trim } from \"lodash\";\r\n\r\nconst RangeInput = ({\r\n qtySelected,\r\n decreaseQty,\r\n updateQty,\r\n handleBlur,\r\n increaseQty,\r\n maxQty,\r\n minQty,\r\n}) => {\r\n return (\r\n
\r\n \r\n –\r\n \r\n \r\n = maxQty ? \"inactive\" : \"\"}`\r\n )}\r\n onClick={increaseQty}>\r\n +\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default RangeInput;\r\n","import React from 'react';\r\nimport { isNil } from 'lodash';\r\n\r\nconst Button = ({ className, text, onClick, type }) => {\r\n return (\r\n \r\n {text}\r\n \r\n );\r\n};\r\n\r\nexport default Button;\r\n","import React from 'react';\r\nimport { trim } from 'lodash';\r\nimport common from '../../../common/common';\r\nimport translateService from '../../../common/translateService';\r\nimport RangeInput from '../common/RangeInput.jsx';\r\nimport Button from '../../Button.jsx';\r\nimport productsAvailabilityStatus from './productsAvailabilityStatus';\r\n\r\nimport './ProductOptions.scss';\r\n\r\nconst ProductQuantity = (props) => {\r\n const handleButtonClick = () => {\r\n props.handleCTAClick();\r\n };\r\n\r\n const isUnpurchaseable = () => {\r\n return (\r\n props.availabilityStatus === productsAvailabilityStatus.discontinued ||\r\n props.availabilityStatus === productsAvailabilityStatus.qtyDiscontinued ||\r\n props.availabilityStatus === '' ||\r\n props.availabilityStatus === productsAvailabilityStatus.optionUnavailable\r\n );\r\n };\r\n\r\n const getCssClass = () => {\r\n if (isUnpurchaseable()) {\r\n return '';\r\n }\r\n\r\n return props.availabilityStatus === productsAvailabilityStatus.booking ||\r\n props.qtySelected <= props.qtyAvailable ||\r\n props.availabilityStatus === productsAvailabilityStatus.soonAvailable\r\n ? 'active'\r\n : 'reassortment';\r\n };\r\n\r\n const getText = () => {\r\n if (isUnpurchaseable()) return 'addToCart';\r\n if (props.selectiveDistribution) return 'buyOn';\r\n\r\n return props.availabilityStatus === productsAvailabilityStatus.booking ||\r\n props.qtySelected <= props.qtyAvailable ||\r\n props.availabilityStatus === productsAvailabilityStatus.soonAvailable\r\n ? 'addToCart'\r\n : 'activateReassortMentNotification';\r\n };\r\n\r\n return (\r\n
\r\n

\r\n \r\n {translateService.get(`productDetail.quantity`)}\r\n \r\n

\r\n
\r\n \r\n
\r\n {!props.userAuthenticated &&\r\n !isUnpurchaseable() &&\r\n props.availabilityStatus !== productsAvailabilityStatus.booking &&\r\n props.availabilityStatus !==\r\n productsAvailabilityStatus.soonAvailable &&\r\n props.qtySelected > props.qtyAvailable ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default ProductQuantity;\r\n","import React from 'react';\r\nimport { find, isEmpty, isNil, join, reduce, slice, some } from 'lodash';\r\nimport translateService from '../../../common/translateService.js';\r\n\r\nimport './ProductSelectionHint.scss';\r\n\r\nconst ProductSelectionHint = ({ selectionAttributes, productAttributes }) => {\r\n const formatAttributes = (attr) => {\r\n let s = reduce(\r\n attr,\r\n (prev, currVal, currKey) => {\r\n const attribute = find(\r\n productAttributes,\r\n (p) => p.fieldId === currKey\r\n );\r\n return (prev += isNil(currVal)\r\n ? !isNil(attribute)\r\n ? `${attribute.name}, `\r\n : ''\r\n : '');\r\n },\r\n ''\r\n );\r\n\r\n if (!isEmpty(s)) {\r\n s = join(slice(s, 0, s.length - 2), '');\r\n }\r\n\r\n return s;\r\n };\r\n\r\n const formattedAttributes =\r\n isNil(selectionAttributes) ||\r\n isEmpty(selectionAttributes) ||\r\n !some(selectionAttributes, (v) => isNil(v))\r\n ? ''\r\n : formatAttributes(selectionAttributes);\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default ProductSelectionHint;\r\n","import React, { useState, useEffect } from 'react';\r\nimport { getOriginalDescription } from '../../../services/product/productService';\r\nimport translateService from '../../../common/translateService';\r\n\r\nconst ProductDescription = (props) => {\r\n const [descriptionInLanguage, setDescriptionInLanguage] = useState('');\r\n const [descriptionInOriginalLanguage, setDescriptionInOriginalLanguage] =\r\n useState('');\r\n const [descriptionToShow, setDescriptionToShow] = useState({\r\n description: '',\r\n state: 'translated',\r\n message: 'seeOriginal',\r\n });\r\n const [haveFetchedOriginal, setHaveFetchedOriginal] = useState(false);\r\n\r\n const getDescription = async () => {\r\n return await getOriginalDescription(props.descriptionOriginalUrl);\r\n };\r\n\r\n useEffect(() => {\r\n setDescriptionInLanguage(props.description);\r\n setDescriptionToShow((prevState) => ({\r\n ...prevState,\r\n description: props.description,\r\n }));\r\n }, [props.description]);\r\n\r\n const updateTranslation = async () => {\r\n if (!haveFetchedOriginal) {\r\n const description = await getDescription();\r\n setDescriptionInOriginalLanguage(description.description);\r\n setDescriptionToShow({\r\n description: description.description,\r\n state: 'original',\r\n message: 'backToTranslation',\r\n });\r\n setHaveFetchedOriginal(true);\r\n return;\r\n }\r\n\r\n switch (descriptionToShow.state) {\r\n case 'translated':\r\n setDescriptionToShow({\r\n description: descriptionInOriginalLanguage,\r\n state: 'original',\r\n message: 'backToTranslation',\r\n });\r\n break;\r\n case 'original':\r\n setDescriptionToShow({\r\n description: descriptionInLanguage,\r\n state: 'translated',\r\n message: 'seeOriginal',\r\n });\r\n break;\r\n default:\r\n break;\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n {props.descriptionAutomated && (\r\n
\r\n

\r\n !{' '}\r\n {translateService.get(\r\n `productDetail.automatedTranslation.${descriptionToShow.state}`\r\n )}{' '}\r\n \r\n {translateService.get(\r\n `productDetail.${descriptionToShow.message}`\r\n )}\r\n \r\n

\r\n
\r\n )}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default ProductDescription;\r\n","import React, { Suspense, useEffect, useState } from \"react\";\r\nimport { isEmpty, map } from \"lodash\";\r\nimport translateService from \"../../../common/translateService\";\r\nimport common from \"../../../common/common\";\r\nimport { getReviews } from \"../../../services/reviews/reviewsService\";\r\nimport Button from \"../../Button.jsx\";\r\nimport \"./ProductReviews.scss\";\r\n\r\nconst ProductReviews = (props) => {\r\n const ProductReview = React.lazy(() => import(\"./ProductReview.jsx\"));\r\n const [reviews, setReviews] = useState({\r\n productSlug: \"\",\r\n reviews: [],\r\n sortType: 2,\r\n viewingCount: 0,\r\n percAverageRating5: 0,\r\n percAverageRating4: 0,\r\n percAverageRating3: 0,\r\n percAverageRating2: 0,\r\n percAverageRating1: 0,\r\n percAverageQuality5: 0,\r\n percAverageQuality4: 0,\r\n percAverageQuality3: 0,\r\n percAverageQuality2: 0,\r\n percAverageQuality1: 0,\r\n productTitle: null,\r\n writeAReviewLink: \"\",\r\n allReviewsLink: \"\",\r\n page: 0,\r\n pageSize: 10,\r\n totalRecords: 0,\r\n totalPages: 1,\r\n });\r\n\r\n async function init() {\r\n const revs = await getReviews(props.slug);\r\n setReviews(revs);\r\n }\r\n\r\n useEffect(() => {\r\n init();\r\n }, []);\r\n\r\n const revs = map(reviews.reviews, (review, idx) => (\r\n \r\n ));\r\n\r\n return isEmpty(reviews.reviews) ? (\r\n
\r\n

{translateService.get(`reviews.noReviews`)}

\r\n
\r\n {\r\n window.location = common.getSiteUrl(\r\n reviews.writeAReviewLink\r\n );\r\n }}\r\n />\r\n
\r\n
\r\n ) : (\r\n <>\r\n
\r\n {\r\n window.location = common.getSiteUrl(\r\n reviews.writeAReviewLink\r\n );\r\n }}\r\n />\r\n
\r\n
\r\n {revs}\r\n
\r\n
\r\n \r\n {translateService.get(`reviews.allReviews`)}\r\n \r\n
\r\n \r\n );\r\n};\r\n\r\nexport default ProductReviews;\r\n","import React, { Suspense, useEffect, useState } from \"react\";\r\nimport { isEmpty, map } from \"lodash\";\r\nimport translateService from \"../../../common/translateService\";\r\nimport common from \"../../../common/common\";\r\nimport { getQAndA } from \"../../../services/questionAndAnswers/questionAndAnswersService\";\r\nimport Button from \"../../Button.jsx\";\r\nimport \"./ProductQuestionsAndAnswers.scss\";\r\n\r\nconst ProductQuestionsAndAnswers = (props) => {\r\n const ProductQuestionAndAnswer = React.lazy(() =>\r\n import(\"./ProductQuestionAndAnswer.jsx\")\r\n );\r\n const [questions, setQuestions] = useState({\r\n productSlug: \"\",\r\n questions: [],\r\n sortType: 2,\r\n viewingCount: 0,\r\n productTitle: null,\r\n writeAQuestionLink: \"\",\r\n guidelinesLink: \"\",\r\n allQuestionsLink: \"\",\r\n page: 0,\r\n pageSize: 10,\r\n totalRecords: 0,\r\n totalPages: 1,\r\n });\r\n\r\n async function init() {\r\n const q = await getQAndA(props.slug);\r\n setQuestions(q);\r\n }\r\n\r\n useEffect(() => {\r\n init();\r\n }, []);\r\n\r\n const qAndAs = map(questions.questions, (q, idx) => (\r\n \r\n ));\r\n\r\n return isEmpty(questions.questions) ? (\r\n
\r\n

{translateService.get(`questions.noQuestions`)}

\r\n
\r\n {\r\n window.location = common.getSiteUrl(\r\n questions.writeAQuestionLink\r\n );\r\n }}\r\n />\r\n
\r\n
\r\n ) : (\r\n <>\r\n
\r\n

{translateService.get(`questions.questionInfo`)}

\r\n \r\n
\r\n
\r\n {\r\n window.location = common.getSiteUrl(\r\n questions.writeAQuestionLink\r\n );\r\n }}\r\n />\r\n
\r\n
\r\n {qAndAs}\r\n
\r\n
\r\n \r\n {translateService.get(`questions.allQuestions`)}\r\n \r\n
\r\n \r\n );\r\n};\r\n\r\nexport default ProductQuestionsAndAnswers;\r\n","require('intersection-observer');\r\nimport React, { useEffect, useState } from 'react';\r\nimport { forEach, indexOf, isEmpty, map, reduce, trim } from 'lodash';\r\nimport translateService from '../../../common/translateService';\r\nimport {\r\n scrollToSection,\r\n openDetails,\r\n} from '../../../services/product/productInteraction';\r\nimport ProductDescription from './ProductDescription.jsx';\r\nimport ProductReviews from '../reviews/ProductReviews.jsx';\r\nimport ReviewStars from '../reviews/ReviewStars.jsx';\r\nimport ProductQuestionsAndAnswers from '../questionAndAnswers/ProductQuestionsAndAnswers.jsx';\r\nimport './ProductTabs.scss';\r\n\r\nconst ProductTabs = (props) => {\r\n let i = 0,\r\n j = 0;\r\n\r\n const [tabsIntersection, setTabsIntersection] = useState([]);\r\n const [isObserving, setObserving] = useState(false);\r\n const tabs = document.querySelectorAll('.prd-tab');\r\n\r\n useEffect(() => {\r\n // console.log('tabs.length', tabs.length);\r\n // console.log('props.tabsNumber', props.tabsNumber);\r\n // console.log('isObserving', isObserving);\r\n if (\r\n !props.isMobile &&\r\n tabs.length === props.tabsNumber &&\r\n !isObserving\r\n ) {\r\n // console.log('observing...');\r\n observePrdTabs();\r\n setObserving(true);\r\n }\r\n });\r\n\r\n const updateIntersection = (entries, observer) => {\r\n const items = document.querySelectorAll('.prd-tabs-menu-item');\r\n\r\n setTabsIntersection((prevState) => {\r\n const tabElements = prevState;\r\n forEach(entries, (entry) => {\r\n tabElements[Number(entry.target.dataset.index)] =\r\n entry.intersectionRatio;\r\n });\r\n\r\n const indexMaxIntersecting = indexOf(\r\n tabElements,\r\n getMax(tabElements)\r\n );\r\n\r\n forEach(items, (item, idx) => {\r\n if (idx === indexMaxIntersecting) {\r\n item.classList.add('selected');\r\n } else {\r\n item.classList.remove('selected');\r\n }\r\n });\r\n\r\n return tabElements;\r\n });\r\n };\r\n\r\n const getMax = (array) => {\r\n return reduce(array, (prev, curr) => Math.max(prev, curr), 0);\r\n };\r\n\r\n const handleScroll = (e) => {\r\n scrollToSection(e);\r\n };\r\n\r\n const handleOpen = (e) => {\r\n openDetails(e, props.isMobile);\r\n };\r\n\r\n const observePrdTabs = () => {\r\n const tabsObserver = new IntersectionObserver(updateIntersection, {\r\n threshold: [0, 0.25, 0.5, 0.75, 1],\r\n });\r\n\r\n const elementsToWatch = document.querySelectorAll('.prd-tab');\r\n const tabElements = [];\r\n\r\n forEach(elementsToWatch, (el, idx) => {\r\n tabsObserver.observe(el);\r\n tabElements[idx] = 0;\r\n });\r\n\r\n setTabsIntersection(tabElements);\r\n };\r\n\r\n const techspecs = map(props.techSpecs, (t, i) => {\r\n const attribute = map(t.attributes, (a, j) => {\r\n const specs = map(a.specs, (spec, key) => {\r\n return (\r\n \r\n
{key}
\r\n
{spec.value}
\r\n \r\n );\r\n });\r\n\r\n return (\r\n
\r\n \r\n
{specs}
\r\n
\r\n );\r\n });\r\n\r\n return (\r\n
\r\n

{t.productName}

\r\n {attribute}\r\n
\r\n );\r\n });\r\n\r\n return (\r\n <>\r\n {!props.isMobile && (\r\n
\r\n \r\n {translateService.get(`productDetail.tabs.description`)}\r\n \r\n {!isEmpty(props.techSpecs) && (\r\n \r\n {translateService.get(\r\n `productDetail.tabs.techSpecs`\r\n )}\r\n \r\n )}\r\n {props.technologies && (\r\n \r\n {translateService.get(\r\n `productDetail.tabs.technologies`\r\n )}\r\n \r\n )}\r\n {props.brandsGuides && (\r\n \r\n {translateService.get(\r\n `productDetail.tabs.brandsGuides`\r\n )}\r\n \r\n )}\r\n \r\n {`${translateService.get(\r\n `productDetail.tabs.reviews`\r\n )} (${props.revNumber})`}\r\n \r\n \r\n {`${translateService.get(\r\n `productDetail.tabs.qAndA`\r\n )} (${props.qandaNumber})`}\r\n \r\n {props.enableNews && (\r\n \r\n {translateService.get(`productDetail.tabs.top`)}{' '}\r\n \r\n {translateService.get(\r\n `productDetail.tabs.news`\r\n )}\r\n \r\n \r\n )}\r\n
\r\n )}\r\n\r\n
\r\n
\r\n
\r\n

\r\n {translateService.get(\r\n `productDetail.tabs.description`\r\n )}\r\n

\r\n {props.isMobile &&

+

}\r\n
\r\n
\r\n \r\n
\r\n
\r\n {!isEmpty(props.techSpecs) && (\r\n
\r\n
\r\n

\r\n {translateService.get(\r\n `productDetail.tabs.techSpecs`\r\n )}\r\n

\r\n

+

\r\n
\r\n
{techspecs}
\r\n
\r\n )}\r\n {props.technologies && (\r\n \r\n
\r\n

\r\n {translateService.get(\r\n `productDetail.tabs.technologies`\r\n )}\r\n

\r\n {props.isMobile && (\r\n

+

\r\n )}\r\n
\r\n
\r\n
\r\n )}\r\n {props.brandsGuides && (\r\n \r\n
\r\n

\r\n {translateService.get(\r\n `productDetail.tabs.brandsGuides`\r\n )}\r\n

\r\n {props.isMobile && (\r\n

+

\r\n )}\r\n
\r\n \r\n \r\n )}\r\n \r\n
\r\n

\r\n {!props.isMobile\r\n ? translateService.get(\r\n `productDetail.tabs.reviews`\r\n )\r\n : `${translateService.get(\r\n `productDetail.tabs.reviews`\r\n )} (${props.revNumber})`}\r\n

\r\n {!props.isMobile && props.revNumber !== 0 ? (\r\n

\r\n \r\n {props.revAverage}\r\n \r\n /5\r\n \r\n

\r\n ) : (\r\n <>\r\n )}\r\n {props.isMobile &&

+

}\r\n
\r\n
\r\n {props.isMobile && props.revNumber !== 0 ? (\r\n

\r\n \r\n {props.revAverage}\r\n \r\n /5\r\n \r\n

\r\n ) : (\r\n <>\r\n )}\r\n \r\n
\r\n \r\n
\r\n
\r\n

\r\n {!props.isMobile\r\n ? translateService.get(\r\n `productDetail.tabs.qAndA`\r\n )\r\n : `${translateService.get(\r\n `productDetail.tabs.qAndA`\r\n )} (${props.qandaNumber})`}\r\n

\r\n {props.isMobile &&

+

}\r\n
\r\n
\r\n \r\n
\r\n
\r\n {props.enableNews && (\r\n
\r\n
\r\n

\r\n {translateService.get(`productDetail.tabs.top`)}{' '}\r\n \r\n {translateService.get(\r\n `productDetail.tabs.news`\r\n )}\r\n \r\n

\r\n {props.isMobile && (\r\n

+

\r\n )}\r\n
\r\n
\r\n
\r\n )}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default ProductTabs;\r\n","import React from 'react';\r\nimport Globalizer from '../../../globalizer';\r\nimport translateService from '../../../common/translateService';\r\nimport common from '../../../common/common';\r\nimport './ProductNotes.scss';\r\n\r\nconst ProductNotes = (props) => {\r\n Globalizer.init();\r\n\r\n return (\r\n
\r\n {props.freeShipping && (\r\n
\r\n {' '}\r\n

{translateService.get(`productDetail.freeShipping`)}

\r\n
\r\n )}\r\n
\r\n {props.countryHasFreeShipping && props.freeShippingThreshold && (\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n {translateService.get(`productDetail.freeShippings`)}\r\n \r\n \r\n {translateService.interpolate(\r\n `productDetail.freeShippingsNote`,\r\n {\r\n price: `${props.currencySymbol} ${Globalizer.formatNumber(\r\n props.freeShippingThreshold,\r\n props.currencyDecimalPlaces,\r\n )}`,\r\n },\r\n )}\r\n \r\n
\r\n
\r\n )}\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n {translateService.get(`productDetail.securePayments`)}\r\n \r\n \r\n {translateService.get(`productDetail.securePaymentsNote`)}\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n {translateService.get(`productDetail.fastDispatch`)}\r\n \r\n \r\n {translateService.get(`productDetail.fastDispatchNote`)}\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default ProductNotes;\r\n","import React from 'react';\r\nimport { isEmpty, map } from 'lodash';\r\nimport Globalizer from '../../../globalizer';\r\nimport common from '../../../common/common';\r\nimport translateService from '../../../common/translateService';\r\nimport Button from '../../Button.jsx';\r\nimport './ProductSummary.scss';\r\n\r\nconst ProductSummary = ({ data, handleModalStateChange, currencySymbol }) => {\r\n Globalizer.init();\r\n\r\n return data.isSuccess ? (\r\n data.isReassortment ? (\r\n
\r\n
\r\n

\r\n \r\n \r\n \r\n {translateService.get(\r\n `productDetail.cart.label.unavailable`\r\n )}\r\n

\r\n \r\n ×\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n

\r\n {data.productTitle}\r\n

\r\n
\r\n {map(data.productAttributes, (value, key) => {\r\n return (\r\n

\r\n {isEmpty(value) ? (\r\n {key}\r\n ) : (\r\n <>\r\n {`${key}: `}\r\n {value}\r\n \r\n )}\r\n

\r\n );\r\n })}\r\n

{`${translateService.get(\r\n `productDetail.quantity`\r\n )}: ${data.productQuantityAdded}`}

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {\r\n window.location = data.url;\r\n }}\r\n />{' '}\r\n {/* \r\n {translateService.get(\r\n `productDetail.cart.goToNotifications`\r\n )}\r\n */}\r\n \r\n {translateService.get(\r\n `productDetail.cart.continueShopping`\r\n )}\r\n \r\n
\r\n
\r\n ) : (\r\n
\r\n
\r\n

\r\n \r\n \r\n \r\n {translateService.get(\r\n `productDetail.cart.label.available`\r\n )}\r\n

\r\n \r\n ×\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n

\r\n {data.productTitle}\r\n

\r\n
\r\n

\r\n {`${currencySymbol} ${Globalizer.formatNumber(\r\n data.productPriceDiscounted\r\n )}`}\r\n

\r\n {data.productPriceDiscounted !==\r\n data.productPriceFull && (\r\n

\r\n {`${currencySymbol} ${Globalizer.formatNumber(\r\n data.productPriceFull\r\n )}`}\r\n

\r\n )}\r\n
\r\n
\r\n {map(data.productAttributes, (value, key) => {\r\n return (\r\n

\r\n {isEmpty(value) ? (\r\n {key}\r\n ) : (\r\n <>\r\n {`${key}: `}\r\n {value}\r\n \r\n )}\r\n

\r\n );\r\n })}\r\n

{`Qty: ${data.productQuantityAdded}`}

\r\n
\r\n
\r\n
\r\n
\r\n

\r\n {`${translateService.get(\r\n `productDetail.cart.itemsInCart`\r\n )}: ${data.cartTotalItems}`}\r\n

\r\n
\r\n
\r\n
\r\n {\r\n window.location = data.url;\r\n }}\r\n />\r\n {/* \r\n {translateService.get(`productDetail.cart.goToCart`)}\r\n */}\r\n \r\n {translateService.get(\r\n `productDetail.cart.continueShopping`\r\n )}\r\n \r\n
\r\n
\r\n )\r\n ) : (\r\n
\r\n
\r\n

\r\n \r\n \r\n \r\n \r\n {translateService.get(`productDetail.genericError`)}\r\n

\r\n \r\n ×\r\n \r\n
\r\n
\r\n

{data.message}

\r\n
\r\n
\r\n \r\n {translateService.get(\r\n `productDetail.cart.continueShopping`\r\n )}\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default ProductSummary;\r\n","import React from 'react';\r\nimport Globalizer from '../../../globalizer';\r\nimport translateService from '../../../common/translateService';\r\nimport common from '../../../common/common';\r\nimport ProductTags from './ProductTags.jsx';\r\nimport ReviewStars from '../reviews/ReviewStars.jsx';\r\nimport './ProductCard.scss';\r\n\r\nconst ProductCard = ({ p }) => {\r\n Globalizer.init();\r\n\r\n function handleProductClick(link) {\r\n window.location =\r\n link[0] === '/'\r\n ? common.getSiteUrl('/') + link\r\n : common.getSiteUrl('/') + '/' + link;\r\n }\r\n\r\n return (\r\n handleProductClick(p.productUrl)}>\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n {p.brand}\r\n \r\n \r\n {p.hasManyPrices && (\r\n {`${translateService.get(\r\n `productCard.ProductPriceStartingFrom`\r\n )} `}\r\n )}\r\n \r\n {p.currencySymbol}\r\n {' '}\r\n  \r\n \r\n \r\n {Globalizer.formatNumber(\r\n p.price,\r\n p.currencyDecimalPlaces\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n

\r\n \r\n {p.title}\r\n \r\n

\r\n
\r\n \r\n {p.discount !== 0 && (\r\n \r\n -{p.discount}%\r\n \r\n )}\r\n \r\n
\r\n {p.ratingAverage !== 0 && (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n {p.freeShipping && (\r\n
\r\n {' '}\r\n

\r\n {translateService.get(\r\n `productCard.FreeShipping`\r\n )}\r\n

\r\n
\r\n )}\r\n {p.hasManyColors && (\r\n \r\n {translateService.get(\r\n `productCard.OtherColorsAvailable`\r\n )}\r\n \r\n )}\r\n
\r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default ProductCard;\r\n","import React, { useState, useRef } from 'react';\r\nimport Flickity from 'react-flickity-component';\r\nimport { map } from 'lodash';\r\nimport common from '../../../common/common';\r\nimport ProductCard from './ProductCard.jsx';\r\n\r\nimport './ProductSlider.scss';\r\n\r\nfunction ProductSlider({ products }) {\r\n const flcktyHtmlRef = useRef(null);\r\n const [flcktyRef, setRef] = useState(undefined);\r\n const flcktyOption = {\r\n autoPlay: false,\r\n cellAlign: 'left',\r\n contain: true,\r\n draggable: common.isTouch(),\r\n pageDots: false,\r\n prevNextButtons: true,\r\n wrapAround: false,\r\n groupCells: '100%',\r\n lazyLoad: 5,\r\n };\r\n\r\n const result = map(products, (p, idx) => (\r\n
\r\n \r\n
\r\n ));\r\n\r\n return (\r\n {\r\n setRef(c);\r\n }}\r\n options={flcktyOption}>\r\n {result}\r\n \r\n );\r\n}\r\n\r\nexport default ProductSlider;\r\n","import React, { useEffect, useState } from 'react';\r\n\r\nimport ProductSlider from './ProductSlider.jsx';\r\nimport { get } from '../../../common/httpService';\r\nimport './RelatedProducts.scss';\r\n\r\nfunction RelatedProducts(props) {\r\n const [relations, setRelations] = useState([]);\r\n\r\n async function getRelatedProducts() {\r\n try {\r\n get({\r\n url: `Product/GetProductRelationsJson?slug=${props.slug}`,\r\n }).then((data) => {\r\n setRelations(data);\r\n });\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if (props.alreadyHaveRelations) {\r\n setRelations(props.relations);\r\n } else {\r\n getRelatedProducts();\r\n }\r\n }, []);\r\n\r\n if (relations && relations.length > 0)\r\n return ;\r\n\r\n return <>;\r\n}\r\n\r\nexport default RelatedProducts;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { get, post } from '../common/httpService';\r\nimport marketingAndAnalyticsService from '../services/marketingAndAnalytics/marketingAndAnalyticsService';\r\nimport Button from './Button.jsx';\r\n\r\nimport './PopUp.scss';\r\n\r\nconst PopUp = () => {\r\n const [popUpInfo, setPopUpInfo] = useState({\r\n show: false,\r\n cancelUrl: '',\r\n buttonText: '',\r\n buttonLink: '',\r\n backgroundColor: '',\r\n textColor: '',\r\n borderColor: '',\r\n heading: '',\r\n text: '',\r\n validFrom: '',\r\n validTo: '',\r\n });\r\n\r\n const handleClose = async () => {\r\n try {\r\n post({\r\n url: `home/PopUp`,\r\n });\r\n await marketingAndAnalyticsService.closePopUp();\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n setPopUpInfo((prevState) => ({\r\n ...prevState,\r\n show: false,\r\n }));\r\n };\r\n\r\n const getPopUpInfo = async () => {\r\n try {\r\n get({\r\n url: `home/ShowPopUp`,\r\n }).then((r) => {\r\n setPopUpInfo(r);\r\n });\r\n } catch (error) {\r\n console.log(e);\r\n }\r\n };\r\n\r\n const handleButtonClick = async () => {\r\n try {\r\n await marketingAndAnalyticsService.popUpButtonClick();\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n window.location = popUpInfo.buttonLink;\r\n };\r\n\r\n useEffect(() => {\r\n getPopUpInfo();\r\n }, []);\r\n\r\n const style = {\r\n backgroundColor: popUpInfo.backgroundColor,\r\n color: popUpInfo.textColor,\r\n borderColor: popUpInfo.borderColor,\r\n };\r\n\r\n return popUpInfo.show ? (\r\n
\r\n
\r\n \r\n ×\r\n \r\n
\r\n
\r\n

{popUpInfo.heading}

\r\n

\r\n

\r\n \r\n
\r\n ) : (\r\n <>\r\n );\r\n};\r\n\r\nexport default PopUp;\r\n","import common from '../../../common/common';\r\nimport React, { useState, useEffect, useRef } from 'react';\r\nimport Modal from 'react-modal';\r\nimport {\r\n filter,\r\n find,\r\n findIndex,\r\n forEach,\r\n isEmpty,\r\n isNaN,\r\n isNil,\r\n replace,\r\n some,\r\n} from 'lodash';\r\nimport translateService from '../../../common/translateService.js';\r\nimport {\r\n addToCart,\r\n addReassNotification,\r\n getOptionSelected,\r\n getKitQtyAvailable,\r\n getAvailabilityStatus,\r\n getKitAvailabilityStatus,\r\n getTabsNumber,\r\n getPreselectionAndModals,\r\n getColorSelectedFromQueryString,\r\n getOptionSelectedFromQueryString,\r\n findColorFromOption,\r\n findOption,\r\n getPrice,\r\n} from '../../../services/product/productService';\r\nimport productsAvailabilityStatus from './productsAvailabilityStatus';\r\nimport recentlyViewedProductsService from '../../../services/product/recentlyViewedProductsService.js';\r\nimport marketingAndAnalyticsService from '../../../services/marketingAndAnalytics/marketingAndAnalyticsService.js';\r\nimport ProductTags from './ProductTags.jsx';\r\nimport ProductHeader from './ProductHeader.jsx';\r\nimport ProductCarousel from './ProductCarousel.jsx';\r\nimport ProductPrice from './ProductPrice.jsx';\r\nimport ProductDestinationNote from './ProductDestinationNote.jsx';\r\nimport ProductInfo from './ProductInfo.jsx';\r\nimport ProductOptions from './ProductOptions.jsx';\r\nimport ProductAvailabilityNote from './ProductAvailabilityNote.jsx';\r\nimport ProductQuantity from './ProductQuantity.jsx';\r\nimport ProductSelectionHint from './ProductSelectionHint.jsx';\r\nimport ProductTabs from './ProductTabs.jsx';\r\nimport ProductNotes from './ProductNotes.jsx';\r\nimport ProductSummary from './ProductSummary.jsx';\r\nimport RelatedProducts from './RelatedProducts.jsx';\r\nimport PopUp from '../../PopUp.jsx';\r\nimport './ProductDetails.scss';\r\n\r\nconst ProductDetails = ({ slug, enablenews, details }) => {\r\n Modal.setAppElement('body');\r\n const noPhoto = {\r\n big: common.contentFromCdn({\r\n path: '~/content/products/nophoto_bg.png',\r\n keepUrlAsIs: false,\r\n }),\r\n browse: common.contentFromCdn({\r\n path: '~/content/products/nophoto_br.png',\r\n keepUrlAsIs: false,\r\n }),\r\n zoom: common.contentFromCdn({\r\n path: '~/content/products/nophoto_zm.png',\r\n keepUrlAsIs: false,\r\n }),\r\n };\r\n const isMobile = window.innerWidth < 1024;\r\n const reviewsRef = useRef(null);\r\n const sizeChartRef = useRef(null);\r\n const flcktyHtmlRefSmall = useRef(null);\r\n const flcktyHtmlRefLarge = useRef(null);\r\n const [selection, setSelection] = useState({\r\n carousel: { images: [], initialIndex: 0 },\r\n attributes: {},\r\n qtySelected: 1,\r\n qtyAvailable: 0,\r\n availabilityStatus: '',\r\n option: null,\r\n });\r\n const [showSelectionHint, setShowSelectionHint] = useState(false);\r\n const [tabsNumber, setTabsNumber] = useState(null);\r\n const [flcktyRefSmall, setRefSmall] = useState();\r\n const [flcktyRefLarge, setRefLarge] = useState();\r\n const [modalsState, setModalsState] = useState({});\r\n const [cartModalState, setCartModalState] = useState(false);\r\n const [productSummary, setProductSummary] = useState({\r\n isReassortment: false,\r\n isSuccess: false,\r\n url: '',\r\n cartTotalItems: 0,\r\n productTitle: '',\r\n productAttributes: [],\r\n productImageUrl: '',\r\n productQuantityAdded: 0,\r\n productPriceDiscounted: 0,\r\n productPriceFull: 0,\r\n message: '',\r\n });\r\n\r\n useEffect(() => {\r\n initialize(slug);\r\n recentlyViewedProductsService.add(window.location.href);\r\n }, []);\r\n\r\n async function initialize(s) {\r\n await marketingAndAnalyticsService.viewItemFbq({\r\n slug: s,\r\n guid: details.guid,\r\n options: details.options,\r\n currencyCode: details.currencyCode,\r\n isKit: details.isKit,\r\n });\r\n\r\n const tabsNum = getTabsNumber(details, enablenews);\r\n setTabsNumber(tabsNum);\r\n\r\n const optionPreselectionId = getOptionSelectedFromQueryString();\r\n const colorAttribute = find(details.attributes, (a) => a.kind === 0);\r\n const colorAttributeName = isNil(colorAttribute)\r\n ? null\r\n : colorAttribute.fieldId;\r\n let optionPreselected = findOption(details.options, optionPreselectionId);\r\n let colorPreselection = isNil(optionPreselectionId)\r\n ? getColorSelectedFromQueryString()\r\n : findColorFromOption(optionPreselected, colorAttributeName);\r\n const [attr, modals] = getPreselectionAndModals(\r\n details.attributes,\r\n details.isKit,\r\n optionPreselected,\r\n colorPreselection,\r\n );\r\n\r\n const isPreselectionIncomplete = some(attr, (value) => value === null);\r\n\r\n if (isNil(optionPreselected) && !isPreselectionIncomplete) {\r\n optionPreselected = getOptionSelected(\r\n details.isKit,\r\n attr,\r\n details.options,\r\n );\r\n }\r\n\r\n if (\r\n isNil(colorPreselection) &&\r\n !isNil(colorAttributeName) &&\r\n !isNil(attr[colorAttributeName])\r\n ) {\r\n colorPreselection = attr[colorAttributeName];\r\n }\r\n\r\n setModalsState(modals);\r\n\r\n let productImages = _.map(details.images, (image) => {\r\n image.big = common.contentFromCdn({\r\n path: image.big,\r\n keepUrlAsIs: false,\r\n });\r\n image.browse = common.contentFromCdn({\r\n path: image.browse,\r\n keepUrlAsIs: false,\r\n });\r\n image.zoom = common.contentFromCdn({\r\n path: image.zoom,\r\n keepUrlAsIs: false,\r\n });\r\n return image;\r\n });\r\n let filteredImages = isNil(colorPreselection)\r\n ? productImages\r\n : filter(productImages, (i) => i.color === colorPreselection);\r\n let initialIndex = isNil(colorPreselection)\r\n ? 0\r\n : findIndex(filteredImages, (i) => i.main);\r\n\r\n if (isEmpty(filteredImages)) {\r\n const colorAttribute = find(details.attributes, (a) => a.kind === 0);\r\n const foundValue = find(\r\n colorAttribute.values,\r\n (v) => v.value === colorPreselection,\r\n );\r\n\r\n if (!isNil(foundValue)) {\r\n const foundImage = find(\r\n productImages,\r\n (i) => i.big === foundValue.imageBig,\r\n );\r\n\r\n filteredImages = isNil(foundImage)\r\n ? [\r\n {\r\n index: 0,\r\n big: noPhoto.big,\r\n browse: noPhoto.browse,\r\n zoom: noPhoto.zoom,\r\n color: null,\r\n },\r\n ]\r\n : [foundImage];\r\n } else {\r\n filteredImages = productImages;\r\n }\r\n\r\n initialIndex = 0;\r\n }\r\n\r\n let option = null,\r\n qtyAv = null,\r\n avStatus = null;\r\n // non ho attributi, se non è un kit ho una sola option\r\n if (details.attributes.length === 0) {\r\n option = details.isKit ? details.options : details.options[0];\r\n qtyAv = details.isKit\r\n ? getKitQtyAvailable(details.options)\r\n : details.options[0].quantity;\r\n avStatus = details.isKit\r\n ? getKitAvailabilityStatus(qtyAv, details.options, 1)\r\n : getAvailabilityStatus(\r\n details.options[0].quantity,\r\n details.options[0],\r\n 1,\r\n );\r\n }\r\n // ho almeno un attributo e ho tutto preselezionato: optionPreselected\r\n else if (!isPreselectionIncomplete) {\r\n option = optionPreselected;\r\n qtyAv = details.isKit\r\n ? getKitQtyAvailable(optionPreselected)\r\n : isNil(optionPreselected)\r\n ? 0\r\n : optionPreselected.quantity;\r\n avStatus = details.isKit\r\n ? getKitAvailabilityStatus(qtyAv, details.options, 1)\r\n : getAvailabilityStatus(qtyAv, optionPreselected, 1);\r\n }\r\n // ho almeno un attributo ma la selezione non è completa: rimane null\r\n\r\n setSelection((prevState) => {\r\n return {\r\n ...prevState,\r\n option: option,\r\n qtyAvailable: isNil(qtyAv) ? prevState.qtyAvailable : qtyAv,\r\n availabilityStatus: isNil(avStatus)\r\n ? prevState.availabilityStatus\r\n : avStatus,\r\n attributes: attr,\r\n carousel: {\r\n images: filteredImages,\r\n initialIndex: initialIndex,\r\n },\r\n };\r\n });\r\n }\r\n\r\n const updateSelection = (e, isColor) => {\r\n if (showSelectionHint) {\r\n setShowSelectionHint(false);\r\n }\r\n\r\n const attr = e.currentTarget.dataset.attr;\r\n const val =\r\n e.currentTarget.dataset.value === selection.attributes[attr]\r\n ? null\r\n : e.currentTarget.dataset.value;\r\n\r\n let foundImages = [],\r\n initialIndex = 0;\r\n\r\n if (isColor) {\r\n foundImages = isNil(val)\r\n ? details.images\r\n : filter(details.images, (i) => i.color === val);\r\n initialIndex = findIndex(foundImages, (i) => i.main);\r\n\r\n if (isEmpty(foundImages)) {\r\n if (isNil(val)) {\r\n foundImages = details.images;\r\n } else {\r\n let foundImage = find(\r\n details.images,\r\n (i) => i.browse === e.currentTarget.dataset.image,\r\n );\r\n if (isNil(foundImage)) {\r\n const colorAttribute = find(\r\n details.attributes,\r\n (a) => a.kind === 0,\r\n );\r\n const foundColor = find(\r\n colorAttribute.values,\r\n (v) => v.value === val,\r\n );\r\n foundImage = isNil(foundColor)\r\n ? {\r\n index: 0,\r\n big: common.contentFromCdn({\r\n path: noPhoto.big,\r\n keepUrlAsIs: false,\r\n }),\r\n browse: common.contentFromCdn({\r\n path: noPhoto.browse,\r\n keepUrlAsIs: false,\r\n }),\r\n zoom: common.contentFromCdn({\r\n path: noPhoto.zoom,\r\n keepUrlAsIs: false,\r\n }),\r\n color: null,\r\n }\r\n : {\r\n big: common.contentFromCdn({\r\n path: foundColor.imageBig,\r\n keepUrlAsIs: false,\r\n }),\r\n browse: common.contentFromCdn({\r\n path: foundColor.imageBrowse,\r\n keepUrlAsIs: false,\r\n }),\r\n zoom: common.contentFromCdn({\r\n path: foundColor.imageZoom,\r\n keepUrlAsIs: false,\r\n }),\r\n color: foundColor.value,\r\n index: foundColor.index,\r\n };\r\n }\r\n foundImages = [foundImage];\r\n }\r\n initialIndex = 0;\r\n }\r\n\r\n if (!isMobile) {\r\n if (flcktyRefSmall) {\r\n flcktyRefSmall.select(initialIndex, false, false);\r\n }\r\n }\r\n if (flcktyRefLarge) {\r\n flcktyRefLarge.select(initialIndex, false, false);\r\n }\r\n }\r\n\r\n // setSelection\r\n setSelection((prevState) => {\r\n let newAttr = {};\r\n\r\n forEach(prevState.attributes, (value, key) => {\r\n newAttr[key] = key === attr ? val : value;\r\n });\r\n\r\n const isAllSelected = !some(newAttr, (v) => v === null);\r\n\r\n const prdOption = isAllSelected\r\n ? getOptionSelected(details.isKit, newAttr, details.options)\r\n : null;\r\n\r\n const qtyAvailable = details.isKit\r\n ? getKitQtyAvailable(prdOption)\r\n : prdOption\r\n ? prdOption.quantity\r\n : 0;\r\n\r\n const availabilityStatus = details.isKit\r\n ? getKitAvailabilityStatus(\r\n qtyAvailable,\r\n prdOption,\r\n prevState.qtySelected,\r\n )\r\n : getAvailabilityStatus(qtyAvailable, prdOption, prevState.qtySelected);\r\n\r\n return {\r\n ...prevState,\r\n carousel: isColor\r\n ? {\r\n ...prevState.carousel,\r\n images: foundImages,\r\n }\r\n : prevState.carousel,\r\n attributes: newAttr,\r\n option: prdOption,\r\n qtyAvailable: qtyAvailable,\r\n availabilityStatus: availabilityStatus,\r\n };\r\n });\r\n };\r\n\r\n const checkQty = (e) => {\r\n const value = Number(e.currentTarget.value);\r\n if (value > 0) return;\r\n\r\n setSelection((prevState) => {\r\n const availabilityStatus = details.isKit\r\n ? getKitAvailabilityStatus(prevState.qtyAvailable, prevState.option, 1)\r\n : getAvailabilityStatus(prevState.qtyAvailable, prevState.option, 1);\r\n return {\r\n ...prevState,\r\n availabilityStatus: availabilityStatus,\r\n qtySelected: 1,\r\n };\r\n });\r\n };\r\n\r\n const updateQty = (e) => {\r\n const value = Number(e.currentTarget.value);\r\n const q = value !== 0 ? (value > 999 ? 999 : value) : '';\r\n\r\n setSelection((prevState) => {\r\n const availabilityStatus = details.isKit\r\n ? getKitAvailabilityStatus(prevState.qtyAvailable, prevState.option, q)\r\n : getAvailabilityStatus(prevState.qtyAvailable, prevState.option, q);\r\n return {\r\n ...prevState,\r\n availabilityStatus: availabilityStatus,\r\n qtySelected: q,\r\n };\r\n });\r\n };\r\n\r\n const decreaseQty = (e) => {\r\n if (e.currentTarget.classList.contains('inactive')) return;\r\n setSelection((prevState) => {\r\n const q = prevState.qtySelected - 1;\r\n const availabilityStatus = details.isKit\r\n ? getKitAvailabilityStatus(prevState.qtyAvailable, prevState.option, q)\r\n : getAvailabilityStatus(prevState.qtyAvailable, prevState.option, q);\r\n return {\r\n ...prevState,\r\n availabilityStatus: availabilityStatus,\r\n qtySelected: q,\r\n };\r\n });\r\n };\r\n\r\n const increaseQty = (e) => {\r\n if (e.currentTarget.classList.contains('inactive')) return;\r\n setSelection((prevState) => {\r\n const q = prevState.qtySelected + 1;\r\n const availabilityStatus = details.isKit\r\n ? getKitAvailabilityStatus(prevState.qtyAvailable, prevState.option, q)\r\n : getAvailabilityStatus(prevState.qtyAvailable, prevState.option, q);\r\n return {\r\n ...prevState,\r\n availabilityStatus: availabilityStatus,\r\n qtySelected: q,\r\n };\r\n });\r\n };\r\n\r\n const updateModalState = (attrName) => {\r\n let status = {};\r\n\r\n forEach(modalsState, (value, key) => {\r\n status[key] = key === attrName ? !value : value;\r\n });\r\n\r\n const body = document.querySelector('body');\r\n const html = document.querySelector('html');\r\n\r\n //la sto chiudendo, forzo la rimozione della classe che impedisce lo scroll\r\n if (\r\n !status[attrName] &&\r\n body.classList.contains('ReactModal__Body--open')\r\n ) {\r\n body.classList.remove('ReactModal__Body--open');\r\n html.classList.remove('ReactModal__Body--open');\r\n }\r\n // la sto aprendo: se sono in mobile aggiungo la classe a html, in desktop no\r\n else if (isMobile) {\r\n html.classList.add('ReactModal__Body--open');\r\n }\r\n\r\n setModalsState(status);\r\n };\r\n\r\n const changeCartModalState = () => {\r\n setCartModalState((prevState) => {\r\n const body = document.querySelector('body');\r\n const html = document.querySelector('html');\r\n\r\n //la sto chiudendo, forzo la rimozione della classe che impedisce lo scroll\r\n if (prevState && body.classList.contains('ReactModal__Body--open')) {\r\n body.classList.remove('ReactModal__Body--open');\r\n html.classList.remove('ReactModal__Body--open');\r\n }\r\n // la sto aprendo: se sono in mobile aggiungo la classe a html, in desktop no\r\n else if (isMobile) {\r\n html.classList.add('ReactModal__Body--open');\r\n }\r\n\r\n return !prevState;\r\n });\r\n };\r\n\r\n const handleButtonClick = async function () {\r\n if (\r\n selection.availabilityStatus ===\r\n productsAvailabilityStatus.discontinued ||\r\n selection.availabilityStatus ===\r\n productsAvailabilityStatus.qtyDiscontinued ||\r\n selection.availabilityStatus ===\r\n productsAvailabilityStatus.optionUnavailable\r\n )\r\n return;\r\n\r\n if (selection.availabilityStatus === '') {\r\n setShowSelectionHint(true);\r\n return;\r\n }\r\n\r\n let options = [];\r\n\r\n if (details.isKit) {\r\n forEach(selection.option, (option) => {\r\n let key, value;\r\n forEach(option.attributes, (v, k) => {\r\n key = k;\r\n value = isNaN(Number(v)) ? null : Number(v);\r\n });\r\n options.push({ groupId: key, optionId: value });\r\n });\r\n } else {\r\n options.push({\r\n groupId: '',\r\n optionId: selection.option.sourceId,\r\n });\r\n }\r\n\r\n const qty = selection.qtySelected;\r\n let price = getPrice(\r\n details.isKit,\r\n selection.option,\r\n details.price,\r\n selection.qtySelected,\r\n );\r\n\r\n if (details.selectiveDistribution) {\r\n window.location = `${details.redirectBuyUrl}${\r\n details.isKit ? '' : `?option=${options[0].optionId}`\r\n }`;\r\n return;\r\n }\r\n\r\n const result =\r\n selection.availabilityStatus === productsAvailabilityStatus.unavailable ||\r\n selection.availabilityStatus === productsAvailabilityStatus.qtyUnavailable\r\n ? await addReassNotification(slug, qty, options, details.isKit)\r\n : await addToCart(slug, qty, options, details.isKit);\r\n setProductSummary(result);\r\n\r\n if (result.isSuccess && !isNil(result.transactionId)) {\r\n marketingAndAnalyticsService.addToCart({\r\n isKit: details.isKit,\r\n guid: details.guid,\r\n quantity: qty,\r\n options: options,\r\n currency: details.currencyCode,\r\n price: price,\r\n disciplines: details.disciplines,\r\n categories: details.categories,\r\n brandName: details.brandName,\r\n transactionId: result.transactionId,\r\n });\r\n }\r\n\r\n changeCartModalState();\r\n };\r\n\r\n if (flcktyRefLarge) {\r\n flcktyRefLarge.on('fullscreenChange', (isFullscreen) => {\r\n const imgs = flcktyRefLarge.element.querySelectorAll('img');\r\n const body = document.querySelector('body');\r\n\r\n if (isFullscreen) {\r\n body.classList.add('no-scroll');\r\n\r\n forEach(imgs, (img) => {\r\n img.src = common.contentFromCdn({\r\n path: replace(img.src, '/bg_', '/zm_'),\r\n keepUrlAsIs: false,\r\n });\r\n });\r\n } else {\r\n body.classList.remove('no-scroll');\r\n\r\n forEach(imgs, (img) => {\r\n img.src = common.contentFromCdn({\r\n path: replace(img.src, '/zm_', '/bg_'),\r\n keepUrlAsIs: false,\r\n });\r\n });\r\n }\r\n });\r\n }\r\n const lowerPrice = details.isKit\r\n ? details.lowerPrices[`${details.originId}_NULL_kit_${details.countryCode}`]\r\n : _.isNil(selection.option)\r\n ? details.lowerPrices[\r\n `${details.originId}_${details.options[0].sourceId}_article_${details.countryCode}`\r\n ]\r\n : details.lowerPrices[\r\n `${details.originId}_${selection.option.sourceId}_article_${details.countryCode}`\r\n ];\r\n\r\n return (\r\n <>\r\n {!isMobile && (\r\n \r\n )}\r\n
\r\n {isMobile && (\r\n \r\n )}\r\n \r\n {isMobile && (\r\n \r\n )}\r\n {!isEmpty(selection.carousel.images) && (\r\n \r\n )}\r\n {!isMobile && !isEmpty(selection.carousel.images) && (\r\n \r\n )}\r\n
\r\n {isMobile && (\r\n \r\n )}\r\n \r\n
\r\n {!isMobile && (\r\n <>\r\n \r\n \r\n \r\n )}\r\n
\r\n \r\n \r\n \r\n {selection.availabilityStatus && (\r\n \r\n )}\r\n {showSelectionHint && (\r\n \r\n )}\r\n \r\n
\r\n \r\n
\r\n \r\n {!isEmpty(details.productsRelations) && (\r\n
\r\n
\r\n

{translateService.get(`productDetail.productRelations`)}

\r\n
\r\n
\r\n \r\n
\r\n
\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ProductDetails;\r\n","import React from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport ProductDetails from \"../../components/modules/products/ProductDetails.jsx\";\r\n\r\nconst element = document.getElementById(\"product-new\");\r\nif (element !== null) {\r\n ReactDOM.render(\r\n ,\r\n element\r\n );\r\n}\r\n","/*!\r\n * modernizr v3.6.0\r\n * Build https://modernizr.com/download?-mq-dontmin\r\n *\r\n * Copyright (c)\r\n * Faruk Ates\r\n * Paul Irish\r\n * Alex Sexton\r\n * Ryan Seddon\r\n * Patrick Kettner\r\n * Stu Cox\r\n * Richard Herrera\r\n\r\n * MIT License\r\n */\r\n\r\n/*\r\n * Modernizr tests which native CSS3 and HTML5 features are available in the\r\n * current UA and makes the results available to you in two ways: as properties on\r\n * a global `Modernizr` object, and as classes on the `` element. This\r\n * information allows you to progressively enhance your pages with a granular level\r\n * of control over the experience.\r\n*/\r\n\r\n;(function(window, document, undefined){\r\n var tests = [];\r\n \r\n\r\n /**\r\n *\r\n * ModernizrProto is the constructor for Modernizr\r\n *\r\n * @class\r\n * @access public\r\n */\r\n\r\n var ModernizrProto = {\r\n // The current version, dummy\r\n _version: '3.6.0',\r\n\r\n // Any settings that don't work as separate modules\r\n // can go in here as configuration.\r\n _config: {\r\n 'classPrefix': '',\r\n 'enableClasses': true,\r\n 'enableJSClass': true,\r\n 'usePrefixes': true\r\n },\r\n\r\n // Queue of tests\r\n _q: [],\r\n\r\n // Stub these for people who are listening\r\n on: function(test, cb) {\r\n // I don't really think people should do this, but we can\r\n // safe guard it a bit.\r\n // -- NOTE:: this gets WAY overridden in src/addTest for actual async tests.\r\n // This is in case people listen to synchronous tests. I would leave it out,\r\n // but the code to *disallow* sync tests in the real version of this\r\n // function is actually larger than this.\r\n var self = this;\r\n setTimeout(function() {\r\n cb(self[test]);\r\n }, 0);\r\n },\r\n\r\n addTest: function(name, fn, options) {\r\n tests.push({name: name, fn: fn, options: options});\r\n },\r\n\r\n addAsyncTest: function(fn) {\r\n tests.push({name: null, fn: fn});\r\n }\r\n };\r\n\r\n \r\n\r\n // Fake some of Object.create so we can force non test results to be non \"own\" properties.\r\n var Modernizr = function() {};\r\n Modernizr.prototype = ModernizrProto;\r\n\r\n // Leak modernizr globally when you `require` it rather than force it here.\r\n // Overwrite name so constructor name is nicer :D\r\n Modernizr = new Modernizr();\r\n\r\n \r\n\r\n var classes = [];\r\n \r\n\r\n /**\r\n * is returns a boolean if the typeof an obj is exactly type.\r\n *\r\n * @access private\r\n * @function is\r\n * @param {*} obj - A thing we want to check the type of\r\n * @param {string} type - A string to compare the typeof against\r\n * @returns {boolean}\r\n */\r\n\r\n function is(obj, type) {\r\n return typeof obj === type;\r\n }\r\n ;\r\n\r\n /**\r\n * Run through all tests and detect their support in the current UA.\r\n *\r\n * @access private\r\n */\r\n\r\n function testRunner() {\r\n var featureNames;\r\n var feature;\r\n var aliasIdx;\r\n var result;\r\n var nameIdx;\r\n var featureName;\r\n var featureNameSplit;\r\n\r\n for (var featureIdx in tests) {\r\n if (tests.hasOwnProperty(featureIdx)) {\r\n featureNames = [];\r\n feature = tests[featureIdx];\r\n // run the test, throw the return value into the Modernizr,\r\n // then based on that boolean, define an appropriate className\r\n // and push it into an array of classes we'll join later.\r\n //\r\n // If there is no name, it's an 'async' test that is run,\r\n // but not directly added to the object. That should\r\n // be done with a post-run addTest call.\r\n if (feature.name) {\r\n featureNames.push(feature.name.toLowerCase());\r\n\r\n if (feature.options && feature.options.aliases && feature.options.aliases.length) {\r\n // Add all the aliases into the names list\r\n for (aliasIdx = 0; aliasIdx < feature.options.aliases.length; aliasIdx++) {\r\n featureNames.push(feature.options.aliases[aliasIdx].toLowerCase());\r\n }\r\n }\r\n }\r\n\r\n // Run the test, or use the raw value if it's not a function\r\n result = is(feature.fn, 'function') ? feature.fn() : feature.fn;\r\n\r\n\r\n // Set each of the names on the Modernizr object\r\n for (nameIdx = 0; nameIdx < featureNames.length; nameIdx++) {\r\n featureName = featureNames[nameIdx];\r\n // Support dot properties as sub tests. We don't do checking to make sure\r\n // that the implied parent tests have been added. You must call them in\r\n // order (either in the test, or make the parent test a dependency).\r\n //\r\n // Cap it to TWO to make the logic simple and because who needs that kind of subtesting\r\n // hashtag famous last words\r\n featureNameSplit = featureName.split('.');\r\n\r\n if (featureNameSplit.length === 1) {\r\n Modernizr[featureNameSplit[0]] = result;\r\n } else {\r\n // cast to a Boolean, if not one already\r\n if (Modernizr[featureNameSplit[0]] && !(Modernizr[featureNameSplit[0]] instanceof Boolean)) {\r\n Modernizr[featureNameSplit[0]] = new Boolean(Modernizr[featureNameSplit[0]]);\r\n }\r\n\r\n Modernizr[featureNameSplit[0]][featureNameSplit[1]] = result;\r\n }\r\n\r\n classes.push((result ? '' : 'no-') + featureNameSplit.join('-'));\r\n }\r\n }\r\n }\r\n }\r\n ;\r\n\r\n /**\r\n * docElement is a convenience wrapper to grab the root element of the document\r\n *\r\n * @access private\r\n * @returns {HTMLElement|SVGElement} The root element of the document\r\n */\r\n\r\n var docElement = document.documentElement;\r\n \r\n\r\n /**\r\n * A convenience helper to check if the document we are running in is an SVG document\r\n *\r\n * @access private\r\n * @returns {boolean}\r\n */\r\n\r\n var isSVG = docElement.nodeName.toLowerCase() === 'svg';\r\n \r\n\r\n /**\r\n * createElement is a convenience wrapper around document.createElement. Since we\r\n * use createElement all over the place, this allows for (slightly) smaller code\r\n * as well as abstracting away issues with creating elements in contexts other than\r\n * HTML documents (e.g. SVG documents).\r\n *\r\n * @access private\r\n * @function createElement\r\n * @returns {HTMLElement|SVGElement} An HTML or SVG element\r\n */\r\n\r\n function createElement() {\r\n if (typeof document.createElement !== 'function') {\r\n // This is the case in IE7, where the type of createElement is \"object\".\r\n // For this reason, we cannot call apply() as Object is not a Function.\r\n return document.createElement(arguments[0]);\r\n } else if (isSVG) {\r\n return document.createElementNS.call(document, 'http://www.w3.org/2000/svg', arguments[0]);\r\n } else {\r\n return document.createElement.apply(document, arguments);\r\n }\r\n }\r\n\r\n ;\r\n\r\n /**\r\n * getBody returns the body of a document, or an element that can stand in for\r\n * the body if a real body does not exist\r\n *\r\n * @access private\r\n * @function getBody\r\n * @returns {HTMLElement|SVGElement} Returns the real body of a document, or an\r\n * artificially created element that stands in for the body\r\n */\r\n\r\n function getBody() {\r\n // After page load injecting a fake body doesn't work so check if body exists\r\n var body = document.body;\r\n\r\n if (!body) {\r\n // Can't use the real body create a fake one.\r\n body = createElement(isSVG ? 'svg' : 'body');\r\n body.fake = true;\r\n }\r\n\r\n return body;\r\n }\r\n\r\n ;\r\n\r\n /**\r\n * injectElementWithStyles injects an element with style element and some CSS rules\r\n *\r\n * @access private\r\n * @function injectElementWithStyles\r\n * @param {string} rule - String representing a css rule\r\n * @param {function} callback - A function that is used to test the injected element\r\n * @param {number} [nodes] - An integer representing the number of additional nodes you want injected\r\n * @param {string[]} [testnames] - An array of strings that are used as ids for the additional nodes\r\n * @returns {boolean}\r\n */\r\n\r\n function injectElementWithStyles(rule, callback, nodes, testnames) {\r\n var mod = 'modernizr';\r\n var style;\r\n var ret;\r\n var node;\r\n var docOverflow;\r\n var div = createElement('div');\r\n var body = getBody();\r\n\r\n if (parseInt(nodes, 10)) {\r\n // In order not to give false positives we create a node for each test\r\n // This also allows the method to scale for unspecified uses\r\n while (nodes--) {\r\n node = createElement('div');\r\n node.id = testnames ? testnames[nodes] : mod + (nodes + 1);\r\n div.appendChild(node);\r\n }\r\n }\r\n\r\n style = createElement('style');\r\n style.type = 'text/css';\r\n style.id = 's' + mod;\r\n\r\n // IE6 will false positive on some tests due to the style element inside the test div somehow interfering offsetHeight, so insert it into body or fakebody.\r\n // Opera will act all quirky when injecting elements in documentElement when page is served as xml, needs fakebody too. #270\r\n (!body.fake ? div : body).appendChild(style);\r\n body.appendChild(div);\r\n\r\n if (style.styleSheet) {\r\n style.styleSheet.cssText = rule;\r\n } else {\r\n style.appendChild(document.createTextNode(rule));\r\n }\r\n div.id = mod;\r\n\r\n if (body.fake) {\r\n //avoid crashing IE8, if background image is used\r\n body.style.background = '';\r\n //Safari 5.13/5.1.4 OSX stops loading if ::-webkit-scrollbar is used and scrollbars are visible\r\n body.style.overflow = 'hidden';\r\n docOverflow = docElement.style.overflow;\r\n docElement.style.overflow = 'hidden';\r\n docElement.appendChild(body);\r\n }\r\n\r\n ret = callback(div, rule);\r\n // If this is done after page load we don't want to remove the body so check if body exists\r\n if (body.fake) {\r\n body.parentNode.removeChild(body);\r\n docElement.style.overflow = docOverflow;\r\n // Trigger layout so kinetic scrolling isn't disabled in iOS6+\r\n // eslint-disable-next-line\r\n docElement.offsetHeight;\r\n } else {\r\n div.parentNode.removeChild(div);\r\n }\r\n\r\n return !!ret;\r\n\r\n }\r\n\r\n ;\r\n\r\n /**\r\n * Modernizr.mq tests a given media query, live against the current state of the window\r\n * adapted from matchMedia polyfill by Scott Jehl and Paul Irish\r\n * gist.github.com/786768\r\n *\r\n * @memberof Modernizr\r\n * @name Modernizr.mq\r\n * @optionName Modernizr.mq()\r\n * @optionProp mq\r\n * @access public\r\n * @function mq\r\n * @param {string} mq - String of the media query we want to test\r\n * @returns {boolean}\r\n * @example\r\n * Modernizr.mq allows for you to programmatically check if the current browser\r\n * window state matches a media query.\r\n *\r\n * ```js\r\n * var query = Modernizr.mq('(min-width: 900px)');\r\n *\r\n * if (query) {\r\n * // the browser window is larger than 900px\r\n * }\r\n * ```\r\n *\r\n * Only valid media queries are supported, therefore you must always include values\r\n * with your media query\r\n *\r\n * ```js\r\n * // good\r\n * Modernizr.mq('(min-width: 900px)');\r\n *\r\n * // bad\r\n * Modernizr.mq('min-width');\r\n * ```\r\n *\r\n * If you would just like to test that media queries are supported in general, use\r\n *\r\n * ```js\r\n * Modernizr.mq('only all'); // true if MQ are supported, false if not\r\n * ```\r\n *\r\n *\r\n * Note that if the browser does not support media queries (e.g. old IE) mq will\r\n * always return false.\r\n */\r\n\r\n var mq = (function() {\r\n var matchMedia = window.matchMedia || window.msMatchMedia;\r\n if (matchMedia) {\r\n return function(mq) {\r\n var mql = matchMedia(mq);\r\n return mql && mql.matches || false;\r\n };\r\n }\r\n\r\n return function(mq) {\r\n var bool = false;\r\n\r\n injectElementWithStyles('@media ' + mq + ' { #modernizr { position: absolute; } }', function(node) {\r\n bool = (window.getComputedStyle ?\r\n window.getComputedStyle(node, null) :\r\n node.currentStyle).position == 'absolute';\r\n });\r\n\r\n return bool;\r\n };\r\n })();\r\n\r\n\r\n ModernizrProto.mq = mq;\r\n\r\n \r\n\r\n // Run each test\r\n testRunner();\r\n\r\n delete ModernizrProto.addTest;\r\n delete ModernizrProto.addAsyncTest;\r\n\r\n // Run the things that are supposed to run after the tests\r\n for (var i = 0; i < Modernizr._q.length; i++) {\r\n Modernizr._q[i]();\r\n }\r\n\r\n // Leak Modernizr namespace\r\n window.Modernizr = Modernizr;\r\n\r\n\r\n;\r\n\r\n})(window, document);","/**\n * CLDR JavaScript Library v0.5.4\n * http://jquery.com/\n *\n * Copyright 2013 Rafael Xavier de Souza\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2020-10-22T15:56Z\n */\n/*!\n * CLDR JavaScript Library v0.5.4 2020-10-22T15:56Z MIT license © Rafael Xavier\n * http://git.io/h4lmVg\n */\n(function( root, factory ) {\n\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\t// AMD.\n\t\tdefine( factory );\n\t} else if ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\t\t// Node. CommonJS.\n\t\tmodule.exports = factory();\n\t} else {\n\t\t// Global\n\t\troot.Cldr = factory();\n\t}\n\n}( this, function() {\n\n\n\tvar arrayIsArray = Array.isArray || function( obj ) {\n\t\treturn Object.prototype.toString.call( obj ) === \"[object Array]\";\n\t};\n\n\n\n\n\tvar pathNormalize = function( path, attributes ) {\n\t\tif ( arrayIsArray( path ) ) {\n\t\t\tpath = path.join( \"/\" );\n\t\t}\n\t\tif ( typeof path !== \"string\" ) {\n\t\t\tthrow new Error( \"invalid path \\\"\" + path + \"\\\"\" );\n\t\t}\n\t\t// 1: Ignore leading slash `/`\n\t\t// 2: Ignore leading `cldr/`\n\t\tpath = path\n\t\t\t.replace( /^\\// , \"\" ) /* 1 */\n\t\t\t.replace( /^cldr\\// , \"\" ); /* 2 */\n\n\t\t// Replace {attribute}'s\n\t\tpath = path.replace( /{[a-zA-Z]+}/g, function( name ) {\n\t\t\tname = name.replace( /^{([^}]*)}$/, \"$1\" );\n\t\t\treturn attributes[ name ];\n\t\t});\n\n\t\treturn path.split( \"/\" );\n\t};\n\n\n\n\n\tvar arraySome = function( array, callback ) {\n\t\tvar i, length;\n\t\tif ( array.some ) {\n\t\t\treturn array.some( callback );\n\t\t}\n\t\tfor ( i = 0, length = array.length; i < length; i++ ) {\n\t\t\tif ( callback( array[ i ], i, array ) ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t};\n\n\n\n\n\t/**\n\t * Return the maximized language id as defined in\n\t * http://www.unicode.org/reports/tr35/#Likely_Subtags\n\t * 1. Canonicalize.\n\t * 1.1 Make sure the input locale is in canonical form: uses the right\n\t * separator, and has the right casing.\n\t * TODO Right casing? What df? It seems languages are lowercase, scripts are\n\t * Capitalized, territory is uppercase. I am leaving this as an exercise to\n\t * the user.\n\t *\n\t * 1.2 Replace any deprecated subtags with their canonical values using the\n\t * data in supplemental metadata. Use the first value in the\n\t * replacement list, if it exists. Language tag replacements may have multiple\n\t * parts, such as \"sh\" ➞ \"sr_Latn\" or mo\" ➞ \"ro_MD\". In such a case, the\n\t * original script and/or region are retained if there is one. Thus\n\t * \"sh_Arab_AQ\" ➞ \"sr_Arab_AQ\", not \"sr_Latn_AQ\".\n\t * TODO What data?\n\t *\n\t * 1.3 If the tag is grandfathered (see in the supplemental data), then return it.\n\t * TODO grandfathered?\n\t *\n\t * 1.4 Remove the script code 'Zzzz' and the region code 'ZZ' if they occur.\n\t * 1.5 Get the components of the cleaned-up source tag (languages, scripts,\n\t * and regions), plus any variants and extensions.\n\t * 2. Lookup. Lookup each of the following in order, and stop on the first\n\t * match:\n\t * 2.1 languages_scripts_regions\n\t * 2.2 languages_regions\n\t * 2.3 languages_scripts\n\t * 2.4 languages\n\t * 2.5 und_scripts\n\t * 3. Return\n\t * 3.1 If there is no match, either return an error value, or the match for\n\t * \"und\" (in APIs where a valid language tag is required).\n\t * 3.2 Otherwise there is a match = languagem_scriptm_regionm\n\t * 3.3 Let xr = xs if xs is not empty, and xm otherwise.\n\t * 3.4 Return the language tag composed of languager _ scriptr _ regionr +\n\t * variants + extensions.\n\t *\n\t * @subtags [Array] normalized language id subtags tuple (see init.js).\n\t */\n\tvar coreLikelySubtags = function( Cldr, cldr, subtags, options ) {\n\t\tvar match, matchFound,\n\t\t\tlanguage = subtags[ 0 ],\n\t\t\tscript = subtags[ 1 ],\n\t\t\tsep = Cldr.localeSep,\n\t\t\tterritory = subtags[ 2 ],\n\t\t\tvariants = subtags.slice( 3, 4 );\n\t\toptions = options || {};\n\n\t\t// Skip if (language, script, territory) is not empty [3.3]\n\t\tif ( language !== \"und\" && script !== \"Zzzz\" && territory !== \"ZZ\" ) {\n\t\t\treturn [ language, script, territory ].concat( variants );\n\t\t}\n\n\t\t// Skip if no supplemental likelySubtags data is present\n\t\tif ( typeof cldr.get( \"supplemental/likelySubtags\" ) === \"undefined\" ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// [2]\n\t\tmatchFound = arraySome([\n\t\t\t[ language, script, territory ],\n\t\t\t[ language, territory ],\n\t\t\t[ language, script ],\n\t\t\t[ language ],\n\t\t\t[ \"und\", script ]\n\t\t], function( test ) {\n\t\t\treturn match = !(/\\b(Zzzz|ZZ)\\b/).test( test.join( sep ) ) /* [1.4] */ && cldr.get( [ \"supplemental/likelySubtags\", test.join( sep ) ] );\n\t\t});\n\n\t\t// [3]\n\t\tif ( matchFound ) {\n\t\t\t// [3.2 .. 3.4]\n\t\t\tmatch = match.split( sep );\n\t\t\treturn [\n\t\t\t\tlanguage !== \"und\" ? language : match[ 0 ],\n\t\t\t\tscript !== \"Zzzz\" ? script : match[ 1 ],\n\t\t\t\tterritory !== \"ZZ\" ? territory : match[ 2 ]\n\t\t\t].concat( variants );\n\t\t} else if ( options.force ) {\n\t\t\t// [3.1.2]\n\t\t\treturn cldr.get( \"supplemental/likelySubtags/und\" ).split( sep );\n\t\t} else {\n\t\t\t// [3.1.1]\n\t\t\treturn;\n\t\t}\n\t};\n\n\n\n\t/**\n\t * Given a locale, remove any fields that Add Likely Subtags would add.\n\t * http://www.unicode.org/reports/tr35/#Likely_Subtags\n\t * 1. First get max = AddLikelySubtags(inputLocale). If an error is signaled,\n\t * return it.\n\t * 2. Remove the variants from max.\n\t * 3. Then for trial in {language, language _ region, language _ script}. If\n\t * AddLikelySubtags(trial) = max, then return trial + variants.\n\t * 4. If you do not get a match, return max + variants.\n\t * \n\t * @maxLanguageId [Array] maxLanguageId tuple (see init.js).\n\t */\n\tvar coreRemoveLikelySubtags = function( Cldr, cldr, maxLanguageId ) {\n\t\tvar match, matchFound,\n\t\t\tlanguage = maxLanguageId[ 0 ],\n\t\t\tscript = maxLanguageId[ 1 ],\n\t\t\tterritory = maxLanguageId[ 2 ],\n\t\t\tvariants = maxLanguageId[ 3 ];\n\n\t\t// [3]\n\t\tmatchFound = arraySome([\n\t\t\t[ [ language, \"Zzzz\", \"ZZ\" ], [ language ] ],\n\t\t\t[ [ language, \"Zzzz\", territory ], [ language, territory ] ],\n\t\t\t[ [ language, script, \"ZZ\" ], [ language, script ] ]\n\t\t], function( test ) {\n\t\t\tvar result = coreLikelySubtags( Cldr, cldr, test[ 0 ] );\n\t\t\tmatch = test[ 1 ];\n\t\t\treturn result && result[ 0 ] === maxLanguageId[ 0 ] &&\n\t\t\t\tresult[ 1 ] === maxLanguageId[ 1 ] &&\n\t\t\t\tresult[ 2 ] === maxLanguageId[ 2 ];\n\t\t});\n\n\t\tif ( matchFound ) {\n\t\t\tif ( variants ) {\n\t\t\t\tmatch.push( variants );\n\t\t\t}\n\t\t\treturn match;\n\t\t}\n\n\t\t// [4]\n\t\treturn maxLanguageId;\n\t};\n\n\n\n\n\t/**\n\t * subtags( locale )\n\t *\n\t * @locale [String]\n\t */\n\tvar coreSubtags = function( locale ) {\n\t\tvar aux, unicodeLanguageId,\n\t\t\tsubtags = [];\n\n\t\tlocale = locale.replace( /_/, \"-\" );\n\n\t\t// Unicode locale extensions.\n\t\taux = locale.split( \"-u-\" );\n\t\tif ( aux[ 1 ] ) {\n\t\t\taux[ 1 ] = aux[ 1 ].split( \"-t-\" );\n\t\t\tlocale = aux[ 0 ] + ( aux[ 1 ][ 1 ] ? \"-t-\" + aux[ 1 ][ 1 ] : \"\");\n\t\t\tsubtags[ 4 /* unicodeLocaleExtensions */ ] = aux[ 1 ][ 0 ];\n\t\t}\n\n\t\t// TODO normalize transformed extensions. Currently, skipped.\n\t\t// subtags[ x ] = locale.split( \"-t-\" )[ 1 ];\n\t\tunicodeLanguageId = locale.split( \"-t-\" )[ 0 ];\n\n\t\t// unicode_language_id = \"root\"\n\t\t// | unicode_language_subtag \n\t\t// (sep unicode_script_subtag)? \n\t\t// (sep unicode_region_subtag)?\n\t\t// (sep unicode_variant_subtag)* ;\n\t\t//\n\t\t// Although unicode_language_subtag = alpha{2,8}, I'm using alpha{2,3}. Because, there's no language on CLDR lengthier than 3.\n\t\taux = unicodeLanguageId.match( /^(([a-z]{2,3})(-([A-Z][a-z]{3}))?(-([A-Z]{2}|[0-9]{3}))?)((-([a-zA-Z0-9]{5,8}|[0-9][a-zA-Z0-9]{3}))*)$|^(root)$/ );\n\t\tif ( aux === null ) {\n\t\t\treturn [ \"und\", \"Zzzz\", \"ZZ\" ];\n\t\t}\n\t\tsubtags[ 0 /* language */ ] = aux[ 10 ] /* root */ || aux[ 2 ] || \"und\";\n\t\tsubtags[ 1 /* script */ ] = aux[ 4 ] || \"Zzzz\";\n\t\tsubtags[ 2 /* territory */ ] = aux[ 6 ] || \"ZZ\";\n\t\tif ( aux[ 7 ] && aux[ 7 ].length ) {\n\t\t\tsubtags[ 3 /* variant */ ] = aux[ 7 ].slice( 1 ) /* remove leading \"-\" */;\n\t\t}\n\n\t\t// 0: language\n\t\t// 1: script\n\t\t// 2: territory (aka region)\n\t\t// 3: variant\n\t\t// 4: unicodeLocaleExtensions\n\t\treturn subtags;\n\t};\n\n\n\n\n\tvar arrayForEach = function( array, callback ) {\n\t\tvar i, length;\n\t\tif ( array.forEach ) {\n\t\t\treturn array.forEach( callback );\n\t\t}\n\t\tfor ( i = 0, length = array.length; i < length; i++ ) {\n\t\t\tcallback( array[ i ], i, array );\n\t\t}\n\t};\n\n\n\n\n\t/**\n\t * bundleLookup( minLanguageId )\n\t *\n\t * @Cldr [Cldr class]\n\t *\n\t * @cldr [Cldr instance]\n\t *\n\t * @minLanguageId [String] requested languageId after applied remove likely subtags.\n\t */\n\tvar bundleLookup = function( Cldr, cldr, minLanguageId ) {\n\t\tvar availableBundleMap = Cldr._availableBundleMap,\n\t\t\tavailableBundleMapQueue = Cldr._availableBundleMapQueue;\n\n\t\tif ( availableBundleMapQueue.length ) {\n\t\t\tarrayForEach( availableBundleMapQueue, function( bundle, i ) {\n\t\t\t\tvar existing, maxBundle, minBundle, subtags;\n\t\t\t\tsubtags = coreSubtags( bundle );\n\t\t\t\tmaxBundle = coreLikelySubtags( Cldr, cldr, subtags );\n\t\t\t\tif ( maxBundle === undefined ) {\n\t\t\t\t\tavailableBundleMapQueue.splice( i, 1 );\n\t\t\t\t\tthrow new Error( \"Could not find likelySubtags for \" + bundle );\n\t\t\t\t}\n\t\t\t\tminBundle = coreRemoveLikelySubtags( Cldr, cldr, maxBundle );\n\t\t\t\tminBundle = minBundle.join( Cldr.localeSep );\n\t\t\t\texisting = availableBundleMap[ minBundle ];\n\t\t\t\tif ( existing && existing.length < bundle.length ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tavailableBundleMap[ minBundle ] = bundle;\n\t\t\t});\n\t\t\tCldr._availableBundleMapQueue = [];\n\t\t}\n\n\t\treturn availableBundleMap[ minLanguageId ] || null;\n\t};\n\n\n\n\n\tvar objectKeys = function( object ) {\n\t\tvar i,\n\t\t\tresult = [];\n\n\t\tif ( Object.keys ) {\n\t\t\treturn Object.keys( object );\n\t\t}\n\n\t\tfor ( i in object ) {\n\t\t\tresult.push( i );\n\t\t}\n\n\t\treturn result;\n\t};\n\n\n\n\n\tvar createError = function( code, attributes ) {\n\t\tvar error, message;\n\n\t\tmessage = code + ( attributes && JSON ? \": \" + JSON.stringify( attributes ) : \"\" );\n\t\terror = new Error( message );\n\t\terror.code = code;\n\n\t\t// extend( error, attributes );\n\t\tarrayForEach( objectKeys( attributes ), function( attribute ) {\n\t\t\terror[ attribute ] = attributes[ attribute ];\n\t\t});\n\n\t\treturn error;\n\t};\n\n\n\n\n\tvar validate = function( code, check, attributes ) {\n\t\tif ( !check ) {\n\t\t\tthrow createError( code, attributes );\n\t\t}\n\t};\n\n\n\n\n\tvar validatePresence = function( value, name ) {\n\t\tvalidate( \"E_MISSING_PARAMETER\", typeof value !== \"undefined\", {\n\t\t\tname: name\n\t\t});\n\t};\n\n\n\n\n\tvar validateType = function( value, name, check, expected ) {\n\t\tvalidate( \"E_INVALID_PAR_TYPE\", check, {\n\t\t\texpected: expected,\n\t\t\tname: name,\n\t\t\tvalue: value\n\t\t});\n\t};\n\n\n\n\n\tvar validateTypePath = function( value, name ) {\n\t\tvalidateType( value, name, typeof value === \"string\" || arrayIsArray( value ), \"String or Array\" );\n\t};\n\n\n\n\n\t/**\n\t * Function inspired by jQuery Core, but reduced to our use case.\n\t */\n\tvar isPlainObject = function( obj ) {\n\t\treturn obj !== null && \"\" + obj === \"[object Object]\";\n\t};\n\n\n\n\n\tvar validateTypePlainObject = function( value, name ) {\n\t\tvalidateType( value, name, typeof value === \"undefined\" || isPlainObject( value ), \"Plain Object\" );\n\t};\n\n\n\n\n\tvar validateTypeString = function( value, name ) {\n\t\tvalidateType( value, name, typeof value === \"string\", \"a string\" );\n\t};\n\n\n\n\n\t// @path: normalized path\n\tvar resourceGet = function( data, path ) {\n\t\tvar i,\n\t\t\tnode = data,\n\t\t\tlength = path.length;\n\n\t\tfor ( i = 0; i < length - 1; i++ ) {\n\t\t\tnode = node[ path[ i ] ];\n\t\t\tif ( !node ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t}\n\t\treturn node[ path[ i ] ];\n\t};\n\n\n\n\n\t/**\n\t * setAvailableBundles( Cldr, json )\n\t *\n\t * @Cldr [Cldr class]\n\t *\n\t * @json resolved/unresolved cldr data.\n\t *\n\t * Set available bundles queue based on passed json CLDR data. Considers a bundle as any String at /main/{bundle}.\n\t */\n\tvar coreSetAvailableBundles = function( Cldr, json ) {\n\t\tvar bundle,\n\t\t\tavailableBundleMapQueue = Cldr._availableBundleMapQueue,\n\t\t\tmain = resourceGet( json, [ \"main\" ] );\n\n\t\tif ( main ) {\n\t\t\tfor ( bundle in main ) {\n\t\t\t\tif ( main.hasOwnProperty( bundle ) && bundle !== \"root\" &&\n\t\t\t\t\t\t\tavailableBundleMapQueue.indexOf( bundle ) === -1 ) {\n\t\t\t\t\tavailableBundleMapQueue.push( bundle );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\n\n\tvar alwaysArray = function( somethingOrArray ) {\n\t\treturn arrayIsArray( somethingOrArray ) ? somethingOrArray : [ somethingOrArray ];\n\t};\n\n\n\tvar jsonMerge = (function() {\n\n\t// Returns new deeply merged JSON.\n\t//\n\t// Eg.\n\t// merge( { a: { b: 1, c: 2 } }, { a: { b: 3, d: 4 } } )\n\t// -> { a: { b: 3, c: 2, d: 4 } }\n\t//\n\t// @arguments JSON's\n\t// \n\tvar merge = function() {\n\t\tvar destination = {},\n\t\t\tsources = [].slice.call( arguments, 0 );\n\t\tarrayForEach( sources, function( source ) {\n\t\t\tvar prop;\n\t\t\tfor ( prop in source ) {\n\t\t\t\tif ( prop in destination && typeof destination[ prop ] === \"object\" && !arrayIsArray( destination[ prop ] ) ) {\n\n\t\t\t\t\t// Merge Objects\n\t\t\t\t\tdestination[ prop ] = merge( destination[ prop ], source[ prop ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Set new values\n\t\t\t\t\tdestination[ prop ] = source[ prop ];\n\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\treturn destination;\n\t};\n\n\treturn merge;\n\n}());\n\n\n\t/**\n\t * load( Cldr, source, jsons )\n\t *\n\t * @Cldr [Cldr class]\n\t *\n\t * @source [Object]\n\t *\n\t * @jsons [arguments]\n\t */\n\tvar coreLoad = function( Cldr, source, jsons ) {\n\t\tvar i, j, json;\n\n\t\tvalidatePresence( jsons[ 0 ], \"json\" );\n\n\t\t// Support arbitrary parameters, e.g., `Cldr.load({...}, {...})`.\n\t\tfor ( i = 0; i < jsons.length; i++ ) {\n\n\t\t\t// Support array parameters, e.g., `Cldr.load([{...}, {...}])`.\n\t\t\tjson = alwaysArray( jsons[ i ] );\n\n\t\t\tfor ( j = 0; j < json.length; j++ ) {\n\t\t\t\tvalidateTypePlainObject( json[ j ], \"json\" );\n\t\t\t\tsource = jsonMerge( source, json[ j ] );\n\t\t\t\tcoreSetAvailableBundles( Cldr, json[ j ] );\n\t\t\t}\n\t\t}\n\n\t\treturn source;\n\t};\n\n\n\n\tvar itemGetResolved = function( Cldr, path, attributes ) {\n\t\t// Resolve path\n\t\tvar normalizedPath = pathNormalize( path, attributes );\n\n\t\treturn resourceGet( Cldr._resolved, normalizedPath );\n\t};\n\n\n\n\n\t/**\n\t * new Cldr()\n\t */\n\tvar Cldr = function( locale ) {\n\t\tthis.init( locale );\n\t};\n\n\t// Build optimization hack to avoid duplicating functions across modules.\n\tCldr._alwaysArray = alwaysArray;\n\tCldr._coreLoad = coreLoad;\n\tCldr._createError = createError;\n\tCldr._itemGetResolved = itemGetResolved;\n\tCldr._jsonMerge = jsonMerge;\n\tCldr._pathNormalize = pathNormalize;\n\tCldr._resourceGet = resourceGet;\n\tCldr._validatePresence = validatePresence;\n\tCldr._validateType = validateType;\n\tCldr._validateTypePath = validateTypePath;\n\tCldr._validateTypePlainObject = validateTypePlainObject;\n\n\tCldr._availableBundleMap = {};\n\tCldr._availableBundleMapQueue = [];\n\tCldr._resolved = {};\n\n\t// Allow user to override locale separator \"-\" (default) | \"_\". According to http://www.unicode.org/reports/tr35/#Unicode_language_identifier, both \"-\" and \"_\" are valid locale separators (eg. \"en_GB\", \"en-GB\"). According to http://unicode.org/cldr/trac/ticket/6786 its usage must be consistent throughout the data set.\n\tCldr.localeSep = \"-\";\n\n\t/**\n\t * Cldr.load( json [, json, ...] )\n\t *\n\t * @json [JSON] CLDR data or [Array] Array of @json's.\n\t *\n\t * Load resolved cldr data.\n\t */\n\tCldr.load = function() {\n\t\tCldr._resolved = coreLoad( Cldr, Cldr._resolved, arguments );\n\t};\n\n\t/**\n\t * .init() automatically run on instantiation/construction.\n\t */\n\tCldr.prototype.init = function( locale ) {\n\t\tvar attributes, language, maxLanguageId, minLanguageId, script, subtags, territory, unicodeLocaleExtensions, variant,\n\t\t\tsep = Cldr.localeSep,\n\t\t\tunicodeLocaleExtensionsRaw = \"\";\n\n\t\tvalidatePresence( locale, \"locale\" );\n\t\tvalidateTypeString( locale, \"locale\" );\n\n\t\tsubtags = coreSubtags( locale );\n\n\t\tif ( subtags.length === 5 ) {\n\t\t\tunicodeLocaleExtensions = subtags.pop();\n\t\t\tunicodeLocaleExtensionsRaw = sep + \"u\" + sep + unicodeLocaleExtensions;\n\t\t\t// Remove trailing null when there is unicodeLocaleExtensions but no variants.\n\t\t\tif ( !subtags[ 3 ] ) {\n\t\t\t\tsubtags.pop();\n\t\t\t}\n\t\t}\n\t\tvariant = subtags[ 3 ];\n\n\t\t// Normalize locale code.\n\t\t// Get (or deduce) the \"triple subtags\": language, territory (also aliased as region), and script subtags.\n\t\t// Get the variant subtags (calendar, collation, currency, etc).\n\t\t// refs:\n\t\t// - http://www.unicode.org/reports/tr35/#Field_Definitions\n\t\t// - http://www.unicode.org/reports/tr35/#Language_and_Locale_IDs\n\t\t// - http://www.unicode.org/reports/tr35/#Unicode_locale_identifier\n\n\t\t// When a locale id does not specify a language, or territory (region), or script, they are obtained by Likely Subtags.\n\t\tmaxLanguageId = coreLikelySubtags( Cldr, this, subtags, { force: true } ) || subtags;\n\t\tlanguage = maxLanguageId[ 0 ];\n\t\tscript = maxLanguageId[ 1 ];\n\t\tterritory = maxLanguageId[ 2 ];\n\n\t\tminLanguageId = coreRemoveLikelySubtags( Cldr, this, maxLanguageId ).join( sep );\n\n\t\t// Set attributes\n\t\tthis.attributes = attributes = {\n\t\t\tbundle: bundleLookup( Cldr, this, minLanguageId ),\n\n\t\t\t// Unicode Language Id\n\t\t\tminLanguageId: minLanguageId + unicodeLocaleExtensionsRaw,\n\t\t\tmaxLanguageId: maxLanguageId.join( sep ) + unicodeLocaleExtensionsRaw,\n\n\t\t\t// Unicode Language Id Subtabs\n\t\t\tlanguage: language,\n\t\t\tscript: script,\n\t\t\tterritory: territory,\n\t\t\tregion: territory, /* alias */\n\t\t\tvariant: variant\n\t\t};\n\n\t\t// Unicode locale extensions.\n\t\tunicodeLocaleExtensions && ( \"-\" + unicodeLocaleExtensions ).replace( /-[a-z]{3,8}|(-[a-z]{2})-([a-z]{3,8})/g, function( attribute, key, type ) {\n\n\t\t\tif ( key ) {\n\n\t\t\t\t// Extension is in the `keyword` form.\n\t\t\t\tattributes[ \"u\" + key ] = type;\n\t\t\t} else {\n\n\t\t\t\t// Extension is in the `attribute` form.\n\t\t\t\tattributes[ \"u\" + attribute ] = true;\n\t\t\t}\n\t\t});\n\n\t\tthis.locale = locale;\n\t};\n\n\t/**\n\t * .get()\n\t */\n\tCldr.prototype.get = function( path ) {\n\n\t\tvalidatePresence( path, \"path\" );\n\t\tvalidateTypePath( path, \"path\" );\n\n\t\treturn itemGetResolved( Cldr, path, this.attributes );\n\t};\n\n\t/**\n\t * .main()\n\t */\n\tCldr.prototype.main = function( path ) {\n\t\tvalidatePresence( path, \"path\" );\n\t\tvalidateTypePath( path, \"path\" );\n\n\t\tvalidate( \"E_MISSING_BUNDLE\", this.attributes.bundle !== null, {\n\t\t\tlocale: this.locale\n\t\t});\n\n\t\tpath = alwaysArray( path );\n\t\treturn this.get( [ \"main/{bundle}\" ].concat( path ) );\n\t};\n\n\treturn Cldr;\n\n\n\n\n}));\n","/**\n * CLDR JavaScript Library v0.5.4\n * http://jquery.com/\n *\n * Copyright 2013 Rafael Xavier de Souza\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2020-10-22T15:56Z\n */\n/*!\n * CLDR JavaScript Library v0.5.4 2020-10-22T15:56Z MIT license © Rafael Xavier\n * http://git.io/h4lmVg\n */\n(function( factory ) {\n\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\t// AMD.\n\t\tdefine( [ \"../cldr\" ], factory );\n\t} else if ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\t\t// Node. CommonJS.\n\t\tmodule.exports = factory( require( \"../cldr\" ) );\n\t} else {\n\t\t// Global\n\t\tfactory( Cldr );\n\t}\n\n}(function( Cldr ) {\n\n\t// Build optimization hack to avoid duplicating functions across modules.\n\tvar pathNormalize = Cldr._pathNormalize,\n\t\tvalidatePresence = Cldr._validatePresence,\n\t\tvalidateType = Cldr._validateType;\n\n/*!\n * EventEmitter v4.2.7 - git.io/ee\n * Oliver Caldwell\n * MIT license\n * @preserve\n */\n\nvar EventEmitter;\n/* jshint ignore:start */\nEventEmitter = (function () {\n\n\n\t/**\n\t * Class for managing events.\n\t * Can be extended to provide event functionality in other classes.\n\t *\n\t * @class EventEmitter Manages event registering and emitting.\n\t */\n\tfunction EventEmitter() {}\n\n\t// Shortcuts to improve speed and size\n\tvar proto = EventEmitter.prototype;\n\tvar exports = {};\n\t\n\n\t/**\n\t * Finds the index of the listener for the event in it's storage array.\n\t *\n\t * @param {Function[]} listeners Array of listeners to search through.\n\t * @param {Function} listener Method to look for.\n\t * @return {Number} Index of the specified listener, -1 if not found\n\t * @api private\n\t */\n\tfunction indexOfListener(listeners, listener) {\n\t\tvar i = listeners.length;\n\t\twhile (i--) {\n\t\t\tif (listeners[i].listener === listener) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t}\n\n\t/**\n\t * Alias a method while keeping the context correct, to allow for overwriting of target method.\n\t *\n\t * @param {String} name The name of the target method.\n\t * @return {Function} The aliased method\n\t * @api private\n\t */\n\tfunction alias(name) {\n\t\treturn function aliasClosure() {\n\t\t\treturn this[name].apply(this, arguments);\n\t\t};\n\t}\n\n\t/**\n\t * Returns the listener array for the specified event.\n\t * Will initialise the event object and listener arrays if required.\n\t * Will return an object if you use a regex search. The object contains keys for each matched event. So /ba[rz]/ might return an object containing bar and baz. But only if you have either defined them with defineEvent or added some listeners to them.\n\t * Each property in the object response is an array of listener functions.\n\t *\n\t * @param {String|RegExp} evt Name of the event to return the listeners from.\n\t * @return {Function[]|Object} All listener functions for the event.\n\t */\n\tproto.getListeners = function getListeners(evt) {\n\t\tvar events = this._getEvents();\n\t\tvar response;\n\t\tvar key;\n\n\t\t// Return a concatenated array of all matching events if\n\t\t// the selector is a regular expression.\n\t\tif (evt instanceof RegExp) {\n\t\t\tresponse = {};\n\t\t\tfor (key in events) {\n\t\t\t\tif (events.hasOwnProperty(key) && evt.test(key)) {\n\t\t\t\t\tresponse[key] = events[key];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tresponse = events[evt] || (events[evt] = []);\n\t\t}\n\n\t\treturn response;\n\t};\n\n\t/**\n\t * Takes a list of listener objects and flattens it into a list of listener functions.\n\t *\n\t * @param {Object[]} listeners Raw listener objects.\n\t * @return {Function[]} Just the listener functions.\n\t */\n\tproto.flattenListeners = function flattenListeners(listeners) {\n\t\tvar flatListeners = [];\n\t\tvar i;\n\n\t\tfor (i = 0; i < listeners.length; i += 1) {\n\t\t\tflatListeners.push(listeners[i].listener);\n\t\t}\n\n\t\treturn flatListeners;\n\t};\n\n\t/**\n\t * Fetches the requested listeners via getListeners but will always return the results inside an object. This is mainly for internal use but others may find it useful.\n\t *\n\t * @param {String|RegExp} evt Name of the event to return the listeners from.\n\t * @return {Object} All listener functions for an event in an object.\n\t */\n\tproto.getListenersAsObject = function getListenersAsObject(evt) {\n\t\tvar listeners = this.getListeners(evt);\n\t\tvar response;\n\n\t\tif (listeners instanceof Array) {\n\t\t\tresponse = {};\n\t\t\tresponse[evt] = listeners;\n\t\t}\n\n\t\treturn response || listeners;\n\t};\n\n\t/**\n\t * Adds a listener function to the specified event.\n\t * The listener will not be added if it is a duplicate.\n\t * If the listener returns true then it will be removed after it is called.\n\t * If you pass a regular expression as the event name then the listener will be added to all events that match it.\n\t *\n\t * @param {String|RegExp} evt Name of the event to attach the listener to.\n\t * @param {Function} listener Method to be called when the event is emitted. If the function returns true then it will be removed after calling.\n\t * @return {Object} Current instance of EventEmitter for chaining.\n\t */\n\tproto.addListener = function addListener(evt, listener) {\n\t\tvar listeners = this.getListenersAsObject(evt);\n\t\tvar listenerIsWrapped = typeof listener === 'object';\n\t\tvar key;\n\n\t\tfor (key in listeners) {\n\t\t\tif (listeners.hasOwnProperty(key) && indexOfListener(listeners[key], listener) === -1) {\n\t\t\t\tlisteners[key].push(listenerIsWrapped ? listener : {\n\t\t\t\t\tlistener: listener,\n\t\t\t\t\tonce: false\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t};\n\n\t/**\n\t * Alias of addListener\n\t */\n\tproto.on = alias('addListener');\n\n\t/**\n\t * Semi-alias of addListener. It will add a listener that will be\n\t * automatically removed after it's first execution.\n\t *\n\t * @param {String|RegExp} evt Name of the event to attach the listener to.\n\t * @param {Function} listener Method to be called when the event is emitted. If the function returns true then it will be removed after calling.\n\t * @return {Object} Current instance of EventEmitter for chaining.\n\t */\n\tproto.addOnceListener = function addOnceListener(evt, listener) {\n\t\treturn this.addListener(evt, {\n\t\t\tlistener: listener,\n\t\t\tonce: true\n\t\t});\n\t};\n\n\t/**\n\t * Alias of addOnceListener.\n\t */\n\tproto.once = alias('addOnceListener');\n\n\t/**\n\t * Defines an event name. This is required if you want to use a regex to add a listener to multiple events at once. If you don't do this then how do you expect it to know what event to add to? Should it just add to every possible match for a regex? No. That is scary and bad.\n\t * You need to tell it what event names should be matched by a regex.\n\t *\n\t * @param {String} evt Name of the event to create.\n\t * @return {Object} Current instance of EventEmitter for chaining.\n\t */\n\tproto.defineEvent = function defineEvent(evt) {\n\t\tthis.getListeners(evt);\n\t\treturn this;\n\t};\n\n\t/**\n\t * Uses defineEvent to define multiple events.\n\t *\n\t * @param {String[]} evts An array of event names to define.\n\t * @return {Object} Current instance of EventEmitter for chaining.\n\t */\n\tproto.defineEvents = function defineEvents(evts) {\n\t\tfor (var i = 0; i < evts.length; i += 1) {\n\t\t\tthis.defineEvent(evts[i]);\n\t\t}\n\t\treturn this;\n\t};\n\n\t/**\n\t * Removes a listener function from the specified event.\n\t * When passed a regular expression as the event name, it will remove the listener from all events that match it.\n\t *\n\t * @param {String|RegExp} evt Name of the event to remove the listener from.\n\t * @param {Function} listener Method to remove from the event.\n\t * @return {Object} Current instance of EventEmitter for chaining.\n\t */\n\tproto.removeListener = function removeListener(evt, listener) {\n\t\tvar listeners = this.getListenersAsObject(evt);\n\t\tvar index;\n\t\tvar key;\n\n\t\tfor (key in listeners) {\n\t\t\tif (listeners.hasOwnProperty(key)) {\n\t\t\t\tindex = indexOfListener(listeners[key], listener);\n\n\t\t\t\tif (index !== -1) {\n\t\t\t\t\tlisteners[key].splice(index, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t};\n\n\t/**\n\t * Alias of removeListener\n\t */\n\tproto.off = alias('removeListener');\n\n\t/**\n\t * Adds listeners in bulk using the manipulateListeners method.\n\t * If you pass an object as the second argument you can add to multiple events at once. The object should contain key value pairs of events and listeners or listener arrays. You can also pass it an event name and an array of listeners to be added.\n\t * You can also pass it a regular expression to add the array of listeners to all events that match it.\n\t * Yeah, this function does quite a bit. That's probably a bad thing.\n\t *\n\t * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to add to multiple events at once.\n\t * @param {Function[]} [listeners] An optional array of listener functions to add.\n\t * @return {Object} Current instance of EventEmitter for chaining.\n\t */\n\tproto.addListeners = function addListeners(evt, listeners) {\n\t\t// Pass through to manipulateListeners\n\t\treturn this.manipulateListeners(false, evt, listeners);\n\t};\n\n\t/**\n\t * Removes listeners in bulk using the manipulateListeners method.\n\t * If you pass an object as the second argument you can remove from multiple events at once. The object should contain key value pairs of events and listeners or listener arrays.\n\t * You can also pass it an event name and an array of listeners to be removed.\n\t * You can also pass it a regular expression to remove the listeners from all events that match it.\n\t *\n\t * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to remove from multiple events at once.\n\t * @param {Function[]} [listeners] An optional array of listener functions to remove.\n\t * @return {Object} Current instance of EventEmitter for chaining.\n\t */\n\tproto.removeListeners = function removeListeners(evt, listeners) {\n\t\t// Pass through to manipulateListeners\n\t\treturn this.manipulateListeners(true, evt, listeners);\n\t};\n\n\t/**\n\t * Edits listeners in bulk. The addListeners and removeListeners methods both use this to do their job. You should really use those instead, this is a little lower level.\n\t * The first argument will determine if the listeners are removed (true) or added (false).\n\t * If you pass an object as the second argument you can add/remove from multiple events at once. The object should contain key value pairs of events and listeners or listener arrays.\n\t * You can also pass it an event name and an array of listeners to be added/removed.\n\t * You can also pass it a regular expression to manipulate the listeners of all events that match it.\n\t *\n\t * @param {Boolean} remove True if you want to remove listeners, false if you want to add.\n\t * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to add/remove from multiple events at once.\n\t * @param {Function[]} [listeners] An optional array of listener functions to add/remove.\n\t * @return {Object} Current instance of EventEmitter for chaining.\n\t */\n\tproto.manipulateListeners = function manipulateListeners(remove, evt, listeners) {\n\t\tvar i;\n\t\tvar value;\n\t\tvar single = remove ? this.removeListener : this.addListener;\n\t\tvar multiple = remove ? this.removeListeners : this.addListeners;\n\n\t\t// If evt is an object then pass each of it's properties to this method\n\t\tif (typeof evt === 'object' && !(evt instanceof RegExp)) {\n\t\t\tfor (i in evt) {\n\t\t\t\tif (evt.hasOwnProperty(i) && (value = evt[i])) {\n\t\t\t\t\t// Pass the single listener straight through to the singular method\n\t\t\t\t\tif (typeof value === 'function') {\n\t\t\t\t\t\tsingle.call(this, i, value);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\t// Otherwise pass back to the multiple function\n\t\t\t\t\t\tmultiple.call(this, i, value);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\t// So evt must be a string\n\t\t\t// And listeners must be an array of listeners\n\t\t\t// Loop over it and pass each one to the multiple method\n\t\t\ti = listeners.length;\n\t\t\twhile (i--) {\n\t\t\t\tsingle.call(this, evt, listeners[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t};\n\n\t/**\n\t * Removes all listeners from a specified event.\n\t * If you do not specify an event then all listeners will be removed.\n\t * That means every event will be emptied.\n\t * You can also pass a regex to remove all events that match it.\n\t *\n\t * @param {String|RegExp} [evt] Optional name of the event to remove all listeners for. Will remove from every event if not passed.\n\t * @return {Object} Current instance of EventEmitter for chaining.\n\t */\n\tproto.removeEvent = function removeEvent(evt) {\n\t\tvar type = typeof evt;\n\t\tvar events = this._getEvents();\n\t\tvar key;\n\n\t\t// Remove different things depending on the state of evt\n\t\tif (type === 'string') {\n\t\t\t// Remove all listeners for the specified event\n\t\t\tdelete events[evt];\n\t\t}\n\t\telse if (evt instanceof RegExp) {\n\t\t\t// Remove all events matching the regex.\n\t\t\tfor (key in events) {\n\t\t\t\tif (events.hasOwnProperty(key) && evt.test(key)) {\n\t\t\t\t\tdelete events[key];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\t// Remove all listeners in all events\n\t\t\tdelete this._events;\n\t\t}\n\n\t\treturn this;\n\t};\n\n\t/**\n\t * Alias of removeEvent.\n\t *\n\t * Added to mirror the node API.\n\t */\n\tproto.removeAllListeners = alias('removeEvent');\n\n\t/**\n\t * Emits an event of your choice.\n\t * When emitted, every listener attached to that event will be executed.\n\t * If you pass the optional argument array then those arguments will be passed to every listener upon execution.\n\t * Because it uses `apply`, your array of arguments will be passed as if you wrote them out separately.\n\t * So they will not arrive within the array on the other side, they will be separate.\n\t * You can also pass a regular expression to emit to all events that match it.\n\t *\n\t * @param {String|RegExp} evt Name of the event to emit and execute listeners for.\n\t * @param {Array} [args] Optional array of arguments to be passed to each listener.\n\t * @return {Object} Current instance of EventEmitter for chaining.\n\t */\n\tproto.emitEvent = function emitEvent(evt, args) {\n\t\tvar listeners = this.getListenersAsObject(evt);\n\t\tvar listener;\n\t\tvar i;\n\t\tvar key;\n\t\tvar response;\n\n\t\tfor (key in listeners) {\n\t\t\tif (listeners.hasOwnProperty(key)) {\n\t\t\t\ti = listeners[key].length;\n\n\t\t\t\twhile (i--) {\n\t\t\t\t\t// If the listener returns true then it shall be removed from the event\n\t\t\t\t\t// The function is executed either with a basic call or an apply if there is an args array\n\t\t\t\t\tlistener = listeners[key][i];\n\n\t\t\t\t\tif (listener.once === true) {\n\t\t\t\t\t\tthis.removeListener(evt, listener.listener);\n\t\t\t\t\t}\n\n\t\t\t\t\tresponse = listener.listener.apply(this, args || []);\n\n\t\t\t\t\tif (response === this._getOnceReturnValue()) {\n\t\t\t\t\t\tthis.removeListener(evt, listener.listener);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t};\n\n\t/**\n\t * Alias of emitEvent\n\t */\n\tproto.trigger = alias('emitEvent');\n\n\t/**\n\t * Subtly different from emitEvent in that it will pass its arguments on to the listeners, as opposed to taking a single array of arguments to pass on.\n\t * As with emitEvent, you can pass a regex in place of the event name to emit to all events that match it.\n\t *\n\t * @param {String|RegExp} evt Name of the event to emit and execute listeners for.\n\t * @param {...*} Optional additional arguments to be passed to each listener.\n\t * @return {Object} Current instance of EventEmitter for chaining.\n\t */\n\tproto.emit = function emit(evt) {\n\t\tvar args = Array.prototype.slice.call(arguments, 1);\n\t\treturn this.emitEvent(evt, args);\n\t};\n\n\t/**\n\t * Sets the current value to check against when executing listeners. If a\n\t * listeners return value matches the one set here then it will be removed\n\t * after execution. This value defaults to true.\n\t *\n\t * @param {*} value The new value to check for when executing listeners.\n\t * @return {Object} Current instance of EventEmitter for chaining.\n\t */\n\tproto.setOnceReturnValue = function setOnceReturnValue(value) {\n\t\tthis._onceReturnValue = value;\n\t\treturn this;\n\t};\n\n\t/**\n\t * Fetches the current value to check against when executing listeners. If\n\t * the listeners return value matches this one then it should be removed\n\t * automatically. It will return true by default.\n\t *\n\t * @return {*|Boolean} The current value to check for or the default, true.\n\t * @api private\n\t */\n\tproto._getOnceReturnValue = function _getOnceReturnValue() {\n\t\tif (this.hasOwnProperty('_onceReturnValue')) {\n\t\t\treturn this._onceReturnValue;\n\t\t}\n\t\telse {\n\t\t\treturn true;\n\t\t}\n\t};\n\n\t/**\n\t * Fetches the events object and creates one if required.\n\t *\n\t * @return {Object} The events storage object.\n\t * @api private\n\t */\n\tproto._getEvents = function _getEvents() {\n\t\treturn this._events || (this._events = {});\n\t};\n\n\t/**\n\t * Reverts the global {@link EventEmitter} to its previous value and returns a reference to this version.\n\t *\n\t * @return {Function} Non conflicting EventEmitter class.\n\t */\n\tEventEmitter.noConflict = function noConflict() {\n\t\texports.EventEmitter = originalGlobalValue;\n\t\treturn EventEmitter;\n\t};\n\n\treturn EventEmitter;\n}());\n/* jshint ignore:end */\n\n\n\n\tvar validateTypeFunction = function( value, name ) {\n\t\tvalidateType( value, name, typeof value === \"undefined\" || typeof value === \"function\", \"Function\" );\n\t};\n\n\n\n\n\tvar superGet, superInit,\n\t\tglobalEe = new EventEmitter();\n\n\tfunction validateTypeEvent( value, name ) {\n\t\tvalidateType( value, name, typeof value === \"string\" || value instanceof RegExp, \"String or RegExp\" );\n\t}\n\n\tfunction validateThenCall( method, self ) {\n\t\treturn function( event, listener ) {\n\t\t\tvalidatePresence( event, \"event\" );\n\t\t\tvalidateTypeEvent( event, \"event\" );\n\n\t\t\tvalidatePresence( listener, \"listener\" );\n\t\t\tvalidateTypeFunction( listener, \"listener\" );\n\n\t\t\treturn self[ method ].apply( self, arguments );\n\t\t};\n\t}\n\n\tfunction off( self ) {\n\t\treturn validateThenCall( \"off\", self );\n\t}\n\n\tfunction on( self ) {\n\t\treturn validateThenCall( \"on\", self );\n\t}\n\n\tfunction once( self ) {\n\t\treturn validateThenCall( \"once\", self );\n\t}\n\n\tCldr.off = off( globalEe );\n\tCldr.on = on( globalEe );\n\tCldr.once = once( globalEe );\n\n\t/**\n\t * Overload Cldr.prototype.init().\n\t */\n\tsuperInit = Cldr.prototype.init;\n\tCldr.prototype.init = function() {\n\t\tvar ee;\n\t\tthis.ee = ee = new EventEmitter();\n\t\tthis.off = off( ee );\n\t\tthis.on = on( ee );\n\t\tthis.once = once( ee );\n\t\tsuperInit.apply( this, arguments );\n\t};\n\n\t/**\n\t * getOverload is encapsulated, because of cldr/unresolved. If it's loaded\n\t * after cldr/event (and note it overwrites .get), it can trigger this\n\t * overload again.\n\t */\n\tfunction getOverload() {\n\n\t\t/**\n\t\t * Overload Cldr.prototype.get().\n\t\t */\n\t\tsuperGet = Cldr.prototype.get;\n\t\tCldr.prototype.get = function( path ) {\n\t\t\tvar value = superGet.apply( this, arguments );\n\t\t\tpath = pathNormalize( path, this.attributes ).join( \"/\" );\n\t\t\tglobalEe.trigger( \"get\", [ path, value ] );\n\t\t\tthis.ee.trigger( \"get\", [ path, value ] );\n\t\t\treturn value;\n\t\t};\n\t}\n\n\tCldr._eventInit = getOverload;\n\tgetOverload();\n\n\treturn Cldr;\n\n\n\n\n}));\n","/**\n * CLDR JavaScript Library v0.5.4\n * http://jquery.com/\n *\n * Copyright 2013 Rafael Xavier de Souza\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2020-10-22T15:56Z\n */\n/*!\n * CLDR JavaScript Library v0.5.4 2020-10-22T15:56Z MIT license © Rafael Xavier\n * http://git.io/h4lmVg\n */\n(function( factory ) {\n\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\t// AMD.\n\t\tdefine( [ \"../cldr\" ], factory );\n\t} else if ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\t\t// Node. CommonJS.\n\t\tmodule.exports = factory( require( \"../cldr\" ) );\n\t} else {\n\t\t// Global\n\t\tfactory( Cldr );\n\t}\n\n}(function( Cldr ) {\n\n\t// Build optimization hack to avoid duplicating functions across modules.\n\tvar alwaysArray = Cldr._alwaysArray;\n\n\n\n\tvar supplementalMain = function( cldr ) {\n\n\t\tvar prepend, supplemental;\n\t\t\n\t\tprepend = function( prepend ) {\n\t\t\treturn function( path ) {\n\t\t\t\tpath = alwaysArray( path );\n\t\t\t\treturn cldr.get( [ prepend ].concat( path ) );\n\t\t\t};\n\t\t};\n\n\t\tsupplemental = prepend( \"supplemental\" );\n\n\t\t// Week Data\n\t\t// http://www.unicode.org/reports/tr35/tr35-dates.html#Week_Data\n\t\tsupplemental.weekData = prepend( \"supplemental/weekData\" );\n\n\t\tsupplemental.weekData.firstDay = function() {\n\t\t\treturn cldr.get( \"supplemental/weekData/firstDay/{territory}\" ) ||\n\t\t\t\tcldr.get( \"supplemental/weekData/firstDay/001\" );\n\t\t};\n\n\t\tsupplemental.weekData.minDays = function() {\n\t\t\tvar minDays = cldr.get( \"supplemental/weekData/minDays/{territory}\" ) ||\n\t\t\t\tcldr.get( \"supplemental/weekData/minDays/001\" );\n\t\t\treturn parseInt( minDays, 10 );\n\t\t};\n\n\t\t// Time Data\n\t\t// http://www.unicode.org/reports/tr35/tr35-dates.html#Time_Data\n\t\tsupplemental.timeData = prepend( \"supplemental/timeData\" );\n\n\t\tsupplemental.timeData.allowed = function() {\n\t\t\treturn cldr.get( \"supplemental/timeData/{territory}/_allowed\" ) ||\n\t\t\t\tcldr.get( \"supplemental/timeData/001/_allowed\" );\n\t\t};\n\n\t\tsupplemental.timeData.preferred = function() {\n\t\t\treturn cldr.get( \"supplemental/timeData/{territory}/_preferred\" ) ||\n\t\t\t\tcldr.get( \"supplemental/timeData/001/_preferred\" );\n\t\t};\n\n\t\treturn supplemental;\n\n\t};\n\n\n\n\n\tvar initSuper = Cldr.prototype.init;\n\n\t/**\n\t * .init() automatically ran on construction.\n\t *\n\t * Overload .init().\n\t */\n\tCldr.prototype.init = function() {\n\t\tinitSuper.apply( this, arguments );\n\t\tthis.supplemental = supplementalMain( this );\n\t};\n\n\treturn Cldr;\n\n\n\n\n}));\n","/**\n * matchesSelector v2.0.2\n * matchesSelector( element, '.selector' )\n * MIT license\n */\n\n/*jshint browser: true, strict: true, undef: true, unused: true */\n\n( function( window, factory ) {\n /*global define: false, module: false */\n 'use strict';\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.matchesSelector = factory();\n }\n\n}( window, function factory() {\n 'use strict';\n\n var matchesMethod = ( function() {\n var ElemProto = window.Element.prototype;\n // check for the standard method name first\n if ( ElemProto.matches ) {\n return 'matches';\n }\n // check un-prefixed\n if ( ElemProto.matchesSelector ) {\n return 'matchesSelector';\n }\n // check vendor prefixes\n var prefixes = [ 'webkit', 'moz', 'ms', 'o' ];\n\n for ( var i=0; i < prefixes.length; i++ ) {\n var prefix = prefixes[i];\n var method = prefix + 'MatchesSelector';\n if ( ElemProto[ method ] ) {\n return method;\n }\n }\n })();\n\n return function matchesSelector( elem, selector ) {\n return elem[ matchesMethod ]( selector );\n };\n\n}));\n","/**\n * EvEmitter v1.1.0\n * Lil' event emitter\n * MIT License\n */\n\n/* jshint unused: true, undef: true, strict: true */\n\n( function( global, factory ) {\n // universal module definition\n /* jshint strict: false */ /* globals define, module, window */\n if ( typeof define == 'function' && define.amd ) {\n // AMD - RequireJS\n define( factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS - Browserify, Webpack\n module.exports = factory();\n } else {\n // Browser globals\n global.EvEmitter = factory();\n }\n\n}( typeof window != 'undefined' ? window : this, function() {\n\n\"use strict\";\n\nfunction EvEmitter() {}\n\nvar proto = EvEmitter.prototype;\n\nproto.on = function( eventName, listener ) {\n if ( !eventName || !listener ) {\n return;\n }\n // set events hash\n var events = this._events = this._events || {};\n // set listeners array\n var listeners = events[ eventName ] = events[ eventName ] || [];\n // only add once\n if ( listeners.indexOf( listener ) == -1 ) {\n listeners.push( listener );\n }\n\n return this;\n};\n\nproto.once = function( eventName, listener ) {\n if ( !eventName || !listener ) {\n return;\n }\n // add event\n this.on( eventName, listener );\n // set once flag\n // set onceEvents hash\n var onceEvents = this._onceEvents = this._onceEvents || {};\n // set onceListeners object\n var onceListeners = onceEvents[ eventName ] = onceEvents[ eventName ] || {};\n // set flag\n onceListeners[ listener ] = true;\n\n return this;\n};\n\nproto.off = function( eventName, listener ) {\n var listeners = this._events && this._events[ eventName ];\n if ( !listeners || !listeners.length ) {\n return;\n }\n var index = listeners.indexOf( listener );\n if ( index != -1 ) {\n listeners.splice( index, 1 );\n }\n\n return this;\n};\n\nproto.emitEvent = function( eventName, args ) {\n var listeners = this._events && this._events[ eventName ];\n if ( !listeners || !listeners.length ) {\n return;\n }\n // copy over to avoid interference if .off() in listener\n listeners = listeners.slice(0);\n args = args || [];\n // once stuff\n var onceListeners = this._onceEvents && this._onceEvents[ eventName ];\n\n for ( var i=0; i < listeners.length; i++ ) {\n var listener = listeners[i]\n var isOnce = onceListeners && onceListeners[ listener ];\n if ( isOnce ) {\n // remove listener\n // remove before trigger to prevent recursion\n this.off( eventName, listener );\n // unset once flag\n delete onceListeners[ listener ];\n }\n // trigger listener\n listener.apply( this, args );\n }\n\n return this;\n};\n\nproto.allOff = function() {\n delete this._events;\n delete this._onceEvents;\n};\n\nreturn EvEmitter;\n\n}));\n","/*!\n Copyright (c) 2015 Jed Watson.\n Based on code that is Copyright 2013-2015, Facebook, Inc.\n All rights reserved.\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar canUseDOM = !!(\n\t\ttypeof window !== 'undefined' &&\n\t\twindow.document &&\n\t\twindow.document.createElement\n\t);\n\n\tvar ExecutionEnvironment = {\n\n\t\tcanUseDOM: canUseDOM,\n\n\t\tcanUseWorkers: typeof Worker !== 'undefined',\n\n\t\tcanUseEventListeners:\n\t\t\tcanUseDOM && !!(window.addEventListener || window.attachEvent),\n\n\t\tcanUseViewport: canUseDOM && !!window.screen\n\n\t};\n\n\tif (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\tdefine(function () {\n\t\t\treturn ExecutionEnvironment;\n\t\t});\n\t} else if (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = ExecutionEnvironment;\n\t} else {\n\t\twindow.ExecutionEnvironment = ExecutionEnvironment;\n\t}\n\n}());\n","/**\n * Fizzy UI utils v2.0.7\n * MIT license\n */\n\n/*jshint browser: true, undef: true, unused: true, strict: true */\n\n( function( window, factory ) {\n // universal module definition\n /*jshint strict: false */ /*globals define, module, require */\n\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'desandro-matches-selector/matches-selector'\n ], function( matchesSelector ) {\n return factory( window, matchesSelector );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('desandro-matches-selector')\n );\n } else {\n // browser global\n window.fizzyUIUtils = factory(\n window,\n window.matchesSelector\n );\n }\n\n}( window, function factory( window, matchesSelector ) {\n\n'use strict';\n\nvar utils = {};\n\n// ----- extend ----- //\n\n// extends objects\nutils.extend = function( a, b ) {\n for ( var prop in b ) {\n a[ prop ] = b[ prop ];\n }\n return a;\n};\n\n// ----- modulo ----- //\n\nutils.modulo = function( num, div ) {\n return ( ( num % div ) + div ) % div;\n};\n\n// ----- makeArray ----- //\n\nvar arraySlice = Array.prototype.slice;\n\n// turn element or nodeList into an array\nutils.makeArray = function( obj ) {\n if ( Array.isArray( obj ) ) {\n // use object if already an array\n return obj;\n }\n // return empty array if undefined or null. #6\n if ( obj === null || obj === undefined ) {\n return [];\n }\n\n var isArrayLike = typeof obj == 'object' && typeof obj.length == 'number';\n if ( isArrayLike ) {\n // convert nodeList to array\n return arraySlice.call( obj );\n }\n\n // array of single index\n return [ obj ];\n};\n\n// ----- removeFrom ----- //\n\nutils.removeFrom = function( ary, obj ) {\n var index = ary.indexOf( obj );\n if ( index != -1 ) {\n ary.splice( index, 1 );\n }\n};\n\n// ----- getParent ----- //\n\nutils.getParent = function( elem, selector ) {\n while ( elem.parentNode && elem != document.body ) {\n elem = elem.parentNode;\n if ( matchesSelector( elem, selector ) ) {\n return elem;\n }\n }\n};\n\n// ----- getQueryElement ----- //\n\n// use element as selector string\nutils.getQueryElement = function( elem ) {\n if ( typeof elem == 'string' ) {\n return document.querySelector( elem );\n }\n return elem;\n};\n\n// ----- handleEvent ----- //\n\n// enable .ontype to trigger from .addEventListener( elem, 'type' )\nutils.handleEvent = function( event ) {\n var method = 'on' + event.type;\n if ( this[ method ] ) {\n this[ method ]( event );\n }\n};\n\n// ----- filterFindElements ----- //\n\nutils.filterFindElements = function( elems, selector ) {\n // make array of elems\n elems = utils.makeArray( elems );\n var ffElems = [];\n\n elems.forEach( function( elem ) {\n // check that elem is an actual element\n if ( !( elem instanceof HTMLElement ) ) {\n return;\n }\n // add elem if no selector\n if ( !selector ) {\n ffElems.push( elem );\n return;\n }\n // filter & find items if we have a selector\n // filter\n if ( matchesSelector( elem, selector ) ) {\n ffElems.push( elem );\n }\n // find children\n var childElems = elem.querySelectorAll( selector );\n // concat childElems to filterFound array\n for ( var i=0; i < childElems.length; i++ ) {\n ffElems.push( childElems[i] );\n }\n });\n\n return ffElems;\n};\n\n// ----- debounceMethod ----- //\n\nutils.debounceMethod = function( _class, methodName, threshold ) {\n threshold = threshold || 100;\n // original method\n var method = _class.prototype[ methodName ];\n var timeoutName = methodName + 'Timeout';\n\n _class.prototype[ methodName ] = function() {\n var timeout = this[ timeoutName ];\n clearTimeout( timeout );\n\n var args = arguments;\n var _this = this;\n this[ timeoutName ] = setTimeout( function() {\n method.apply( _this, args );\n delete _this[ timeoutName ];\n }, threshold );\n };\n};\n\n// ----- docReady ----- //\n\nutils.docReady = function( callback ) {\n var readyState = document.readyState;\n if ( readyState == 'complete' || readyState == 'interactive' ) {\n // do async to allow for other scripts to run. metafizzy/flickity#441\n setTimeout( callback );\n } else {\n document.addEventListener( 'DOMContentLoaded', callback );\n }\n};\n\n// ----- htmlInit ----- //\n\n// http://jamesroberts.name/blog/2010/02/22/string-functions-for-javascript-trim-to-camel-case-to-dashed-and-to-underscore/\nutils.toDashed = function( str ) {\n return str.replace( /(.)([A-Z])/g, function( match, $1, $2 ) {\n return $1 + '-' + $2;\n }).toLowerCase();\n};\n\nvar console = window.console;\n/**\n * allow user to initialize classes via [data-namespace] or .js-namespace class\n * htmlInit( Widget, 'widgetName' )\n * options are parsed from data-namespace-options\n */\nutils.htmlInit = function( WidgetClass, namespace ) {\n utils.docReady( function() {\n var dashedNamespace = utils.toDashed( namespace );\n var dataAttr = 'data-' + dashedNamespace;\n var dataAttrElems = document.querySelectorAll( '[' + dataAttr + ']' );\n var jsDashElems = document.querySelectorAll( '.js-' + dashedNamespace );\n var elems = utils.makeArray( dataAttrElems )\n .concat( utils.makeArray( jsDashElems ) );\n var dataOptionsAttr = dataAttr + '-options';\n var jQuery = window.jQuery;\n\n elems.forEach( function( elem ) {\n var attr = elem.getAttribute( dataAttr ) ||\n elem.getAttribute( dataOptionsAttr );\n var options;\n try {\n options = attr && JSON.parse( attr );\n } catch ( error ) {\n // log error, do not initialize\n if ( console ) {\n console.error( 'Error parsing ' + dataAttr + ' on ' + elem.className +\n ': ' + error );\n }\n return;\n }\n // initialize\n var instance = new WidgetClass( elem, options );\n // make available via $().data('namespace')\n if ( jQuery ) {\n jQuery.data( elem, namespace, instance );\n }\n });\n\n });\n};\n\n// ----- ----- //\n\nreturn utils;\n\n}));\n","/*!\n * Flickity asNavFor v2.0.1\n * enable asNavFor for Flickity\n */\n\n/*jshint browser: true, undef: true, unused: true, strict: true*/\n\n( function( window, factory ) {\n // universal module definition\n /*jshint strict: false */ /*globals define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'flickity/js/index',\n 'fizzy-ui-utils/utils'\n ], factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('flickity'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n window.Flickity = factory(\n window.Flickity,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( Flickity, utils ) {\n\n'use strict';\n\n// -------------------------- asNavFor prototype -------------------------- //\n\n// Flickity.defaults.asNavFor = null;\n\nFlickity.createMethods.push('_createAsNavFor');\n\nvar proto = Flickity.prototype;\n\nproto._createAsNavFor = function() {\n this.on( 'activate', this.activateAsNavFor );\n this.on( 'deactivate', this.deactivateAsNavFor );\n this.on( 'destroy', this.destroyAsNavFor );\n\n var asNavForOption = this.options.asNavFor;\n if ( !asNavForOption ) {\n return;\n }\n // HACK do async, give time for other flickity to be initalized\n var _this = this;\n setTimeout( function initNavCompanion() {\n _this.setNavCompanion( asNavForOption );\n });\n};\n\nproto.setNavCompanion = function( elem ) {\n elem = utils.getQueryElement( elem );\n var companion = Flickity.data( elem );\n // stop if no companion or companion is self\n if ( !companion || companion == this ) {\n return;\n }\n\n this.navCompanion = companion;\n // companion select\n var _this = this;\n this.onNavCompanionSelect = function() {\n _this.navCompanionSelect();\n };\n companion.on( 'select', this.onNavCompanionSelect );\n // click\n this.on( 'staticClick', this.onNavStaticClick );\n\n this.navCompanionSelect( true );\n};\n\nproto.navCompanionSelect = function( isInstant ) {\n if ( !this.navCompanion ) {\n return;\n }\n // select slide that matches first cell of slide\n var selectedCell = this.navCompanion.selectedCells[0];\n var firstIndex = this.navCompanion.cells.indexOf( selectedCell );\n var lastIndex = firstIndex + this.navCompanion.selectedCells.length - 1;\n var selectIndex = Math.floor( lerp( firstIndex, lastIndex,\n this.navCompanion.cellAlign ) );\n this.selectCell( selectIndex, false, isInstant );\n // set nav selected class\n this.removeNavSelectedElements();\n // stop if companion has more cells than this one\n if ( selectIndex >= this.cells.length ) {\n return;\n }\n\n var selectedCells = this.cells.slice( firstIndex, lastIndex + 1 );\n this.navSelectedElements = selectedCells.map( function( cell ) {\n return cell.element;\n });\n this.changeNavSelectedClass('add');\n};\n\nfunction lerp( a, b, t ) {\n return ( b - a ) * t + a;\n}\n\nproto.changeNavSelectedClass = function( method ) {\n this.navSelectedElements.forEach( function( navElem ) {\n navElem.classList[ method ]('is-nav-selected');\n });\n};\n\nproto.activateAsNavFor = function() {\n this.navCompanionSelect( true );\n};\n\nproto.removeNavSelectedElements = function() {\n if ( !this.navSelectedElements ) {\n return;\n }\n this.changeNavSelectedClass('remove');\n delete this.navSelectedElements;\n};\n\nproto.onNavStaticClick = function( event, pointer, cellElement, cellIndex ) {\n if ( typeof cellIndex == 'number' ) {\n this.navCompanion.selectCell( cellIndex );\n }\n};\n\nproto.deactivateAsNavFor = function() {\n this.removeNavSelectedElements();\n};\n\nproto.destroyAsNavFor = function() {\n if ( !this.navCompanion ) {\n return;\n }\n this.navCompanion.off( 'select', this.onNavCompanionSelect );\n this.off( 'staticClick', this.onNavStaticClick );\n delete this.navCompanion;\n};\n\n// ----- ----- //\n\nreturn Flickity;\n\n}));\n","/*!\n * Flickity fullscreen v1.1.1\n * Enable fullscreen view for Flickity\n */\n\n/*jshint browser: true, undef: true, unused: true, strict: true*/\n\n( function( window, factory ) {\n // universal module definition\n /*jshint strict: false */ /*globals define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'flickity/js/index',\n ], factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('flickity')\n );\n } else {\n // browser global\n factory(\n window.Flickity\n );\n }\n\n}( window, function factory( Flickity ) {\n\n'use strict';\n\nFlickity.createMethods.push('_createFullscreen');\nvar proto = Flickity.prototype;\n\n\nproto._createFullscreen = function() {\n this.isFullscreen = false;\n\n if ( !this.options.fullscreen ) {\n return;\n }\n // buttons\n this.viewFullscreenButton = new FullscreenButton( 'view', this );\n this.exitFullscreenButton = new FullscreenButton( 'exit', this );\n\n this.on( 'activate', this._changeFullscreenActive );\n this.on( 'deactivate', this._changeFullscreenActive );\n};\n\n// ----- activation ----- //\n\nproto._changeFullscreenActive = function() {\n var childMethod = this.isActive ? 'appendChild' : 'removeChild';\n this.element[ childMethod ]( this.viewFullscreenButton.element );\n this.element[ childMethod ]( this.exitFullscreenButton.element );\n // activate or deactivate buttons\n var activeMethod = this.isActive ? 'activate' : 'deactivate';\n this.viewFullscreenButton[ activeMethod ]();\n this.exitFullscreenButton[ activeMethod ]();\n};\n\n// ----- view, exit, toggle ----- //\n\nproto.viewFullscreen = function() {\n this._changeFullscreen( true );\n this.focus();\n};\n\nproto.exitFullscreen = function() {\n this._changeFullscreen( false );\n};\n\nproto._changeFullscreen = function( isView ) {\n if ( this.isFullscreen == isView ) {\n return;\n }\n this.isFullscreen = isView;\n var classMethod = isView ? 'add' : 'remove';\n document.documentElement.classList[ classMethod ]('is-flickity-fullscreen');\n this.element.classList[ classMethod ]('is-fullscreen');\n this.resize();\n // HACK extra reposition on fullscreen for images\n if ( this.isFullscreen ) {\n this.reposition();\n }\n this.dispatchEvent( 'fullscreenChange', null, [ isView ] );\n};\n\nproto.toggleFullscreen = function() {\n this._changeFullscreen( !this.isFullscreen );\n};\n\n// ----- setGallerySize ----- //\n\n// overwrite so fullscreen cells are full height\nvar setGallerySize = proto.setGallerySize;\nproto.setGallerySize = function() {\n if ( !this.options.setGallerySize ) {\n return;\n }\n if ( this.isFullscreen ) {\n // remove height style on fullscreen\n this.viewport.style.height = '';\n } else {\n // otherwise, do normal\n setGallerySize.call( this );\n }\n};\n\n// ----- keyboard ----- //\n\n// ESC key closes full screen\nFlickity.keyboardHandlers[27] = function() {\n this.exitFullscreen();\n};\n\n// ----- FullscreenButton ----- //\n\nfunction FullscreenButton( name, flickity ) {\n this.name = name;\n this.createButton();\n this.createIcon();\n // events\n // trigger viewFullscreen or exitFullscreen on click\n this.onClick = function() {\n flickity[ name + 'Fullscreen' ]();\n };\n this.clickHandler = this.onClick.bind( this );\n}\n\nFullscreenButton.prototype.createButton = function() {\n var element = this.element = document.createElement('button');\n element.className = 'flickity-button flickity-fullscreen-button ' +\n 'flickity-fullscreen-button-' + this.name;\n // prevent button from submitting form\n element.setAttribute( 'type', 'button' );\n // set label\n var label = capitalize( this.name + ' full-screen' );\n element.setAttribute( 'aria-label', label );\n element.title = label;\n};\n\nfunction capitalize( text ) {\n return text[0].toUpperCase() + text.slice(1);\n}\n\nvar svgURI = 'http://www.w3.org/2000/svg';\n\nvar pathDirections = {\n view: 'M15,20,7,28h5v4H0V20H4v5l8-8Zm5-5,8-8v5h4V0H20V4h5l-8,8Z',\n exit: 'M32,3l-7,7h5v4H18V2h4V7l7-7ZM3,32l7-7v5h4V18H2v4H7L0,29Z',\n};\n\nFullscreenButton.prototype.createIcon = function() {\n var svg = document.createElementNS( svgURI, 'svg');\n svg.setAttribute( 'class', 'flickity-button-icon' );\n svg.setAttribute( 'viewBox', '0 0 32 32' );\n // path & direction\n var path = document.createElementNS( svgURI, 'path');\n var direction = pathDirections[ this.name ];\n path.setAttribute( 'd', direction );\n // put it together\n svg.appendChild( path );\n this.element.appendChild( svg );\n};\n\nFullscreenButton.prototype.activate = function() {\n this.element.addEventListener( 'click', this.clickHandler );\n};\n\nFullscreenButton.prototype.deactivate = function() {\n this.element.removeEventListener( 'click', this.clickHandler );\n};\n\nFlickity.FullscreenButton = FullscreenButton;\n\n// ----- fin ----- //\n\nreturn Flickity;\n\n}));\n","// add, remove cell\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n 'fizzy-ui-utils/utils',\n ], function( Flickity, utils ) {\n return factory( window, Flickity, utils );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window,\n window.Flickity,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, utils ) {\n\n'use strict';\n\n// append cells to a document fragment\nfunction getCellsFragment( cells ) {\n var fragment = document.createDocumentFragment();\n cells.forEach( function( cell ) {\n fragment.appendChild( cell.element );\n } );\n return fragment;\n}\n\n// -------------------------- add/remove cell prototype -------------------------- //\n\nvar proto = Flickity.prototype;\n\n/**\n * Insert, prepend, or append cells\n * @param {[Element, Array, NodeList]} elems - Elements to insert\n * @param {Integer} index - Zero-based number to insert\n */\nproto.insert = function( elems, index ) {\n var cells = this._makeCells( elems );\n if ( !cells || !cells.length ) {\n return;\n }\n var len = this.cells.length;\n // default to append\n index = index === undefined ? len : index;\n // add cells with document fragment\n var fragment = getCellsFragment( cells );\n // append to slider\n var isAppend = index == len;\n if ( isAppend ) {\n this.slider.appendChild( fragment );\n } else {\n var insertCellElement = this.cells[ index ].element;\n this.slider.insertBefore( fragment, insertCellElement );\n }\n // add to this.cells\n if ( index === 0 ) {\n // prepend, add to start\n this.cells = cells.concat( this.cells );\n } else if ( isAppend ) {\n // append, add to end\n this.cells = this.cells.concat( cells );\n } else {\n // insert in this.cells\n var endCells = this.cells.splice( index, len - index );\n this.cells = this.cells.concat( cells ).concat( endCells );\n }\n\n this._sizeCells( cells );\n this.cellChange( index, true );\n};\n\nproto.append = function( elems ) {\n this.insert( elems, this.cells.length );\n};\n\nproto.prepend = function( elems ) {\n this.insert( elems, 0 );\n};\n\n/**\n * Remove cells\n * @param {[Element, Array, NodeList]} elems - ELements to remove\n */\nproto.remove = function( elems ) {\n var cells = this.getCells( elems );\n if ( !cells || !cells.length ) {\n return;\n }\n\n var minCellIndex = this.cells.length - 1;\n // remove cells from collection & DOM\n cells.forEach( function( cell ) {\n cell.remove();\n var index = this.cells.indexOf( cell );\n minCellIndex = Math.min( index, minCellIndex );\n utils.removeFrom( this.cells, cell );\n }, this );\n\n this.cellChange( minCellIndex, true );\n};\n\n/**\n * logic to be run after a cell's size changes\n * @param {Element} elem - cell's element\n */\nproto.cellSizeChange = function( elem ) {\n var cell = this.getCell( elem );\n if ( !cell ) {\n return;\n }\n cell.getSize();\n\n var index = this.cells.indexOf( cell );\n this.cellChange( index );\n};\n\n/**\n * logic any time a cell is changed: added, removed, or size changed\n * @param {Integer} changedCellIndex - index of the changed cell, optional\n * @param {Boolean} isPositioningSlider - Positions slider after selection\n */\nproto.cellChange = function( changedCellIndex, isPositioningSlider ) {\n var prevSelectedElem = this.selectedElement;\n this._positionCells( changedCellIndex );\n this._getWrapShiftCells();\n this.setGallerySize();\n // update selectedIndex\n // try to maintain position & select previous selected element\n var cell = this.getCell( prevSelectedElem );\n if ( cell ) {\n this.selectedIndex = this.getCellSlideIndex( cell );\n }\n this.selectedIndex = Math.min( this.slides.length - 1, this.selectedIndex );\n\n this.emitEvent( 'cellChange', [ changedCellIndex ] );\n // position slider\n this.select( this.selectedIndex );\n // do not position slider after lazy load\n if ( isPositioningSlider ) {\n this.positionSliderAtSelected();\n }\n};\n\n// ----- ----- //\n\nreturn Flickity;\n\n} ) );\n","// animate\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'fizzy-ui-utils/utils',\n ], function( utils ) {\n return factory( window, utils );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n window.Flickity = window.Flickity || {};\n window.Flickity.animatePrototype = factory(\n window,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, utils ) {\n\n'use strict';\n\n// -------------------------- animate -------------------------- //\n\nvar proto = {};\n\nproto.startAnimation = function() {\n if ( this.isAnimating ) {\n return;\n }\n\n this.isAnimating = true;\n this.restingFrames = 0;\n this.animate();\n};\n\nproto.animate = function() {\n this.applyDragForce();\n this.applySelectedAttraction();\n\n var previousX = this.x;\n\n this.integratePhysics();\n this.positionSlider();\n this.settle( previousX );\n // animate next frame\n if ( this.isAnimating ) {\n var _this = this;\n requestAnimationFrame( function animateFrame() {\n _this.animate();\n } );\n }\n};\n\nproto.positionSlider = function() {\n var x = this.x;\n // wrap position around\n if ( this.options.wrapAround && this.cells.length > 1 ) {\n x = utils.modulo( x, this.slideableWidth );\n x -= this.slideableWidth;\n this.shiftWrapCells( x );\n }\n\n this.setTranslateX( x, this.isAnimating );\n this.dispatchScrollEvent();\n};\n\nproto.setTranslateX = function( x, is3d ) {\n x += this.cursorPosition;\n // reverse if right-to-left and using transform\n x = this.options.rightToLeft ? -x : x;\n var translateX = this.getPositionValue( x );\n // use 3D transforms for hardware acceleration on iOS\n // but use 2D when settled, for better font-rendering\n this.slider.style.transform = is3d ?\n 'translate3d(' + translateX + ',0,0)' : 'translateX(' + translateX + ')';\n};\n\nproto.dispatchScrollEvent = function() {\n var firstSlide = this.slides[0];\n if ( !firstSlide ) {\n return;\n }\n var positionX = -this.x - firstSlide.target;\n var progress = positionX / this.slidesWidth;\n this.dispatchEvent( 'scroll', null, [ progress, positionX ] );\n};\n\nproto.positionSliderAtSelected = function() {\n if ( !this.cells.length ) {\n return;\n }\n this.x = -this.selectedSlide.target;\n this.velocity = 0; // stop wobble\n this.positionSlider();\n};\n\nproto.getPositionValue = function( position ) {\n if ( this.options.percentPosition ) {\n // percent position, round to 2 digits, like 12.34%\n return ( Math.round( ( position / this.size.innerWidth ) * 10000 ) * 0.01 ) + '%';\n } else {\n // pixel positioning\n return Math.round( position ) + 'px';\n }\n};\n\nproto.settle = function( previousX ) {\n // keep track of frames where x hasn't moved\n var isResting = !this.isPointerDown &&\n Math.round( this.x * 100 ) == Math.round( previousX * 100 );\n if ( isResting ) {\n this.restingFrames++;\n }\n // stop animating if resting for 3 or more frames\n if ( this.restingFrames > 2 ) {\n this.isAnimating = false;\n delete this.isFreeScrolling;\n // render position with translateX when settled\n this.positionSlider();\n this.dispatchEvent( 'settle', null, [ this.selectedIndex ] );\n }\n};\n\nproto.shiftWrapCells = function( x ) {\n // shift before cells\n var beforeGap = this.cursorPosition + x;\n this._shiftCells( this.beforeShiftCells, beforeGap, -1 );\n // shift after cells\n var afterGap = this.size.innerWidth - ( x + this.slideableWidth + this.cursorPosition );\n this._shiftCells( this.afterShiftCells, afterGap, 1 );\n};\n\nproto._shiftCells = function( cells, gap, shift ) {\n for ( var i = 0; i < cells.length; i++ ) {\n var cell = cells[i];\n var cellShift = gap > 0 ? shift : 0;\n cell.wrapShift( cellShift );\n gap -= cell.size.outerWidth;\n }\n};\n\nproto._unshiftCells = function( cells ) {\n if ( !cells || !cells.length ) {\n return;\n }\n for ( var i = 0; i < cells.length; i++ ) {\n cells[i].wrapShift( 0 );\n }\n};\n\n// -------------------------- physics -------------------------- //\n\nproto.integratePhysics = function() {\n this.x += this.velocity;\n this.velocity *= this.getFrictionFactor();\n};\n\nproto.applyForce = function( force ) {\n this.velocity += force;\n};\n\nproto.getFrictionFactor = function() {\n return 1 - this.options[ this.isFreeScrolling ? 'freeScrollFriction' : 'friction' ];\n};\n\nproto.getRestingPosition = function() {\n // my thanks to Steven Wittens, who simplified this math greatly\n return this.x + this.velocity / ( 1 - this.getFrictionFactor() );\n};\n\nproto.applyDragForce = function() {\n if ( !this.isDraggable || !this.isPointerDown ) {\n return;\n }\n // change the position to drag position by applying force\n var dragVelocity = this.dragX - this.x;\n var dragForce = dragVelocity - this.velocity;\n this.applyForce( dragForce );\n};\n\nproto.applySelectedAttraction = function() {\n // do not attract if pointer down or no slides\n var dragDown = this.isDraggable && this.isPointerDown;\n if ( dragDown || this.isFreeScrolling || !this.slides.length ) {\n return;\n }\n var distance = this.selectedSlide.target * -1 - this.x;\n var force = distance * this.options.selectedAttraction;\n this.applyForce( force );\n};\n\nreturn proto;\n\n} ) );\n","// Flickity.Cell\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'get-size/get-size',\n ], function( getSize ) {\n return factory( window, getSize );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('get-size')\n );\n } else {\n // browser global\n window.Flickity = window.Flickity || {};\n window.Flickity.Cell = factory(\n window,\n window.getSize\n );\n }\n\n}( window, function factory( window, getSize ) {\n\n'use strict';\n\nfunction Cell( elem, parent ) {\n this.element = elem;\n this.parent = parent;\n\n this.create();\n}\n\nvar proto = Cell.prototype;\n\nproto.create = function() {\n this.element.style.position = 'absolute';\n this.element.setAttribute( 'aria-hidden', 'true' );\n this.x = 0;\n this.shift = 0;\n this.element.style[ this.parent.originSide ] = 0;\n};\n\nproto.destroy = function() {\n // reset style\n this.unselect();\n this.element.style.position = '';\n var side = this.parent.originSide;\n this.element.style[ side ] = '';\n this.element.style.transform = '';\n this.element.removeAttribute('aria-hidden');\n};\n\nproto.getSize = function() {\n this.size = getSize( this.element );\n};\n\nproto.setPosition = function( x ) {\n this.x = x;\n this.updateTarget();\n this.renderPosition( x );\n};\n\n// setDefaultTarget v1 method, backwards compatibility, remove in v3\nproto.updateTarget = proto.setDefaultTarget = function() {\n var marginProperty = this.parent.originSide == 'left' ? 'marginLeft' : 'marginRight';\n this.target = this.x + this.size[ marginProperty ] +\n this.size.width * this.parent.cellAlign;\n};\n\nproto.renderPosition = function( x ) {\n // render position of cell with in slider\n var sideOffset = this.parent.originSide === 'left' ? 1 : -1;\n\n var adjustedX = this.parent.options.percentPosition ?\n x * sideOffset * ( this.parent.size.innerWidth / this.size.width ) :\n x * sideOffset;\n\n this.element.style.transform = 'translateX(' +\n this.parent.getPositionValue( adjustedX ) + ')';\n};\n\nproto.select = function() {\n this.element.classList.add('is-selected');\n this.element.removeAttribute('aria-hidden');\n};\n\nproto.unselect = function() {\n this.element.classList.remove('is-selected');\n this.element.setAttribute( 'aria-hidden', 'true' );\n};\n\n/**\n * @param {Integer} shift - 0, 1, or -1\n */\nproto.wrapShift = function( shift ) {\n this.shift = shift;\n this.renderPosition( this.x + this.parent.slideableWidth * shift );\n};\n\nproto.remove = function() {\n this.element.parentNode.removeChild( this.element );\n};\n\nreturn Cell;\n\n} ) );\n","// drag\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n 'unidragger/unidragger',\n 'fizzy-ui-utils/utils',\n ], function( Flickity, Unidragger, utils ) {\n return factory( window, Flickity, Unidragger, utils );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('unidragger'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n window.Flickity = factory(\n window,\n window.Flickity,\n window.Unidragger,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, Unidragger, utils ) {\n\n'use strict';\n\n// ----- defaults ----- //\n\nutils.extend( Flickity.defaults, {\n draggable: '>1',\n dragThreshold: 3,\n} );\n\n// ----- create ----- //\n\nFlickity.createMethods.push('_createDrag');\n\n// -------------------------- drag prototype -------------------------- //\n\nvar proto = Flickity.prototype;\nutils.extend( proto, Unidragger.prototype );\nproto._touchActionValue = 'pan-y';\n\n// -------------------------- -------------------------- //\n\nproto._createDrag = function() {\n this.on( 'activate', this.onActivateDrag );\n this.on( 'uiChange', this._uiChangeDrag );\n this.on( 'deactivate', this.onDeactivateDrag );\n this.on( 'cellChange', this.updateDraggable );\n // TODO updateDraggable on resize? if groupCells & slides change\n};\n\nproto.onActivateDrag = function() {\n this.handles = [ this.viewport ];\n this.bindHandles();\n this.updateDraggable();\n};\n\nproto.onDeactivateDrag = function() {\n this.unbindHandles();\n this.element.classList.remove('is-draggable');\n};\n\nproto.updateDraggable = function() {\n // disable dragging if less than 2 slides. #278\n if ( this.options.draggable == '>1' ) {\n this.isDraggable = this.slides.length > 1;\n } else {\n this.isDraggable = this.options.draggable;\n }\n if ( this.isDraggable ) {\n this.element.classList.add('is-draggable');\n } else {\n this.element.classList.remove('is-draggable');\n }\n};\n\n// backwards compatibility\nproto.bindDrag = function() {\n this.options.draggable = true;\n this.updateDraggable();\n};\n\nproto.unbindDrag = function() {\n this.options.draggable = false;\n this.updateDraggable();\n};\n\nproto._uiChangeDrag = function() {\n delete this.isFreeScrolling;\n};\n\n// -------------------------- pointer events -------------------------- //\n\nproto.pointerDown = function( event, pointer ) {\n if ( !this.isDraggable ) {\n this._pointerDownDefault( event, pointer );\n return;\n }\n var isOkay = this.okayPointerDown( event );\n if ( !isOkay ) {\n return;\n }\n\n this._pointerDownPreventDefault( event );\n this.pointerDownFocus( event );\n // blur\n if ( document.activeElement != this.element ) {\n // do not blur if already focused\n this.pointerDownBlur();\n }\n\n // stop if it was moving\n this.dragX = this.x;\n this.viewport.classList.add('is-pointer-down');\n // track scrolling\n this.pointerDownScroll = getScrollPosition();\n window.addEventListener( 'scroll', this );\n\n this._pointerDownDefault( event, pointer );\n};\n\n// default pointerDown logic, used for staticClick\nproto._pointerDownDefault = function( event, pointer ) {\n // track start event position\n // Safari 9 overrides pageX and pageY. These values needs to be copied. #779\n this.pointerDownPointer = {\n pageX: pointer.pageX,\n pageY: pointer.pageY,\n };\n // bind move and end events\n this._bindPostStartEvents( event );\n this.dispatchEvent( 'pointerDown', event, [ pointer ] );\n};\n\nvar focusNodes = {\n INPUT: true,\n TEXTAREA: true,\n SELECT: true,\n};\n\nproto.pointerDownFocus = function( event ) {\n var isFocusNode = focusNodes[ event.target.nodeName ];\n if ( !isFocusNode ) {\n this.focus();\n }\n};\n\nproto._pointerDownPreventDefault = function( event ) {\n var isTouchStart = event.type == 'touchstart';\n var isTouchPointer = event.pointerType == 'touch';\n var isFocusNode = focusNodes[ event.target.nodeName ];\n if ( !isTouchStart && !isTouchPointer && !isFocusNode ) {\n event.preventDefault();\n }\n};\n\n// ----- move ----- //\n\nproto.hasDragStarted = function( moveVector ) {\n return Math.abs( moveVector.x ) > this.options.dragThreshold;\n};\n\n// ----- up ----- //\n\nproto.pointerUp = function( event, pointer ) {\n delete this.isTouchScrolling;\n this.viewport.classList.remove('is-pointer-down');\n this.dispatchEvent( 'pointerUp', event, [ pointer ] );\n this._dragPointerUp( event, pointer );\n};\n\nproto.pointerDone = function() {\n window.removeEventListener( 'scroll', this );\n delete this.pointerDownScroll;\n};\n\n// -------------------------- dragging -------------------------- //\n\nproto.dragStart = function( event, pointer ) {\n if ( !this.isDraggable ) {\n return;\n }\n this.dragStartPosition = this.x;\n this.startAnimation();\n window.removeEventListener( 'scroll', this );\n this.dispatchEvent( 'dragStart', event, [ pointer ] );\n};\n\nproto.pointerMove = function( event, pointer ) {\n var moveVector = this._dragPointerMove( event, pointer );\n this.dispatchEvent( 'pointerMove', event, [ pointer, moveVector ] );\n this._dragMove( event, pointer, moveVector );\n};\n\nproto.dragMove = function( event, pointer, moveVector ) {\n if ( !this.isDraggable ) {\n return;\n }\n event.preventDefault();\n\n this.previousDragX = this.dragX;\n // reverse if right-to-left\n var direction = this.options.rightToLeft ? -1 : 1;\n if ( this.options.wrapAround ) {\n // wrap around move. #589\n moveVector.x %= this.slideableWidth;\n }\n var dragX = this.dragStartPosition + moveVector.x * direction;\n\n if ( !this.options.wrapAround && this.slides.length ) {\n // slow drag\n var originBound = Math.max( -this.slides[0].target, this.dragStartPosition );\n dragX = dragX > originBound ? ( dragX + originBound ) * 0.5 : dragX;\n var endBound = Math.min( -this.getLastSlide().target, this.dragStartPosition );\n dragX = dragX < endBound ? ( dragX + endBound ) * 0.5 : dragX;\n }\n\n this.dragX = dragX;\n\n this.dragMoveTime = new Date();\n this.dispatchEvent( 'dragMove', event, [ pointer, moveVector ] );\n};\n\nproto.dragEnd = function( event, pointer ) {\n if ( !this.isDraggable ) {\n return;\n }\n if ( this.options.freeScroll ) {\n this.isFreeScrolling = true;\n }\n // set selectedIndex based on where flick will end up\n var index = this.dragEndRestingSelect();\n\n if ( this.options.freeScroll && !this.options.wrapAround ) {\n // if free-scroll & not wrap around\n // do not free-scroll if going outside of bounding slides\n // so bounding slides can attract slider, and keep it in bounds\n var restingX = this.getRestingPosition();\n this.isFreeScrolling = -restingX > this.slides[0].target &&\n -restingX < this.getLastSlide().target;\n } else if ( !this.options.freeScroll && index == this.selectedIndex ) {\n // boost selection if selected index has not changed\n index += this.dragEndBoostSelect();\n }\n delete this.previousDragX;\n // apply selection\n // TODO refactor this, selecting here feels weird\n // HACK, set flag so dragging stays in correct direction\n this.isDragSelect = this.options.wrapAround;\n this.select( index );\n delete this.isDragSelect;\n this.dispatchEvent( 'dragEnd', event, [ pointer ] );\n};\n\nproto.dragEndRestingSelect = function() {\n var restingX = this.getRestingPosition();\n // how far away from selected slide\n var distance = Math.abs( this.getSlideDistance( -restingX, this.selectedIndex ) );\n // get closet resting going up and going down\n var positiveResting = this._getClosestResting( restingX, distance, 1 );\n var negativeResting = this._getClosestResting( restingX, distance, -1 );\n // use closer resting for wrap-around\n var index = positiveResting.distance < negativeResting.distance ?\n positiveResting.index : negativeResting.index;\n return index;\n};\n\n/**\n * given resting X and distance to selected cell\n * get the distance and index of the closest cell\n * @param {Number} restingX - estimated post-flick resting position\n * @param {Number} distance - distance to selected cell\n * @param {Integer} increment - +1 or -1, going up or down\n * @returns {Object} - { distance: {Number}, index: {Integer} }\n */\nproto._getClosestResting = function( restingX, distance, increment ) {\n var index = this.selectedIndex;\n var minDistance = Infinity;\n var condition = this.options.contain && !this.options.wrapAround ?\n // if contain, keep going if distance is equal to minDistance\n function( dist, minDist ) {\n return dist <= minDist;\n } : function( dist, minDist ) {\n return dist < minDist;\n };\n while ( condition( distance, minDistance ) ) {\n // measure distance to next cell\n index += increment;\n minDistance = distance;\n distance = this.getSlideDistance( -restingX, index );\n if ( distance === null ) {\n break;\n }\n distance = Math.abs( distance );\n }\n return {\n distance: minDistance,\n // selected was previous index\n index: index - increment,\n };\n};\n\n/**\n * measure distance between x and a slide target\n * @param {Number} x - horizontal position\n * @param {Integer} index - slide index\n * @returns {Number} - slide distance\n */\nproto.getSlideDistance = function( x, index ) {\n var len = this.slides.length;\n // wrap around if at least 2 slides\n var isWrapAround = this.options.wrapAround && len > 1;\n var slideIndex = isWrapAround ? utils.modulo( index, len ) : index;\n var slide = this.slides[ slideIndex ];\n if ( !slide ) {\n return null;\n }\n // add distance for wrap-around slides\n var wrap = isWrapAround ? this.slideableWidth * Math.floor( index/len ) : 0;\n return x - ( slide.target + wrap );\n};\n\nproto.dragEndBoostSelect = function() {\n // do not boost if no previousDragX or dragMoveTime\n if ( this.previousDragX === undefined || !this.dragMoveTime ||\n // or if drag was held for 100 ms\n new Date() - this.dragMoveTime > 100 ) {\n return 0;\n }\n\n var distance = this.getSlideDistance( -this.dragX, this.selectedIndex );\n var delta = this.previousDragX - this.dragX;\n if ( distance > 0 && delta > 0 ) {\n // boost to next if moving towards the right, and positive velocity\n return 1;\n } else if ( distance < 0 && delta < 0 ) {\n // boost to previous if moving towards the left, and negative velocity\n return -1;\n }\n return 0;\n};\n\n// ----- staticClick ----- //\n\nproto.staticClick = function( event, pointer ) {\n // get clickedCell, if cell was clicked\n var clickedCell = this.getParentCell( event.target );\n var cellElem = clickedCell && clickedCell.element;\n var cellIndex = clickedCell && this.cells.indexOf( clickedCell );\n this.dispatchEvent( 'staticClick', event, [ pointer, cellElem, cellIndex ] );\n};\n\n// ----- scroll ----- //\n\nproto.onscroll = function() {\n var scroll = getScrollPosition();\n var scrollMoveX = this.pointerDownScroll.x - scroll.x;\n var scrollMoveY = this.pointerDownScroll.y - scroll.y;\n // cancel click/tap if scroll is too much\n if ( Math.abs( scrollMoveX ) > 3 || Math.abs( scrollMoveY ) > 3 ) {\n this._pointerDone();\n }\n};\n\n// ----- utils ----- //\n\nfunction getScrollPosition() {\n return {\n x: window.pageXOffset,\n y: window.pageYOffset,\n };\n}\n\n// ----- ----- //\n\nreturn Flickity;\n\n} ) );\n","// Flickity main\n/* eslint-disable max-params */\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'ev-emitter/ev-emitter',\n 'get-size/get-size',\n 'fizzy-ui-utils/utils',\n './cell',\n './slide',\n './animate',\n ], function( EvEmitter, getSize, utils, Cell, Slide, animatePrototype ) {\n return factory( window, EvEmitter, getSize, utils, Cell, Slide, animatePrototype );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('ev-emitter'),\n require('get-size'),\n require('fizzy-ui-utils'),\n require('./cell'),\n require('./slide'),\n require('./animate')\n );\n } else {\n // browser global\n var _Flickity = window.Flickity;\n\n window.Flickity = factory(\n window,\n window.EvEmitter,\n window.getSize,\n window.fizzyUIUtils,\n _Flickity.Cell,\n _Flickity.Slide,\n _Flickity.animatePrototype\n );\n }\n\n}( window, function factory( window, EvEmitter, getSize,\n utils, Cell, Slide, animatePrototype ) {\n\n/* eslint-enable max-params */\n'use strict';\n\n// vars\nvar jQuery = window.jQuery;\nvar getComputedStyle = window.getComputedStyle;\nvar console = window.console;\n\nfunction moveElements( elems, toElem ) {\n elems = utils.makeArray( elems );\n while ( elems.length ) {\n toElem.appendChild( elems.shift() );\n }\n}\n\n// -------------------------- Flickity -------------------------- //\n\n// globally unique identifiers\nvar GUID = 0;\n// internal store of all Flickity intances\nvar instances = {};\n\nfunction Flickity( element, options ) {\n var queryElement = utils.getQueryElement( element );\n if ( !queryElement ) {\n if ( console ) {\n console.error( 'Bad element for Flickity: ' + ( queryElement || element ) );\n }\n return;\n }\n this.element = queryElement;\n // do not initialize twice on same element\n if ( this.element.flickityGUID ) {\n var instance = instances[ this.element.flickityGUID ];\n if ( instance ) instance.option( options );\n return instance;\n }\n\n // add jQuery\n if ( jQuery ) {\n this.$element = jQuery( this.element );\n }\n // options\n this.options = utils.extend( {}, this.constructor.defaults );\n this.option( options );\n\n // kick things off\n this._create();\n}\n\nFlickity.defaults = {\n accessibility: true,\n // adaptiveHeight: false,\n cellAlign: 'center',\n // cellSelector: undefined,\n // contain: false,\n freeScrollFriction: 0.075, // friction when free-scrolling\n friction: 0.28, // friction when selecting\n namespaceJQueryEvents: true,\n // initialIndex: 0,\n percentPosition: true,\n resize: true,\n selectedAttraction: 0.025,\n setGallerySize: true,\n // watchCSS: false,\n // wrapAround: false\n};\n\n// hash of methods triggered on _create()\nFlickity.createMethods = [];\n\nvar proto = Flickity.prototype;\n// inherit EventEmitter\nutils.extend( proto, EvEmitter.prototype );\n\nproto._create = function() {\n // add id for Flickity.data\n var id = this.guid = ++GUID;\n this.element.flickityGUID = id; // expando\n instances[ id ] = this; // associate via id\n // initial properties\n this.selectedIndex = 0;\n // how many frames slider has been in same position\n this.restingFrames = 0;\n // initial physics properties\n this.x = 0;\n this.velocity = 0;\n this.originSide = this.options.rightToLeft ? 'right' : 'left';\n // create viewport & slider\n this.viewport = document.createElement('div');\n this.viewport.className = 'flickity-viewport';\n this._createSlider();\n\n if ( this.options.resize || this.options.watchCSS ) {\n window.addEventListener( 'resize', this );\n }\n\n // add listeners from on option\n for ( var eventName in this.options.on ) {\n var listener = this.options.on[ eventName ];\n this.on( eventName, listener );\n }\n\n Flickity.createMethods.forEach( function( method ) {\n this[ method ]();\n }, this );\n\n if ( this.options.watchCSS ) {\n this.watchCSS();\n } else {\n this.activate();\n }\n\n};\n\n/**\n * set options\n * @param {Object} opts - options to extend\n */\nproto.option = function( opts ) {\n utils.extend( this.options, opts );\n};\n\nproto.activate = function() {\n if ( this.isActive ) {\n return;\n }\n this.isActive = true;\n this.element.classList.add('flickity-enabled');\n if ( this.options.rightToLeft ) {\n this.element.classList.add('flickity-rtl');\n }\n\n this.getSize();\n // move initial cell elements so they can be loaded as cells\n var cellElems = this._filterFindCellElements( this.element.children );\n moveElements( cellElems, this.slider );\n this.viewport.appendChild( this.slider );\n this.element.appendChild( this.viewport );\n // get cells from children\n this.reloadCells();\n\n if ( this.options.accessibility ) {\n // allow element to focusable\n this.element.tabIndex = 0;\n // listen for key presses\n this.element.addEventListener( 'keydown', this );\n }\n\n this.emitEvent('activate');\n this.selectInitialIndex();\n // flag for initial activation, for using initialIndex\n this.isInitActivated = true;\n // ready event. #493\n this.dispatchEvent('ready');\n};\n\n// slider positions the cells\nproto._createSlider = function() {\n // slider element does all the positioning\n var slider = document.createElement('div');\n slider.className = 'flickity-slider';\n slider.style[ this.originSide ] = 0;\n this.slider = slider;\n};\n\nproto._filterFindCellElements = function( elems ) {\n return utils.filterFindElements( elems, this.options.cellSelector );\n};\n\n// goes through all children\nproto.reloadCells = function() {\n // collection of item elements\n this.cells = this._makeCells( this.slider.children );\n this.positionCells();\n this._getWrapShiftCells();\n this.setGallerySize();\n};\n\n/**\n * turn elements into Flickity.Cells\n * @param {[Array, NodeList, HTMLElement]} elems - elements to make into cells\n * @returns {Array} items - collection of new Flickity Cells\n */\nproto._makeCells = function( elems ) {\n var cellElems = this._filterFindCellElements( elems );\n\n // create new Flickity for collection\n var cells = cellElems.map( function( cellElem ) {\n return new Cell( cellElem, this );\n }, this );\n\n return cells;\n};\n\nproto.getLastCell = function() {\n return this.cells[ this.cells.length - 1 ];\n};\n\nproto.getLastSlide = function() {\n return this.slides[ this.slides.length - 1 ];\n};\n\n// positions all cells\nproto.positionCells = function() {\n // size all cells\n this._sizeCells( this.cells );\n // position all cells\n this._positionCells( 0 );\n};\n\n/**\n * position certain cells\n * @param {Integer} index - which cell to start with\n */\nproto._positionCells = function( index ) {\n index = index || 0;\n // also measure maxCellHeight\n // start 0 if positioning all cells\n this.maxCellHeight = index ? this.maxCellHeight || 0 : 0;\n var cellX = 0;\n // get cellX\n if ( index > 0 ) {\n var startCell = this.cells[ index - 1 ];\n cellX = startCell.x + startCell.size.outerWidth;\n }\n var len = this.cells.length;\n for ( var i = index; i < len; i++ ) {\n var cell = this.cells[i];\n cell.setPosition( cellX );\n cellX += cell.size.outerWidth;\n this.maxCellHeight = Math.max( cell.size.outerHeight, this.maxCellHeight );\n }\n // keep track of cellX for wrap-around\n this.slideableWidth = cellX;\n // slides\n this.updateSlides();\n // contain slides target\n this._containSlides();\n // update slidesWidth\n this.slidesWidth = len ? this.getLastSlide().target - this.slides[0].target : 0;\n};\n\n/**\n * cell.getSize() on multiple cells\n * @param {Array} cells - cells to size\n */\nproto._sizeCells = function( cells ) {\n cells.forEach( function( cell ) {\n cell.getSize();\n } );\n};\n\n// -------------------------- -------------------------- //\n\nproto.updateSlides = function() {\n this.slides = [];\n if ( !this.cells.length ) {\n return;\n }\n\n var slide = new Slide( this );\n this.slides.push( slide );\n var isOriginLeft = this.originSide == 'left';\n var nextMargin = isOriginLeft ? 'marginRight' : 'marginLeft';\n\n var canCellFit = this._getCanCellFit();\n\n this.cells.forEach( function( cell, i ) {\n // just add cell if first cell in slide\n if ( !slide.cells.length ) {\n slide.addCell( cell );\n return;\n }\n\n var slideWidth = ( slide.outerWidth - slide.firstMargin ) +\n ( cell.size.outerWidth - cell.size[ nextMargin ] );\n\n if ( canCellFit.call( this, i, slideWidth ) ) {\n slide.addCell( cell );\n } else {\n // doesn't fit, new slide\n slide.updateTarget();\n\n slide = new Slide( this );\n this.slides.push( slide );\n slide.addCell( cell );\n }\n }, this );\n // last slide\n slide.updateTarget();\n // update .selectedSlide\n this.updateSelectedSlide();\n};\n\nproto._getCanCellFit = function() {\n var groupCells = this.options.groupCells;\n if ( !groupCells ) {\n return function() {\n return false;\n };\n } else if ( typeof groupCells == 'number' ) {\n // group by number. 3 -> [0,1,2], [3,4,5], ...\n var number = parseInt( groupCells, 10 );\n return function( i ) {\n return ( i % number ) !== 0;\n };\n }\n // default, group by width of slide\n // parse '75%\n var percentMatch = typeof groupCells == 'string' &&\n groupCells.match( /^(\\d+)%$/ );\n var percent = percentMatch ? parseInt( percentMatch[1], 10 ) / 100 : 1;\n return function( i, slideWidth ) {\n /* eslint-disable-next-line no-invalid-this */\n return slideWidth <= ( this.size.innerWidth + 1 ) * percent;\n };\n};\n\n// alias _init for jQuery plugin .flickity()\nproto._init =\nproto.reposition = function() {\n this.positionCells();\n this.positionSliderAtSelected();\n};\n\nproto.getSize = function() {\n this.size = getSize( this.element );\n this.setCellAlign();\n this.cursorPosition = this.size.innerWidth * this.cellAlign;\n};\n\nvar cellAlignShorthands = {\n // cell align, then based on origin side\n center: {\n left: 0.5,\n right: 0.5,\n },\n left: {\n left: 0,\n right: 1,\n },\n right: {\n right: 0,\n left: 1,\n },\n};\n\nproto.setCellAlign = function() {\n var shorthand = cellAlignShorthands[ this.options.cellAlign ];\n this.cellAlign = shorthand ? shorthand[ this.originSide ] : this.options.cellAlign;\n};\n\nproto.setGallerySize = function() {\n if ( this.options.setGallerySize ) {\n var height = this.options.adaptiveHeight && this.selectedSlide ?\n this.selectedSlide.height : this.maxCellHeight;\n this.viewport.style.height = height + 'px';\n }\n};\n\nproto._getWrapShiftCells = function() {\n // only for wrap-around\n if ( !this.options.wrapAround ) {\n return;\n }\n // unshift previous cells\n this._unshiftCells( this.beforeShiftCells );\n this._unshiftCells( this.afterShiftCells );\n // get before cells\n // initial gap\n var gapX = this.cursorPosition;\n var cellIndex = this.cells.length - 1;\n this.beforeShiftCells = this._getGapCells( gapX, cellIndex, -1 );\n // get after cells\n // ending gap between last cell and end of gallery viewport\n gapX = this.size.innerWidth - this.cursorPosition;\n // start cloning at first cell, working forwards\n this.afterShiftCells = this._getGapCells( gapX, 0, 1 );\n};\n\nproto._getGapCells = function( gapX, cellIndex, increment ) {\n // keep adding cells until the cover the initial gap\n var cells = [];\n while ( gapX > 0 ) {\n var cell = this.cells[ cellIndex ];\n if ( !cell ) {\n break;\n }\n cells.push( cell );\n cellIndex += increment;\n gapX -= cell.size.outerWidth;\n }\n return cells;\n};\n\n// ----- contain ----- //\n\n// contain cell targets so no excess sliding\nproto._containSlides = function() {\n if ( !this.options.contain || this.options.wrapAround || !this.cells.length ) {\n return;\n }\n var isRightToLeft = this.options.rightToLeft;\n var beginMargin = isRightToLeft ? 'marginRight' : 'marginLeft';\n var endMargin = isRightToLeft ? 'marginLeft' : 'marginRight';\n var contentWidth = this.slideableWidth - this.getLastCell().size[ endMargin ];\n // content is less than gallery size\n var isContentSmaller = contentWidth < this.size.innerWidth;\n // bounds\n var beginBound = this.cursorPosition + this.cells[0].size[ beginMargin ];\n var endBound = contentWidth - this.size.innerWidth * ( 1 - this.cellAlign );\n // contain each cell target\n this.slides.forEach( function( slide ) {\n if ( isContentSmaller ) {\n // all cells fit inside gallery\n slide.target = contentWidth * this.cellAlign;\n } else {\n // contain to bounds\n slide.target = Math.max( slide.target, beginBound );\n slide.target = Math.min( slide.target, endBound );\n }\n }, this );\n};\n\n// ----- ----- //\n\n/**\n * emits events via eventEmitter and jQuery events\n * @param {String} type - name of event\n * @param {Event} event - original event\n * @param {Array} args - extra arguments\n */\nproto.dispatchEvent = function( type, event, args ) {\n var emitArgs = event ? [ event ].concat( args ) : args;\n this.emitEvent( type, emitArgs );\n\n if ( jQuery && this.$element ) {\n // default trigger with type if no event\n type += this.options.namespaceJQueryEvents ? '.flickity' : '';\n var $event = type;\n if ( event ) {\n // create jQuery event\n var jQEvent = new jQuery.Event( event );\n jQEvent.type = type;\n $event = jQEvent;\n }\n this.$element.trigger( $event, args );\n }\n};\n\n// -------------------------- select -------------------------- //\n\n/**\n * @param {Integer} index - index of the slide\n * @param {Boolean} isWrap - will wrap-around to last/first if at the end\n * @param {Boolean} isInstant - will immediately set position at selected cell\n */\nproto.select = function( index, isWrap, isInstant ) {\n if ( !this.isActive ) {\n return;\n }\n index = parseInt( index, 10 );\n this._wrapSelect( index );\n\n if ( this.options.wrapAround || isWrap ) {\n index = utils.modulo( index, this.slides.length );\n }\n // bail if invalid index\n if ( !this.slides[ index ] ) {\n return;\n }\n var prevIndex = this.selectedIndex;\n this.selectedIndex = index;\n this.updateSelectedSlide();\n if ( isInstant ) {\n this.positionSliderAtSelected();\n } else {\n this.startAnimation();\n }\n if ( this.options.adaptiveHeight ) {\n this.setGallerySize();\n }\n // events\n this.dispatchEvent( 'select', null, [ index ] );\n // change event if new index\n if ( index != prevIndex ) {\n this.dispatchEvent( 'change', null, [ index ] );\n }\n // old v1 event name, remove in v3\n this.dispatchEvent('cellSelect');\n};\n\n// wraps position for wrapAround, to move to closest slide. #113\nproto._wrapSelect = function( index ) {\n var len = this.slides.length;\n var isWrapping = this.options.wrapAround && len > 1;\n if ( !isWrapping ) {\n return index;\n }\n var wrapIndex = utils.modulo( index, len );\n // go to shortest\n var delta = Math.abs( wrapIndex - this.selectedIndex );\n var backWrapDelta = Math.abs( ( wrapIndex + len ) - this.selectedIndex );\n var forewardWrapDelta = Math.abs( ( wrapIndex - len ) - this.selectedIndex );\n if ( !this.isDragSelect && backWrapDelta < delta ) {\n index += len;\n } else if ( !this.isDragSelect && forewardWrapDelta < delta ) {\n index -= len;\n }\n // wrap position so slider is within normal area\n if ( index < 0 ) {\n this.x -= this.slideableWidth;\n } else if ( index >= len ) {\n this.x += this.slideableWidth;\n }\n};\n\nproto.previous = function( isWrap, isInstant ) {\n this.select( this.selectedIndex - 1, isWrap, isInstant );\n};\n\nproto.next = function( isWrap, isInstant ) {\n this.select( this.selectedIndex + 1, isWrap, isInstant );\n};\n\nproto.updateSelectedSlide = function() {\n var slide = this.slides[ this.selectedIndex ];\n // selectedIndex could be outside of slides, if triggered before resize()\n if ( !slide ) {\n return;\n }\n // unselect previous selected slide\n this.unselectSelectedSlide();\n // update new selected slide\n this.selectedSlide = slide;\n slide.select();\n this.selectedCells = slide.cells;\n this.selectedElements = slide.getCellElements();\n // HACK: selectedCell & selectedElement is first cell in slide, backwards compatibility\n // Remove in v3?\n this.selectedCell = slide.cells[0];\n this.selectedElement = this.selectedElements[0];\n};\n\nproto.unselectSelectedSlide = function() {\n if ( this.selectedSlide ) {\n this.selectedSlide.unselect();\n }\n};\n\nproto.selectInitialIndex = function() {\n var initialIndex = this.options.initialIndex;\n // already activated, select previous selectedIndex\n if ( this.isInitActivated ) {\n this.select( this.selectedIndex, false, true );\n return;\n }\n // select with selector string\n if ( initialIndex && typeof initialIndex == 'string' ) {\n var cell = this.queryCell( initialIndex );\n if ( cell ) {\n this.selectCell( initialIndex, false, true );\n return;\n }\n }\n\n var index = 0;\n // select with number\n if ( initialIndex && this.slides[ initialIndex ] ) {\n index = initialIndex;\n }\n // select instantly\n this.select( index, false, true );\n};\n\n/**\n * select slide from number or cell element\n * @param {[Element, Number]} value - zero-based index or element to select\n * @param {Boolean} isWrap - enables wrapping around for extra index\n * @param {Boolean} isInstant - disables slide animation\n */\nproto.selectCell = function( value, isWrap, isInstant ) {\n // get cell\n var cell = this.queryCell( value );\n if ( !cell ) {\n return;\n }\n\n var index = this.getCellSlideIndex( cell );\n this.select( index, isWrap, isInstant );\n};\n\nproto.getCellSlideIndex = function( cell ) {\n // get index of slides that has cell\n for ( var i = 0; i < this.slides.length; i++ ) {\n var slide = this.slides[i];\n var index = slide.cells.indexOf( cell );\n if ( index != -1 ) {\n return i;\n }\n }\n};\n\n// -------------------------- get cells -------------------------- //\n\n/**\n * get Flickity.Cell, given an Element\n * @param {Element} elem - matching cell element\n * @returns {Flickity.Cell} cell - matching cell\n */\nproto.getCell = function( elem ) {\n // loop through cells to get the one that matches\n for ( var i = 0; i < this.cells.length; i++ ) {\n var cell = this.cells[i];\n if ( cell.element == elem ) {\n return cell;\n }\n }\n};\n\n/**\n * get collection of Flickity.Cells, given Elements\n * @param {[Element, Array, NodeList]} elems - multiple elements\n * @returns {Array} cells - Flickity.Cells\n */\nproto.getCells = function( elems ) {\n elems = utils.makeArray( elems );\n var cells = [];\n elems.forEach( function( elem ) {\n var cell = this.getCell( elem );\n if ( cell ) {\n cells.push( cell );\n }\n }, this );\n return cells;\n};\n\n/**\n * get cell elements\n * @returns {Array} cellElems\n */\nproto.getCellElements = function() {\n return this.cells.map( function( cell ) {\n return cell.element;\n } );\n};\n\n/**\n * get parent cell from an element\n * @param {Element} elem - child element\n * @returns {Flickit.Cell} cell - parent cell\n */\nproto.getParentCell = function( elem ) {\n // first check if elem is cell\n var cell = this.getCell( elem );\n if ( cell ) {\n return cell;\n }\n // try to get parent cell elem\n elem = utils.getParent( elem, '.flickity-slider > *' );\n return this.getCell( elem );\n};\n\n/**\n * get cells adjacent to a slide\n * @param {Integer} adjCount - number of adjacent slides\n * @param {Integer} index - index of slide to start\n * @returns {Array} cells - array of Flickity.Cells\n */\nproto.getAdjacentCellElements = function( adjCount, index ) {\n if ( !adjCount ) {\n return this.selectedSlide.getCellElements();\n }\n index = index === undefined ? this.selectedIndex : index;\n\n var len = this.slides.length;\n if ( 1 + ( adjCount * 2 ) >= len ) {\n return this.getCellElements();\n }\n\n var cellElems = [];\n for ( var i = index - adjCount; i <= index + adjCount; i++ ) {\n var slideIndex = this.options.wrapAround ? utils.modulo( i, len ) : i;\n var slide = this.slides[ slideIndex ];\n if ( slide ) {\n cellElems = cellElems.concat( slide.getCellElements() );\n }\n }\n return cellElems;\n};\n\n/**\n * select slide from number or cell element\n * @param {[Element, String, Number]} selector - element, selector string, or index\n * @returns {Flickity.Cell} - matching cell\n */\nproto.queryCell = function( selector ) {\n if ( typeof selector == 'number' ) {\n // use number as index\n return this.cells[ selector ];\n }\n if ( typeof selector == 'string' ) {\n // do not select invalid selectors from hash: #123, #/. #791\n if ( selector.match( /^[#.]?[\\d/]/ ) ) {\n return;\n }\n // use string as selector, get element\n selector = this.element.querySelector( selector );\n }\n // get cell from element\n return this.getCell( selector );\n};\n\n// -------------------------- events -------------------------- //\n\nproto.uiChange = function() {\n this.emitEvent('uiChange');\n};\n\n// keep focus on element when child UI elements are clicked\nproto.childUIPointerDown = function( event ) {\n // HACK iOS does not allow touch events to bubble up?!\n if ( event.type != 'touchstart' ) {\n event.preventDefault();\n }\n this.focus();\n};\n\n// ----- resize ----- //\n\nproto.onresize = function() {\n this.watchCSS();\n this.resize();\n};\n\nutils.debounceMethod( Flickity, 'onresize', 150 );\n\nproto.resize = function() {\n // #1177 disable resize behavior when animating or dragging for iOS 15\n if ( !this.isActive || this.isAnimating || this.isDragging ) {\n return;\n }\n this.getSize();\n // wrap values\n if ( this.options.wrapAround ) {\n this.x = utils.modulo( this.x, this.slideableWidth );\n }\n this.positionCells();\n this._getWrapShiftCells();\n this.setGallerySize();\n this.emitEvent('resize');\n // update selected index for group slides, instant\n // TODO: position can be lost between groups of various numbers\n var selectedElement = this.selectedElements && this.selectedElements[0];\n this.selectCell( selectedElement, false, true );\n};\n\n// watches the :after property, activates/deactivates\nproto.watchCSS = function() {\n var watchOption = this.options.watchCSS;\n if ( !watchOption ) {\n return;\n }\n\n var afterContent = getComputedStyle( this.element, ':after' ).content;\n // activate if :after { content: 'flickity' }\n if ( afterContent.indexOf('flickity') != -1 ) {\n this.activate();\n } else {\n this.deactivate();\n }\n};\n\n// ----- keydown ----- //\n\n// go previous/next if left/right keys pressed\nproto.onkeydown = function( event ) {\n // only work if element is in focus\n var isNotFocused = document.activeElement && document.activeElement != this.element;\n if ( !this.options.accessibility || isNotFocused ) {\n return;\n }\n\n var handler = Flickity.keyboardHandlers[ event.keyCode ];\n if ( handler ) {\n handler.call( this );\n }\n};\n\nFlickity.keyboardHandlers = {\n // left arrow\n 37: function() {\n var leftMethod = this.options.rightToLeft ? 'next' : 'previous';\n this.uiChange();\n this[ leftMethod ]();\n },\n // right arrow\n 39: function() {\n var rightMethod = this.options.rightToLeft ? 'previous' : 'next';\n this.uiChange();\n this[ rightMethod ]();\n },\n};\n\n// ----- focus ----- //\n\nproto.focus = function() {\n // TODO remove scrollTo once focus options gets more support\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus ...\n // #Browser_compatibility\n var prevScrollY = window.pageYOffset;\n this.element.focus({ preventScroll: true });\n // hack to fix scroll jump after focus, #76\n if ( window.pageYOffset != prevScrollY ) {\n window.scrollTo( window.pageXOffset, prevScrollY );\n }\n};\n\n// -------------------------- destroy -------------------------- //\n\n// deactivate all Flickity functionality, but keep stuff available\nproto.deactivate = function() {\n if ( !this.isActive ) {\n return;\n }\n this.element.classList.remove('flickity-enabled');\n this.element.classList.remove('flickity-rtl');\n this.unselectSelectedSlide();\n // destroy cells\n this.cells.forEach( function( cell ) {\n cell.destroy();\n } );\n this.element.removeChild( this.viewport );\n // move child elements back into element\n moveElements( this.slider.children, this.element );\n if ( this.options.accessibility ) {\n this.element.removeAttribute('tabIndex');\n this.element.removeEventListener( 'keydown', this );\n }\n // set flags\n this.isActive = false;\n this.emitEvent('deactivate');\n};\n\nproto.destroy = function() {\n this.deactivate();\n window.removeEventListener( 'resize', this );\n this.allOff();\n this.emitEvent('destroy');\n if ( jQuery && this.$element ) {\n jQuery.removeData( this.element, 'flickity' );\n }\n delete this.element.flickityGUID;\n delete instances[ this.guid ];\n};\n\n// -------------------------- prototype -------------------------- //\n\nutils.extend( proto, animatePrototype );\n\n// -------------------------- extras -------------------------- //\n\n/**\n * get Flickity instance from element\n * @param {[Element, String]} elem - element or selector string\n * @returns {Flickity} - Flickity instance\n */\nFlickity.data = function( elem ) {\n elem = utils.getQueryElement( elem );\n var id = elem && elem.flickityGUID;\n return id && instances[ id ];\n};\n\nutils.htmlInit( Flickity, 'flickity' );\n\nif ( jQuery && jQuery.bridget ) {\n jQuery.bridget( 'flickity', Flickity );\n}\n\n// set internal jQuery, for Webpack + jQuery v3, #478\nFlickity.setJQuery = function( jq ) {\n jQuery = jq;\n};\n\nFlickity.Cell = Cell;\nFlickity.Slide = Slide;\n\nreturn Flickity;\n\n} ) );\n","/*!\n * Flickity v2.3.0\n * Touch, responsive, flickable carousels\n *\n * Licensed GPLv3 for open source use\n * or Flickity Commercial License for commercial use\n *\n * https://flickity.metafizzy.co\n * Copyright 2015-2021 Metafizzy\n */\n\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n './drag',\n './prev-next-button',\n './page-dots',\n './player',\n './add-remove-cell',\n './lazyload',\n ], factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('./flickity'),\n require('./drag'),\n require('./prev-next-button'),\n require('./page-dots'),\n require('./player'),\n require('./add-remove-cell'),\n require('./lazyload')\n );\n }\n\n} )( window, function factory( Flickity ) {\n return Flickity;\n} );\n","// lazyload\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n 'fizzy-ui-utils/utils',\n ], function( Flickity, utils ) {\n return factory( window, Flickity, utils );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window,\n window.Flickity,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, utils ) {\n'use strict';\n\nFlickity.createMethods.push('_createLazyload');\nvar proto = Flickity.prototype;\n\nproto._createLazyload = function() {\n this.on( 'select', this.lazyLoad );\n};\n\nproto.lazyLoad = function() {\n var lazyLoad = this.options.lazyLoad;\n if ( !lazyLoad ) {\n return;\n }\n // get adjacent cells, use lazyLoad option for adjacent count\n var adjCount = typeof lazyLoad == 'number' ? lazyLoad : 0;\n var cellElems = this.getAdjacentCellElements( adjCount );\n // get lazy images in those cells\n var lazyImages = [];\n cellElems.forEach( function( cellElem ) {\n var lazyCellImages = getCellLazyImages( cellElem );\n lazyImages = lazyImages.concat( lazyCellImages );\n } );\n // load lazy images\n lazyImages.forEach( function( img ) {\n new LazyLoader( img, this );\n }, this );\n};\n\nfunction getCellLazyImages( cellElem ) {\n // check if cell element is lazy image\n if ( cellElem.nodeName == 'IMG' ) {\n var lazyloadAttr = cellElem.getAttribute('data-flickity-lazyload');\n var srcAttr = cellElem.getAttribute('data-flickity-lazyload-src');\n var srcsetAttr = cellElem.getAttribute('data-flickity-lazyload-srcset');\n if ( lazyloadAttr || srcAttr || srcsetAttr ) {\n return [ cellElem ];\n }\n }\n // select lazy images in cell\n var lazySelector = 'img[data-flickity-lazyload], ' +\n 'img[data-flickity-lazyload-src], img[data-flickity-lazyload-srcset]';\n var imgs = cellElem.querySelectorAll( lazySelector );\n return utils.makeArray( imgs );\n}\n\n// -------------------------- LazyLoader -------------------------- //\n\n/**\n * class to handle loading images\n * @param {Image} img - Image element\n * @param {Flickity} flickity - Flickity instance\n */\nfunction LazyLoader( img, flickity ) {\n this.img = img;\n this.flickity = flickity;\n this.load();\n}\n\nLazyLoader.prototype.handleEvent = utils.handleEvent;\n\nLazyLoader.prototype.load = function() {\n this.img.addEventListener( 'load', this );\n this.img.addEventListener( 'error', this );\n // get src & srcset\n var src = this.img.getAttribute('data-flickity-lazyload') ||\n this.img.getAttribute('data-flickity-lazyload-src');\n var srcset = this.img.getAttribute('data-flickity-lazyload-srcset');\n // set src & serset\n this.img.src = src;\n if ( srcset ) {\n this.img.setAttribute( 'srcset', srcset );\n }\n // remove attr\n this.img.removeAttribute('data-flickity-lazyload');\n this.img.removeAttribute('data-flickity-lazyload-src');\n this.img.removeAttribute('data-flickity-lazyload-srcset');\n};\n\nLazyLoader.prototype.onload = function( event ) {\n this.complete( event, 'flickity-lazyloaded' );\n};\n\nLazyLoader.prototype.onerror = function( event ) {\n this.complete( event, 'flickity-lazyerror' );\n};\n\nLazyLoader.prototype.complete = function( event, className ) {\n // unbind events\n this.img.removeEventListener( 'load', this );\n this.img.removeEventListener( 'error', this );\n\n var cell = this.flickity.getParentCell( this.img );\n var cellElem = cell && cell.element;\n this.flickity.cellSizeChange( cellElem );\n\n this.img.classList.add( className );\n this.flickity.dispatchEvent( 'lazyLoad', event, cellElem );\n};\n\n// ----- ----- //\n\nFlickity.LazyLoader = LazyLoader;\n\nreturn Flickity;\n\n} ) );\n","// page dots\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n 'unipointer/unipointer',\n 'fizzy-ui-utils/utils',\n ], function( Flickity, Unipointer, utils ) {\n return factory( window, Flickity, Unipointer, utils );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('unipointer'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window,\n window.Flickity,\n window.Unipointer,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, Unipointer, utils ) {\n\n// -------------------------- PageDots -------------------------- //\n\n'use strict';\n\nfunction PageDots( parent ) {\n this.parent = parent;\n this._create();\n}\n\nPageDots.prototype = Object.create( Unipointer.prototype );\n\nPageDots.prototype._create = function() {\n // create holder element\n this.holder = document.createElement('ol');\n this.holder.className = 'flickity-page-dots';\n // create dots, array of elements\n this.dots = [];\n // events\n this.handleClick = this.onClick.bind( this );\n this.on( 'pointerDown', this.parent.childUIPointerDown.bind( this.parent ) );\n};\n\nPageDots.prototype.activate = function() {\n this.setDots();\n this.holder.addEventListener( 'click', this.handleClick );\n this.bindStartEvent( this.holder );\n // add to DOM\n this.parent.element.appendChild( this.holder );\n};\n\nPageDots.prototype.deactivate = function() {\n this.holder.removeEventListener( 'click', this.handleClick );\n this.unbindStartEvent( this.holder );\n // remove from DOM\n this.parent.element.removeChild( this.holder );\n};\n\nPageDots.prototype.setDots = function() {\n // get difference between number of slides and number of dots\n var delta = this.parent.slides.length - this.dots.length;\n if ( delta > 0 ) {\n this.addDots( delta );\n } else if ( delta < 0 ) {\n this.removeDots( -delta );\n }\n};\n\nPageDots.prototype.addDots = function( count ) {\n var fragment = document.createDocumentFragment();\n var newDots = [];\n var length = this.dots.length;\n var max = length + count;\n\n for ( var i = length; i < max; i++ ) {\n var dot = document.createElement('li');\n dot.className = 'dot';\n dot.setAttribute( 'aria-label', 'Page dot ' + ( i + 1 ) );\n fragment.appendChild( dot );\n newDots.push( dot );\n }\n\n this.holder.appendChild( fragment );\n this.dots = this.dots.concat( newDots );\n};\n\nPageDots.prototype.removeDots = function( count ) {\n // remove from this.dots collection\n var removeDots = this.dots.splice( this.dots.length - count, count );\n // remove from DOM\n removeDots.forEach( function( dot ) {\n this.holder.removeChild( dot );\n }, this );\n};\n\nPageDots.prototype.updateSelected = function() {\n // remove selected class on previous\n if ( this.selectedDot ) {\n this.selectedDot.className = 'dot';\n this.selectedDot.removeAttribute('aria-current');\n }\n // don't proceed if no dots\n if ( !this.dots.length ) {\n return;\n }\n this.selectedDot = this.dots[ this.parent.selectedIndex ];\n this.selectedDot.className = 'dot is-selected';\n this.selectedDot.setAttribute( 'aria-current', 'step' );\n};\n\nPageDots.prototype.onTap = // old method name, backwards-compatible\nPageDots.prototype.onClick = function( event ) {\n var target = event.target;\n // only care about dot clicks\n if ( target.nodeName != 'LI' ) {\n return;\n }\n\n this.parent.uiChange();\n var index = this.dots.indexOf( target );\n this.parent.select( index );\n};\n\nPageDots.prototype.destroy = function() {\n this.deactivate();\n this.allOff();\n};\n\nFlickity.PageDots = PageDots;\n\n// -------------------------- Flickity -------------------------- //\n\nutils.extend( Flickity.defaults, {\n pageDots: true,\n} );\n\nFlickity.createMethods.push('_createPageDots');\n\nvar proto = Flickity.prototype;\n\nproto._createPageDots = function() {\n if ( !this.options.pageDots ) {\n return;\n }\n this.pageDots = new PageDots( this );\n // events\n this.on( 'activate', this.activatePageDots );\n this.on( 'select', this.updateSelectedPageDots );\n this.on( 'cellChange', this.updatePageDots );\n this.on( 'resize', this.updatePageDots );\n this.on( 'deactivate', this.deactivatePageDots );\n};\n\nproto.activatePageDots = function() {\n this.pageDots.activate();\n};\n\nproto.updateSelectedPageDots = function() {\n this.pageDots.updateSelected();\n};\n\nproto.updatePageDots = function() {\n this.pageDots.setDots();\n};\n\nproto.deactivatePageDots = function() {\n this.pageDots.deactivate();\n};\n\n// ----- ----- //\n\nFlickity.PageDots = PageDots;\n\nreturn Flickity;\n\n} ) );\n","// player & autoPlay\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'ev-emitter/ev-emitter',\n 'fizzy-ui-utils/utils',\n './flickity',\n ], function( EvEmitter, utils, Flickity ) {\n return factory( EvEmitter, utils, Flickity );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('ev-emitter'),\n require('fizzy-ui-utils'),\n require('./flickity')\n );\n } else {\n // browser global\n factory(\n window.EvEmitter,\n window.fizzyUIUtils,\n window.Flickity\n );\n }\n\n}( window, function factory( EvEmitter, utils, Flickity ) {\n\n'use strict';\n\n// -------------------------- Player -------------------------- //\n\nfunction Player( parent ) {\n this.parent = parent;\n this.state = 'stopped';\n // visibility change event handler\n this.onVisibilityChange = this.visibilityChange.bind( this );\n this.onVisibilityPlay = this.visibilityPlay.bind( this );\n}\n\nPlayer.prototype = Object.create( EvEmitter.prototype );\n\n// start play\nPlayer.prototype.play = function() {\n if ( this.state == 'playing' ) {\n return;\n }\n // do not play if page is hidden, start playing when page is visible\n var isPageHidden = document.hidden;\n if ( isPageHidden ) {\n document.addEventListener( 'visibilitychange', this.onVisibilityPlay );\n return;\n }\n\n this.state = 'playing';\n // listen to visibility change\n document.addEventListener( 'visibilitychange', this.onVisibilityChange );\n // start ticking\n this.tick();\n};\n\nPlayer.prototype.tick = function() {\n // do not tick if not playing\n if ( this.state != 'playing' ) {\n return;\n }\n\n var time = this.parent.options.autoPlay;\n // default to 3 seconds\n time = typeof time == 'number' ? time : 3000;\n var _this = this;\n // HACK: reset ticks if stopped and started within interval\n this.clear();\n this.timeout = setTimeout( function() {\n _this.parent.next( true );\n _this.tick();\n }, time );\n};\n\nPlayer.prototype.stop = function() {\n this.state = 'stopped';\n this.clear();\n // remove visibility change event\n document.removeEventListener( 'visibilitychange', this.onVisibilityChange );\n};\n\nPlayer.prototype.clear = function() {\n clearTimeout( this.timeout );\n};\n\nPlayer.prototype.pause = function() {\n if ( this.state == 'playing' ) {\n this.state = 'paused';\n this.clear();\n }\n};\n\nPlayer.prototype.unpause = function() {\n // re-start play if paused\n if ( this.state == 'paused' ) {\n this.play();\n }\n};\n\n// pause if page visibility is hidden, unpause if visible\nPlayer.prototype.visibilityChange = function() {\n var isPageHidden = document.hidden;\n this[ isPageHidden ? 'pause' : 'unpause' ]();\n};\n\nPlayer.prototype.visibilityPlay = function() {\n this.play();\n document.removeEventListener( 'visibilitychange', this.onVisibilityPlay );\n};\n\n// -------------------------- Flickity -------------------------- //\n\nutils.extend( Flickity.defaults, {\n pauseAutoPlayOnHover: true,\n} );\n\nFlickity.createMethods.push('_createPlayer');\nvar proto = Flickity.prototype;\n\nproto._createPlayer = function() {\n this.player = new Player( this );\n\n this.on( 'activate', this.activatePlayer );\n this.on( 'uiChange', this.stopPlayer );\n this.on( 'pointerDown', this.stopPlayer );\n this.on( 'deactivate', this.deactivatePlayer );\n};\n\nproto.activatePlayer = function() {\n if ( !this.options.autoPlay ) {\n return;\n }\n this.player.play();\n this.element.addEventListener( 'mouseenter', this );\n};\n\n// Player API, don't hate the ... thanks I know where the door is\n\nproto.playPlayer = function() {\n this.player.play();\n};\n\nproto.stopPlayer = function() {\n this.player.stop();\n};\n\nproto.pausePlayer = function() {\n this.player.pause();\n};\n\nproto.unpausePlayer = function() {\n this.player.unpause();\n};\n\nproto.deactivatePlayer = function() {\n this.player.stop();\n this.element.removeEventListener( 'mouseenter', this );\n};\n\n// ----- mouseenter/leave ----- //\n\n// pause auto-play on hover\nproto.onmouseenter = function() {\n if ( !this.options.pauseAutoPlayOnHover ) {\n return;\n }\n this.player.pause();\n this.element.addEventListener( 'mouseleave', this );\n};\n\n// resume auto-play on hover off\nproto.onmouseleave = function() {\n this.player.unpause();\n this.element.removeEventListener( 'mouseleave', this );\n};\n\n// ----- ----- //\n\nFlickity.Player = Player;\n\nreturn Flickity;\n\n} ) );\n","// prev/next buttons\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n 'unipointer/unipointer',\n 'fizzy-ui-utils/utils',\n ], function( Flickity, Unipointer, utils ) {\n return factory( window, Flickity, Unipointer, utils );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('unipointer'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window,\n window.Flickity,\n window.Unipointer,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, Unipointer, utils ) {\n'use strict';\n\nvar svgURI = 'http://www.w3.org/2000/svg';\n\n// -------------------------- PrevNextButton -------------------------- //\n\nfunction PrevNextButton( direction, parent ) {\n this.direction = direction;\n this.parent = parent;\n this._create();\n}\n\nPrevNextButton.prototype = Object.create( Unipointer.prototype );\n\nPrevNextButton.prototype._create = function() {\n // properties\n this.isEnabled = true;\n this.isPrevious = this.direction == -1;\n var leftDirection = this.parent.options.rightToLeft ? 1 : -1;\n this.isLeft = this.direction == leftDirection;\n\n var element = this.element = document.createElement('button');\n element.className = 'flickity-button flickity-prev-next-button';\n element.className += this.isPrevious ? ' previous' : ' next';\n // prevent button from submitting form http://stackoverflow.com/a/10836076/182183\n element.setAttribute( 'type', 'button' );\n // init as disabled\n this.disable();\n\n element.setAttribute( 'aria-label', this.isPrevious ? 'Previous' : 'Next' );\n\n // create arrow\n var svg = this.createSVG();\n element.appendChild( svg );\n // events\n this.parent.on( 'select', this.update.bind( this ) );\n this.on( 'pointerDown', this.parent.childUIPointerDown.bind( this.parent ) );\n};\n\nPrevNextButton.prototype.activate = function() {\n this.bindStartEvent( this.element );\n this.element.addEventListener( 'click', this );\n // add to DOM\n this.parent.element.appendChild( this.element );\n};\n\nPrevNextButton.prototype.deactivate = function() {\n // remove from DOM\n this.parent.element.removeChild( this.element );\n // click events\n this.unbindStartEvent( this.element );\n this.element.removeEventListener( 'click', this );\n};\n\nPrevNextButton.prototype.createSVG = function() {\n var svg = document.createElementNS( svgURI, 'svg' );\n svg.setAttribute( 'class', 'flickity-button-icon' );\n svg.setAttribute( 'viewBox', '0 0 100 100' );\n var path = document.createElementNS( svgURI, 'path' );\n var pathMovements = getArrowMovements( this.parent.options.arrowShape );\n path.setAttribute( 'd', pathMovements );\n path.setAttribute( 'class', 'arrow' );\n // rotate arrow\n if ( !this.isLeft ) {\n path.setAttribute( 'transform', 'translate(100, 100) rotate(180) ' );\n }\n svg.appendChild( path );\n return svg;\n};\n\n// get SVG path movmement\nfunction getArrowMovements( shape ) {\n // use shape as movement if string\n if ( typeof shape == 'string' ) {\n return shape;\n }\n // create movement string\n return 'M ' + shape.x0 + ',50' +\n ' L ' + shape.x1 + ',' + ( shape.y1 + 50 ) +\n ' L ' + shape.x2 + ',' + ( shape.y2 + 50 ) +\n ' L ' + shape.x3 + ',50 ' +\n ' L ' + shape.x2 + ',' + ( 50 - shape.y2 ) +\n ' L ' + shape.x1 + ',' + ( 50 - shape.y1 ) +\n ' Z';\n}\n\nPrevNextButton.prototype.handleEvent = utils.handleEvent;\n\nPrevNextButton.prototype.onclick = function() {\n if ( !this.isEnabled ) {\n return;\n }\n this.parent.uiChange();\n var method = this.isPrevious ? 'previous' : 'next';\n this.parent[ method ]();\n};\n\n// ----- ----- //\n\nPrevNextButton.prototype.enable = function() {\n if ( this.isEnabled ) {\n return;\n }\n this.element.disabled = false;\n this.isEnabled = true;\n};\n\nPrevNextButton.prototype.disable = function() {\n if ( !this.isEnabled ) {\n return;\n }\n this.element.disabled = true;\n this.isEnabled = false;\n};\n\nPrevNextButton.prototype.update = function() {\n // index of first or last slide, if previous or next\n var slides = this.parent.slides;\n // enable is wrapAround and at least 2 slides\n if ( this.parent.options.wrapAround && slides.length > 1 ) {\n this.enable();\n return;\n }\n var lastIndex = slides.length ? slides.length - 1 : 0;\n var boundIndex = this.isPrevious ? 0 : lastIndex;\n var method = this.parent.selectedIndex == boundIndex ? 'disable' : 'enable';\n this[ method ]();\n};\n\nPrevNextButton.prototype.destroy = function() {\n this.deactivate();\n this.allOff();\n};\n\n// -------------------------- Flickity prototype -------------------------- //\n\nutils.extend( Flickity.defaults, {\n prevNextButtons: true,\n arrowShape: {\n x0: 10,\n x1: 60, y1: 50,\n x2: 70, y2: 40,\n x3: 30,\n },\n} );\n\nFlickity.createMethods.push('_createPrevNextButtons');\nvar proto = Flickity.prototype;\n\nproto._createPrevNextButtons = function() {\n if ( !this.options.prevNextButtons ) {\n return;\n }\n\n this.prevButton = new PrevNextButton( -1, this );\n this.nextButton = new PrevNextButton( 1, this );\n\n this.on( 'activate', this.activatePrevNextButtons );\n};\n\nproto.activatePrevNextButtons = function() {\n this.prevButton.activate();\n this.nextButton.activate();\n this.on( 'deactivate', this.deactivatePrevNextButtons );\n};\n\nproto.deactivatePrevNextButtons = function() {\n this.prevButton.deactivate();\n this.nextButton.deactivate();\n this.off( 'deactivate', this.deactivatePrevNextButtons );\n};\n\n// -------------------------- -------------------------- //\n\nFlickity.PrevNextButton = PrevNextButton;\n\nreturn Flickity;\n\n} ) );\n","// slide\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.Flickity = window.Flickity || {};\n window.Flickity.Slide = factory();\n }\n\n}( window, function factory() {\n'use strict';\n\nfunction Slide( parent ) {\n this.parent = parent;\n this.isOriginLeft = parent.originSide == 'left';\n this.cells = [];\n this.outerWidth = 0;\n this.height = 0;\n}\n\nvar proto = Slide.prototype;\n\nproto.addCell = function( cell ) {\n this.cells.push( cell );\n this.outerWidth += cell.size.outerWidth;\n this.height = Math.max( cell.size.outerHeight, this.height );\n // first cell stuff\n if ( this.cells.length == 1 ) {\n this.x = cell.x; // x comes from first cell\n var beginMargin = this.isOriginLeft ? 'marginLeft' : 'marginRight';\n this.firstMargin = cell.size[ beginMargin ];\n }\n};\n\nproto.updateTarget = function() {\n var endMargin = this.isOriginLeft ? 'marginRight' : 'marginLeft';\n var lastCell = this.getLastCell();\n var lastMargin = lastCell ? lastCell.size[ endMargin ] : 0;\n var slideWidth = this.outerWidth - ( this.firstMargin + lastMargin );\n this.target = this.x + this.firstMargin + slideWidth * this.parent.cellAlign;\n};\n\nproto.getLastCell = function() {\n return this.cells[ this.cells.length - 1 ];\n};\n\nproto.select = function() {\n this.cells.forEach( function( cell ) {\n cell.select();\n } );\n};\n\nproto.unselect = function() {\n this.cells.forEach( function( cell ) {\n cell.unselect();\n } );\n};\n\nproto.getCellElements = function() {\n return this.cells.map( function( cell ) {\n return cell.element;\n } );\n};\n\nreturn Slide;\n\n} ) );\n","/*!\n * getSize v2.0.3\n * measure size of elements\n * MIT license\n */\n\n/* jshint browser: true, strict: true, undef: true, unused: true */\n/* globals console: false */\n\n( function( window, factory ) {\n /* jshint strict: false */ /* globals define, module */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.getSize = factory();\n }\n\n})( window, function factory() {\n'use strict';\n\n// -------------------------- helpers -------------------------- //\n\n// get a number from a string, not a percentage\nfunction getStyleSize( value ) {\n var num = parseFloat( value );\n // not a percent like '100%', and a number\n var isValid = value.indexOf('%') == -1 && !isNaN( num );\n return isValid && num;\n}\n\nfunction noop() {}\n\nvar logError = typeof console == 'undefined' ? noop :\n function( message ) {\n console.error( message );\n };\n\n// -------------------------- measurements -------------------------- //\n\nvar measurements = [\n 'paddingLeft',\n 'paddingRight',\n 'paddingTop',\n 'paddingBottom',\n 'marginLeft',\n 'marginRight',\n 'marginTop',\n 'marginBottom',\n 'borderLeftWidth',\n 'borderRightWidth',\n 'borderTopWidth',\n 'borderBottomWidth'\n];\n\nvar measurementsLength = measurements.length;\n\nfunction getZeroSize() {\n var size = {\n width: 0,\n height: 0,\n innerWidth: 0,\n innerHeight: 0,\n outerWidth: 0,\n outerHeight: 0\n };\n for ( var i=0; i < measurementsLength; i++ ) {\n var measurement = measurements[i];\n size[ measurement ] = 0;\n }\n return size;\n}\n\n// -------------------------- getStyle -------------------------- //\n\n/**\n * getStyle, get style of element, check for Firefox bug\n * https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n */\nfunction getStyle( elem ) {\n var style = getComputedStyle( elem );\n if ( !style ) {\n logError( 'Style returned ' + style +\n '. Are you running this code in a hidden iframe on Firefox? ' +\n 'See https://bit.ly/getsizebug1' );\n }\n return style;\n}\n\n// -------------------------- setup -------------------------- //\n\nvar isSetup = false;\n\nvar isBoxSizeOuter;\n\n/**\n * setup\n * check isBoxSizerOuter\n * do on first getSize() rather than on page load for Firefox bug\n */\nfunction setup() {\n // setup once\n if ( isSetup ) {\n return;\n }\n isSetup = true;\n\n // -------------------------- box sizing -------------------------- //\n\n /**\n * Chrome & Safari measure the outer-width on style.width on border-box elems\n * IE11 & Firefox<29 measures the inner-width\n */\n var div = document.createElement('div');\n div.style.width = '200px';\n div.style.padding = '1px 2px 3px 4px';\n div.style.borderStyle = 'solid';\n div.style.borderWidth = '1px 2px 3px 4px';\n div.style.boxSizing = 'border-box';\n\n var body = document.body || document.documentElement;\n body.appendChild( div );\n var style = getStyle( div );\n // round value for browser zoom. desandro/masonry#928\n isBoxSizeOuter = Math.round( getStyleSize( style.width ) ) == 200;\n getSize.isBoxSizeOuter = isBoxSizeOuter;\n\n body.removeChild( div );\n}\n\n// -------------------------- getSize -------------------------- //\n\nfunction getSize( elem ) {\n setup();\n\n // use querySeletor if elem is string\n if ( typeof elem == 'string' ) {\n elem = document.querySelector( elem );\n }\n\n // do not proceed on non-objects\n if ( !elem || typeof elem != 'object' || !elem.nodeType ) {\n return;\n }\n\n var style = getStyle( elem );\n\n // if hidden, everything is 0\n if ( style.display == 'none' ) {\n return getZeroSize();\n }\n\n var size = {};\n size.width = elem.offsetWidth;\n size.height = elem.offsetHeight;\n\n var isBorderBox = size.isBorderBox = style.boxSizing == 'border-box';\n\n // get all measurements\n for ( var i=0; i < measurementsLength; i++ ) {\n var measurement = measurements[i];\n var value = style[ measurement ];\n var num = parseFloat( value );\n // any 'auto', 'medium' value will be 0\n size[ measurement ] = !isNaN( num ) ? num : 0;\n }\n\n var paddingWidth = size.paddingLeft + size.paddingRight;\n var paddingHeight = size.paddingTop + size.paddingBottom;\n var marginWidth = size.marginLeft + size.marginRight;\n var marginHeight = size.marginTop + size.marginBottom;\n var borderWidth = size.borderLeftWidth + size.borderRightWidth;\n var borderHeight = size.borderTopWidth + size.borderBottomWidth;\n\n var isBorderBoxSizeOuter = isBorderBox && isBoxSizeOuter;\n\n // overwrite width and height if we can get it from style\n var styleWidth = getStyleSize( style.width );\n if ( styleWidth !== false ) {\n size.width = styleWidth +\n // add padding and border unless it's already including it\n ( isBorderBoxSizeOuter ? 0 : paddingWidth + borderWidth );\n }\n\n var styleHeight = getStyleSize( style.height );\n if ( styleHeight !== false ) {\n size.height = styleHeight +\n // add padding and border unless it's already including it\n ( isBorderBoxSizeOuter ? 0 : paddingHeight + borderHeight );\n }\n\n size.innerWidth = size.width - ( paddingWidth + borderWidth );\n size.innerHeight = size.height - ( paddingHeight + borderHeight );\n\n size.outerWidth = size.width + marginWidth;\n size.outerHeight = size.height + marginHeight;\n\n return size;\n}\n\nreturn getSize;\n\n});\n","/**\n * Globalize v1.7.0\n *\n * https://github.com/globalizejs/globalize\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2021-08-02T11:53Z\n */\n/*!\n * Globalize v1.7.0 2021-08-02T11:53Z Released under the MIT license\n * http://git.io/TrdQbw\n */\n(function( root, factory ) {\n\n\t// UMD returnExports\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD\n\t\tdefine([\n\t\t\t\"cldr\",\n\t\t\t\"cldr/event\"\n\t\t], factory );\n\t} else if ( typeof exports === \"object\" ) {\n\n\t\t// Node, CommonJS\n\t\tmodule.exports = factory( require( \"cldrjs\" ) );\n\t} else {\n\n\t\t// Global\n\t\troot.Globalize = factory( root.Cldr );\n\t}\n}( this, function( Cldr ) {\n\n\n/**\n * A toString method that outputs meaningful values for objects or arrays and\n * still performs as fast as a plain string in case variable is string, or as\n * fast as `\"\" + number` in case variable is a number.\n * Ref: http://jsperf.com/my-stringify\n */\nvar toString = function( variable ) {\n\treturn typeof variable === \"string\" ? variable : ( typeof variable === \"number\" ? \"\" +\n\t\tvariable : JSON.stringify( variable ) );\n};\n\n\n\n\n/**\n * formatMessage( message, data )\n *\n * @message [String] A message with optional {vars} to be replaced.\n *\n * @data [Array or JSON] Object with replacing-variables content.\n *\n * Return the formatted message. For example:\n *\n * - formatMessage( \"{0} second\", [ 1 ] ); // 1 second\n *\n * - formatMessage( \"{0}/{1}\", [\"m\", \"s\"] ); // m/s\n *\n * - formatMessage( \"{name} <{email}>\", {\n * name: \"Foo\",\n * email: \"bar@baz.qux\"\n * }); // Foo \n */\nvar formatMessage = function( message, data ) {\n\n\t// Replace {attribute}'s\n\tmessage = message.replace( /{[0-9a-zA-Z-_. ]+}/g, function( name ) {\n\t\tname = name.replace( /^{([^}]*)}$/, \"$1\" );\n\t\treturn toString( data[ name ] );\n\t});\n\n\treturn message;\n};\n\n\n\n\nvar objectExtend = function() {\n\tvar destination = arguments[ 0 ],\n\t\tsources = [].slice.call( arguments, 1 );\n\n\tsources.forEach(function( source ) {\n\t\tvar prop;\n\t\tfor ( prop in source ) {\n\t\t\tdestination[ prop ] = source[ prop ];\n\t\t}\n\t});\n\n\treturn destination;\n};\n\n\n\n\nvar createError = function( code, message, attributes ) {\n\tvar error;\n\n\tmessage = code + ( message ? \": \" + formatMessage( message, attributes ) : \"\" );\n\terror = new Error( message );\n\terror.code = code;\n\n\tobjectExtend( error, attributes );\n\n\treturn error;\n};\n\n\n\n\n/**\n * Pushes part to parts array, concat two consecutive parts of the same type.\n */\nvar partsPush = function( parts, type, value ) {\n\n\t\t// Concat two consecutive parts of same type\n\t\tif ( parts.length && parts[ parts.length - 1 ].type === type ) {\n\t\t\tparts[ parts.length - 1 ].value += value;\n\t\t\treturn;\n\t\t}\n\n\t\tparts.push( { type: type, value: value } );\n};\n\n\n\n\n/**\n * formatMessage( message, data )\n *\n * @message [String] A message with optional {vars} to be replaced.\n *\n * @data [Array or JSON] Object with replacing-variables content.\n *\n * Return the formatted message. For example:\n *\n * - formatMessage( \"{0} second\", [ 1 ] );\n * > [{type: \"variable\", value: \"1\", name: \"0\"}, {type: \"literal\", value: \" second\"}]\n *\n * - formatMessage( \"{0}/{1}\", [\"m\", \"s\"] );\n * > [\n * { type: \"variable\", value: \"m\", name: \"0\" },\n * { type: \"literal\", value: \" /\" },\n * { type: \"variable\", value: \"s\", name: \"1\" }\n * ]\n */\nvar formatMessageToParts = function( message, data ) {\n\n\tvar lastOffset = 0,\n\t\tparts = [];\n\n\t// Create parts.\n\tmessage.replace( /{[0-9a-zA-Z-_. ]+}/g, function( nameIncludingBrackets, offset ) {\n\t\tvar name = nameIncludingBrackets.slice( 1, -1 );\n\t\tpartsPush( parts, \"literal\", message.slice( lastOffset, offset ));\n\t\tpartsPush( parts, \"variable\", data[ name ] );\n\t\tparts[ parts.length - 1 ].name = name;\n\t\tlastOffset += offset + nameIncludingBrackets.length;\n\t});\n\n\t// Skip empty ones such as `{ type: 'literal', value: '' }`.\n\treturn parts.filter(function( part ) {\n\t\treturn part.value !== \"\";\n\t});\n};\n\n\n\n\n/**\n * Returns joined parts values.\n */\nvar partsJoin = function( parts ) {\n\treturn parts.map( function( part ) {\n\t\treturn part.value;\n\t}).join( \"\" );\n};\n\n\n\n\nvar runtimeStringify = function( args ) {\n\treturn JSON.stringify( args, function( _key, value ) {\n\t\tif ( value && value.runtimeKey ) {\n\t\t\treturn value.runtimeKey;\n\t\t}\n\t\treturn value;\n\t} );\n};\n\n\n\n\n// Based on http://stackoverflow.com/questions/7616461/generate-a-hash-from-string-in-javascript-jquery\nvar stringHash = function( str ) {\n\treturn [].reduce.call( str, function( hash, i ) {\n\t\tvar chr = i.charCodeAt( 0 );\n\t\thash = ( ( hash << 5 ) - hash ) + chr;\n\t\treturn hash | 0;\n\t}, 0 );\n};\n\n\n\n\nvar runtimeKey = function( fnName, locale, args, argsStr ) {\n\tvar hash;\n\targsStr = argsStr || runtimeStringify( args );\n\thash = stringHash( fnName + locale + argsStr );\n\treturn hash > 0 ? \"a\" + hash : \"b\" + Math.abs( hash );\n};\n\n\n\n\nvar functionName = function( fn ) {\n\tif ( fn.name !== undefined ) {\n\t\treturn fn.name;\n\t}\n\n\t// fn.name is not supported by IE.\n\tvar matches = /^function\\s+([\\w\\$]+)\\s*\\(/.exec( fn.toString() );\n\n\tif ( matches && matches.length > 0 ) {\n\t\treturn matches[ 1 ];\n\t}\n};\n\n\n\n\nvar runtimeBind = function( args, cldr, fn, runtimeArgs ) {\n\n\tvar argsStr = runtimeStringify( args ),\n\t\tfnName = functionName( fn ),\n\t\tlocale = cldr.locale;\n\n\t// If name of the function is not available, this is most likely due to uglification,\n\t// which most likely means we are in production, and runtimeBind here is not necessary.\n\tif ( !fnName ) {\n\t\treturn fn;\n\t}\n\n\tfn.runtimeKey = runtimeKey( fnName, locale, null, argsStr );\n\n\tfn.generatorString = function() {\n\t\treturn \"Globalize(\\\"\" + locale + \"\\\").\" + fnName + \"(\" + argsStr.slice( 1, -1 ) + \")\";\n\t};\n\n\tfn.runtimeArgs = runtimeArgs;\n\n\treturn fn;\n};\n\n\n\n\nvar validate = function( code, message, check, attributes ) {\n\tif ( !check ) {\n\t\tthrow createError( code, message, attributes );\n\t}\n};\n\n\n\n\nvar alwaysArray = function( stringOrArray ) {\n\treturn Array.isArray( stringOrArray ) ? stringOrArray : stringOrArray ? [ stringOrArray ] : [];\n};\n\n\n\n\nvar validateCldr = function( path, value, options ) {\n\tvar skipBoolean;\n\toptions = options || {};\n\n\tskipBoolean = alwaysArray( options.skip ).some(function( pathRe ) {\n\t\treturn pathRe.test( path );\n\t});\n\n\tvalidate( \"E_MISSING_CLDR\", \"Missing required CLDR content `{path}`.\", value || skipBoolean, {\n\t\tpath: path\n\t});\n};\n\n\n\n\nvar validateDefaultLocale = function( value ) {\n\tvalidate( \"E_DEFAULT_LOCALE_NOT_DEFINED\", \"Default locale has not been defined.\",\n\t\tvalue !== undefined, {} );\n};\n\n\n\n\nvar validateParameterPresence = function( value, name ) {\n\tvalidate( \"E_MISSING_PARAMETER\", \"Missing required parameter `{name}`.\",\n\t\tvalue !== undefined, { name: name });\n};\n\n\n\n\n/**\n * range( value, name, minimum, maximum )\n *\n * @value [Number].\n *\n * @name [String] name of variable.\n *\n * @minimum [Number]. The lowest valid value, inclusive.\n *\n * @maximum [Number]. The greatest valid value, inclusive.\n */\nvar validateParameterRange = function( value, name, minimum, maximum ) {\n\tvalidate(\n\t\t\"E_PAR_OUT_OF_RANGE\",\n\t\t\"Parameter `{name}` has value `{value}` out of range [{minimum}, {maximum}].\",\n\t\tvalue === undefined || value >= minimum && value <= maximum,\n\t\t{\n\t\t\tmaximum: maximum,\n\t\t\tminimum: minimum,\n\t\t\tname: name,\n\t\t\tvalue: value\n\t\t}\n\t);\n};\n\n\n\n\nvar validateParameterType = function( value, name, check, expected ) {\n\tvalidate(\n\t\t\"E_INVALID_PAR_TYPE\",\n\t\t\"Invalid `{name}` parameter ({value}). {expected} expected.\",\n\t\tcheck,\n\t\t{\n\t\t\texpected: expected,\n\t\t\tname: name,\n\t\t\tvalue: value\n\t\t}\n\t);\n};\n\n\n\n\nvar validateParameterTypeLocale = function( value, name ) {\n\tvalidateParameterType(\n\t\tvalue,\n\t\tname,\n\t\tvalue === undefined || typeof value === \"string\" || value instanceof Cldr,\n\t\t\"String or Cldr instance\"\n\t);\n};\n\n\n\n\n/**\n * Function inspired by jQuery Core, but reduced to our use case.\n */\nvar isPlainObject = function( obj ) {\n\treturn obj !== null && \"\" + obj === \"[object Object]\";\n};\n\n\n\n\nvar validateParameterTypePlainObject = function( value, name ) {\n\tvalidateParameterType(\n\t\tvalue,\n\t\tname,\n\t\tvalue === undefined || isPlainObject( value ),\n\t\t\"Plain Object\"\n\t);\n};\n\n\n\n\nvar alwaysCldr = function( localeOrCldr ) {\n\treturn localeOrCldr instanceof Cldr ? localeOrCldr : new Cldr( localeOrCldr );\n};\n\n\n\n\n// ref: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions?redirectlocale=en-US&redirectslug=JavaScript%2FGuide%2FRegular_Expressions\nvar regexpEscape = function( string ) {\n\treturn string.replace( /([.*+?^=!:${}()|\\[\\]\\/\\\\])/g, \"\\\\$1\" );\n};\n\n\n\n\nvar stringPad = function( str, count, right ) {\n\tvar length;\n\tif ( typeof str !== \"string\" ) {\n\t\tstr = String( str );\n\t}\n\tfor ( length = str.length; length < count; length += 1 ) {\n\t\tstr = ( right ? ( str + \"0\" ) : ( \"0\" + str ) );\n\t}\n\treturn str;\n};\n\n\n\n\nfunction validateLikelySubtags( cldr ) {\n\tcldr.once( \"get\", validateCldr );\n\tcldr.get( \"supplemental/likelySubtags\" );\n}\n\n/**\n * [new] Globalize( locale|cldr )\n *\n * @locale [String]\n *\n * @cldr [Cldr instance]\n *\n * Create a Globalize instance.\n */\nfunction Globalize( locale ) {\n\tif ( !( this instanceof Globalize ) ) {\n\t\treturn new Globalize( locale );\n\t}\n\n\tvalidateParameterPresence( locale, \"locale\" );\n\tvalidateParameterTypeLocale( locale, \"locale\" );\n\n\tthis.cldr = alwaysCldr( locale );\n\n\tvalidateLikelySubtags( this.cldr );\n}\n\n/**\n * Globalize.load( json, ... )\n *\n * @json [JSON]\n *\n * Load resolved or unresolved cldr data.\n * Somewhat equivalent to previous Globalize.addCultureInfo(...).\n */\nGlobalize.load = function() {\n\n\t// validations are delegated to Cldr.load().\n\tCldr.load.apply( Cldr, arguments );\n};\n\n/**\n * Globalize.locale( [locale|cldr] )\n *\n * @locale [String]\n *\n * @cldr [Cldr instance]\n *\n * Set default Cldr instance if locale or cldr argument is passed.\n *\n * Return the default Cldr instance.\n */\nGlobalize.locale = function( locale ) {\n\tvalidateParameterTypeLocale( locale, \"locale\" );\n\n\tif ( arguments.length ) {\n\t\tthis.cldr = alwaysCldr( locale );\n\t\tvalidateLikelySubtags( this.cldr );\n\t}\n\treturn this.cldr;\n};\n\n/**\n * Optimization to avoid duplicating some internal functions across modules.\n */\nGlobalize._alwaysArray = alwaysArray;\nGlobalize._createError = createError;\nGlobalize._formatMessage = formatMessage;\nGlobalize._formatMessageToParts = formatMessageToParts;\nGlobalize._isPlainObject = isPlainObject;\nGlobalize._objectExtend = objectExtend;\nGlobalize._partsJoin = partsJoin;\nGlobalize._partsPush = partsPush;\nGlobalize._regexpEscape = regexpEscape;\nGlobalize._runtimeBind = runtimeBind;\nGlobalize._stringPad = stringPad;\nGlobalize._validate = validate;\nGlobalize._validateCldr = validateCldr;\nGlobalize._validateDefaultLocale = validateDefaultLocale;\nGlobalize._validateParameterPresence = validateParameterPresence;\nGlobalize._validateParameterRange = validateParameterRange;\nGlobalize._validateParameterTypePlainObject = validateParameterTypePlainObject;\nGlobalize._validateParameterType = validateParameterType;\n\nreturn Globalize;\n\n\n\n\n}));\n","/*!\n * Globalize v1.7.0\n *\n * https://github.com/globalizejs/globalize\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2021-08-02T11:53Z\n */\n(function( root, factory ) {\n\n\t// UMD returnExports\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD\n\t\tdefine([\n\t\t\t\"cldr\",\n\t\t\t\"../globalize\",\n\t\t\t\"./number\",\n\t\t\t\"cldr/event\",\n\t\t\t\"cldr/supplemental\"\n\t\t], factory );\n\t} else if ( typeof exports === \"object\" ) {\n\n\t\t// Node, CommonJS\n\t\tmodule.exports = factory( require( \"cldrjs\" ), require( \"../globalize\" ) );\n\t} else {\n\n\t\t// Global\n\t\tfactory( root.Cldr, root.Globalize );\n\t}\n}(this, function( Cldr, Globalize ) {\n\nvar alwaysArray = Globalize._alwaysArray,\n\tcreateError = Globalize._createError,\n\tformatMessageToParts = Globalize._formatMessageToParts,\n\tnumberNumberingSystem = Globalize._numberNumberingSystem,\n\tnumberPattern = Globalize._numberPattern,\n\tpartsJoin = Globalize._partsJoin,\n\tpartsPush = Globalize._partsPush,\n\truntimeBind = Globalize._runtimeBind,\n\tstringPad = Globalize._stringPad,\n\tvalidateCldr = Globalize._validateCldr,\n\tvalidateDefaultLocale = Globalize._validateDefaultLocale,\n\tvalidateParameterPresence = Globalize._validateParameterPresence,\n\tvalidateParameterType = Globalize._validateParameterType,\n\tvalidateParameterTypeNumber = Globalize._validateParameterTypeNumber,\n\tvalidateParameterTypePlainObject = Globalize._validateParameterTypePlainObject;\n\n\nvar createErrorPluralModulePresence = function() {\n\treturn createError( \"E_MISSING_PLURAL_MODULE\", \"Plural module not loaded.\" );\n};\n\n\n\n\nvar validateParameterTypeCurrency = function( value, name ) {\n\tvalidateParameterType(\n\t\tvalue,\n\t\tname,\n\t\tvalue === undefined || typeof value === \"string\" && ( /^[A-Za-z]{3}$/ ).test( value ),\n\t\t\"3-letter currency code string as defined by ISO 4217\"\n\t);\n};\n\n\n\n\nvar currencyFormatterFn = function( currencyToPartsFormatter ) {\n\treturn function currencyFormatter( value ) {\n\t\treturn partsJoin( currencyToPartsFormatter( value ));\n\t};\n};\n\n\n\n\n/**\n * supplementalOverride( currency, pattern, cldr )\n *\n * Return pattern with fraction digits overriden by supplemental currency data.\n */\nvar currencySupplementalOverride = function( currency, pattern, cldr ) {\n\tvar digits,\n\t\tfraction = \"\",\n\t\tfractionData = cldr.supplemental([ \"currencyData/fractions\", currency ]) ||\n\t\t\tcldr.supplemental( \"currencyData/fractions/DEFAULT\" );\n\n\tdigits = +fractionData._digits;\n\n\tif ( digits ) {\n\t\tfraction = \".\" + stringPad( \"0\", digits ).slice( 0, -1 ) + fractionData._rounding;\n\t}\n\n\treturn pattern.replace( /\\.(#+|0*[0-9]|0+[0-9]?)/g, fraction );\n};\n\n\n\n\nvar objectFilter = function( object, testRe ) {\n\tvar key,\n\t\tcopy = {};\n\n\tfor ( key in object ) {\n\t\tif ( testRe.test( key ) ) {\n\t\t\tcopy[ key ] = object[ key ];\n\t\t}\n\t}\n\n\treturn copy;\n};\n\n\n\n\nvar currencyUnitPatterns = function( cldr ) {\n\treturn objectFilter( cldr.main([\n\t\t\"numbers\",\n\t\t\"currencyFormats-numberSystem-\" + numberNumberingSystem( cldr )\n\t]), /^unitPattern/ );\n};\n\n\n\n\n/**\n * nameProperties( currency, cldr )\n *\n * Return number pattern with the appropriate currency code in as literal.\n */\nvar currencyNameProperties = function( currency, cldr ) {\n\tvar pattern = numberPattern( \"decimal\", cldr );\n\n\t// The number of decimal places and the rounding for each currency is not locale-specific. Those\n\t// values overridden by Supplemental Currency Data.\n\tpattern = currencySupplementalOverride( currency, pattern, cldr );\n\n\treturn {\n\t\tdisplayNames: objectFilter( cldr.main([\n\t\t\t\"numbers/currencies\",\n\t\t\tcurrency\n\t\t]), /^displayName/ ),\n\t\tpattern: pattern,\n\t\tunitPatterns: currencyUnitPatterns( cldr )\n\t};\n};\n\n\n\n\n/**\n * Unicode regular expression for: everything except symbols from the category S\n *\n * Generated by:\n *\n * var s = regenerate()\n * .addRange( 0x0, 0x10FFFF )\n * .remove( require( \"@unicode/unicode-13.0.0/General_Category/Math_Symbol/symbols\" ) )\n * .remove( require( \"@unicode/unicode-13.0.0/General_Category/Currency_Symbol/symbols\" ) )\n * .remove( require( \"@unicode/unicode-13.0.0/General_Category/Modifier_Symbol/symbols\" ) )\n * .remove( require( \"@unicode/unicode-13.0.0/General_Category/Other_Symbol/symbols\" ) )\n *\n * https://github.com/mathiasbynens/regenerate\n * https://github.com/node-unicode/unicode-13.0.0\n * http://www.unicode.org/reports/tr44/#General_Category_Values\n */\nvar regexpNotS = /[\\0-#%-\\*,-;\\?-\\]_a-\\{\\}\\x7F-\\xA1\\xA7\\xAA\\xAB\\xAD\\xB2\\xB3\\xB5-\\xB7\\xB9-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376-\\u0383\\u0386-\\u03F5\\u03F7-\\u0481\\u0483-\\u058C\\u0590-\\u0605\\u0609\\u060A\\u060C\\u060D\\u0610-\\u06DD\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF-\\u07F5\\u07F7-\\u07FD\\u0800-\\u09F1\\u09F4-\\u09F9\\u09FC-\\u0AF0\\u0AF2-\\u0B6F\\u0B71-\\u0BF2\\u0BFB-\\u0C7E\\u0C80-\\u0D4E\\u0D50-\\u0D78\\u0D7A-\\u0E3E\\u0E40-\\u0F00\\u0F04-\\u0F12\\u0F14\\u0F18\\u0F19\\u0F20-\\u0F33\\u0F35\\u0F37\\u0F39-\\u0FBD\\u0FC6\\u0FCD\\u0FD0-\\u0FD4\\u0FD9-\\u109D\\u10A0-\\u138F\\u139A-\\u166C\\u166E-\\u17DA\\u17DC-\\u193F\\u1941-\\u19DD\\u1A00-\\u1B60\\u1B6B-\\u1B73\\u1B7D-\\u1FBC\\u1FBE\\u1FC2-\\u1FCC\\u1FD0-\\u1FDC\\u1FE0-\\u1FEC\\u1FF0-\\u1FFC\\u1FFF-\\u2043\\u2045-\\u2051\\u2053-\\u2079\\u207D-\\u2089\\u208D-\\u209F\\u20C0-\\u20FF\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2150-\\u2189\\u218C-\\u218F\\u2308-\\u230B\\u2329\\u232A\\u2427-\\u243F\\u244B-\\u249B\\u24EA-\\u24FF\\u2768-\\u2793\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2B74\\u2B75\\u2B96\\u2C00-\\u2CE4\\u2CEB-\\u2E4F\\u2E52-\\u2E7F\\u2E9A\\u2EF4-\\u2EFF\\u2FD6-\\u2FEF\\u2FFC-\\u3003\\u3005-\\u3011\\u3014-\\u301F\\u3021-\\u3035\\u3038-\\u303D\\u3040-\\u309A\\u309D-\\u318F\\u3192-\\u3195\\u31A0-\\u31BF\\u31E4-\\u31FF\\u321F-\\u3229\\u3248-\\u324F\\u3251-\\u325F\\u3280-\\u3289\\u32B1-\\u32BF\\u3400-\\u4DBF\\u4E00-\\uA48F\\uA4C7-\\uA6FF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA827\\uA82C-\\uA835\\uA83A-\\uAA76\\uAA7A-\\uAB5A\\uAB5C-\\uAB69\\uAB6C-\\uD7FF\\uE000-\\uFB28\\uFB2A-\\uFBB1\\uFBC2-\\uFDFB\\uFDFE-\\uFE61\\uFE63\\uFE67\\uFE68\\uFE6A-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF1B\\uFF1F-\\uFF3D\\uFF3F\\uFF41-\\uFF5B\\uFF5D\\uFF5F-\\uFFDF\\uFFE7\\uFFEF-\\uFFFB\\uFFFE\\uFFFF]|\\uD800[\\uDC00-\\uDD36\\uDD40-\\uDD78\\uDD8A\\uDD8B\\uDD8F\\uDD9D-\\uDD9F\\uDDA1-\\uDDCF\\uDDFD-\\uDFFF]|[\\uD801\\uD803\\uD804\\uD806\\uD808-\\uD819\\uD81B-\\uD82E\\uD830-\\uD833\\uD837\\uD839\\uD83A\\uD83F-\\uDBFF][\\uDC00-\\uDFFF]|\\uD802[\\uDC00-\\uDC76\\uDC79-\\uDEC7\\uDEC9-\\uDFFF]|\\uD805[\\uDC00-\\uDF3E\\uDF40-\\uDFFF]|\\uD807[\\uDC00-\\uDFD4\\uDFF2-\\uDFFF]|\\uD81A[\\uDC00-\\uDF3B\\uDF40-\\uDF44\\uDF46-\\uDFFF]|\\uD82F[\\uDC00-\\uDC9B\\uDC9D-\\uDFFF]|\\uD834[\\uDCF6-\\uDCFF\\uDD27\\uDD28\\uDD65-\\uDD69\\uDD6D-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDDE9-\\uDDFF\\uDE42-\\uDE44\\uDE46-\\uDEFF\\uDF57-\\uDFFF]|\\uD835[\\uDC00-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFFF]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE87-\\uDFFF]|\\uD838[\\uDC00-\\uDD4E\\uDD50-\\uDEFE\\uDF00-\\uDFFF]|\\uD83B[\\uDC00-\\uDCAB\\uDCAD-\\uDCAF\\uDCB1-\\uDD2D\\uDD2F-\\uDEEF\\uDEF2-\\uDFFF]|\\uD83C[\\uDC2C-\\uDC2F\\uDC94-\\uDC9F\\uDCAF\\uDCB0\\uDCC0\\uDCD0\\uDCF6-\\uDD0C\\uDDAE-\\uDDE5\\uDE03-\\uDE0F\\uDE3C-\\uDE3F\\uDE49-\\uDE4F\\uDE52-\\uDE5F\\uDE66-\\uDEFF]|\\uD83D[\\uDED8-\\uDEDF\\uDEED-\\uDEEF\\uDEFD-\\uDEFF\\uDF74-\\uDF7F\\uDFD9-\\uDFDF\\uDFEC-\\uDFFF]|\\uD83E[\\uDC0C-\\uDC0F\\uDC48-\\uDC4F\\uDC5A-\\uDC5F\\uDC88-\\uDC8F\\uDCAE\\uDCAF\\uDCB2-\\uDCFF\\uDD79\\uDDCC\\uDE54-\\uDE5F\\uDE6E\\uDE6F\\uDE75-\\uDE77\\uDE7B-\\uDE7F\\uDE87-\\uDE8F\\uDEA9-\\uDEAF\\uDEB7-\\uDEBF\\uDEC3-\\uDECF\\uDED7-\\uDEFF\\uDF93\\uDFCB-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\n\n\n\n\n/**\n * Unicode regular expression for: everything except symbols from categories S and Z\n *\n * Generated by:\n *\n * var s = regenerate()\n * .addRange( 0x0, 0x10FFFF )\n * .remove( require( \"@unicode/unicode-13.0.0/General_Category/Math_Symbol/symbols\" ) )\n * .remove( require( \"@unicode/unicode-13.0.0/General_Category/Currency_Symbol/symbols\" ) )\n * .remove( require( \"@unicode/unicode-13.0.0/General_Category/Modifier_Symbol/symbols\" ) )\n * .remove( require( \"@unicode/unicode-13.0.0/General_Category/Other_Symbol/symbols\" ) )\n * .remove( require( \"@unicode/unicode-13.0.0/General_Category/Space_Separator/symbols\" ) )\n * .remove( require( \"@unicode/unicode-13.0.0/General_Category/Line_Separator/symbols\" ) )\n * .remove( require( \"@unicode/unicode-13.0.0/General_Category/Paragraph_Separator/symbols\" ) );\n *\n * https://github.com/mathiasbynens/regenerate\n * https://github.com/node-unicode/unicode-13.0.0\n * http://www.unicode.org/reports/tr44/#General_Category_Values\n */\nvar regexpNotSAndZ = /[\\0-\\x1F!-#%-\\*,-;\\?-\\]_a-\\{\\}\\x7F-\\x9F\\xA1\\xA7\\xAA\\xAB\\xAD\\xB2\\xB3\\xB5-\\xB7\\xB9-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376-\\u0383\\u0386-\\u03F5\\u03F7-\\u0481\\u0483-\\u058C\\u0590-\\u0605\\u0609\\u060A\\u060C\\u060D\\u0610-\\u06DD\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF-\\u07F5\\u07F7-\\u07FD\\u0800-\\u09F1\\u09F4-\\u09F9\\u09FC-\\u0AF0\\u0AF2-\\u0B6F\\u0B71-\\u0BF2\\u0BFB-\\u0C7E\\u0C80-\\u0D4E\\u0D50-\\u0D78\\u0D7A-\\u0E3E\\u0E40-\\u0F00\\u0F04-\\u0F12\\u0F14\\u0F18\\u0F19\\u0F20-\\u0F33\\u0F35\\u0F37\\u0F39-\\u0FBD\\u0FC6\\u0FCD\\u0FD0-\\u0FD4\\u0FD9-\\u109D\\u10A0-\\u138F\\u139A-\\u166C\\u166E-\\u167F\\u1681-\\u17DA\\u17DC-\\u193F\\u1941-\\u19DD\\u1A00-\\u1B60\\u1B6B-\\u1B73\\u1B7D-\\u1FBC\\u1FBE\\u1FC2-\\u1FCC\\u1FD0-\\u1FDC\\u1FE0-\\u1FEC\\u1FF0-\\u1FFC\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u2060-\\u2079\\u207D-\\u2089\\u208D-\\u209F\\u20C0-\\u20FF\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2150-\\u2189\\u218C-\\u218F\\u2308-\\u230B\\u2329\\u232A\\u2427-\\u243F\\u244B-\\u249B\\u24EA-\\u24FF\\u2768-\\u2793\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2B74\\u2B75\\u2B96\\u2C00-\\u2CE4\\u2CEB-\\u2E4F\\u2E52-\\u2E7F\\u2E9A\\u2EF4-\\u2EFF\\u2FD6-\\u2FEF\\u2FFC-\\u2FFF\\u3001-\\u3003\\u3005-\\u3011\\u3014-\\u301F\\u3021-\\u3035\\u3038-\\u303D\\u3040-\\u309A\\u309D-\\u318F\\u3192-\\u3195\\u31A0-\\u31BF\\u31E4-\\u31FF\\u321F-\\u3229\\u3248-\\u324F\\u3251-\\u325F\\u3280-\\u3289\\u32B1-\\u32BF\\u3400-\\u4DBF\\u4E00-\\uA48F\\uA4C7-\\uA6FF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA827\\uA82C-\\uA835\\uA83A-\\uAA76\\uAA7A-\\uAB5A\\uAB5C-\\uAB69\\uAB6C-\\uD7FF\\uE000-\\uFB28\\uFB2A-\\uFBB1\\uFBC2-\\uFDFB\\uFDFE-\\uFE61\\uFE63\\uFE67\\uFE68\\uFE6A-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF1B\\uFF1F-\\uFF3D\\uFF3F\\uFF41-\\uFF5B\\uFF5D\\uFF5F-\\uFFDF\\uFFE7\\uFFEF-\\uFFFB\\uFFFE\\uFFFF]|\\uD800[\\uDC00-\\uDD36\\uDD40-\\uDD78\\uDD8A\\uDD8B\\uDD8F\\uDD9D-\\uDD9F\\uDDA1-\\uDDCF\\uDDFD-\\uDFFF]|[\\uD801\\uD803\\uD804\\uD806\\uD808-\\uD819\\uD81B-\\uD82E\\uD830-\\uD833\\uD837\\uD839\\uD83A\\uD83F-\\uDBFF][\\uDC00-\\uDFFF]|\\uD802[\\uDC00-\\uDC76\\uDC79-\\uDEC7\\uDEC9-\\uDFFF]|\\uD805[\\uDC00-\\uDF3E\\uDF40-\\uDFFF]|\\uD807[\\uDC00-\\uDFD4\\uDFF2-\\uDFFF]|\\uD81A[\\uDC00-\\uDF3B\\uDF40-\\uDF44\\uDF46-\\uDFFF]|\\uD82F[\\uDC00-\\uDC9B\\uDC9D-\\uDFFF]|\\uD834[\\uDCF6-\\uDCFF\\uDD27\\uDD28\\uDD65-\\uDD69\\uDD6D-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDDE9-\\uDDFF\\uDE42-\\uDE44\\uDE46-\\uDEFF\\uDF57-\\uDFFF]|\\uD835[\\uDC00-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFFF]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE87-\\uDFFF]|\\uD838[\\uDC00-\\uDD4E\\uDD50-\\uDEFE\\uDF00-\\uDFFF]|\\uD83B[\\uDC00-\\uDCAB\\uDCAD-\\uDCAF\\uDCB1-\\uDD2D\\uDD2F-\\uDEEF\\uDEF2-\\uDFFF]|\\uD83C[\\uDC2C-\\uDC2F\\uDC94-\\uDC9F\\uDCAF\\uDCB0\\uDCC0\\uDCD0\\uDCF6-\\uDD0C\\uDDAE-\\uDDE5\\uDE03-\\uDE0F\\uDE3C-\\uDE3F\\uDE49-\\uDE4F\\uDE52-\\uDE5F\\uDE66-\\uDEFF]|\\uD83D[\\uDED8-\\uDEDF\\uDEED-\\uDEEF\\uDEFD-\\uDEFF\\uDF74-\\uDF7F\\uDFD9-\\uDFDF\\uDFEC-\\uDFFF]|\\uD83E[\\uDC0C-\\uDC0F\\uDC48-\\uDC4F\\uDC5A-\\uDC5F\\uDC88-\\uDC8F\\uDCAE\\uDCAF\\uDCB2-\\uDCFF\\uDD79\\uDDCC\\uDE54-\\uDE5F\\uDE6E\\uDE6F\\uDE75-\\uDE77\\uDE7B-\\uDE7F\\uDE87-\\uDE8F\\uDEA9-\\uDEAF\\uDEB7-\\uDEBF\\uDEC3-\\uDECF\\uDED7-\\uDEFF\\uDF93\\uDFCB-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\n\n\n\n\n/**\n * symbolProperties( currency, cldr )\n *\n * Return pattern replacing `¤` with the appropriate currency symbol literal.\n */\nvar currencySymbolProperties = function( currency, cldr, options ) {\n\tvar currencySpacing, pattern, symbol, symbolEntries,\n\t\tregexp = {\n\t\t\t\"[:digit:]\": /\\d/,\n\t\t\t\"[:^S:]\": regexpNotS,\n\t\t\t\"[[:^S:]&[:^Z:]]\": regexpNotSAndZ\n\t\t};\n\n\tif ( options.style === \"code\" ) {\n\t\tsymbol = currency;\n\t} else {\n\t\tsymbolEntries = [ \"symbol\" ];\n\n\t\t// If options.symbolForm === \"narrow\" was passed, prepend it.\n\t\tif ( options.symbolForm === \"narrow\" ) {\n\t\t\tsymbolEntries.unshift( \"symbol-alt-narrow\" );\n\t\t}\n\n\t\tsymbolEntries.some(function( symbolEntry ) {\n\t\t\treturn symbol = cldr.main([\n\t\t\t\t\"numbers/currencies\",\n\t\t\t\tcurrency,\n\t\t\t\tsymbolEntry\n\t\t\t]);\n\t\t});\n\t}\n\n\tcurrencySpacing = [ \"beforeCurrency\", \"afterCurrency\" ].map(function( position ) {\n\t\treturn cldr.main([\n\t\t\t\"numbers\",\n\t\t\t\"currencyFormats-numberSystem-\" + numberNumberingSystem( cldr ),\n\t\t\t\"currencySpacing\",\n\t\t\tposition\n\t\t]);\n\t});\n\n\tpattern = cldr.main([\n\t\t\"numbers\",\n\t\t\"currencyFormats-numberSystem-\" + numberNumberingSystem( cldr ),\n\t\toptions.style === \"accounting\" ? \"accounting\" : \"standard\"\n\t]);\n\n\tpattern =\n\n\t\t// The number of decimal places and the rounding for each currency is not locale-specific.\n\t\t// Those values are overridden by Supplemental Currency Data.\n\t\tcurrencySupplementalOverride( currency, pattern, cldr )\n\n\t\t// Replace \"¤\" (\\u00A4) with the appropriate symbol literal.\n\t\t.split( \";\" ).map(function( pattern ) {\n\n\t\t\treturn pattern.split( \"\\u00A4\" ).map(function( part, i ) {\n\t\t\t\tvar currencyMatch = regexp[ currencySpacing[ i ].currencyMatch ],\n\t\t\t\t\tsurroundingMatch = regexp[ currencySpacing[ i ].surroundingMatch ],\n\t\t\t\t\tinsertBetween = \"\";\n\n\t\t\t\t// For currencyMatch and surroundingMatch definitions, read [1].\n\t\t\t\t// When i === 0, beforeCurrency is being handled. Otherwise, afterCurrency.\n\t\t\t\t// 1: http://www.unicode.org/reports/tr35/tr35-numbers.html#Currencies\n\t\t\t\tcurrencyMatch = currencyMatch.test( symbol.charAt( i ? symbol.length - 1 : 0 ) );\n\t\t\t\tsurroundingMatch = surroundingMatch.test(\n\t\t\t\t\tpart.charAt( i ? 0 : part.length - 1 ).replace( /[#@,.]/g, \"0\" )\n\t\t\t\t);\n\n\t\t\t\tif ( currencyMatch && part && surroundingMatch ) {\n\t\t\t\t\tinsertBetween = currencySpacing[ i ].insertBetween;\n\t\t\t\t}\n\n\t\t\t\treturn ( i ? insertBetween : \"\" ) + part + ( i ? \"\" : insertBetween );\n\t\t\t}).join( \"\\u00A4\" );\n\t\t}).join( \";\" );\n\n\treturn {\n\t\tpattern: pattern,\n\t\tsymbol: symbol\n\t};\n};\n\n\n\n\n/**\n * nameFormat( formattedNumber, pluralForm, properties )\n *\n * Return the appropriate name form currency format.\n */\nvar currencyNameFormat = function( formattedNumber, pluralForm, properties ) {\n\tvar displayName, unitPattern,\n\t\tparts = [],\n\t\tdisplayNames = properties.displayNames || {},\n\t\tunitPatterns = properties.unitPatterns;\n\n\tdisplayName = displayNames[ \"displayName-count-\" + pluralForm ] ||\n\t\tdisplayNames[ \"displayName-count-other\" ] ||\n\t\tdisplayNames.displayName ||\n\t\tproperties.currency;\n\tunitPattern = unitPatterns[ \"unitPattern-count-\" + pluralForm ] ||\n\t\tunitPatterns[ \"unitPattern-count-other\" ];\n\n\tformatMessageToParts( unitPattern, [ formattedNumber, displayName ]).forEach(function( part ) {\n\t\tif ( part.type === \"variable\" && part.name === \"0\" ) {\n\t\t\tpart.value.forEach(function( part ) {\n\t\t\t\tpartsPush( parts, part.type, part.value );\n\t\t\t});\n\t\t} else if ( part.type === \"variable\" && part.name === \"1\" ) {\n\t\t\tpartsPush( parts, \"currency\", part.value );\n\t\t} else {\n\t\t\tpartsPush( parts, \"literal\", part.value );\n\t\t}\n\t});\n\n\treturn parts;\n};\n\n\n\n\n/**\n * symbolFormat( parts, symbol )\n *\n * Return the appropriate symbol/account form format.\n */\nvar currencySymbolFormat = function( parts, symbol ) {\n\tparts.forEach(function( part ) {\n\t\tif ( part.type === \"currency\" ) {\n\t\t\tpart.value = symbol;\n\t\t}\n\t});\n\treturn parts;\n};\n\n\n\n\nvar currencyToPartsFormatterFn = function( numberToPartsFormatter, pluralGenerator, properties ) {\n\tvar fn;\n\n\t// Return formatter when style is \"name\".\n\tif ( pluralGenerator && properties ) {\n\t\tfn = function currencyToPartsFormatter( value ) {\n\t\t\tvalidateParameterPresence( value, \"value\" );\n\t\t\tvalidateParameterTypeNumber( value, \"value\" );\n\t\t\treturn currencyNameFormat(\n\t\t\t\tnumberToPartsFormatter( value ),\n\t\t\t\tpluralGenerator( value ),\n\t\t\t\tproperties\n\t\t\t);\n\t\t};\n\n\t// Return formatter when style is \"symbol\", \"accounting\", or \"code\".\n\t} else {\n\t\tfn = function currencyToPartsFormatter( value ) {\n\n\t\t\t// 1: Reusing pluralGenerator argument, but in this case it is actually `symbol`\n\t\t\treturn currencySymbolFormat( numberToPartsFormatter( value ), pluralGenerator /* 1 */ );\n\t\t};\n\t}\n\n\treturn fn;\n};\n\n\n\n\n/**\n * objectOmit( object, keys )\n *\n * Return a copy of the object, filtered to omit the blacklisted key or array of keys.\n */\nvar objectOmit = function( object, keys ) {\n\tvar key,\n\t\tcopy = {};\n\n\tkeys = alwaysArray( keys );\n\n\tfor ( key in object ) {\n\t\tif ( keys.indexOf( key ) === -1 ) {\n\t\t\tcopy[ key ] = object[ key ];\n\t\t}\n\t}\n\n\treturn copy;\n};\n\n\n\n\nfunction validateRequiredCldr( path, value ) {\n\tvalidateCldr( path, value, {\n\t\tskip: [\n\t\t\t/numbers\\/currencies\\/[^/]+\\/symbol-alt-/,\n\t\t\t/supplemental\\/currencyData\\/fractions\\/[A-Za-z]{3}$/\n\t\t]\n\t});\n}\n\n/**\n * .currencyFormatter( currency [, options] )\n *\n * @currency [String] 3-letter currency code as defined by ISO 4217.\n *\n * @options [Object]:\n * - style: [String] \"symbol\" (default), \"accounting\", \"code\" or \"name\".\n * - see also number/format options.\n *\n * Return a function that formats a currency according to the given options and default/instance\n * locale.\n */\nGlobalize.currencyFormatter =\nGlobalize.prototype.currencyFormatter = function( currency, options ) {\n\tvar args, currencyToPartsFormatter, returnFn;\n\n\tvalidateParameterPresence( currency, \"currency\" );\n\tvalidateParameterTypeCurrency( currency, \"currency\" );\n\n\tvalidateParameterTypePlainObject( options, \"options\" );\n\n\toptions = options || {};\n\targs = [ currency, options ];\n\n\tcurrencyToPartsFormatter = this.currencyToPartsFormatter( currency, options );\n\treturnFn = currencyFormatterFn( currencyToPartsFormatter );\n\truntimeBind( args, this.cldr, returnFn, [ currencyToPartsFormatter ] );\n\n\treturn returnFn;\n};\n\n/**\n * .currencyToPartsFormatter( currency [, options] )\n *\n * @currency [String] 3-letter currency code as defined by ISO 4217.\n *\n * @options [Object]:\n * - style: [String] \"symbol\" (default), \"accounting\", \"code\" or \"name\".\n * - see also number/format options.\n *\n * Return a currency formatter function (of the form below) according to the given options and the\n * default/instance locale.\n *\n * fn( value )\n *\n * @value [Number]\n *\n * Return a function that formats a currency to parts according to the given options\n * and the default/instance locale.\n */\nGlobalize.currencyToPartsFormatter =\nGlobalize.prototype.currencyToPartsFormatter = function( currency, options ) {\n\tvar args, cldr, numberToPartsFormatter, pluralGenerator, properties, returnFn, style;\n\n\tvalidateParameterPresence( currency, \"currency\" );\n\tvalidateParameterTypeCurrency( currency, \"currency\" );\n\n\tvalidateParameterTypePlainObject( options, \"options\" );\n\n\tcldr = this.cldr;\n\toptions = options || {};\n\n\targs = [ currency, options ];\n\tstyle = options.style || \"symbol\";\n\n\tvalidateDefaultLocale( cldr );\n\n\t// Get properties given style (\"symbol\" default, \"code\" or \"name\").\n\tcldr.on( \"get\", validateRequiredCldr );\n\ttry {\n\t\tproperties = ({\n\t\t\taccounting: currencySymbolProperties,\n\t\t\tcode: currencySymbolProperties,\n\t\t\tname: currencyNameProperties,\n\t\t\tsymbol: currencySymbolProperties\n\t\t}[ style ] )( currency, cldr, options );\n\t} finally {\n\t\tcldr.off( \"get\", validateRequiredCldr );\n\t}\n\n\t// options = options minus style, plus raw pattern.\n\toptions = objectOmit( options, \"style\" );\n\toptions.raw = properties.pattern;\n\n\t// Return formatter when style is \"symbol\", \"accounting\", or \"code\".\n\tif ( style === \"symbol\" || style === \"accounting\" || style === \"code\" ) {\n\t\tnumberToPartsFormatter = this.numberToPartsFormatter( options );\n\n\t\treturnFn = currencyToPartsFormatterFn( numberToPartsFormatter, properties.symbol );\n\n\t\truntimeBind( args, cldr, returnFn, [ numberToPartsFormatter, properties.symbol ] );\n\n\t// Return formatter when style is \"name\".\n\t} else {\n\t\tnumberToPartsFormatter = this.numberToPartsFormatter( options );\n\n\t\t// Is plural module present? Yes, use its generator. Nope, use an error generator.\n\t\tpluralGenerator = this.plural !== undefined ?\n\t\t\tthis.pluralGenerator() :\n\t\t\tcreateErrorPluralModulePresence;\n\n\t\treturnFn = currencyToPartsFormatterFn(\n\t\t\tnumberToPartsFormatter,\n\t\t\tpluralGenerator,\n\t\t\tproperties\n\t\t);\n\n\t\truntimeBind( args, cldr, returnFn, [\n\t\t\tnumberToPartsFormatter,\n\t\t\tpluralGenerator,\n\t\t\tproperties\n\t\t]);\n\t}\n\n\treturn returnFn;\n};\n\n/**\n * .currencyParser( currency [, options] )\n *\n * @currency [String] 3-letter currency code as defined by ISO 4217.\n *\n * @options [Object] see currencyFormatter.\n *\n * Return the currency parser according to the given options and the default/instance locale.\n */\nGlobalize.currencyParser =\nGlobalize.prototype.currencyParser = function( /* currency, options */ ) {\n\n\t// TODO implement parser.\n\n};\n\n/**\n * .formatCurrency( value, currency [, options] )\n *\n * @value [Number] number to be formatted.\n *\n * @currency [String] 3-letter currency code as defined by ISO 4217.\n *\n * @options [Object] see currencyFormatter.\n *\n * Format a currency according to the given options and the default/instance locale.\n */\nGlobalize.formatCurrency =\nGlobalize.prototype.formatCurrency = function( value, currency, options ) {\n\tvalidateParameterPresence( value, \"value\" );\n\tvalidateParameterTypeNumber( value, \"value\" );\n\treturn this.currencyFormatter( currency, options )( value );\n};\n\n/**\n * .formatCurrencyToParts( value, currency [, options] )\n *\n * @value [Number] number to be formatted.\n *\n * @currency [String] 3-letter currency code as defined by ISO 4217.\n *\n * @options [Object] see currencyFormatter.\n *\n * Format a currency to parts according to the given options and the default/instance locale.\n */\nGlobalize.formatCurrencyToParts =\nGlobalize.prototype.formatCurrencyToParts = function( value, currency, options ) {\n\tvalidateParameterPresence( value, \"value\" );\n\tvalidateParameterTypeNumber( value, \"value\" );\n\treturn this.currencyToPartsFormatter( currency, options )( value );\n};\n\n/**\n * .parseCurrency( value, currency [, options] )\n *\n * @value [String]\n *\n * @currency [String] 3-letter currency code as defined by ISO 4217.\n *\n * @options [Object]: See currencyFormatter.\n *\n * Return the parsed currency or NaN when value is invalid.\n */\nGlobalize.parseCurrency =\nGlobalize.prototype.parseCurrency = function( /* value, currency, options */ ) {\n};\n\nreturn Globalize;\n\n\n\n\n}));\n","/**\n * Globalize v1.7.0\n *\n * https://github.com/globalizejs/globalize\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2021-08-02T11:53Z\n */\n/*!\n * Globalize v1.7.0 2021-08-02T11:53Z Released under the MIT license\n * http://git.io/TrdQbw\n */\n(function( root, factory ) {\n\n\t// UMD returnExports\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD\n\t\tdefine([\n\t\t\t\"cldr\",\n\t\t\t\"../globalize\",\n\t\t\t\"./number\",\n\t\t\t\"cldr/event\",\n\t\t\t\"cldr/supplemental\"\n\t\t], factory );\n\t} else if ( typeof exports === \"object\" ) {\n\n\t\t// Node, CommonJS\n\t\tmodule.exports = factory( require( \"cldrjs\" ), require( \"../globalize\" ) );\n\t} else {\n\n\t\t// Extend global\n\t\tfactory( root.Cldr, root.Globalize );\n\t}\n}(this, function( Cldr, Globalize ) {\n\nvar createError = Globalize._createError,\n\tcreateErrorUnsupportedFeature = Globalize._createErrorUnsupportedFeature,\n\tformatMessage = Globalize._formatMessage,\n\tisPlainObject = Globalize._isPlainObject,\n\tlooseMatching = Globalize._looseMatching,\n\tnumberNumberingSystemDigitsMap = Globalize._numberNumberingSystemDigitsMap,\n\tnumberSymbol = Globalize._numberSymbol,\n\tpartsJoin = Globalize._partsJoin,\n\tpartsPush = Globalize._partsPush,\n\tregexpEscape = Globalize._regexpEscape,\n\tremoveLiteralQuotes = Globalize._removeLiteralQuotes,\n\truntimeBind = Globalize._runtimeBind,\n\tstringPad = Globalize._stringPad,\n\tvalidate = Globalize._validate,\n\tvalidateCldr = Globalize._validateCldr,\n\tvalidateDefaultLocale = Globalize._validateDefaultLocale,\n\tvalidateParameterPresence = Globalize._validateParameterPresence,\n\tvalidateParameterType = Globalize._validateParameterType,\n\tvalidateParameterTypePlainObject = Globalize._validateParameterTypePlainObject,\n\tvalidateParameterTypeString = Globalize._validateParameterTypeString;\n\n\nvar validateParameterTypeDate = function( value, name ) {\n\tvalidateParameterType( value, name, value === undefined || value instanceof Date, \"Date\" );\n};\n\n\n\n\nvar createErrorInvalidParameterValue = function( name, value ) {\n\treturn createError( \"E_INVALID_PAR_VALUE\", \"Invalid `{name}` value ({value}).\", {\n\t\tname: name,\n\t\tvalue: value\n\t});\n};\n\n\n\n\n/**\n * Create a map between the skeleton fields and their positions, e.g.,\n * {\n * G: 0\n * y: 1\n * ...\n * }\n */\nvar validateSkeletonFieldsPosMap = \"GyYuUrQqMLlwWEecdDFghHKkmsSAzZOvVXx\".split( \"\" ).reduce(function( memo, item, i ) {\n\tmemo[ item ] = i;\n\treturn memo;\n}, {});\n\n\n\n\n/**\n * validateSkeleton( skeleton )\n *\n * skeleton: Assume `j` has already been converted into a localized hour field.\n */\nvar validateSkeleton = function validateSkeleton( skeleton ) {\n\tvar last,\n\n\t\t// Using easier to read variable.\n\t\tfieldsPosMap = validateSkeletonFieldsPosMap;\n\n\t// \"The fields are from the Date Field Symbol Table in Date Format Patterns\"\n\t// Ref: http://www.unicode.org/reports/tr35/tr35-dates.html#availableFormats_appendItems\n\t// I.e., check for invalid characters.\n\tskeleton.replace( /[^GyYuUrQqMLlwWEecdDFghHKkmsSAzZOvVXx]/, function( field ) {\n\t\tthrow createError(\n\t\t\t\"E_INVALID_OPTIONS\", \"Invalid field `{invalidField}` of skeleton `{value}`\",\n\t\t\t{\n\t\t\t\tinvalidField: field,\n\t\t\t\ttype: \"skeleton\",\n\t\t\t\tvalue: skeleton\n\t\t\t}\n\t\t);\n\t});\n\n\t// \"The canonical order is from top to bottom in that table; that is, yM not My\".\n\t// http://www.unicode.org/reports/tr35/tr35-dates.html#availableFormats_appendItems\n\t// I.e., check for invalid order.\n\tskeleton.split( \"\" ).every(function( field ) {\n\t\tif ( fieldsPosMap[ field ] < last ) {\n\t\t\tthrow createError(\n\t\t\t\t\"E_INVALID_OPTIONS\", \"Invalid order `{invalidField}` of skeleton `{value}`\",\n\t\t\t\t{\n\t\t\t\t\tinvalidField: field,\n\t\t\t\t\ttype: \"skeleton\",\n\t\t\t\t\tvalue: skeleton\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t\tlast = fieldsPosMap[ field ];\n\t\treturn true;\n\t});\n};\n\n\n\n\n/**\n * Returns a new object created by using `object`'s values as keys, and the keys as values.\n */\nvar objectInvert = function( object, fn ) {\n\tfn = fn || function( object, key, value ) {\n\t\tobject[ value ] = key;\n\t\treturn object;\n\t};\n\treturn Object.keys( object ).reduce(function( newObject, key ) {\n\t\treturn fn( newObject, key, object[ key ] );\n\t}, {});\n};\n\n\n\n\n// Invert key and values, e.g., {\"e\": \"eEc\"} ==> {\"e\": \"e\", \"E\": \"e\", \"c\": \"e\"}.\nvar dateExpandPatternSimilarFieldsMap = objectInvert({\n\t\"e\": \"eEc\",\n\t\"L\": \"ML\"\n}, function( object, key, value ) {\n\tvalue.split( \"\" ).forEach(function( field ) {\n\t\tobject[ field ] = key;\n\t});\n\treturn object;\n});\n\n\n\n\nvar dateExpandPatternNormalizePatternType = function( character ) {\n\treturn dateExpandPatternSimilarFieldsMap[ character ] || character;\n};\n\n\n\n\nvar datePatternRe = ( /([a-z])\\1*|'([^']|'')+'|''|./ig );\n\n\n\n\nvar stringRepeat = function( str, count ) {\n\tvar i, result = \"\";\n\tfor ( i = 0; i < count; i++ ) {\n\t\tresult = result + str;\n\t}\n\treturn result;\n};\n\n\n\n\nfunction expandBestMatchFormat( skeletonWithoutFractionalSeconds, bestMatchFormat ) {\n\tvar i, j, bestMatchFormatParts, matchedType, matchedLength, requestedType,\n\t\trequestedLength, requestedSkeletonParts,\n\n\t\t// Using an easier to read variable.\n\t\tnormalizePatternType = dateExpandPatternNormalizePatternType;\n\n\trequestedSkeletonParts = skeletonWithoutFractionalSeconds.match( datePatternRe );\n\tbestMatchFormatParts = bestMatchFormat.match( datePatternRe );\n\n\tfor ( i = 0; i < bestMatchFormatParts.length; i++ ) {\n\t\tmatchedType = bestMatchFormatParts[ i ].charAt( 0 );\n\t\tmatchedLength = bestMatchFormatParts[ i ].length;\n\t\tfor ( j = 0; j < requestedSkeletonParts.length; j++ ) {\n\t\t\trequestedType = requestedSkeletonParts[ j ].charAt( 0 );\n\t\t\trequestedLength = requestedSkeletonParts[ j ].length;\n\t\t\tif ( normalizePatternType( matchedType ) === normalizePatternType( requestedType ) &&\n\t\t\t\tmatchedLength < requestedLength\n\t\t\t) {\n\t\t\t\tbestMatchFormatParts[ i ] = stringRepeat( matchedType, requestedLength );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn bestMatchFormatParts.join( \"\" );\n}\n\n// See: http://www.unicode.org/reports/tr35/tr35-dates.html#Matching_Skeletons\nvar dateExpandPatternAugmentFormat = function( requestedSkeleton, bestMatchFormat, decimalSeparator ) {\n\tvar countOfFractionalSeconds, fractionalSecondMatch, lastSecondIdx,\n\t\tskeletonWithoutFractionalSeconds;\n\n\tfractionalSecondMatch = requestedSkeleton.match( /S/g );\n\tcountOfFractionalSeconds = fractionalSecondMatch ? fractionalSecondMatch.length : 0;\n\tskeletonWithoutFractionalSeconds = requestedSkeleton.replace( /S/g, \"\" );\n\n\tbestMatchFormat = expandBestMatchFormat( skeletonWithoutFractionalSeconds, bestMatchFormat );\n\n\tlastSecondIdx = bestMatchFormat.lastIndexOf( \"s\" );\n\tif ( lastSecondIdx !== -1 && countOfFractionalSeconds !== 0 ) {\n\t\tbestMatchFormat =\n\t\t\tbestMatchFormat.slice( 0, lastSecondIdx + 1 ) +\n\t\t\tdecimalSeparator +\n\t\t\tstringRepeat( \"S\", countOfFractionalSeconds ) +\n\t\t\tbestMatchFormat.slice( lastSecondIdx + 1 );\n\t}\n\treturn bestMatchFormat;\n};\n\n\n\n\nvar dateExpandPatternCompareFormats = function( formatA, formatB ) {\n\tvar a, b, distance, lenA, lenB, typeA, typeB, i, j,\n\n\t\t// Using easier to read variables.\n\t\tnormalizePatternType = dateExpandPatternNormalizePatternType;\n\n\tif ( formatA === formatB ) {\n\t\treturn 0;\n\t}\n\n\tformatA = formatA.match( datePatternRe );\n\tformatB = formatB.match( datePatternRe );\n\n\tif ( formatA.length !== formatB.length ) {\n\t\treturn -1;\n\t}\n\n\tdistance = 1;\n\tfor ( i = 0; i < formatA.length; i++ ) {\n\t\ta = formatA[ i ].charAt( 0 );\n\t\ttypeA = normalizePatternType( a );\n\t\ttypeB = null;\n\t\tfor ( j = 0; j < formatB.length; j++ ) {\n\t\t\tb = formatB[ j ].charAt( 0 );\n\t\t\ttypeB = normalizePatternType( b );\n\t\t\tif ( typeA === typeB ) {\n\t\t\t\tbreak;\n\t\t\t} else {\n\t\t\t\ttypeB = null;\n\t\t\t}\n\t\t}\n\t\tif ( typeB === null ) {\n\t\t\treturn -1;\n\t\t}\n\t\tlenA = formatA[ i ].length;\n\t\tlenB = formatB[ j ].length;\n\t\tdistance = distance + Math.abs( lenA - lenB );\n\n\t\t// Most symbols have a small distance from each other, e.g., M ≅ L; E ≅ c; a ≅ b ≅ B;\n\t\t// H ≅ k ≅ h ≅ K; ...\n\t\tif ( a !== b ) {\n\t\t\tdistance += 1;\n\t\t}\n\n\t\t// Numeric (l<3) and text fields (l>=3) are given a larger distance from each other.\n\t\tif ( ( lenA < 3 && lenB >= 3 ) || ( lenA >= 3 && lenB < 3 ) ) {\n\t\t\tdistance += 20;\n\t\t}\n\t}\n\treturn distance;\n};\n\n\n\n\nvar dateExpandPatternGetBestMatchPattern = function( cldr, askedSkeleton ) {\n\tvar availableFormats, decimalSeparator, pattern, ratedFormats, skeleton,\n\t\tpath = \"dates/calendars/gregorian/dateTimeFormats/availableFormats\",\n\n\t\t// Using easier to read variables.\n\t\taugmentFormat = dateExpandPatternAugmentFormat,\n\t\tcompareFormats = dateExpandPatternCompareFormats;\n\n\tpattern = cldr.main([ path, askedSkeleton ]);\n\n\tif ( askedSkeleton && !pattern ) {\n\t\tavailableFormats = cldr.main([ path ]);\n\t\tratedFormats = [];\n\n\t\tfor ( skeleton in availableFormats ) {\n\t\t\tratedFormats.push({\n\t\t\t\tskeleton: skeleton,\n\t\t\t\tpattern: availableFormats[ skeleton ],\n\t\t\t\trate: compareFormats( askedSkeleton, skeleton )\n\t\t\t});\n\t\t}\n\n\t\tratedFormats = ratedFormats\n\t\t\t.filter( function( format ) {\n\t\t\t\treturn format.rate > -1;\n\t\t\t} )\n\t\t\t.sort( function( formatA, formatB ) {\n\t\t\t\treturn formatA.rate - formatB.rate;\n\t\t\t});\n\n\t\tif ( ratedFormats.length ) {\n\t\t\tdecimalSeparator = numberSymbol( \"decimal\", cldr );\n\t\t\tpattern = augmentFormat( askedSkeleton, ratedFormats[ 0 ].pattern, decimalSeparator );\n\t\t}\n\t}\n\n\treturn pattern;\n};\n\n\n\n\n/**\n * expandPattern( options, cldr )\n *\n * @options [Object] if String, it's considered a skeleton. Object accepts:\n * - skeleton: [String] lookup availableFormat;\n * - date: [String] ( \"full\" | \"long\" | \"medium\" | \"short\" );\n * - time: [String] ( \"full\" | \"long\" | \"medium\" | \"short\" );\n * - datetime: [String] ( \"full\" | \"long\" | \"medium\" | \"short\" );\n * - raw: [String] For more info see datetime/format.js.\n *\n * @cldr [Cldr instance].\n *\n * Return the corresponding pattern.\n * Eg for \"en\":\n * - \"GyMMMd\" returns \"MMM d, y G\";\n * - { skeleton: \"GyMMMd\" } returns \"MMM d, y G\";\n * - { date: \"full\" } returns \"EEEE, MMMM d, y\";\n * - { time: \"full\" } returns \"h:mm:ss a zzzz\";\n * - { datetime: \"full\" } returns \"EEEE, MMMM d, y 'at' h:mm:ss a zzzz\";\n * - { raw: \"dd/mm\" } returns \"dd/mm\";\n */\nvar dateExpandPattern = function( options, cldr ) {\n\tvar dateSkeleton, result, skeleton, timeSkeleton, type,\n\n\t\t// Using easier to read variables.\n\t\tgetBestMatchPattern = dateExpandPatternGetBestMatchPattern;\n\n\tfunction combineDateTime( type, datePattern, timePattern ) {\n\t\treturn formatMessage(\n\t\t\tcldr.main([\n\t\t\t\t\"dates/calendars/gregorian/dateTimeFormats\",\n\t\t\t\ttype\n\t\t\t]),\n\t\t\t[ timePattern, datePattern ]\n\t\t);\n\t}\n\n\tswitch ( true ) {\n\t\tcase \"skeleton\" in options:\n\t\t\tskeleton = options.skeleton;\n\n\t\t\t// Preferred hour (j).\n\t\t\tskeleton = skeleton.replace( /j/g, function() {\n\t\t\t\treturn cldr.supplemental.timeData.preferred();\n\t\t\t});\n\n\t\t\tvalidateSkeleton( skeleton );\n\n\t\t\t// Try direct map (note that getBestMatchPattern handles it).\n\t\t\t// ... or, try to \"best match\" the whole skeleton.\n\t\t\tresult = getBestMatchPattern(\n\t\t\t\tcldr,\n\t\t\t\tskeleton\n\t\t\t);\n\t\t\tif ( result ) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t// ... or, try to \"best match\" the date and time parts individually.\n\t\t\ttimeSkeleton = skeleton.split( /[^hHKkmsSAzZOvVXx]/ ).slice( -1 )[ 0 ];\n\t\t\tdateSkeleton = skeleton.split( /[^GyYuUrQqMLlwWdDFgEec]/ )[ 0 ];\n\t\t\tdateSkeleton = getBestMatchPattern(\n\t\t\t\tcldr,\n\t\t\t\tdateSkeleton\n\t\t\t);\n\t\t\ttimeSkeleton = getBestMatchPattern(\n\t\t\t\tcldr,\n\t\t\t\ttimeSkeleton\n\t\t\t);\n\n\t\t\tif ( /(MMMM|LLLL).*[Ec]/.test( dateSkeleton ) ) {\n\t\t\t\ttype = \"full\";\n\t\t\t} else if ( /MMMM|LLLL/.test( dateSkeleton ) ) {\n\t\t\t\ttype = \"long\";\n\t\t\t} else if ( /MMM|LLL/.test( dateSkeleton ) ) {\n\t\t\t\ttype = \"medium\";\n\t\t\t} else {\n\t\t\t\ttype = \"short\";\n\t\t\t}\n\n\t\t\tif ( dateSkeleton && timeSkeleton ) {\n\t\t\t\tresult = combineDateTime( type, dateSkeleton, timeSkeleton );\n\t\t\t} else {\n\t\t\t\tresult = dateSkeleton || timeSkeleton;\n\t\t\t}\n\n\t\t\tbreak;\n\n\t\tcase \"date\" in options:\n\t\tcase \"time\" in options:\n\t\t\tresult = cldr.main([\n\t\t\t\t\"dates/calendars/gregorian\",\n\t\t\t\t\"date\" in options ? \"dateFormats\" : \"timeFormats\",\n\t\t\t\t( options.date || options.time )\n\t\t\t]);\n\t\t\tbreak;\n\n\t\tcase \"datetime\" in options:\n\t\t\tresult = combineDateTime( options.datetime,\n\t\t\t\tcldr.main([ \"dates/calendars/gregorian/dateFormats\", options.datetime ]),\n\t\t\t\tcldr.main([ \"dates/calendars/gregorian/timeFormats\", options.datetime ])\n\t\t\t);\n\t\t\tbreak;\n\n\t\tcase \"raw\" in options:\n\t\t\tresult = options.raw;\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tthrow createErrorInvalidParameterValue({\n\t\t\t\tname: \"options\",\n\t\t\t\tvalue: options\n\t\t\t});\n\t}\n\n\treturn result;\n};\n\n\n\n\nvar dateWeekDays = [ \"sun\", \"mon\", \"tue\", \"wed\", \"thu\", \"fri\", \"sat\" ];\n\n\n\n\n/**\n * firstDayOfWeek\n */\nvar dateFirstDayOfWeek = function( cldr ) {\n\treturn dateWeekDays.indexOf( cldr.supplemental.weekData.firstDay() );\n};\n\n\n\n\n/**\n * getTimeZoneName( length, type )\n */\nvar dateGetTimeZoneName = function( length, type, timeZone, cldr ) {\n\tvar metaZone, result;\n\n\tif ( !timeZone ) {\n\t\treturn;\n\t}\n\n\tresult = cldr.main([\n\t\t\"dates/timeZoneNames/zone\",\n\t\ttimeZone,\n\t\tlength < 4 ? \"short\" : \"long\",\n\t\ttype\n\t]);\n\n\tif ( result ) {\n\t\treturn result;\n\t}\n\n\t// The latest metazone data of the metazone array.\n\t// TODO expand to support the historic metazones based on the given date.\n\tmetaZone = cldr.supplemental([\n\t\t\"metaZones/metazoneInfo/timezone\", timeZone, 0,\n\t\t\"usesMetazone/_mzone\"\n\t]);\n\n\treturn cldr.main([\n\t\t\"dates/timeZoneNames/metazone\",\n\t\tmetaZone,\n\t\tlength < 4 ? \"short\" : \"long\",\n\t\ttype\n\t]);\n};\n\n\n\n\n/**\n * timezoneHourFormatShortH( hourFormat )\n *\n * @hourFormat [String]\n *\n * Unofficial deduction of the short hourFormat given time zone `hourFormat` element.\n * Official spec is pending resolution: http://unicode.org/cldr/trac/ticket/8293\n *\n * Example:\n * - \"+HH.mm;-HH.mm\" => \"+H;-H\"\n * - \"+HH:mm;-HH:mm\" => \"+H;-H\"\n * - \"+HH:mm;−HH:mm\" => \"+H;−H\" (Note MINUS SIGN \\u2212)\n * - \"+HHmm;-HHmm\" => \"+H:-H\"\n */\nvar dateTimezoneHourFormatH = function( hourFormat ) {\n\treturn hourFormat\n\t\t.split( \";\" )\n\t\t.map(function( format ) {\n\t\t\treturn format.slice( 0, format.indexOf( \"H\" ) + 1 );\n\t\t})\n\t\t.join( \";\" );\n};\n\n\n\n\n/**\n * timezoneHourFormatLongHm( hourFormat )\n *\n * @hourFormat [String]\n *\n * Unofficial deduction of the short hourFormat given time zone `hourFormat` element.\n * Official spec is pending resolution: http://unicode.org/cldr/trac/ticket/8293\n *\n * Example (hFormat === \"H\"): (used for short Hm)\n * - \"+HH.mm;-HH.mm\" => \"+H.mm;-H.mm\"\n * - \"+HH:mm;-HH:mm\" => \"+H:mm;-H:mm\"\n * - \"+HH:mm;−HH:mm\" => \"+H:mm;−H:mm\" (Note MINUS SIGN \\u2212)\n * - \"+HHmm;-HHmm\" => \"+Hmm:-Hmm\"\n *\n * Example (hFormat === \"HH\": (used for long Hm)\n * - \"+HH.mm;-HH.mm\" => \"+HH.mm;-HH.mm\"\n * - \"+HH:mm;-HH:mm\" => \"+HH:mm;-HH:mm\"\n * - \"+H:mm;-H:mm\" => \"+HH:mm;-HH:mm\"\n * - \"+HH:mm;−HH:mm\" => \"+HH:mm;−HH:mm\" (Note MINUS SIGN \\u2212)\n * - \"+HHmm;-HHmm\" => \"+HHmm:-HHmm\"\n */\nvar dateTimezoneHourFormatHm = function( hourFormat, hFormat ) {\n\treturn hourFormat\n\t\t.split( \";\" )\n\t\t.map(function( format ) {\n\t\t\tvar parts = format.split( /H+/ );\n\t\t\tparts.splice( 1, 0, hFormat );\n\t\t\treturn parts.join( \"\" );\n\t\t})\n\t\t.join( \";\" );\n};\n\n\n\n\nvar runtimeCacheDataBind = function( key, data ) {\n\tvar fn = function() {\n\t\treturn data;\n\t};\n\tfn.dataCacheKey = key;\n\treturn fn;\n};\n\n\n\n\n/**\n * properties( pattern, cldr )\n *\n * @pattern [String] raw pattern.\n * ref: http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns\n *\n * @cldr [Cldr instance].\n *\n * Return the properties given the pattern and cldr.\n *\n * TODO Support other calendar types.\n */\nvar dateFormatProperties = function( pattern, cldr, timeZone ) {\n\tvar properties = {\n\t\t\tnumberFormatters: {},\n\t\t\tpattern: pattern,\n\t\t\ttimeSeparator: numberSymbol( \"timeSeparator\", cldr )\n\t\t},\n\t\twidths = [ \"abbreviated\", \"wide\", \"narrow\" ];\n\n\tfunction setNumberFormatterPattern( pad ) {\n\t\tproperties.numberFormatters[ pad ] = stringPad( \"\", pad );\n\t}\n\n\tif ( timeZone ) {\n\t\tproperties.timeZoneData = runtimeCacheDataBind( \"iana/\" + timeZone, {\n\t\t\toffsets: cldr.get([ \"globalize-iana/zoneData\", timeZone, \"offsets\" ]),\n\t\t\tuntils: cldr.get([ \"globalize-iana/zoneData\", timeZone, \"untils\" ]),\n\t\t\tisdsts: cldr.get([ \"globalize-iana/zoneData\", timeZone, \"isdsts\" ])\n\t\t});\n\t}\n\n\tpattern.replace( datePatternRe, function( current ) {\n\t\tvar aux, chr, daylightTzName, formatNumber, genericTzName, length, standardTzName;\n\n\t\tchr = current.charAt( 0 );\n\t\tlength = current.length;\n\n\t\tif ( chr === \"j\" ) {\n\n\t\t\t// Locale preferred hHKk.\n\t\t\t// http://www.unicode.org/reports/tr35/tr35-dates.html#Time_Data\n\t\t\tproperties.preferredTime = chr = cldr.supplemental.timeData.preferred();\n\t\t}\n\n\t\t// ZZZZ: same as \"OOOO\".\n\t\tif ( chr === \"Z\" && length === 4 ) {\n\t\t\tchr = \"O\";\n\t\t\tlength = 4;\n\t\t}\n\n\t\t// z...zzz: \"{shortRegion}\", eg. \"PST\" or \"PDT\".\n\t\t// zzzz: \"{regionName} {Standard Time}\" or \"{regionName} {Daylight Time}\",\n\t\t// e.g., \"Pacific Standard Time\" or \"Pacific Daylight Time\".\n\t\t// http://unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns\n\t\tif ( chr === \"z\" ) {\n\t\t\tstandardTzName = dateGetTimeZoneName( length, \"standard\", timeZone, cldr );\n\t\t\tdaylightTzName = dateGetTimeZoneName( length, \"daylight\", timeZone, cldr );\n\t\t\tif ( standardTzName ) {\n\t\t\t\tproperties.standardTzName = standardTzName;\n\t\t\t}\n\t\t\tif ( daylightTzName ) {\n\t\t\t\tproperties.daylightTzName = daylightTzName;\n\t\t\t}\n\n\t\t\t// Fall through the \"O\" format in case one name is missing.\n\t\t\tif ( !standardTzName || !daylightTzName ) {\n\t\t\t\tchr = \"O\";\n\t\t\t\tif ( length < 4 ) {\n\t\t\t\t\tlength = 1;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// v...vvv: \"{shortRegion}\", eg. \"PT\".\n\t\t// vvvv: \"{regionName} {Time}\" or \"{regionName} {Time}\",\n\t\t// e.g., \"Pacific Time\"\n\t\t// http://unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns\n\t\tif ( chr === \"v\" ) {\n\t\t\tgenericTzName = dateGetTimeZoneName( length, \"generic\", timeZone, cldr );\n\n\t\t\t// Fall back to \"V\" format.\n\t\t\tif ( !genericTzName ) {\n\t\t\t\tchr = \"V\";\n\t\t\t\tlength = 4;\n\t\t\t}\n\t\t}\n\n\t\tswitch ( chr ) {\n\n\t\t\t// Era\n\t\t\tcase \"G\":\n\t\t\t\tproperties.eras = cldr.main([\n\t\t\t\t\t\"dates/calendars/gregorian/eras\",\n\t\t\t\t\tlength <= 3 ? \"eraAbbr\" : ( length === 4 ? \"eraNames\" : \"eraNarrow\" )\n\t\t\t\t]);\n\t\t\t\tbreak;\n\n\t\t\t// Year\n\t\t\tcase \"y\":\n\n\t\t\t\t// Plain year.\n\t\t\t\tformatNumber = true;\n\t\t\t\tbreak;\n\n\t\t\tcase \"Y\":\n\n\t\t\t\t// Year in \"Week of Year\"\n\t\t\t\tproperties.firstDay = dateFirstDayOfWeek( cldr );\n\t\t\t\tproperties.minDays = cldr.supplemental.weekData.minDays();\n\t\t\t\tformatNumber = true;\n\t\t\t\tbreak;\n\n\t\t\tcase \"u\": // Extended year. Need to be implemented.\n\t\t\tcase \"U\": // Cyclic year name. Need to be implemented.\n\t\t\t\tthrow createErrorUnsupportedFeature({\n\t\t\t\t\tfeature: \"year pattern `\" + chr + \"`\"\n\t\t\t\t});\n\n\t\t\t// Quarter\n\t\t\tcase \"Q\":\n\t\t\tcase \"q\":\n\t\t\t\tif ( length > 2 ) {\n\t\t\t\t\tif ( !properties.quarters ) {\n\t\t\t\t\t\tproperties.quarters = {};\n\t\t\t\t\t}\n\t\t\t\t\tif ( !properties.quarters[ chr ] ) {\n\t\t\t\t\t\tproperties.quarters[ chr ] = {};\n\t\t\t\t\t}\n\t\t\t\t\tproperties.quarters[ chr ][ length ] = cldr.main([\n\t\t\t\t\t\t\"dates/calendars/gregorian/quarters\",\n\t\t\t\t\t\tchr === \"Q\" ? \"format\" : \"stand-alone\",\n\t\t\t\t\t\twidths[ length - 3 ]\n\t\t\t\t\t]);\n\t\t\t\t} else {\n\t\t\t\t\tformatNumber = true;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\t// Month\n\t\t\tcase \"M\":\n\t\t\tcase \"L\":\n\t\t\t\tif ( length > 2 ) {\n\t\t\t\t\tif ( !properties.months ) {\n\t\t\t\t\t\tproperties.months = {};\n\t\t\t\t\t}\n\t\t\t\t\tif ( !properties.months[ chr ] ) {\n\t\t\t\t\t\tproperties.months[ chr ] = {};\n\t\t\t\t\t}\n\t\t\t\t\tproperties.months[ chr ][ length ] = cldr.main([\n\t\t\t\t\t\t\"dates/calendars/gregorian/months\",\n\t\t\t\t\t\tchr === \"M\" ? \"format\" : \"stand-alone\",\n\t\t\t\t\t\twidths[ length - 3 ]\n\t\t\t\t\t]);\n\t\t\t\t} else {\n\t\t\t\t\tformatNumber = true;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\t// Week - Week of Year (w) or Week of Month (W).\n\t\t\tcase \"w\":\n\t\t\tcase \"W\":\n\t\t\t\tproperties.firstDay = dateFirstDayOfWeek( cldr );\n\t\t\t\tproperties.minDays = cldr.supplemental.weekData.minDays();\n\t\t\t\tformatNumber = true;\n\t\t\t\tbreak;\n\n\t\t\t// Day\n\t\t\tcase \"d\":\n\t\t\tcase \"D\":\n\t\t\tcase \"F\":\n\t\t\t\tformatNumber = true;\n\t\t\t\tbreak;\n\n\t\t\tcase \"g\":\n\n\t\t\t\t// Modified Julian day. Need to be implemented.\n\t\t\t\tthrow createErrorUnsupportedFeature({\n\t\t\t\t\tfeature: \"Julian day pattern `g`\"\n\t\t\t\t});\n\n\t\t\t// Week day\n\t\t\tcase \"e\":\n\t\t\tcase \"c\":\n\t\t\t\tif ( length <= 2 ) {\n\t\t\t\t\tproperties.firstDay = dateFirstDayOfWeek( cldr );\n\t\t\t\t\tformatNumber = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t/* falls through */\n\t\t\tcase \"E\":\n\t\t\t\tif ( !properties.days ) {\n\t\t\t\t\tproperties.days = {};\n\t\t\t\t}\n\t\t\t\tif ( !properties.days[ chr ] ) {\n\t\t\t\t\tproperties.days[ chr ] = {};\n\t\t\t\t}\n\t\t\t\tif ( length === 6 ) {\n\n\t\t\t\t\t// If short day names are not explicitly specified, abbreviated day names are\n\t\t\t\t\t// used instead.\n\t\t\t\t\t// http://www.unicode.org/reports/tr35/tr35-dates.html#months_days_quarters_eras\n\t\t\t\t\t// http://unicode.org/cldr/trac/ticket/6790\n\t\t\t\t\tproperties.days[ chr ][ length ] = cldr.main([\n\t\t\t\t\t\t\t\"dates/calendars/gregorian/days\",\n\t\t\t\t\t\t\tchr === \"c\" ? \"stand-alone\" : \"format\",\n\t\t\t\t\t\t\t\"short\"\n\t\t\t\t\t\t]) || cldr.main([\n\t\t\t\t\t\t\t\"dates/calendars/gregorian/days\",\n\t\t\t\t\t\t\tchr === \"c\" ? \"stand-alone\" : \"format\",\n\t\t\t\t\t\t\t\"abbreviated\"\n\t\t\t\t\t\t]);\n\t\t\t\t} else {\n\t\t\t\t\tproperties.days[ chr ][ length ] = cldr.main([\n\t\t\t\t\t\t\"dates/calendars/gregorian/days\",\n\t\t\t\t\t\tchr === \"c\" ? \"stand-alone\" : \"format\",\n\t\t\t\t\t\twidths[ length < 3 ? 0 : length - 3 ]\n\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\t// Period (AM or PM)\n\t\t\tcase \"a\":\n\t\t\t\tproperties.dayPeriods = {\n\t\t\t\t\tam: cldr.main(\n\t\t\t\t\t\t\"dates/calendars/gregorian/dayPeriods/format/wide/am\"\n\t\t\t\t\t),\n\t\t\t\t\tpm: cldr.main(\n\t\t\t\t\t\t\"dates/calendars/gregorian/dayPeriods/format/wide/pm\"\n\t\t\t\t\t)\n\t\t\t\t};\n\t\t\t\tbreak;\n\n\t\t\t// Hour\n\t\t\tcase \"h\": // 1-12\n\t\t\tcase \"H\": // 0-23\n\t\t\tcase \"K\": // 0-11\n\t\t\tcase \"k\": // 1-24\n\n\t\t\t// Minute\n\t\t\tcase \"m\":\n\n\t\t\t// Second\n\t\t\tcase \"s\":\n\t\t\tcase \"S\":\n\t\t\tcase \"A\":\n\t\t\t\tformatNumber = true;\n\t\t\t\tbreak;\n\n\t\t\t// Zone\n\t\t\tcase \"v\":\n\t\t\t\tif ( length !== 1 && length !== 4 ) {\n\t\t\t\t\tthrow createErrorUnsupportedFeature({\n\t\t\t\t\t\tfeature: \"timezone pattern `\" + pattern + \"`\"\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tproperties.genericTzName = genericTzName;\n\t\t\t\tbreak;\n\n\t\t\tcase \"V\":\n\n\t\t\t\tif ( length === 1 ) {\n\t\t\t\t\tthrow createErrorUnsupportedFeature({\n\t\t\t\t\t\tfeature: \"timezone pattern `\" + pattern + \"`\"\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif ( timeZone ) {\n\t\t\t\t\tif ( length === 2 ) {\n\t\t\t\t\t\tproperties.timeZoneName = timeZone;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar timeZoneName,\n\t\t\t\t\t\texemplarCity = cldr.main([\n\t\t\t\t\t\t\t\"dates/timeZoneNames/zone\", timeZone, \"exemplarCity\"\n\t\t\t\t\t\t]);\n\n\t\t\t\t\tif ( length === 3 ) {\n\t\t\t\t\t\tif ( !exemplarCity ) {\n\t\t\t\t\t\t\texemplarCity = cldr.main([\n\t\t\t\t\t\t\t\t\"dates/timeZoneNames/zone/Etc/Unknown/exemplarCity\"\n\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttimeZoneName = exemplarCity;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( exemplarCity && length === 4 ) {\n\t\t\t\t\t\ttimeZoneName = formatMessage(\n\t\t\t\t\t\t\tcldr.main(\n\t\t\t\t\t\t\t\t\"dates/timeZoneNames/regionFormat\"\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t[ exemplarCity ]\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( timeZoneName ) {\n\t\t\t\t\t\tproperties.timeZoneName = timeZoneName;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( current === \"v\" ) {\n\t\t\t\t\tlength = 1;\n\t\t\t\t}\n\n\t\t\t/* falls through */\n\t\t\tcase \"O\":\n\n\t\t\t\t// O: \"{gmtFormat}+H;{gmtFormat}-H\" or \"{gmtZeroFormat}\", eg. \"GMT-8\" or \"GMT\".\n\t\t\t\t// OOOO: \"{gmtFormat}{hourFormat}\" or \"{gmtZeroFormat}\", eg. \"GMT-08:00\" or \"GMT\".\n\t\t\t\tproperties.gmtFormat = cldr.main( \"dates/timeZoneNames/gmtFormat\" );\n\t\t\t\tproperties.gmtZeroFormat = cldr.main( \"dates/timeZoneNames/gmtZeroFormat\" );\n\n\t\t\t\t// Unofficial deduction of the hourFormat variations.\n\t\t\t\t// Official spec is pending resolution: http://unicode.org/cldr/trac/ticket/8293\n\t\t\t\taux = cldr.main( \"dates/timeZoneNames/hourFormat\" );\n\t\t\t\tproperties.hourFormat = length < 4 ?\n\t\t\t\t\t[ dateTimezoneHourFormatH( aux ), dateTimezoneHourFormatHm( aux, \"H\" ) ] :\n\t\t\t\t\tdateTimezoneHourFormatHm( aux, \"HH\" );\n\n\t\t\t/* falls through */\n\t\t\tcase \"Z\":\n\t\t\tcase \"X\":\n\t\t\tcase \"x\":\n\t\t\t\tsetNumberFormatterPattern( 1 );\n\t\t\t\tsetNumberFormatterPattern( 2 );\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif ( formatNumber ) {\n\t\t\tsetNumberFormatterPattern( length );\n\t\t}\n\t});\n\n\treturn properties;\n};\n\n\n\n\nvar dateFormatterFn = function( dateToPartsFormatter ) {\n\treturn function dateFormatter( value ) {\n\t\treturn partsJoin( dateToPartsFormatter( value ));\n\t};\n};\n\n\n\n\n/**\n * parseProperties( cldr )\n *\n * @cldr [Cldr instance].\n *\n * @timeZone [String] FIXME.\n *\n * Return parser properties.\n */\nvar dateParseProperties = function( cldr, timeZone ) {\n\tvar properties = {\n\t\tpreferredTimeData: cldr.supplemental.timeData.preferred()\n\t};\n\n\tif ( timeZone ) {\n\t\tproperties.timeZoneData = runtimeCacheDataBind( \"iana/\" + timeZone, {\n\t\t\toffsets: cldr.get([ \"globalize-iana/zoneData\", timeZone, \"offsets\" ]),\n\t\t\tuntils: cldr.get([ \"globalize-iana/zoneData\", timeZone, \"untils\" ]),\n\t\t\tisdsts: cldr.get([ \"globalize-iana/zoneData\", timeZone, \"isdsts\" ])\n\t\t});\n\t}\n\n\treturn properties;\n};\n\n\nvar ZonedDateTime = (function() {\nfunction definePrivateProperty(object, property, value) {\n Object.defineProperty(object, property, {\n value: value\n });\n}\n\nfunction getUntilsIndex(original, untils) {\n var index = 0;\n var originalTime = original.getTime();\n\n // TODO Should we do binary search for improved performance?\n while (index < untils.length - 1 && originalTime >= untils[index]) {\n index++;\n }\n return index;\n}\n\nfunction setWrap(fn) {\n var offset1 = this.getTimezoneOffset();\n var ret = fn();\n this.original.setTime(new Date(this.getTime()));\n var offset2 = this.getTimezoneOffset();\n if (offset2 - offset1) {\n this.original.setMinutes(this.original.getMinutes() + offset2 - offset1);\n }\n return ret;\n}\n\nvar ZonedDateTime = function(date, timeZoneData) {\n definePrivateProperty(this, \"original\", new Date(date.getTime()));\n definePrivateProperty(this, \"local\", new Date(date.getTime()));\n definePrivateProperty(this, \"timeZoneData\", timeZoneData);\n definePrivateProperty(this, \"setWrap\", setWrap);\n if (!(timeZoneData.untils && timeZoneData.offsets && timeZoneData.isdsts)) {\n throw new Error(\"Invalid IANA data\");\n }\n this.setTime(this.local.getTime() - this.getTimezoneOffset() * 60 * 1000);\n};\n\nZonedDateTime.prototype.clone = function() {\n return new ZonedDateTime(this.original, this.timeZoneData);\n};\n\n// Date field getters.\n[\"getFullYear\", \"getMonth\", \"getDate\", \"getDay\", \"getHours\", \"getMinutes\",\n\"getSeconds\", \"getMilliseconds\"].forEach(function(method) {\n // Corresponding UTC method, e.g., \"getUTCFullYear\" if method === \"getFullYear\".\n var utcMethod = \"getUTC\" + method.substr(3);\n ZonedDateTime.prototype[method] = function() {\n return this.local[utcMethod]();\n };\n});\n\n// Note: Define .valueOf = .getTime for arithmetic operations like date1 - date2.\nZonedDateTime.prototype.valueOf =\nZonedDateTime.prototype.getTime = function() {\n return this.local.getTime() + this.getTimezoneOffset() * 60 * 1000;\n};\n\nZonedDateTime.prototype.getTimezoneOffset = function() {\n var index = getUntilsIndex(this.original, this.timeZoneData.untils);\n return this.timeZoneData.offsets[index];\n};\n\n// Date field setters.\n[\"setFullYear\", \"setMonth\", \"setDate\", \"setHours\", \"setMinutes\", \"setSeconds\", \"setMilliseconds\"].forEach(function(method) {\n // Corresponding UTC method, e.g., \"setUTCFullYear\" if method === \"setFullYear\".\n var utcMethod = \"setUTC\" + method.substr(3);\n ZonedDateTime.prototype[method] = function(value) {\n var local = this.local;\n // Note setWrap is needed for seconds and milliseconds just because\n // abs(value) could be >= a minute.\n return this.setWrap(function() {\n return local[utcMethod](value);\n });\n };\n});\n\nZonedDateTime.prototype.setTime = function(time) {\n return this.local.setTime(time);\n};\n\nZonedDateTime.prototype.isDST = function() {\n var index = getUntilsIndex(this.original, this.timeZoneData.untils);\n return Boolean(this.timeZoneData.isdsts[index]);\n};\n\nZonedDateTime.prototype.inspect = function() {\n var index = getUntilsIndex(this.original, this.timeZoneData.untils);\n var abbrs = this.timeZoneData.abbrs;\n return this.local.toISOString().replace(/Z$/, \"\") + \" \" +\n (abbrs && abbrs[index] + \" \" || (this.getTimezoneOffset() * -1) + \" \") +\n (this.isDST() ? \"(daylight savings)\" : \"\");\n};\n\nZonedDateTime.prototype.toDate = function() {\n return new Date(this.getTime());\n};\n\n// Type cast getters.\n[\"toISOString\", \"toJSON\", \"toUTCString\"].forEach(function(method) {\n ZonedDateTime.prototype[method] = function() {\n return this.toDate()[method]();\n };\n});\n\nreturn ZonedDateTime;\n}());\n\n\n/**\n * isLeapYear( year )\n *\n * @year [Number]\n *\n * Returns an indication whether the specified year is a leap year.\n */\nvar dateIsLeapYear = function( year ) {\n\treturn new Date( year, 1, 29 ).getMonth() === 1;\n};\n\n\n\n\n/**\n * lastDayOfMonth( date )\n *\n * @date [Date]\n *\n * Return the last day of the given date's month\n */\nvar dateLastDayOfMonth = function( date ) {\n\treturn new Date( date.getFullYear(), date.getMonth() + 1, 0 ).getDate();\n};\n\n\n\n\n/**\n * startOf changes the input to the beginning of the given unit.\n *\n * For example, starting at the start of a day, resets hours, minutes\n * seconds and milliseconds to 0. Starting at the month does the same, but\n * also sets the date to 1.\n *\n * Returns the modified date\n */\nvar dateStartOf = function( date, unit ) {\n\tdate = date instanceof ZonedDateTime ? date.clone() : new Date( date.getTime() );\n\tswitch ( unit ) {\n\t\tcase \"year\":\n\t\t\tdate.setMonth( 0 );\n\t\t/* falls through */\n\t\tcase \"month\":\n\t\t\tdate.setDate( 1 );\n\t\t/* falls through */\n\t\tcase \"day\":\n\t\t\tdate.setHours( 0 );\n\t\t/* falls through */\n\t\tcase \"hour\":\n\t\t\tdate.setMinutes( 0 );\n\t\t/* falls through */\n\t\tcase \"minute\":\n\t\t\tdate.setSeconds( 0 );\n\t\t/* falls through */\n\t\tcase \"second\":\n\t\t\tdate.setMilliseconds( 0 );\n\t}\n\treturn date;\n};\n\n\n\n\n/**\n * Differently from native date.setDate(), this function returns a date whose\n * day remains inside the month boundaries. For example:\n *\n * setDate( FebDate, 31 ): a \"Feb 28\" date.\n * setDate( SepDate, 31 ): a \"Sep 30\" date.\n */\nvar dateSetDate = function( date, day ) {\n\tvar lastDay = new Date( date.getFullYear(), date.getMonth() + 1, 0 ).getDate();\n\n\tdate.setDate( day < 1 ? 1 : day < lastDay ? day : lastDay );\n};\n\n\n\n\n/**\n * Differently from native date.setMonth(), this function adjusts date if\n * needed, so final month is always the one set.\n *\n * setMonth( Jan31Date, 1 ): a \"Feb 28\" date.\n * setDate( Jan31Date, 8 ): a \"Sep 30\" date.\n */\nvar dateSetMonth = function( date, month ) {\n\tvar originalDate = date.getDate();\n\n\tdate.setDate( 1 );\n\tdate.setMonth( month );\n\tdateSetDate( date, originalDate );\n};\n\n\n\n\nvar outOfRange = function( value, low, high ) {\n\treturn value < low || value > high;\n};\n\n\n\n\n/**\n * parse( value, tokens, properties )\n *\n * @value [String] string date.\n *\n * @tokens [Object] tokens returned by date/tokenizer.\n *\n * @properties [Object] output returned by date/tokenizer-properties.\n *\n * ref: http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns\n */\nvar dateParse = function( _value, tokens, properties ) {\n\tvar amPm, day, daysOfYear, month, era, hour, hour12, timezoneOffset, valid,\n\t\tYEAR = 0,\n\t\tMONTH = 1,\n\t\tDAY = 2,\n\t\tHOUR = 3,\n\t\tMINUTE = 4,\n\t\tSECOND = 5,\n\t\tMILLISECONDS = 6,\n\t\tdate = new Date(),\n\t\ttruncateAt = [],\n\t\tunits = [ \"year\", \"month\", \"day\", \"hour\", \"minute\", \"second\", \"milliseconds\" ];\n\n\t// Create globalize date with given timezone data.\n\tif ( properties.timeZoneData ) {\n\t\tdate = new ZonedDateTime( date, properties.timeZoneData() );\n\t}\n\n\tif ( !tokens.length ) {\n\t\treturn null;\n\t}\n\n\tvalid = tokens.every(function( token ) {\n\t\tvar century, chr, value, length;\n\n\t\tif ( token.type === \"literal\" ) {\n\n\t\t\t// continue\n\t\t\treturn true;\n\t\t}\n\n\t\tchr = token.type.charAt( 0 );\n\t\tlength = token.type.length;\n\n\t\tif ( chr === \"j\" ) {\n\n\t\t\t// Locale preferred hHKk.\n\t\t\t// http://www.unicode.org/reports/tr35/tr35-dates.html#Time_Data\n\t\t\tchr = properties.preferredTimeData;\n\t\t}\n\n\t\tswitch ( chr ) {\n\n\t\t\t// Era\n\t\t\tcase \"G\":\n\t\t\t\ttruncateAt.push( YEAR );\n\t\t\t\tera = +token.value;\n\t\t\t\tbreak;\n\n\t\t\t// Year\n\t\t\tcase \"y\":\n\t\t\t\tvalue = token.value;\n\t\t\t\tif ( length === 2 ) {\n\t\t\t\t\tif ( outOfRange( value, 0, 99 ) ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\t// mimic dojo/date/locale: choose century to apply, according to a sliding\n\t\t\t\t\t// window of 80 years before and 20 years after present year.\n\t\t\t\t\tcentury = Math.floor( date.getFullYear() / 100 ) * 100;\n\t\t\t\t\tvalue += century;\n\t\t\t\t\tif ( value > date.getFullYear() + 20 ) {\n\t\t\t\t\t\tvalue -= 100;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tdate.setFullYear( value );\n\t\t\t\ttruncateAt.push( YEAR );\n\t\t\t\tbreak;\n\n\t\t\tcase \"Y\": // Year in \"Week of Year\"\n\t\t\t\tthrow createErrorUnsupportedFeature({\n\t\t\t\t\tfeature: \"year pattern `\" + chr + \"`\"\n\t\t\t\t});\n\n\t\t\t// Quarter (skip)\n\t\t\tcase \"Q\":\n\t\t\tcase \"q\":\n\t\t\t\tbreak;\n\n\t\t\t// Month\n\t\t\tcase \"M\":\n\t\t\tcase \"L\":\n\t\t\t\tif ( length <= 2 ) {\n\t\t\t\t\tvalue = token.value;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = +token.value;\n\t\t\t\t}\n\t\t\t\tif ( outOfRange( value, 1, 12 ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t// Setting the month later so that we have the correct year and can determine\n\t\t\t\t// the correct last day of February in case of leap year.\n\t\t\t\tmonth = value;\n\t\t\t\ttruncateAt.push( MONTH );\n\t\t\t\tbreak;\n\n\t\t\t// Week (skip)\n\t\t\tcase \"w\": // Week of Year.\n\t\t\tcase \"W\": // Week of Month.\n\t\t\t\tbreak;\n\n\t\t\t// Day\n\t\t\tcase \"d\":\n\t\t\t\tday = token.value;\n\t\t\t\ttruncateAt.push( DAY );\n\t\t\t\tbreak;\n\n\t\t\tcase \"D\":\n\t\t\t\tdaysOfYear = token.value;\n\t\t\t\ttruncateAt.push( DAY );\n\t\t\t\tbreak;\n\n\t\t\tcase \"F\":\n\n\t\t\t\t// Day of Week in month. eg. 2nd Wed in July.\n\t\t\t\t// Skip\n\t\t\t\tbreak;\n\n\t\t\t// Week day\n\t\t\tcase \"e\":\n\t\t\tcase \"c\":\n\t\t\tcase \"E\":\n\n\t\t\t\t// Skip.\n\t\t\t\t// value = arrayIndexOf( dateWeekDays, token.value );\n\t\t\t\tbreak;\n\n\t\t\t// Period (AM or PM)\n\t\t\tcase \"a\":\n\t\t\t\tamPm = token.value;\n\t\t\t\tbreak;\n\n\t\t\t// Hour\n\t\t\tcase \"h\": // 1-12\n\t\t\t\tvalue = token.value;\n\t\t\t\tif ( outOfRange( value, 1, 12 ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\thour = hour12 = true;\n\t\t\t\tdate.setHours( value === 12 ? 0 : value );\n\t\t\t\ttruncateAt.push( HOUR );\n\t\t\t\tbreak;\n\n\t\t\tcase \"K\": // 0-11\n\t\t\t\tvalue = token.value;\n\t\t\t\tif ( outOfRange( value, 0, 11 ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\thour = hour12 = true;\n\t\t\t\tdate.setHours( value );\n\t\t\t\ttruncateAt.push( HOUR );\n\t\t\t\tbreak;\n\n\t\t\tcase \"k\": // 1-24\n\t\t\t\tvalue = token.value;\n\t\t\t\tif ( outOfRange( value, 1, 24 ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\thour = true;\n\t\t\t\tdate.setHours( value === 24 ? 0 : value );\n\t\t\t\ttruncateAt.push( HOUR );\n\t\t\t\tbreak;\n\n\t\t\tcase \"H\": // 0-23\n\t\t\t\tvalue = token.value;\n\t\t\t\tif ( outOfRange( value, 0, 23 ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\thour = true;\n\t\t\t\tdate.setHours( value );\n\t\t\t\ttruncateAt.push( HOUR );\n\t\t\t\tbreak;\n\n\t\t\t// Minute\n\t\t\tcase \"m\":\n\t\t\t\tvalue = token.value;\n\t\t\t\tif ( outOfRange( value, 0, 59 ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tdate.setMinutes( value );\n\t\t\t\ttruncateAt.push( MINUTE );\n\t\t\t\tbreak;\n\n\t\t\t// Second\n\t\t\tcase \"s\":\n\t\t\t\tvalue = token.value;\n\t\t\t\tif ( outOfRange( value, 0, 59 ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tdate.setSeconds( value );\n\t\t\t\ttruncateAt.push( SECOND );\n\t\t\t\tbreak;\n\n\t\t\tcase \"A\":\n\t\t\t\tdate.setHours( 0 );\n\t\t\t\tdate.setMinutes( 0 );\n\t\t\t\tdate.setSeconds( 0 );\n\n\t\t\t/* falls through */\n\t\t\tcase \"S\":\n\t\t\t\tvalue = Math.round( token.value * Math.pow( 10, 3 - length ) );\n\t\t\t\tdate.setMilliseconds( value );\n\t\t\t\ttruncateAt.push( MILLISECONDS );\n\t\t\t\tbreak;\n\n\t\t\t// Zone\n\t\t\tcase \"z\":\n\t\t\tcase \"Z\":\n\t\t\tcase \"O\":\n\t\t\tcase \"v\":\n\t\t\tcase \"V\":\n\t\t\tcase \"X\":\n\t\t\tcase \"x\":\n\t\t\t\tif ( typeof token.value === \"number\" ) {\n\t\t\t\t\ttimezoneOffset = token.value;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn true;\n\t});\n\n\tif ( !valid ) {\n\t\treturn null;\n\t}\n\n\t// 12-hour format needs AM or PM, 24-hour format doesn't, ie. return null\n\t// if amPm && !hour12 || !amPm && hour12.\n\tif ( hour && !( !amPm ^ hour12 ) ) {\n\t\treturn null;\n\t}\n\n\tif ( era === 0 ) {\n\n\t\t// 1 BC = year 0\n\t\tdate.setFullYear( date.getFullYear() * -1 + 1 );\n\t}\n\n\tif ( month !== undefined ) {\n\t\tdateSetMonth( date, month - 1 );\n\t}\n\n\tif ( day !== undefined ) {\n\t\tif ( outOfRange( day, 1, dateLastDayOfMonth( date ) ) ) {\n\t\t\treturn null;\n\t\t}\n\t\tdate.setDate( day );\n\t} else if ( daysOfYear !== undefined ) {\n\t\tif ( outOfRange( daysOfYear, 1, dateIsLeapYear( date.getFullYear() ) ? 366 : 365 ) ) {\n\t\t\treturn null;\n\t\t}\n\t\tdate.setMonth( 0 );\n\t\tdate.setDate( daysOfYear );\n\t}\n\n\tif ( hour12 && amPm === \"pm\" ) {\n\t\tdate.setHours( date.getHours() + 12 );\n\t}\n\n\tif ( timezoneOffset !== undefined ) {\n\t\tdate.setMinutes( date.getMinutes() + timezoneOffset - date.getTimezoneOffset() );\n\t}\n\n\t// Truncate date at the most precise unit defined. Eg.\n\t// If value is \"12/31\", and pattern is \"MM/dd\":\n\t// => new Date( , 12, 31, 0, 0, 0, 0 );\n\ttruncateAt = Math.max.apply( null, truncateAt );\n\tdate = dateStartOf( date, units[ truncateAt ] );\n\n\t// Get date back from globalize date.\n\tif ( date instanceof ZonedDateTime ) {\n\t\tdate = date.toDate();\n\t}\n\n\treturn date;\n};\n\n\n/* eslint-disable no-unused-expressions */\n\n\n\n/**\n * tokenizer( value, numberParser, properties )\n *\n * @value [String] string date.\n *\n * @numberParser [Function]\n *\n * @properties [Object] output returned by date/tokenizer-properties.\n *\n * Returns an Array of tokens, eg. value \"5 o'clock PM\", pattern \"h 'o''clock' a\":\n * [{\n * type: \"h\",\n * lexeme: \"5\"\n * }, {\n * type: \"literal\",\n * lexeme: \" \"\n * }, {\n * type: \"literal\",\n * lexeme: \"o'clock\"\n * }, {\n * type: \"literal\",\n * lexeme: \" \"\n * }, {\n * type: \"a\",\n * lexeme: \"PM\",\n * value: \"pm\"\n * }]\n *\n * OBS: lexeme's are always String and may return invalid ranges depending of the token type.\n * Eg. \"99\" for month number.\n *\n * Return an empty Array when not successfully parsed.\n */\nvar dateTokenizer = function( value, numberParser, properties ) {\n\tvar digitsRe, valid,\n\t\ttokens = [],\n\t\twidths = [ \"abbreviated\", \"wide\", \"narrow\" ];\n\n\tdigitsRe = properties.digitsRe;\n\tvalue = looseMatching( value );\n\n\tvalid = properties.pattern.match( datePatternRe ).every(function( current ) {\n\t\tvar aux, chr, length, numeric, tokenRe,\n\t\t\ttoken = {};\n\n\t\tfunction hourFormatParse( tokenRe, numberParser ) {\n\t\t\tvar aux, isPositive,\n\t\t\t\tmatch = value.match( tokenRe );\n\t\t\tnumberParser = numberParser || function( value ) {\n\t\t\t\treturn +value;\n\t\t\t};\n\n\t\t\tif ( !match ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tisPositive = match[ 1 ];\n\n\t\t\t// hourFormat containing H only, e.g., `+H;-H`\n\t\t\tif ( match.length < 6 ) {\n\t\t\t\taux = isPositive ? 1 : 3;\n\t\t\t\ttoken.value = numberParser( match[ aux ] ) * 60;\n\n\t\t\t// hourFormat containing H and m, e.g., `+HHmm;-HHmm`\n\t\t\t} else if ( match.length < 10 ) {\n\t\t\t\taux = isPositive ? [ 1, 3 ] : [ 5, 7 ];\n\t\t\t\ttoken.value = numberParser( match[ aux[ 0 ] ] ) * 60 +\n\t\t\t\t\tnumberParser( match[ aux[ 1 ] ] );\n\n\t\t\t// hourFormat containing H, m, and s e.g., `+HHmmss;-HHmmss`\n\t\t\t} else {\n\t\t\t\taux = isPositive ? [ 1, 3, 5 ] : [ 7, 9, 11 ];\n\t\t\t\ttoken.value = numberParser( match[ aux[ 0 ] ] ) * 60 +\n\t\t\t\t\tnumberParser( match[ aux[ 1 ] ] ) +\n\t\t\t\t\tnumberParser( match[ aux[ 2 ] ] ) / 60;\n\t\t\t}\n\n\t\t\tif ( isPositive ) {\n\t\t\t\ttoken.value *= -1;\n\t\t\t}\n\n\t\t\treturn true;\n\t\t}\n\n\t\tfunction oneDigitIfLengthOne() {\n\t\t\tif ( length === 1 ) {\n\n\t\t\t\t// Unicode equivalent to /\\d/\n\t\t\t\tnumeric = true;\n\t\t\t\treturn tokenRe = digitsRe;\n\t\t\t}\n\t\t}\n\n\t\tfunction oneOrTwoDigitsIfLengthOne() {\n\t\t\tif ( length === 1 ) {\n\n\t\t\t\t// Unicode equivalent to /\\d\\d?/\n\t\t\t\tnumeric = true;\n\t\t\t\treturn tokenRe = new RegExp( \"^(\" + digitsRe.source + \"){1,2}\" );\n\t\t\t}\n\t\t}\n\n\t\tfunction oneOrTwoDigitsIfLengthOneOrTwo() {\n\t\t\tif ( length === 1 || length === 2 ) {\n\n\t\t\t\t// Unicode equivalent to /\\d\\d?/\n\t\t\t\tnumeric = true;\n\t\t\t\treturn tokenRe = new RegExp( \"^(\" + digitsRe.source + \"){1,2}\" );\n\t\t\t}\n\t\t}\n\n\t\tfunction twoDigitsIfLengthTwo() {\n\t\t\tif ( length === 2 ) {\n\n\t\t\t\t// Unicode equivalent to /\\d\\d/\n\t\t\t\tnumeric = true;\n\t\t\t\treturn tokenRe = new RegExp( \"^(\" + digitsRe.source + \"){2}\" );\n\t\t\t}\n\t\t}\n\n\t\t// Brute-force test every locale entry in an attempt to match the given value.\n\t\t// Return the first found one (and set token accordingly), or null.\n\t\tfunction lookup( path ) {\n\t\t\tvar array = properties[ path.join( \"/\" ) ];\n\n\t\t\tif ( !array ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// array of pairs [key, value] sorted by desc value length.\n\t\t\tarray.some(function( item ) {\n\t\t\t\tvar valueRe = item[ 1 ];\n\t\t\t\tif ( valueRe.test( value ) ) {\n\t\t\t\t\ttoken.value = item[ 0 ];\n\t\t\t\t\ttokenRe = item[ 1 ];\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn null;\n\t\t}\n\n\t\ttoken.type = current;\n\t\tchr = current.charAt( 0 );\n\t\tlength = current.length;\n\n\t\tif ( chr === \"Z\" ) {\n\n\t\t\t// Z..ZZZ: same as \"xxxx\".\n\t\t\tif ( length < 4 ) {\n\t\t\t\tchr = \"x\";\n\t\t\t\tlength = 4;\n\n\t\t\t// ZZZZ: same as \"OOOO\".\n\t\t\t} else if ( length < 5 ) {\n\t\t\t\tchr = \"O\";\n\t\t\t\tlength = 4;\n\n\t\t\t// ZZZZZ: same as \"XXXXX\"\n\t\t\t} else {\n\t\t\t\tchr = \"X\";\n\t\t\t\tlength = 5;\n\t\t\t}\n\t\t}\n\n\t\tif ( chr === \"z\" ) {\n\t\t\tif ( properties.standardOrDaylightTzName ) {\n\t\t\t\ttoken.value = null;\n\t\t\t\ttokenRe = properties.standardOrDaylightTzName;\n\t\t\t}\n\t\t}\n\n\t\t// v...vvv: \"{shortRegion}\", eg. \"PT\".\n\t\t// vvvv: \"{regionName} {Time}\" or \"{regionName} {Time}\",\n\t\t// e.g., \"Pacific Time\"\n\t\t// http://unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns\n\t\tif ( chr === \"v\" ) {\n\t\t\tif ( properties.genericTzName ) {\n\t\t\t\ttoken.value = null;\n\t\t\t\ttokenRe = properties.genericTzName;\n\n\t\t\t// Fall back to \"V\" format.\n\t\t\t} else {\n\t\t\t\tchr = \"V\";\n\t\t\t\tlength = 4;\n\t\t\t}\n\t\t}\n\n\t\tif ( chr === \"V\" && properties.timeZoneName ) {\n\t\t\ttoken.value = length === 2 ? properties.timeZoneName : null;\n\t\t\ttokenRe = properties.timeZoneNameRe;\n\t\t}\n\n\t\tswitch ( chr ) {\n\n\t\t\t// Era\n\t\t\tcase \"G\":\n\t\t\t\tlookup([\n\t\t\t\t\t\"gregorian/eras\",\n\t\t\t\t\tlength <= 3 ? \"eraAbbr\" : ( length === 4 ? \"eraNames\" : \"eraNarrow\" )\n\t\t\t\t]);\n\t\t\t\tbreak;\n\n\t\t\t// Year\n\t\t\tcase \"y\":\n\t\t\tcase \"Y\":\n\t\t\t\tnumeric = true;\n\n\t\t\t\t// number l=1:+, l=2:{2}, l=3:{3,}, l=4:{4,}, ...\n\t\t\t\tif ( length === 1 ) {\n\n\t\t\t\t\t// Unicode equivalent to /\\d+/.\n\t\t\t\t\ttokenRe = new RegExp( \"^(\" + digitsRe.source + \")+\" );\n\t\t\t\t} else if ( length === 2 ) {\n\n\t\t\t\t\t// Lenient parsing: there's no year pattern to indicate non-zero-padded 2-digits\n\t\t\t\t\t// year, so parser accepts both zero-padded and non-zero-padded for `yy`.\n\t\t\t\t\t//\n\t\t\t\t\t// Unicode equivalent to /\\d\\d?/\n\t\t\t\t\ttokenRe = new RegExp( \"^(\" + digitsRe.source + \"){1,2}\" );\n\t\t\t\t} else {\n\n\t\t\t\t\t// Unicode equivalent to /\\d{length,}/\n\t\t\t\t\ttokenRe = new RegExp( \"^(\" + digitsRe.source + \"){\" + length + \",}\" );\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\t// Quarter\n\t\t\tcase \"Q\":\n\t\t\tcase \"q\":\n\n\t\t\t\t// number l=1:{1}, l=2:{2}.\n\t\t\t\t// lookup l=3...\n\t\t\t\toneDigitIfLengthOne() || twoDigitsIfLengthTwo() ||\n\t\t\t\t\tlookup([\n\t\t\t\t\t\t\"gregorian/quarters\",\n\t\t\t\t\t\tchr === \"Q\" ? \"format\" : \"stand-alone\",\n\t\t\t\t\t\twidths[ length - 3 ]\n\t\t\t\t\t]);\n\t\t\t\tbreak;\n\n\t\t\t// Month\n\t\t\tcase \"M\":\n\t\t\tcase \"L\":\n\n\t\t\t\t// number l=1:{1,2}, l=2:{2}.\n\t\t\t\t// lookup l=3...\n\t\t\t\t//\n\t\t\t\t// Lenient parsing: skeleton \"yMd\" (i.e., one M) may include MM for the pattern,\n\t\t\t\t// therefore parser accepts both zero-padded and non-zero-padded for M and MM.\n\t\t\t\t// Similar for L.\n\t\t\t\toneOrTwoDigitsIfLengthOneOrTwo() || lookup([\n\t\t\t\t\t\"gregorian/months\",\n\t\t\t\t\tchr === \"M\" ? \"format\" : \"stand-alone\",\n\t\t\t\t\twidths[ length - 3 ]\n\t\t\t\t]);\n\t\t\t\tbreak;\n\n\t\t\t// Day\n\t\t\tcase \"D\":\n\n\t\t\t\t// number {l,3}.\n\t\t\t\tif ( length <= 3 ) {\n\n\t\t\t\t\t// Equivalent to /\\d{length,3}/\n\t\t\t\t\tnumeric = true;\n\t\t\t\t\ttokenRe = new RegExp( \"^(\" + digitsRe.source + \"){\" + length + \",3}\" );\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"W\":\n\t\t\tcase \"F\":\n\n\t\t\t\t// number l=1:{1}.\n\t\t\t\toneDigitIfLengthOne();\n\t\t\t\tbreak;\n\n\t\t\t// Week day\n\t\t\tcase \"e\":\n\t\t\tcase \"c\":\n\n\t\t\t\t// number l=1:{1}, l=2:{2}.\n\t\t\t\t// lookup for length >=3.\n\t\t\t\tif ( length <= 2 ) {\n\t\t\t\t\toneDigitIfLengthOne() || twoDigitsIfLengthTwo();\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t/* falls through */\n\t\t\tcase \"E\":\n\t\t\t\tif ( length === 6 ) {\n\n\t\t\t\t\t// Note: if short day names are not explicitly specified, abbreviated day\n\t\t\t\t\t// names are used instead http://www.unicode.org/reports/tr35/tr35-dates.html#months_days_quarters_eras\n\t\t\t\t\tlookup([\n\t\t\t\t\t\t\"gregorian/days\",\n\t\t\t\t\t\t[ chr === \"c\" ? \"stand-alone\" : \"format\" ],\n\t\t\t\t\t\t\"short\"\n\t\t\t\t\t]) || lookup([\n\t\t\t\t\t\t\"gregorian/days\",\n\t\t\t\t\t\t[ chr === \"c\" ? \"stand-alone\" : \"format\" ],\n\t\t\t\t\t\t\"abbreviated\"\n\t\t\t\t\t]);\n\t\t\t\t} else {\n\t\t\t\t\tlookup([\n\t\t\t\t\t\t\"gregorian/days\",\n\t\t\t\t\t\t[ chr === \"c\" ? \"stand-alone\" : \"format\" ],\n\t\t\t\t\t\twidths[ length < 3 ? 0 : length - 3 ]\n\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\t// Period (AM or PM)\n\t\t\tcase \"a\":\n\t\t\t\tlookup([\n\t\t\t\t\t\"gregorian/dayPeriods/format/wide\"\n\t\t\t\t]);\n\t\t\t\tbreak;\n\n\t\t\t// Week\n\t\t\tcase \"w\":\n\n\t\t\t\t// number l1:{1,2}, l2:{2}.\n\t\t\t\toneOrTwoDigitsIfLengthOne() || twoDigitsIfLengthTwo();\n\t\t\t\tbreak;\n\n\t\t\t// Day, Hour, Minute, or Second\n\t\t\tcase \"d\":\n\t\t\tcase \"h\":\n\t\t\tcase \"H\":\n\t\t\tcase \"K\":\n\t\t\tcase \"k\":\n\t\t\tcase \"j\":\n\t\t\tcase \"m\":\n\t\t\tcase \"s\":\n\n\t\t\t\t// number l1:{1,2}, l2:{2}.\n\t\t\t\t//\n\t\t\t\t// Lenient parsing:\n\t\t\t\t// - skeleton \"hms\" (i.e., one m) always includes mm for the pattern, i.e., it's\n\t\t\t\t// impossible to use a different skeleton to parse non-zero-padded minutes,\n\t\t\t\t// therefore parser accepts both zero-padded and non-zero-padded for m. Similar\n\t\t\t\t// for seconds s.\n\t\t\t\t// - skeleton \"hms\" (i.e., one h) may include h or hh for the pattern, i.e., it's\n\t\t\t\t// impossible to use a different skeleton to parser non-zero-padded hours for some\n\t\t\t\t// locales, therefore parser accepts both zero-padded and non-zero-padded for h.\n\t\t\t\t// Similar for d (in skeleton yMd).\n\t\t\t\toneOrTwoDigitsIfLengthOneOrTwo();\n\t\t\t\tbreak;\n\n\t\t\tcase \"S\":\n\n\t\t\t\t// number {l}.\n\n\t\t\t\t// Unicode equivalent to /\\d{length}/\n\t\t\t\tnumeric = true;\n\t\t\t\ttokenRe = new RegExp( \"^(\" + digitsRe.source + \"){\" + length + \"}\" );\n\t\t\t\tbreak;\n\n\t\t\tcase \"A\":\n\n\t\t\t\t// number {l+5}.\n\n\t\t\t\t// Unicode equivalent to /\\d{length+5}/\n\t\t\t\tnumeric = true;\n\t\t\t\ttokenRe = new RegExp( \"^(\" + digitsRe.source + \"){\" + ( length + 5 ) + \"}\" );\n\t\t\t\tbreak;\n\n\t\t\t// Zone\n\t\t\tcase \"v\":\n\t\t\tcase \"V\":\n\t\t\tcase \"z\":\n\t\t\t\tif ( tokenRe && tokenRe.test( value ) ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif ( chr === \"V\" && length === 2 ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t/* falls through */\n\t\t\tcase \"O\":\n\n\t\t\t\t// O: \"{gmtFormat}+H;{gmtFormat}-H\" or \"{gmtZeroFormat}\", eg. \"GMT-8\" or \"GMT\".\n\t\t\t\t// OOOO: \"{gmtFormat}{hourFormat}\" or \"{gmtZeroFormat}\", eg. \"GMT-08:00\" or \"GMT\".\n\t\t\t\tif ( value === properties[ \"timeZoneNames/gmtZeroFormat\" ] ) {\n\t\t\t\t\ttoken.value = 0;\n\t\t\t\t\ttokenRe = properties[ \"timeZoneNames/gmtZeroFormatRe\" ];\n\t\t\t\t} else {\n\t\t\t\t\taux = properties[ \"timeZoneNames/hourFormat\" ].some(function( hourFormatRe ) {\n\t\t\t\t\t\tif ( hourFormatParse( hourFormatRe, numberParser ) ) {\n\t\t\t\t\t\t\ttokenRe = hourFormatRe;\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tif ( !aux ) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"X\":\n\n\t\t\t\t// Same as x*, except it uses \"Z\" for zero offset.\n\t\t\t\tif ( value === \"Z\" ) {\n\t\t\t\t\ttoken.value = 0;\n\t\t\t\t\ttokenRe = /^Z/;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t/* falls through */\n\t\t\tcase \"x\":\n\n\t\t\t\t// x: hourFormat(\"+HH[mm];-HH[mm]\")\n\t\t\t\t// xx: hourFormat(\"+HHmm;-HHmm\")\n\t\t\t\t// xxx: hourFormat(\"+HH:mm;-HH:mm\")\n\t\t\t\t// xxxx: hourFormat(\"+HHmm[ss];-HHmm[ss]\")\n\t\t\t\t// xxxxx: hourFormat(\"+HH:mm[:ss];-HH:mm[:ss]\")\n\t\t\t\taux = properties.x.some(function( hourFormatRe ) {\n\t\t\t\t\tif ( hourFormatParse( hourFormatRe ) ) {\n\t\t\t\t\t\ttokenRe = hourFormatRe;\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif ( !aux ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"'\":\n\t\t\t\ttoken.type = \"literal\";\n\t\t\t\ttokenRe = new RegExp( \"^\" + regexpEscape( removeLiteralQuotes( current ) ) );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\ttoken.type = \"literal\";\n\t\t\t\ttokenRe = new RegExp( \"^\" + regexpEscape( current ) );\n\t\t}\n\n\t\tif ( !tokenRe ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Get lexeme and consume it.\n\t\tvalue = value.replace( tokenRe, function( lexeme ) {\n\t\t\ttoken.lexeme = lexeme;\n\t\t\tif ( numeric ) {\n\t\t\t\ttoken.value = numberParser( lexeme );\n\t\t\t}\n\t\t\treturn \"\";\n\t\t});\n\n\t\tif ( !token.lexeme ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( numeric && isNaN( token.value ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttokens.push( token );\n\t\treturn true;\n\t});\n\n\tif ( value !== \"\" ) {\n\t\tvalid = false;\n\t}\n\n\treturn valid ? tokens : [];\n};\n\n\n\n\nvar dateParserFn = function( numberParser, parseProperties, tokenizerProperties ) {\n\treturn function dateParser( value ) {\n\t\tvar tokens;\n\n\t\tvalidateParameterPresence( value, \"value\" );\n\t\tvalidateParameterTypeString( value, \"value\" );\n\n\t\ttokens = dateTokenizer( value, numberParser, tokenizerProperties );\n\t\treturn dateParse( value, tokens, parseProperties ) || null;\n\t};\n};\n\n\n\n\nvar objectFilter = function( object, testRe ) {\n\tvar key,\n\t\tcopy = {};\n\n\tfor ( key in object ) {\n\t\tif ( testRe.test( key ) ) {\n\t\t\tcopy[ key ] = object[ key ];\n\t\t}\n\t}\n\n\treturn copy;\n};\n\n\n\n\n/**\n * tokenizerProperties( pattern, cldr )\n *\n * @pattern [String] raw pattern.\n *\n * @cldr [Cldr instance].\n *\n * Return Object with data that will be used by tokenizer.\n */\nvar dateTokenizerProperties = function( pattern, cldr, timeZone ) {\n\tvar digitsReSource,\n\t\tproperties = {\n\t\t\tpattern: looseMatching( pattern )\n\t\t},\n\t\ttimeSeparator = numberSymbol( \"timeSeparator\", cldr ),\n\t\twidths = [ \"abbreviated\", \"wide\", \"narrow\" ];\n\n\tdigitsReSource = numberNumberingSystemDigitsMap( cldr );\n\tdigitsReSource = digitsReSource ? \"[\" + digitsReSource + \"]\" : \"\\\\d\";\n\tproperties.digitsRe = new RegExp( digitsReSource );\n\n\t// Transform:\n\t// - \"+H;-H\" -> /\\+(\\d\\d?)|-(\\d\\d?)/\n\t// - \"+HH;-HH\" -> /\\+(\\d\\d)|-(\\d\\d)/\n\t// - \"+HHmm;-HHmm\" -> /\\+(\\d\\d)(\\d\\d)|-(\\d\\d)(\\d\\d)/\n\t// - \"+HH:mm;-HH:mm\" -> /\\+(\\d\\d):(\\d\\d)|-(\\d\\d):(\\d\\d)/\n\t//\n\t// If gmtFormat is GMT{0}, the regexp must fill {0} in each side, e.g.:\n\t// - \"+H;-H\" -> /GMT\\+(\\d\\d?)|GMT-(\\d\\d?)/\n\tfunction hourFormatRe( hourFormat, gmtFormat, digitsReSource, timeSeparator ) {\n\t\tvar re;\n\n\t\tif ( !digitsReSource ) {\n\t\t\tdigitsReSource = \"\\\\d\";\n\t\t}\n\t\tif ( !gmtFormat ) {\n\t\t\tgmtFormat = \"{0}\";\n\t\t}\n\n\t\tre = hourFormat\n\t\t\t.replace( \"+\", \"\\\\+\" )\n\n\t\t\t// Unicode equivalent to (\\\\d\\\\d)\n\t\t\t.replace( /HH|mm|ss/g, \"((\" + digitsReSource + \"){2})\" )\n\n\t\t\t// Unicode equivalent to (\\\\d\\\\d?)\n\t\t\t.replace( /H|m/g, \"((\" + digitsReSource + \"){1,2})\" );\n\n\t\tif ( timeSeparator ) {\n\t\t\tre = re.replace( /:/g, timeSeparator );\n\t\t}\n\n\t\tre = re.split( \";\" ).map(function( part ) {\n\t\t\treturn gmtFormat.replace( \"{0}\", part );\n\t\t}).join( \"|\" );\n\n\t\treturn new RegExp( \"^\" + re );\n\t}\n\n\tfunction populateProperties( path, value ) {\n\n\t\t// Skip\n\t\tvar skipRe = /(timeZoneNames\\/zone|supplemental\\/metaZones|timeZoneNames\\/metazone|timeZoneNames\\/regionFormat|timeZoneNames\\/gmtFormat)/;\n\t\tif ( skipRe.test( path ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !value ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// The `dates` and `calendars` trim's purpose is to reduce properties' key size only.\n\t\tpath = path.replace( /^.*\\/dates\\//, \"\" ).replace( /calendars\\//, \"\" );\n\n\t\t// Specific filter for \"gregorian/dayPeriods/format/wide\".\n\t\tif ( path === \"gregorian/dayPeriods/format/wide\" ) {\n\t\t\tvalue = objectFilter( value, /^am|^pm/ );\n\t\t}\n\n\t\t// Transform object into array of pairs [key, /value/], sort by desc value length.\n\t\tif ( isPlainObject( value ) ) {\n\t\t\tvalue = Object.keys( value ).map(function( key ) {\n\t\t\t\treturn [ key, new RegExp( \"^\" + regexpEscape( looseMatching( value[ key ] ) ) ) ];\n\t\t\t}).sort(function( a, b ) {\n\t\t\t\treturn b[ 1 ].source.length - a[ 1 ].source.length;\n\t\t\t});\n\n\t\t// If typeof value === \"string\".\n\t\t} else {\n\t\t\tvalue = looseMatching( value );\n\t\t}\n\t\tproperties[ path ] = value;\n\t}\n\n\tfunction regexpSourceSomeTerm( terms ) {\n\t\treturn \"(\" + terms.filter(function( item ) {\n\t\t\treturn item;\n\t\t}).reduce(function( memo, item ) {\n\t\t\treturn memo + \"|\" + item;\n\t\t}) + \")\";\n\t}\n\n\tcldr.on( \"get\", populateProperties );\n\n\tpattern.match( datePatternRe ).forEach(function( current ) {\n\t\tvar aux, chr, daylightTzName, gmtFormat, length, standardTzName;\n\n\t\tchr = current.charAt( 0 );\n\t\tlength = current.length;\n\n\t\tif ( chr === \"Z\" ) {\n\t\t\tif ( length < 5 ) {\n\t\t\t\tchr = \"O\";\n\t\t\t\tlength = 4;\n\t\t\t} else {\n\t\t\t\tchr = \"X\";\n\t\t\t\tlength = 5;\n\t\t\t}\n\t\t}\n\n\t\t// z...zzz: \"{shortRegion}\", eg. \"PST\" or \"PDT\".\n\t\t// zzzz: \"{regionName} {Standard Time}\" or \"{regionName} {Daylight Time}\",\n\t\t// e.g., \"Pacific Standard Time\" or \"Pacific Daylight Time\".\n\t\t// http://unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns\n\t\tif ( chr === \"z\" ) {\n\t\t\tstandardTzName = dateGetTimeZoneName( length, \"standard\", timeZone, cldr );\n\t\t\tdaylightTzName = dateGetTimeZoneName( length, \"daylight\", timeZone, cldr );\n\t\t\tif ( standardTzName ) {\n\t\t\t\tstandardTzName = regexpEscape( looseMatching( standardTzName ) );\n\t\t\t}\n\t\t\tif ( daylightTzName ) {\n\t\t\t\tdaylightTzName = regexpEscape( looseMatching( daylightTzName ) );\n\t\t\t}\n\t\t\tif ( standardTzName || daylightTzName ) {\n\t\t\t\tproperties.standardOrDaylightTzName = new RegExp(\n\t\t\t\t\t\"^\" + regexpSourceSomeTerm([ standardTzName, daylightTzName ])\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Fall through the \"O\" format in case one name is missing.\n\t\t\tif ( !standardTzName || !daylightTzName ) {\n\t\t\t\tchr = \"O\";\n\t\t\t\tif ( length < 4 ) {\n\t\t\t\t\tlength = 1;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// v...vvv: \"{shortRegion}\", eg. \"PT\".\n\t\t// vvvv: \"{regionName} {Time}\" or \"{regionName} {Time}\",\n\t\t// e.g., \"Pacific Time\"\n\t\t// http://unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns\n\t\tif ( chr === \"v\" ) {\n\t\t\tif ( length !== 1 && length !== 4 ) {\n\t\t\t\tthrow createErrorUnsupportedFeature({\n\t\t\t\t\tfeature: \"timezone pattern `\" + pattern + \"`\"\n\t\t\t\t});\n\t\t\t}\n\t\t\tvar genericTzName = dateGetTimeZoneName( length, \"generic\", timeZone, cldr );\n\t\t\tif ( genericTzName ) {\n\t\t\t\tproperties.genericTzName = new RegExp(\n\t\t\t\t\t\"^\" + regexpEscape( looseMatching( genericTzName ) )\n\t\t\t\t);\n\t\t\t\tchr = \"O\";\n\n\t\t\t// Fall back to \"V\" format.\n\t\t\t} else {\n\t\t\t\tchr = \"V\";\n\t\t\t\tlength = 4;\n\t\t\t}\n\t\t}\n\n\t\tswitch ( chr ) {\n\n\t\t\t// Era\n\t\t\tcase \"G\":\n\t\t\t\tcldr.main([\n\t\t\t\t\t\"dates/calendars/gregorian/eras\",\n\t\t\t\t\tlength <= 3 ? \"eraAbbr\" : ( length === 4 ? \"eraNames\" : \"eraNarrow\" )\n\t\t\t\t]);\n\t\t\t\tbreak;\n\n\t\t\t// Year\n\t\t\tcase \"u\": // Extended year. Need to be implemented.\n\t\t\tcase \"U\": // Cyclic year name. Need to be implemented.\n\t\t\t\tthrow createErrorUnsupportedFeature({\n\t\t\t\t\tfeature: \"year pattern `\" + chr + \"`\"\n\t\t\t\t});\n\n\t\t\t// Quarter\n\t\t\tcase \"Q\":\n\t\t\tcase \"q\":\n\t\t\t\tif ( length > 2 ) {\n\t\t\t\t\tcldr.main([\n\t\t\t\t\t\t\"dates/calendars/gregorian/quarters\",\n\t\t\t\t\t\tchr === \"Q\" ? \"format\" : \"stand-alone\",\n\t\t\t\t\t\twidths[ length - 3 ]\n\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\t// Month\n\t\t\tcase \"M\":\n\t\t\tcase \"L\":\n\n\t\t\t\t// number l=1:{1,2}, l=2:{2}.\n\t\t\t\t// lookup l=3...\n\t\t\t\tif ( length > 2 ) {\n\t\t\t\t\tcldr.main([\n\t\t\t\t\t\t\"dates/calendars/gregorian/months\",\n\t\t\t\t\t\tchr === \"M\" ? \"format\" : \"stand-alone\",\n\t\t\t\t\t\twidths[ length - 3 ]\n\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\t// Day\n\t\t\tcase \"g\":\n\n\t\t\t\t// Modified Julian day. Need to be implemented.\n\t\t\t\tthrow createErrorUnsupportedFeature({\n\t\t\t\t\tfeature: \"Julian day pattern `g`\"\n\t\t\t\t});\n\n\t\t\t// Week day\n\t\t\tcase \"e\":\n\t\t\tcase \"c\":\n\n\t\t\t\t// lookup for length >=3.\n\t\t\t\tif ( length <= 2 ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t/* falls through */\n\t\t\tcase \"E\":\n\t\t\t\tif ( length === 6 ) {\n\n\t\t\t\t\t// Note: if short day names are not explicitly specified, abbreviated day\n\t\t\t\t\t// names are used instead http://www.unicode.org/reports/tr35/tr35-dates.html#months_days_quarters_eras\n\t\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\t\tcldr.main([\n\t\t\t\t\t\t\"dates/calendars/gregorian/days\",\n\t\t\t\t\t\t[ chr === \"c\" ? \"stand-alone\" : \"format\" ],\n\t\t\t\t\t\t\"short\"\n\t\t\t\t\t]) || cldr.main([\n\t\t\t\t\t\t\"dates/calendars/gregorian/days\",\n\t\t\t\t\t\t[ chr === \"c\" ? \"stand-alone\" : \"format\" ],\n\t\t\t\t\t\t\"abbreviated\"\n\t\t\t\t\t]);\n\t\t\t\t} else {\n\t\t\t\t\tcldr.main([\n\t\t\t\t\t\t\"dates/calendars/gregorian/days\",\n\t\t\t\t\t\t[ chr === \"c\" ? \"stand-alone\" : \"format\" ],\n\t\t\t\t\t\twidths[ length < 3 ? 0 : length - 3 ]\n\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\t// Period (AM or PM)\n\t\t\tcase \"a\":\n\t\t\t\tcldr.main(\n\t\t\t\t\t\"dates/calendars/gregorian/dayPeriods/format/wide\"\n\t\t\t\t);\n\t\t\t\tbreak;\n\n\t\t\t// Zone\n\t\t\tcase \"V\":\n\n\t\t\t\tif ( length === 1 ) {\n\t\t\t\t\tthrow createErrorUnsupportedFeature({\n\t\t\t\t\t\tfeature: \"timezone pattern `\" + pattern + \"`\"\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif ( timeZone ) {\n\t\t\t\t\tif ( length === 2 ) {\n\n\t\t\t\t\t\t// Skip looseMatching processing since timeZone is a canonical posix value.\n\t\t\t\t\t\tproperties.timeZoneName = timeZone;\n\t\t\t\t\t\tproperties.timeZoneNameRe = new RegExp( \"^\" + regexpEscape( timeZone ) );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar timeZoneName,\n\t\t\t\t\t\texemplarCity = cldr.main([\n\t\t\t\t\t\t\t\"dates/timeZoneNames/zone\", timeZone, \"exemplarCity\"\n\t\t\t\t\t\t]);\n\n\t\t\t\t\tif ( length === 3 ) {\n\t\t\t\t\t\tif ( !exemplarCity ) {\n\t\t\t\t\t\t\texemplarCity = cldr.main([\n\t\t\t\t\t\t\t\t\"dates/timeZoneNames/zone/Etc/Unknown/exemplarCity\"\n\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttimeZoneName = exemplarCity;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( exemplarCity && length === 4 ) {\n\t\t\t\t\t\ttimeZoneName = formatMessage(\n\t\t\t\t\t\t\tcldr.main(\n\t\t\t\t\t\t\t\t\"dates/timeZoneNames/regionFormat\"\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t[ exemplarCity ]\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( timeZoneName ) {\n\t\t\t\t\t\ttimeZoneName = looseMatching( timeZoneName );\n\t\t\t\t\t\tproperties.timeZoneName = timeZoneName;\n\t\t\t\t\t\tproperties.timeZoneNameRe = new RegExp(\n\t\t\t\t\t\t\t\"^\" + regexpEscape( timeZoneName )\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( current === \"v\" ) {\n\t\t\t\t\tlength = 1;\n\t\t\t\t}\n\n\t\t\t/* falls through */\n\t\t\tcase \"z\":\n\t\t\tcase \"O\":\n\t\t\t\tgmtFormat = cldr.main( \"dates/timeZoneNames/gmtFormat\" );\n\t\t\t\tcldr.main( \"dates/timeZoneNames/gmtZeroFormat\" );\n\t\t\t\tcldr.main( \"dates/timeZoneNames/hourFormat\" );\n\t\t\t\tproperties[ \"timeZoneNames/gmtZeroFormatRe\" ] =\n\t\t\t\t\tnew RegExp( \"^\" + regexpEscape( properties[ \"timeZoneNames/gmtZeroFormat\" ] ) );\n\t\t\t\taux = properties[ \"timeZoneNames/hourFormat\" ];\n\t\t\t\tproperties[ \"timeZoneNames/hourFormat\" ] = (\n\t\t\t\t\tlength < 4 ?\n\t\t\t\t\t\t[ dateTimezoneHourFormatHm( aux, \"H\" ), dateTimezoneHourFormatH( aux ) ] :\n\t\t\t\t\t\t[ dateTimezoneHourFormatHm( aux, \"HH\" ) ]\n\t\t\t\t).map(function( hourFormat ) {\n\t\t\t\t\treturn hourFormatRe(\n\t\t\t\t\t\thourFormat,\n\t\t\t\t\t\tgmtFormat,\n\t\t\t\t\t\tdigitsReSource,\n\t\t\t\t\t\ttimeSeparator\n\t\t\t\t\t);\n\t\t\t\t});\n\n\t\t\t/* falls through */\n\t\t\tcase \"X\":\n\t\t\tcase \"x\":\n\n\t\t\t\t// x: hourFormat(\"+HH[mm];-HH[mm]\")\n\t\t\t\t// xx: hourFormat(\"+HHmm;-HHmm\")\n\t\t\t\t// xxx: hourFormat(\"+HH:mm;-HH:mm\")\n\t\t\t\t// xxxx: hourFormat(\"+HHmm[ss];-HHmm[ss]\")\n\t\t\t\t// xxxxx: hourFormat(\"+HH:mm[:ss];-HH:mm[:ss]\")\n\t\t\t\tproperties.x = [\n\t\t\t\t\t[ \"+HHmm;-HHmm\", \"+HH;-HH\" ],\n\t\t\t\t\t[ \"+HHmm;-HHmm\" ],\n\t\t\t\t\t[ \"+HH:mm;-HH:mm\" ],\n\t\t\t\t\t[ \"+HHmmss;-HHmmss\", \"+HHmm;-HHmm\" ],\n\t\t\t\t\t[ \"+HH:mm:ss;-HH:mm:ss\", \"+HH:mm;-HH:mm\" ]\n\t\t\t\t][ length - 1 ].map(function( hourFormat ) {\n\t\t\t\t\treturn hourFormatRe( hourFormat );\n\t\t\t\t});\n\t\t}\n\t});\n\n\tcldr.off( \"get\", populateProperties );\n\n\treturn properties;\n};\n\n\n\n\n/**\n * dayOfWeek( date, firstDay )\n *\n * @date\n *\n * @firstDay the result of `dateFirstDayOfWeek( cldr )`\n *\n * Return the day of the week normalized by the territory's firstDay [0-6].\n * Eg for \"mon\":\n * - return 0 if territory is GB, or BR, or DE, or FR (week starts on \"mon\");\n * - return 1 if territory is US (week starts on \"sun\");\n * - return 2 if territory is EG (week starts on \"sat\");\n */\nvar dateDayOfWeek = function( date, firstDay ) {\n\treturn ( date.getDay() - firstDay + 7 ) % 7;\n};\n\n\n\n\n/**\n * distanceInDays( from, to )\n *\n * Return the distance in days between from and to Dates.\n */\nvar dateDistanceInDays = function( from, to ) {\n\tvar inDays = 864e5;\n\treturn ( to.getTime() - from.getTime() ) / inDays;\n};\n\n\n\n\n/**\n * dayOfYear\n *\n * Return the distance in days of the date to the begin of the year [0-d].\n */\nvar dateDayOfYear = function( date ) {\n\treturn Math.floor( dateDistanceInDays( dateStartOf( date, \"year\" ), date ) );\n};\n\n\n\n\n// Invert key and values, e.g., {\"year\": \"yY\"} ==> {\"y\": \"year\", \"Y\": \"year\"}\nvar dateFieldsMap = objectInvert({\n\t\"era\": \"G\",\n\t\"year\": \"yY\",\n\t\"quarter\": \"qQ\",\n\t\"month\": \"ML\",\n\t\"week\": \"wW\",\n\t\"day\": \"dDF\",\n\t\"weekday\": \"ecE\",\n\t\"dayperiod\": \"a\",\n\t\"hour\": \"hHkK\",\n\t\"minute\": \"m\",\n\t\"second\": \"sSA\",\n\t\"zone\": \"zvVOxX\"\n}, function( object, key, value ) {\n\tvalue.split( \"\" ).forEach(function( symbol ) {\n\t\tobject[ symbol ] = key;\n\t});\n\treturn object;\n});\n\n\n\n\n/**\n * millisecondsInDay\n */\nvar dateMillisecondsInDay = function( date ) {\n\n\t// TODO Handle daylight savings discontinuities\n\treturn date - dateStartOf( date, \"day\" );\n};\n\n\n\n\n/**\n * hourFormat( date, format, timeSeparator, formatNumber )\n *\n * Return date's timezone offset according to the format passed.\n * Eg for format when timezone offset is 180:\n * - \"+H;-H\": -3\n * - \"+HHmm;-HHmm\": -0300\n * - \"+HH:mm;-HH:mm\": -03:00\n * - \"+HH:mm:ss;-HH:mm:ss\": -03:00:00\n */\nvar dateTimezoneHourFormat = function( date, format, timeSeparator, formatNumber ) {\n\tvar absOffset,\n\t\toffset = date.getTimezoneOffset();\n\n\tabsOffset = Math.abs( offset );\n\tformatNumber = formatNumber || {\n\t\t1: function( value ) {\n\t\t\treturn stringPad( value, 1 );\n\t\t},\n\t\t2: function( value ) {\n\t\t\treturn stringPad( value, 2 );\n\t\t}\n\t};\n\n\treturn format\n\n\t\t// Pick the correct sign side (+ or -).\n\t\t.split( \";\" )[ offset > 0 ? 1 : 0 ]\n\n\t\t// Localize time separator\n\t\t.replace( \":\", timeSeparator )\n\n\t\t// Update hours offset.\n\t\t.replace( /HH?/, function( match ) {\n\t\t\treturn formatNumber[ match.length ]( Math.floor( absOffset / 60 ) );\n\t\t})\n\n\t\t// Update minutes offset and return.\n\t\t.replace( /mm/, function() {\n\t\t\treturn formatNumber[ 2 ]( Math.floor( absOffset % 60 ) );\n\t\t})\n\n\t\t// Update minutes offset and return.\n\t\t.replace( /ss/, function() {\n\t\t\treturn formatNumber[ 2 ]( Math.floor( absOffset % 1 * 60 ) );\n\t\t});\n};\n\n\n\n\n/**\n * format( date, properties )\n *\n * @date [Date instance].\n *\n * @properties\n *\n * TODO Support other calendar types.\n *\n * Disclosure: this function borrows excerpts of dojo/date/locale.\n */\nvar dateFormat = function( date, numberFormatters, properties ) {\n\tvar parts = [];\n\n\tvar timeSeparator = properties.timeSeparator;\n\n\t// create globalize date with given timezone data\n\tif ( properties.timeZoneData ) {\n\t\tdate = new ZonedDateTime( date, properties.timeZoneData() );\n\t}\n\n\tproperties.pattern.replace( datePatternRe, function( current ) {\n\t\tvar aux, dateField, type, value,\n\t\t\tchr = current.charAt( 0 ),\n\t\t\tlength = current.length;\n\n\t\tif ( chr === \"j\" ) {\n\n\t\t\t// Locale preferred hHKk.\n\t\t\t// http://www.unicode.org/reports/tr35/tr35-dates.html#Time_Data\n\t\t\tchr = properties.preferredTime;\n\t\t}\n\n\t\tif ( chr === \"Z\" ) {\n\n\t\t\t// Z..ZZZ: same as \"xxxx\".\n\t\t\tif ( length < 4 ) {\n\t\t\t\tchr = \"x\";\n\t\t\t\tlength = 4;\n\n\t\t\t// ZZZZ: same as \"OOOO\".\n\t\t\t} else if ( length < 5 ) {\n\t\t\t\tchr = \"O\";\n\t\t\t\tlength = 4;\n\n\t\t\t// ZZZZZ: same as \"XXXXX\"\n\t\t\t} else {\n\t\t\t\tchr = \"X\";\n\t\t\t\tlength = 5;\n\t\t\t}\n\t\t}\n\n\t\t// z...zzz: \"{shortRegion}\", e.g., \"PST\" or \"PDT\".\n\t\t// zzzz: \"{regionName} {Standard Time}\" or \"{regionName} {Daylight Time}\",\n\t\t// e.g., \"Pacific Standard Time\" or \"Pacific Daylight Time\".\n\t\tif ( chr === \"z\" ) {\n\t\t\tif ( date.isDST ) {\n\t\t\t\tvalue = date.isDST() ? properties.daylightTzName : properties.standardTzName;\n\t\t\t}\n\n\t\t\t// Fall back to \"O\" format.\n\t\t\tif ( !value ) {\n\t\t\t\tchr = \"O\";\n\t\t\t\tif ( length < 4 ) {\n\t\t\t\t\tlength = 1;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tswitch ( chr ) {\n\n\t\t\t// Era\n\t\t\tcase \"G\":\n\t\t\t\tvalue = properties.eras[ date.getFullYear() < 0 ? 0 : 1 ];\n\t\t\t\tbreak;\n\n\t\t\t// Year\n\t\t\tcase \"y\":\n\n\t\t\t\t// Plain year.\n\t\t\t\t// The length specifies the padding, but for two letters it also specifies the\n\t\t\t\t// maximum length.\n\t\t\t\tvalue = date.getFullYear();\n\t\t\t\tif ( length === 2 ) {\n\t\t\t\t\tvalue = String( value );\n\t\t\t\t\tvalue = +value.substr( value.length - 2 );\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"Y\":\n\n\t\t\t\t// Year in \"Week of Year\"\n\t\t\t\t// The length specifies the padding, but for two letters it also specifies the\n\t\t\t\t// maximum length.\n\t\t\t\t// yearInWeekofYear = date + DaysInAWeek - (dayOfWeek - firstDay) - minDays\n\t\t\t\tvalue = new Date( date.getTime() );\n\t\t\t\tvalue.setDate(\n\t\t\t\t\tvalue.getDate() + 7 -\n\t\t\t\t\tdateDayOfWeek( date, properties.firstDay ) -\n\t\t\t\t\tproperties.firstDay -\n\t\t\t\t\tproperties.minDays\n\t\t\t\t);\n\t\t\t\tvalue = value.getFullYear();\n\t\t\t\tif ( length === 2 ) {\n\t\t\t\t\tvalue = String( value );\n\t\t\t\t\tvalue = +value.substr( value.length - 2 );\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\t// Quarter\n\t\t\tcase \"Q\":\n\t\t\tcase \"q\":\n\t\t\t\tvalue = Math.ceil( ( date.getMonth() + 1 ) / 3 );\n\t\t\t\tif ( length > 2 ) {\n\t\t\t\t\tvalue = properties.quarters[ chr ][ length ][ value ];\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\t// Month\n\t\t\tcase \"M\":\n\t\t\tcase \"L\":\n\t\t\t\tvalue = date.getMonth() + 1;\n\t\t\t\tif ( length > 2 ) {\n\t\t\t\t\tvalue = properties.months[ chr ][ length ][ value ];\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\t// Week\n\t\t\tcase \"w\":\n\n\t\t\t\t// Week of Year.\n\t\t\t\t// woy = ceil( ( doy + dow of 1/1 ) / 7 ) - minDaysStuff ? 1 : 0.\n\t\t\t\t// TODO should pad on ww? Not documented, but I guess so.\n\t\t\t\tvalue = dateDayOfWeek( dateStartOf( date, \"year\" ), properties.firstDay );\n\t\t\t\tvalue = Math.ceil( ( dateDayOfYear( date ) + value ) / 7 ) -\n\t\t\t\t\t( 7 - value >= properties.minDays ? 0 : 1 );\n\t\t\t\tbreak;\n\n\t\t\tcase \"W\":\n\n\t\t\t\t// Week of Month.\n\t\t\t\t// wom = ceil( ( dom + dow of `1/month` ) / 7 ) - minDaysStuff ? 1 : 0.\n\t\t\t\tvalue = dateDayOfWeek( dateStartOf( date, \"month\" ), properties.firstDay );\n\t\t\t\tvalue = Math.ceil( ( date.getDate() + value ) / 7 ) -\n\t\t\t\t\t( 7 - value >= properties.minDays ? 0 : 1 );\n\t\t\t\tbreak;\n\n\t\t\t// Day\n\t\t\tcase \"d\":\n\t\t\t\tvalue = date.getDate();\n\t\t\t\tbreak;\n\n\t\t\tcase \"D\":\n\t\t\t\tvalue = dateDayOfYear( date ) + 1;\n\t\t\t\tbreak;\n\n\t\t\tcase \"F\":\n\n\t\t\t\t// Day of Week in month. eg. 2nd Wed in July.\n\t\t\t\tvalue = Math.floor( date.getDate() / 7 ) + 1;\n\t\t\t\tbreak;\n\n\t\t\t// Week day\n\t\t\tcase \"e\":\n\t\t\tcase \"c\":\n\t\t\t\tif ( length <= 2 ) {\n\n\t\t\t\t\t// Range is [1-7] (deduced by example provided on documentation)\n\t\t\t\t\t// TODO Should pad with zeros (not specified in the docs)?\n\t\t\t\t\tvalue = dateDayOfWeek( date, properties.firstDay ) + 1;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t/* falls through */\n\t\t\tcase \"E\":\n\t\t\t\tvalue = dateWeekDays[ date.getDay() ];\n\t\t\t\tvalue = properties.days[ chr ][ length ][ value ];\n\t\t\t\tbreak;\n\n\t\t\t// Period (AM or PM)\n\t\t\tcase \"a\":\n\t\t\t\tvalue = properties.dayPeriods[ date.getHours() < 12 ? \"am\" : \"pm\" ];\n\t\t\t\tbreak;\n\n\t\t\t// Hour\n\t\t\tcase \"h\": // 1-12\n\t\t\t\tvalue = ( date.getHours() % 12 ) || 12;\n\t\t\t\tbreak;\n\n\t\t\tcase \"H\": // 0-23\n\t\t\t\tvalue = date.getHours();\n\t\t\t\tbreak;\n\n\t\t\tcase \"K\": // 0-11\n\t\t\t\tvalue = date.getHours() % 12;\n\t\t\t\tbreak;\n\n\t\t\tcase \"k\": // 1-24\n\t\t\t\tvalue = date.getHours() || 24;\n\t\t\t\tbreak;\n\n\t\t\t// Minute\n\t\t\tcase \"m\":\n\t\t\t\tvalue = date.getMinutes();\n\t\t\t\tbreak;\n\n\t\t\t// Second\n\t\t\tcase \"s\":\n\t\t\t\tvalue = date.getSeconds();\n\t\t\t\tbreak;\n\n\t\t\tcase \"S\":\n\t\t\t\tvalue = Math.round( date.getMilliseconds() * Math.pow( 10, length - 3 ) );\n\t\t\t\tbreak;\n\n\t\t\tcase \"A\":\n\t\t\t\tvalue = Math.round( dateMillisecondsInDay( date ) * Math.pow( 10, length - 3 ) );\n\t\t\t\tbreak;\n\n\t\t\t// Zone\n\t\t\tcase \"z\":\n\t\t\t\tbreak;\n\n\t\t\tcase \"v\":\n\n\t\t\t\t// v...vvv: \"{shortRegion}\", eg. \"PT\".\n\t\t\t\t// vvvv: \"{regionName} {Time}\",\n\t\t\t\t// e.g., \"Pacific Time\".\n\t\t\t\tif ( properties.genericTzName ) {\n\t\t\t\t\tvalue = properties.genericTzName;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t/* falls through */\n\t\t\tcase \"V\":\n\n\t\t\t\t//VVVV: \"{explarCity} {Time}\", e.g., \"Los Angeles Time\"\n\t\t\t\tif ( properties.timeZoneName ) {\n\t\t\t\t\tvalue = properties.timeZoneName;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( current === \"v\" ) {\n\t\t\t\t\tlength = 1;\n\t\t\t\t}\n\n\t\t\t/* falls through */\n\t\t\tcase \"O\":\n\n\t\t\t\t// O: \"{gmtFormat}+H;{gmtFormat}-H\" or \"{gmtZeroFormat}\", eg. \"GMT-8\" or \"GMT\".\n\t\t\t\t// OOOO: \"{gmtFormat}{hourFormat}\" or \"{gmtZeroFormat}\", eg. \"GMT-08:00\" or \"GMT\".\n\t\t\t\tif ( date.getTimezoneOffset() === 0 ) {\n\t\t\t\t\tvalue = properties.gmtZeroFormat;\n\t\t\t\t} else {\n\n\t\t\t\t\t// If O..OOO and timezone offset has non-zero minutes, show minutes.\n\t\t\t\t\tif ( length < 4 ) {\n\t\t\t\t\t\taux = date.getTimezoneOffset();\n\t\t\t\t\t\taux = properties.hourFormat[ aux % 60 - aux % 1 === 0 ? 0 : 1 ];\n\t\t\t\t\t} else {\n\t\t\t\t\t\taux = properties.hourFormat;\n\t\t\t\t\t}\n\n\t\t\t\t\tvalue = dateTimezoneHourFormat(\n\t\t\t\t\t\tdate,\n\t\t\t\t\t\taux,\n\t\t\t\t\t\ttimeSeparator,\n\t\t\t\t\t\tnumberFormatters\n\t\t\t\t\t);\n\t\t\t\t\tvalue = properties.gmtFormat.replace( /\\{0\\}/, value );\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"X\":\n\n\t\t\t\t// Same as x*, except it uses \"Z\" for zero offset.\n\t\t\t\tif ( date.getTimezoneOffset() === 0 ) {\n\t\t\t\t\tvalue = \"Z\";\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t/* falls through */\n\t\t\tcase \"x\":\n\n\t\t\t\t// x: hourFormat(\"+HH[mm];-HH[mm]\")\n\t\t\t\t// xx: hourFormat(\"+HHmm;-HHmm\")\n\t\t\t\t// xxx: hourFormat(\"+HH:mm;-HH:mm\")\n\t\t\t\t// xxxx: hourFormat(\"+HHmm[ss];-HHmm[ss]\")\n\t\t\t\t// xxxxx: hourFormat(\"+HH:mm[:ss];-HH:mm[:ss]\")\n\t\t\t\taux = date.getTimezoneOffset();\n\n\t\t\t\t// If x and timezone offset has non-zero minutes, use xx (i.e., show minutes).\n\t\t\t\tif ( length === 1 && aux % 60 - aux % 1 !== 0 ) {\n\t\t\t\t\tlength += 1;\n\t\t\t\t}\n\n\t\t\t\t// If (xxxx or xxxxx) and timezone offset has zero seconds, use xx or xxx\n\t\t\t\t// respectively (i.e., don't show optional seconds).\n\t\t\t\tif ( ( length === 4 || length === 5 ) && aux % 1 === 0 ) {\n\t\t\t\t\tlength -= 2;\n\t\t\t\t}\n\n\t\t\t\tvalue = [\n\t\t\t\t\t\"+HH;-HH\",\n\t\t\t\t\t\"+HHmm;-HHmm\",\n\t\t\t\t\t\"+HH:mm;-HH:mm\",\n\t\t\t\t\t\"+HHmmss;-HHmmss\",\n\t\t\t\t\t\"+HH:mm:ss;-HH:mm:ss\"\n\t\t\t\t][ length - 1 ];\n\n\t\t\t\tvalue = dateTimezoneHourFormat( date, value, \":\" );\n\t\t\t\tbreak;\n\n\t\t\t// timeSeparator\n\t\t\tcase \":\":\n\t\t\t\tvalue = timeSeparator;\n\t\t\t\tbreak;\n\n\t\t\t// ' literals.\n\t\t\tcase \"'\":\n\t\t\t\tvalue = removeLiteralQuotes( current );\n\t\t\t\tbreak;\n\n\t\t\t// Anything else is considered a literal, including [ ,:/.@#], chinese, japonese, and\n\t\t\t// arabic characters.\n\t\t\tdefault:\n\t\t\t\tvalue = current;\n\n\t\t}\n\t\tif ( typeof value === \"number\" ) {\n\t\t\tvalue = numberFormatters[ length ]( value );\n\t\t}\n\n\t\tdateField = dateFieldsMap[ chr ];\n\t\ttype = dateField ? dateField : \"literal\";\n\n\t\tpartsPush( parts, type, value );\n\t});\n\n\treturn parts;\n\n};\n\n\n\n\nvar dateToPartsFormatterFn = function( numberFormatters, properties ) {\n\treturn function dateToPartsFormatter( value ) {\n\t\tvalidateParameterPresence( value, \"value\" );\n\t\tvalidateParameterTypeDate( value, \"value\" );\n\n\t\treturn dateFormat( value, numberFormatters, properties );\n\t};\n\n};\n\n\n\n\nfunction optionsHasStyle( options ) {\n\treturn options.skeleton !== undefined ||\n\t\toptions.date !== undefined ||\n\t\toptions.time !== undefined ||\n\t\toptions.datetime !== undefined ||\n\t\toptions.raw !== undefined;\n}\n\nfunction validateRequiredCldr( path, value ) {\n\tvalidateCldr( path, value, {\n\t\tskip: [\n\t\t\t/dates\\/calendars\\/gregorian\\/dateTimeFormats\\/availableFormats/,\n\t\t\t/dates\\/calendars\\/gregorian\\/days\\/.*\\/short/,\n\t\t\t/dates\\/timeZoneNames\\/zone/,\n\t\t\t/dates\\/timeZoneNames\\/metazone/,\n\t\t\t/globalize-iana/,\n\t\t\t/supplemental\\/metaZones/,\n\t\t\t/supplemental\\/timeData\\/(?!001)/,\n\t\t\t/supplemental\\/weekData\\/(?!001)/\n\t\t]\n\t});\n}\n\nfunction validateOptionsPreset( options ) {\n\tvalidateOptionsPresetEach( \"date\", options );\n\tvalidateOptionsPresetEach( \"time\", options );\n\tvalidateOptionsPresetEach( \"datetime\", options );\n}\n\nfunction validateOptionsPresetEach( type, options ) {\n\tvar value = options[ type ];\n\tvalidate(\n\t\t\"E_INVALID_OPTIONS\",\n\t\t\"Invalid `{{type}: \\\"{value}\\\"}`.\",\n\t\tvalue === undefined || [ \"short\", \"medium\", \"long\", \"full\" ].indexOf( value ) !== -1,\n\t\t{ type: type, value: value }\n\t);\n}\n\nfunction validateOptionsSkeleton( pattern, skeleton ) {\n\tvalidate(\n\t\t\"E_INVALID_OPTIONS\",\n\t\t\"Invalid `{skeleton: \\\"{value}\\\"}` based on provided CLDR.\",\n\t\tskeleton === undefined || ( typeof pattern === \"string\" && pattern ),\n\t\t{ type: \"skeleton\", value: skeleton }\n\t);\n}\n\nfunction validateRequiredIana( timeZone ) {\n\treturn function( path, value ) {\n\n\t\tif ( !/globalize-iana/.test( path ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvalidate(\n\t\t\t\"E_MISSING_IANA_TZ\",\n\t\t\t\"Missing required IANA timezone content for `{timeZone}`: `{path}`.\",\n\t\t\tvalue,\n\t\t\t{\n\t\t\t\tpath: path.replace( /globalize-iana\\//, \"\" ),\n\t\t\t\ttimeZone: timeZone\n\t\t\t}\n\t\t);\n\t};\n}\n\n/**\n * .loadTimeZone( json )\n *\n * @json [JSON]\n *\n * Load IANA timezone data.\n */\nGlobalize.loadTimeZone = function( json ) {\n\tvar customData = {\n\t\t\t\"globalize-iana\": json\n\t\t};\n\n\tvalidateParameterPresence( json, \"json\" );\n\tvalidateParameterTypePlainObject( json, \"json\" );\n\n\tCldr.load( customData );\n};\n\n/**\n * .dateFormatter( options )\n *\n * @options [Object] see date/expand_pattern for more info.\n *\n * Return a date formatter function (of the form below) according to the given options and the\n * default/instance locale.\n *\n * fn( value )\n *\n * @value [Date]\n *\n * Return a function that formats a date according to the given `format` and the default/instance\n * locale.\n */\nGlobalize.dateFormatter =\nGlobalize.prototype.dateFormatter = function( options ) {\n\tvar args, dateToPartsFormatter, returnFn;\n\n\tvalidateParameterTypePlainObject( options, \"options\" );\n\n\toptions = options || {};\n\tif ( !optionsHasStyle( options ) ) {\n\t\toptions.skeleton = \"yMd\";\n\t}\n\targs = [ options ];\n\n\tdateToPartsFormatter = this.dateToPartsFormatter( options );\n\treturnFn = dateFormatterFn( dateToPartsFormatter );\n\truntimeBind( args, this.cldr, returnFn, [ dateToPartsFormatter ] );\n\n\treturn returnFn;\n};\n\n/**\n * .dateToPartsFormatter( options )\n *\n * @options [Object] see date/expand_pattern for more info.\n *\n * Return a date formatter function (of the form below) according to the given options and the\n * default/instance locale.\n *\n * fn( value )\n *\n * @value [Date]\n *\n * Return a function that formats a date to parts according to the given `format`\n * and the default/instance\n * locale.\n */\nGlobalize.dateToPartsFormatter =\nGlobalize.prototype.dateToPartsFormatter = function( options ) {\n\tvar args, cldr, numberFormatters, pad, pattern, properties, returnFn,\n\t\ttimeZone, ianaListener;\n\n\tvalidateParameterTypePlainObject( options, \"options\" );\n\n\tcldr = this.cldr;\n\toptions = options || {};\n\tif ( !optionsHasStyle( options ) ) {\n\t\toptions.skeleton = \"yMd\";\n\t}\n\n\tvalidateOptionsPreset( options );\n\tvalidateDefaultLocale( cldr );\n\n\ttimeZone = options.timeZone;\n\tvalidateParameterTypeString( timeZone, \"options.timeZone\" );\n\n\targs = [ options ];\n\n\tcldr.on( \"get\", validateRequiredCldr );\n\tif ( timeZone ) {\n\t\tianaListener = validateRequiredIana( timeZone );\n\t\tcldr.on( \"get\", ianaListener );\n\t}\n\ttry {\n\t\tpattern = dateExpandPattern( options, cldr );\n\t\tvalidateOptionsSkeleton( pattern, options.skeleton );\n\t\tproperties = dateFormatProperties( pattern, cldr, timeZone );\n\t} finally {\n\t\tcldr.off( \"get\", validateRequiredCldr );\n\t\tif ( ianaListener ) {\n\t\t\tcldr.off( \"get\", ianaListener );\n\t\t}\n\t}\n\n\t// Create needed number formatters.\n\tnumberFormatters = properties.numberFormatters;\n\tdelete properties.numberFormatters;\n\tfor ( pad in numberFormatters ) {\n\t\tnumberFormatters[ pad ] = this.numberFormatter({\n\t\t\traw: numberFormatters[ pad ]\n\t\t});\n\t}\n\n\treturnFn = dateToPartsFormatterFn( numberFormatters, properties );\n\n\truntimeBind( args, cldr, returnFn, [ numberFormatters, properties ] );\n\n\treturn returnFn;\n};\n\n/**\n * .dateParser( options )\n *\n * @options [Object] see date/expand_pattern for more info.\n *\n * Return a function that parses a string date according to the given `formats` and the\n * default/instance locale.\n */\nGlobalize.dateParser =\nGlobalize.prototype.dateParser = function( options ) {\n\tvar args, cldr, numberParser, parseProperties, pattern, returnFn, timeZone,\n\t\ttokenizerProperties;\n\n\tvalidateParameterTypePlainObject( options, \"options\" );\n\n\tcldr = this.cldr;\n\toptions = options || {};\n\tif ( !optionsHasStyle( options ) ) {\n\t\toptions.skeleton = \"yMd\";\n\t}\n\n\tvalidateOptionsPreset( options );\n\tvalidateDefaultLocale( cldr );\n\n\ttimeZone = options.timeZone;\n\tvalidateParameterTypeString( timeZone, \"options.timeZone\" );\n\n\targs = [ options ];\n\n\ttry {\n\t\tcldr.on( \"get\", validateRequiredCldr );\n\t\tif ( timeZone ) {\n\t\t\tcldr.on( \"get\", validateRequiredIana( timeZone ) );\n\t\t}\n\t\tpattern = dateExpandPattern( options, cldr );\n\t\tvalidateOptionsSkeleton( pattern, options.skeleton );\n\t\ttokenizerProperties = dateTokenizerProperties( pattern, cldr, timeZone );\n\t\tparseProperties = dateParseProperties( cldr, timeZone );\n\t} finally {\n\t\tcldr.off( \"get\", validateRequiredCldr );\n\t\tif ( timeZone ) {\n\t\t\tcldr.off( \"get\", validateRequiredIana( timeZone ) );\n\t\t}\n\t}\n\tnumberParser = this.numberParser({ raw: \"0\" });\n\n\treturnFn = dateParserFn( numberParser, parseProperties, tokenizerProperties );\n\n\truntimeBind( args, cldr, returnFn, [ numberParser, parseProperties, tokenizerProperties ] );\n\n\treturn returnFn;\n};\n\n/**\n * .formatDate( value, options )\n *\n * @value [Date]\n *\n * @options [Object] see date/expand_pattern for more info.\n *\n * Formats a date or number according to the given options string and the default/instance locale.\n */\nGlobalize.formatDate =\nGlobalize.prototype.formatDate = function( value, options ) {\n\tvalidateParameterPresence( value, \"value\" );\n\tvalidateParameterTypeDate( value, \"value\" );\n\n\treturn this.dateFormatter( options )( value );\n};\n\n/**\n * .formatDateToParts( value, options )\n *\n * @value [Date]\n *\n * @options [Object] see date/expand_pattern for more info.\n *\n * Formats a date or number to parts according to the given options and the default/instance locale.\n */\nGlobalize.formatDateToParts =\nGlobalize.prototype.formatDateToParts = function( value, options ) {\n\tvalidateParameterPresence( value, \"value\" );\n\tvalidateParameterTypeDate( value, \"value\" );\n\n\treturn this.dateToPartsFormatter( options )( value );\n};\n\n/**\n * .parseDate( value, options )\n *\n * @value [String]\n *\n * @options [Object] see date/expand_pattern for more info.\n *\n * Return a Date instance or null.\n */\nGlobalize.parseDate =\nGlobalize.prototype.parseDate = function( value, options ) {\n\tvalidateParameterPresence( value, \"value\" );\n\tvalidateParameterTypeString( value, \"value\" );\n\n\treturn this.dateParser( options )( value );\n};\n\nreturn Globalize;\n\n\n\n\n}));\n","/**\n * Globalize v1.7.0\n *\n * https://github.com/globalizejs/globalize\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2021-08-02T11:53Z\n */\n/*!\n * Globalize v1.7.0 2021-08-02T11:53Z Released under the MIT license\n * http://git.io/TrdQbw\n */\n(function( root, factory ) {\n\n\t// UMD returnExports\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD\n\t\tdefine([\n\t\t\t\"cldr\",\n\t\t\t\"../globalize\",\n\t\t\t\"cldr/event\"\n\t\t], factory );\n\t} else if ( typeof exports === \"object\" ) {\n\n\t\t// Node, CommonJS\n\t\tmodule.exports = factory( require( \"cldrjs\" ), require( \"../globalize\" ) );\n\t} else {\n\n\t\t// Extend global\n\t\tfactory( root.Cldr, root.Globalize );\n\t}\n}(this, function( Cldr, Globalize ) {\n\nvar alwaysArray = Globalize._alwaysArray,\n\tcreateError = Globalize._createError,\n\tisPlainObject = Globalize._isPlainObject,\n\truntimeBind = Globalize._runtimeBind,\n\tvalidateDefaultLocale = Globalize._validateDefaultLocale,\n\tvalidate = Globalize._validate,\n\tvalidateParameterPresence = Globalize._validateParameterPresence,\n\tvalidateParameterType = Globalize._validateParameterType,\n\tvalidateParameterTypePlainObject = Globalize._validateParameterTypePlainObject;\nvar MessageFormat;\n/* eslint-disable */\nMessageFormat = (function() {\nMessageFormat._parse = (function() {\n\n /*\n * Generated by PEG.js 0.8.0.\n *\n * http://pegjs.majda.cz/\n */\n\n function peg$subclass(child, parent) {\n function ctor() { this.constructor = child; }\n ctor.prototype = parent.prototype;\n child.prototype = new ctor();\n }\n\n function SyntaxError(message, expected, found, offset, line, column) {\n this.message = message;\n this.expected = expected;\n this.found = found;\n this.offset = offset;\n this.line = line;\n this.column = column;\n\n this.name = \"SyntaxError\";\n }\n\n peg$subclass(SyntaxError, Error);\n\n function parse(input) {\n var options = arguments.length > 1 ? arguments[1] : {},\n\n peg$FAILED = {},\n\n peg$startRuleFunctions = { start: peg$parsestart },\n peg$startRuleFunction = peg$parsestart,\n\n peg$c0 = [],\n peg$c1 = function(st) {\n return { type: 'messageFormatPattern', statements: st };\n },\n peg$c2 = peg$FAILED,\n peg$c3 = \"{\",\n peg$c4 = { type: \"literal\", value: \"{\", description: \"\\\"{\\\"\" },\n peg$c5 = null,\n peg$c6 = \",\",\n peg$c7 = { type: \"literal\", value: \",\", description: \"\\\",\\\"\" },\n peg$c8 = \"}\",\n peg$c9 = { type: \"literal\", value: \"}\", description: \"\\\"}\\\"\" },\n peg$c10 = function(argIdx, efmt) {\n var res = {\n type: \"messageFormatElement\",\n argumentIndex: argIdx\n };\n if (efmt && efmt.length) {\n res.elementFormat = efmt[1];\n } else {\n res.output = true;\n }\n return res;\n },\n peg$c11 = \"plural\",\n peg$c12 = { type: \"literal\", value: \"plural\", description: \"\\\"plural\\\"\" },\n peg$c13 = function(t, s) {\n return { type: \"elementFormat\", key: t, val: s };\n },\n peg$c14 = \"selectordinal\",\n peg$c15 = { type: \"literal\", value: \"selectordinal\", description: \"\\\"selectordinal\\\"\" },\n peg$c16 = \"select\",\n peg$c17 = { type: \"literal\", value: \"select\", description: \"\\\"select\\\"\" },\n peg$c18 = function(t, p) {\n return { type: \"elementFormat\", key: t, val: p };\n },\n peg$c19 = function(op, pf) {\n return { type: \"pluralFormatPattern\", pluralForms: pf, offset: op || 0 };\n },\n peg$c20 = \"offset\",\n peg$c21 = { type: \"literal\", value: \"offset\", description: \"\\\"offset\\\"\" },\n peg$c22 = \":\",\n peg$c23 = { type: \"literal\", value: \":\", description: \"\\\":\\\"\" },\n peg$c24 = function(d) { return d; },\n peg$c25 = function(k, mfp) {\n return { key: k, val: mfp };\n },\n peg$c26 = function(i) { return i; },\n peg$c27 = \"=\",\n peg$c28 = { type: \"literal\", value: \"=\", description: \"\\\"=\\\"\" },\n peg$c29 = function(pf) { return { type: \"selectFormatPattern\", pluralForms: pf }; },\n peg$c30 = function(p) { return p; },\n peg$c31 = \"#\",\n peg$c32 = { type: \"literal\", value: \"#\", description: \"\\\"#\\\"\" },\n peg$c33 = function() { return {type: 'octothorpe'}; },\n peg$c34 = function(s) { return { type: \"string\", val: s.join('') }; },\n peg$c35 = { type: \"other\", description: \"identifier\" },\n peg$c36 = /^[0-9a-zA-Z$_]/,\n peg$c37 = { type: \"class\", value: \"[0-9a-zA-Z$_]\", description: \"[0-9a-zA-Z$_]\" },\n peg$c38 = /^[^ \\t\\n\\r,.+={}]/,\n peg$c39 = { type: \"class\", value: \"[^ \\\\t\\\\n\\\\r,.+={}]\", description: \"[^ \\\\t\\\\n\\\\r,.+={}]\" },\n peg$c40 = function(s) { return s; },\n peg$c41 = function(chars) { return chars.join(''); },\n peg$c42 = /^[^{}#\\\\\\0-\\x1F \\t\\n\\r]/,\n peg$c43 = { type: \"class\", value: \"[^{}#\\\\\\\\\\\\0-\\\\x1F \\\\t\\\\n\\\\r]\", description: \"[^{}#\\\\\\\\\\\\0-\\\\x1F \\\\t\\\\n\\\\r]\" },\n peg$c44 = function(x) { return x; },\n peg$c45 = \"\\\\\\\\\",\n peg$c46 = { type: \"literal\", value: \"\\\\\\\\\", description: \"\\\"\\\\\\\\\\\\\\\\\\\"\" },\n peg$c47 = function() { return \"\\\\\"; },\n peg$c48 = \"\\\\#\",\n peg$c49 = { type: \"literal\", value: \"\\\\#\", description: \"\\\"\\\\\\\\#\\\"\" },\n peg$c50 = function() { return \"#\"; },\n peg$c51 = \"\\\\{\",\n peg$c52 = { type: \"literal\", value: \"\\\\{\", description: \"\\\"\\\\\\\\{\\\"\" },\n peg$c53 = function() { return \"\\u007B\"; },\n peg$c54 = \"\\\\}\",\n peg$c55 = { type: \"literal\", value: \"\\\\}\", description: \"\\\"\\\\\\\\}\\\"\" },\n peg$c56 = function() { return \"\\u007D\"; },\n peg$c57 = \"\\\\u\",\n peg$c58 = { type: \"literal\", value: \"\\\\u\", description: \"\\\"\\\\\\\\u\\\"\" },\n peg$c59 = function(h1, h2, h3, h4) {\n return String.fromCharCode(parseInt(\"0x\" + h1 + h2 + h3 + h4));\n },\n peg$c60 = /^[0-9]/,\n peg$c61 = { type: \"class\", value: \"[0-9]\", description: \"[0-9]\" },\n peg$c62 = function(ds) {\n //the number might start with 0 but must not be interpreted as an octal number\n //Hence, the base is passed to parseInt explicitely\n return parseInt((ds.join('')), 10);\n },\n peg$c63 = /^[0-9a-fA-F]/,\n peg$c64 = { type: \"class\", value: \"[0-9a-fA-F]\", description: \"[0-9a-fA-F]\" },\n peg$c65 = { type: \"other\", description: \"whitespace\" },\n peg$c66 = function(w) { return w.join(''); },\n peg$c67 = /^[ \\t\\n\\r]/,\n peg$c68 = { type: \"class\", value: \"[ \\\\t\\\\n\\\\r]\", description: \"[ \\\\t\\\\n\\\\r]\" },\n\n peg$currPos = 0,\n peg$reportedPos = 0,\n peg$cachedPos = 0,\n peg$cachedPosDetails = { line: 1, column: 1, seenCR: false },\n peg$maxFailPos = 0,\n peg$maxFailExpected = [],\n peg$silentFails = 0,\n\n peg$result;\n\n if (\"startRule\" in options) {\n if (!(options.startRule in peg$startRuleFunctions)) {\n throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n }\n\n peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n }\n\n function text() {\n return input.substring(peg$reportedPos, peg$currPos);\n }\n\n function offset() {\n return peg$reportedPos;\n }\n\n function line() {\n return peg$computePosDetails(peg$reportedPos).line;\n }\n\n function column() {\n return peg$computePosDetails(peg$reportedPos).column;\n }\n\n function expected(description) {\n throw peg$buildException(\n null,\n [{ type: \"other\", description: description }],\n peg$reportedPos\n );\n }\n\n function error(message) {\n throw peg$buildException(message, null, peg$reportedPos);\n }\n\n function peg$computePosDetails(pos) {\n function advance(details, startPos, endPos) {\n var p, ch;\n\n for (p = startPos; p < endPos; p++) {\n ch = input.charAt(p);\n if (ch === \"\\n\") {\n if (!details.seenCR) { details.line++; }\n details.column = 1;\n details.seenCR = false;\n } else if (ch === \"\\r\" || ch === \"\\u2028\" || ch === \"\\u2029\") {\n details.line++;\n details.column = 1;\n details.seenCR = true;\n } else {\n details.column++;\n details.seenCR = false;\n }\n }\n }\n\n if (peg$cachedPos !== pos) {\n if (peg$cachedPos > pos) {\n peg$cachedPos = 0;\n peg$cachedPosDetails = { line: 1, column: 1, seenCR: false };\n }\n advance(peg$cachedPosDetails, peg$cachedPos, pos);\n peg$cachedPos = pos;\n }\n\n return peg$cachedPosDetails;\n }\n\n function peg$fail(expected) {\n if (peg$currPos < peg$maxFailPos) { return; }\n\n if (peg$currPos > peg$maxFailPos) {\n peg$maxFailPos = peg$currPos;\n peg$maxFailExpected = [];\n }\n\n peg$maxFailExpected.push(expected);\n }\n\n function peg$buildException(message, expected, pos) {\n function cleanupExpected(expected) {\n var i = 1;\n\n expected.sort(function(a, b) {\n if (a.description < b.description) {\n return -1;\n } else if (a.description > b.description) {\n return 1;\n } else {\n return 0;\n }\n });\n\n while (i < expected.length) {\n if (expected[i - 1] === expected[i]) {\n expected.splice(i, 1);\n } else {\n i++;\n }\n }\n }\n\n function buildMessage(expected, found) {\n function stringEscape(s) {\n function hex(ch) { return ch.charCodeAt(0).toString(16).toUpperCase(); }\n\n return s\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\"/g, '\\\\\"')\n .replace(/\\x08/g, '\\\\b')\n .replace(/\\t/g, '\\\\t')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\f/g, '\\\\f')\n .replace(/\\r/g, '\\\\r')\n .replace(/[\\x00-\\x07\\x0B\\x0E\\x0F]/g, function(ch) { return '\\\\x0' + hex(ch); })\n .replace(/[\\x10-\\x1F\\x80-\\xFF]/g, function(ch) { return '\\\\x' + hex(ch); })\n .replace(/[\\u0180-\\u0FFF]/g, function(ch) { return '\\\\u0' + hex(ch); })\n .replace(/[\\u1080-\\uFFFF]/g, function(ch) { return '\\\\u' + hex(ch); });\n }\n\n var expectedDescs = new Array(expected.length),\n expectedDesc, foundDesc, i;\n\n for (i = 0; i < expected.length; i++) {\n expectedDescs[i] = expected[i].description;\n }\n\n expectedDesc = expected.length > 1\n ? expectedDescs.slice(0, -1).join(\", \")\n + \" or \"\n + expectedDescs[expected.length - 1]\n : expectedDescs[0];\n\n foundDesc = found ? \"\\\"\" + stringEscape(found) + \"\\\"\" : \"end of input\";\n\n return \"Expected \" + expectedDesc + \" but \" + foundDesc + \" found.\";\n }\n\n var posDetails = peg$computePosDetails(pos),\n found = pos < input.length ? input.charAt(pos) : null;\n\n if (expected !== null) {\n cleanupExpected(expected);\n }\n\n return new SyntaxError(\n message !== null ? message : buildMessage(expected, found),\n expected,\n found,\n pos,\n posDetails.line,\n posDetails.column\n );\n }\n\n function peg$parsestart() {\n var s0;\n\n s0 = peg$parsemessageFormatPattern();\n\n return s0;\n }\n\n function peg$parsemessageFormatPattern() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parsemessageFormatElement();\n if (s2 === peg$FAILED) {\n s2 = peg$parsestring();\n if (s2 === peg$FAILED) {\n s2 = peg$parseoctothorpe();\n }\n }\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parsemessageFormatElement();\n if (s2 === peg$FAILED) {\n s2 = peg$parsestring();\n if (s2 === peg$FAILED) {\n s2 = peg$parseoctothorpe();\n }\n }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c1(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsemessageFormatElement() {\n var s0, s1, s2, s3, s4, s5, s6;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 123) {\n s1 = peg$c3;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c4); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseid();\n if (s3 !== peg$FAILED) {\n s4 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 44) {\n s5 = peg$c6;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c7); }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parseelementFormat();\n if (s6 !== peg$FAILED) {\n s5 = [s5, s6];\n s4 = s5;\n } else {\n peg$currPos = s4;\n s4 = peg$c2;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$c2;\n }\n if (s4 === peg$FAILED) {\n s4 = peg$c5;\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n if (s5 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s6 = peg$c8;\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c9); }\n }\n if (s6 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c10(s3, s4);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n\n return s0;\n }\n\n function peg$parseelementFormat() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (s1 !== peg$FAILED) {\n if (input.substr(peg$currPos, 6) === peg$c11) {\n s2 = peg$c11;\n peg$currPos += 6;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c12); }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s4 = peg$c6;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c7); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n if (s5 !== peg$FAILED) {\n s6 = peg$parsepluralFormatPattern();\n if (s6 !== peg$FAILED) {\n s7 = peg$parse_();\n if (s7 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c13(s2, s6);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (s1 !== peg$FAILED) {\n if (input.substr(peg$currPos, 13) === peg$c14) {\n s2 = peg$c14;\n peg$currPos += 13;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c15); }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s4 = peg$c6;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c7); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n if (s5 !== peg$FAILED) {\n s6 = peg$parsepluralFormatPattern();\n if (s6 !== peg$FAILED) {\n s7 = peg$parse_();\n if (s7 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c13(s2, s6);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (s1 !== peg$FAILED) {\n if (input.substr(peg$currPos, 6) === peg$c16) {\n s2 = peg$c16;\n peg$currPos += 6;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c17); }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s4 = peg$c6;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c7); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n if (s5 !== peg$FAILED) {\n s6 = peg$parseselectFormatPattern();\n if (s6 !== peg$FAILED) {\n s7 = peg$parse_();\n if (s7 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c13(s2, s6);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (s1 !== peg$FAILED) {\n s2 = peg$parseid();\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parseargStylePattern();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parseargStylePattern();\n }\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c18(s2, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parsepluralFormatPattern() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parseoffsetPattern();\n if (s1 === peg$FAILED) {\n s1 = peg$c5;\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsepluralForm();\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsepluralForm();\n }\n } else {\n s2 = peg$c2;\n }\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c19(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n\n return s0;\n }\n\n function peg$parseoffsetPattern() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (s1 !== peg$FAILED) {\n if (input.substr(peg$currPos, 6) === peg$c20) {\n s2 = peg$c20;\n peg$currPos += 6;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c21); }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 58) {\n s4 = peg$c22;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c23); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n if (s5 !== peg$FAILED) {\n s6 = peg$parsedigits();\n if (s6 !== peg$FAILED) {\n s7 = peg$parse_();\n if (s7 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c24(s6);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n\n return s0;\n }\n\n function peg$parsepluralForm() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (s1 !== peg$FAILED) {\n s2 = peg$parsepluralKey();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 123) {\n s4 = peg$c3;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c4); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n if (s5 !== peg$FAILED) {\n s6 = peg$parsemessageFormatPattern();\n if (s6 !== peg$FAILED) {\n s7 = peg$parse_();\n if (s7 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s8 = peg$c8;\n peg$currPos++;\n } else {\n s8 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c9); }\n }\n if (s8 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c25(s2, s6);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n\n return s0;\n }\n\n function peg$parsepluralKey() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = peg$parseid();\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c26(s1);\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 61) {\n s1 = peg$c27;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c28); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsedigits();\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c24(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n }\n\n return s0;\n }\n\n function peg$parseselectFormatPattern() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseselectForm();\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseselectForm();\n }\n } else {\n s1 = peg$c2;\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c29(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseselectForm() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (s1 !== peg$FAILED) {\n s2 = peg$parseid();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 123) {\n s4 = peg$c3;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c4); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n if (s5 !== peg$FAILED) {\n s6 = peg$parsemessageFormatPattern();\n if (s6 !== peg$FAILED) {\n s7 = peg$parse_();\n if (s7 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s8 = peg$c8;\n peg$currPos++;\n } else {\n s8 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c9); }\n }\n if (s8 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c25(s2, s6);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n\n return s0;\n }\n\n function peg$parseargStylePattern() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s2 = peg$c6;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c7); }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n if (s3 !== peg$FAILED) {\n s4 = peg$parseid();\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n if (s5 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c30(s4);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n\n return s0;\n }\n\n function peg$parseoctothorpe() {\n var s0, s1;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 35) {\n s1 = peg$c31;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c32); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c33();\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsestring() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parsechars();\n if (s2 === peg$FAILED) {\n s2 = peg$parsewhitespace();\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parsechars();\n if (s2 === peg$FAILED) {\n s2 = peg$parsewhitespace();\n }\n }\n } else {\n s1 = peg$c2;\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c34(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseid() {\n var s0, s1, s2, s3, s4, s5, s6;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n s3 = peg$currPos;\n if (peg$c36.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c37); }\n }\n if (s4 !== peg$FAILED) {\n s5 = [];\n if (peg$c38.test(input.charAt(peg$currPos))) {\n s6 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c39); }\n }\n while (s6 !== peg$FAILED) {\n s5.push(s6);\n if (peg$c38.test(input.charAt(peg$currPos))) {\n s6 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c39); }\n }\n }\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$c2;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$c2;\n }\n if (s3 !== peg$FAILED) {\n s3 = input.substring(s2, peg$currPos);\n }\n s2 = s3;\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c40(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c35); }\n }\n\n return s0;\n }\n\n function peg$parsechars() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parsechar();\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parsechar();\n }\n } else {\n s1 = peg$c2;\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c41(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsechar() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n if (peg$c42.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c43); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c44(s1);\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c45) {\n s1 = peg$c45;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c46); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c47();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c48) {\n s1 = peg$c48;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c49); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c50();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c51) {\n s1 = peg$c51;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c52); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c53();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c54) {\n s1 = peg$c54;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c55); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c56();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c57) {\n s1 = peg$c57;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c58); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsehexDigit();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsehexDigit();\n if (s3 !== peg$FAILED) {\n s4 = peg$parsehexDigit();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsehexDigit();\n if (s5 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c59(s2, s3, s4, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n }\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parsedigits() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = [];\n if (peg$c60.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c61); }\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n if (peg$c60.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c61); }\n }\n }\n } else {\n s1 = peg$c2;\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c62(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsehexDigit() {\n var s0;\n\n if (peg$c63.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c64); }\n }\n\n return s0;\n }\n\n function peg$parse_() {\n var s0, s1, s2;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parsewhitespace();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parsewhitespace();\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c66(s1);\n }\n s0 = s1;\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c65); }\n }\n\n return s0;\n }\n\n function peg$parsewhitespace() {\n var s0;\n\n if (peg$c67.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c68); }\n }\n\n return s0;\n }\n\n peg$result = peg$startRuleFunction();\n\n if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n return peg$result;\n } else {\n if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n peg$fail({ type: \"end\", description: \"end of input\" });\n }\n\n throw peg$buildException(null, peg$maxFailExpected, peg$maxFailPos);\n }\n }\n\n return {\n SyntaxError: SyntaxError,\n parse: parse\n };\n}()).parse;\n\n\n/** @file messageformat.js - ICU PluralFormat + SelectFormat for JavaScript\n * @author Alex Sexton - @SlexAxton\n * @version 0.3.0-1\n * @copyright 2012-2015 Alex Sexton, Eemeli Aro, and Contributors\n * @license To use or fork, MIT. To contribute back, Dojo CLA */\n\n\n/** Utility function for quoting an Object's key value iff required\n * @private */\nfunction propname(key, obj) {\n if (/^[A-Z_$][0-9A-Z_$]*$/i.test(key)) {\n return obj ? obj + '.' + key : key;\n } else {\n var jkey = JSON.stringify(key);\n return obj ? obj + '[' + jkey + ']' : jkey;\n }\n};\n\n\n/** Create a new message formatter\n *\n * @class\n * @global\n * @param {string|string[]} [locale=\"en\"] - The locale to use, with fallbacks\n * @param {function} [pluralFunc] - Optional custom pluralization function\n * @param {function[]} [formatters] - Optional custom formatting functions */\nfunction MessageFormat(locale, pluralFunc, formatters) {\n this.lc = [locale]; \n this.runtime.pluralFuncs = {};\n this.runtime.pluralFuncs[this.lc[0]] = pluralFunc;\n this.runtime.fmt = {};\n if (formatters) for (var f in formatters) {\n this.runtime.fmt[f] = formatters[f];\n }\n}\n\n\n\n\n/** Parse an input string to its AST\n *\n * Precompiled from `lib/messageformat-parser.pegjs` by\n * {@link http://pegjs.org/ PEG.js}. Included in MessageFormat object\n * to enable testing.\n *\n * @private */\n\n\n\n/** Pluralization functions from\n * {@link http://github.com/eemeli/make-plural.js make-plural}\n *\n * @memberof MessageFormat\n * @type Object. */\nMessageFormat.plurals = {};\n\n\n/** Default number formatting functions in the style of ICU's\n * {@link http://icu-project.org/apiref/icu4j/com/ibm/icu/text/MessageFormat.html simpleArg syntax}\n * implemented using the\n * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl Intl}\n * object defined by ECMA-402.\n *\n * **Note**: Intl is not defined in default Node until 0.11.15 / 0.12.0, so\n * earlier versions require a {@link https://www.npmjs.com/package/intl polyfill}.\n * Therefore {@link MessageFormat.withIntlSupport} needs to be true for these\n * functions to be available for inclusion in the output.\n *\n * @see MessageFormat#setIntlSupport\n *\n * @namespace\n * @memberof MessageFormat\n * @property {function} number - Represent a number as an integer, percent or currency value\n * @property {function} date - Represent a date as a full/long/default/short string\n * @property {function} time - Represent a time as a full/long/default/short string\n *\n * @example\n * > var MessageFormat = require('messageformat');\n * > var mf = (new MessageFormat('en')).setIntlSupport(true);\n * > mf.currency = 'EUR';\n * > var mfunc = mf.compile(\"The total is {V,number,currency}.\");\n * > mfunc({V:5.5})\n * \"The total is €5.50.\"\n *\n * @example\n * > var MessageFormat = require('messageformat');\n * > var mf = new MessageFormat('en', null, {number: MessageFormat.number});\n * > mf.currency = 'EUR';\n * > var mfunc = mf.compile(\"The total is {V,number,currency}.\");\n * > mfunc({V:5.5})\n * \"The total is €5.50.\" */\nMessageFormat.formatters = {};\n\n/** Enable or disable support for the default formatters, which require the\n * `Intl` object. Note that this can't be autodetected, as the environment\n * in which the formatted text is compiled into Javascript functions is not\n * necessarily the same environment in which they will get executed.\n *\n * @see MessageFormat.formatters\n *\n * @memberof MessageFormat\n * @param {boolean} [enable=true]\n * @returns {Object} The MessageFormat instance, to allow for chaining\n * @example\n * > var Intl = require('intl');\n * > var MessageFormat = require('messageformat');\n * > var mf = (new MessageFormat('en')).setIntlSupport(true);\n * > mf.currency = 'EUR';\n * > mf.compile(\"The total is {V,number,currency}.\")({V:5.5});\n * \"The total is €5.50.\" */\n\n\n\n/** A set of utility functions that are called by the compiled Javascript\n * functions, these are included locally in the output of {@link\n * MessageFormat#compile compile()}.\n *\n * @namespace\n * @memberof MessageFormat */\nMessageFormat.prototype.runtime = {\n\n /** Utility function for `#` in plural rules\n *\n * @param {number} value - The value to operate on\n * @param {number} [offset=0] - An optional offset, set by the surrounding context */\n number: function(value, offset) {\n if (isNaN(value)) throw new Error(\"'\" + value + \"' isn't a number.\");\n return value - (offset || 0);\n },\n\n /** Utility function for `{N, plural|selectordinal, ...}`\n *\n * @param {number} value - The key to use to find a pluralization rule\n * @param {number} offset - An offset to apply to `value`\n * @param {function} lcfunc - A locale function from `pluralFuncs`\n * @param {Object.} data - The object from which results are looked up\n * @param {?boolean} isOrdinal - If true, use ordinal rather than cardinal rules\n * @returns {string} The result of the pluralization */\n plural: function(value, offset, lcfunc, data, isOrdinal) {\n if ({}.hasOwnProperty.call(data, value)) return data[value]();\n if (offset) value -= offset;\n var key = lcfunc(value, isOrdinal);\n if (key in data) return data[key]();\n return data.other();\n },\n\n /** Utility function for `{N, select, ...}`\n *\n * @param {number} value - The key to use to find a selection\n * @param {Object.} data - The object from which results are looked up\n * @returns {string} The result of the select statement */\n select: function(value, data) {\n if ({}.hasOwnProperty.call(data, value)) return data[value]();\n return data.other()\n },\n\n /** Pluralization functions included in compiled output\n * @instance\n * @type Object. */\n pluralFuncs: {},\n\n /** Custom formatting functions called by `{var, fn[, args]*}` syntax\n *\n * For examples, see {@link MessageFormat.formatters}\n *\n * @instance\n * @see MessageFormat.formatters\n * @type Object. */\n fmt: {},\n\n /** Custom stringifier to clean up browser inconsistencies\n * @instance */\n toString: function () {\n var _stringify = function(o, level) {\n if (typeof o != 'object') {\n var funcStr = o.toString().replace(/^(function )\\w*/, '$1');\n var indent = /([ \\t]*)\\S.*$/.exec(funcStr);\n return indent ? funcStr.replace(new RegExp('^' + indent[1], 'mg'), '') : funcStr;\n }\n var s = [];\n for (var i in o) if (i != 'toString') {\n if (level == 0) s.push('var ' + i + ' = ' + _stringify(o[i], level + 1) + ';\\n');\n else s.push(propname(i) + ': ' + _stringify(o[i], level + 1));\n }\n if (level == 0) return s.join('');\n if (s.length == 0) return '{}';\n var indent = ' '; while (--level) indent += ' ';\n return '{\\n' + s.join(',\\n').replace(/^/gm, indent) + '\\n}';\n };\n return _stringify(this, 0);\n }\n};\n\n\n/** Recursively map an AST to its resulting string\n *\n * @memberof MessageFormat\n *\n * @param ast - the Ast node for which the JS code should be generated\n *\n * @private */\nMessageFormat.prototype._precompile = function(ast, data) {\n data = data || { keys: {}, offset: {} };\n var r = [], i, tmp, args = [];\n\n switch ( ast.type ) {\n case 'messageFormatPattern':\n for ( i = 0; i < ast.statements.length; ++i ) {\n r.push(this._precompile( ast.statements[i], data ));\n }\n tmp = r.join(' + ') || '\"\"';\n return data.pf_count ? tmp : 'function(d) { return ' + tmp + '; }';\n\n case 'messageFormatElement':\n data.pf_count = data.pf_count || 0;\n if ( ast.output ) {\n return propname(ast.argumentIndex, 'd');\n }\n else {\n data.keys[data.pf_count] = ast.argumentIndex;\n return this._precompile( ast.elementFormat, data );\n }\n return '';\n\n case 'elementFormat':\n args = [ propname(data.keys[data.pf_count], 'd') ];\n switch (ast.key) {\n case 'select':\n args.push(this._precompile(ast.val, data));\n return 'select(' + args.join(', ') + ')';\n case 'selectordinal':\n args = args.concat([ 0, propname(this.lc[0], 'pluralFuncs'), this._precompile(ast.val, data), 1 ]);\n return 'plural(' + args.join(', ') + ')';\n case 'plural':\n data.offset[data.pf_count || 0] = ast.val.offset || 0;\n args = args.concat([ data.offset[data.pf_count] || 0, propname(this.lc[0], 'pluralFuncs'), this._precompile(ast.val, data) ]);\n return 'plural(' + args.join(', ') + ')';\n default:\n if (this.withIntlSupport && !(ast.key in this.runtime.fmt) && (ast.key in MessageFormat.formatters)) {\n tmp = MessageFormat.formatters[ast.key];\n this.runtime.fmt[ast.key] = (typeof tmp(this) == 'function') ? tmp(this) : tmp;\n }\n args.push(JSON.stringify(this.lc));\n if (ast.val && ast.val.length) args.push(JSON.stringify(ast.val.length == 1 ? ast.val[0] : ast.val));\n return 'fmt.' + ast.key + '(' + args.join(', ') + ')';\n }\n\n case 'pluralFormatPattern':\n case 'selectFormatPattern':\n data.pf_count = data.pf_count || 0;\n if (ast.type == 'selectFormatPattern') data.offset[data.pf_count] = 0;\n var needOther = true;\n for (i = 0; i < ast.pluralForms.length; ++i) {\n var key = ast.pluralForms[i].key;\n if (key === 'other') needOther = false;\n var data_copy = JSON.parse(JSON.stringify(data));\n data_copy.pf_count++;\n r.push(propname(key) + ': function() { return ' + this._precompile(ast.pluralForms[i].val, data_copy) + ';}');\n }\n if (needOther) throw new Error(\"No 'other' form found in \" + ast.type + \" \" + data.pf_count);\n return '{ ' + r.join(', ') + ' }';\n\n case 'string':\n return JSON.stringify(ast.val || \"\");\n\n case 'octothorpe':\n if (!data.pf_count) return '\"#\"';\n args = [ propname(data.keys[data.pf_count-1], 'd') ];\n if (data.offset[data.pf_count-1]) args.push(data.offset[data.pf_count-1]);\n return 'number(' + args.join(', ') + ')';\n\n default:\n throw new Error( 'Bad AST type: ' + ast.type );\n }\n};\n\n/** Compile messages into an executable function with clean string\n * representation.\n *\n * If `messages` is a single string including ICU MessageFormat declarations,\n * `opt` is ignored and the returned function takes a single Object parameter\n * `d` representing each of the input's defined variables. The returned\n * function will be defined in a local scope that includes all the required\n * runtime variables.\n *\n * If `messages` is a map of keys to strings, or a map of namespace keys to\n * such key/string maps, the returned function will fill the specified global\n * with javascript functions matching the structure of the input. In such use,\n * the output of `compile()` is expected to be serialized using `.toString()`,\n * and will include definitions of the runtime functions. If `opt.global` is\n * null, calling the output function will return the object itself.\n *\n * Together, the input parameters should match the following patterns:\n * ```js\n * messages = \"string\" || { key0: \"string0\", key1: \"string1\", ... } || {\n * ns0: { key0: \"string0\", key1: \"string1\", ... },\n * ns1: { key0: \"string0\", key1: \"string1\", ... },\n * ...\n * }\n *\n * opt = null || {\n * locale: null || {\n * ns0: \"lc0\" || [ \"lc0\", ... ],\n * ns1: \"lc1\" || [ \"lc1\", ... ],\n * ...\n * },\n * global: null || \"module.exports\" || \"exports\" || \"i18n\" || ...\n * }\n * ```\n *\n * @memberof MessageFormat\n * @param {string|Object}\n * messages - The input message(s) to be compiled, in ICU MessageFormat\n * @param {Object} [opt={}] - Options controlling output for non-simple intput\n * @param {Object} [opt.locale] - The locales to use for the messages, with a\n * structure matching that of `messages`\n * @param {string} [opt.global=\"\"] - The global variable that the output\n * function should use, or a null string for none. \"exports\" and\n * \"module.exports\" are recognised as special cases.\n * @returns {function} The first match found for the given locale(s)\n *\n * @example\n * > var MessageFormat = require('messageformat'),\n * ... mf = new MessageFormat('en'),\n * ... mfunc0 = mf.compile('A {TYPE} example.');\n * > mfunc0({TYPE:'simple'})\n * 'A simple example.'\n * > mfunc0.toString()\n * 'function (d) { return \"A \" + d.TYPE + \" example.\"; }'\n *\n * @example\n * > var msgSet = { a: 'A {TYPE} example.',\n * ... b: 'This has {COUNT, plural, one{one member} other{# members}}.' },\n * ... mfuncSet = mf.compile(msgSet);\n * > mfuncSet().a({TYPE:'more complex'})\n * 'A more complex example.'\n * > mfuncSet().b({COUNT:2})\n * 'This has 2 members.'\n *\n * > console.log(mfuncSet.toString())\n * function anonymous() {\n * var number = function (value, offset) {\n * if (isNaN(value)) throw new Error(\"'\" + value + \"' isn't a number.\");\n * return value - (offset || 0);\n * };\n * var plural = function (value, offset, lcfunc, data, isOrdinal) {\n * if ({}.hasOwnProperty.call(data, value)) return data[value]();\n * if (offset) value -= offset;\n * var key = lcfunc(value, isOrdinal);\n * if (key in data) return data[key]();\n * return data.other();\n * };\n * var select = function (value, data) {\n * if ({}.hasOwnProperty.call(data, value)) return data[value]();\n * return data.other()\n * };\n * var pluralFuncs = {\n * en: function (n, ord) {\n * var s = String(n).split('.'), v0 = !s[1], t0 = Number(s[0]) == n,\n * n10 = t0 && s[0].slice(-1), n100 = t0 && s[0].slice(-2);\n * if (ord) return (n10 == 1 && n100 != 11) ? 'one'\n * : (n10 == 2 && n100 != 12) ? 'two'\n * : (n10 == 3 && n100 != 13) ? 'few'\n * : 'other';\n * return (n == 1 && v0) ? 'one' : 'other';\n * }\n * };\n * var fmt = {};\n *\n * return {\n * a: function(d) { return \"A \" + d.TYPE + \" example.\"; },\n * b: function(d) { return \"This has \" + plural(d.COUNT, 0, pluralFuncs.en, { one: function() { return \"one member\";}, other: function() { return number(d.COUNT)+\" members\";} }) + \".\"; }\n * }\n * }\n *\n * @example\n * > mf.runtime.pluralFuncs.fi = MessageFormat.plurals.fi;\n * > var multiSet = { en: { a: 'A {TYPE} example.',\n * ... b: 'This is the {COUNT, selectordinal, one{#st} two{#nd} few{#rd} other{#th}} example.' },\n * ... fi: { a: '{TYPE} esimerkki.',\n * ... b: 'Tämä on {COUNT, selectordinal, other{#.}} esimerkki.' } },\n * ... multiSetLocales = { en: 'en', fi: 'fi' },\n * ... mfuncSet = mf.compile(multiSet, { locale: multiSetLocales, global: 'i18n' });\n * > mfuncSet(this);\n * > i18n.en.b({COUNT:3})\n * 'This is the 3rd example.'\n * > i18n.fi.b({COUNT:3})\n * 'Tämä on 3. esimerkki.' */\nMessageFormat.prototype.compile = function ( messages, opt ) {\n var r = {}, lc0 = this.lc,\n compileMsg = function(self, msg) {\n try {\n var ast = MessageFormat._parse(msg);\n return self._precompile(ast);\n } catch (e) {\n throw new Error((ast ? 'Precompiler' : 'Parser') + ' error: ' + e.toString());\n }\n },\n stringify = function(r, level) {\n if (!level) level = 0;\n if (typeof r != 'object') return r;\n var o = [], indent = '';\n for (var i = 0; i < level; ++i) indent += ' ';\n for (var k in r) o.push('\\n' + indent + ' ' + propname(k) + ': ' + stringify(r[k], level + 1));\n return '{' + o.join(',') + '\\n' + indent + '}';\n };\n\n if (typeof messages == 'string') {\n var f = new Function(\n 'number, plural, select, pluralFuncs, fmt',\n 'return ' + compileMsg(this, messages));\n return f(this.runtime.number, this.runtime.plural, this.runtime.select,\n this.runtime.pluralFuncs, this.runtime.fmt);\n }\n\n opt = opt || {};\n\n for (var ns in messages) {\n if (opt.locale) this.lc = opt.locale[ns] && [].concat(opt.locale[ns]) || lc0;\n if (typeof messages[ns] == 'string') {\n try { r[ns] = compileMsg(this, messages[ns]); }\n catch (e) { e.message = e.message.replace(':', ' with `' + ns + '`:'); throw e; }\n } else {\n r[ns] = {};\n for (var key in messages[ns]) {\n try { r[ns][key] = compileMsg(this, messages[ns][key]); }\n catch (e) { e.message = e.message.replace(':', ' with `' + key + '` in `' + ns + '`:'); throw e; }\n }\n }\n }\n\n this.lc = lc0;\n var s = this.runtime.toString() + '\\n';\n switch (opt.global || '') {\n case 'exports':\n var o = [];\n for (var k in r) o.push(propname(k, 'exports') + ' = ' + stringify(r[k]));\n return new Function(s + o.join(';\\n'));\n case 'module.exports':\n return new Function(s + 'module.exports = ' + stringify(r));\n case '':\n return new Function(s + 'return ' + stringify(r));\n default:\n return new Function('G', s + propname(opt.global, 'G') + ' = ' + stringify(r));\n }\n};\n\n\nreturn MessageFormat;\n}());\n/* eslint-enable */\n\n\nvar createErrorPluralModulePresence = function() {\n\treturn createError( \"E_MISSING_PLURAL_MODULE\", \"Plural module not loaded.\" );\n};\n\n\n\n\nvar validateMessageBundle = function( cldr ) {\n\tvalidate(\n\t\t\"E_MISSING_MESSAGE_BUNDLE\",\n\t\t\"Missing message bundle for locale `{locale}`.\",\n\t\tcldr.attributes.bundle && cldr.get( \"globalize-messages/{bundle}\" ) !== undefined,\n\t\t{\n\t\t\tlocale: cldr.locale\n\t\t}\n\t);\n};\n\n\n\n\nvar validateMessagePresence = function( path, value ) {\n\tpath = path.join( \"/\" );\n\tvalidate( \"E_MISSING_MESSAGE\", \"Missing required message content `{path}`.\",\n\t\tvalue !== undefined, { path: path } );\n};\n\n\n\n\nvar validateMessageType = function( path, value ) {\n\tpath = path.join( \"/\" );\n\tvalidate(\n\t\t\"E_INVALID_MESSAGE\",\n\t\t\"Invalid message content `{path}`. {expected} expected.\",\n\t\ttypeof value === \"string\",\n\t\t{\n\t\t\texpected: \"a string\",\n\t\t\tpath: path\n\t\t}\n\t);\n};\n\n\n\n\nvar validateParameterTypeMessageVariables = function( value, name ) {\n\tvalidateParameterType(\n\t\tvalue,\n\t\tname,\n\t\tvalue === undefined || isPlainObject( value ) || Array.isArray( value ),\n\t\t\"Array or Plain Object\"\n\t);\n};\n\n\n\n\nvar messageFormatterFn = function( formatter ) {\n\treturn function messageFormatter( variables ) {\n\t\tif ( typeof variables === \"number\" || typeof variables === \"string\" ) {\n\t\t\tvariables = [].slice.call( arguments, 0 );\n\t\t}\n\t\tvalidateParameterTypeMessageVariables( variables, \"variables\" );\n\t\treturn formatter( variables );\n\t};\n};\n\n\n\n\nvar messageFormatterRuntimeBind = function( cldr, messageformatter ) {\n\tvar locale = cldr.locale,\n\t\torigToString = messageformatter.toString;\n\n\tmessageformatter.toString = function() {\n\t\tvar argNames, argValues, output,\n\t\t\targs = {};\n\n\t\t// Properly adjust SlexAxton/messageformat.js compiled variables with Globalize variables:\n\t\toutput = origToString.call( messageformatter );\n\n\t\tif ( /number\\(/.test( output ) ) {\n\t\t\targs.number = \"messageFormat.number\";\n\t\t}\n\n\t\tif ( /plural\\(/.test( output ) ) {\n\t\t\targs.plural = \"messageFormat.plural\";\n\t\t}\n\n\t\tif ( /select\\(/.test( output ) ) {\n\t\t\targs.select = \"messageFormat.select\";\n\t\t}\n\n\t\toutput.replace( /pluralFuncs(\\[([^\\]]+)\\]|\\.([a-zA-Z]+))/, function( match ) {\n\t\t\targs.pluralFuncs = \"{\" +\n\t\t\t\t\"\\\"\" + locale + \"\\\": Globalize(\\\"\" + locale + \"\\\").pluralGenerator()\" +\n\t\t\t\t\"}\";\n\t\t\treturn match;\n\t\t});\n\n\t\targNames = Object.keys( args ).join( \", \" );\n\t\targValues = Object.keys( args ).map(function( key ) {\n\t\t\treturn args[ key ];\n\t\t}).join( \", \" );\n\n\t\treturn \"(function( \" + argNames + \" ) {\\n\" +\n\t\t\t\" return \" + output + \"\\n\" +\n\t\t\t\"})(\" + argValues + \")\";\n\t};\n\n\treturn messageformatter;\n};\n\n\n\n\nvar slice = [].slice;\n\n/**\n * .loadMessages( json )\n *\n * @json [JSON]\n *\n * Load translation data.\n */\nGlobalize.loadMessages = function( json ) {\n\tvar locale,\n\t\tcustomData = {\n\t\t\t\"globalize-messages\": json,\n\t\t\t\"main\": {}\n\t\t};\n\n\tvalidateParameterPresence( json, \"json\" );\n\tvalidateParameterTypePlainObject( json, \"json\" );\n\n\t// Set available bundles by populating customData main dataset.\n\tfor ( locale in json ) {\n\t\tif ( json.hasOwnProperty( locale ) ) {\n\t\t\tcustomData.main[ locale ] = {};\n\t\t}\n\t}\n\n\tCldr.load( customData );\n};\n\n/**\n * .messageFormatter( path )\n *\n * @path [String or Array]\n *\n * Format a message given its path.\n */\nGlobalize.messageFormatter =\nGlobalize.prototype.messageFormatter = function( path ) {\n\tvar cldr, formatter, message, pluralGenerator, returnFn,\n\t\targs = slice.call( arguments, 0 );\n\n\tvalidateParameterPresence( path, \"path\" );\n\tvalidateParameterType( path, \"path\", typeof path === \"string\" || Array.isArray( path ),\n\t\t\"a String nor an Array\" );\n\n\tpath = alwaysArray( path );\n\tcldr = this.cldr;\n\n\tvalidateDefaultLocale( cldr );\n\tvalidateMessageBundle( cldr );\n\n\tmessage = cldr.get( [ \"globalize-messages/{bundle}\" ].concat( path ) );\n\tvalidateMessagePresence( path, message );\n\n\t// If message is an Array, concatenate it.\n\tif ( Array.isArray( message ) ) {\n\t\tmessage = message.join( \" \" );\n\t}\n\tvalidateMessageType( path, message );\n\n\t// Is plural module present? Yes, use its generator. Nope, use an error generator.\n\tpluralGenerator = this.plural !== undefined ?\n\t\tthis.pluralGenerator() :\n\t\tcreateErrorPluralModulePresence;\n\n\tformatter = new MessageFormat( cldr.locale, pluralGenerator ).compile( message );\n\n\treturnFn = messageFormatterFn( formatter );\n\n\truntimeBind( args, cldr, returnFn,\n\t\t[ messageFormatterRuntimeBind( cldr, formatter ), pluralGenerator ] );\n\n\treturn returnFn;\n};\n\n/**\n * .formatMessage( path [, variables] )\n *\n * @path [String or Array]\n *\n * @variables [Number, String, Array or Object]\n *\n * Format a message given its path.\n */\nGlobalize.formatMessage =\nGlobalize.prototype.formatMessage = function( path /* , variables */ ) {\n\treturn this.messageFormatter( path ).apply( {}, slice.call( arguments, 1 ) );\n};\n\nreturn Globalize;\n\n\n\n\n}));\n","/**\n * Globalize v1.7.0\n *\n * https://github.com/globalizejs/globalize\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2021-08-02T11:53Z\n */\n/*!\n * Globalize v1.7.0 2021-08-02T11:53Z Released under the MIT license\n * http://git.io/TrdQbw\n */\n(function( root, factory ) {\n\n\t// UMD returnExports\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD\n\t\tdefine([\n\t\t\t\"cldr\",\n\t\t\t\"../globalize\",\n\t\t\t\"cldr/event\",\n\t\t\t\"cldr/supplemental\"\n\t\t], factory );\n\t} else if ( typeof exports === \"object\" ) {\n\n\t\t// Node, CommonJS\n\t\tmodule.exports = factory( require( \"cldrjs\" ), require( \"../globalize\" ) );\n\t} else {\n\n\t\t// Global\n\t\tfactory( root.Cldr, root.Globalize );\n\t}\n}(this, function( Cldr, Globalize ) {\n\nvar createError = Globalize._createError,\n\tpartsJoin = Globalize._partsJoin,\n\tpartsPush = Globalize._partsPush,\n\tregexpEscape = Globalize._regexpEscape,\n\truntimeBind = Globalize._runtimeBind,\n\tstringPad = Globalize._stringPad,\n\tvalidateCldr = Globalize._validateCldr,\n\tvalidateDefaultLocale = Globalize._validateDefaultLocale,\n\tvalidateParameterPresence = Globalize._validateParameterPresence,\n\tvalidateParameterRange = Globalize._validateParameterRange,\n\tvalidateParameterType = Globalize._validateParameterType,\n\tvalidateParameterTypePlainObject = Globalize._validateParameterTypePlainObject;\n\n\nvar createErrorUnsupportedFeature = function( feature ) {\n\treturn createError( \"E_UNSUPPORTED\", \"Unsupported {feature}.\", {\n\t\tfeature: feature\n\t});\n};\n\n\n\n\nvar validateParameterTypeNumber = function( value, name ) {\n\tvalidateParameterType(\n\t\tvalue,\n\t\tname,\n\t\tvalue === undefined || typeof value === \"number\",\n\t\t\"Number\"\n\t);\n};\n\n\n\n\nvar validateParameterTypeString = function( value, name ) {\n\tvalidateParameterType(\n\t\tvalue,\n\t\tname,\n\t\tvalue === undefined || typeof value === \"string\",\n\t\t\"a string\"\n\t);\n};\n\n\n\n\nvar numberFormatterFn = function( numberToPartsFormatter ) {\n\treturn function numberFormatter( value ) {\n\t\treturn partsJoin( numberToPartsFormatter( value ));\n\t};\n};\n\n\n\n\n/**\n * NumberingSystem( cldr )\n *\n * - http://www.unicode.org/reports/tr35/tr35-numbers.html#otherNumberingSystems\n * - http://cldr.unicode.org/index/bcp47-extension\n * - http://www.unicode.org/reports/tr35/#u_Extension\n */\nvar numberNumberingSystem = function( cldr ) {\n\tvar nu = cldr.attributes[ \"u-nu\" ];\n\n\tif ( nu ) {\n\t\tif ( nu === \"traditio\" ) {\n\t\t\tnu = \"traditional\";\n\t\t}\n\t\tif ( [ \"native\", \"traditional\", \"finance\" ].indexOf( nu ) !== -1 ) {\n\n\t\t\t// Unicode locale extension `u-nu` is set using either (native, traditional or\n\t\t\t// finance). So, lookup the respective locale's numberingSystem and return it.\n\t\t\treturn cldr.main([ \"numbers/otherNumberingSystems\", nu ]);\n\t\t}\n\n\t\t// Unicode locale extension `u-nu` is set with an explicit numberingSystem. Return it.\n\t\treturn nu;\n\t}\n\n\t// Return the default numberingSystem.\n\treturn cldr.main( \"numbers/defaultNumberingSystem\" );\n};\n\n\n\n\n/**\n * Compact( name, cldr )\n *\n * @compactType [String] Compact mode, `short` or `long`.\n *\n * @cldr [Cldr instance].\n *\n * Return the localized compact map for the given compact mode.\n */\nvar numberCompact = function( compactType, cldr ) {\n\tvar maxExponent = 0;\n\n\tvar object = cldr.main([\n\t\t\"numbers/decimalFormats-numberSystem-\" + numberNumberingSystem( cldr ),\n\t\tcompactType,\n\t\t\"decimalFormat\"\n\t]);\n\n\tobject = Object.keys( object ).reduce(function( newObject, compactKey ) {\n\t\tvar numberExponent = compactKey.split( \"0\" ).length - 1;\n\t\tvar pluralForm = compactKey.split( \"-\" )[ 2 ];\n\t\tnewObject[ numberExponent ] = newObject[ numberExponent ] || {};\n\t\tnewObject[ numberExponent ][ pluralForm ] = object[ compactKey ];\n\t\tmaxExponent = Math.max( numberExponent, maxExponent );\n\t\treturn newObject;\n\t}, {});\n\n\tobject.maxExponent = maxExponent;\n\n\treturn object;\n};\n\n\n\n\n/**\n * nuMap( cldr )\n *\n * @cldr [Cldr instance].\n *\n * Return digits map if numbering system is different than `latn`.\n */\nvar numberNumberingSystemDigitsMap = function( cldr ) {\n\tvar aux,\n\t\tnu = numberNumberingSystem( cldr );\n\n\tif ( nu === \"latn\" ) {\n\t\treturn;\n\t}\n\n\taux = cldr.supplemental([ \"numberingSystems\", nu ]);\n\n\tif ( aux._type !== \"numeric\" ) {\n\t\tthrow createErrorUnsupportedFeature( \"`\" + aux._type + \"` numbering system\" );\n\t}\n\n\treturn aux._digits;\n};\n\n\n\n\n/**\n * EBNF representation:\n *\n * number_pattern_re = prefix?\n * padding?\n * (integer_fraction_pattern | significant_pattern)\n * scientific_notation?\n * suffix?\n *\n * prefix = non_number_stuff\n *\n * padding = \"*\" regexp(.)\n *\n * integer_fraction_pattern = integer_pattern\n * fraction_pattern?\n *\n * integer_pattern = regexp([#,]*[0,]*0+)\n *\n * fraction_pattern = \".\" regexp(0*[0-9]*#*)\n *\n * significant_pattern = regexp([#,]*@+#*)\n *\n * scientific_notation = regexp(E\\+?0+)\n *\n * suffix = non_number_stuff\n *\n * non_number_stuff = regexp(('[^']+'|''|[^*#@0,.E])*)\n *\n *\n * Regexp groups:\n *\n * 0: number_pattern_re\n * 1: prefix\n * 2: -\n * 3: -\n * 4: padding\n * 5: (integer_fraction_pattern | significant_pattern)\n * 6: integer_fraction_pattern\n * 7: integer_pattern\n * 8: fraction_pattern\n * 9: significant_pattern\n * 10: scientific_notation\n * 11: suffix\n * 12: -\n */\nvar numberPatternRe = ( /^(('([^']|'')*'|[^*#@0,.E])*)(\\*.)?((([#,]*[0,]*0+)(\\.0*[0-9]*#*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/ );\n\n\n\n\n/**\n * format( number, pattern )\n *\n * @number [Number].\n *\n * @pattern [String] raw pattern for numbers.\n *\n * Return the formatted number.\n * ref: http://www.unicode.org/reports/tr35/tr35-numbers.html\n */\nvar numberPatternProperties = function( pattern ) {\n\tvar aux1, aux2, fractionPattern, integerFractionOrSignificantPattern, integerPattern,\n\t\tmaximumFractionDigits, maximumSignificantDigits, minimumFractionDigits,\n\t\tminimumIntegerDigits, minimumSignificantDigits, padding, prefix, primaryGroupingSize,\n\t\troundIncrement, scientificNotation, secondaryGroupingSize, significantPattern, suffix;\n\n\tpattern = pattern.match( numberPatternRe );\n\tif ( !pattern ) {\n\t\tthrow new Error( \"Invalid pattern: \" + pattern );\n\t}\n\n\tprefix = pattern[ 1 ];\n\tpadding = pattern[ 4 ];\n\tintegerFractionOrSignificantPattern = pattern[ 5 ];\n\tsignificantPattern = pattern[ 9 ];\n\tscientificNotation = pattern[ 10 ];\n\tsuffix = pattern[ 11 ];\n\n\t// Significant digit format\n\tif ( significantPattern ) {\n\t\tsignificantPattern.replace( /(@+)(#*)/, function( _match, minimumSignificantDigitsMatch, maximumSignificantDigitsMatch ) {\n\t\t\tminimumSignificantDigits = minimumSignificantDigitsMatch.length;\n\t\t\tmaximumSignificantDigits = minimumSignificantDigits +\n\t\t\t\tmaximumSignificantDigitsMatch.length;\n\t\t});\n\n\t// Integer and fractional format\n\t} else {\n\t\tfractionPattern = pattern[ 8 ];\n\t\tintegerPattern = pattern[ 7 ];\n\n\t\tif ( fractionPattern ) {\n\n\t\t\t// Minimum fraction digits, and rounding.\n\t\t\tfractionPattern.replace( /[0-9]+/, function( match ) {\n\t\t\t\tminimumFractionDigits = match;\n\t\t\t});\n\t\t\tif ( minimumFractionDigits ) {\n\t\t\t\troundIncrement = +( \"0.\" + minimumFractionDigits );\n\t\t\t\tminimumFractionDigits = minimumFractionDigits.length;\n\t\t\t} else {\n\t\t\t\tminimumFractionDigits = 0;\n\t\t\t}\n\n\t\t\t// Maximum fraction digits\n\t\t\t// 1: ignore decimal character\n\t\t\tmaximumFractionDigits = fractionPattern.length - 1; /* 1 */\n\t\t} else {\n\t\t\tminimumFractionDigits = 0;\n\t\t\tmaximumFractionDigits = 0;\n\t\t}\n\n\t\t// Minimum integer digits\n\t\tintegerPattern.replace( /0+$/, function( match ) {\n\t\t\tminimumIntegerDigits = match.length;\n\t\t});\n\t}\n\n\t// Scientific notation\n\tif ( scientificNotation ) {\n\t\tthrow createErrorUnsupportedFeature({\n\t\t\tfeature: \"scientific notation (not implemented)\"\n\t\t});\n\t}\n\n\t// Padding\n\tif ( padding ) {\n\t\tthrow createErrorUnsupportedFeature({\n\t\t\tfeature: \"padding (not implemented)\"\n\t\t});\n\t}\n\n\t// Grouping\n\tif ( ( aux1 = integerFractionOrSignificantPattern.lastIndexOf( \",\" ) ) !== -1 ) {\n\n\t\t// Primary grouping size is the interval between the last group separator and the end of\n\t\t// the integer (or the end of the significant pattern).\n\t\taux2 = integerFractionOrSignificantPattern.split( \".\" )[ 0 ];\n\t\tprimaryGroupingSize = aux2.length - aux1 - 1;\n\n\t\t// Secondary grouping size is the interval between the last two group separators.\n\t\tif ( ( aux2 = integerFractionOrSignificantPattern.lastIndexOf( \",\", aux1 - 1 ) ) !== -1 ) {\n\t\t\tsecondaryGroupingSize = aux1 - 1 - aux2;\n\t\t}\n\t}\n\n\t// Return:\n\t// 0: @prefix String\n\t// 1: @padding Array [ , ] TODO\n\t// 2: @minimumIntegerDigits non-negative integer Number value indicating the minimum integer\n\t// digits to be used. Numbers will be padded with leading zeroes if necessary.\n\t// 3: @minimumFractionDigits and\n\t// 4: @maximumFractionDigits are non-negative integer Number values indicating the minimum and\n\t// maximum fraction digits to be used. Numbers will be rounded or padded with trailing\n\t// zeroes if necessary.\n\t// 5: @minimumSignificantDigits and\n\t// 6: @maximumSignificantDigits are positive integer Number values indicating the minimum and\n\t// maximum fraction digits to be shown. Either none or both of these properties are\n\t// present; if they are, they override minimum and maximum integer and fraction digits\n\t// – the formatter uses however many integer and fraction digits are required to display\n\t// the specified number of significant digits.\n\t// 7: @roundIncrement Decimal round increment or null\n\t// 8: @primaryGroupingSize\n\t// 9: @secondaryGroupingSize\n\t// 10: @suffix String\n\treturn [\n\t\tprefix,\n\t\tpadding,\n\t\tminimumIntegerDigits,\n\t\tminimumFractionDigits,\n\t\tmaximumFractionDigits,\n\t\tminimumSignificantDigits,\n\t\tmaximumSignificantDigits,\n\t\troundIncrement,\n\t\tprimaryGroupingSize,\n\t\tsecondaryGroupingSize,\n\t\tsuffix\n\t];\n};\n\n\n\n\n/**\n * Symbol( name, cldr )\n *\n * @name [String] Symbol name.\n *\n * @cldr [Cldr instance].\n *\n * Return the localized symbol given its name.\n */\nvar numberSymbol = function( name, cldr ) {\n\treturn cldr.main([\n\t\t\"numbers/symbols-numberSystem-\" + numberNumberingSystem( cldr ),\n\t\tname\n\t]);\n};\n\n\n\n\nvar numberSymbolName = {\n\t\".\": \"decimal\",\n\t\",\": \"group\",\n\t\"%\": \"percentSign\",\n\t\"+\": \"plusSign\",\n\t\"-\": \"minusSign\",\n\t\"E\": \"exponential\",\n\t\"\\u2030\": \"perMille\"\n};\n\n\n\n\n/**\n * symbolMap( cldr )\n *\n * @cldr [Cldr instance].\n *\n * Return the (localized symbol, pattern symbol) key value pair, eg. {\n * \".\": \"٫\",\n * \",\": \"٬\",\n * \"%\": \"٪\",\n * ...\n * };\n */\nvar numberSymbolMap = function( cldr ) {\n\tvar symbol,\n\t\tsymbolMap = {};\n\n\tfor ( symbol in numberSymbolName ) {\n\t\tsymbolMap[ symbol ] = numberSymbol( numberSymbolName[ symbol ], cldr );\n\t}\n\n\treturn symbolMap;\n};\n\n\n\n\nvar numberTruncate = function( value ) {\n\tif ( isNaN( value ) ) {\n\t\treturn NaN;\n\t}\n\treturn Math[ value < 0 ? \"ceil\" : \"floor\" ]( value );\n};\n\n\n\n\n/**\n * round( method )\n *\n * @method [String] with either \"round\", \"ceil\", \"floor\", or \"truncate\".\n *\n * Return function( value, incrementOrExp ):\n *\n * @value [Number] eg. 123.45.\n *\n * @incrementOrExp [Number] optional, eg. 0.1; or\n * [Object] Either { increment: } or { exponent: }\n *\n * Return the rounded number, eg:\n * - round( \"round\" )( 123.45 ): 123;\n * - round( \"ceil\" )( 123.45 ): 124;\n * - round( \"floor\" )( 123.45 ): 123;\n * - round( \"truncate\" )( 123.45 ): 123;\n * - round( \"round\" )( 123.45, 0.1 ): 123.5;\n * - round( \"round\" )( 123.45, 10 ): 120;\n *\n * Based on https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/round\n * Ref: #376\n */\nvar numberRound = function( method ) {\n\tmethod = method || \"round\";\n\tmethod = method === \"truncate\" ? numberTruncate : Math[ method ];\n\n\treturn function( value, incrementOrExp ) {\n\t\tvar exp, increment;\n\n\t\tvalue = +value;\n\n\t\t// If the value is not a number, return NaN.\n\t\tif ( isNaN( value ) ) {\n\t\t\treturn NaN;\n\t\t}\n\n\t\t// Exponent given.\n\t\tif ( typeof incrementOrExp === \"object\" && incrementOrExp.exponent ) {\n\t\t\texp = +incrementOrExp.exponent;\n\t\t\tincrement = 1;\n\n\t\t\tif ( exp === 0 ) {\n\t\t\t\treturn method( value );\n\t\t\t}\n\n\t\t\t// If the exp is not an integer, return NaN.\n\t\t\tif ( !( typeof exp === \"number\" && exp % 1 === 0 ) ) {\n\t\t\t\treturn NaN;\n\t\t\t}\n\n\t\t// Increment given.\n\t\t} else {\n\t\t\tincrement = +incrementOrExp || 1;\n\n\t\t\tif ( increment === 1 ) {\n\t\t\t\treturn method( value );\n\t\t\t}\n\n\t\t\t// If the increment is not a number, return NaN.\n\t\t\tif ( isNaN( increment ) ) {\n\t\t\t\treturn NaN;\n\t\t\t}\n\n\t\t\tincrement = increment.toExponential().split( \"e\" );\n\t\t\texp = +increment[ 1 ];\n\t\t\tincrement = +increment[ 0 ];\n\t\t}\n\n\t\t// Shift & Round\n\t\tvalue = value.toString().split( \"e\" );\n\t\tvalue[ 0 ] = +value[ 0 ] / increment;\n\t\tvalue[ 1 ] = value[ 1 ] ? ( +value[ 1 ] - exp ) : -exp;\n\t\tvalue = method( +( value[ 0 ] + \"e\" + value[ 1 ] ) );\n\n\t\t// Shift back\n\t\tvalue = value.toString().split( \"e\" );\n\t\tvalue[ 0 ] = +value[ 0 ] * increment;\n\t\tvalue[ 1 ] = value[ 1 ] ? ( +value[ 1 ] + exp ) : exp;\n\t\treturn +( value[ 0 ] + \"e\" + value[ 1 ] );\n\t};\n};\n\n\n\n\n/**\n * formatProperties( pattern, cldr [, options] )\n *\n * @pattern [String] raw pattern for numbers.\n *\n * @cldr [Cldr instance].\n *\n * @options [Object]:\n * - minimumIntegerDigits [Number]\n * - minimumFractionDigits, maximumFractionDigits [Number]\n * - minimumSignificantDigits, maximumSignificantDigits [Number]\n * - round [String] \"ceil\", \"floor\", \"round\" (default), or \"truncate\".\n * - useGrouping [Boolean] default true.\n *\n * Return the processed properties that will be used in number/format.\n * ref: http://www.unicode.org/reports/tr35/tr35-numbers.html\n */\nvar numberFormatProperties = function( pattern, cldr, options ) {\n\tvar negativePattern, negativePrefix, negativeProperties, negativeSuffix, positivePattern,\n\t\troundFn, properties;\n\n\tfunction getOptions( attribute, propertyIndex ) {\n\t\tif ( attribute in options ) {\n\t\t\tproperties[ propertyIndex ] = options[ attribute ];\n\t\t}\n\t}\n\n\toptions = options || {};\n\tpattern = pattern.split( \";\" );\n\n\tpositivePattern = pattern[ 0 ];\n\n\tnegativePattern = pattern[ 1 ] || \"-\" + positivePattern;\n\tnegativeProperties = numberPatternProperties( negativePattern );\n\tnegativePrefix = negativeProperties[ 0 ];\n\tnegativeSuffix = negativeProperties[ 10 ];\n\n\t// Have runtime code to refer to numberRound() instead of including it explicitly.\n\troundFn = numberRound( options.round );\n\troundFn.generatorString = function() {\n\t\treturn \"numberRound(\" + ( options.round ? \"\\\"\" + options.round + \"\\\"\" : \"\" ) + \")\";\n\t};\n\n\tproperties = numberPatternProperties( positivePattern ).concat([\n\t\tpositivePattern,\n\t\tnegativePrefix + positivePattern + negativeSuffix,\n\t\tnegativePrefix,\n\t\tnegativeSuffix,\n\t\troundFn,\n\t\tnumberSymbol( \"infinity\", cldr ),\n\t\tnumberSymbol( \"nan\", cldr ),\n\t\tnumberSymbolMap( cldr ),\n\t\tnumberNumberingSystemDigitsMap( cldr )\n\t]);\n\n\tif ( options.compact ) {\n\n\t\t// The compact digits number pattern is always `0+`, so override the following properties.\n\t\t// Note: minimumIntegerDigits would actually range from `0` to `000` based on the scale of\n\t\t// the value to be formatted, though we're always using 1 as a simplification, because the\n\t\t// number won't be zero-padded since we chose the right format based on the scale, i.e.,\n\t\t// we'd never see something like `003M` anyway.\n\t\tproperties[ 2 ] = 1; // minimumIntegerDigits\n\t\tproperties[ 3 ] = 0; // minimumFractionDigits\n\t\tproperties[ 4 ] = 0; // maximumFractionDigits\n\t\tproperties[ 5 ] = // minimumSignificantDigits &\n\t\t\tproperties[ 6 ] = undefined; // maximumSignificantDigits\n\n\t\tproperties[ 20 ] = numberCompact( options.compact, cldr );\n\t}\n\n\tgetOptions( \"minimumIntegerDigits\", 2 );\n\tgetOptions( \"minimumFractionDigits\", 3 );\n\tgetOptions( \"maximumFractionDigits\", 4 );\n\tgetOptions( \"minimumSignificantDigits\", 5 );\n\tgetOptions( \"maximumSignificantDigits\", 6 );\n\n\t// Grouping separators\n\tif ( options.useGrouping === false ) {\n\t\tproperties[ 8 ] = null;\n\t}\n\n\t// Normalize number of digits if only one of either minimumFractionDigits or\n\t// maximumFractionDigits is passed in as an option\n\tif ( \"minimumFractionDigits\" in options && !( \"maximumFractionDigits\" in options ) ) {\n\n\t\t// maximumFractionDigits = Math.max( minimumFractionDigits, maximumFractionDigits );\n\t\tproperties[ 4 ] = Math.max( properties[ 3 ], properties[ 4 ] );\n\t} else if ( !( \"minimumFractionDigits\" in options ) &&\n\t\t\t\"maximumFractionDigits\" in options ) {\n\n\t\t// minimumFractionDigits = Math.min( minimumFractionDigits, maximumFractionDigits );\n\t\tproperties[ 3 ] = Math.min( properties[ 3 ], properties[ 4 ] );\n\t}\n\n\t// Return:\n\t// 0-10: see number/pattern-properties.\n\t// 11: @positivePattern [String] Positive pattern.\n\t// 12: @negativePattern [String] Negative pattern.\n\t// 13: @negativePrefix [String] Negative prefix.\n\t// 14: @negativeSuffix [String] Negative suffix.\n\t// 15: @round [Function] Round function.\n\t// 16: @infinitySymbol [String] Infinity symbol.\n\t// 17: @nanSymbol [String] NaN symbol.\n\t// 18: @symbolMap [Object] A bunch of other symbols.\n\t// 19: @nuDigitsMap [Array] Digits map if numbering system is different than `latn`.\n\t// 20: @compactMap [Object] Map of per-digit-count format patterns for specified compact mode.\n\treturn properties;\n};\n\n\n\n\n/**\n * Generated by:\n *\n * var regenerate = require( \"regenerate\" );\n * var formatSymbols = require( \"@unicode/unicode-13.0.0/General_Category/Format/symbols\" );\n * regenerate().add( formatSymbols ).toString();\n *\n * https://github.com/mathiasbynens/regenerate\n * https://github.com/node-unicode/unicode-13.0.0\n */\nvar regexpCfG = /[\\xAD\\u0600-\\u0605\\u061C\\u06DD\\u070F\\u08E2\\u180E\\u200B-\\u200F\\u202A-\\u202E\\u2060-\\u2064\\u2066-\\u206F\\uFEFF\\uFFF9-\\uFFFB]|\\uD804[\\uDCBD\\uDCCD]|\\uD80D[\\uDC30-\\uDC38]|\\uD82F[\\uDCA0-\\uDCA3]|\\uD834[\\uDD73-\\uDD7A]|\\uDB40[\\uDC01\\uDC20-\\uDC7F]/g;\n\n\n\n\n/**\n * Generated by:\n *\n * var regenerate = require( \"regenerate\" );\n * var dashSymbols = require( \"https://github.com/node-unicode/unicode-13.0.0/General_Category/Dash_Punctuation/symbols\" );\n * regenerate().add( dashSymbols ).toString();\n *\n * https://github.com/mathiasbynens/regenerate\n * https://github.com/node-unicode/unicode-13.0.0\n *\n * NOTE: In addition to [:dash:], the below includes MINUS SIGN U+2212.\n */\nvar regexpDashG = /[\\x2D\\u058A\\u05BE\\u1400\\u1806\\u2010-\\u2015\\u2E17\\u2E1A\\u2E3A\\u2E3B\\u2E40\\u301C\\u3030\\u30A0\\uFE31\\uFE32\\uFE58\\uFE63\\uFF0D\\u2212]|\\uD803\\uDEAD/g;\n\n\n\n\n/**\n * Generated by:\n *\n * var regenerate = require( \"regenerate\" );\n * var spaceSeparatorSymbols = require( \"@unicode/unicode-13.0.0/General_Category/Space_Separator/symbols\" );\n * regenerate().add( spaceSeparatorSymbols ).toString();\n *\n * https://github.com/mathiasbynens/regenerate\n * https://github.com/node-unicode/unicode-13.0.0\n */\nvar regexpZsG = /[ \\xA0\\u1680\\u2000-\\u200A\\u202F\\u205F\\u3000]/g;\n\n\n\n\n/**\n * Loose Matching:\n * - Ignore all format characters, which includes RLM, LRM or ALM used to control BIDI\n * formatting.\n * - Map all characters in [:Zs:] to U+0020 SPACE;\n * - Map all characters in [:Dash:] to U+002D HYPHEN-MINUS;\n */\nvar looseMatching = function( value ) {\n\treturn value\n\t\t.replace( regexpCfG, \"\" )\n\t\t.replace( regexpDashG, \"-\" )\n\t\t.replace( regexpZsG, \" \" );\n};\n\n\n\n\n/**\n * parse( value, properties )\n *\n * @value [String].\n *\n * @properties [Object] Parser properties is a reduced pre-processed cldr\n * data set returned by numberParserProperties().\n *\n * Return the parsed Number (including Infinity) or NaN when value is invalid.\n * ref: http://www.unicode.org/reports/tr35/tr35-numbers.html\n */\nvar numberParse = function( value, properties ) {\n\tvar grammar, invertedNuDigitsMap, invertedSymbolMap, negative, number, prefix, prefixNSuffix,\n\t\tsuffix, tokenizer, valid;\n\n\t// Grammar:\n\t// - Value <= NaN | PositiveNumber | NegativeNumber\n\t// - PositiveNumber <= PositivePrefix NumberOrInf PositiveSufix\n\t// - NegativeNumber <= NegativePrefix NumberOrInf\n\t// - NumberOrInf <= Number | Inf\n\tgrammar = [\n\t\t[ \"nan\" ],\n\t\t[ \"prefix\", \"infinity\", \"suffix\" ],\n\t\t[ \"prefix\", \"number\", \"suffix\" ],\n\t\t[ \"negativePrefix\", \"infinity\", \"negativeSuffix\" ],\n\t\t[ \"negativePrefix\", \"number\", \"negativeSuffix\" ]\n\t];\n\n\tinvertedSymbolMap = properties[ 0 ];\n\tinvertedNuDigitsMap = properties[ 1 ] || {};\n\ttokenizer = properties[ 2 ];\n\n\tvalue = looseMatching( value );\n\n\tfunction parse( type ) {\n\t\treturn function( lexeme ) {\n\n\t\t\t// Reverse localized symbols and numbering system.\n\t\t\tlexeme = lexeme.split( \"\" ).map(function( character ) {\n\t\t\t\treturn invertedSymbolMap[ character ] ||\n\t\t\t\t\tinvertedNuDigitsMap[ character ] ||\n\t\t\t\t\tcharacter;\n\t\t\t}).join( \"\" );\n\n\t\t\tswitch ( type ) {\n\t\t\t\tcase \"infinity\":\n\t\t\t\t\tnumber = Infinity;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"nan\":\n\t\t\t\t\tnumber = NaN;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"number\":\n\n\t\t\t\t\t// Remove grouping separators.\n\t\t\t\t\tlexeme = lexeme.replace( /,/g, \"\" );\n\n\t\t\t\t\tnumber = +lexeme;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"prefix\":\n\t\t\t\tcase \"negativePrefix\":\n\t\t\t\t\tprefix = lexeme;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"suffix\":\n\t\t\t\t\tsuffix = lexeme;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"negativeSuffix\":\n\t\t\t\t\tsuffix = lexeme;\n\t\t\t\t\tnegative = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\t// This should never be reached.\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error( \"Internal error\" );\n\t\t\t}\n\t\t\treturn \"\";\n\t\t};\n\t}\n\n\tfunction tokenizeNParse( _value, grammar ) {\n\t\treturn grammar.some(function( statement ) {\n\t\t\tvar value = _value;\n\n\t\t\t// The whole grammar statement should be used (i.e., .every() return true) and value be\n\t\t\t// entirely consumed (i.e., !value.length).\n\t\t\treturn statement.every(function( type ) {\n\t\t\t\tif ( value.match( tokenizer[ type ] ) === null ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t// Consume and parse it.\n\t\t\t\tvalue = value.replace( tokenizer[ type ], parse( type ) );\n\t\t\t\treturn true;\n\t\t\t}) && !value.length;\n\t\t});\n\t}\n\n\tvalid = tokenizeNParse( value, grammar );\n\n\t// NaN\n\tif ( !valid || isNaN( number ) ) {\n\t\treturn NaN;\n\t}\n\n\tprefixNSuffix = \"\" + prefix + suffix;\n\n\t// Percent\n\tif ( prefixNSuffix.indexOf( \"%\" ) !== -1 ) {\n\t\tnumber /= 100;\n\n\t// Per mille\n\t} else if ( prefixNSuffix.indexOf( \"\\u2030\" ) !== -1 ) {\n\t\tnumber /= 1000;\n\t}\n\n\t// Negative number\n\tif ( negative ) {\n\t\tnumber *= -1;\n\t}\n\n\treturn number;\n};\n\n\n\n\nvar numberParserFn = function( properties ) {\n\treturn function numberParser( value ) {\n\t\tvalidateParameterPresence( value, \"value\" );\n\t\tvalidateParameterTypeString( value, \"value\" );\n\n\t\treturn numberParse( value, properties );\n\t};\n\n};\n\n\n\n\n/**\n * symbolMap( cldr )\n *\n * @cldr [Cldr instance].\n *\n * Return the (localized symbol, pattern symbol) key value pair, eg. {\n * \"٫\": \".\",\n * \"٬\": \",\",\n * \"٪\": \"%\",\n * ...\n * };\n */\nvar numberSymbolInvertedMap = function( cldr ) {\n\tvar symbol,\n\t\tsymbolMap = {};\n\n\tfor ( symbol in numberSymbolName ) {\n\t\tsymbolMap[ numberSymbol( numberSymbolName[ symbol ], cldr ) ] = symbol;\n\t}\n\n\treturn symbolMap;\n};\n\n\n\n\n/**\n * objectMap( object, fn)\n *\n * - object\n *\n * - fn( pair ) => pair\n */\nvar objectMap = function( object, fn ) {\n\treturn Object.keys( object ).map(function( key ) {\n\t\treturn fn([ key, object[ key ] ]);\n\t}).reduce(function( object, pair ) {\n\t\tobject[ pair[ 0 ] ] = pair[ 1 ];\n\t\treturn object;\n\t}, {});\n};\n\n\n\n\n/**\n * removeLiteralQuotes( string )\n *\n * Return:\n * - `'` if input string is `''`.\n * - `o'clock` if input string is `'o''clock'`.\n * - `foo` if input string is `foo`, i.e., return the same value in case it isn't a single-quoted\n * string.\n */\nvar removeLiteralQuotes = function( string ) {\n\tif ( string[ 0 ] + string[ string.length - 1 ] !== \"''\" ) {\n\t\treturn string;\n\t}\n\tif ( string === \"''\" ) {\n\t\treturn \"'\";\n\t}\n\treturn string.replace( /''/g, \"'\" ).slice( 1, -1 );\n};\n\n\n\n\n/**\n * parseProperties( pattern, cldr )\n *\n * @pattern [String] raw pattern for numbers.\n *\n * @cldr [Cldr instance].\n *\n * Return parser properties, used to feed parser function.\n *\n * TODO:\n * - Scientific_notation;\n * - Padding;\n */\nvar numberParseProperties = function( pattern, cldr, options ) {\n\tvar aux, decimalSymbolRe, digitsRe, groupingSeparatorRe, infinitySymbol, invertedNuDigitsMap,\n\t\tinvertedSymbolMap, maximumFractionDigits, maximumSignificantDigits,\n\t\tminimumSignificantDigits, nanSymbol, negativePrefix, negativeSuffix, nuDigitsMap,\n\t\tnumberTokenizer, prefix, primaryGroupingSize, secondaryGroupingSize, suffix, symbolMap,\n\t\tformatProperties = numberFormatProperties( pattern, cldr, options );\n\n\tprefix = looseMatching( formatProperties[ 0 ] );\n\tmaximumFractionDigits = formatProperties[ 4 ];\n\tminimumSignificantDigits = formatProperties[ 5 ];\n\tmaximumSignificantDigits = formatProperties[ 6 ];\n\tprimaryGroupingSize = formatProperties[ 8 ];\n\tsecondaryGroupingSize = formatProperties[ 9 ];\n\tsuffix = looseMatching( formatProperties[ 10 ] );\n\tnegativePrefix = looseMatching( formatProperties[ 13 ] );\n\tnegativeSuffix = looseMatching( formatProperties[ 14 ] );\n\tinfinitySymbol = looseMatching( formatProperties[ 16 ] );\n\tnanSymbol = looseMatching( formatProperties[ 17 ] );\n\tsymbolMap = objectMap( formatProperties[ 18 ], function( pair ) {\n\t\treturn [ pair[ 0 ], looseMatching( pair[ 1 ] ) ];\n\t});\n\tnuDigitsMap = formatProperties[ 19 ];\n\n\tinvertedSymbolMap = objectMap( numberSymbolInvertedMap( cldr ), function( pair ) {\n\t\treturn [ looseMatching( pair[ 0 ] ), pair[ 1 ] ];\n\t});\n\n\tdigitsRe = nuDigitsMap ? \"[\" + nuDigitsMap + \"]\" : \"\\\\d\";\n\tgroupingSeparatorRe = regexpEscape( symbolMap[ \",\" ] );\n\tdecimalSymbolRe = regexpEscape( symbolMap[ \".\" ] );\n\n\tif ( nuDigitsMap ) {\n\t\tinvertedNuDigitsMap = nuDigitsMap.split( \"\" ).reduce(function( object, localizedDigit, i ) {\n\t\t\tobject[ localizedDigit ] = String( i );\n\t\t\treturn object;\n\t\t}, {} );\n\t}\n\n\taux = [ prefix, suffix, negativePrefix, negativeSuffix ].map(function( value ) {\n\t\treturn value.replace( /('([^']|'')+'|'')|./g, function( character, literal ) {\n\n\t\t\t// Literals\n\t\t\tif ( literal ) {\n\t\t\t\treturn removeLiteralQuotes( literal );\n\t\t\t}\n\n\t\t\t// Symbols\n\t\t\tcharacter = character.replace( /[\\-+E%\\u2030]/, function( symbol ) {\n\t\t\t\treturn symbolMap[ symbol ];\n\t\t\t});\n\n\t\t\treturn character;\n\t\t});\n\t});\n\n\tprefix = aux[ 0 ];\n\tsuffix = aux[ 1 ];\n\tnegativePrefix = aux[ 2 ];\n\tnegativeSuffix = aux[ 3 ];\n\n\t// Number\n\t//\n\t// number_re = integer fraction?\n\t//\n\t// integer = digits | digits_using_grouping_separators\n\t//\n\t// fraction = regexp((.\\d+)?)\n\t//\n\t// digits = regexp(\\d+)\n\t//\n\t// digits_w_grouping_separators = digits_w_1_grouping_separators |\n\t// digits_w_2_grouping_separators\n\t//\n\t// digits_w_1_grouping_separators = regexp(\\d{1,3}(,\\d{3})+)\n\t//\n\t// digits_w_2_grouping_separators = regexp(\\d{1,2}((,\\d{2})*(,\\d{3})))\n\n\t// Integer part\n\tnumberTokenizer = digitsRe + \"+\";\n\n\t// Grouping separators\n\tif ( primaryGroupingSize ) {\n\t\tif ( secondaryGroupingSize ) {\n\t\t\taux = digitsRe + \"{1,\" + secondaryGroupingSize + \"}((\" + groupingSeparatorRe +\n\t\t\t\tdigitsRe + \"{\" + secondaryGroupingSize + \"})*(\" + groupingSeparatorRe +\n\t\t\t\tdigitsRe + \"{\" + primaryGroupingSize + \"}))\";\n\t\t} else {\n\t\t\taux = digitsRe + \"{1,\" + primaryGroupingSize + \"}(\" + groupingSeparatorRe +\n\t\t\t\tdigitsRe + \"{\" + primaryGroupingSize + \"})+\";\n\t\t}\n\t\tnumberTokenizer = \"(\" + aux + \"|\" + numberTokenizer + \")\";\n\t}\n\n\t// Fraction part? Only included if 1 or 2.\n\t// 1: Using significant digit format.\n\t// 2: Using integer and fractional format && it has a maximumFractionDigits.\n\tif ( !isNaN( minimumSignificantDigits * maximumSignificantDigits ) || /* 1 */\n\t\t\t\tmaximumFractionDigits /* 2 */ ) {\n\n\t\t// 1: Handle trailing decimal separator, e.g., `\"1.\" => `1``.\n\t\taux = decimalSymbolRe + digitsRe + \"+\";\n\t\tnumberTokenizer = numberTokenizer + \"(\" + aux + \"|\" + decimalSymbolRe /* 1 */ + \")?\" +\n\n\t\t\t// Handle non-padded decimals, e.g., `\".12\"` => `0.12` by making the integer part\n\t\t\t// optional.\n\t\t\t\"|(\" + numberTokenizer + \")?\" + aux;\n\n\t\tnumberTokenizer = \"(\" + numberTokenizer + \")\";\n\t}\n\n\t// 0: @invertedSymbolMap [Object] Inverted symbol map.\n\t// 1: @invertedNuDigitsMap [Object] Inverted digits map if numbering system is different than\n\t// `latn`.\n\t// 2: @tokenizer [Object] Tokenizer map, used by parser to consume input.\n\treturn [\n\t\tinvertedSymbolMap,\n\t\tinvertedNuDigitsMap,\n\t\t{\n\t\t\tinfinity: new RegExp( \"^\" + regexpEscape( infinitySymbol ) ),\n\t\t\tnan: new RegExp( \"^\" + regexpEscape( nanSymbol ) ),\n\t\t\tnegativePrefix: new RegExp( \"^\" + regexpEscape( negativePrefix ) ),\n\t\t\tnegativeSuffix: new RegExp( \"^\" + regexpEscape( negativeSuffix ) ),\n\t\t\tnumber: new RegExp( \"^\" + numberTokenizer ),\n\t\t\tprefix: new RegExp( \"^\" + regexpEscape( prefix ) ),\n\t\t\tsuffix: new RegExp( \"^\" + regexpEscape( suffix ) )\n\t\t}\n\t];\n\n};\n\n\n\n\n/**\n * Pattern( style )\n *\n * @style [String] \"decimal\" (default) or \"percent\".\n *\n * @cldr [Cldr instance].\n */\nvar numberPattern = function( style, cldr ) {\n\tif ( style !== \"decimal\" && style !== \"percent\" ) {\n\t\tthrow new Error( \"Invalid style\" );\n\t}\n\n\treturn cldr.main([\n\t\t\"numbers\",\n\t\tstyle + \"Formats-numberSystem-\" + numberNumberingSystem( cldr ),\n\t\t\"standard\"\n\t]);\n};\n\n\n\n\n/**\n * EBNF representation:\n *\n * compact_pattern_re = prefix?\n * number_pattern_re\n * suffix?\n *\n * number_pattern_re = 0+\n *\n * Regexp groups:\n *\n * 0: compact_pattern_re\n * 1: prefix\n * 2: number_pattern_re (the number pattern to use in compact mode)\n * 3: suffix\n */\nvar numberCompactPatternRe = ( /^([^0]*)(0+)([^0]*)$/ );\n\n\n\n\n/**\n * goupingSeparator( number, primaryGroupingSize, secondaryGroupingSize )\n *\n * @number [Number].\n *\n * @primaryGroupingSize [Number]\n *\n * @secondaryGroupingSize [Number]\n *\n * Return the formatted number with group separator.\n */\nvar numberFormatGroupingSeparator = function( number, primaryGroupingSize, secondaryGroupingSize ) {\n\tvar index,\n\t\tcurrentGroupingSize = primaryGroupingSize,\n\t\tret = \"\",\n\t\tsep = \",\",\n\t\tswitchToSecondary = secondaryGroupingSize ? true : false;\n\n\tnumber = String( number ).split( \".\" );\n\tindex = number[ 0 ].length;\n\n\twhile ( index > currentGroupingSize ) {\n\t\tret = number[ 0 ].slice( index - currentGroupingSize, index ) +\n\t\t\t( ret.length ? sep : \"\" ) + ret;\n\t\tindex -= currentGroupingSize;\n\t\tif ( switchToSecondary ) {\n\t\t\tcurrentGroupingSize = secondaryGroupingSize;\n\t\t\tswitchToSecondary = false;\n\t\t}\n\t}\n\n\tnumber[ 0 ] = number[ 0 ].slice( 0, index ) + ( ret.length ? sep : \"\" ) + ret;\n\treturn number.join( \".\" );\n};\n\n\n\n\n/**\n * integerFractionDigits( number, minimumIntegerDigits, minimumFractionDigits,\n * maximumFractionDigits, round, roundIncrement )\n *\n * @number [Number]\n *\n * @minimumIntegerDigits [Number]\n *\n * @minimumFractionDigits [Number]\n *\n * @maximumFractionDigits [Number]\n *\n * @round [Function]\n *\n * @roundIncrement [Function]\n *\n * Return the formatted integer and fraction digits.\n */\nvar numberFormatIntegerFractionDigits = function( number, minimumIntegerDigits, minimumFractionDigits, maximumFractionDigits, round,\n\troundIncrement ) {\n\n\t// Fraction\n\tif ( maximumFractionDigits ) {\n\n\t\t// Rounding\n\t\tif ( roundIncrement ) {\n\t\t\tnumber = round( number, roundIncrement );\n\n\t\t// Maximum fraction digits\n\t\t} else {\n\t\t\tnumber = round( number, { exponent: -maximumFractionDigits } );\n\t\t}\n\n\t} else {\n\t\tnumber = round( number );\n\t}\n\n\tnumber = String( number );\n\n\t// Maximum integer digits (post string phase)\n\tif ( maximumFractionDigits && /e-/.test( number ) ) {\n\n\t\t// Use toFixed( maximumFractionDigits ) to make sure small numbers like 1e-7 are\n\t\t// displayed using plain digits instead of scientific notation.\n\t\t// 1: Remove leading decimal zeros.\n\t\t// 2: Remove leading decimal separator.\n\t\t// Note: String() is still preferred so it doesn't mess up with a number precision\n\t\t// unnecessarily, e.g., (123456789.123).toFixed(10) === \"123456789.1229999959\",\n\t\t// String(123456789.123) === \"123456789.123\".\n\t\tnumber = ( +number ).toFixed( maximumFractionDigits )\n\t\t\t.replace( /0+$/, \"\" ) /* 1 */\n\t\t\t.replace( /\\.$/, \"\" ); /* 2 */\n\t}\n\n\t// Minimum fraction digits (post string phase)\n\tif ( minimumFractionDigits ) {\n\t\tnumber = number.split( \".\" );\n\t\tnumber[ 1 ] = stringPad( number[ 1 ] || \"\", minimumFractionDigits, true );\n\t\tnumber = number.join( \".\" );\n\t}\n\n\t// Minimum integer digits\n\tif ( minimumIntegerDigits ) {\n\t\tnumber = number.split( \".\" );\n\t\tnumber[ 0 ] = stringPad( number[ 0 ], minimumIntegerDigits );\n\t\tnumber = number.join( \".\" );\n\t}\n\n\treturn number;\n};\n\n\n\n\n/**\n * toPrecision( number, precision, round )\n *\n * @number (Number)\n *\n * @precision (Number) significant figures precision (not decimal precision).\n *\n * @round (Function)\n *\n * Return number.toPrecision( precision ) using the given round function.\n */\nvar numberToPrecision = function( number, precision, round ) {\n\tvar roundOrder;\n\n\tif ( number === 0 ) { // Fix #706\n\t\treturn number;\n\t}\n\n\troundOrder = Math.ceil( Math.log( Math.abs( number ) ) / Math.log( 10 ) );\n\troundOrder -= precision;\n\n\treturn round( number, { exponent: roundOrder } );\n};\n\n\n\n\n/**\n * toPrecision( number, minimumSignificantDigits, maximumSignificantDigits, round )\n *\n * @number [Number]\n *\n * @minimumSignificantDigits [Number]\n *\n * @maximumSignificantDigits [Number]\n *\n * @round [Function]\n *\n * Return the formatted significant digits number.\n */\nvar numberFormatSignificantDigits = function( number, minimumSignificantDigits, maximumSignificantDigits, round ) {\n\tvar atMinimum, atMaximum;\n\n\t// Sanity check.\n\tif ( minimumSignificantDigits > maximumSignificantDigits ) {\n\t\tmaximumSignificantDigits = minimumSignificantDigits;\n\t}\n\n\tatMinimum = numberToPrecision( number, minimumSignificantDigits, round );\n\tatMaximum = numberToPrecision( number, maximumSignificantDigits, round );\n\n\t// Use atMaximum only if it has more significant digits than atMinimum.\n\tnumber = +atMinimum === +atMaximum ? atMinimum : atMaximum;\n\n\t// Expand integer numbers, eg. 123e5 to 12300.\n\tnumber = ( +number ).toString( 10 );\n\n\tif ( ( /e/ ).test( number ) ) {\n\t\tthrow createErrorUnsupportedFeature({\n\t\t\tfeature: \"integers out of (1e21, 1e-7)\"\n\t\t});\n\t}\n\n\t// Add trailing zeros if necessary.\n\tif ( minimumSignificantDigits - number.replace( /^0+|\\./g, \"\" ).length > 0 ) {\n\t\tnumber = number.split( \".\" );\n\t\tnumber[ 1 ] = stringPad( number[ 1 ] || \"\", minimumSignificantDigits - number[ 0 ].replace( /^0+/, \"\" ).length, true );\n\t\tnumber = number.join( \".\" );\n\t}\n\n\treturn number;\n};\n\n\n\n\n/**\n * format( number, properties )\n *\n * @number [Number].\n *\n * @properties [Object] Output of number/format-properties.\n *\n * Return the formatted number.\n * ref: http://www.unicode.org/reports/tr35/tr35-numbers.html\n */\nvar numberFormat = function( number, properties, pluralGenerator ) {\n\tvar aux, compactMap, infinitySymbol, maximumFractionDigits, maximumSignificantDigits,\n\t\tminimumFractionDigits, minimumIntegerDigits, minimumSignificantDigits, nanSymbol,\n\t\tnuDigitsMap, prefix, primaryGroupingSize, pattern, round, roundIncrement,\n\t\tsecondaryGroupingSize, stringToParts, suffix, symbolMap;\n\n\tminimumIntegerDigits = properties[ 2 ];\n\tminimumFractionDigits = properties[ 3 ];\n\tmaximumFractionDigits = properties[ 4 ];\n\tminimumSignificantDigits = properties[ 5 ];\n\tmaximumSignificantDigits = properties[ 6 ];\n\troundIncrement = properties[ 7 ];\n\tprimaryGroupingSize = properties[ 8 ];\n\tsecondaryGroupingSize = properties[ 9 ];\n\tround = properties[ 15 ];\n\tinfinitySymbol = properties[ 16 ];\n\tnanSymbol = properties[ 17 ];\n\tsymbolMap = properties[ 18 ];\n\tnuDigitsMap = properties[ 19 ];\n\tcompactMap = properties[ 20 ];\n\n\t// NaN\n\tif ( isNaN( number ) ) {\n\t\treturn [ { type: \"nan\", value: nanSymbol } ];\n\t}\n\n\tif ( number < 0 ) {\n\t\tpattern = properties[ 12 ];\n\t\tprefix = properties[ 13 ];\n\t\tsuffix = properties[ 14 ];\n\t} else {\n\t\tpattern = properties[ 11 ];\n\t\tprefix = properties[ 0 ];\n\t\tsuffix = properties[ 10 ];\n\t}\n\n\t// For prefix, suffix, and number parts.\n\tstringToParts = function( string ) {\n\t\tvar numberType = \"integer\",\n\t\t\tparts = [];\n\n\t\t// TODO Move the tokenization of all parts that don't depend on number into\n\t\t// format-properties.\n\t\tstring.replace( /('([^']|'')+'|'')|./g, function( character, literal ) {\n\n\t\t\t// Literals\n\t\t\tif ( literal ) {\n\t\t\t\tpartsPush( parts, \"literal\", removeLiteralQuotes( literal ) );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Currency symbol\n\t\t\tif ( character === \"\\u00A4\" ) {\n\t\t\t\tpartsPush( parts, \"currency\", character );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Symbols\n\t\t\tcharacter = character.replace( /[.,\\-+E%\\u2030]/, function( symbol ) {\n\t\t\t\tif ( symbol === \".\" ) {\n\t\t\t\t\tnumberType = \"fraction\";\n\t\t\t\t}\n\t\t\t\tpartsPush( parts, numberSymbolName[ symbol ], symbolMap[ symbol ] );\n\n\t\t\t\t// \"Erase\" handled character.\n\t\t\t\treturn \"\";\n\t\t\t});\n\n\t\t\t// Number\n\t\t\tcharacter = character.replace( /[0-9]/, function( digit ) {\n\n\t\t\t\t// Numbering system\n\t\t\t\tif ( nuDigitsMap ) {\n\t\t\t\t\tdigit = nuDigitsMap[ +digit ];\n\t\t\t\t}\n\t\t\t\tpartsPush( parts, numberType, digit );\n\n\t\t\t\t// \"Erase\" handled character.\n\t\t\t\treturn \"\";\n\t\t\t});\n\n\t\t\t// Etc\n\t\t\tcharacter.replace( /./, function( etc ) {\n\t\t\t\tpartsPush( parts, \"literal\", etc );\n\t\t\t});\n\t\t});\n\t\treturn parts;\n\t};\n\n\tprefix = stringToParts( prefix );\n\tsuffix = stringToParts( suffix );\n\n\t// Infinity\n\tif ( !isFinite( number ) ) {\n\t\treturn prefix.concat(\n\t\t\t{ type: \"infinity\", value: infinitySymbol },\n\t\t\tsuffix\n\t\t);\n\t}\n\n\t// Percent\n\tif ( pattern.indexOf( \"%\" ) !== -1 ) {\n\t\tnumber *= 100;\n\n\t// Per mille\n\t} else if ( pattern.indexOf( \"\\u2030\" ) !== -1 ) {\n\t\tnumber *= 1000;\n\t}\n\n\tvar compactPattern, compactDigits, compactProperties, divisor, numberExponent, pluralForm;\n\n\t// Compact mode: initial number digit processing\n\tif ( compactMap ) {\n\t\tnumberExponent = Math.abs( Math.floor( number ) ).toString().length - 1;\n\t\tnumberExponent = Math.min( numberExponent, compactMap.maxExponent );\n\n\t\t// Use default plural form to perform initial decimal shift\n\t\tif ( numberExponent >= 3 ) {\n\t\t\tcompactPattern = compactMap[ numberExponent ] && compactMap[ numberExponent ].other;\n\t\t}\n\n\t\tif ( compactPattern === \"0\" ) {\n\t\t\tcompactPattern = null;\n\t\t} else if ( compactPattern ) {\n\t\t\tcompactDigits = compactPattern.split( \"0\" ).length - 1;\n\t\t\tdivisor = numberExponent - ( compactDigits - 1 );\n\t\t\tnumber = number / Math.pow( 10, divisor );\n\t\t}\n\t}\n\n\t// Significant digit format\n\tif ( !isNaN( minimumSignificantDigits * maximumSignificantDigits ) ) {\n\t\tnumber = numberFormatSignificantDigits( number, minimumSignificantDigits,\n\t\t\tmaximumSignificantDigits, round );\n\n\t// Integer and fractional format\n\t} else {\n\t\tnumber = numberFormatIntegerFractionDigits( number, minimumIntegerDigits,\n\t\t\tminimumFractionDigits, maximumFractionDigits, round, roundIncrement );\n\t}\n\n\t// Compact mode: apply formatting\n\tif ( compactMap && compactPattern ) {\n\n\t\t// Get plural form after possible roundings\n\t\tpluralForm = pluralGenerator ? pluralGenerator( +number ) : \"other\";\n\n\t\tcompactPattern = compactMap[ numberExponent ][ pluralForm ] || compactPattern;\n\t\tcompactProperties = compactPattern.match( numberCompactPatternRe );\n\n\t\t// TODO Move the tokenization of all parts that don't depend on number into\n\t\t// format-properties.\n\t\taux = function( string ) {\n\t\t\tvar parts = [];\n\t\t\tstring.replace( /(\\s+)|([^\\s0]+)/g, function( _garbage, space, compact ) {\n\n\t\t\t\t// Literals\n\t\t\t\tif ( space ) {\n\t\t\t\t\tpartsPush( parts, \"literal\", space );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Compact value\n\t\t\t\tif ( compact ) {\n\t\t\t\t\tpartsPush( parts, \"compact\", compact );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn parts;\n\t\t};\n\n\t\t// update prefix/suffix with compact prefix/suffix\n\t\tprefix = prefix.concat( aux( compactProperties[ 1 ] ) );\n\t\tsuffix = aux( compactProperties[ 3 ] ).concat( suffix );\n\t}\n\n\t// Remove the possible number minus sign\n\tnumber = number.replace( /^-/, \"\" );\n\n\t// Grouping separators\n\tif ( primaryGroupingSize ) {\n\t\tnumber = numberFormatGroupingSeparator( number, primaryGroupingSize,\n\t\t\tsecondaryGroupingSize );\n\t}\n\n\t// Scientific notation\n\t// TODO implement here\n\n\t// Padding/'([^']|'')+'|''|[.,\\-+E%\\u2030]/g\n\t// TODO implement here\n\n\treturn prefix.concat(\n\t\tstringToParts( number ),\n\t\tsuffix\n\t);\n};\n\n\n\n\nvar numberToPartsFormatterFn = function( properties, pluralGenerator ) {\n\treturn function numberToPartsFormatter( value ) {\n\t\tvalidateParameterPresence( value, \"value\" );\n\t\tvalidateParameterTypeNumber( value, \"value\" );\n\n\t\treturn numberFormat( value, properties, pluralGenerator );\n\t};\n};\n\n\n\n\nfunction validateDigits( properties ) {\n\tvar minimumIntegerDigits = properties[ 2 ],\n\t\tminimumFractionDigits = properties[ 3 ],\n\t\tmaximumFractionDigits = properties[ 4 ],\n\t\tminimumSignificantDigits = properties[ 5 ],\n\t\tmaximumSignificantDigits = properties[ 6 ];\n\n\t// Validate significant digit format properties\n\tif ( !isNaN( minimumSignificantDigits * maximumSignificantDigits ) ) {\n\t\tvalidateParameterRange( minimumSignificantDigits, \"minimumSignificantDigits\", 1, 21 );\n\t\tvalidateParameterRange( maximumSignificantDigits, \"maximumSignificantDigits\",\n\t\t\tminimumSignificantDigits, 21 );\n\n\t} else if ( !isNaN( minimumSignificantDigits ) || !isNaN( maximumSignificantDigits ) ) {\n\t\tthrow new Error( \"Neither or both the minimum and maximum significant digits must be \" +\n\t\t\t\"present\" );\n\n\t// Validate integer and fractional format\n\t} else {\n\t\tvalidateParameterRange( minimumIntegerDigits, \"minimumIntegerDigits\", 1, 21 );\n\t\tvalidateParameterRange( minimumFractionDigits, \"minimumFractionDigits\", 0, 20 );\n\t\tvalidateParameterRange( maximumFractionDigits, \"maximumFractionDigits\",\n\t\t\tminimumFractionDigits, 20 );\n\t}\n}\n\n/**\n * .numberFormatter( [options] )\n *\n * @options [Object]:\n * - style: [String] \"decimal\" (default) or \"percent\".\n * - see also number/format options.\n *\n * Return a function that formats a number according to the given options and default/instance\n * locale.\n */\nGlobalize.numberFormatter =\nGlobalize.prototype.numberFormatter = function( options ) {\n\tvar args, numberToPartsFormatter, returnFn;\n\n\tvalidateParameterTypePlainObject( options, \"options\" );\n\n\toptions = options || {};\n\targs = [ options ];\n\n\tnumberToPartsFormatter = this.numberToPartsFormatter( options );\n\treturnFn = numberFormatterFn( numberToPartsFormatter );\n\truntimeBind( args, this.cldr, returnFn, [ numberToPartsFormatter ] );\n\n\treturn returnFn;\n};\n\n/**\n * .numberToPartsFormatter( [options] )\n *\n * @options [Object]:\n * - style: [String] \"symbol\" (default), \"accounting\", \"code\" or \"name\".\n * - see also number/format options.\n *\n * Return a function that formats a number to parts according to the given options and\n * default/instance locale.\n */\nGlobalize.numberToPartsFormatter =\nGlobalize.prototype.numberToPartsFormatter = function( options ) {\n\tvar args, cldr, fnArgs, pattern, properties, returnFn;\n\n\tvalidateParameterTypePlainObject( options, \"options\" );\n\n\toptions = options || {};\n\tcldr = this.cldr;\n\n\targs = [ options ];\n\n\tvalidateDefaultLocale( cldr );\n\n\tcldr.on( \"get\", validateCldr );\n\ttry {\n\t\tif ( options.raw ) {\n\t\t\tpattern = options.raw;\n\t\t} else {\n\t\t\tpattern = numberPattern( options.style || \"decimal\", cldr );\n\t\t}\n\n\t\tproperties = numberFormatProperties( pattern, cldr, options );\n\t\tfnArgs = [ properties ];\n\t} finally {\n\t\tcldr.off( \"get\", validateCldr );\n\t}\n\n\tvalidateDigits( properties );\n\n\tif ( options.compact ) {\n\t\tfnArgs.push( this.pluralGenerator() );\n\t}\n\treturnFn = numberToPartsFormatterFn.apply( null, fnArgs );\n\truntimeBind( args, cldr, returnFn, fnArgs );\n\n\treturn returnFn;\n};\n\n/**\n * .numberParser( [options] )\n *\n * @options [Object]:\n * - style: [String] \"decimal\" (default) or \"percent\".\n *\n * Return the number parser according to the default/instance locale.\n */\nGlobalize.numberParser =\nGlobalize.prototype.numberParser = function( options ) {\n\tvar args, cldr, pattern, properties, returnFn;\n\n\tvalidateParameterTypePlainObject( options, \"options\" );\n\n\toptions = options || {};\n\tcldr = this.cldr;\n\n\targs = [ options ];\n\n\tvalidateDefaultLocale( cldr );\n\tif ( options.compact ) {\n\t\tthrow createErrorUnsupportedFeature({\n\t\t\tfeature: \"compact number parsing (not implemented)\"\n\t\t});\n\t}\n\n\tcldr.on( \"get\", validateCldr );\n\n\tif ( options.raw ) {\n\t\tpattern = options.raw;\n\t} else {\n\t\tpattern = numberPattern( options.style || \"decimal\", cldr );\n\t}\n\n\tproperties = numberParseProperties( pattern, cldr, options );\n\n\tcldr.off( \"get\", validateCldr );\n\n\treturnFn = numberParserFn( properties );\n\n\truntimeBind( args, cldr, returnFn, [ properties ] );\n\n\treturn returnFn;\n};\n\n/**\n * .formatNumber( value [, options] )\n *\n * @value [Number] number to be formatted.\n *\n * @options [Object]: see number/format-properties.\n *\n * Format a number according to the given options and default/instance locale.\n */\nGlobalize.formatNumber =\nGlobalize.prototype.formatNumber = function( value, options ) {\n\tvalidateParameterPresence( value, \"value\" );\n\tvalidateParameterTypeNumber( value, \"value\" );\n\n\treturn this.numberFormatter( options )( value );\n};\n\n/**\n * .formatNumberToParts( value [, options] )\n *\n * @value [Number] number to be formatted.\n *\n * @options [Object]: see number/format-properties.\n *\n * Format a number to pars according to the given options and default/instance locale.\n */\nGlobalize.formatNumberToParts =\nGlobalize.prototype.formatNumberToParts = function( value, options ) {\n\tvalidateParameterPresence( value, \"value\" );\n\tvalidateParameterTypeNumber( value, \"value\" );\n\n\treturn this.numberToPartsFormatter( options )( value );\n};\n\n/**\n * .parseNumber( value [, options] )\n *\n * @value [String]\n *\n * @options [Object]: See numberParser().\n *\n * Return the parsed Number (including Infinity) or NaN when value is invalid.\n */\nGlobalize.parseNumber =\nGlobalize.prototype.parseNumber = function( value, options ) {\n\tvalidateParameterPresence( value, \"value\" );\n\tvalidateParameterTypeString( value, \"value\" );\n\n\treturn this.numberParser( options )( value );\n};\n\n/**\n * Optimization to avoid duplicating some internal functions across modules.\n */\nGlobalize._createErrorUnsupportedFeature = createErrorUnsupportedFeature;\nGlobalize._numberNumberingSystem = numberNumberingSystem;\nGlobalize._numberNumberingSystemDigitsMap = numberNumberingSystemDigitsMap;\nGlobalize._numberPattern = numberPattern;\nGlobalize._numberSymbol = numberSymbol;\nGlobalize._looseMatching = looseMatching;\nGlobalize._removeLiteralQuotes = removeLiteralQuotes;\nGlobalize._stringPad = stringPad;\nGlobalize._validateParameterTypeNumber = validateParameterTypeNumber;\nGlobalize._validateParameterTypeString = validateParameterTypeString;\n\nreturn Globalize;\n\n\n\n\n}));\n","/**\n * Globalize v1.7.0\n *\n * https://github.com/globalizejs/globalize\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2021-08-02T11:53Z\n */\n/*!\n * Globalize v1.7.0 2021-08-02T11:53Z Released under the MIT license\n * http://git.io/TrdQbw\n */\n(function( root, factory ) {\n\n\t// UMD returnExports\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD\n\t\tdefine([\n\t\t\t\"cldr\",\n\t\t\t\"../globalize\",\n\t\t\t\"cldr/event\",\n\t\t\t\"cldr/supplemental\"\n\t\t], factory );\n\t} else if ( typeof exports === \"object\" ) {\n\n\t\t// Node, CommonJS\n\t\tmodule.exports = factory( require( \"cldrjs\" ), require( \"../globalize\" ) );\n\t} else {\n\n\t\t// Global\n\t\tfactory( root.Cldr, root.Globalize );\n\t}\n}(this, function( Cldr, Globalize ) {\n\nvar runtimeBind = Globalize._runtimeBind,\n\tvalidateCldr = Globalize._validateCldr,\n\tvalidateDefaultLocale = Globalize._validateDefaultLocale,\n\tvalidateParameterPresence = Globalize._validateParameterPresence,\n\tvalidateParameterType = Globalize._validateParameterType,\n\tvalidateParameterTypePlainObject = Globalize._validateParameterTypePlainObject;\nvar MakePlural;\n/* eslint-disable */\nMakePlural = (function() {\n'use strict';\n\nvar _toArray = function (arr) { return Array.isArray(arr) ? arr : Array.from(arr); };\n\nvar _toConsumableArray = function (arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } };\n\nvar _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } };\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\n\n/**\n * make-plural.js -- https://github.com/eemeli/make-plural.js/\n * Copyright (c) 2014-2015 by Eemeli Aro \n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * The software is provided \"as is\" and the author disclaims all warranties\n * with regard to this software including all implied warranties of\n * merchantability and fitness. In no event shall the author be liable for\n * any special, direct, indirect, or consequential damages or any damages\n * whatsoever resulting from loss of use, data or profits, whether in an\n * action of contract, negligence or other tortious action, arising out of\n * or in connection with the use or performance of this software.\n */\n\nvar Parser = (function () {\n function Parser() {\n _classCallCheck(this, Parser);\n }\n\n _createClass(Parser, [{\n key: 'parse',\n value: function parse(cond) {\n var _this = this;\n\n if (cond === 'i = 0 or n = 1') {\n return 'n >= 0 && n <= 1';\n }if (cond === 'i = 0,1') {\n return 'n >= 0 && n < 2';\n }if (cond === 'i = 1 and v = 0') {\n this.v0 = 1;\n return 'n == 1 && v0';\n }\n return cond.replace(/([tv]) (!?)= 0/g, function (m, sym, noteq) {\n var sn = sym + '0';\n _this[sn] = 1;\n return noteq ? '!' + sn : sn;\n }).replace(/\\b[fintv]\\b/g, function (m) {\n _this[m] = 1;\n return m;\n }).replace(/([fin]) % (10+)/g, function (m, sym, num) {\n var sn = sym + num;\n _this[sn] = 1;\n return sn;\n }).replace(/n10+ = 0/g, 't0 && $&').replace(/(\\w+ (!?)= )([0-9.]+,[0-9.,]+)/g, function (m, se, noteq, x) {\n if (m === 'n = 0,1') return '(n == 0 || n == 1)';\n if (noteq) return se + x.split(',').join(' && ' + se);\n return '(' + se + x.split(',').join(' || ' + se) + ')';\n }).replace(/(\\w+) (!?)= ([0-9]+)\\.\\.([0-9]+)/g, function (m, sym, noteq, x0, x1) {\n if (Number(x0) + 1 === Number(x1)) {\n if (noteq) return '' + sym + ' != ' + x0 + ' && ' + sym + ' != ' + x1;\n return '(' + sym + ' == ' + x0 + ' || ' + sym + ' == ' + x1 + ')';\n }\n if (noteq) return '(' + sym + ' < ' + x0 + ' || ' + sym + ' > ' + x1 + ')';\n if (sym === 'n') {\n _this.t0 = 1;return '(t0 && n >= ' + x0 + ' && n <= ' + x1 + ')';\n }\n return '(' + sym + ' >= ' + x0 + ' && ' + sym + ' <= ' + x1 + ')';\n }).replace(/ and /g, ' && ').replace(/ or /g, ' || ').replace(/ = /g, ' == ');\n }\n }, {\n key: 'vars',\n value: (function (_vars) {\n function vars() {\n return _vars.apply(this, arguments);\n }\n\n vars.toString = function () {\n return _vars.toString();\n };\n\n return vars;\n })(function () {\n var vars = [];\n if (this.i) vars.push('i = s[0]');\n if (this.f || this.v) vars.push('f = s[1] || \\'\\'');\n if (this.t) vars.push('t = (s[1] || \\'\\').replace(/0+$/, \\'\\')');\n if (this.v) vars.push('v = f.length');\n if (this.v0) vars.push('v0 = !s[1]');\n if (this.t0 || this.n10 || this.n100) vars.push('t0 = Number(s[0]) == n');\n for (var k in this) {\n if (/^.10+$/.test(k)) {\n var k0 = k[0] === 'n' ? 't0 && s[0]' : k[0];\n vars.push('' + k + ' = ' + k0 + '.slice(-' + k.substr(2).length + ')');\n }\n }if (!vars.length) return '';\n return 'var ' + ['s = String(n).split(\\'.\\')'].concat(vars).join(', ');\n })\n }]);\n\n return Parser;\n})();\n\n\n\nvar MakePlural = (function () {\n function MakePlural(lc) {\n var _ref = arguments[1] === undefined ? MakePlural : arguments[1];\n\n var cardinals = _ref.cardinals;\n var ordinals = _ref.ordinals;\n\n _classCallCheck(this, MakePlural);\n\n if (!cardinals && !ordinals) throw new Error('At least one type of plural is required');\n this.lc = lc;\n this.categories = { cardinal: [], ordinal: [] };\n this.parser = new Parser();\n \n this.fn = this.buildFunction(cardinals, ordinals);\n this.fn._obj = this;\n this.fn.categories = this.categories;\n \n this.fn.toString = this.fnToString.bind(this);\n return this.fn;\n }\n\n _createClass(MakePlural, [{\n key: 'compile',\n value: function compile(type, req) {\n var cases = [];\n var rules = MakePlural.rules[type][this.lc];\n if (!rules) {\n if (req) throw new Error('Locale \"' + this.lc + '\" ' + type + ' rules not found');\n this.categories[type] = ['other'];\n return '\\'other\\'';\n }\n for (var r in rules) {\n var _rules$r$trim$split = rules[r].trim().split(/\\s*@\\w*/);\n\n var _rules$r$trim$split2 = _toArray(_rules$r$trim$split);\n\n var cond = _rules$r$trim$split2[0];\n var examples = _rules$r$trim$split2.slice(1);\n var cat = r.replace('pluralRule-count-', '');\n if (cond) cases.push([this.parser.parse(cond), cat]);\n \n }\n this.categories[type] = cases.map(function (c) {\n return c[1];\n }).concat('other');\n if (cases.length === 1) {\n return '(' + cases[0][0] + ') ? \\'' + cases[0][1] + '\\' : \\'other\\'';\n } else {\n return [].concat(_toConsumableArray(cases.map(function (c) {\n return '(' + c[0] + ') ? \\'' + c[1] + '\\'';\n })), ['\\'other\\'']).join('\\n : ');\n }\n }\n }, {\n key: 'buildFunction',\n value: function buildFunction(cardinals, ordinals) {\n var _this3 = this;\n\n var compile = function compile(c) {\n return c ? (c[1] ? 'return ' : 'if (ord) return ') + _this3.compile.apply(_this3, _toConsumableArray(c)) : '';\n },\n fold = { vars: function vars(str) {\n return (' ' + str + ';').replace(/(.{1,78})(,|$) ?/g, '$1$2\\n ');\n },\n cond: function cond(str) {\n return (' ' + str + ';').replace(/(.{1,78}) (\\|\\| |$) ?/gm, '$1\\n $2');\n } },\n cond = [ordinals && ['ordinal', !cardinals], cardinals && ['cardinal', true]].map(compile).map(fold.cond),\n body = [fold.vars(this.parser.vars())].concat(_toConsumableArray(cond)).join('\\n').replace(/\\s+$/gm, '').replace(/^[\\s;]*[\\r\\n]+/gm, ''),\n args = ordinals && cardinals ? 'n, ord' : 'n';\n return new Function(args, body);\n }\n }, {\n key: 'fnToString',\n value: function fnToString(name) {\n return Function.prototype.toString.call(this.fn).replace(/^function( \\w+)?/, name ? 'function ' + name : 'function').replace('\\n/**/', '');\n }\n }], [{\n key: 'load',\n value: function load() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n args.forEach(function (cldr) {\n var data = cldr && cldr.supplemental || null;\n if (!data) throw new Error('Data does not appear to be CLDR data');\n MakePlural.rules = {\n cardinal: data['plurals-type-cardinal'] || MakePlural.rules.cardinal,\n ordinal: data['plurals-type-ordinal'] || MakePlural.rules.ordinal\n };\n });\n return MakePlural;\n }\n }]);\n\n return MakePlural;\n})();\n\n\n\nMakePlural.cardinals = true;\nMakePlural.ordinals = false;\nMakePlural.rules = { cardinal: {}, ordinal: {} };\n\n\nreturn MakePlural;\n}());\n/* eslint-enable */\n\n\nvar validateParameterTypeNumber = function( value, name ) {\n\tvalidateParameterType(\n\t\tvalue,\n\t\tname,\n\t\tvalue === undefined || typeof value === \"number\",\n\t\t\"Number\"\n\t);\n};\n\n\n\n\nvar validateParameterTypePluralType = function( value, name ) {\n\tvalidateParameterType(\n\t\tvalue,\n\t\tname,\n\t\tvalue === undefined || value === \"cardinal\" || value === \"ordinal\",\n\t\t\"String \\\"cardinal\\\" or \\\"ordinal\\\"\"\n\t);\n};\n\n\n\n\nvar pluralGeneratorFn = function( plural ) {\n\treturn function pluralGenerator( value ) {\n\t\tvalidateParameterPresence( value, \"value\" );\n\t\tvalidateParameterTypeNumber( value, \"value\" );\n\n\t\treturn plural( value );\n\t};\n};\n\n\n\n\n/**\n * .plural( value )\n *\n * @value [Number]\n *\n * Return the corresponding form (zero | one | two | few | many | other) of a\n * value given locale.\n */\nGlobalize.plural =\nGlobalize.prototype.plural = function( value, options ) {\n\tvalidateParameterPresence( value, \"value\" );\n\tvalidateParameterTypeNumber( value, \"value\" );\n\treturn this.pluralGenerator( options )( value );\n};\n\n/**\n * .pluralGenerator( [options] )\n *\n * Return a plural function (of the form below).\n *\n * fn( value )\n *\n * @value [Number]\n *\n * Return the corresponding form (zero | one | two | few | many | other) of a value given the\n * default/instance locale.\n */\nGlobalize.pluralGenerator =\nGlobalize.prototype.pluralGenerator = function( options ) {\n\tvar args, cldr, isOrdinal, plural, returnFn, type;\n\n\tvalidateParameterTypePlainObject( options, \"options\" );\n\n\toptions = options || {};\n\tcldr = this.cldr;\n\n\targs = [ options ];\n\ttype = options.type || \"cardinal\";\n\n\tvalidateParameterTypePluralType( options.type, \"options.type\" );\n\n\tvalidateDefaultLocale( cldr );\n\n\tisOrdinal = type === \"ordinal\";\n\n\tcldr.on( \"get\", validateCldr );\n\ttry {\n\t\tcldr.supplemental([ \"plurals-type-\" + type, \"{language}\" ]);\n\t} finally {\n\t\tcldr.off( \"get\", validateCldr );\n\t}\n\n\tMakePlural.rules = {};\n\tMakePlural.rules[ type ] = cldr.supplemental( \"plurals-type-\" + type );\n\n\tplural = new MakePlural( cldr.attributes.language, {\n\t\t\"ordinals\": isOrdinal,\n\t\t\"cardinals\": !isOrdinal\n\t});\n\n\treturnFn = pluralGeneratorFn( plural );\n\n\truntimeBind( args, cldr, returnFn, [ plural ] );\n\n\treturn returnFn;\n};\n\nreturn Globalize;\n\n\n\n\n}));\n","/**\n * Globalize v1.7.0\n *\n * https://github.com/globalizejs/globalize\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2021-08-02T11:53Z\n */\n/*!\n * Globalize v1.7.0 2021-08-02T11:53Z Released under the MIT license\n * http://git.io/TrdQbw\n */\n(function( root, factory ) {\n\n\t// UMD returnExports\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD\n\t\tdefine([\n\t\t\t\"cldr\",\n\t\t\t\"../globalize\",\n\t\t\t\"./number\",\n\t\t\t\"./plural\",\n\t\t\t\"cldr/event\",\n\t\t\t\"cldr/supplemental\"\n\t\t], factory );\n\t} else if ( typeof exports === \"object\" ) {\n\n\t\t// Node, CommonJS\n\t\tmodule.exports = factory( require( \"cldrjs\" ), require( \"../globalize\" ) );\n\t} else {\n\n\t\t// Extend global\n\t\tfactory( root.Cldr, root.Globalize );\n\t}\n}(this, function( Cldr, Globalize ) {\n\nvar formatMessage = Globalize._formatMessage,\n\truntimeBind = Globalize._runtimeBind,\n\tvalidateCldr = Globalize._validateCldr,\n\tvalidateDefaultLocale = Globalize._validateDefaultLocale,\n\tvalidateParameterPresence = Globalize._validateParameterPresence,\n\tvalidateParameterTypeString = Globalize._validateParameterTypeString,\n\tvalidateParameterTypeNumber = Globalize._validateParameterTypeNumber;\n\n\n/**\n * format( value, numberFormatter, pluralGenerator, properties )\n *\n * @value [Number] The number to format\n *\n * @numberFormatter [String] A numberFormatter from Globalize.numberFormatter\n *\n * @pluralGenerator [String] A pluralGenerator from Globalize.pluralGenerator\n *\n * @properties [Object] containing relative time plural message.\n *\n * Format relative time.\n */\nvar relativeTimeFormat = function( value, numberFormatter, pluralGenerator, properties ) {\n\n\tvar relativeTime,\n\t\tmessage = properties[ \"relative-type-\" + value ];\n\n\tif ( message ) {\n\t\treturn message;\n\t}\n\n\trelativeTime = value <= 0 ? properties[ \"relativeTime-type-past\" ] :\n\t\tproperties[ \"relativeTime-type-future\" ];\n\n\tvalue = Math.abs( value );\n\n\tmessage = relativeTime[ \"relativeTimePattern-count-\" + pluralGenerator( value ) ];\n\treturn formatMessage( message, [ numberFormatter( value ) ] );\n};\n\n\n\n\nvar relativeTimeFormatterFn = function( numberFormatter, pluralGenerator, properties ) {\n\treturn function relativeTimeFormatter( value ) {\n\t\tvalidateParameterPresence( value, \"value\" );\n\t\tvalidateParameterTypeNumber( value, \"value\" );\n\n\t\treturn relativeTimeFormat( value, numberFormatter, pluralGenerator, properties );\n\t};\n\n};\n\n\n\n\n/**\n * properties( unit, cldr, options )\n *\n * @unit [String] eg. \"day\", \"week\", \"month\", etc.\n *\n * @cldr [Cldr instance].\n *\n * @options [Object]\n * - form: [String] eg. \"short\" or \"narrow\". Or falsy for default long form.\n *\n * Return relative time properties.\n */\nvar relativeTimeProperties = function( unit, cldr, options ) {\n\n\tvar form = options.form,\n\t\traw, properties, key, match;\n\n\tif ( form ) {\n\t\tunit = unit + \"-\" + form;\n\t}\n\n\traw = cldr.main( [ \"dates\", \"fields\", unit ] );\n\tproperties = {\n\t\t\"relativeTime-type-future\": raw[ \"relativeTime-type-future\" ],\n\t\t\"relativeTime-type-past\": raw[ \"relativeTime-type-past\" ]\n\t};\n\tfor ( key in raw ) {\n\t\tif ( raw.hasOwnProperty( key ) ) {\n\t\t\tmatch = /relative-type-(-?[0-9]+)/.exec( key );\n\t\t\tif ( match ) {\n\t\t\t\tproperties[ key ] = raw[ key ];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn properties;\n};\n\n\n\n\n/**\n * .formatRelativeTime( value, unit [, options] )\n *\n * @value [Number] The number of unit to format.\n *\n * @unit [String] see .relativeTimeFormatter() for details.\n *\n * @options [Object] see .relativeTimeFormatter() for details.\n *\n * Formats a relative time according to the given unit, options, and the default/instance locale.\n */\nGlobalize.formatRelativeTime =\nGlobalize.prototype.formatRelativeTime = function( value, unit, options ) {\n\tvalidateParameterPresence( value, \"value\" );\n\tvalidateParameterTypeNumber( value, \"value\" );\n\n\treturn this.relativeTimeFormatter( unit, options )( value );\n};\n\n/**\n * .relativeTimeFormatter( unit [, options ])\n *\n * @unit [String] String value indicating the unit to be formatted. eg. \"day\", \"week\", \"month\", etc.\n *\n * @options [Object]\n * - form: [String] eg. \"short\" or \"narrow\". Or falsy for default long form.\n *\n * Returns a function that formats a relative time according to the given unit, options, and the\n * default/instance locale.\n */\nGlobalize.relativeTimeFormatter =\nGlobalize.prototype.relativeTimeFormatter = function( unit, options ) {\n\tvar args, cldr, numberFormatter, pluralGenerator, properties, returnFn;\n\n\tvalidateParameterPresence( unit, \"unit\" );\n\tvalidateParameterTypeString( unit, \"unit\" );\n\n\tcldr = this.cldr;\n\toptions = options || {};\n\n\targs = [ unit, options ];\n\n\tvalidateDefaultLocale( cldr );\n\n\tcldr.on( \"get\", validateCldr );\n\ttry {\n\t\tproperties = relativeTimeProperties( unit, cldr, options );\n\t} finally {\n\t\tcldr.off( \"get\", validateCldr );\n\t}\n\tnumberFormatter = this.numberFormatter( options );\n\tpluralGenerator = this.pluralGenerator();\n\n\treturnFn = relativeTimeFormatterFn( numberFormatter, pluralGenerator, properties );\n\n\truntimeBind( args, cldr, returnFn, [ numberFormatter, pluralGenerator, properties ] );\n\n\treturn returnFn;\n};\n\nreturn Globalize;\n\n\n\n\n}));\n","/**\n * Globalize v1.7.0\n *\n * https://github.com/globalizejs/globalize\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2021-08-02T11:53Z\n */\n/*!\n * Globalize v1.7.0 2021-08-02T11:53Z Released under the MIT license\n * http://git.io/TrdQbw\n */\n(function( root, factory ) {\n\n\t// UMD returnExports\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD\n\t\tdefine([\n\t\t\t\"cldr\",\n\t\t\t\"../globalize\",\n\t\t\t\"./number\",\n\t\t\t\"./plural\"\n\t\t], factory );\n\t} else if ( typeof exports === \"object\" ) {\n\n\t\t// Node, CommonJS\n\t\tmodule.exports = factory( require( \"cldrjs\" ), require( \"../globalize\" ) );\n\t} else {\n\n\t\t// Extend global\n\t\tfactory( root.Cldr, root.Globalize );\n\t}\n}(this, function( Cldr, Globalize ) {\n\nvar formatMessage = Globalize._formatMessage,\n\truntimeBind = Globalize._runtimeBind,\n\tvalidateParameterPresence = Globalize._validateParameterPresence,\n\tvalidateParameterTypePlainObject = Globalize._validateParameterTypePlainObject,\n\tvalidateParameterTypeNumber = Globalize._validateParameterTypeNumber,\n\tvalidateParameterTypeString = Globalize._validateParameterTypeString;\n\n\n/**\n * format( value, numberFormatter, pluralGenerator, unitProperies )\n *\n * @value [Number]\n *\n * @numberFormatter [Object]: A numberFormatter from Globalize.numberFormatter.\n *\n * @pluralGenerator [Object]: A pluralGenerator from Globalize.pluralGenerator.\n *\n * @unitProperies [Object]: localized unit data from cldr.\n *\n * Format units such as seconds, minutes, days, weeks, etc.\n *\n * OBS:\n *\n * Unit Sequences are not implemented.\n * http://www.unicode.org/reports/tr35/tr35-35/tr35-general.html#Unit_Sequences\n *\n * Duration Unit (for composed time unit durations) is not implemented.\n * http://www.unicode.org/reports/tr35/tr35-35/tr35-general.html#durationUnit\n */\nvar unitFormat = function( value, numberFormatter, pluralGenerator, unitProperties ) {\n\tvar compoundUnitPattern = unitProperties.compoundUnitPattern, dividend, dividendProperties,\n\t\tformattedValue, divisor, divisorProperties, message, pluralValue, oneProperty;\n\n\tunitProperties = unitProperties.unitProperties;\n\tformattedValue = numberFormatter( value );\n\tpluralValue = pluralGenerator( value );\n\n\t// computed compound unit, eg. \"megabyte-per-second\".\n\tif ( unitProperties instanceof Array ) {\n\t\tdividendProperties = unitProperties[ 0 ];\n\t\tdivisorProperties = unitProperties[ 1 ];\n\t\toneProperty = divisorProperties.hasOwnProperty( \"one\" ) ? \"one\" : \"other\";\n\n\t\tdividend = formatMessage( dividendProperties[ pluralValue ], [ formattedValue ] );\n\t\tdivisor = formatMessage( divisorProperties[ oneProperty ], [ \"\" ] ).trim();\n\n\t\treturn formatMessage( compoundUnitPattern, [ dividend, divisor ] );\n\t}\n\n\tmessage = unitProperties[ pluralValue ];\n\n\treturn formatMessage( message, [ formattedValue ] );\n};\n\n\n\n\nvar unitFormatterFn = function( numberFormatter, pluralGenerator, unitProperties ) {\n\treturn function unitFormatter( value ) {\n\t\tvalidateParameterPresence( value, \"value\" );\n\t\tvalidateParameterTypeNumber( value, \"value\" );\n\n\t\treturn unitFormat( value, numberFormatter, pluralGenerator, unitProperties );\n\t};\n\n};\n\n\n\n\n/**\n * categories()\n *\n * Return all unit categories.\n */\nvar unitCategories = [ \"acceleration\", \"angle\", \"area\", \"digital\", \"duration\", \"length\", \"mass\", \"power\",\n\"pressure\", \"speed\", \"temperature\", \"volume\" ];\n\n\n\n\nfunction stripPluralGarbage( data ) {\n\tvar aux, pluralCount;\n\n\tif ( data ) {\n\t\taux = {};\n\t\tfor ( pluralCount in data ) {\n\t\t\taux[ pluralCount.replace( /unitPattern-count-/, \"\" ) ] = data[ pluralCount ];\n\t\t}\n\t}\n\n\treturn aux;\n}\n\n/**\n * get( unit, form, cldr )\n *\n * @unit [String] The full type-unit name (eg. duration-second), or the short unit name\n * (eg. second).\n *\n * @form [String] A string describing the form of the unit representation (eg. long,\n * short, narrow).\n *\n * @cldr [Cldr instance].\n *\n * Return the plural map of a unit, eg: \"second\"\n * { \"one\": \"{0} second\",\n * \"other\": \"{0} seconds\" }\n * }\n *\n * Or the Array of plural maps of a compound-unit, eg: \"foot-per-second\"\n * [ { \"one\": \"{0} foot\",\n * \"other\": \"{0} feet\" },\n * { \"one\": \"{0} second\",\n * \"other\": \"{0} seconds\" } ]\n *\n * Uses the precomputed form of a compound-unit if available, eg: \"mile-per-hour\"\n * { \"displayName\": \"miles per hour\",\n * \"unitPattern-count-one\": \"{0} mile per hour\",\n * \"unitPattern-count-other\": \"{0} miles per hour\"\n * },\n *\n * Also supports \"/\" instead of \"-per-\", eg. \"foot/second\", using the precomputed form if\n * available.\n *\n * Or the Array of plural maps of a compound-unit, eg: \"foot-per-second\"\n * [ { \"one\": \"{0} foot\",\n * \"other\": \"{0} feet\" },\n * { \"one\": \"{0} second\",\n * \"other\": \"{0} seconds\" } ]\n *\n * Or undefined in case the unit (or a unit of the compound-unit) doesn't exist.\n */\nvar get = function( unit, form, cldr ) {\n\tvar ret;\n\n\t// Ensure that we get the 'precomputed' form, if present.\n\tunit = unit.replace( /\\//, \"-per-\" );\n\n\t// Get unit or -unit (eg. \"duration-second\").\n\t[ \"\" ].concat( unitCategories ).some(function( category ) {\n\t\treturn ret = cldr.main([\n\t\t\t\"units\",\n\t\t\tform,\n\t\t\tcategory.length ? category + \"-\" + unit : unit\n\t\t]);\n\t});\n\n\t// Rename keys s/unitPattern-count-//g.\n\tret = stripPluralGarbage( ret );\n\n\t// Compound Unit, eg. \"foot-per-second\" or \"foot/second\".\n\tif ( !ret && ( /-per-/ ).test( unit ) ) {\n\n\t\t// \"Some units already have 'precomputed' forms, such as kilometer-per-hour;\n\t\t// where such units exist, they should be used in preference\" UTS#35.\n\t\t// Note that precomputed form has already been handled above (!ret).\n\n\t\t// Get both recursively.\n\t\tunit = unit.split( \"-per-\" );\n\t\tret = unit.map(function( unit ) {\n\t\t\treturn get( unit, form, cldr );\n\t\t});\n\t\tif ( !ret[ 0 ] || !ret[ 1 ] ) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\treturn ret;\n};\n\nvar unitGet = get;\n\n\n\n\n/**\n * properties( unit, form, cldr )\n *\n * @unit [String] The full type-unit name (eg. duration-second), or the short unit name\n * (eg. second).\n *\n * @form [String] A string describing the form of the unit representation (eg. long,\n * short, narrow).\n *\n * @cldr [Cldr instance].\n */\nvar unitProperties = function( unit, form, cldr ) {\n\tvar compoundUnitPattern, unitProperties;\n\n\tcompoundUnitPattern = cldr.main( [ \"units\", form, \"per/compoundUnitPattern\" ] );\n\tunitProperties = unitGet( unit, form, cldr );\n\n\treturn {\n\t\tcompoundUnitPattern: compoundUnitPattern,\n\t\tunitProperties: unitProperties\n\t};\n};\n\n\n\n\n/**\n * Globalize.formatUnit( value, unit, options )\n *\n * @value [Number]\n *\n * @unit [String]: The unit (e.g \"second\", \"day\", \"year\")\n *\n * @options [Object]\n * - form: [String] \"long\", \"short\" (default), or \"narrow\".\n *\n * Format units such as seconds, minutes, days, weeks, etc.\n */\nGlobalize.formatUnit =\nGlobalize.prototype.formatUnit = function( value, unit, options ) {\n\tvalidateParameterPresence( value, \"value\" );\n\tvalidateParameterTypeNumber( value, \"value\" );\n\n\treturn this.unitFormatter( unit, options )( value );\n};\n\n/**\n * Globalize.unitFormatter( unit, options )\n *\n * @unit [String]: The unit (e.g \"second\", \"day\", \"year\")\n *\n * @options [Object]\n * - form: [String] \"long\", \"short\" (default), or \"narrow\".\n *\n * - numberFormatter: [Function] a number formatter function. Defaults to Globalize\n * `.numberFormatter()` for the current locale using the default options.\n */\nGlobalize.unitFormatter =\nGlobalize.prototype.unitFormatter = function( unit, options ) {\n\tvar args, form, numberFormatter, pluralGenerator, returnFn, properties;\n\n\tvalidateParameterPresence( unit, \"unit\" );\n\tvalidateParameterTypeString( unit, \"unit\" );\n\n\tvalidateParameterTypePlainObject( options, \"options\" );\n\n\toptions = options || {};\n\n\targs = [ unit, options ];\n\tform = options.form || \"long\";\n\tproperties = unitProperties( unit, form, this.cldr );\n\n\tnumberFormatter = options.numberFormatter || this.numberFormatter();\n\tpluralGenerator = this.pluralGenerator();\n\treturnFn = unitFormatterFn( numberFormatter, pluralGenerator, properties );\n\n\truntimeBind( args, this.cldr, returnFn, [ numberFormatter, pluralGenerator, properties ] );\n\n\treturn returnFn;\n};\n\nreturn Globalize;\n\n\n\n\n}));\n","/*!\n * Globalize v1.7.0\n *\n * https://github.com/globalizejs/globalize\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2021-08-02T11:53Z\n */\n\n// Core\nmodule.exports = require( \"./globalize\" );\n\n// Extent core with the following modules\nrequire( \"./globalize/message\" );\nrequire( \"./globalize/number\" );\nrequire( \"./globalize/plural\" );\n\n// Load after globalize/number\nrequire( \"./globalize/currency\" );\nrequire( \"./globalize/date\" );\n\n// Load after globalize/number and globalize/plural\nrequire( \"./globalize/relative-time\" );\nrequire( \"./globalize/unit\" );\n","\"use strict\";var __assign=this&&this.__assign||function(){__assign=Object.assign||function(t){for(var s,i=1,n=arguments.length;i'\"&]/g,nonAscii:/[<>'\"&\\u0080-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/g,nonAsciiPrintable:/[<>'\"&\\x01-\\x08\\x11-\\x15\\x17-\\x1F\\x7f-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/g,nonAsciiPrintableOnly:/[\\x01-\\x08\\x11-\\x15\\x17-\\x1F\\x7f-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/g,extensive:/[\\x01-\\x0c\\x0e-\\x1f\\x21-\\x2c\\x2e-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7d\\x7f-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/g};var defaultEncodeOptions={mode:\"specialChars\",level:\"all\",numeric:\"decimal\"};function encode(text,_a){var _b=_a===void 0?defaultEncodeOptions:_a,_c=_b.mode,mode=_c===void 0?\"specialChars\":_c,_d=_b.numeric,numeric=_d===void 0?\"decimal\":_d,_e=_b.level,level=_e===void 0?\"all\":_e;if(!text){return\"\"}var encodeRegExp=encodeRegExps[mode];var references=allNamedReferences[level].characters;var isHex=numeric===\"hexadecimal\";return replaceUsingRegExp(text,encodeRegExp,(function(input){var result=references[input];if(!result){var code=input.length>1?surrogate_pairs_1.getCodePoint(input,0):input.charCodeAt(0);result=(isHex?\"&#x\"+code.toString(16):\"&#\"+code)+\";\"}return result}))}exports.encode=encode;var defaultDecodeOptions={scope:\"body\",level:\"all\"};var strict=/&(?:#\\d+|#[xX][\\da-fA-F]+|[0-9a-zA-Z]+);/g;var attribute=/&(?:#\\d+|#[xX][\\da-fA-F]+|[0-9a-zA-Z]+)[;=]?/g;var baseDecodeRegExps={xml:{strict:strict,attribute:attribute,body:named_references_1.bodyRegExps.xml},html4:{strict:strict,attribute:attribute,body:named_references_1.bodyRegExps.html4},html5:{strict:strict,attribute:attribute,body:named_references_1.bodyRegExps.html5}};var decodeRegExps=__assign(__assign({},baseDecodeRegExps),{all:baseDecodeRegExps.html5});var fromCharCode=String.fromCharCode;var outOfBoundsChar=fromCharCode(65533);var defaultDecodeEntityOptions={level:\"all\"};function getDecodedEntity(entity,references,isAttribute,isStrict){var decodeResult=entity;var decodeEntityLastChar=entity[entity.length-1];if(isAttribute&&decodeEntityLastChar===\"=\"){decodeResult=entity}else if(isStrict&&decodeEntityLastChar!==\";\"){decodeResult=entity}else{var decodeResultByReference=references[entity];if(decodeResultByReference){decodeResult=decodeResultByReference}else if(entity[0]===\"&\"&&entity[1]===\"#\"){var decodeSecondChar=entity[2];var decodeCode=decodeSecondChar==\"x\"||decodeSecondChar==\"X\"?parseInt(entity.substr(3),16):parseInt(entity.substr(2));decodeResult=decodeCode>=1114111?outOfBoundsChar:decodeCode>65535?surrogate_pairs_1.fromCodePoint(decodeCode):fromCharCode(numeric_unicode_map_1.numericUnicodeMap[decodeCode]||decodeCode)}}return decodeResult}function decodeEntity(entity,_a){var _b=(_a===void 0?defaultDecodeEntityOptions:_a).level,level=_b===void 0?\"all\":_b;if(!entity){return\"\"}return getDecodedEntity(entity,allNamedReferences[level].entities,false,false)}exports.decodeEntity=decodeEntity;function decode(text,_a){var _b=_a===void 0?defaultDecodeOptions:_a,_c=_b.level,level=_c===void 0?\"all\":_c,_d=_b.scope,scope=_d===void 0?level===\"xml\"?\"strict\":\"body\":_d;if(!text){return\"\"}var decodeRegExp=decodeRegExps[level][scope];var references=allNamedReferences[level].entities;var isAttribute=scope===\"attribute\";var isStrict=scope===\"strict\";return replaceUsingRegExp(text,decodeRegExp,(function(entity){return getDecodedEntity(entity,references,isAttribute,isStrict)}))}exports.decode=decode;\n//# sourceMappingURL=./index.js.map","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports.bodyRegExps={xml:/&(?:#\\d+|#[xX][\\da-fA-F]+|[0-9a-zA-Z]+);?/g,html4:/∉|&(?:nbsp|iexcl|cent|pound|curren|yen|brvbar|sect|uml|copy|ordf|laquo|not|shy|reg|macr|deg|plusmn|sup2|sup3|acute|micro|para|middot|cedil|sup1|ordm|raquo|frac14|frac12|frac34|iquest|Agrave|Aacute|Acirc|Atilde|Auml|Aring|AElig|Ccedil|Egrave|Eacute|Ecirc|Euml|Igrave|Iacute|Icirc|Iuml|ETH|Ntilde|Ograve|Oacute|Ocirc|Otilde|Ouml|times|Oslash|Ugrave|Uacute|Ucirc|Uuml|Yacute|THORN|szlig|agrave|aacute|acirc|atilde|auml|aring|aelig|ccedil|egrave|eacute|ecirc|euml|igrave|iacute|icirc|iuml|eth|ntilde|ograve|oacute|ocirc|otilde|ouml|divide|oslash|ugrave|uacute|ucirc|uuml|yacute|thorn|yuml|quot|amp|lt|gt|#\\d+|#[xX][\\da-fA-F]+|[0-9a-zA-Z]+);?/g,html5:/·|℗|⋇|⪧|⩺|⋗|⦕|⩼|⪆|⥸|⋗|⋛|⪌|≷|≳|⪦|⩹|⋖|⋋|⋉|⥶|⩻|⦖|◃|⊴|◂|∉|⋹̸|⋵̸|∉|⋷|⋶|∌|∌|⋾|⋽|∥|⊠|⨱|⨰|&(?:AElig|AMP|Aacute|Acirc|Agrave|Aring|Atilde|Auml|COPY|Ccedil|ETH|Eacute|Ecirc|Egrave|Euml|GT|Iacute|Icirc|Igrave|Iuml|LT|Ntilde|Oacute|Ocirc|Ograve|Oslash|Otilde|Ouml|QUOT|REG|THORN|Uacute|Ucirc|Ugrave|Uuml|Yacute|aacute|acirc|acute|aelig|agrave|amp|aring|atilde|auml|brvbar|ccedil|cedil|cent|copy|curren|deg|divide|eacute|ecirc|egrave|eth|euml|frac12|frac14|frac34|gt|iacute|icirc|iexcl|igrave|iquest|iuml|laquo|lt|macr|micro|middot|nbsp|not|ntilde|oacute|ocirc|ograve|ordf|ordm|oslash|otilde|ouml|para|plusmn|pound|quot|raquo|reg|sect|shy|sup1|sup2|sup3|szlig|thorn|times|uacute|ucirc|ugrave|uml|uuml|yacute|yen|yuml|#\\d+|#[xX][\\da-fA-F]+|[0-9a-zA-Z]+);?/g};exports.namedReferences={xml:{entities:{\"<\":\"<\",\">\":\">\",\""\":'\"',\"'\":\"'\",\"&\":\"&\"},characters:{\"<\":\"<\",\">\":\">\",'\"':\""\",\"'\":\"'\",\"&\":\"&\"}},html4:{entities:{\"'\":\"'\",\" \":\" \",\" \":\" \",\"¡\":\"¡\",\"¡\":\"¡\",\"¢\":\"¢\",\"¢\":\"¢\",\"£\":\"£\",\"£\":\"£\",\"¤\":\"¤\",\"¤\":\"¤\",\"¥\":\"¥\",\"¥\":\"¥\",\"¦\":\"¦\",\"¦\":\"¦\",\"§\":\"§\",\"§\":\"§\",\"¨\":\"¨\",\"¨\":\"¨\",\"©\":\"©\",\"©\":\"©\",\"ª\":\"ª\",\"ª\":\"ª\",\"«\":\"«\",\"«\":\"«\",\"¬\":\"¬\",\"¬\":\"¬\",\"­\":\"­\",\"­\":\"­\",\"®\":\"®\",\"®\":\"®\",\"¯\":\"¯\",\"¯\":\"¯\",\"°\":\"°\",\"°\":\"°\",\"±\":\"±\",\"±\":\"±\",\"²\":\"²\",\"²\":\"²\",\"³\":\"³\",\"³\":\"³\",\"´\":\"´\",\"´\":\"´\",\"µ\":\"µ\",\"µ\":\"µ\",\"¶\":\"¶\",\"¶\":\"¶\",\"·\":\"·\",\"·\":\"·\",\"¸\":\"¸\",\"¸\":\"¸\",\"¹\":\"¹\",\"¹\":\"¹\",\"º\":\"º\",\"º\":\"º\",\"»\":\"»\",\"»\":\"»\",\"¼\":\"¼\",\"¼\":\"¼\",\"½\":\"½\",\"½\":\"½\",\"¾\":\"¾\",\"¾\":\"¾\",\"¿\":\"¿\",\"¿\":\"¿\",\"À\":\"À\",\"À\":\"À\",\"Á\":\"Á\",\"Á\":\"Á\",\"Â\":\"Â\",\"Â\":\"Â\",\"Ã\":\"Ã\",\"Ã\":\"Ã\",\"Ä\":\"Ä\",\"Ä\":\"Ä\",\"Å\":\"Å\",\"Å\":\"Å\",\"Æ\":\"Æ\",\"Æ\":\"Æ\",\"Ç\":\"Ç\",\"Ç\":\"Ç\",\"È\":\"È\",\"È\":\"È\",\"É\":\"É\",\"É\":\"É\",\"Ê\":\"Ê\",\"Ê\":\"Ê\",\"Ë\":\"Ë\",\"Ë\":\"Ë\",\"Ì\":\"Ì\",\"Ì\":\"Ì\",\"Í\":\"Í\",\"Í\":\"Í\",\"Î\":\"Î\",\"Î\":\"Î\",\"Ï\":\"Ï\",\"Ï\":\"Ï\",\"Ð\":\"Ð\",\"Ð\":\"Ð\",\"Ñ\":\"Ñ\",\"Ñ\":\"Ñ\",\"Ò\":\"Ò\",\"Ò\":\"Ò\",\"Ó\":\"Ó\",\"Ó\":\"Ó\",\"Ô\":\"Ô\",\"Ô\":\"Ô\",\"Õ\":\"Õ\",\"Õ\":\"Õ\",\"Ö\":\"Ö\",\"Ö\":\"Ö\",\"×\":\"×\",\"×\":\"×\",\"Ø\":\"Ø\",\"Ø\":\"Ø\",\"Ù\":\"Ù\",\"Ù\":\"Ù\",\"Ú\":\"Ú\",\"Ú\":\"Ú\",\"Û\":\"Û\",\"Û\":\"Û\",\"Ü\":\"Ü\",\"Ü\":\"Ü\",\"Ý\":\"Ý\",\"Ý\":\"Ý\",\"Þ\":\"Þ\",\"Þ\":\"Þ\",\"ß\":\"ß\",\"ß\":\"ß\",\"à\":\"à\",\"à\":\"à\",\"á\":\"á\",\"á\":\"á\",\"â\":\"â\",\"â\":\"â\",\"ã\":\"ã\",\"ã\":\"ã\",\"ä\":\"ä\",\"ä\":\"ä\",\"å\":\"å\",\"å\":\"å\",\"æ\":\"æ\",\"æ\":\"æ\",\"ç\":\"ç\",\"ç\":\"ç\",\"è\":\"è\",\"è\":\"è\",\"é\":\"é\",\"é\":\"é\",\"ê\":\"ê\",\"ê\":\"ê\",\"ë\":\"ë\",\"ë\":\"ë\",\"ì\":\"ì\",\"ì\":\"ì\",\"í\":\"í\",\"í\":\"í\",\"î\":\"î\",\"î\":\"î\",\"ï\":\"ï\",\"ï\":\"ï\",\"ð\":\"ð\",\"ð\":\"ð\",\"ñ\":\"ñ\",\"ñ\":\"ñ\",\"ò\":\"ò\",\"ò\":\"ò\",\"ó\":\"ó\",\"ó\":\"ó\",\"ô\":\"ô\",\"ô\":\"ô\",\"õ\":\"õ\",\"õ\":\"õ\",\"ö\":\"ö\",\"ö\":\"ö\",\"÷\":\"÷\",\"÷\":\"÷\",\"ø\":\"ø\",\"ø\":\"ø\",\"ù\":\"ù\",\"ù\":\"ù\",\"ú\":\"ú\",\"ú\":\"ú\",\"û\":\"û\",\"û\":\"û\",\"ü\":\"ü\",\"ü\":\"ü\",\"ý\":\"ý\",\"ý\":\"ý\",\"þ\":\"þ\",\"þ\":\"þ\",\"ÿ\":\"ÿ\",\"ÿ\":\"ÿ\",\""\":'\"',\""\":'\"',\"&\":\"&\",\"&\":\"&\",\"<\":\"<\",\"<\":\"<\",\">\":\">\",\">\":\">\",\"Œ\":\"Œ\",\"œ\":\"œ\",\"Š\":\"Š\",\"š\":\"š\",\"Ÿ\":\"Ÿ\",\"ˆ\":\"ˆ\",\"˜\":\"˜\",\" \":\" \",\" \":\" \",\" \":\" \",\"‌\":\"‌\",\"‍\":\"‍\",\"‎\":\"‎\",\"‏\":\"‏\",\"–\":\"–\",\"—\":\"—\",\"‘\":\"‘\",\"’\":\"’\",\"‚\":\"‚\",\"“\":\"“\",\"”\":\"”\",\"„\":\"„\",\"†\":\"†\",\"‡\":\"‡\",\"‰\":\"‰\",\"‹\":\"‹\",\"›\":\"›\",\"€\":\"€\",\"ƒ\":\"ƒ\",\"Α\":\"Α\",\"Β\":\"Β\",\"Γ\":\"Γ\",\"Δ\":\"Δ\",\"Ε\":\"Ε\",\"Ζ\":\"Ζ\",\"Η\":\"Η\",\"Θ\":\"Θ\",\"Ι\":\"Ι\",\"Κ\":\"Κ\",\"Λ\":\"Λ\",\"Μ\":\"Μ\",\"Ν\":\"Ν\",\"Ξ\":\"Ξ\",\"Ο\":\"Ο\",\"Π\":\"Π\",\"Ρ\":\"Ρ\",\"Σ\":\"Σ\",\"Τ\":\"Τ\",\"Υ\":\"Υ\",\"Φ\":\"Φ\",\"Χ\":\"Χ\",\"Ψ\":\"Ψ\",\"Ω\":\"Ω\",\"α\":\"α\",\"β\":\"β\",\"γ\":\"γ\",\"δ\":\"δ\",\"ε\":\"ε\",\"ζ\":\"ζ\",\"η\":\"η\",\"θ\":\"θ\",\"ι\":\"ι\",\"κ\":\"κ\",\"λ\":\"λ\",\"μ\":\"μ\",\"ν\":\"ν\",\"ξ\":\"ξ\",\"ο\":\"ο\",\"π\":\"π\",\"ρ\":\"ρ\",\"ς\":\"ς\",\"σ\":\"σ\",\"τ\":\"τ\",\"υ\":\"υ\",\"φ\":\"φ\",\"χ\":\"χ\",\"ψ\":\"ψ\",\"ω\":\"ω\",\"ϑ\":\"ϑ\",\"ϒ\":\"ϒ\",\"ϖ\":\"ϖ\",\"•\":\"•\",\"…\":\"…\",\"′\":\"′\",\"″\":\"″\",\"‾\":\"‾\",\"⁄\":\"⁄\",\"℘\":\"℘\",\"ℑ\":\"ℑ\",\"ℜ\":\"ℜ\",\"™\":\"™\",\"ℵ\":\"ℵ\",\"←\":\"←\",\"↑\":\"↑\",\"→\":\"→\",\"↓\":\"↓\",\"↔\":\"↔\",\"↵\":\"↵\",\"⇐\":\"⇐\",\"⇑\":\"⇑\",\"⇒\":\"⇒\",\"⇓\":\"⇓\",\"⇔\":\"⇔\",\"∀\":\"∀\",\"∂\":\"∂\",\"∃\":\"∃\",\"∅\":\"∅\",\"∇\":\"∇\",\"∈\":\"∈\",\"∉\":\"∉\",\"∋\":\"∋\",\"∏\":\"∏\",\"∑\":\"∑\",\"−\":\"−\",\"∗\":\"∗\",\"√\":\"√\",\"∝\":\"∝\",\"∞\":\"∞\",\"∠\":\"∠\",\"∧\":\"∧\",\"∨\":\"∨\",\"∩\":\"∩\",\"∪\":\"∪\",\"∫\":\"∫\",\"∴\":\"∴\",\"∼\":\"∼\",\"≅\":\"≅\",\"≈\":\"≈\",\"≠\":\"≠\",\"≡\":\"≡\",\"≤\":\"≤\",\"≥\":\"≥\",\"⊂\":\"⊂\",\"⊃\":\"⊃\",\"⊄\":\"⊄\",\"⊆\":\"⊆\",\"⊇\":\"⊇\",\"⊕\":\"⊕\",\"⊗\":\"⊗\",\"⊥\":\"⊥\",\"⋅\":\"⋅\",\"⌈\":\"⌈\",\"⌉\":\"⌉\",\"⌊\":\"⌊\",\"⌋\":\"⌋\",\"⟨\":\"〈\",\"⟩\":\"〉\",\"◊\":\"◊\",\"♠\":\"♠\",\"♣\":\"♣\",\"♥\":\"♥\",\"♦\":\"♦\"},characters:{\"'\":\"'\",\" \":\" \",\"¡\":\"¡\",\"¢\":\"¢\",\"£\":\"£\",\"¤\":\"¤\",\"¥\":\"¥\",\"¦\":\"¦\",\"§\":\"§\",\"¨\":\"¨\",\"©\":\"©\",\"ª\":\"ª\",\"«\":\"«\",\"¬\":\"¬\",\"­\":\"­\",\"®\":\"®\",\"¯\":\"¯\",\"°\":\"°\",\"±\":\"±\",\"²\":\"²\",\"³\":\"³\",\"´\":\"´\",\"µ\":\"µ\",\"¶\":\"¶\",\"·\":\"·\",\"¸\":\"¸\",\"¹\":\"¹\",\"º\":\"º\",\"»\":\"»\",\"¼\":\"¼\",\"½\":\"½\",\"¾\":\"¾\",\"¿\":\"¿\",\"À\":\"À\",\"Á\":\"Á\",\"Â\":\"Â\",\"Ã\":\"Ã\",\"Ä\":\"Ä\",\"Å\":\"Å\",\"Æ\":\"Æ\",\"Ç\":\"Ç\",\"È\":\"È\",\"É\":\"É\",\"Ê\":\"Ê\",\"Ë\":\"Ë\",\"Ì\":\"Ì\",\"Í\":\"Í\",\"Î\":\"Î\",\"Ï\":\"Ï\",\"Ð\":\"Ð\",\"Ñ\":\"Ñ\",\"Ò\":\"Ò\",\"Ó\":\"Ó\",\"Ô\":\"Ô\",\"Õ\":\"Õ\",\"Ö\":\"Ö\",\"×\":\"×\",\"Ø\":\"Ø\",\"Ù\":\"Ù\",\"Ú\":\"Ú\",\"Û\":\"Û\",\"Ü\":\"Ü\",\"Ý\":\"Ý\",\"Þ\":\"Þ\",\"ß\":\"ß\",\"à\":\"à\",\"á\":\"á\",\"â\":\"â\",\"ã\":\"ã\",\"ä\":\"ä\",\"å\":\"å\",\"æ\":\"æ\",\"ç\":\"ç\",\"è\":\"è\",\"é\":\"é\",\"ê\":\"ê\",\"ë\":\"ë\",\"ì\":\"ì\",\"í\":\"í\",\"î\":\"î\",\"ï\":\"ï\",\"ð\":\"ð\",\"ñ\":\"ñ\",\"ò\":\"ò\",\"ó\":\"ó\",\"ô\":\"ô\",\"õ\":\"õ\",\"ö\":\"ö\",\"÷\":\"÷\",\"ø\":\"ø\",\"ù\":\"ù\",\"ú\":\"ú\",\"û\":\"û\",\"ü\":\"ü\",\"ý\":\"ý\",\"þ\":\"þ\",\"ÿ\":\"ÿ\",'\"':\""\",\"&\":\"&\",\"<\":\"<\",\">\":\">\",\"Œ\":\"Œ\",\"œ\":\"œ\",\"Š\":\"Š\",\"š\":\"š\",\"Ÿ\":\"Ÿ\",\"ˆ\":\"ˆ\",\"˜\":\"˜\",\" \":\" \",\" \":\" \",\" \":\" \",\"‌\":\"‌\",\"‍\":\"‍\",\"‎\":\"‎\",\"‏\":\"‏\",\"–\":\"–\",\"—\":\"—\",\"‘\":\"‘\",\"’\":\"’\",\"‚\":\"‚\",\"“\":\"“\",\"”\":\"”\",\"„\":\"„\",\"†\":\"†\",\"‡\":\"‡\",\"‰\":\"‰\",\"‹\":\"‹\",\"›\":\"›\",\"€\":\"€\",\"ƒ\":\"ƒ\",\"Α\":\"Α\",\"Β\":\"Β\",\"Γ\":\"Γ\",\"Δ\":\"Δ\",\"Ε\":\"Ε\",\"Ζ\":\"Ζ\",\"Η\":\"Η\",\"Θ\":\"Θ\",\"Ι\":\"Ι\",\"Κ\":\"Κ\",\"Λ\":\"Λ\",\"Μ\":\"Μ\",\"Ν\":\"Ν\",\"Ξ\":\"Ξ\",\"Ο\":\"Ο\",\"Π\":\"Π\",\"Ρ\":\"Ρ\",\"Σ\":\"Σ\",\"Τ\":\"Τ\",\"Υ\":\"Υ\",\"Φ\":\"Φ\",\"Χ\":\"Χ\",\"Ψ\":\"Ψ\",\"Ω\":\"Ω\",\"α\":\"α\",\"β\":\"β\",\"γ\":\"γ\",\"δ\":\"δ\",\"ε\":\"ε\",\"ζ\":\"ζ\",\"η\":\"η\",\"θ\":\"θ\",\"ι\":\"ι\",\"κ\":\"κ\",\"λ\":\"λ\",\"μ\":\"μ\",\"ν\":\"ν\",\"ξ\":\"ξ\",\"ο\":\"ο\",\"π\":\"π\",\"ρ\":\"ρ\",\"ς\":\"ς\",\"σ\":\"σ\",\"τ\":\"τ\",\"υ\":\"υ\",\"φ\":\"φ\",\"χ\":\"χ\",\"ψ\":\"ψ\",\"ω\":\"ω\",\"ϑ\":\"ϑ\",\"ϒ\":\"ϒ\",\"ϖ\":\"ϖ\",\"•\":\"•\",\"…\":\"…\",\"′\":\"′\",\"″\":\"″\",\"‾\":\"‾\",\"⁄\":\"⁄\",\"℘\":\"℘\",\"ℑ\":\"ℑ\",\"ℜ\":\"ℜ\",\"™\":\"™\",\"ℵ\":\"ℵ\",\"←\":\"←\",\"↑\":\"↑\",\"→\":\"→\",\"↓\":\"↓\",\"↔\":\"↔\",\"↵\":\"↵\",\"⇐\":\"⇐\",\"⇑\":\"⇑\",\"⇒\":\"⇒\",\"⇓\":\"⇓\",\"⇔\":\"⇔\",\"∀\":\"∀\",\"∂\":\"∂\",\"∃\":\"∃\",\"∅\":\"∅\",\"∇\":\"∇\",\"∈\":\"∈\",\"∉\":\"∉\",\"∋\":\"∋\",\"∏\":\"∏\",\"∑\":\"∑\",\"−\":\"−\",\"∗\":\"∗\",\"√\":\"√\",\"∝\":\"∝\",\"∞\":\"∞\",\"∠\":\"∠\",\"∧\":\"∧\",\"∨\":\"∨\",\"∩\":\"∩\",\"∪\":\"∪\",\"∫\":\"∫\",\"∴\":\"∴\",\"∼\":\"∼\",\"≅\":\"≅\",\"≈\":\"≈\",\"≠\":\"≠\",\"≡\":\"≡\",\"≤\":\"≤\",\"≥\":\"≥\",\"⊂\":\"⊂\",\"⊃\":\"⊃\",\"⊄\":\"⊄\",\"⊆\":\"⊆\",\"⊇\":\"⊇\",\"⊕\":\"⊕\",\"⊗\":\"⊗\",\"⊥\":\"⊥\",\"⋅\":\"⋅\",\"⌈\":\"⌈\",\"⌉\":\"⌉\",\"⌊\":\"⌊\",\"⌋\":\"⌋\",\"〈\":\"⟨\",\"〉\":\"⟩\",\"◊\":\"◊\",\"♠\":\"♠\",\"♣\":\"♣\",\"♥\":\"♥\",\"♦\":\"♦\"}},html5:{entities:{\"Æ\":\"Æ\",\"Æ\":\"Æ\",\"&\":\"&\",\"&\":\"&\",\"Á\":\"Á\",\"Á\":\"Á\",\"Ă\":\"Ă\",\"Â\":\"Â\",\"Â\":\"Â\",\"А\":\"А\",\"𝔄\":\"𝔄\",\"À\":\"À\",\"À\":\"À\",\"Α\":\"Α\",\"Ā\":\"Ā\",\"⩓\":\"⩓\",\"Ą\":\"Ą\",\"𝔸\":\"𝔸\",\"⁡\":\"⁡\",\"Å\":\"Å\",\"Å\":\"Å\",\"𝒜\":\"𝒜\",\"≔\":\"≔\",\"Ã\":\"Ã\",\"Ã\":\"Ã\",\"Ä\":\"Ä\",\"Ä\":\"Ä\",\"∖\":\"∖\",\"⫧\":\"⫧\",\"⌆\":\"⌆\",\"Б\":\"Б\",\"∵\":\"∵\",\"ℬ\":\"ℬ\",\"Β\":\"Β\",\"𝔅\":\"𝔅\",\"𝔹\":\"𝔹\",\"˘\":\"˘\",\"ℬ\":\"ℬ\",\"≎\":\"≎\",\"Ч\":\"Ч\",\"©\":\"©\",\"©\":\"©\",\"Ć\":\"Ć\",\"⋒\":\"⋒\",\"ⅅ\":\"ⅅ\",\"ℭ\":\"ℭ\",\"Č\":\"Č\",\"Ç\":\"Ç\",\"Ç\":\"Ç\",\"Ĉ\":\"Ĉ\",\"∰\":\"∰\",\"Ċ\":\"Ċ\",\"¸\":\"¸\",\"·\":\"·\",\"ℭ\":\"ℭ\",\"Χ\":\"Χ\",\"⊙\":\"⊙\",\"⊖\":\"⊖\",\"⊕\":\"⊕\",\"⊗\":\"⊗\",\"∲\":\"∲\",\"”\":\"”\",\"’\":\"’\",\"∷\":\"∷\",\"⩴\":\"⩴\",\"≡\":\"≡\",\"∯\":\"∯\",\"∮\":\"∮\",\"ℂ\":\"ℂ\",\"∐\":\"∐\",\"∳\":\"∳\",\"⨯\":\"⨯\",\"𝒞\":\"𝒞\",\"⋓\":\"⋓\",\"≍\":\"≍\",\"ⅅ\":\"ⅅ\",\"⤑\":\"⤑\",\"Ђ\":\"Ђ\",\"Ѕ\":\"Ѕ\",\"Џ\":\"Џ\",\"‡\":\"‡\",\"↡\":\"↡\",\"⫤\":\"⫤\",\"Ď\":\"Ď\",\"Д\":\"Д\",\"∇\":\"∇\",\"Δ\":\"Δ\",\"𝔇\":\"𝔇\",\"´\":\"´\",\"˙\":\"˙\",\"˝\":\"˝\",\"`\":\"`\",\"˜\":\"˜\",\"⋄\":\"⋄\",\"ⅆ\":\"ⅆ\",\"𝔻\":\"𝔻\",\"¨\":\"¨\",\"⃜\":\"⃜\",\"≐\":\"≐\",\"∯\":\"∯\",\"¨\":\"¨\",\"⇓\":\"⇓\",\"⇐\":\"⇐\",\"⇔\":\"⇔\",\"⫤\":\"⫤\",\"⟸\":\"⟸\",\"⟺\":\"⟺\",\"⟹\":\"⟹\",\"⇒\":\"⇒\",\"⊨\":\"⊨\",\"⇑\":\"⇑\",\"⇕\":\"⇕\",\"∥\":\"∥\",\"↓\":\"↓\",\"⤓\":\"⤓\",\"⇵\":\"⇵\",\"̑\":\"̑\",\"⥐\":\"⥐\",\"⥞\":\"⥞\",\"↽\":\"↽\",\"⥖\":\"⥖\",\"⥟\":\"⥟\",\"⇁\":\"⇁\",\"⥗\":\"⥗\",\"⊤\":\"⊤\",\"↧\":\"↧\",\"⇓\":\"⇓\",\"𝒟\":\"𝒟\",\"Đ\":\"Đ\",\"Ŋ\":\"Ŋ\",\"Ð\":\"Ð\",\"Ð\":\"Ð\",\"É\":\"É\",\"É\":\"É\",\"Ě\":\"Ě\",\"Ê\":\"Ê\",\"Ê\":\"Ê\",\"Э\":\"Э\",\"Ė\":\"Ė\",\"𝔈\":\"𝔈\",\"È\":\"È\",\"È\":\"È\",\"∈\":\"∈\",\"Ē\":\"Ē\",\"◻\":\"◻\",\"▫\":\"▫\",\"Ę\":\"Ę\",\"𝔼\":\"𝔼\",\"Ε\":\"Ε\",\"⩵\":\"⩵\",\"≂\":\"≂\",\"⇌\":\"⇌\",\"ℰ\":\"ℰ\",\"⩳\":\"⩳\",\"Η\":\"Η\",\"Ë\":\"Ë\",\"Ë\":\"Ë\",\"∃\":\"∃\",\"ⅇ\":\"ⅇ\",\"Ф\":\"Ф\",\"𝔉\":\"𝔉\",\"◼\":\"◼\",\"▪\":\"▪\",\"𝔽\":\"𝔽\",\"∀\":\"∀\",\"ℱ\":\"ℱ\",\"ℱ\":\"ℱ\",\"Ѓ\":\"Ѓ\",\">\":\">\",\">\":\">\",\"Γ\":\"Γ\",\"Ϝ\":\"Ϝ\",\"Ğ\":\"Ğ\",\"Ģ\":\"Ģ\",\"Ĝ\":\"Ĝ\",\"Г\":\"Г\",\"Ġ\":\"Ġ\",\"𝔊\":\"𝔊\",\"⋙\":\"⋙\",\"𝔾\":\"𝔾\",\"≥\":\"≥\",\"⋛\":\"⋛\",\"≧\":\"≧\",\"⪢\":\"⪢\",\"≷\":\"≷\",\"⩾\":\"⩾\",\"≳\":\"≳\",\"𝒢\":\"𝒢\",\"≫\":\"≫\",\"Ъ\":\"Ъ\",\"ˇ\":\"ˇ\",\"^\":\"^\",\"Ĥ\":\"Ĥ\",\"ℌ\":\"ℌ\",\"ℋ\":\"ℋ\",\"ℍ\":\"ℍ\",\"─\":\"─\",\"ℋ\":\"ℋ\",\"Ħ\":\"Ħ\",\"≎\":\"≎\",\"≏\":\"≏\",\"Е\":\"Е\",\"IJ\":\"IJ\",\"Ё\":\"Ё\",\"Í\":\"Í\",\"Í\":\"Í\",\"Î\":\"Î\",\"Î\":\"Î\",\"И\":\"И\",\"İ\":\"İ\",\"ℑ\":\"ℑ\",\"Ì\":\"Ì\",\"Ì\":\"Ì\",\"ℑ\":\"ℑ\",\"Ī\":\"Ī\",\"ⅈ\":\"ⅈ\",\"⇒\":\"⇒\",\"∬\":\"∬\",\"∫\":\"∫\",\"⋂\":\"⋂\",\"⁣\":\"⁣\",\"⁢\":\"⁢\",\"Į\":\"Į\",\"𝕀\":\"𝕀\",\"Ι\":\"Ι\",\"ℐ\":\"ℐ\",\"Ĩ\":\"Ĩ\",\"І\":\"І\",\"Ï\":\"Ï\",\"Ï\":\"Ï\",\"Ĵ\":\"Ĵ\",\"Й\":\"Й\",\"𝔍\":\"𝔍\",\"𝕁\":\"𝕁\",\"𝒥\":\"𝒥\",\"Ј\":\"Ј\",\"Є\":\"Є\",\"Х\":\"Х\",\"Ќ\":\"Ќ\",\"Κ\":\"Κ\",\"Ķ\":\"Ķ\",\"К\":\"К\",\"𝔎\":\"𝔎\",\"𝕂\":\"𝕂\",\"𝒦\":\"𝒦\",\"Љ\":\"Љ\",\"<\":\"<\",\"<\":\"<\",\"Ĺ\":\"Ĺ\",\"Λ\":\"Λ\",\"⟪\":\"⟪\",\"ℒ\":\"ℒ\",\"↞\":\"↞\",\"Ľ\":\"Ľ\",\"Ļ\":\"Ļ\",\"Л\":\"Л\",\"⟨\":\"⟨\",\"←\":\"←\",\"⇤\":\"⇤\",\"⇆\":\"⇆\",\"⌈\":\"⌈\",\"⟦\":\"⟦\",\"⥡\":\"⥡\",\"⇃\":\"⇃\",\"⥙\":\"⥙\",\"⌊\":\"⌊\",\"↔\":\"↔\",\"⥎\":\"⥎\",\"⊣\":\"⊣\",\"↤\":\"↤\",\"⥚\":\"⥚\",\"⊲\":\"⊲\",\"⧏\":\"⧏\",\"⊴\":\"⊴\",\"⥑\":\"⥑\",\"⥠\":\"⥠\",\"↿\":\"↿\",\"⥘\":\"⥘\",\"↼\":\"↼\",\"⥒\":\"⥒\",\"⇐\":\"⇐\",\"⇔\":\"⇔\",\"⋚\":\"⋚\",\"≦\":\"≦\",\"≶\":\"≶\",\"⪡\":\"⪡\",\"⩽\":\"⩽\",\"≲\":\"≲\",\"𝔏\":\"𝔏\",\"⋘\":\"⋘\",\"⇚\":\"⇚\",\"Ŀ\":\"Ŀ\",\"⟵\":\"⟵\",\"⟷\":\"⟷\",\"⟶\":\"⟶\",\"⟸\":\"⟸\",\"⟺\":\"⟺\",\"⟹\":\"⟹\",\"𝕃\":\"𝕃\",\"↙\":\"↙\",\"↘\":\"↘\",\"ℒ\":\"ℒ\",\"↰\":\"↰\",\"Ł\":\"Ł\",\"≪\":\"≪\",\"⤅\":\"⤅\",\"М\":\"М\",\" \":\" \",\"ℳ\":\"ℳ\",\"𝔐\":\"𝔐\",\"∓\":\"∓\",\"𝕄\":\"𝕄\",\"ℳ\":\"ℳ\",\"Μ\":\"Μ\",\"Њ\":\"Њ\",\"Ń\":\"Ń\",\"Ň\":\"Ň\",\"Ņ\":\"Ņ\",\"Н\":\"Н\",\"​\":\"​\",\"​\":\"​\",\"​\":\"​\",\"​\":\"​\",\"≫\":\"≫\",\"≪\":\"≪\",\" \":\"\\n\",\"𝔑\":\"𝔑\",\"⁠\":\"⁠\",\" \":\" \",\"ℕ\":\"ℕ\",\"⫬\":\"⫬\",\"≢\":\"≢\",\"≭\":\"≭\",\"∦\":\"∦\",\"∉\":\"∉\",\"≠\":\"≠\",\"≂̸\":\"≂̸\",\"∄\":\"∄\",\"≯\":\"≯\",\"≱\":\"≱\",\"≧̸\":\"≧̸\",\"≫̸\":\"≫̸\",\"≹\":\"≹\",\"⩾̸\":\"⩾̸\",\"≵\":\"≵\",\"≎̸\":\"≎̸\",\"≏̸\":\"≏̸\",\"⋪\":\"⋪\",\"⧏̸\":\"⧏̸\",\"⋬\":\"⋬\",\"≮\":\"≮\",\"≰\":\"≰\",\"≸\":\"≸\",\"≪̸\":\"≪̸\",\"⩽̸\":\"⩽̸\",\"≴\":\"≴\",\"⪢̸\":\"⪢̸\",\"⪡̸\":\"⪡̸\",\"⊀\":\"⊀\",\"⪯̸\":\"⪯̸\",\"⋠\":\"⋠\",\"∌\":\"∌\",\"⋫\":\"⋫\",\"⧐̸\":\"⧐̸\",\"⋭\":\"⋭\",\"⊏̸\":\"⊏̸\",\"⋢\":\"⋢\",\"⊐̸\":\"⊐̸\",\"⋣\":\"⋣\",\"⊂⃒\":\"⊂⃒\",\"⊈\":\"⊈\",\"⊁\":\"⊁\",\"⪰̸\":\"⪰̸\",\"⋡\":\"⋡\",\"≿̸\":\"≿̸\",\"⊃⃒\":\"⊃⃒\",\"⊉\":\"⊉\",\"≁\":\"≁\",\"≄\":\"≄\",\"≇\":\"≇\",\"≉\":\"≉\",\"∤\":\"∤\",\"𝒩\":\"𝒩\",\"Ñ\":\"Ñ\",\"Ñ\":\"Ñ\",\"Ν\":\"Ν\",\"Œ\":\"Œ\",\"Ó\":\"Ó\",\"Ó\":\"Ó\",\"Ô\":\"Ô\",\"Ô\":\"Ô\",\"О\":\"О\",\"Ő\":\"Ő\",\"𝔒\":\"𝔒\",\"Ò\":\"Ò\",\"Ò\":\"Ò\",\"Ō\":\"Ō\",\"Ω\":\"Ω\",\"Ο\":\"Ο\",\"𝕆\":\"𝕆\",\"“\":\"“\",\"‘\":\"‘\",\"⩔\":\"⩔\",\"𝒪\":\"𝒪\",\"Ø\":\"Ø\",\"Ø\":\"Ø\",\"Õ\":\"Õ\",\"Õ\":\"Õ\",\"⨷\":\"⨷\",\"Ö\":\"Ö\",\"Ö\":\"Ö\",\"‾\":\"‾\",\"⏞\":\"⏞\",\"⎴\":\"⎴\",\"⏜\":\"⏜\",\"∂\":\"∂\",\"П\":\"П\",\"𝔓\":\"𝔓\",\"Φ\":\"Φ\",\"Π\":\"Π\",\"±\":\"±\",\"ℌ\":\"ℌ\",\"ℙ\":\"ℙ\",\"⪻\":\"⪻\",\"≺\":\"≺\",\"⪯\":\"⪯\",\"≼\":\"≼\",\"≾\":\"≾\",\"″\":\"″\",\"∏\":\"∏\",\"∷\":\"∷\",\"∝\":\"∝\",\"𝒫\":\"𝒫\",\"Ψ\":\"Ψ\",\""\":'\"',\""\":'\"',\"𝔔\":\"𝔔\",\"ℚ\":\"ℚ\",\"𝒬\":\"𝒬\",\"⤐\":\"⤐\",\"®\":\"®\",\"®\":\"®\",\"Ŕ\":\"Ŕ\",\"⟫\":\"⟫\",\"↠\":\"↠\",\"⤖\":\"⤖\",\"Ř\":\"Ř\",\"Ŗ\":\"Ŗ\",\"Р\":\"Р\",\"ℜ\":\"ℜ\",\"∋\":\"∋\",\"⇋\":\"⇋\",\"⥯\":\"⥯\",\"ℜ\":\"ℜ\",\"Ρ\":\"Ρ\",\"⟩\":\"⟩\",\"→\":\"→\",\"⇥\":\"⇥\",\"⇄\":\"⇄\",\"⌉\":\"⌉\",\"⟧\":\"⟧\",\"⥝\":\"⥝\",\"⇂\":\"⇂\",\"⥕\":\"⥕\",\"⌋\":\"⌋\",\"⊢\":\"⊢\",\"↦\":\"↦\",\"⥛\":\"⥛\",\"⊳\":\"⊳\",\"⧐\":\"⧐\",\"⊵\":\"⊵\",\"⥏\":\"⥏\",\"⥜\":\"⥜\",\"↾\":\"↾\",\"⥔\":\"⥔\",\"⇀\":\"⇀\",\"⥓\":\"⥓\",\"⇒\":\"⇒\",\"ℝ\":\"ℝ\",\"⥰\":\"⥰\",\"⇛\":\"⇛\",\"ℛ\":\"ℛ\",\"↱\":\"↱\",\"⧴\":\"⧴\",\"Щ\":\"Щ\",\"Ш\":\"Ш\",\"Ь\":\"Ь\",\"Ś\":\"Ś\",\"⪼\":\"⪼\",\"Š\":\"Š\",\"Ş\":\"Ş\",\"Ŝ\":\"Ŝ\",\"С\":\"С\",\"𝔖\":\"𝔖\",\"↓\":\"↓\",\"←\":\"←\",\"→\":\"→\",\"↑\":\"↑\",\"Σ\":\"Σ\",\"∘\":\"∘\",\"𝕊\":\"𝕊\",\"√\":\"√\",\"□\":\"□\",\"⊓\":\"⊓\",\"⊏\":\"⊏\",\"⊑\":\"⊑\",\"⊐\":\"⊐\",\"⊒\":\"⊒\",\"⊔\":\"⊔\",\"𝒮\":\"𝒮\",\"⋆\":\"⋆\",\"⋐\":\"⋐\",\"⋐\":\"⋐\",\"⊆\":\"⊆\",\"≻\":\"≻\",\"⪰\":\"⪰\",\"≽\":\"≽\",\"≿\":\"≿\",\"∋\":\"∋\",\"∑\":\"∑\",\"⋑\":\"⋑\",\"⊃\":\"⊃\",\"⊇\":\"⊇\",\"⋑\":\"⋑\",\"Þ\":\"Þ\",\"Þ\":\"Þ\",\"™\":\"™\",\"Ћ\":\"Ћ\",\"Ц\":\"Ц\",\" \":\"\\t\",\"Τ\":\"Τ\",\"Ť\":\"Ť\",\"Ţ\":\"Ţ\",\"Т\":\"Т\",\"𝔗\":\"𝔗\",\"∴\":\"∴\",\"Θ\":\"Θ\",\"  \":\"  \",\" \":\" \",\"∼\":\"∼\",\"≃\":\"≃\",\"≅\":\"≅\",\"≈\":\"≈\",\"𝕋\":\"𝕋\",\"⃛\":\"⃛\",\"𝒯\":\"𝒯\",\"Ŧ\":\"Ŧ\",\"Ú\":\"Ú\",\"Ú\":\"Ú\",\"↟\":\"↟\",\"⥉\":\"⥉\",\"Ў\":\"Ў\",\"Ŭ\":\"Ŭ\",\"Û\":\"Û\",\"Û\":\"Û\",\"У\":\"У\",\"Ű\":\"Ű\",\"𝔘\":\"𝔘\",\"Ù\":\"Ù\",\"Ù\":\"Ù\",\"Ū\":\"Ū\",\"_\":\"_\",\"⏟\":\"⏟\",\"⎵\":\"⎵\",\"⏝\":\"⏝\",\"⋃\":\"⋃\",\"⊎\":\"⊎\",\"Ų\":\"Ų\",\"𝕌\":\"𝕌\",\"↑\":\"↑\",\"⤒\":\"⤒\",\"⇅\":\"⇅\",\"↕\":\"↕\",\"⥮\":\"⥮\",\"⊥\":\"⊥\",\"↥\":\"↥\",\"⇑\":\"⇑\",\"⇕\":\"⇕\",\"↖\":\"↖\",\"↗\":\"↗\",\"ϒ\":\"ϒ\",\"Υ\":\"Υ\",\"Ů\":\"Ů\",\"𝒰\":\"𝒰\",\"Ũ\":\"Ũ\",\"Ü\":\"Ü\",\"Ü\":\"Ü\",\"⊫\":\"⊫\",\"⫫\":\"⫫\",\"В\":\"В\",\"⊩\":\"⊩\",\"⫦\":\"⫦\",\"⋁\":\"⋁\",\"‖\":\"‖\",\"‖\":\"‖\",\"∣\":\"∣\",\"|\":\"|\",\"❘\":\"❘\",\"≀\":\"≀\",\" \":\" \",\"𝔙\":\"𝔙\",\"𝕍\":\"𝕍\",\"𝒱\":\"𝒱\",\"⊪\":\"⊪\",\"Ŵ\":\"Ŵ\",\"⋀\":\"⋀\",\"𝔚\":\"𝔚\",\"𝕎\":\"𝕎\",\"𝒲\":\"𝒲\",\"𝔛\":\"𝔛\",\"Ξ\":\"Ξ\",\"𝕏\":\"𝕏\",\"𝒳\":\"𝒳\",\"Я\":\"Я\",\"Ї\":\"Ї\",\"Ю\":\"Ю\",\"Ý\":\"Ý\",\"Ý\":\"Ý\",\"Ŷ\":\"Ŷ\",\"Ы\":\"Ы\",\"𝔜\":\"𝔜\",\"𝕐\":\"𝕐\",\"𝒴\":\"𝒴\",\"Ÿ\":\"Ÿ\",\"Ж\":\"Ж\",\"Ź\":\"Ź\",\"Ž\":\"Ž\",\"З\":\"З\",\"Ż\":\"Ż\",\"​\":\"​\",\"Ζ\":\"Ζ\",\"ℨ\":\"ℨ\",\"ℤ\":\"ℤ\",\"𝒵\":\"𝒵\",\"á\":\"á\",\"á\":\"á\",\"ă\":\"ă\",\"∾\":\"∾\",\"∾̳\":\"∾̳\",\"∿\":\"∿\",\"â\":\"â\",\"â\":\"â\",\"´\":\"´\",\"´\":\"´\",\"а\":\"а\",\"æ\":\"æ\",\"æ\":\"æ\",\"⁡\":\"⁡\",\"𝔞\":\"𝔞\",\"à\":\"à\",\"à\":\"à\",\"ℵ\":\"ℵ\",\"ℵ\":\"ℵ\",\"α\":\"α\",\"ā\":\"ā\",\"⨿\":\"⨿\",\"&\":\"&\",\"&\":\"&\",\"∧\":\"∧\",\"⩕\":\"⩕\",\"⩜\":\"⩜\",\"⩘\":\"⩘\",\"⩚\":\"⩚\",\"∠\":\"∠\",\"⦤\":\"⦤\",\"∠\":\"∠\",\"∡\":\"∡\",\"⦨\":\"⦨\",\"⦩\":\"⦩\",\"⦪\":\"⦪\",\"⦫\":\"⦫\",\"⦬\":\"⦬\",\"⦭\":\"⦭\",\"⦮\":\"⦮\",\"⦯\":\"⦯\",\"∟\":\"∟\",\"⊾\":\"⊾\",\"⦝\":\"⦝\",\"∢\":\"∢\",\"Å\":\"Å\",\"⍼\":\"⍼\",\"ą\":\"ą\",\"𝕒\":\"𝕒\",\"≈\":\"≈\",\"⩰\":\"⩰\",\"⩯\":\"⩯\",\"≊\":\"≊\",\"≋\":\"≋\",\"'\":\"'\",\"≈\":\"≈\",\"≊\":\"≊\",\"å\":\"å\",\"å\":\"å\",\"𝒶\":\"𝒶\",\"*\":\"*\",\"≈\":\"≈\",\"≍\":\"≍\",\"ã\":\"ã\",\"ã\":\"ã\",\"ä\":\"ä\",\"ä\":\"ä\",\"∳\":\"∳\",\"⨑\":\"⨑\",\"⫭\":\"⫭\",\"≌\":\"≌\",\"϶\":\"϶\",\"‵\":\"‵\",\"∽\":\"∽\",\"⋍\":\"⋍\",\"⊽\":\"⊽\",\"⌅\":\"⌅\",\"⌅\":\"⌅\",\"⎵\":\"⎵\",\"⎶\":\"⎶\",\"≌\":\"≌\",\"б\":\"б\",\"„\":\"„\",\"∵\":\"∵\",\"∵\":\"∵\",\"⦰\":\"⦰\",\"϶\":\"϶\",\"ℬ\":\"ℬ\",\"β\":\"β\",\"ℶ\":\"ℶ\",\"≬\":\"≬\",\"𝔟\":\"𝔟\",\"⋂\":\"⋂\",\"◯\":\"◯\",\"⋃\":\"⋃\",\"⨀\":\"⨀\",\"⨁\":\"⨁\",\"⨂\":\"⨂\",\"⨆\":\"⨆\",\"★\":\"★\",\"▽\":\"▽\",\"△\":\"△\",\"⨄\":\"⨄\",\"⋁\":\"⋁\",\"⋀\":\"⋀\",\"⤍\":\"⤍\",\"⧫\":\"⧫\",\"▪\":\"▪\",\"▴\":\"▴\",\"▾\":\"▾\",\"◂\":\"◂\",\"▸\":\"▸\",\"␣\":\"␣\",\"▒\":\"▒\",\"░\":\"░\",\"▓\":\"▓\",\"█\":\"█\",\"=⃥\":\"=⃥\",\"≡⃥\":\"≡⃥\",\"⌐\":\"⌐\",\"𝕓\":\"𝕓\",\"⊥\":\"⊥\",\"⊥\":\"⊥\",\"⋈\":\"⋈\",\"╗\":\"╗\",\"╔\":\"╔\",\"╖\":\"╖\",\"╓\":\"╓\",\"═\":\"═\",\"╦\":\"╦\",\"╩\":\"╩\",\"╤\":\"╤\",\"╧\":\"╧\",\"╝\":\"╝\",\"╚\":\"╚\",\"╜\":\"╜\",\"╙\":\"╙\",\"║\":\"║\",\"╬\":\"╬\",\"╣\":\"╣\",\"╠\":\"╠\",\"╫\":\"╫\",\"╢\":\"╢\",\"╟\":\"╟\",\"⧉\":\"⧉\",\"╕\":\"╕\",\"╒\":\"╒\",\"┐\":\"┐\",\"┌\":\"┌\",\"─\":\"─\",\"╥\":\"╥\",\"╨\":\"╨\",\"┬\":\"┬\",\"┴\":\"┴\",\"⊟\":\"⊟\",\"⊞\":\"⊞\",\"⊠\":\"⊠\",\"╛\":\"╛\",\"╘\":\"╘\",\"┘\":\"┘\",\"└\":\"└\",\"│\":\"│\",\"╪\":\"╪\",\"╡\":\"╡\",\"╞\":\"╞\",\"┼\":\"┼\",\"┤\":\"┤\",\"├\":\"├\",\"‵\":\"‵\",\"˘\":\"˘\",\"¦\":\"¦\",\"¦\":\"¦\",\"𝒷\":\"𝒷\",\"⁏\":\"⁏\",\"∽\":\"∽\",\"⋍\":\"⋍\",\"\\":\"\\\\\",\"⧅\":\"⧅\",\"⟈\":\"⟈\",\"•\":\"•\",\"•\":\"•\",\"≎\":\"≎\",\"⪮\":\"⪮\",\"≏\":\"≏\",\"≏\":\"≏\",\"ć\":\"ć\",\"∩\":\"∩\",\"⩄\":\"⩄\",\"⩉\":\"⩉\",\"⩋\":\"⩋\",\"⩇\":\"⩇\",\"⩀\":\"⩀\",\"∩︀\":\"∩︀\",\"⁁\":\"⁁\",\"ˇ\":\"ˇ\",\"⩍\":\"⩍\",\"č\":\"č\",\"ç\":\"ç\",\"ç\":\"ç\",\"ĉ\":\"ĉ\",\"⩌\":\"⩌\",\"⩐\":\"⩐\",\"ċ\":\"ċ\",\"¸\":\"¸\",\"¸\":\"¸\",\"⦲\":\"⦲\",\"¢\":\"¢\",\"¢\":\"¢\",\"·\":\"·\",\"𝔠\":\"𝔠\",\"ч\":\"ч\",\"✓\":\"✓\",\"✓\":\"✓\",\"χ\":\"χ\",\"○\":\"○\",\"⧃\":\"⧃\",\"ˆ\":\"ˆ\",\"≗\":\"≗\",\"↺\":\"↺\",\"↻\":\"↻\",\"®\":\"®\",\"Ⓢ\":\"Ⓢ\",\"⊛\":\"⊛\",\"⊚\":\"⊚\",\"⊝\":\"⊝\",\"≗\":\"≗\",\"⨐\":\"⨐\",\"⫯\":\"⫯\",\"⧂\":\"⧂\",\"♣\":\"♣\",\"♣\":\"♣\",\":\":\":\",\"≔\":\"≔\",\"≔\":\"≔\",\",\":\",\",\"@\":\"@\",\"∁\":\"∁\",\"∘\":\"∘\",\"∁\":\"∁\",\"ℂ\":\"ℂ\",\"≅\":\"≅\",\"⩭\":\"⩭\",\"∮\":\"∮\",\"𝕔\":\"𝕔\",\"∐\":\"∐\",\"©\":\"©\",\"©\":\"©\",\"℗\":\"℗\",\"↵\":\"↵\",\"✗\":\"✗\",\"𝒸\":\"𝒸\",\"⫏\":\"⫏\",\"⫑\":\"⫑\",\"⫐\":\"⫐\",\"⫒\":\"⫒\",\"⋯\":\"⋯\",\"⤸\":\"⤸\",\"⤵\":\"⤵\",\"⋞\":\"⋞\",\"⋟\":\"⋟\",\"↶\":\"↶\",\"⤽\":\"⤽\",\"∪\":\"∪\",\"⩈\":\"⩈\",\"⩆\":\"⩆\",\"⩊\":\"⩊\",\"⊍\":\"⊍\",\"⩅\":\"⩅\",\"∪︀\":\"∪︀\",\"↷\":\"↷\",\"⤼\":\"⤼\",\"⋞\":\"⋞\",\"⋟\":\"⋟\",\"⋎\":\"⋎\",\"⋏\":\"⋏\",\"¤\":\"¤\",\"¤\":\"¤\",\"↶\":\"↶\",\"↷\":\"↷\",\"⋎\":\"⋎\",\"⋏\":\"⋏\",\"∲\":\"∲\",\"∱\":\"∱\",\"⌭\":\"⌭\",\"⇓\":\"⇓\",\"⥥\":\"⥥\",\"†\":\"†\",\"ℸ\":\"ℸ\",\"↓\":\"↓\",\"‐\":\"‐\",\"⊣\":\"⊣\",\"⤏\":\"⤏\",\"˝\":\"˝\",\"ď\":\"ď\",\"д\":\"д\",\"ⅆ\":\"ⅆ\",\"‡\":\"‡\",\"⇊\":\"⇊\",\"⩷\":\"⩷\",\"°\":\"°\",\"°\":\"°\",\"δ\":\"δ\",\"⦱\":\"⦱\",\"⥿\":\"⥿\",\"𝔡\":\"𝔡\",\"⇃\":\"⇃\",\"⇂\":\"⇂\",\"⋄\":\"⋄\",\"⋄\":\"⋄\",\"♦\":\"♦\",\"♦\":\"♦\",\"¨\":\"¨\",\"ϝ\":\"ϝ\",\"⋲\":\"⋲\",\"÷\":\"÷\",\"÷\":\"÷\",\"÷\":\"÷\",\"⋇\":\"⋇\",\"⋇\":\"⋇\",\"ђ\":\"ђ\",\"⌞\":\"⌞\",\"⌍\":\"⌍\",\"$\":\"$\",\"𝕕\":\"𝕕\",\"˙\":\"˙\",\"≐\":\"≐\",\"≑\":\"≑\",\"∸\":\"∸\",\"∔\":\"∔\",\"⊡\":\"⊡\",\"⌆\":\"⌆\",\"↓\":\"↓\",\"⇊\":\"⇊\",\"⇃\":\"⇃\",\"⇂\":\"⇂\",\"⤐\":\"⤐\",\"⌟\":\"⌟\",\"⌌\":\"⌌\",\"𝒹\":\"𝒹\",\"ѕ\":\"ѕ\",\"⧶\":\"⧶\",\"đ\":\"đ\",\"⋱\":\"⋱\",\"▿\":\"▿\",\"▾\":\"▾\",\"⇵\":\"⇵\",\"⥯\":\"⥯\",\"⦦\":\"⦦\",\"џ\":\"џ\",\"⟿\":\"⟿\",\"⩷\":\"⩷\",\"≑\":\"≑\",\"é\":\"é\",\"é\":\"é\",\"⩮\":\"⩮\",\"ě\":\"ě\",\"≖\":\"≖\",\"ê\":\"ê\",\"ê\":\"ê\",\"≕\":\"≕\",\"э\":\"э\",\"ė\":\"ė\",\"ⅇ\":\"ⅇ\",\"≒\":\"≒\",\"𝔢\":\"𝔢\",\"⪚\":\"⪚\",\"è\":\"è\",\"è\":\"è\",\"⪖\":\"⪖\",\"⪘\":\"⪘\",\"⪙\":\"⪙\",\"⏧\":\"⏧\",\"ℓ\":\"ℓ\",\"⪕\":\"⪕\",\"⪗\":\"⪗\",\"ē\":\"ē\",\"∅\":\"∅\",\"∅\":\"∅\",\"∅\":\"∅\",\" \":\" \",\" \":\" \",\" \":\" \",\"ŋ\":\"ŋ\",\" \":\" \",\"ę\":\"ę\",\"𝕖\":\"𝕖\",\"⋕\":\"⋕\",\"⧣\":\"⧣\",\"⩱\":\"⩱\",\"ε\":\"ε\",\"ε\":\"ε\",\"ϵ\":\"ϵ\",\"≖\":\"≖\",\"≕\":\"≕\",\"≂\":\"≂\",\"⪖\":\"⪖\",\"⪕\":\"⪕\",\"=\":\"=\",\"≟\":\"≟\",\"≡\":\"≡\",\"⩸\":\"⩸\",\"⧥\":\"⧥\",\"≓\":\"≓\",\"⥱\":\"⥱\",\"ℯ\":\"ℯ\",\"≐\":\"≐\",\"≂\":\"≂\",\"η\":\"η\",\"ð\":\"ð\",\"ð\":\"ð\",\"ë\":\"ë\",\"ë\":\"ë\",\"€\":\"€\",\"!\":\"!\",\"∃\":\"∃\",\"ℰ\":\"ℰ\",\"ⅇ\":\"ⅇ\",\"≒\":\"≒\",\"ф\":\"ф\",\"♀\":\"♀\",\"ffi\":\"ffi\",\"ff\":\"ff\",\"ffl\":\"ffl\",\"𝔣\":\"𝔣\",\"fi\":\"fi\",\"fj\":\"fj\",\"♭\":\"♭\",\"fl\":\"fl\",\"▱\":\"▱\",\"ƒ\":\"ƒ\",\"𝕗\":\"𝕗\",\"∀\":\"∀\",\"⋔\":\"⋔\",\"⫙\":\"⫙\",\"⨍\":\"⨍\",\"½\":\"½\",\"½\":\"½\",\"⅓\":\"⅓\",\"¼\":\"¼\",\"¼\":\"¼\",\"⅕\":\"⅕\",\"⅙\":\"⅙\",\"⅛\":\"⅛\",\"⅔\":\"⅔\",\"⅖\":\"⅖\",\"¾\":\"¾\",\"¾\":\"¾\",\"⅗\":\"⅗\",\"⅜\":\"⅜\",\"⅘\":\"⅘\",\"⅚\":\"⅚\",\"⅝\":\"⅝\",\"⅞\":\"⅞\",\"⁄\":\"⁄\",\"⌢\":\"⌢\",\"𝒻\":\"𝒻\",\"≧\":\"≧\",\"⪌\":\"⪌\",\"ǵ\":\"ǵ\",\"γ\":\"γ\",\"ϝ\":\"ϝ\",\"⪆\":\"⪆\",\"ğ\":\"ğ\",\"ĝ\":\"ĝ\",\"г\":\"г\",\"ġ\":\"ġ\",\"≥\":\"≥\",\"⋛\":\"⋛\",\"≥\":\"≥\",\"≧\":\"≧\",\"⩾\":\"⩾\",\"⩾\":\"⩾\",\"⪩\":\"⪩\",\"⪀\":\"⪀\",\"⪂\":\"⪂\",\"⪄\":\"⪄\",\"⋛︀\":\"⋛︀\",\"⪔\":\"⪔\",\"𝔤\":\"𝔤\",\"≫\":\"≫\",\"⋙\":\"⋙\",\"ℷ\":\"ℷ\",\"ѓ\":\"ѓ\",\"≷\":\"≷\",\"⪒\":\"⪒\",\"⪥\":\"⪥\",\"⪤\":\"⪤\",\"≩\":\"≩\",\"⪊\":\"⪊\",\"⪊\":\"⪊\",\"⪈\":\"⪈\",\"⪈\":\"⪈\",\"≩\":\"≩\",\"⋧\":\"⋧\",\"𝕘\":\"𝕘\",\"`\":\"`\",\"ℊ\":\"ℊ\",\"≳\":\"≳\",\"⪎\":\"⪎\",\"⪐\":\"⪐\",\">\":\">\",\">\":\">\",\"⪧\":\"⪧\",\"⩺\":\"⩺\",\"⋗\":\"⋗\",\"⦕\":\"⦕\",\"⩼\":\"⩼\",\"⪆\":\"⪆\",\"⥸\":\"⥸\",\"⋗\":\"⋗\",\"⋛\":\"⋛\",\"⪌\":\"⪌\",\"≷\":\"≷\",\"≳\":\"≳\",\"≩︀\":\"≩︀\",\"≩︀\":\"≩︀\",\"⇔\":\"⇔\",\" \":\" \",\"½\":\"½\",\"ℋ\":\"ℋ\",\"ъ\":\"ъ\",\"↔\":\"↔\",\"⥈\":\"⥈\",\"↭\":\"↭\",\"ℏ\":\"ℏ\",\"ĥ\":\"ĥ\",\"♥\":\"♥\",\"♥\":\"♥\",\"…\":\"…\",\"⊹\":\"⊹\",\"𝔥\":\"𝔥\",\"⤥\":\"⤥\",\"⤦\":\"⤦\",\"⇿\":\"⇿\",\"∻\":\"∻\",\"↩\":\"↩\",\"↪\":\"↪\",\"𝕙\":\"𝕙\",\"―\":\"―\",\"𝒽\":\"𝒽\",\"ℏ\":\"ℏ\",\"ħ\":\"ħ\",\"⁃\":\"⁃\",\"‐\":\"‐\",\"í\":\"í\",\"í\":\"í\",\"⁣\":\"⁣\",\"î\":\"î\",\"î\":\"î\",\"и\":\"и\",\"е\":\"е\",\"¡\":\"¡\",\"¡\":\"¡\",\"⇔\":\"⇔\",\"𝔦\":\"𝔦\",\"ì\":\"ì\",\"ì\":\"ì\",\"ⅈ\":\"ⅈ\",\"⨌\":\"⨌\",\"∭\":\"∭\",\"⧜\":\"⧜\",\"℩\":\"℩\",\"ij\":\"ij\",\"ī\":\"ī\",\"ℑ\":\"ℑ\",\"ℐ\":\"ℐ\",\"ℑ\":\"ℑ\",\"ı\":\"ı\",\"⊷\":\"⊷\",\"Ƶ\":\"Ƶ\",\"∈\":\"∈\",\"℅\":\"℅\",\"∞\":\"∞\",\"⧝\":\"⧝\",\"ı\":\"ı\",\"∫\":\"∫\",\"⊺\":\"⊺\",\"ℤ\":\"ℤ\",\"⊺\":\"⊺\",\"⨗\":\"⨗\",\"⨼\":\"⨼\",\"ё\":\"ё\",\"į\":\"į\",\"𝕚\":\"𝕚\",\"ι\":\"ι\",\"⨼\":\"⨼\",\"¿\":\"¿\",\"¿\":\"¿\",\"𝒾\":\"𝒾\",\"∈\":\"∈\",\"⋹\":\"⋹\",\"⋵\":\"⋵\",\"⋴\":\"⋴\",\"⋳\":\"⋳\",\"∈\":\"∈\",\"⁢\":\"⁢\",\"ĩ\":\"ĩ\",\"і\":\"і\",\"ï\":\"ï\",\"ï\":\"ï\",\"ĵ\":\"ĵ\",\"й\":\"й\",\"𝔧\":\"𝔧\",\"ȷ\":\"ȷ\",\"𝕛\":\"𝕛\",\"𝒿\":\"𝒿\",\"ј\":\"ј\",\"є\":\"є\",\"κ\":\"κ\",\"ϰ\":\"ϰ\",\"ķ\":\"ķ\",\"к\":\"к\",\"𝔨\":\"𝔨\",\"ĸ\":\"ĸ\",\"х\":\"х\",\"ќ\":\"ќ\",\"𝕜\":\"𝕜\",\"𝓀\":\"𝓀\",\"⇚\":\"⇚\",\"⇐\":\"⇐\",\"⤛\":\"⤛\",\"⤎\":\"⤎\",\"≦\":\"≦\",\"⪋\":\"⪋\",\"⥢\":\"⥢\",\"ĺ\":\"ĺ\",\"⦴\":\"⦴\",\"ℒ\":\"ℒ\",\"λ\":\"λ\",\"⟨\":\"⟨\",\"⦑\":\"⦑\",\"⟨\":\"⟨\",\"⪅\":\"⪅\",\"«\":\"«\",\"«\":\"«\",\"←\":\"←\",\"⇤\":\"⇤\",\"⤟\":\"⤟\",\"⤝\":\"⤝\",\"↩\":\"↩\",\"↫\":\"↫\",\"⤹\":\"⤹\",\"⥳\":\"⥳\",\"↢\":\"↢\",\"⪫\":\"⪫\",\"⤙\":\"⤙\",\"⪭\":\"⪭\",\"⪭︀\":\"⪭︀\",\"⤌\":\"⤌\",\"❲\":\"❲\",\"{\":\"{\",\"[\":\"[\",\"⦋\":\"⦋\",\"⦏\":\"⦏\",\"⦍\":\"⦍\",\"ľ\":\"ľ\",\"ļ\":\"ļ\",\"⌈\":\"⌈\",\"{\":\"{\",\"л\":\"л\",\"⤶\":\"⤶\",\"“\":\"“\",\"„\":\"„\",\"⥧\":\"⥧\",\"⥋\":\"⥋\",\"↲\":\"↲\",\"≤\":\"≤\",\"←\":\"←\",\"↢\":\"↢\",\"↽\":\"↽\",\"↼\":\"↼\",\"⇇\":\"⇇\",\"↔\":\"↔\",\"⇆\":\"⇆\",\"⇋\":\"⇋\",\"↭\":\"↭\",\"⋋\":\"⋋\",\"⋚\":\"⋚\",\"≤\":\"≤\",\"≦\":\"≦\",\"⩽\":\"⩽\",\"⩽\":\"⩽\",\"⪨\":\"⪨\",\"⩿\":\"⩿\",\"⪁\":\"⪁\",\"⪃\":\"⪃\",\"⋚︀\":\"⋚︀\",\"⪓\":\"⪓\",\"⪅\":\"⪅\",\"⋖\":\"⋖\",\"⋚\":\"⋚\",\"⪋\":\"⪋\",\"≶\":\"≶\",\"≲\":\"≲\",\"⥼\":\"⥼\",\"⌊\":\"⌊\",\"𝔩\":\"𝔩\",\"≶\":\"≶\",\"⪑\":\"⪑\",\"↽\":\"↽\",\"↼\":\"↼\",\"⥪\":\"⥪\",\"▄\":\"▄\",\"љ\":\"љ\",\"≪\":\"≪\",\"⇇\":\"⇇\",\"⌞\":\"⌞\",\"⥫\":\"⥫\",\"◺\":\"◺\",\"ŀ\":\"ŀ\",\"⎰\":\"⎰\",\"⎰\":\"⎰\",\"≨\":\"≨\",\"⪉\":\"⪉\",\"⪉\":\"⪉\",\"⪇\":\"⪇\",\"⪇\":\"⪇\",\"≨\":\"≨\",\"⋦\":\"⋦\",\"⟬\":\"⟬\",\"⇽\":\"⇽\",\"⟦\":\"⟦\",\"⟵\":\"⟵\",\"⟷\":\"⟷\",\"⟼\":\"⟼\",\"⟶\":\"⟶\",\"↫\":\"↫\",\"↬\":\"↬\",\"⦅\":\"⦅\",\"𝕝\":\"𝕝\",\"⨭\":\"⨭\",\"⨴\":\"⨴\",\"∗\":\"∗\",\"_\":\"_\",\"◊\":\"◊\",\"◊\":\"◊\",\"⧫\":\"⧫\",\"(\":\"(\",\"⦓\":\"⦓\",\"⇆\":\"⇆\",\"⌟\":\"⌟\",\"⇋\":\"⇋\",\"⥭\":\"⥭\",\"‎\":\"‎\",\"⊿\":\"⊿\",\"‹\":\"‹\",\"𝓁\":\"𝓁\",\"↰\":\"↰\",\"≲\":\"≲\",\"⪍\":\"⪍\",\"⪏\":\"⪏\",\"[\":\"[\",\"‘\":\"‘\",\"‚\":\"‚\",\"ł\":\"ł\",\"<\":\"<\",\"<\":\"<\",\"⪦\":\"⪦\",\"⩹\":\"⩹\",\"⋖\":\"⋖\",\"⋋\":\"⋋\",\"⋉\":\"⋉\",\"⥶\":\"⥶\",\"⩻\":\"⩻\",\"⦖\":\"⦖\",\"◃\":\"◃\",\"⊴\":\"⊴\",\"◂\":\"◂\",\"⥊\":\"⥊\",\"⥦\":\"⥦\",\"≨︀\":\"≨︀\",\"≨︀\":\"≨︀\",\"∺\":\"∺\",\"¯\":\"¯\",\"¯\":\"¯\",\"♂\":\"♂\",\"✠\":\"✠\",\"✠\":\"✠\",\"↦\":\"↦\",\"↦\":\"↦\",\"↧\":\"↧\",\"↤\":\"↤\",\"↥\":\"↥\",\"▮\":\"▮\",\"⨩\":\"⨩\",\"м\":\"м\",\"—\":\"—\",\"∡\":\"∡\",\"𝔪\":\"𝔪\",\"℧\":\"℧\",\"µ\":\"µ\",\"µ\":\"µ\",\"∣\":\"∣\",\"*\":\"*\",\"⫰\":\"⫰\",\"·\":\"·\",\"·\":\"·\",\"−\":\"−\",\"⊟\":\"⊟\",\"∸\":\"∸\",\"⨪\":\"⨪\",\"⫛\":\"⫛\",\"…\":\"…\",\"∓\":\"∓\",\"⊧\":\"⊧\",\"𝕞\":\"𝕞\",\"∓\":\"∓\",\"𝓂\":\"𝓂\",\"∾\":\"∾\",\"μ\":\"μ\",\"⊸\":\"⊸\",\"⊸\":\"⊸\",\"⋙̸\":\"⋙̸\",\"≫⃒\":\"≫⃒\",\"≫̸\":\"≫̸\",\"⇍\":\"⇍\",\"⇎\":\"⇎\",\"⋘̸\":\"⋘̸\",\"≪⃒\":\"≪⃒\",\"≪̸\":\"≪̸\",\"⇏\":\"⇏\",\"⊯\":\"⊯\",\"⊮\":\"⊮\",\"∇\":\"∇\",\"ń\":\"ń\",\"∠⃒\":\"∠⃒\",\"≉\":\"≉\",\"⩰̸\":\"⩰̸\",\"≋̸\":\"≋̸\",\"ʼn\":\"ʼn\",\"≉\":\"≉\",\"♮\":\"♮\",\"♮\":\"♮\",\"ℕ\":\"ℕ\",\" \":\" \",\" \":\" \",\"≎̸\":\"≎̸\",\"≏̸\":\"≏̸\",\"⩃\":\"⩃\",\"ň\":\"ň\",\"ņ\":\"ņ\",\"≇\":\"≇\",\"⩭̸\":\"⩭̸\",\"⩂\":\"⩂\",\"н\":\"н\",\"–\":\"–\",\"≠\":\"≠\",\"⇗\":\"⇗\",\"⤤\":\"⤤\",\"↗\":\"↗\",\"↗\":\"↗\",\"≐̸\":\"≐̸\",\"≢\":\"≢\",\"⤨\":\"⤨\",\"≂̸\":\"≂̸\",\"∄\":\"∄\",\"∄\":\"∄\",\"𝔫\":\"𝔫\",\"≧̸\":\"≧̸\",\"≱\":\"≱\",\"≱\":\"≱\",\"≧̸\":\"≧̸\",\"⩾̸\":\"⩾̸\",\"⩾̸\":\"⩾̸\",\"≵\":\"≵\",\"≯\":\"≯\",\"≯\":\"≯\",\"⇎\":\"⇎\",\"↮\":\"↮\",\"⫲\":\"⫲\",\"∋\":\"∋\",\"⋼\":\"⋼\",\"⋺\":\"⋺\",\"∋\":\"∋\",\"њ\":\"њ\",\"⇍\":\"⇍\",\"≦̸\":\"≦̸\",\"↚\":\"↚\",\"‥\":\"‥\",\"≰\":\"≰\",\"↚\":\"↚\",\"↮\":\"↮\",\"≰\":\"≰\",\"≦̸\":\"≦̸\",\"⩽̸\":\"⩽̸\",\"⩽̸\":\"⩽̸\",\"≮\":\"≮\",\"≴\":\"≴\",\"≮\":\"≮\",\"⋪\":\"⋪\",\"⋬\":\"⋬\",\"∤\":\"∤\",\"𝕟\":\"𝕟\",\"¬\":\"¬\",\"¬\":\"¬\",\"∉\":\"∉\",\"⋹̸\":\"⋹̸\",\"⋵̸\":\"⋵̸\",\"∉\":\"∉\",\"⋷\":\"⋷\",\"⋶\":\"⋶\",\"∌\":\"∌\",\"∌\":\"∌\",\"⋾\":\"⋾\",\"⋽\":\"⋽\",\"∦\":\"∦\",\"∦\":\"∦\",\"⫽⃥\":\"⫽⃥\",\"∂̸\":\"∂̸\",\"⨔\":\"⨔\",\"⊀\":\"⊀\",\"⋠\":\"⋠\",\"⪯̸\":\"⪯̸\",\"⊀\":\"⊀\",\"⪯̸\":\"⪯̸\",\"⇏\":\"⇏\",\"↛\":\"↛\",\"⤳̸\":\"⤳̸\",\"↝̸\":\"↝̸\",\"↛\":\"↛\",\"⋫\":\"⋫\",\"⋭\":\"⋭\",\"⊁\":\"⊁\",\"⋡\":\"⋡\",\"⪰̸\":\"⪰̸\",\"𝓃\":\"𝓃\",\"∤\":\"∤\",\"∦\":\"∦\",\"≁\":\"≁\",\"≄\":\"≄\",\"≄\":\"≄\",\"∤\":\"∤\",\"∦\":\"∦\",\"⋢\":\"⋢\",\"⋣\":\"⋣\",\"⊄\":\"⊄\",\"⫅̸\":\"⫅̸\",\"⊈\":\"⊈\",\"⊂⃒\":\"⊂⃒\",\"⊈\":\"⊈\",\"⫅̸\":\"⫅̸\",\"⊁\":\"⊁\",\"⪰̸\":\"⪰̸\",\"⊅\":\"⊅\",\"⫆̸\":\"⫆̸\",\"⊉\":\"⊉\",\"⊃⃒\":\"⊃⃒\",\"⊉\":\"⊉\",\"⫆̸\":\"⫆̸\",\"≹\":\"≹\",\"ñ\":\"ñ\",\"ñ\":\"ñ\",\"≸\":\"≸\",\"⋪\":\"⋪\",\"⋬\":\"⋬\",\"⋫\":\"⋫\",\"⋭\":\"⋭\",\"ν\":\"ν\",\"#\":\"#\",\"№\":\"№\",\" \":\" \",\"⊭\":\"⊭\",\"⤄\":\"⤄\",\"≍⃒\":\"≍⃒\",\"⊬\":\"⊬\",\"≥⃒\":\"≥⃒\",\">⃒\":\">⃒\",\"⧞\":\"⧞\",\"⤂\":\"⤂\",\"≤⃒\":\"≤⃒\",\"<⃒\":\"<⃒\",\"⊴⃒\":\"⊴⃒\",\"⤃\":\"⤃\",\"⊵⃒\":\"⊵⃒\",\"∼⃒\":\"∼⃒\",\"⇖\":\"⇖\",\"⤣\":\"⤣\",\"↖\":\"↖\",\"↖\":\"↖\",\"⤧\":\"⤧\",\"Ⓢ\":\"Ⓢ\",\"ó\":\"ó\",\"ó\":\"ó\",\"⊛\":\"⊛\",\"⊚\":\"⊚\",\"ô\":\"ô\",\"ô\":\"ô\",\"о\":\"о\",\"⊝\":\"⊝\",\"ő\":\"ő\",\"⨸\":\"⨸\",\"⊙\":\"⊙\",\"⦼\":\"⦼\",\"œ\":\"œ\",\"⦿\":\"⦿\",\"𝔬\":\"𝔬\",\"˛\":\"˛\",\"ò\":\"ò\",\"ò\":\"ò\",\"⧁\":\"⧁\",\"⦵\":\"⦵\",\"Ω\":\"Ω\",\"∮\":\"∮\",\"↺\":\"↺\",\"⦾\":\"⦾\",\"⦻\":\"⦻\",\"‾\":\"‾\",\"⧀\":\"⧀\",\"ō\":\"ō\",\"ω\":\"ω\",\"ο\":\"ο\",\"⦶\":\"⦶\",\"⊖\":\"⊖\",\"𝕠\":\"𝕠\",\"⦷\":\"⦷\",\"⦹\":\"⦹\",\"⊕\":\"⊕\",\"∨\":\"∨\",\"↻\":\"↻\",\"⩝\":\"⩝\",\"ℴ\":\"ℴ\",\"ℴ\":\"ℴ\",\"ª\":\"ª\",\"ª\":\"ª\",\"º\":\"º\",\"º\":\"º\",\"⊶\":\"⊶\",\"⩖\":\"⩖\",\"⩗\":\"⩗\",\"⩛\":\"⩛\",\"ℴ\":\"ℴ\",\"ø\":\"ø\",\"ø\":\"ø\",\"⊘\":\"⊘\",\"õ\":\"õ\",\"õ\":\"õ\",\"⊗\":\"⊗\",\"⨶\":\"⨶\",\"ö\":\"ö\",\"ö\":\"ö\",\"⌽\":\"⌽\",\"∥\":\"∥\",\"¶\":\"¶\",\"¶\":\"¶\",\"∥\":\"∥\",\"⫳\":\"⫳\",\"⫽\":\"⫽\",\"∂\":\"∂\",\"п\":\"п\",\"%\":\"%\",\".\":\".\",\"‰\":\"‰\",\"⊥\":\"⊥\",\"‱\":\"‱\",\"𝔭\":\"𝔭\",\"φ\":\"φ\",\"ϕ\":\"ϕ\",\"ℳ\":\"ℳ\",\"☎\":\"☎\",\"π\":\"π\",\"⋔\":\"⋔\",\"ϖ\":\"ϖ\",\"ℏ\":\"ℏ\",\"ℎ\":\"ℎ\",\"ℏ\":\"ℏ\",\"+\":\"+\",\"⨣\":\"⨣\",\"⊞\":\"⊞\",\"⨢\":\"⨢\",\"∔\":\"∔\",\"⨥\":\"⨥\",\"⩲\":\"⩲\",\"±\":\"±\",\"±\":\"±\",\"⨦\":\"⨦\",\"⨧\":\"⨧\",\"±\":\"±\",\"⨕\":\"⨕\",\"𝕡\":\"𝕡\",\"£\":\"£\",\"£\":\"£\",\"≺\":\"≺\",\"⪳\":\"⪳\",\"⪷\":\"⪷\",\"≼\":\"≼\",\"⪯\":\"⪯\",\"≺\":\"≺\",\"⪷\":\"⪷\",\"≼\":\"≼\",\"⪯\":\"⪯\",\"⪹\":\"⪹\",\"⪵\":\"⪵\",\"⋨\":\"⋨\",\"≾\":\"≾\",\"′\":\"′\",\"ℙ\":\"ℙ\",\"⪵\":\"⪵\",\"⪹\":\"⪹\",\"⋨\":\"⋨\",\"∏\":\"∏\",\"⌮\":\"⌮\",\"⌒\":\"⌒\",\"⌓\":\"⌓\",\"∝\":\"∝\",\"∝\":\"∝\",\"≾\":\"≾\",\"⊰\":\"⊰\",\"𝓅\":\"𝓅\",\"ψ\":\"ψ\",\" \":\" \",\"𝔮\":\"𝔮\",\"⨌\":\"⨌\",\"𝕢\":\"𝕢\",\"⁗\":\"⁗\",\"𝓆\":\"𝓆\",\"ℍ\":\"ℍ\",\"⨖\":\"⨖\",\"?\":\"?\",\"≟\":\"≟\",\""\":'\"',\""\":'\"',\"⇛\":\"⇛\",\"⇒\":\"⇒\",\"⤜\":\"⤜\",\"⤏\":\"⤏\",\"⥤\":\"⥤\",\"∽̱\":\"∽̱\",\"ŕ\":\"ŕ\",\"√\":\"√\",\"⦳\":\"⦳\",\"⟩\":\"⟩\",\"⦒\":\"⦒\",\"⦥\":\"⦥\",\"⟩\":\"⟩\",\"»\":\"»\",\"»\":\"»\",\"→\":\"→\",\"⥵\":\"⥵\",\"⇥\":\"⇥\",\"⤠\":\"⤠\",\"⤳\":\"⤳\",\"⤞\":\"⤞\",\"↪\":\"↪\",\"↬\":\"↬\",\"⥅\":\"⥅\",\"⥴\":\"⥴\",\"↣\":\"↣\",\"↝\":\"↝\",\"⤚\":\"⤚\",\"∶\":\"∶\",\"ℚ\":\"ℚ\",\"⤍\":\"⤍\",\"❳\":\"❳\",\"}\":\"}\",\"]\":\"]\",\"⦌\":\"⦌\",\"⦎\":\"⦎\",\"⦐\":\"⦐\",\"ř\":\"ř\",\"ŗ\":\"ŗ\",\"⌉\":\"⌉\",\"}\":\"}\",\"р\":\"р\",\"⤷\":\"⤷\",\"⥩\":\"⥩\",\"”\":\"”\",\"”\":\"”\",\"↳\":\"↳\",\"ℜ\":\"ℜ\",\"ℛ\":\"ℛ\",\"ℜ\":\"ℜ\",\"ℝ\":\"ℝ\",\"▭\":\"▭\",\"®\":\"®\",\"®\":\"®\",\"⥽\":\"⥽\",\"⌋\":\"⌋\",\"𝔯\":\"𝔯\",\"⇁\":\"⇁\",\"⇀\":\"⇀\",\"⥬\":\"⥬\",\"ρ\":\"ρ\",\"ϱ\":\"ϱ\",\"→\":\"→\",\"↣\":\"↣\",\"⇁\":\"⇁\",\"⇀\":\"⇀\",\"⇄\":\"⇄\",\"⇌\":\"⇌\",\"⇉\":\"⇉\",\"↝\":\"↝\",\"⋌\":\"⋌\",\"˚\":\"˚\",\"≓\":\"≓\",\"⇄\":\"⇄\",\"⇌\":\"⇌\",\"‏\":\"‏\",\"⎱\":\"⎱\",\"⎱\":\"⎱\",\"⫮\":\"⫮\",\"⟭\":\"⟭\",\"⇾\":\"⇾\",\"⟧\":\"⟧\",\"⦆\":\"⦆\",\"𝕣\":\"𝕣\",\"⨮\":\"⨮\",\"⨵\":\"⨵\",\")\":\")\",\"⦔\":\"⦔\",\"⨒\":\"⨒\",\"⇉\":\"⇉\",\"›\":\"›\",\"𝓇\":\"𝓇\",\"↱\":\"↱\",\"]\":\"]\",\"’\":\"’\",\"’\":\"’\",\"⋌\":\"⋌\",\"⋊\":\"⋊\",\"▹\":\"▹\",\"⊵\":\"⊵\",\"▸\":\"▸\",\"⧎\":\"⧎\",\"⥨\":\"⥨\",\"℞\":\"℞\",\"ś\":\"ś\",\"‚\":\"‚\",\"≻\":\"≻\",\"⪴\":\"⪴\",\"⪸\":\"⪸\",\"š\":\"š\",\"≽\":\"≽\",\"⪰\":\"⪰\",\"ş\":\"ş\",\"ŝ\":\"ŝ\",\"⪶\":\"⪶\",\"⪺\":\"⪺\",\"⋩\":\"⋩\",\"⨓\":\"⨓\",\"≿\":\"≿\",\"с\":\"с\",\"⋅\":\"⋅\",\"⊡\":\"⊡\",\"⩦\":\"⩦\",\"⇘\":\"⇘\",\"⤥\":\"⤥\",\"↘\":\"↘\",\"↘\":\"↘\",\"§\":\"§\",\"§\":\"§\",\";\":\";\",\"⤩\":\"⤩\",\"∖\":\"∖\",\"∖\":\"∖\",\"✶\":\"✶\",\"𝔰\":\"𝔰\",\"⌢\":\"⌢\",\"♯\":\"♯\",\"щ\":\"щ\",\"ш\":\"ш\",\"∣\":\"∣\",\"∥\":\"∥\",\"­\":\"­\",\"­\":\"­\",\"σ\":\"σ\",\"ς\":\"ς\",\"ς\":\"ς\",\"∼\":\"∼\",\"⩪\":\"⩪\",\"≃\":\"≃\",\"≃\":\"≃\",\"⪞\":\"⪞\",\"⪠\":\"⪠\",\"⪝\":\"⪝\",\"⪟\":\"⪟\",\"≆\":\"≆\",\"⨤\":\"⨤\",\"⥲\":\"⥲\",\"←\":\"←\",\"∖\":\"∖\",\"⨳\":\"⨳\",\"⧤\":\"⧤\",\"∣\":\"∣\",\"⌣\":\"⌣\",\"⪪\":\"⪪\",\"⪬\":\"⪬\",\"⪬︀\":\"⪬︀\",\"ь\":\"ь\",\"/\":\"/\",\"⧄\":\"⧄\",\"⌿\":\"⌿\",\"𝕤\":\"𝕤\",\"♠\":\"♠\",\"♠\":\"♠\",\"∥\":\"∥\",\"⊓\":\"⊓\",\"⊓︀\":\"⊓︀\",\"⊔\":\"⊔\",\"⊔︀\":\"⊔︀\",\"⊏\":\"⊏\",\"⊑\":\"⊑\",\"⊏\":\"⊏\",\"⊑\":\"⊑\",\"⊐\":\"⊐\",\"⊒\":\"⊒\",\"⊐\":\"⊐\",\"⊒\":\"⊒\",\"□\":\"□\",\"□\":\"□\",\"▪\":\"▪\",\"▪\":\"▪\",\"→\":\"→\",\"𝓈\":\"𝓈\",\"∖\":\"∖\",\"⌣\":\"⌣\",\"⋆\":\"⋆\",\"☆\":\"☆\",\"★\":\"★\",\"ϵ\":\"ϵ\",\"ϕ\":\"ϕ\",\"¯\":\"¯\",\"⊂\":\"⊂\",\"⫅\":\"⫅\",\"⪽\":\"⪽\",\"⊆\":\"⊆\",\"⫃\":\"⫃\",\"⫁\":\"⫁\",\"⫋\":\"⫋\",\"⊊\":\"⊊\",\"⪿\":\"⪿\",\"⥹\":\"⥹\",\"⊂\":\"⊂\",\"⊆\":\"⊆\",\"⫅\":\"⫅\",\"⊊\":\"⊊\",\"⫋\":\"⫋\",\"⫇\":\"⫇\",\"⫕\":\"⫕\",\"⫓\":\"⫓\",\"≻\":\"≻\",\"⪸\":\"⪸\",\"≽\":\"≽\",\"⪰\":\"⪰\",\"⪺\":\"⪺\",\"⪶\":\"⪶\",\"⋩\":\"⋩\",\"≿\":\"≿\",\"∑\":\"∑\",\"♪\":\"♪\",\"¹\":\"¹\",\"¹\":\"¹\",\"²\":\"²\",\"²\":\"²\",\"³\":\"³\",\"³\":\"³\",\"⊃\":\"⊃\",\"⫆\":\"⫆\",\"⪾\":\"⪾\",\"⫘\":\"⫘\",\"⊇\":\"⊇\",\"⫄\":\"⫄\",\"⟉\":\"⟉\",\"⫗\":\"⫗\",\"⥻\":\"⥻\",\"⫂\":\"⫂\",\"⫌\":\"⫌\",\"⊋\":\"⊋\",\"⫀\":\"⫀\",\"⊃\":\"⊃\",\"⊇\":\"⊇\",\"⫆\":\"⫆\",\"⊋\":\"⊋\",\"⫌\":\"⫌\",\"⫈\":\"⫈\",\"⫔\":\"⫔\",\"⫖\":\"⫖\",\"⇙\":\"⇙\",\"⤦\":\"⤦\",\"↙\":\"↙\",\"↙\":\"↙\",\"⤪\":\"⤪\",\"ß\":\"ß\",\"ß\":\"ß\",\"⌖\":\"⌖\",\"τ\":\"τ\",\"⎴\":\"⎴\",\"ť\":\"ť\",\"ţ\":\"ţ\",\"т\":\"т\",\"⃛\":\"⃛\",\"⌕\":\"⌕\",\"𝔱\":\"𝔱\",\"∴\":\"∴\",\"∴\":\"∴\",\"θ\":\"θ\",\"ϑ\":\"ϑ\",\"ϑ\":\"ϑ\",\"≈\":\"≈\",\"∼\":\"∼\",\" \":\" \",\"≈\":\"≈\",\"∼\":\"∼\",\"þ\":\"þ\",\"þ\":\"þ\",\"˜\":\"˜\",\"×\":\"×\",\"×\":\"×\",\"⊠\":\"⊠\",\"⨱\":\"⨱\",\"⨰\":\"⨰\",\"∭\":\"∭\",\"⤨\":\"⤨\",\"⊤\":\"⊤\",\"⌶\":\"⌶\",\"⫱\":\"⫱\",\"𝕥\":\"𝕥\",\"⫚\":\"⫚\",\"⤩\":\"⤩\",\"‴\":\"‴\",\"™\":\"™\",\"▵\":\"▵\",\"▿\":\"▿\",\"◃\":\"◃\",\"⊴\":\"⊴\",\"≜\":\"≜\",\"▹\":\"▹\",\"⊵\":\"⊵\",\"◬\":\"◬\",\"≜\":\"≜\",\"⨺\":\"⨺\",\"⨹\":\"⨹\",\"⧍\":\"⧍\",\"⨻\":\"⨻\",\"⏢\":\"⏢\",\"𝓉\":\"𝓉\",\"ц\":\"ц\",\"ћ\":\"ћ\",\"ŧ\":\"ŧ\",\"≬\":\"≬\",\"↞\":\"↞\",\"↠\":\"↠\",\"⇑\":\"⇑\",\"⥣\":\"⥣\",\"ú\":\"ú\",\"ú\":\"ú\",\"↑\":\"↑\",\"ў\":\"ў\",\"ŭ\":\"ŭ\",\"û\":\"û\",\"û\":\"û\",\"у\":\"у\",\"⇅\":\"⇅\",\"ű\":\"ű\",\"⥮\":\"⥮\",\"⥾\":\"⥾\",\"𝔲\":\"𝔲\",\"ù\":\"ù\",\"ù\":\"ù\",\"↿\":\"↿\",\"↾\":\"↾\",\"▀\":\"▀\",\"⌜\":\"⌜\",\"⌜\":\"⌜\",\"⌏\":\"⌏\",\"◸\":\"◸\",\"ū\":\"ū\",\"¨\":\"¨\",\"¨\":\"¨\",\"ų\":\"ų\",\"𝕦\":\"𝕦\",\"↑\":\"↑\",\"↕\":\"↕\",\"↿\":\"↿\",\"↾\":\"↾\",\"⊎\":\"⊎\",\"υ\":\"υ\",\"ϒ\":\"ϒ\",\"υ\":\"υ\",\"⇈\":\"⇈\",\"⌝\":\"⌝\",\"⌝\":\"⌝\",\"⌎\":\"⌎\",\"ů\":\"ů\",\"◹\":\"◹\",\"𝓊\":\"𝓊\",\"⋰\":\"⋰\",\"ũ\":\"ũ\",\"▵\":\"▵\",\"▴\":\"▴\",\"⇈\":\"⇈\",\"ü\":\"ü\",\"ü\":\"ü\",\"⦧\":\"⦧\",\"⇕\":\"⇕\",\"⫨\":\"⫨\",\"⫩\":\"⫩\",\"⊨\":\"⊨\",\"⦜\":\"⦜\",\"ϵ\":\"ϵ\",\"ϰ\":\"ϰ\",\"∅\":\"∅\",\"ϕ\":\"ϕ\",\"ϖ\":\"ϖ\",\"∝\":\"∝\",\"↕\":\"↕\",\"ϱ\":\"ϱ\",\"ς\":\"ς\",\"⊊︀\":\"⊊︀\",\"⫋︀\":\"⫋︀\",\"⊋︀\":\"⊋︀\",\"⫌︀\":\"⫌︀\",\"ϑ\":\"ϑ\",\"⊲\":\"⊲\",\"⊳\":\"⊳\",\"в\":\"в\",\"⊢\":\"⊢\",\"∨\":\"∨\",\"⊻\":\"⊻\",\"≚\":\"≚\",\"⋮\":\"⋮\",\"|\":\"|\",\"|\":\"|\",\"𝔳\":\"𝔳\",\"⊲\":\"⊲\",\"⊂⃒\":\"⊂⃒\",\"⊃⃒\":\"⊃⃒\",\"𝕧\":\"𝕧\",\"∝\":\"∝\",\"⊳\":\"⊳\",\"𝓋\":\"𝓋\",\"⫋︀\":\"⫋︀\",\"⊊︀\":\"⊊︀\",\"⫌︀\":\"⫌︀\",\"⊋︀\":\"⊋︀\",\"⦚\":\"⦚\",\"ŵ\":\"ŵ\",\"⩟\":\"⩟\",\"∧\":\"∧\",\"≙\":\"≙\",\"℘\":\"℘\",\"𝔴\":\"𝔴\",\"𝕨\":\"𝕨\",\"℘\":\"℘\",\"≀\":\"≀\",\"≀\":\"≀\",\"𝓌\":\"𝓌\",\"⋂\":\"⋂\",\"◯\":\"◯\",\"⋃\":\"⋃\",\"▽\":\"▽\",\"𝔵\":\"𝔵\",\"⟺\":\"⟺\",\"⟷\":\"⟷\",\"ξ\":\"ξ\",\"⟸\":\"⟸\",\"⟵\":\"⟵\",\"⟼\":\"⟼\",\"⋻\":\"⋻\",\"⨀\":\"⨀\",\"𝕩\":\"𝕩\",\"⨁\":\"⨁\",\"⨂\":\"⨂\",\"⟹\":\"⟹\",\"⟶\":\"⟶\",\"𝓍\":\"𝓍\",\"⨆\":\"⨆\",\"⨄\":\"⨄\",\"△\":\"△\",\"⋁\":\"⋁\",\"⋀\":\"⋀\",\"ý\":\"ý\",\"ý\":\"ý\",\"я\":\"я\",\"ŷ\":\"ŷ\",\"ы\":\"ы\",\"¥\":\"¥\",\"¥\":\"¥\",\"𝔶\":\"𝔶\",\"ї\":\"ї\",\"𝕪\":\"𝕪\",\"𝓎\":\"𝓎\",\"ю\":\"ю\",\"ÿ\":\"ÿ\",\"ÿ\":\"ÿ\",\"ź\":\"ź\",\"ž\":\"ž\",\"з\":\"з\",\"ż\":\"ż\",\"ℨ\":\"ℨ\",\"ζ\":\"ζ\",\"𝔷\":\"𝔷\",\"ж\":\"ж\",\"⇝\":\"⇝\",\"𝕫\":\"𝕫\",\"𝓏\":\"𝓏\",\"‍\":\"‍\",\"‌\":\"‌\"},characters:{\"Æ\":\"Æ\",\"&\":\"&\",\"Á\":\"Á\",\"Ă\":\"Ă\",\"Â\":\"Â\",\"А\":\"А\",\"𝔄\":\"𝔄\",\"À\":\"À\",\"Α\":\"Α\",\"Ā\":\"Ā\",\"⩓\":\"⩓\",\"Ą\":\"Ą\",\"𝔸\":\"𝔸\",\"⁡\":\"⁡\",\"Å\":\"Å\",\"𝒜\":\"𝒜\",\"≔\":\"≔\",\"Ã\":\"Ã\",\"Ä\":\"Ä\",\"∖\":\"∖\",\"⫧\":\"⫧\",\"⌆\":\"⌆\",\"Б\":\"Б\",\"∵\":\"∵\",\"ℬ\":\"ℬ\",\"Β\":\"Β\",\"𝔅\":\"𝔅\",\"𝔹\":\"𝔹\",\"˘\":\"˘\",\"≎\":\"≎\",\"Ч\":\"Ч\",\"©\":\"©\",\"Ć\":\"Ć\",\"⋒\":\"⋒\",\"ⅅ\":\"ⅅ\",\"ℭ\":\"ℭ\",\"Č\":\"Č\",\"Ç\":\"Ç\",\"Ĉ\":\"Ĉ\",\"∰\":\"∰\",\"Ċ\":\"Ċ\",\"¸\":\"¸\",\"·\":\"·\",\"Χ\":\"Χ\",\"⊙\":\"⊙\",\"⊖\":\"⊖\",\"⊕\":\"⊕\",\"⊗\":\"⊗\",\"∲\":\"∲\",\"”\":\"”\",\"’\":\"’\",\"∷\":\"∷\",\"⩴\":\"⩴\",\"≡\":\"≡\",\"∯\":\"∯\",\"∮\":\"∮\",\"ℂ\":\"ℂ\",\"∐\":\"∐\",\"∳\":\"∳\",\"⨯\":\"⨯\",\"𝒞\":\"𝒞\",\"⋓\":\"⋓\",\"≍\":\"≍\",\"⤑\":\"⤑\",\"Ђ\":\"Ђ\",\"Ѕ\":\"Ѕ\",\"Џ\":\"Џ\",\"‡\":\"‡\",\"↡\":\"↡\",\"⫤\":\"⫤\",\"Ď\":\"Ď\",\"Д\":\"Д\",\"∇\":\"∇\",\"Δ\":\"Δ\",\"𝔇\":\"𝔇\",\"´\":\"´\",\"˙\":\"˙\",\"˝\":\"˝\",\"`\":\"`\",\"˜\":\"˜\",\"⋄\":\"⋄\",\"ⅆ\":\"ⅆ\",\"𝔻\":\"𝔻\",\"¨\":\"¨\",\"⃜\":\"⃜\",\"≐\":\"≐\",\"⇓\":\"⇓\",\"⇐\":\"⇐\",\"⇔\":\"⇔\",\"⟸\":\"⟸\",\"⟺\":\"⟺\",\"⟹\":\"⟹\",\"⇒\":\"⇒\",\"⊨\":\"⊨\",\"⇑\":\"⇑\",\"⇕\":\"⇕\",\"∥\":\"∥\",\"↓\":\"↓\",\"⤓\":\"⤓\",\"⇵\":\"⇵\",\"̑\":\"̑\",\"⥐\":\"⥐\",\"⥞\":\"⥞\",\"↽\":\"↽\",\"⥖\":\"⥖\",\"⥟\":\"⥟\",\"⇁\":\"⇁\",\"⥗\":\"⥗\",\"⊤\":\"⊤\",\"↧\":\"↧\",\"𝒟\":\"𝒟\",\"Đ\":\"Đ\",\"Ŋ\":\"Ŋ\",\"Ð\":\"Ð\",\"É\":\"É\",\"Ě\":\"Ě\",\"Ê\":\"Ê\",\"Э\":\"Э\",\"Ė\":\"Ė\",\"𝔈\":\"𝔈\",\"È\":\"È\",\"∈\":\"∈\",\"Ē\":\"Ē\",\"◻\":\"◻\",\"▫\":\"▫\",\"Ę\":\"Ę\",\"𝔼\":\"𝔼\",\"Ε\":\"Ε\",\"⩵\":\"⩵\",\"≂\":\"≂\",\"⇌\":\"⇌\",\"ℰ\":\"ℰ\",\"⩳\":\"⩳\",\"Η\":\"Η\",\"Ë\":\"Ë\",\"∃\":\"∃\",\"ⅇ\":\"ⅇ\",\"Ф\":\"Ф\",\"𝔉\":\"𝔉\",\"◼\":\"◼\",\"▪\":\"▪\",\"𝔽\":\"𝔽\",\"∀\":\"∀\",\"ℱ\":\"ℱ\",\"Ѓ\":\"Ѓ\",\">\":\">\",\"Γ\":\"Γ\",\"Ϝ\":\"Ϝ\",\"Ğ\":\"Ğ\",\"Ģ\":\"Ģ\",\"Ĝ\":\"Ĝ\",\"Г\":\"Г\",\"Ġ\":\"Ġ\",\"𝔊\":\"𝔊\",\"⋙\":\"⋙\",\"𝔾\":\"𝔾\",\"≥\":\"≥\",\"⋛\":\"⋛\",\"≧\":\"≧\",\"⪢\":\"⪢\",\"≷\":\"≷\",\"⩾\":\"⩾\",\"≳\":\"≳\",\"𝒢\":\"𝒢\",\"≫\":\"≫\",\"Ъ\":\"Ъ\",\"ˇ\":\"ˇ\",\"^\":\"^\",\"Ĥ\":\"Ĥ\",\"ℌ\":\"ℌ\",\"ℋ\":\"ℋ\",\"ℍ\":\"ℍ\",\"─\":\"─\",\"Ħ\":\"Ħ\",\"≏\":\"≏\",\"Е\":\"Е\",\"IJ\":\"IJ\",\"Ё\":\"Ё\",\"Í\":\"Í\",\"Î\":\"Î\",\"И\":\"И\",\"İ\":\"İ\",\"ℑ\":\"ℑ\",\"Ì\":\"Ì\",\"Ī\":\"Ī\",\"ⅈ\":\"ⅈ\",\"∬\":\"∬\",\"∫\":\"∫\",\"⋂\":\"⋂\",\"⁣\":\"⁣\",\"⁢\":\"⁢\",\"Į\":\"Į\",\"𝕀\":\"𝕀\",\"Ι\":\"Ι\",\"ℐ\":\"ℐ\",\"Ĩ\":\"Ĩ\",\"І\":\"І\",\"Ï\":\"Ï\",\"Ĵ\":\"Ĵ\",\"Й\":\"Й\",\"𝔍\":\"𝔍\",\"𝕁\":\"𝕁\",\"𝒥\":\"𝒥\",\"Ј\":\"Ј\",\"Є\":\"Є\",\"Х\":\"Х\",\"Ќ\":\"Ќ\",\"Κ\":\"Κ\",\"Ķ\":\"Ķ\",\"К\":\"К\",\"𝔎\":\"𝔎\",\"𝕂\":\"𝕂\",\"𝒦\":\"𝒦\",\"Љ\":\"Љ\",\"<\":\"<\",\"Ĺ\":\"Ĺ\",\"Λ\":\"Λ\",\"⟪\":\"⟪\",\"ℒ\":\"ℒ\",\"↞\":\"↞\",\"Ľ\":\"Ľ\",\"Ļ\":\"Ļ\",\"Л\":\"Л\",\"⟨\":\"⟨\",\"←\":\"←\",\"⇤\":\"⇤\",\"⇆\":\"⇆\",\"⌈\":\"⌈\",\"⟦\":\"⟦\",\"⥡\":\"⥡\",\"⇃\":\"⇃\",\"⥙\":\"⥙\",\"⌊\":\"⌊\",\"↔\":\"↔\",\"⥎\":\"⥎\",\"⊣\":\"⊣\",\"↤\":\"↤\",\"⥚\":\"⥚\",\"⊲\":\"⊲\",\"⧏\":\"⧏\",\"⊴\":\"⊴\",\"⥑\":\"⥑\",\"⥠\":\"⥠\",\"↿\":\"↿\",\"⥘\":\"⥘\",\"↼\":\"↼\",\"⥒\":\"⥒\",\"⋚\":\"⋚\",\"≦\":\"≦\",\"≶\":\"≶\",\"⪡\":\"⪡\",\"⩽\":\"⩽\",\"≲\":\"≲\",\"𝔏\":\"𝔏\",\"⋘\":\"⋘\",\"⇚\":\"⇚\",\"Ŀ\":\"Ŀ\",\"⟵\":\"⟵\",\"⟷\":\"⟷\",\"⟶\":\"⟶\",\"𝕃\":\"𝕃\",\"↙\":\"↙\",\"↘\":\"↘\",\"↰\":\"↰\",\"Ł\":\"Ł\",\"≪\":\"≪\",\"⤅\":\"⤅\",\"М\":\"М\",\" \":\" \",\"ℳ\":\"ℳ\",\"𝔐\":\"𝔐\",\"∓\":\"∓\",\"𝕄\":\"𝕄\",\"Μ\":\"Μ\",\"Њ\":\"Њ\",\"Ń\":\"Ń\",\"Ň\":\"Ň\",\"Ņ\":\"Ņ\",\"Н\":\"Н\",\"​\":\"​\",\"\\n\":\" \",\"𝔑\":\"𝔑\",\"⁠\":\"⁠\",\" \":\" \",\"ℕ\":\"ℕ\",\"⫬\":\"⫬\",\"≢\":\"≢\",\"≭\":\"≭\",\"∦\":\"∦\",\"∉\":\"∉\",\"≠\":\"≠\",\"≂̸\":\"≂̸\",\"∄\":\"∄\",\"≯\":\"≯\",\"≱\":\"≱\",\"≧̸\":\"≧̸\",\"≫̸\":\"≫̸\",\"≹\":\"≹\",\"⩾̸\":\"⩾̸\",\"≵\":\"≵\",\"≎̸\":\"≎̸\",\"≏̸\":\"≏̸\",\"⋪\":\"⋪\",\"⧏̸\":\"⧏̸\",\"⋬\":\"⋬\",\"≮\":\"≮\",\"≰\":\"≰\",\"≸\":\"≸\",\"≪̸\":\"≪̸\",\"⩽̸\":\"⩽̸\",\"≴\":\"≴\",\"⪢̸\":\"⪢̸\",\"⪡̸\":\"⪡̸\",\"⊀\":\"⊀\",\"⪯̸\":\"⪯̸\",\"⋠\":\"⋠\",\"∌\":\"∌\",\"⋫\":\"⋫\",\"⧐̸\":\"⧐̸\",\"⋭\":\"⋭\",\"⊏̸\":\"⊏̸\",\"⋢\":\"⋢\",\"⊐̸\":\"⊐̸\",\"⋣\":\"⋣\",\"⊂⃒\":\"⊂⃒\",\"⊈\":\"⊈\",\"⊁\":\"⊁\",\"⪰̸\":\"⪰̸\",\"⋡\":\"⋡\",\"≿̸\":\"≿̸\",\"⊃⃒\":\"⊃⃒\",\"⊉\":\"⊉\",\"≁\":\"≁\",\"≄\":\"≄\",\"≇\":\"≇\",\"≉\":\"≉\",\"∤\":\"∤\",\"𝒩\":\"𝒩\",\"Ñ\":\"Ñ\",\"Ν\":\"Ν\",\"Œ\":\"Œ\",\"Ó\":\"Ó\",\"Ô\":\"Ô\",\"О\":\"О\",\"Ő\":\"Ő\",\"𝔒\":\"𝔒\",\"Ò\":\"Ò\",\"Ō\":\"Ō\",\"Ω\":\"Ω\",\"Ο\":\"Ο\",\"𝕆\":\"𝕆\",\"“\":\"“\",\"‘\":\"‘\",\"⩔\":\"⩔\",\"𝒪\":\"𝒪\",\"Ø\":\"Ø\",\"Õ\":\"Õ\",\"⨷\":\"⨷\",\"Ö\":\"Ö\",\"‾\":\"‾\",\"⏞\":\"⏞\",\"⎴\":\"⎴\",\"⏜\":\"⏜\",\"∂\":\"∂\",\"П\":\"П\",\"𝔓\":\"𝔓\",\"Φ\":\"Φ\",\"Π\":\"Π\",\"±\":\"±\",\"ℙ\":\"ℙ\",\"⪻\":\"⪻\",\"≺\":\"≺\",\"⪯\":\"⪯\",\"≼\":\"≼\",\"≾\":\"≾\",\"″\":\"″\",\"∏\":\"∏\",\"∝\":\"∝\",\"𝒫\":\"𝒫\",\"Ψ\":\"Ψ\",'\"':\""\",\"𝔔\":\"𝔔\",\"ℚ\":\"ℚ\",\"𝒬\":\"𝒬\",\"⤐\":\"⤐\",\"®\":\"®\",\"Ŕ\":\"Ŕ\",\"⟫\":\"⟫\",\"↠\":\"↠\",\"⤖\":\"⤖\",\"Ř\":\"Ř\",\"Ŗ\":\"Ŗ\",\"Р\":\"Р\",\"ℜ\":\"ℜ\",\"∋\":\"∋\",\"⇋\":\"⇋\",\"⥯\":\"⥯\",\"Ρ\":\"Ρ\",\"⟩\":\"⟩\",\"→\":\"→\",\"⇥\":\"⇥\",\"⇄\":\"⇄\",\"⌉\":\"⌉\",\"⟧\":\"⟧\",\"⥝\":\"⥝\",\"⇂\":\"⇂\",\"⥕\":\"⥕\",\"⌋\":\"⌋\",\"⊢\":\"⊢\",\"↦\":\"↦\",\"⥛\":\"⥛\",\"⊳\":\"⊳\",\"⧐\":\"⧐\",\"⊵\":\"⊵\",\"⥏\":\"⥏\",\"⥜\":\"⥜\",\"↾\":\"↾\",\"⥔\":\"⥔\",\"⇀\":\"⇀\",\"⥓\":\"⥓\",\"ℝ\":\"ℝ\",\"⥰\":\"⥰\",\"⇛\":\"⇛\",\"ℛ\":\"ℛ\",\"↱\":\"↱\",\"⧴\":\"⧴\",\"Щ\":\"Щ\",\"Ш\":\"Ш\",\"Ь\":\"Ь\",\"Ś\":\"Ś\",\"⪼\":\"⪼\",\"Š\":\"Š\",\"Ş\":\"Ş\",\"Ŝ\":\"Ŝ\",\"С\":\"С\",\"𝔖\":\"𝔖\",\"↑\":\"↑\",\"Σ\":\"Σ\",\"∘\":\"∘\",\"𝕊\":\"𝕊\",\"√\":\"√\",\"□\":\"□\",\"⊓\":\"⊓\",\"⊏\":\"⊏\",\"⊑\":\"⊑\",\"⊐\":\"⊐\",\"⊒\":\"⊒\",\"⊔\":\"⊔\",\"𝒮\":\"𝒮\",\"⋆\":\"⋆\",\"⋐\":\"⋐\",\"⊆\":\"⊆\",\"≻\":\"≻\",\"⪰\":\"⪰\",\"≽\":\"≽\",\"≿\":\"≿\",\"∑\":\"∑\",\"⋑\":\"⋑\",\"⊃\":\"⊃\",\"⊇\":\"⊇\",\"Þ\":\"Þ\",\"™\":\"™\",\"Ћ\":\"Ћ\",\"Ц\":\"Ц\",\"\\t\":\" \",\"Τ\":\"Τ\",\"Ť\":\"Ť\",\"Ţ\":\"Ţ\",\"Т\":\"Т\",\"𝔗\":\"𝔗\",\"∴\":\"∴\",\"Θ\":\"Θ\",\"  \":\"  \",\" \":\" \",\"∼\":\"∼\",\"≃\":\"≃\",\"≅\":\"≅\",\"≈\":\"≈\",\"𝕋\":\"𝕋\",\"⃛\":\"⃛\",\"𝒯\":\"𝒯\",\"Ŧ\":\"Ŧ\",\"Ú\":\"Ú\",\"↟\":\"↟\",\"⥉\":\"⥉\",\"Ў\":\"Ў\",\"Ŭ\":\"Ŭ\",\"Û\":\"Û\",\"У\":\"У\",\"Ű\":\"Ű\",\"𝔘\":\"𝔘\",\"Ù\":\"Ù\",\"Ū\":\"Ū\",_:\"_\",\"⏟\":\"⏟\",\"⎵\":\"⎵\",\"⏝\":\"⏝\",\"⋃\":\"⋃\",\"⊎\":\"⊎\",\"Ų\":\"Ų\",\"𝕌\":\"𝕌\",\"⤒\":\"⤒\",\"⇅\":\"⇅\",\"↕\":\"↕\",\"⥮\":\"⥮\",\"⊥\":\"⊥\",\"↥\":\"↥\",\"↖\":\"↖\",\"↗\":\"↗\",\"ϒ\":\"ϒ\",\"Υ\":\"Υ\",\"Ů\":\"Ů\",\"𝒰\":\"𝒰\",\"Ũ\":\"Ũ\",\"Ü\":\"Ü\",\"⊫\":\"⊫\",\"⫫\":\"⫫\",\"В\":\"В\",\"⊩\":\"⊩\",\"⫦\":\"⫦\",\"⋁\":\"⋁\",\"‖\":\"‖\",\"∣\":\"∣\",\"|\":\"|\",\"❘\":\"❘\",\"≀\":\"≀\",\" \":\" \",\"𝔙\":\"𝔙\",\"𝕍\":\"𝕍\",\"𝒱\":\"𝒱\",\"⊪\":\"⊪\",\"Ŵ\":\"Ŵ\",\"⋀\":\"⋀\",\"𝔚\":\"𝔚\",\"𝕎\":\"𝕎\",\"𝒲\":\"𝒲\",\"𝔛\":\"𝔛\",\"Ξ\":\"Ξ\",\"𝕏\":\"𝕏\",\"𝒳\":\"𝒳\",\"Я\":\"Я\",\"Ї\":\"Ї\",\"Ю\":\"Ю\",\"Ý\":\"Ý\",\"Ŷ\":\"Ŷ\",\"Ы\":\"Ы\",\"𝔜\":\"𝔜\",\"𝕐\":\"𝕐\",\"𝒴\":\"𝒴\",\"Ÿ\":\"Ÿ\",\"Ж\":\"Ж\",\"Ź\":\"Ź\",\"Ž\":\"Ž\",\"З\":\"З\",\"Ż\":\"Ż\",\"Ζ\":\"Ζ\",\"ℨ\":\"ℨ\",\"ℤ\":\"ℤ\",\"𝒵\":\"𝒵\",\"á\":\"á\",\"ă\":\"ă\",\"∾\":\"∾\",\"∾̳\":\"∾̳\",\"∿\":\"∿\",\"â\":\"â\",\"а\":\"а\",\"æ\":\"æ\",\"𝔞\":\"𝔞\",\"à\":\"à\",\"ℵ\":\"ℵ\",\"α\":\"α\",\"ā\":\"ā\",\"⨿\":\"⨿\",\"∧\":\"∧\",\"⩕\":\"⩕\",\"⩜\":\"⩜\",\"⩘\":\"⩘\",\"⩚\":\"⩚\",\"∠\":\"∠\",\"⦤\":\"⦤\",\"∡\":\"∡\",\"⦨\":\"⦨\",\"⦩\":\"⦩\",\"⦪\":\"⦪\",\"⦫\":\"⦫\",\"⦬\":\"⦬\",\"⦭\":\"⦭\",\"⦮\":\"⦮\",\"⦯\":\"⦯\",\"∟\":\"∟\",\"⊾\":\"⊾\",\"⦝\":\"⦝\",\"∢\":\"∢\",\"⍼\":\"⍼\",\"ą\":\"ą\",\"𝕒\":\"𝕒\",\"⩰\":\"⩰\",\"⩯\":\"⩯\",\"≊\":\"≊\",\"≋\":\"≋\",\"'\":\"'\",\"å\":\"å\",\"𝒶\":\"𝒶\",\"*\":\"*\",\"ã\":\"ã\",\"ä\":\"ä\",\"⨑\":\"⨑\",\"⫭\":\"⫭\",\"≌\":\"≌\",\"϶\":\"϶\",\"‵\":\"‵\",\"∽\":\"∽\",\"⋍\":\"⋍\",\"⊽\":\"⊽\",\"⌅\":\"⌅\",\"⎶\":\"⎶\",\"б\":\"б\",\"„\":\"„\",\"⦰\":\"⦰\",\"β\":\"β\",\"ℶ\":\"ℶ\",\"≬\":\"≬\",\"𝔟\":\"𝔟\",\"◯\":\"◯\",\"⨀\":\"⨀\",\"⨁\":\"⨁\",\"⨂\":\"⨂\",\"⨆\":\"⨆\",\"★\":\"★\",\"▽\":\"▽\",\"△\":\"△\",\"⨄\":\"⨄\",\"⤍\":\"⤍\",\"⧫\":\"⧫\",\"▴\":\"▴\",\"▾\":\"▾\",\"◂\":\"◂\",\"▸\":\"▸\",\"␣\":\"␣\",\"▒\":\"▒\",\"░\":\"░\",\"▓\":\"▓\",\"█\":\"█\",\"=⃥\":\"=⃥\",\"≡⃥\":\"≡⃥\",\"⌐\":\"⌐\",\"𝕓\":\"𝕓\",\"⋈\":\"⋈\",\"╗\":\"╗\",\"╔\":\"╔\",\"╖\":\"╖\",\"╓\":\"╓\",\"═\":\"═\",\"╦\":\"╦\",\"╩\":\"╩\",\"╤\":\"╤\",\"╧\":\"╧\",\"╝\":\"╝\",\"╚\":\"╚\",\"╜\":\"╜\",\"╙\":\"╙\",\"║\":\"║\",\"╬\":\"╬\",\"╣\":\"╣\",\"╠\":\"╠\",\"╫\":\"╫\",\"╢\":\"╢\",\"╟\":\"╟\",\"⧉\":\"⧉\",\"╕\":\"╕\",\"╒\":\"╒\",\"┐\":\"┐\",\"┌\":\"┌\",\"╥\":\"╥\",\"╨\":\"╨\",\"┬\":\"┬\",\"┴\":\"┴\",\"⊟\":\"⊟\",\"⊞\":\"⊞\",\"⊠\":\"⊠\",\"╛\":\"╛\",\"╘\":\"╘\",\"┘\":\"┘\",\"└\":\"└\",\"│\":\"│\",\"╪\":\"╪\",\"╡\":\"╡\",\"╞\":\"╞\",\"┼\":\"┼\",\"┤\":\"┤\",\"├\":\"├\",\"¦\":\"¦\",\"𝒷\":\"𝒷\",\"⁏\":\"⁏\",\"\\\\\":\"\\",\"⧅\":\"⧅\",\"⟈\":\"⟈\",\"•\":\"•\",\"⪮\":\"⪮\",\"ć\":\"ć\",\"∩\":\"∩\",\"⩄\":\"⩄\",\"⩉\":\"⩉\",\"⩋\":\"⩋\",\"⩇\":\"⩇\",\"⩀\":\"⩀\",\"∩︀\":\"∩︀\",\"⁁\":\"⁁\",\"⩍\":\"⩍\",\"č\":\"č\",\"ç\":\"ç\",\"ĉ\":\"ĉ\",\"⩌\":\"⩌\",\"⩐\":\"⩐\",\"ċ\":\"ċ\",\"⦲\":\"⦲\",\"¢\":\"¢\",\"𝔠\":\"𝔠\",\"ч\":\"ч\",\"✓\":\"✓\",\"χ\":\"χ\",\"○\":\"○\",\"⧃\":\"⧃\",\"ˆ\":\"ˆ\",\"≗\":\"≗\",\"↺\":\"↺\",\"↻\":\"↻\",\"Ⓢ\":\"Ⓢ\",\"⊛\":\"⊛\",\"⊚\":\"⊚\",\"⊝\":\"⊝\",\"⨐\":\"⨐\",\"⫯\":\"⫯\",\"⧂\":\"⧂\",\"♣\":\"♣\",\":\":\":\",\",\":\",\",\"@\":\"@\",\"∁\":\"∁\",\"⩭\":\"⩭\",\"𝕔\":\"𝕔\",\"℗\":\"℗\",\"↵\":\"↵\",\"✗\":\"✗\",\"𝒸\":\"𝒸\",\"⫏\":\"⫏\",\"⫑\":\"⫑\",\"⫐\":\"⫐\",\"⫒\":\"⫒\",\"⋯\":\"⋯\",\"⤸\":\"⤸\",\"⤵\":\"⤵\",\"⋞\":\"⋞\",\"⋟\":\"⋟\",\"↶\":\"↶\",\"⤽\":\"⤽\",\"∪\":\"∪\",\"⩈\":\"⩈\",\"⩆\":\"⩆\",\"⩊\":\"⩊\",\"⊍\":\"⊍\",\"⩅\":\"⩅\",\"∪︀\":\"∪︀\",\"↷\":\"↷\",\"⤼\":\"⤼\",\"⋎\":\"⋎\",\"⋏\":\"⋏\",\"¤\":\"¤\",\"∱\":\"∱\",\"⌭\":\"⌭\",\"⥥\":\"⥥\",\"†\":\"†\",\"ℸ\":\"ℸ\",\"‐\":\"‐\",\"⤏\":\"⤏\",\"ď\":\"ď\",\"д\":\"д\",\"⇊\":\"⇊\",\"⩷\":\"⩷\",\"°\":\"°\",\"δ\":\"δ\",\"⦱\":\"⦱\",\"⥿\":\"⥿\",\"𝔡\":\"𝔡\",\"♦\":\"♦\",\"ϝ\":\"ϝ\",\"⋲\":\"⋲\",\"÷\":\"÷\",\"⋇\":\"⋇\",\"ђ\":\"ђ\",\"⌞\":\"⌞\",\"⌍\":\"⌍\",$:\"$\",\"𝕕\":\"𝕕\",\"≑\":\"≑\",\"∸\":\"∸\",\"∔\":\"∔\",\"⊡\":\"⊡\",\"⌟\":\"⌟\",\"⌌\":\"⌌\",\"𝒹\":\"𝒹\",\"ѕ\":\"ѕ\",\"⧶\":\"⧶\",\"đ\":\"đ\",\"⋱\":\"⋱\",\"▿\":\"▿\",\"⦦\":\"⦦\",\"џ\":\"џ\",\"⟿\":\"⟿\",\"é\":\"é\",\"⩮\":\"⩮\",\"ě\":\"ě\",\"≖\":\"≖\",\"ê\":\"ê\",\"≕\":\"≕\",\"э\":\"э\",\"ė\":\"ė\",\"≒\":\"≒\",\"𝔢\":\"𝔢\",\"⪚\":\"⪚\",\"è\":\"è\",\"⪖\":\"⪖\",\"⪘\":\"⪘\",\"⪙\":\"⪙\",\"⏧\":\"⏧\",\"ℓ\":\"ℓ\",\"⪕\":\"⪕\",\"⪗\":\"⪗\",\"ē\":\"ē\",\"∅\":\"∅\",\" \":\" \",\" \":\" \",\" \":\" \",\"ŋ\":\"ŋ\",\" \":\" \",\"ę\":\"ę\",\"𝕖\":\"𝕖\",\"⋕\":\"⋕\",\"⧣\":\"⧣\",\"⩱\":\"⩱\",\"ε\":\"ε\",\"ϵ\":\"ϵ\",\"=\":\"=\",\"≟\":\"≟\",\"⩸\":\"⩸\",\"⧥\":\"⧥\",\"≓\":\"≓\",\"⥱\":\"⥱\",\"ℯ\":\"ℯ\",\"η\":\"η\",\"ð\":\"ð\",\"ë\":\"ë\",\"€\":\"€\",\"!\":\"!\",\"ф\":\"ф\",\"♀\":\"♀\",\"ffi\":\"ffi\",\"ff\":\"ff\",\"ffl\":\"ffl\",\"𝔣\":\"𝔣\",\"fi\":\"fi\",fj:\"fj\",\"♭\":\"♭\",\"fl\":\"fl\",\"▱\":\"▱\",\"ƒ\":\"ƒ\",\"𝕗\":\"𝕗\",\"⋔\":\"⋔\",\"⫙\":\"⫙\",\"⨍\":\"⨍\",\"½\":\"½\",\"⅓\":\"⅓\",\"¼\":\"¼\",\"⅕\":\"⅕\",\"⅙\":\"⅙\",\"⅛\":\"⅛\",\"⅔\":\"⅔\",\"⅖\":\"⅖\",\"¾\":\"¾\",\"⅗\":\"⅗\",\"⅜\":\"⅜\",\"⅘\":\"⅘\",\"⅚\":\"⅚\",\"⅝\":\"⅝\",\"⅞\":\"⅞\",\"⁄\":\"⁄\",\"⌢\":\"⌢\",\"𝒻\":\"𝒻\",\"⪌\":\"⪌\",\"ǵ\":\"ǵ\",\"γ\":\"γ\",\"⪆\":\"⪆\",\"ğ\":\"ğ\",\"ĝ\":\"ĝ\",\"г\":\"г\",\"ġ\":\"ġ\",\"⪩\":\"⪩\",\"⪀\":\"⪀\",\"⪂\":\"⪂\",\"⪄\":\"⪄\",\"⋛︀\":\"⋛︀\",\"⪔\":\"⪔\",\"𝔤\":\"𝔤\",\"ℷ\":\"ℷ\",\"ѓ\":\"ѓ\",\"⪒\":\"⪒\",\"⪥\":\"⪥\",\"⪤\":\"⪤\",\"≩\":\"≩\",\"⪊\":\"⪊\",\"⪈\":\"⪈\",\"⋧\":\"⋧\",\"𝕘\":\"𝕘\",\"ℊ\":\"ℊ\",\"⪎\":\"⪎\",\"⪐\":\"⪐\",\"⪧\":\"⪧\",\"⩺\":\"⩺\",\"⋗\":\"⋗\",\"⦕\":\"⦕\",\"⩼\":\"⩼\",\"⥸\":\"⥸\",\"≩︀\":\"≩︀\",\"ъ\":\"ъ\",\"⥈\":\"⥈\",\"↭\":\"↭\",\"ℏ\":\"ℏ\",\"ĥ\":\"ĥ\",\"♥\":\"♥\",\"…\":\"…\",\"⊹\":\"⊹\",\"𝔥\":\"𝔥\",\"⤥\":\"⤥\",\"⤦\":\"⤦\",\"⇿\":\"⇿\",\"∻\":\"∻\",\"↩\":\"↩\",\"↪\":\"↪\",\"𝕙\":\"𝕙\",\"―\":\"―\",\"𝒽\":\"𝒽\",\"ħ\":\"ħ\",\"⁃\":\"⁃\",\"í\":\"í\",\"î\":\"î\",\"и\":\"и\",\"е\":\"е\",\"¡\":\"¡\",\"𝔦\":\"𝔦\",\"ì\":\"ì\",\"⨌\":\"⨌\",\"∭\":\"∭\",\"⧜\":\"⧜\",\"℩\":\"℩\",\"ij\":\"ij\",\"ī\":\"ī\",\"ı\":\"ı\",\"⊷\":\"⊷\",\"Ƶ\":\"Ƶ\",\"℅\":\"℅\",\"∞\":\"∞\",\"⧝\":\"⧝\",\"⊺\":\"⊺\",\"⨗\":\"⨗\",\"⨼\":\"⨼\",\"ё\":\"ё\",\"į\":\"į\",\"𝕚\":\"𝕚\",\"ι\":\"ι\",\"¿\":\"¿\",\"𝒾\":\"𝒾\",\"⋹\":\"⋹\",\"⋵\":\"⋵\",\"⋴\":\"⋴\",\"⋳\":\"⋳\",\"ĩ\":\"ĩ\",\"і\":\"і\",\"ï\":\"ï\",\"ĵ\":\"ĵ\",\"й\":\"й\",\"𝔧\":\"𝔧\",\"ȷ\":\"ȷ\",\"𝕛\":\"𝕛\",\"𝒿\":\"𝒿\",\"ј\":\"ј\",\"є\":\"є\",\"κ\":\"κ\",\"ϰ\":\"ϰ\",\"ķ\":\"ķ\",\"к\":\"к\",\"𝔨\":\"𝔨\",\"ĸ\":\"ĸ\",\"х\":\"х\",\"ќ\":\"ќ\",\"𝕜\":\"𝕜\",\"𝓀\":\"𝓀\",\"⤛\":\"⤛\",\"⤎\":\"⤎\",\"⪋\":\"⪋\",\"⥢\":\"⥢\",\"ĺ\":\"ĺ\",\"⦴\":\"⦴\",\"λ\":\"λ\",\"⦑\":\"⦑\",\"⪅\":\"⪅\",\"«\":\"«\",\"⤟\":\"⤟\",\"⤝\":\"⤝\",\"↫\":\"↫\",\"⤹\":\"⤹\",\"⥳\":\"⥳\",\"↢\":\"↢\",\"⪫\":\"⪫\",\"⤙\":\"⤙\",\"⪭\":\"⪭\",\"⪭︀\":\"⪭︀\",\"⤌\":\"⤌\",\"❲\":\"❲\",\"{\":\"{\",\"[\":\"[\",\"⦋\":\"⦋\",\"⦏\":\"⦏\",\"⦍\":\"⦍\",\"ľ\":\"ľ\",\"ļ\":\"ļ\",\"л\":\"л\",\"⤶\":\"⤶\",\"⥧\":\"⥧\",\"⥋\":\"⥋\",\"↲\":\"↲\",\"≤\":\"≤\",\"⇇\":\"⇇\",\"⋋\":\"⋋\",\"⪨\":\"⪨\",\"⩿\":\"⩿\",\"⪁\":\"⪁\",\"⪃\":\"⪃\",\"⋚︀\":\"⋚︀\",\"⪓\":\"⪓\",\"⋖\":\"⋖\",\"⥼\":\"⥼\",\"𝔩\":\"𝔩\",\"⪑\":\"⪑\",\"⥪\":\"⥪\",\"▄\":\"▄\",\"љ\":\"љ\",\"⥫\":\"⥫\",\"◺\":\"◺\",\"ŀ\":\"ŀ\",\"⎰\":\"⎰\",\"≨\":\"≨\",\"⪉\":\"⪉\",\"⪇\":\"⪇\",\"⋦\":\"⋦\",\"⟬\":\"⟬\",\"⇽\":\"⇽\",\"⟼\":\"⟼\",\"↬\":\"↬\",\"⦅\":\"⦅\",\"𝕝\":\"𝕝\",\"⨭\":\"⨭\",\"⨴\":\"⨴\",\"∗\":\"∗\",\"◊\":\"◊\",\"(\":\"(\",\"⦓\":\"⦓\",\"⥭\":\"⥭\",\"‎\":\"‎\",\"⊿\":\"⊿\",\"‹\":\"‹\",\"𝓁\":\"𝓁\",\"⪍\":\"⪍\",\"⪏\":\"⪏\",\"‚\":\"‚\",\"ł\":\"ł\",\"⪦\":\"⪦\",\"⩹\":\"⩹\",\"⋉\":\"⋉\",\"⥶\":\"⥶\",\"⩻\":\"⩻\",\"⦖\":\"⦖\",\"◃\":\"◃\",\"⥊\":\"⥊\",\"⥦\":\"⥦\",\"≨︀\":\"≨︀\",\"∺\":\"∺\",\"¯\":\"¯\",\"♂\":\"♂\",\"✠\":\"✠\",\"▮\":\"▮\",\"⨩\":\"⨩\",\"м\":\"м\",\"—\":\"—\",\"𝔪\":\"𝔪\",\"℧\":\"℧\",\"µ\":\"µ\",\"⫰\":\"⫰\",\"−\":\"−\",\"⨪\":\"⨪\",\"⫛\":\"⫛\",\"⊧\":\"⊧\",\"𝕞\":\"𝕞\",\"𝓂\":\"𝓂\",\"μ\":\"μ\",\"⊸\":\"⊸\",\"⋙̸\":\"⋙̸\",\"≫⃒\":\"≫⃒\",\"⇍\":\"⇍\",\"⇎\":\"⇎\",\"⋘̸\":\"⋘̸\",\"≪⃒\":\"≪⃒\",\"⇏\":\"⇏\",\"⊯\":\"⊯\",\"⊮\":\"⊮\",\"ń\":\"ń\",\"∠⃒\":\"∠⃒\",\"⩰̸\":\"⩰̸\",\"≋̸\":\"≋̸\",\"ʼn\":\"ʼn\",\"♮\":\"♮\",\"⩃\":\"⩃\",\"ň\":\"ň\",\"ņ\":\"ņ\",\"⩭̸\":\"⩭̸\",\"⩂\":\"⩂\",\"н\":\"н\",\"–\":\"–\",\"⇗\":\"⇗\",\"⤤\":\"⤤\",\"≐̸\":\"≐̸\",\"⤨\":\"⤨\",\"𝔫\":\"𝔫\",\"↮\":\"↮\",\"⫲\":\"⫲\",\"⋼\":\"⋼\",\"⋺\":\"⋺\",\"њ\":\"њ\",\"≦̸\":\"≦̸\",\"↚\":\"↚\",\"‥\":\"‥\",\"𝕟\":\"𝕟\",\"¬\":\"¬\",\"⋹̸\":\"⋹̸\",\"⋵̸\":\"⋵̸\",\"⋷\":\"⋷\",\"⋶\":\"⋶\",\"⋾\":\"⋾\",\"⋽\":\"⋽\",\"⫽⃥\":\"⫽⃥\",\"∂̸\":\"∂̸\",\"⨔\":\"⨔\",\"↛\":\"↛\",\"⤳̸\":\"⤳̸\",\"↝̸\":\"↝̸\",\"𝓃\":\"𝓃\",\"⊄\":\"⊄\",\"⫅̸\":\"⫅̸\",\"⊅\":\"⊅\",\"⫆̸\":\"⫆̸\",\"ñ\":\"ñ\",\"ν\":\"ν\",\"#\":\"#\",\"№\":\"№\",\" \":\" \",\"⊭\":\"⊭\",\"⤄\":\"⤄\",\"≍⃒\":\"≍⃒\",\"⊬\":\"⊬\",\"≥⃒\":\"≥⃒\",\">⃒\":\">⃒\",\"⧞\":\"⧞\",\"⤂\":\"⤂\",\"≤⃒\":\"≤⃒\",\"<⃒\":\"<⃒\",\"⊴⃒\":\"⊴⃒\",\"⤃\":\"⤃\",\"⊵⃒\":\"⊵⃒\",\"∼⃒\":\"∼⃒\",\"⇖\":\"⇖\",\"⤣\":\"⤣\",\"⤧\":\"⤧\",\"ó\":\"ó\",\"ô\":\"ô\",\"о\":\"о\",\"ő\":\"ő\",\"⨸\":\"⨸\",\"⦼\":\"⦼\",\"œ\":\"œ\",\"⦿\":\"⦿\",\"𝔬\":\"𝔬\",\"˛\":\"˛\",\"ò\":\"ò\",\"⧁\":\"⧁\",\"⦵\":\"⦵\",\"⦾\":\"⦾\",\"⦻\":\"⦻\",\"⧀\":\"⧀\",\"ō\":\"ō\",\"ω\":\"ω\",\"ο\":\"ο\",\"⦶\":\"⦶\",\"𝕠\":\"𝕠\",\"⦷\":\"⦷\",\"⦹\":\"⦹\",\"∨\":\"∨\",\"⩝\":\"⩝\",\"ℴ\":\"ℴ\",\"ª\":\"ª\",\"º\":\"º\",\"⊶\":\"⊶\",\"⩖\":\"⩖\",\"⩗\":\"⩗\",\"⩛\":\"⩛\",\"ø\":\"ø\",\"⊘\":\"⊘\",\"õ\":\"õ\",\"⨶\":\"⨶\",\"ö\":\"ö\",\"⌽\":\"⌽\",\"¶\":\"¶\",\"⫳\":\"⫳\",\"⫽\":\"⫽\",\"п\":\"п\",\"%\":\"%\",\".\":\".\",\"‰\":\"‰\",\"‱\":\"‱\",\"𝔭\":\"𝔭\",\"φ\":\"φ\",\"ϕ\":\"ϕ\",\"☎\":\"☎\",\"π\":\"π\",\"ϖ\":\"ϖ\",\"ℎ\":\"ℎ\",\"+\":\"+\",\"⨣\":\"⨣\",\"⨢\":\"⨢\",\"⨥\":\"⨥\",\"⩲\":\"⩲\",\"⨦\":\"⨦\",\"⨧\":\"⨧\",\"⨕\":\"⨕\",\"𝕡\":\"𝕡\",\"£\":\"£\",\"⪳\":\"⪳\",\"⪷\":\"⪷\",\"⪹\":\"⪹\",\"⪵\":\"⪵\",\"⋨\":\"⋨\",\"′\":\"′\",\"⌮\":\"⌮\",\"⌒\":\"⌒\",\"⌓\":\"⌓\",\"⊰\":\"⊰\",\"𝓅\":\"𝓅\",\"ψ\":\"ψ\",\" \":\" \",\"𝔮\":\"𝔮\",\"𝕢\":\"𝕢\",\"⁗\":\"⁗\",\"𝓆\":\"𝓆\",\"⨖\":\"⨖\",\"?\":\"?\",\"⤜\":\"⤜\",\"⥤\":\"⥤\",\"∽̱\":\"∽̱\",\"ŕ\":\"ŕ\",\"⦳\":\"⦳\",\"⦒\":\"⦒\",\"⦥\":\"⦥\",\"»\":\"»\",\"⥵\":\"⥵\",\"⤠\":\"⤠\",\"⤳\":\"⤳\",\"⤞\":\"⤞\",\"⥅\":\"⥅\",\"⥴\":\"⥴\",\"↣\":\"↣\",\"↝\":\"↝\",\"⤚\":\"⤚\",\"∶\":\"∶\",\"❳\":\"❳\",\"}\":\"}\",\"]\":\"]\",\"⦌\":\"⦌\",\"⦎\":\"⦎\",\"⦐\":\"⦐\",\"ř\":\"ř\",\"ŗ\":\"ŗ\",\"р\":\"р\",\"⤷\":\"⤷\",\"⥩\":\"⥩\",\"↳\":\"↳\",\"▭\":\"▭\",\"⥽\":\"⥽\",\"𝔯\":\"𝔯\",\"⥬\":\"⥬\",\"ρ\":\"ρ\",\"ϱ\":\"ϱ\",\"⇉\":\"⇉\",\"⋌\":\"⋌\",\"˚\":\"˚\",\"‏\":\"‏\",\"⎱\":\"⎱\",\"⫮\":\"⫮\",\"⟭\":\"⟭\",\"⇾\":\"⇾\",\"⦆\":\"⦆\",\"𝕣\":\"𝕣\",\"⨮\":\"⨮\",\"⨵\":\"⨵\",\")\":\")\",\"⦔\":\"⦔\",\"⨒\":\"⨒\",\"›\":\"›\",\"𝓇\":\"𝓇\",\"⋊\":\"⋊\",\"▹\":\"▹\",\"⧎\":\"⧎\",\"⥨\":\"⥨\",\"℞\":\"℞\",\"ś\":\"ś\",\"⪴\":\"⪴\",\"⪸\":\"⪸\",\"š\":\"š\",\"ş\":\"ş\",\"ŝ\":\"ŝ\",\"⪶\":\"⪶\",\"⪺\":\"⪺\",\"⋩\":\"⋩\",\"⨓\":\"⨓\",\"с\":\"с\",\"⋅\":\"⋅\",\"⩦\":\"⩦\",\"⇘\":\"⇘\",\"§\":\"§\",\";\":\";\",\"⤩\":\"⤩\",\"✶\":\"✶\",\"𝔰\":\"𝔰\",\"♯\":\"♯\",\"щ\":\"щ\",\"ш\":\"ш\",\"­\":\"­\",\"σ\":\"σ\",\"ς\":\"ς\",\"⩪\":\"⩪\",\"⪞\":\"⪞\",\"⪠\":\"⪠\",\"⪝\":\"⪝\",\"⪟\":\"⪟\",\"≆\":\"≆\",\"⨤\":\"⨤\",\"⥲\":\"⥲\",\"⨳\":\"⨳\",\"⧤\":\"⧤\",\"⌣\":\"⌣\",\"⪪\":\"⪪\",\"⪬\":\"⪬\",\"⪬︀\":\"⪬︀\",\"ь\":\"ь\",\"/\":\"/\",\"⧄\":\"⧄\",\"⌿\":\"⌿\",\"𝕤\":\"𝕤\",\"♠\":\"♠\",\"⊓︀\":\"⊓︀\",\"⊔︀\":\"⊔︀\",\"𝓈\":\"𝓈\",\"☆\":\"☆\",\"⊂\":\"⊂\",\"⫅\":\"⫅\",\"⪽\":\"⪽\",\"⫃\":\"⫃\",\"⫁\":\"⫁\",\"⫋\":\"⫋\",\"⊊\":\"⊊\",\"⪿\":\"⪿\",\"⥹\":\"⥹\",\"⫇\":\"⫇\",\"⫕\":\"⫕\",\"⫓\":\"⫓\",\"♪\":\"♪\",\"¹\":\"¹\",\"²\":\"²\",\"³\":\"³\",\"⫆\":\"⫆\",\"⪾\":\"⪾\",\"⫘\":\"⫘\",\"⫄\":\"⫄\",\"⟉\":\"⟉\",\"⫗\":\"⫗\",\"⥻\":\"⥻\",\"⫂\":\"⫂\",\"⫌\":\"⫌\",\"⊋\":\"⊋\",\"⫀\":\"⫀\",\"⫈\":\"⫈\",\"⫔\":\"⫔\",\"⫖\":\"⫖\",\"⇙\":\"⇙\",\"⤪\":\"⤪\",\"ß\":\"ß\",\"⌖\":\"⌖\",\"τ\":\"τ\",\"ť\":\"ť\",\"ţ\":\"ţ\",\"т\":\"т\",\"⌕\":\"⌕\",\"𝔱\":\"𝔱\",\"θ\":\"θ\",\"ϑ\":\"ϑ\",\"þ\":\"þ\",\"×\":\"×\",\"⨱\":\"⨱\",\"⨰\":\"⨰\",\"⌶\":\"⌶\",\"⫱\":\"⫱\",\"𝕥\":\"𝕥\",\"⫚\":\"⫚\",\"‴\":\"‴\",\"▵\":\"▵\",\"≜\":\"≜\",\"◬\":\"◬\",\"⨺\":\"⨺\",\"⨹\":\"⨹\",\"⧍\":\"⧍\",\"⨻\":\"⨻\",\"⏢\":\"⏢\",\"𝓉\":\"𝓉\",\"ц\":\"ц\",\"ћ\":\"ћ\",\"ŧ\":\"ŧ\",\"⥣\":\"⥣\",\"ú\":\"ú\",\"ў\":\"ў\",\"ŭ\":\"ŭ\",\"û\":\"û\",\"у\":\"у\",\"ű\":\"ű\",\"⥾\":\"⥾\",\"𝔲\":\"𝔲\",\"ù\":\"ù\",\"▀\":\"▀\",\"⌜\":\"⌜\",\"⌏\":\"⌏\",\"◸\":\"◸\",\"ū\":\"ū\",\"ų\":\"ų\",\"𝕦\":\"𝕦\",\"υ\":\"υ\",\"⇈\":\"⇈\",\"⌝\":\"⌝\",\"⌎\":\"⌎\",\"ů\":\"ů\",\"◹\":\"◹\",\"𝓊\":\"𝓊\",\"⋰\":\"⋰\",\"ũ\":\"ũ\",\"ü\":\"ü\",\"⦧\":\"⦧\",\"⫨\":\"⫨\",\"⫩\":\"⫩\",\"⦜\":\"⦜\",\"⊊︀\":\"⊊︀\",\"⫋︀\":\"⫋︀\",\"⊋︀\":\"⊋︀\",\"⫌︀\":\"⫌︀\",\"в\":\"в\",\"⊻\":\"⊻\",\"≚\":\"≚\",\"⋮\":\"⋮\",\"𝔳\":\"𝔳\",\"𝕧\":\"𝕧\",\"𝓋\":\"𝓋\",\"⦚\":\"⦚\",\"ŵ\":\"ŵ\",\"⩟\":\"⩟\",\"≙\":\"≙\",\"℘\":\"℘\",\"𝔴\":\"𝔴\",\"𝕨\":\"𝕨\",\"𝓌\":\"𝓌\",\"𝔵\":\"𝔵\",\"ξ\":\"ξ\",\"⋻\":\"⋻\",\"𝕩\":\"𝕩\",\"𝓍\":\"𝓍\",\"ý\":\"ý\",\"я\":\"я\",\"ŷ\":\"ŷ\",\"ы\":\"ы\",\"¥\":\"¥\",\"𝔶\":\"𝔶\",\"ї\":\"ї\",\"𝕪\":\"𝕪\",\"𝓎\":\"𝓎\",\"ю\":\"ю\",\"ÿ\":\"ÿ\",\"ź\":\"ź\",\"ž\":\"ž\",\"з\":\"з\",\"ż\":\"ż\",\"ζ\":\"ζ\",\"𝔷\":\"𝔷\",\"ж\":\"ж\",\"⇝\":\"⇝\",\"𝕫\":\"𝕫\",\"𝓏\":\"𝓏\",\"‍\":\"‍\",\"‌\":\"‌\"}}};\n//# sourceMappingURL=./named-references.js.map","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports.numericUnicodeMap={0:65533,128:8364,130:8218,131:402,132:8222,133:8230,134:8224,135:8225,136:710,137:8240,138:352,139:8249,140:338,142:381,145:8216,146:8217,147:8220,148:8221,149:8226,150:8211,151:8212,152:732,153:8482,154:353,155:8250,156:339,158:382,159:376};\n//# sourceMappingURL=./numeric-unicode-map.js.map","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports.fromCodePoint=String.fromCodePoint||function(astralCodePoint){return String.fromCharCode(Math.floor((astralCodePoint-65536)/1024)+55296,(astralCodePoint-65536)%1024+56320)};exports.getCodePoint=String.prototype.codePointAt?function(input,position){return input.codePointAt(position)}:function(input,position){return(input.charCodeAt(position)-55296)*1024+input.charCodeAt(position+1)-56320+65536};exports.highSurrogateFrom=55296;exports.highSurrogateTo=56319;\n//# sourceMappingURL=./surrogate-pairs.js.map","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nfunction _defaults(obj, defaults) { var keys = Object.getOwnPropertyNames(defaults); for (var i = 0; i < keys.length; i++) { var key = keys[i]; var value = Object.getOwnPropertyDescriptor(defaults, key); if (value && value.configurable && obj[key] === undefined) { Object.defineProperty(obj, key, value); } } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); }\n\nimport * as utils from './utils.js';\nimport baseLogger from './logger.js';\nimport EventEmitter from './EventEmitter.js';\n\nfunction remove(arr, what) {\n var found = arr.indexOf(what);\n\n while (found !== -1) {\n arr.splice(found, 1);\n found = arr.indexOf(what);\n }\n}\n\nvar Connector = function (_EventEmitter) {\n _inherits(Connector, _EventEmitter);\n\n function Connector(backend, store, services) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n _classCallCheck(this, Connector);\n\n var _this = _possibleConstructorReturn(this, _EventEmitter.call(this));\n\n _this.backend = backend;\n _this.store = store;\n _this.languageUtils = services.languageUtils;\n _this.options = options;\n _this.logger = baseLogger.create('backendConnector');\n\n _this.state = {};\n _this.queue = [];\n\n if (_this.backend && _this.backend.init) {\n _this.backend.init(services, options.backend, options);\n }\n return _this;\n }\n\n Connector.prototype.queueLoad = function queueLoad(languages, namespaces, options, callback) {\n var _this2 = this;\n\n // find what needs to be loaded\n var toLoad = [];\n var pending = [];\n var toLoadLanguages = [];\n var toLoadNamespaces = [];\n\n languages.forEach(function (lng) {\n var hasAllNamespaces = true;\n\n namespaces.forEach(function (ns) {\n var name = lng + '|' + ns;\n\n if (!options.reload && _this2.store.hasResourceBundle(lng, ns)) {\n _this2.state[name] = 2; // loaded\n } else if (_this2.state[name] < 0) {\n // nothing to do for err\n } else if (_this2.state[name] === 1) {\n if (pending.indexOf(name) < 0) pending.push(name);\n } else {\n _this2.state[name] = 1; // pending\n\n hasAllNamespaces = false;\n\n if (pending.indexOf(name) < 0) pending.push(name);\n if (toLoad.indexOf(name) < 0) toLoad.push(name);\n if (toLoadNamespaces.indexOf(ns) < 0) toLoadNamespaces.push(ns);\n }\n });\n\n if (!hasAllNamespaces) toLoadLanguages.push(lng);\n });\n\n if (toLoad.length || pending.length) {\n this.queue.push({\n pending: pending,\n loaded: {},\n errors: [],\n callback: callback\n });\n }\n\n return {\n toLoad: toLoad,\n pending: pending,\n toLoadLanguages: toLoadLanguages,\n toLoadNamespaces: toLoadNamespaces\n };\n };\n\n Connector.prototype.loaded = function loaded(name, err, data) {\n var _name$split = name.split('|'),\n _name$split2 = _slicedToArray(_name$split, 2),\n lng = _name$split2[0],\n ns = _name$split2[1];\n\n if (err) this.emit('failedLoading', lng, ns, err);\n\n if (data) {\n this.store.addResourceBundle(lng, ns, data);\n }\n\n // set loaded\n this.state[name] = err ? -1 : 2;\n\n // consolidated loading done in this run - only emit once for a loaded namespace\n var loaded = {};\n\n // callback if ready\n this.queue.forEach(function (q) {\n utils.pushPath(q.loaded, [lng], ns);\n remove(q.pending, name);\n\n if (err) q.errors.push(err);\n\n if (q.pending.length === 0 && !q.done) {\n // only do once per loaded -> this.emit('loaded', q.loaded);\n Object.keys(q.loaded).forEach(function (l) {\n if (!loaded[l]) loaded[l] = [];\n if (q.loaded[l].length) {\n q.loaded[l].forEach(function (ns) {\n if (loaded[l].indexOf(ns) < 0) loaded[l].push(ns);\n });\n }\n });\n\n /* eslint no-param-reassign: 0 */\n q.done = true;\n if (q.errors.length) {\n q.callback(q.errors);\n } else {\n q.callback();\n }\n }\n });\n\n // emit consolidated loaded event\n this.emit('loaded', loaded);\n\n // remove done load requests\n this.queue = this.queue.filter(function (q) {\n return !q.done;\n });\n };\n\n Connector.prototype.read = function read(lng, ns, fcName) {\n var tried = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n\n var _this3 = this;\n\n var wait = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 250;\n var callback = arguments[5];\n\n if (!lng.length) return callback(null, {}); // noting to load\n\n return this.backend[fcName](lng, ns, function (err, data) {\n if (err && data /* = retryFlag */ && tried < 5) {\n setTimeout(function () {\n _this3.read.call(_this3, lng, ns, fcName, tried + 1, wait * 2, callback);\n }, wait);\n return;\n }\n callback(err, data);\n });\n };\n\n /* eslint consistent-return: 0 */\n\n\n Connector.prototype.prepareLoading = function prepareLoading(languages, namespaces) {\n var _this4 = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var callback = arguments[3];\n\n if (!this.backend) {\n this.logger.warn('No backend was added via i18next.use. Will not load resources.');\n return callback && callback();\n }\n\n if (typeof languages === 'string') languages = this.languageUtils.toResolveHierarchy(languages);\n if (typeof namespaces === 'string') namespaces = [namespaces];\n\n var toLoad = this.queueLoad(languages, namespaces, options, callback);\n if (!toLoad.toLoad.length) {\n if (!toLoad.pending.length) callback(); // nothing to load and no pendings...callback now\n return null; // pendings will trigger callback\n }\n\n toLoad.toLoad.forEach(function (name) {\n _this4.loadOne(name);\n });\n };\n\n Connector.prototype.load = function load(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {}, callback);\n };\n\n Connector.prototype.reload = function reload(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, { reload: true }, callback);\n };\n\n Connector.prototype.loadOne = function loadOne(name) {\n var _this5 = this;\n\n var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n var _name$split3 = name.split('|'),\n _name$split4 = _slicedToArray(_name$split3, 2),\n lng = _name$split4[0],\n ns = _name$split4[1];\n\n this.read(lng, ns, 'read', null, null, function (err, data) {\n if (err) _this5.logger.warn(prefix + 'loading namespace ' + ns + ' for language ' + lng + ' failed', err);\n if (!err && data) _this5.logger.log(prefix + 'loaded namespace ' + ns + ' for language ' + lng, data);\n\n _this5.loaded(name, err, data);\n });\n };\n\n Connector.prototype.saveMissing = function saveMissing(languages, namespace, key, fallbackValue, isUpdate) {\n var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n\n if (this.backend && this.backend.create) {\n this.backend.create(languages, namespace, key, fallbackValue, null /* unused callback */, _extends({}, options, { isUpdate: isUpdate }));\n }\n\n // write to store to avoid resending\n if (!languages || !languages[0]) return;\n this.store.addResource(languages[0], namespace, key, fallbackValue);\n };\n\n return Connector;\n}(EventEmitter);\n\nexport default Connector;","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar EventEmitter = function () {\n function EventEmitter() {\n _classCallCheck(this, EventEmitter);\n\n this.observers = {};\n }\n\n EventEmitter.prototype.on = function on(events, listener) {\n var _this = this;\n\n events.split(' ').forEach(function (event) {\n _this.observers[event] = _this.observers[event] || [];\n _this.observers[event].push(listener);\n });\n return this;\n };\n\n EventEmitter.prototype.off = function off(event, listener) {\n var _this2 = this;\n\n if (!this.observers[event]) {\n return;\n }\n\n this.observers[event].forEach(function () {\n if (!listener) {\n delete _this2.observers[event];\n } else {\n var index = _this2.observers[event].indexOf(listener);\n if (index > -1) {\n _this2.observers[event].splice(index, 1);\n }\n }\n });\n };\n\n EventEmitter.prototype.emit = function emit(event) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n if (this.observers[event]) {\n var cloned = [].concat(this.observers[event]);\n cloned.forEach(function (observer) {\n observer.apply(undefined, args);\n });\n }\n\n if (this.observers['*']) {\n var _cloned = [].concat(this.observers['*']);\n _cloned.forEach(function (observer) {\n observer.apply(observer, [event].concat(args));\n });\n }\n };\n\n return EventEmitter;\n}();\n\nexport default EventEmitter;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nimport * as utils from './utils.js';\nimport baseLogger from './logger.js';\n\nvar Interpolator = function () {\n function Interpolator() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, Interpolator);\n\n this.logger = baseLogger.create('interpolator');\n\n this.init(options, true);\n }\n\n /* eslint no-param-reassign: 0 */\n\n\n Interpolator.prototype.init = function init() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var reset = arguments[1];\n\n if (reset) {\n this.options = options;\n this.format = options.interpolation && options.interpolation.format || function (value) {\n return value;\n };\n }\n if (!options.interpolation) options.interpolation = { escapeValue: true };\n\n var iOpts = options.interpolation;\n\n this.escape = iOpts.escape !== undefined ? iOpts.escape : utils.escape;\n this.escapeValue = iOpts.escapeValue !== undefined ? iOpts.escapeValue : true;\n this.useRawValueToEscape = iOpts.useRawValueToEscape !== undefined ? iOpts.useRawValueToEscape : false;\n\n this.prefix = iOpts.prefix ? utils.regexEscape(iOpts.prefix) : iOpts.prefixEscaped || '{{';\n this.suffix = iOpts.suffix ? utils.regexEscape(iOpts.suffix) : iOpts.suffixEscaped || '}}';\n\n this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n\n this.unescapePrefix = iOpts.unescapeSuffix ? '' : iOpts.unescapePrefix || '-';\n this.unescapeSuffix = this.unescapePrefix ? '' : iOpts.unescapeSuffix || '';\n\n this.nestingPrefix = iOpts.nestingPrefix ? utils.regexEscape(iOpts.nestingPrefix) : iOpts.nestingPrefixEscaped || utils.regexEscape('$t(');\n this.nestingSuffix = iOpts.nestingSuffix ? utils.regexEscape(iOpts.nestingSuffix) : iOpts.nestingSuffixEscaped || utils.regexEscape(')');\n\n this.maxReplaces = iOpts.maxReplaces ? iOpts.maxReplaces : 1000;\n\n // the regexp\n this.resetRegExp();\n };\n\n Interpolator.prototype.reset = function reset() {\n if (this.options) this.init(this.options);\n };\n\n Interpolator.prototype.resetRegExp = function resetRegExp() {\n // the regexp\n var regexpStr = this.prefix + '(.+?)' + this.suffix;\n this.regexp = new RegExp(regexpStr, 'g');\n\n var regexpUnescapeStr = '' + this.prefix + this.unescapePrefix + '(.+?)' + this.unescapeSuffix + this.suffix;\n this.regexpUnescape = new RegExp(regexpUnescapeStr, 'g');\n\n var nestingRegexpStr = this.nestingPrefix + '(.+?)' + this.nestingSuffix;\n this.nestingRegexp = new RegExp(nestingRegexpStr, 'g');\n };\n\n Interpolator.prototype.interpolate = function interpolate(str, data, lng, options) {\n var _this = this;\n\n var match = void 0;\n var value = void 0;\n var replaces = void 0;\n\n function regexSafe(val) {\n return val.replace(/\\$/g, '$$$$');\n }\n\n var handleFormat = function handleFormat(key) {\n if (key.indexOf(_this.formatSeparator) < 0) return utils.getPath(data, key);\n\n var p = key.split(_this.formatSeparator);\n var k = p.shift().trim();\n var f = p.join(_this.formatSeparator).trim();\n\n return _this.format(utils.getPath(data, k), f, lng);\n };\n\n this.resetRegExp();\n\n var missingInterpolationHandler = options && options.missingInterpolationHandler || this.options.missingInterpolationHandler;\n\n replaces = 0;\n // unescape if has unescapePrefix/Suffix\n /* eslint no-cond-assign: 0 */\n while (match = this.regexpUnescape.exec(str)) {\n value = handleFormat(match[1].trim());\n str = str.replace(match[0], value);\n this.regexpUnescape.lastIndex = 0;\n replaces++;\n if (replaces >= this.maxReplaces) {\n break;\n }\n }\n\n replaces = 0;\n // regular escape on demand\n while (match = this.regexp.exec(str)) {\n value = handleFormat(match[1].trim());\n if (value === undefined) {\n if (typeof missingInterpolationHandler === 'function') {\n var temp = missingInterpolationHandler(str, match);\n value = typeof temp === 'string' ? temp : '';\n } else {\n this.logger.warn('missed to pass in variable ' + match[1] + ' for interpolating ' + str);\n value = '';\n }\n } else if (typeof value !== 'string' && !this.useRawValueToEscape) {\n value = utils.makeString(value);\n }\n value = this.escapeValue ? regexSafe(this.escape(value)) : regexSafe(value);\n str = str.replace(match[0], value);\n this.regexp.lastIndex = 0;\n replaces++;\n if (replaces >= this.maxReplaces) {\n break;\n }\n }\n return str;\n };\n\n Interpolator.prototype.nest = function nest(str, fc) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n var match = void 0;\n var value = void 0;\n\n var clonedOptions = _extends({}, options);\n clonedOptions.applyPostProcessor = false; // avoid post processing on nested lookup\n\n // if value is something like \"myKey\": \"lorem $(anotherKey, { \"count\": {{aValueInOptions}} })\"\n function handleHasOptions(key, inheritedOptions) {\n if (key.indexOf(',') < 0) return key;\n\n var p = key.split(',');\n key = p.shift();\n var optionsString = p.join(',');\n optionsString = this.interpolate(optionsString, clonedOptions);\n optionsString = optionsString.replace(/'/g, '\"');\n\n try {\n clonedOptions = JSON.parse(optionsString);\n\n if (inheritedOptions) clonedOptions = _extends({}, inheritedOptions, clonedOptions);\n } catch (e) {\n this.logger.error('failed parsing options string in nesting for key ' + key, e);\n }\n\n return key;\n }\n\n // regular escape on demand\n while (match = this.nestingRegexp.exec(str)) {\n value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);\n\n // is only the nesting key (key1 = '$(key2)') return the value without stringify\n if (value && match[0] === str && typeof value !== 'string') return value;\n\n // no string to include or empty\n if (typeof value !== 'string') value = utils.makeString(value);\n if (!value) {\n this.logger.warn('missed to resolve ' + match[1] + ' for nesting ' + str);\n value = '';\n }\n // Nested keys should not be escaped by default #854\n // value = this.escapeValue ? regexSafe(utils.escape(value)) : regexSafe(value);\n str = str.replace(match[0], value);\n this.regexp.lastIndex = 0;\n }\n return str;\n };\n\n return Interpolator;\n}();\n\nexport default Interpolator;","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nimport baseLogger from './logger.js';\n\nfunction capitalize(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nvar LanguageUtil = function () {\n function LanguageUtil(options) {\n _classCallCheck(this, LanguageUtil);\n\n this.options = options;\n\n this.whitelist = this.options.whitelist || false;\n this.logger = baseLogger.create('languageUtils');\n }\n\n LanguageUtil.prototype.getScriptPartFromCode = function getScriptPartFromCode(code) {\n if (!code || code.indexOf('-') < 0) return null;\n\n var p = code.split('-');\n if (p.length === 2) return null;\n p.pop();\n return this.formatLanguageCode(p.join('-'));\n };\n\n LanguageUtil.prototype.getLanguagePartFromCode = function getLanguagePartFromCode(code) {\n if (!code || code.indexOf('-') < 0) return code;\n\n var p = code.split('-');\n return this.formatLanguageCode(p[0]);\n };\n\n LanguageUtil.prototype.formatLanguageCode = function formatLanguageCode(code) {\n // http://www.iana.org/assignments/language-tags/language-tags.xhtml\n if (typeof code === 'string' && code.indexOf('-') > -1) {\n var specialCases = ['hans', 'hant', 'latn', 'cyrl', 'cans', 'mong', 'arab'];\n var p = code.split('-');\n\n if (this.options.lowerCaseLng) {\n p = p.map(function (part) {\n return part.toLowerCase();\n });\n } else if (p.length === 2) {\n p[0] = p[0].toLowerCase();\n p[1] = p[1].toUpperCase();\n\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n } else if (p.length === 3) {\n p[0] = p[0].toLowerCase();\n\n // if lenght 2 guess it's a country\n if (p[1].length === 2) p[1] = p[1].toUpperCase();\n if (p[0] !== 'sgn' && p[2].length === 2) p[2] = p[2].toUpperCase();\n\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n if (specialCases.indexOf(p[2].toLowerCase()) > -1) p[2] = capitalize(p[2].toLowerCase());\n }\n\n return p.join('-');\n }\n\n return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;\n };\n\n LanguageUtil.prototype.isWhitelisted = function isWhitelisted(code) {\n if (this.options.load === 'languageOnly' || this.options.nonExplicitWhitelist) {\n code = this.getLanguagePartFromCode(code);\n }\n return !this.whitelist || !this.whitelist.length || this.whitelist.indexOf(code) > -1;\n };\n\n LanguageUtil.prototype.getFallbackCodes = function getFallbackCodes(fallbacks, code) {\n if (!fallbacks) return [];\n if (typeof fallbacks === 'string') fallbacks = [fallbacks];\n if (Object.prototype.toString.apply(fallbacks) === '[object Array]') return fallbacks;\n\n if (!code) return fallbacks.default || [];\n\n // asume we have an object defining fallbacks\n var found = fallbacks[code];\n if (!found) found = fallbacks[this.getScriptPartFromCode(code)];\n if (!found) found = fallbacks[this.formatLanguageCode(code)];\n if (!found) found = fallbacks.default;\n\n return found || [];\n };\n\n LanguageUtil.prototype.toResolveHierarchy = function toResolveHierarchy(code, fallbackCode) {\n var _this = this;\n\n var fallbackCodes = this.getFallbackCodes(fallbackCode || this.options.fallbackLng || [], code);\n\n var codes = [];\n var addCode = function addCode(c) {\n if (!c) return;\n if (_this.isWhitelisted(c)) {\n codes.push(c);\n } else {\n _this.logger.warn('rejecting non-whitelisted language code: ' + c);\n }\n };\n\n if (typeof code === 'string' && code.indexOf('-') > -1) {\n if (this.options.load !== 'languageOnly') addCode(this.formatLanguageCode(code));\n if (this.options.load !== 'languageOnly' && this.options.load !== 'currentOnly') addCode(this.getScriptPartFromCode(code));\n if (this.options.load !== 'currentOnly') addCode(this.getLanguagePartFromCode(code));\n } else if (typeof code === 'string') {\n addCode(this.formatLanguageCode(code));\n }\n\n fallbackCodes.forEach(function (fc) {\n if (codes.indexOf(fc) < 0) addCode(_this.formatLanguageCode(fc));\n });\n\n return codes;\n };\n\n return LanguageUtil;\n}();\n\nexport default LanguageUtil;","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nimport baseLogger from './logger.js';\n\n// definition http://translate.sourceforge.net/wiki/l10n/pluralforms\n/* eslint-disable */\nvar sets = [{ lngs: ['ach', 'ak', 'am', 'arn', 'br', 'fil', 'gun', 'ln', 'mfe', 'mg', 'mi', 'oc', 'pt', 'pt-BR', 'tg', 'ti', 'tr', 'uz', 'wa'], nr: [1, 2], fc: 1 }, { lngs: ['af', 'an', 'ast', 'az', 'bg', 'bn', 'ca', 'da', 'de', 'dev', 'el', 'en', 'eo', 'es', 'et', 'eu', 'fi', 'fo', 'fur', 'fy', 'gl', 'gu', 'ha', 'he', 'hi', 'hu', 'hy', 'ia', 'it', 'kn', 'ku', 'lb', 'mai', 'ml', 'mn', 'mr', 'nah', 'nap', 'nb', 'ne', 'nl', 'nn', 'no', 'nso', 'pa', 'pap', 'pms', 'ps', 'pt-PT', 'rm', 'sco', 'se', 'si', 'so', 'son', 'sq', 'sv', 'sw', 'ta', 'te', 'tk', 'ur', 'yo'], nr: [1, 2], fc: 2 }, { lngs: ['ay', 'bo', 'cgg', 'fa', 'id', 'ja', 'jbo', 'ka', 'kk', 'km', 'ko', 'ky', 'lo', 'ms', 'sah', 'su', 'th', 'tt', 'ug', 'vi', 'wo', 'zh'], nr: [1], fc: 3 }, { lngs: ['be', 'bs', 'dz', 'hr', 'ru', 'sr', 'uk'], nr: [1, 2, 5], fc: 4 }, { lngs: ['ar'], nr: [0, 1, 2, 3, 11, 100], fc: 5 }, { lngs: ['cs', 'sk'], nr: [1, 2, 5], fc: 6 }, { lngs: ['csb', 'pl'], nr: [1, 2, 5], fc: 7 }, { lngs: ['cy'], nr: [1, 2, 3, 8], fc: 8 }, { lngs: ['fr'], nr: [1, 2], fc: 9 }, { lngs: ['ga'], nr: [1, 2, 3, 7, 11], fc: 10 }, { lngs: ['gd'], nr: [1, 2, 3, 20], fc: 11 }, { lngs: ['is'], nr: [1, 2], fc: 12 }, { lngs: ['jv'], nr: [0, 1], fc: 13 }, { lngs: ['kw'], nr: [1, 2, 3, 4], fc: 14 }, { lngs: ['lt'], nr: [1, 2, 10], fc: 15 }, { lngs: ['lv'], nr: [1, 2, 0], fc: 16 }, { lngs: ['mk'], nr: [1, 2], fc: 17 }, { lngs: ['mnk'], nr: [0, 1, 2], fc: 18 }, { lngs: ['mt'], nr: [1, 2, 11, 20], fc: 19 }, { lngs: ['or'], nr: [2, 1], fc: 2 }, { lngs: ['ro'], nr: [1, 2, 20], fc: 20 }, { lngs: ['sl'], nr: [5, 1, 2, 3], fc: 21 }];\n\nvar _rulesPluralsTypes = {\n 1: function _(n) {\n return Number(n > 1);\n },\n 2: function _(n) {\n return Number(n != 1);\n },\n 3: function _(n) {\n return 0;\n },\n 4: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 5: function _(n) {\n return Number(n === 0 ? 0 : n == 1 ? 1 : n == 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5);\n },\n 6: function _(n) {\n return Number(n == 1 ? 0 : n >= 2 && n <= 4 ? 1 : 2);\n },\n 7: function _(n) {\n return Number(n == 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 8: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n != 8 && n != 11 ? 2 : 3);\n },\n 9: function _(n) {\n return Number(n >= 2);\n },\n 10: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4);\n },\n 11: function _(n) {\n return Number(n == 1 || n == 11 ? 0 : n == 2 || n == 12 ? 1 : n > 2 && n < 20 ? 2 : 3);\n },\n 12: function _(n) {\n return Number(n % 10 != 1 || n % 100 == 11);\n },\n 13: function _(n) {\n return Number(n !== 0);\n },\n 14: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n == 3 ? 2 : 3);\n },\n 15: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 16: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n !== 0 ? 1 : 2);\n },\n 17: function _(n) {\n return Number(n == 1 || n % 10 == 1 ? 0 : 1);\n },\n 18: function _(n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : 2);\n },\n 19: function _(n) {\n return Number(n == 1 ? 0 : n === 0 || n % 100 > 1 && n % 100 < 11 ? 1 : n % 100 > 10 && n % 100 < 20 ? 2 : 3);\n },\n 20: function _(n) {\n return Number(n == 1 ? 0 : n === 0 || n % 100 > 0 && n % 100 < 20 ? 1 : 2);\n },\n 21: function _(n) {\n return Number(n % 100 == 1 ? 1 : n % 100 == 2 ? 2 : n % 100 == 3 || n % 100 == 4 ? 3 : 0);\n },\n 22: function _(n) {\n return Number(n === 1 ? 0 : n === 2 ? 1 : (n < 0 || n > 10) && n % 10 == 0 ? 2 : 3);\n }\n};\n/* eslint-enable */\n\nfunction createRules() {\n var rules = {};\n sets.forEach(function (set) {\n set.lngs.forEach(function (l) {\n rules[l] = {\n numbers: set.nr,\n plurals: _rulesPluralsTypes[set.fc]\n };\n });\n });\n return rules;\n}\n\nvar PluralResolver = function () {\n function PluralResolver(languageUtils) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, PluralResolver);\n\n this.languageUtils = languageUtils;\n this.options = options;\n\n this.logger = baseLogger.create('pluralResolver');\n\n this.rules = createRules();\n }\n\n PluralResolver.prototype.addRule = function addRule(lng, obj) {\n this.rules[lng] = obj;\n };\n\n PluralResolver.prototype.getRule = function getRule(code) {\n return this.rules[code] || this.rules[this.languageUtils.getLanguagePartFromCode(code)];\n };\n\n PluralResolver.prototype.needsPlural = function needsPlural(code) {\n var rule = this.getRule(code);\n\n return rule && rule.numbers.length > 1;\n };\n\n PluralResolver.prototype.getPluralFormsOfKey = function getPluralFormsOfKey(code, key) {\n var _this = this;\n\n var ret = [];\n\n var rule = this.getRule(code);\n\n if (!rule) return ret;\n\n rule.numbers.forEach(function (n) {\n var suffix = _this.getSuffix(code, n);\n ret.push('' + key + suffix);\n });\n\n return ret;\n };\n\n PluralResolver.prototype.getSuffix = function getSuffix(code, count) {\n var _this2 = this;\n\n var rule = this.getRule(code);\n\n if (rule) {\n // if (rule.numbers.length === 1) return ''; // only singular\n\n var idx = rule.noAbs ? rule.plurals(count) : rule.plurals(Math.abs(count));\n var suffix = rule.numbers[idx];\n\n // special treatment for lngs only having singular and plural\n if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n if (suffix === 2) {\n suffix = 'plural';\n } else if (suffix === 1) {\n suffix = '';\n }\n }\n\n var returnSuffix = function returnSuffix() {\n return _this2.options.prepend && suffix.toString() ? _this2.options.prepend + suffix.toString() : suffix.toString();\n };\n\n // COMPATIBILITY JSON\n // v1\n if (this.options.compatibilityJSON === 'v1') {\n if (suffix === 1) return '';\n if (typeof suffix === 'number') return '_plural_' + suffix.toString();\n return returnSuffix();\n } else if ( /* v2 */this.options.compatibilityJSON === 'v2' && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n return returnSuffix();\n } else if ( /* v3 - gettext index */this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n return returnSuffix();\n }\n return this.options.prepend && idx.toString() ? this.options.prepend + idx.toString() : idx.toString();\n }\n\n this.logger.warn('no plural rule found for: ' + code);\n return '';\n };\n\n return PluralResolver;\n}();\n\nexport default PluralResolver;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _defaults(obj, defaults) { var keys = Object.getOwnPropertyNames(defaults); for (var i = 0; i < keys.length; i++) { var key = keys[i]; var value = Object.getOwnPropertyDescriptor(defaults, key); if (value && value.configurable && obj[key] === undefined) { Object.defineProperty(obj, key, value); } } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); }\n\nimport EventEmitter from './EventEmitter.js';\nimport * as utils from './utils.js';\n\nvar ResourceStore = function (_EventEmitter) {\n _inherits(ResourceStore, _EventEmitter);\n\n function ResourceStore(data) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : { ns: ['translation'], defaultNS: 'translation' };\n\n _classCallCheck(this, ResourceStore);\n\n var _this = _possibleConstructorReturn(this, _EventEmitter.call(this));\n\n _this.data = data || {};\n _this.options = options;\n if (_this.options.keySeparator === undefined) {\n _this.options.keySeparator = '.';\n }\n return _this;\n }\n\n ResourceStore.prototype.addNamespaces = function addNamespaces(ns) {\n if (this.options.ns.indexOf(ns) < 0) {\n this.options.ns.push(ns);\n }\n };\n\n ResourceStore.prototype.removeNamespaces = function removeNamespaces(ns) {\n var index = this.options.ns.indexOf(ns);\n if (index > -1) {\n this.options.ns.splice(index, 1);\n }\n };\n\n ResourceStore.prototype.getResource = function getResource(lng, ns, key) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n\n var path = [lng, ns];\n if (key && typeof key !== 'string') path = path.concat(key);\n if (key && typeof key === 'string') path = path.concat(keySeparator ? key.split(keySeparator) : key);\n\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n }\n\n return utils.getPath(this.data, path);\n };\n\n ResourceStore.prototype.addResource = function addResource(lng, ns, key, value) {\n var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : { silent: false };\n\n var keySeparator = this.options.keySeparator;\n if (keySeparator === undefined) keySeparator = '.';\n\n var path = [lng, ns];\n if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);\n\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n value = ns;\n ns = path[1];\n }\n\n this.addNamespaces(ns);\n\n utils.setPath(this.data, path, value);\n\n if (!options.silent) this.emit('added', lng, ns, key, value);\n };\n\n ResourceStore.prototype.addResources = function addResources(lng, ns, resources) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : { silent: false };\n\n /* eslint no-restricted-syntax: 0 */\n for (var m in resources) {\n if (typeof resources[m] === 'string') this.addResource(lng, ns, m, resources[m], { silent: true });\n }\n if (!options.silent) this.emit('added', lng, ns, resources);\n };\n\n ResourceStore.prototype.addResourceBundle = function addResourceBundle(lng, ns, resources, deep, overwrite) {\n var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : { silent: false };\n\n var path = [lng, ns];\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n deep = resources;\n resources = ns;\n ns = path[1];\n }\n\n this.addNamespaces(ns);\n\n var pack = utils.getPath(this.data, path) || {};\n\n if (deep) {\n utils.deepExtend(pack, resources, overwrite);\n } else {\n pack = _extends({}, pack, resources);\n }\n\n utils.setPath(this.data, path, pack);\n\n if (!options.silent) this.emit('added', lng, ns, resources);\n };\n\n ResourceStore.prototype.removeResourceBundle = function removeResourceBundle(lng, ns) {\n if (this.hasResourceBundle(lng, ns)) {\n delete this.data[lng][ns];\n }\n this.removeNamespaces(ns);\n\n this.emit('removed', lng, ns);\n };\n\n ResourceStore.prototype.hasResourceBundle = function hasResourceBundle(lng, ns) {\n return this.getResource(lng, ns) !== undefined;\n };\n\n ResourceStore.prototype.getResourceBundle = function getResourceBundle(lng, ns) {\n if (!ns) ns = this.options.defaultNS;\n\n // COMPATIBILITY: remove extend in v2.1.0\n if (this.options.compatibilityAPI === 'v1') return _extends({}, this.getResource(lng, ns));\n\n return this.getResource(lng, ns);\n };\n\n ResourceStore.prototype.getDataByLanguage = function getDataByLanguage(lng) {\n return this.data[lng];\n };\n\n ResourceStore.prototype.toJSON = function toJSON() {\n return this.data;\n };\n\n return ResourceStore;\n}(EventEmitter);\n\nexport default ResourceStore;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction _defaults(obj, defaults) { var keys = Object.getOwnPropertyNames(defaults); for (var i = 0; i < keys.length; i++) { var key = keys[i]; var value = Object.getOwnPropertyDescriptor(defaults, key); if (value && value.configurable && obj[key] === undefined) { Object.defineProperty(obj, key, value); } } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); }\n\nimport baseLogger from './logger.js';\nimport EventEmitter from './EventEmitter.js';\nimport postProcessor from './postProcessor.js';\nimport * as utils from './utils.js';\n\nvar Translator = function (_EventEmitter) {\n _inherits(Translator, _EventEmitter);\n\n function Translator(services) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Translator);\n\n var _this = _possibleConstructorReturn(this, _EventEmitter.call(this));\n\n utils.copy(['resourceStore', 'languageUtils', 'pluralResolver', 'interpolator', 'backendConnector', 'i18nFormat'], services, _this);\n\n _this.options = options;\n if (_this.options.keySeparator === undefined) {\n _this.options.keySeparator = '.';\n }\n\n _this.logger = baseLogger.create('translator');\n return _this;\n }\n\n Translator.prototype.changeLanguage = function changeLanguage(lng) {\n if (lng) this.language = lng;\n };\n\n Translator.prototype.exists = function exists(key) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : { interpolation: {} };\n\n var resolved = this.resolve(key, options);\n return resolved && resolved.res !== undefined;\n };\n\n Translator.prototype.extractFromKey = function extractFromKey(key, options) {\n var nsSeparator = options.nsSeparator || this.options.nsSeparator;\n if (nsSeparator === undefined) nsSeparator = ':';\n\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n\n var namespaces = options.ns || this.options.defaultNS;\n if (nsSeparator && key.indexOf(nsSeparator) > -1) {\n var parts = key.split(nsSeparator);\n if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.indexOf(parts[0]) > -1) namespaces = parts.shift();\n key = parts.join(keySeparator);\n }\n if (typeof namespaces === 'string') namespaces = [namespaces];\n\n return {\n key: key,\n namespaces: namespaces\n };\n };\n\n Translator.prototype.translate = function translate(keys, options) {\n var _this2 = this;\n\n if ((typeof options === 'undefined' ? 'undefined' : _typeof(options)) !== 'object' && this.options.overloadTranslationOptionHandler) {\n /* eslint prefer-rest-params: 0 */\n options = this.options.overloadTranslationOptionHandler(arguments);\n }\n if (!options) options = {};\n\n // non valid keys handling\n if (keys === undefined || keys === null || keys === '') return '';\n if (typeof keys === 'number') keys = String(keys);\n if (typeof keys === 'string') keys = [keys];\n\n // separators\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n\n // get namespace(s)\n\n var _extractFromKey = this.extractFromKey(keys[keys.length - 1], options),\n key = _extractFromKey.key,\n namespaces = _extractFromKey.namespaces;\n\n var namespace = namespaces[namespaces.length - 1];\n\n // return key on CIMode\n var lng = options.lng || this.language;\n var appendNamespaceToCIMode = options.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;\n if (lng && lng.toLowerCase() === 'cimode') {\n if (appendNamespaceToCIMode) {\n var nsSeparator = options.nsSeparator || this.options.nsSeparator;\n return namespace + nsSeparator + key;\n }\n\n return key;\n }\n\n // resolve from store\n var resolved = this.resolve(keys, options);\n var res = resolved && resolved.res;\n var resUsedKey = resolved && resolved.usedKey || key;\n\n var resType = Object.prototype.toString.apply(res);\n var noObject = ['[object Number]', '[object Function]', '[object RegExp]'];\n var joinArrays = options.joinArrays !== undefined ? options.joinArrays : this.options.joinArrays;\n\n // object\n var handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;\n var handleAsObject = typeof res !== 'string' && typeof res !== 'boolean' && typeof res !== 'number';\n if (handleAsObjectInI18nFormat && res && handleAsObject && noObject.indexOf(resType) < 0 && !(joinArrays && resType === '[object Array]')) {\n if (!options.returnObjects && !this.options.returnObjects) {\n this.logger.warn('accessing an object - but returnObjects options is not enabled!');\n return this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, res, options) : 'key \\'' + key + ' (' + this.language + ')\\' returned an object instead of string.';\n }\n\n // if we got a separator we loop over children - else we just return object as is\n // as having it set to false means no hierarchy so no lookup for nested values\n if (keySeparator) {\n var copy = resType === '[object Array]' ? [] : {}; // apply child translation on a copy\n\n /* eslint no-restricted-syntax: 0 */\n for (var m in res) {\n if (Object.prototype.hasOwnProperty.call(res, m)) {\n var deepKey = '' + resUsedKey + keySeparator + m;\n copy[m] = this.translate(deepKey, _extends({}, options, { joinArrays: false, ns: namespaces }));\n if (copy[m] === deepKey) copy[m] = res[m]; // if nothing found use orginal value as fallback\n }\n }\n res = copy;\n }\n } else if (handleAsObjectInI18nFormat && joinArrays && resType === '[object Array]') {\n // array special treatment\n res = res.join(joinArrays);\n if (res) res = this.extendTranslation(res, keys, options);\n } else {\n // string, empty or null\n var usedDefault = false;\n var usedKey = false;\n\n // fallback value\n if (!this.isValidLookup(res) && options.defaultValue !== undefined) {\n usedDefault = true;\n\n if (options.count !== undefined) {\n var suffix = this.pluralResolver.getSuffix(lng, options.count);\n res = options['defaultValue' + suffix];\n }\n if (!res) res = options.defaultValue;\n }\n if (!this.isValidLookup(res)) {\n usedKey = true;\n res = key;\n }\n\n // save missing\n var updateMissing = options.defaultValue && options.defaultValue !== res && this.options.updateMissing;\n if (usedKey || usedDefault || updateMissing) {\n this.logger.log(updateMissing ? 'updateKey' : 'missingKey', lng, namespace, key, updateMissing ? options.defaultValue : res);\n\n var lngs = [];\n var fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, options.lng || this.language);\n if (this.options.saveMissingTo === 'fallback' && fallbackLngs && fallbackLngs[0]) {\n for (var i = 0; i < fallbackLngs.length; i++) {\n lngs.push(fallbackLngs[i]);\n }\n } else if (this.options.saveMissingTo === 'all') {\n lngs = this.languageUtils.toResolveHierarchy(options.lng || this.language);\n } else {\n lngs.push(options.lng || this.language);\n }\n\n var send = function send(l, k) {\n if (_this2.options.missingKeyHandler) {\n _this2.options.missingKeyHandler(l, namespace, k, updateMissing ? options.defaultValue : res, updateMissing, options);\n } else if (_this2.backendConnector && _this2.backendConnector.saveMissing) {\n _this2.backendConnector.saveMissing(l, namespace, k, updateMissing ? options.defaultValue : res, updateMissing, options);\n }\n _this2.emit('missingKey', l, namespace, k, res);\n };\n\n if (this.options.saveMissing) {\n var needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n if (this.options.saveMissingPlurals && needsPluralHandling) {\n lngs.forEach(function (l) {\n var plurals = _this2.pluralResolver.getPluralFormsOfKey(l, key);\n\n plurals.forEach(function (p) {\n return send([l], p);\n });\n });\n } else {\n send(lngs, key);\n }\n }\n }\n\n // extend\n res = this.extendTranslation(res, keys, options, resolved);\n\n // append namespace if still key\n if (usedKey && res === key && this.options.appendNamespaceToMissingKey) res = namespace + ':' + key;\n\n // parseMissingKeyHandler\n if (usedKey && this.options.parseMissingKeyHandler) res = this.options.parseMissingKeyHandler(res);\n }\n\n // return\n return res;\n };\n\n Translator.prototype.extendTranslation = function extendTranslation(res, key, options, resolved) {\n var _this3 = this;\n\n if (this.i18nFormat && this.i18nFormat.parse) {\n res = this.i18nFormat.parse(res, options, resolved.usedLng, resolved.usedNS, resolved.usedKey, { resolved: resolved });\n } else if (!options.skipInterpolation) {\n // i18next.parsing\n if (options.interpolation) this.interpolator.init(_extends({}, options, { interpolation: _extends({}, this.options.interpolation, options.interpolation) }));\n\n // interpolate\n var data = options.replace && typeof options.replace !== 'string' ? options.replace : options;\n if (this.options.interpolation.defaultVariables) data = _extends({}, this.options.interpolation.defaultVariables, data);\n res = this.interpolator.interpolate(res, data, options.lng || this.language, options);\n\n // nesting\n if (options.nest !== false) res = this.interpolator.nest(res, function () {\n return _this3.translate.apply(_this3, arguments);\n }, options);\n\n if (options.interpolation) this.interpolator.reset();\n }\n\n // post process\n var postProcess = options.postProcess || this.options.postProcess;\n var postProcessorNames = typeof postProcess === 'string' ? [postProcess] : postProcess;\n\n if (res !== undefined && res !== null && postProcessorNames && postProcessorNames.length && options.applyPostProcessor !== false) {\n res = postProcessor.handle(postProcessorNames, res, key, options, this);\n }\n\n return res;\n };\n\n Translator.prototype.resolve = function resolve(keys) {\n var _this4 = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var found = void 0;\n var usedKey = void 0;\n var usedLng = void 0;\n var usedNS = void 0;\n\n if (typeof keys === 'string') keys = [keys];\n\n // forEach possible key\n keys.forEach(function (k) {\n if (_this4.isValidLookup(found)) return;\n var extracted = _this4.extractFromKey(k, options);\n var key = extracted.key;\n usedKey = key;\n var namespaces = extracted.namespaces;\n if (_this4.options.fallbackNS) namespaces = namespaces.concat(_this4.options.fallbackNS);\n\n var needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n var needsContextHandling = options.context !== undefined && typeof options.context === 'string' && options.context !== '';\n\n var codes = options.lngs ? options.lngs : _this4.languageUtils.toResolveHierarchy(options.lng || _this4.language, options.fallbackLng);\n\n namespaces.forEach(function (ns) {\n if (_this4.isValidLookup(found)) return;\n usedNS = ns;\n\n codes.forEach(function (code) {\n if (_this4.isValidLookup(found)) return;\n usedLng = code;\n\n var finalKey = key;\n var finalKeys = [finalKey];\n\n if (_this4.i18nFormat && _this4.i18nFormat.addLookupKeys) {\n _this4.i18nFormat.addLookupKeys(finalKeys, key, code, ns, options);\n } else {\n var pluralSuffix = void 0;\n if (needsPluralHandling) pluralSuffix = _this4.pluralResolver.getSuffix(code, options.count);\n\n // fallback for plural if context not found\n if (needsPluralHandling && needsContextHandling) finalKeys.push(finalKey + pluralSuffix);\n\n // get key for context if needed\n if (needsContextHandling) finalKeys.push(finalKey += '' + _this4.options.contextSeparator + options.context);\n\n // get key for plural if needed\n if (needsPluralHandling) finalKeys.push(finalKey += pluralSuffix);\n }\n\n // iterate over finalKeys starting with most specific pluralkey (-> contextkey only) -> singularkey only\n var possibleKey = void 0;\n /* eslint no-cond-assign: 0 */\n while (possibleKey = finalKeys.pop()) {\n if (!_this4.isValidLookup(found)) {\n found = _this4.getResource(code, ns, possibleKey, options);\n }\n }\n });\n });\n });\n\n return { res: found, usedKey: usedKey, usedLng: usedLng, usedNS: usedNS };\n };\n\n Translator.prototype.isValidLookup = function isValidLookup(res) {\n return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === '');\n };\n\n Translator.prototype.getResource = function getResource(code, ns, key) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n if (this.i18nFormat && this.i18nFormat.getResource) return this.i18nFormat.getResource(code, ns, key, options);\n return this.resourceStore.getResource(code, ns, key, options);\n };\n\n return Translator;\n}(EventEmitter);\n\nexport default Translator;","export { get };\nfunction get() {\n return {\n debug: false,\n initImmediate: true,\n\n ns: ['translation'],\n defaultNS: ['translation'],\n fallbackLng: ['dev'],\n fallbackNS: false, // string or array of namespaces\n\n whitelist: false, // array with whitelisted languages\n nonExplicitWhitelist: false,\n load: 'all', // | currentOnly | languageOnly\n preload: false, // array with preload languages\n\n simplifyPluralSuffix: true,\n keySeparator: '.',\n nsSeparator: ':',\n pluralSeparator: '_',\n contextSeparator: '_',\n\n saveMissing: false, // enable to send missing values\n updateMissing: false, // enable to update default values if different from translated value (only useful on initial development, or when keeping code as source of truth)\n saveMissingTo: 'fallback', // 'current' || 'all'\n saveMissingPlurals: true, // will save all forms not only singular key\n missingKeyHandler: false, // function(lng, ns, key, fallbackValue) -> override if prefer on handling\n missingInterpolationHandler: false, // function(str, match)\n\n postProcess: false, // string or array of postProcessor names\n returnNull: true, // allows null value as valid translation\n returnEmptyString: true, // allows empty string value as valid translation\n returnObjects: false,\n joinArrays: false, // or string to join array\n returnedObjectHandler: function returnedObjectHandler() {}, // function(key, value, options) triggered if key returns object but returnObjects is set to false\n parseMissingKeyHandler: false, // function(key) parsed a key that was not found in t() before returning\n appendNamespaceToMissingKey: false,\n appendNamespaceToCIMode: false,\n overloadTranslationOptionHandler: function handle(args) {\n var ret = {};\n if (args[1]) ret.defaultValue = args[1];\n if (args[2]) ret.tDescription = args[2];\n return ret;\n },\n interpolation: {\n escapeValue: true,\n format: function format(value, _format, lng) {\n return value;\n },\n prefix: '{{',\n suffix: '}}',\n formatSeparator: ',',\n // prefixEscaped: '{{',\n // suffixEscaped: '}}',\n // unescapeSuffix: '',\n unescapePrefix: '-',\n\n nestingPrefix: '$t(',\n nestingSuffix: ')',\n // nestingPrefixEscaped: '$t(',\n // nestingSuffixEscaped: ')',\n // defaultVariables: undefined // object that can have values to interpolate on - extends passed in interpolation data\n maxReplaces: 1000 // max replaces to prevent endless loop\n }\n };\n}\n\n/* eslint no-param-reassign: 0 */\nexport function transformOptions(options) {\n // create namespace object if namespace is passed in as string\n if (typeof options.ns === 'string') options.ns = [options.ns];\n if (typeof options.fallbackLng === 'string') options.fallbackLng = [options.fallbackLng];\n if (typeof options.fallbackNS === 'string') options.fallbackNS = [options.fallbackNS];\n\n // extend whitelist with cimode\n if (options.whitelist && options.whitelist.indexOf('cimode') < 0) {\n options.whitelist = options.whitelist.concat(['cimode']);\n }\n\n return options;\n}","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _defaults(obj, defaults) { var keys = Object.getOwnPropertyNames(defaults); for (var i = 0; i < keys.length; i++) { var key = keys[i]; var value = Object.getOwnPropertyDescriptor(defaults, key); if (value && value.configurable && obj[key] === undefined) { Object.defineProperty(obj, key, value); } } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); }\n\nimport baseLogger from './logger.js';\nimport EventEmitter from './EventEmitter.js';\nimport ResourceStore from './ResourceStore.js';\nimport Translator from './Translator.js';\nimport LanguageUtils from './LanguageUtils.js';\nimport PluralResolver from './PluralResolver.js';\nimport Interpolator from './Interpolator.js';\nimport BackendConnector from './BackendConnector.js';\nimport { get as getDefaults, transformOptions } from './defaults.js';\nimport postProcessor from './postProcessor.js';\n\nfunction noop() {}\n\nvar I18n = function (_EventEmitter) {\n _inherits(I18n, _EventEmitter);\n\n function I18n() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments[1];\n\n _classCallCheck(this, I18n);\n\n var _this = _possibleConstructorReturn(this, _EventEmitter.call(this));\n\n _this.options = transformOptions(options);\n _this.services = {};\n _this.logger = baseLogger;\n _this.modules = { external: [] };\n\n if (callback && !_this.isInitialized && !options.isClone) {\n var _ret;\n\n // https://github.com/i18next/i18next/issues/879\n if (!_this.options.initImmediate) return _ret = _this.init(options, callback), _possibleConstructorReturn(_this, _ret);\n setTimeout(function () {\n _this.init(options, callback);\n }, 0);\n }\n return _this;\n }\n\n I18n.prototype.init = function init() {\n var _this2 = this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments[1];\n\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n this.options = _extends({}, getDefaults(), this.options, transformOptions(options));\n\n this.format = this.options.interpolation.format;\n if (!callback) callback = noop;\n\n function createClassOnDemand(ClassOrObject) {\n if (!ClassOrObject) return null;\n if (typeof ClassOrObject === 'function') return new ClassOrObject();\n return ClassOrObject;\n }\n\n // init services\n if (!this.options.isClone) {\n if (this.modules.logger) {\n baseLogger.init(createClassOnDemand(this.modules.logger), this.options);\n } else {\n baseLogger.init(null, this.options);\n }\n\n var lu = new LanguageUtils(this.options);\n this.store = new ResourceStore(this.options.resources, this.options);\n\n var s = this.services;\n s.logger = baseLogger;\n s.resourceStore = this.store;\n s.languageUtils = lu;\n s.pluralResolver = new PluralResolver(lu, { prepend: this.options.pluralSeparator, compatibilityJSON: this.options.compatibilityJSON, simplifyPluralSuffix: this.options.simplifyPluralSuffix });\n s.interpolator = new Interpolator(this.options);\n\n s.backendConnector = new BackendConnector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);\n // pipe events from backendConnector\n s.backendConnector.on('*', function (event) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n _this2.emit.apply(_this2, [event].concat(args));\n });\n\n if (this.modules.languageDetector) {\n s.languageDetector = createClassOnDemand(this.modules.languageDetector);\n s.languageDetector.init(s, this.options.detection, this.options);\n }\n\n if (this.modules.i18nFormat) {\n s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);\n if (s.i18nFormat.init) s.i18nFormat.init(this);\n }\n\n this.translator = new Translator(this.services, this.options);\n // pipe events from translator\n this.translator.on('*', function (event) {\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n _this2.emit.apply(_this2, [event].concat(args));\n });\n\n this.modules.external.forEach(function (m) {\n if (m.init) m.init(_this2);\n });\n }\n\n // append api\n var storeApi = ['getResource', 'addResource', 'addResources', 'addResourceBundle', 'removeResourceBundle', 'hasResourceBundle', 'getResourceBundle', 'getDataByLanguage'];\n storeApi.forEach(function (fcName) {\n _this2[fcName] = function () {\n var _store;\n\n return (_store = _this2.store)[fcName].apply(_store, arguments);\n };\n });\n\n var load = function load() {\n _this2.changeLanguage(_this2.options.lng, function (err, t) {\n _this2.isInitialized = true;\n _this2.logger.log('initialized', _this2.options);\n _this2.emit('initialized', _this2.options);\n\n callback(err, t);\n });\n };\n\n if (this.options.resources || !this.options.initImmediate) {\n load();\n } else {\n setTimeout(load, 0);\n }\n\n return this;\n };\n\n /* eslint consistent-return: 0 */\n\n\n I18n.prototype.loadResources = function loadResources() {\n var _this3 = this;\n\n var callback = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : noop;\n\n if (!this.options.resources) {\n if (this.language && this.language.toLowerCase() === 'cimode') return callback(); // avoid loading resources for cimode\n\n var toLoad = [];\n\n var append = function append(lng) {\n if (!lng) return;\n var lngs = _this3.services.languageUtils.toResolveHierarchy(lng);\n lngs.forEach(function (l) {\n if (toLoad.indexOf(l) < 0) toLoad.push(l);\n });\n };\n\n if (!this.language) {\n // at least load fallbacks in this case\n var fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n fallbacks.forEach(function (l) {\n return append(l);\n });\n } else {\n append(this.language);\n }\n\n if (this.options.preload) {\n this.options.preload.forEach(function (l) {\n return append(l);\n });\n }\n\n this.services.backendConnector.load(toLoad, this.options.ns, callback);\n } else {\n callback(null);\n }\n };\n\n I18n.prototype.reloadResources = function reloadResources(lngs, ns, callback) {\n if (!lngs) lngs = this.languages;\n if (!ns) ns = this.options.ns;\n if (!callback) callback = function callback() {};\n this.services.backendConnector.reload(lngs, ns, callback);\n };\n\n I18n.prototype.use = function use(module) {\n if (module.type === 'backend') {\n this.modules.backend = module;\n }\n\n if (module.type === 'logger' || module.log && module.warn && module.error) {\n this.modules.logger = module;\n }\n\n if (module.type === 'languageDetector') {\n this.modules.languageDetector = module;\n }\n\n if (module.type === 'i18nFormat') {\n this.modules.i18nFormat = module;\n }\n\n if (module.type === 'postProcessor') {\n postProcessor.addPostProcessor(module);\n }\n\n if (module.type === '3rdParty') {\n this.modules.external.push(module);\n }\n\n return this;\n };\n\n I18n.prototype.changeLanguage = function changeLanguage(lng, callback) {\n var _this4 = this;\n\n var done = function done(err, l) {\n _this4.translator.changeLanguage(l);\n\n if (l) {\n _this4.emit('languageChanged', l);\n _this4.logger.log('languageChanged', l);\n }\n\n if (callback) callback(err, function () {\n return _this4.t.apply(_this4, arguments);\n });\n };\n\n var setLng = function setLng(l) {\n if (l) {\n _this4.language = l;\n _this4.languages = _this4.services.languageUtils.toResolveHierarchy(l);\n if (!_this4.translator.language) _this4.translator.changeLanguage(l);\n\n if (_this4.services.languageDetector) _this4.services.languageDetector.cacheUserLanguage(l);\n }\n\n _this4.loadResources(function (err) {\n done(err, l);\n });\n };\n\n if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {\n setLng(this.services.languageDetector.detect());\n } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {\n this.services.languageDetector.detect(setLng);\n } else {\n setLng(lng);\n }\n };\n\n I18n.prototype.getFixedT = function getFixedT(lng, ns) {\n var _this5 = this;\n\n var fixedT = function fixedT(key, opts) {\n for (var _len3 = arguments.length, rest = Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n rest[_key3 - 2] = arguments[_key3];\n }\n\n var options = _extends({}, opts);\n if ((typeof opts === 'undefined' ? 'undefined' : _typeof(opts)) !== 'object') {\n options = _this5.options.overloadTranslationOptionHandler([key, opts].concat(rest));\n }\n\n options.lng = options.lng || fixedT.lng;\n options.lngs = options.lngs || fixedT.lngs;\n options.ns = options.ns || fixedT.ns;\n return _this5.t(key, options);\n };\n if (typeof lng === 'string') {\n fixedT.lng = lng;\n } else {\n fixedT.lngs = lng;\n }\n fixedT.ns = ns;\n return fixedT;\n };\n\n I18n.prototype.t = function t() {\n var _translator;\n\n return this.translator && (_translator = this.translator).translate.apply(_translator, arguments);\n };\n\n I18n.prototype.exists = function exists() {\n var _translator2;\n\n return this.translator && (_translator2 = this.translator).exists.apply(_translator2, arguments);\n };\n\n I18n.prototype.setDefaultNamespace = function setDefaultNamespace(ns) {\n this.options.defaultNS = ns;\n };\n\n I18n.prototype.loadNamespaces = function loadNamespaces(ns, callback) {\n var _this6 = this;\n\n if (!this.options.ns) return callback && callback();\n if (typeof ns === 'string') ns = [ns];\n\n ns.forEach(function (n) {\n if (_this6.options.ns.indexOf(n) < 0) _this6.options.ns.push(n);\n });\n\n this.loadResources(callback);\n };\n\n I18n.prototype.loadLanguages = function loadLanguages(lngs, callback) {\n if (typeof lngs === 'string') lngs = [lngs];\n var preloaded = this.options.preload || [];\n\n var newLngs = lngs.filter(function (lng) {\n return preloaded.indexOf(lng) < 0;\n });\n // Exit early if all given languages are already preloaded\n if (!newLngs.length) return callback();\n\n this.options.preload = preloaded.concat(newLngs);\n this.loadResources(callback);\n };\n\n I18n.prototype.dir = function dir(lng) {\n if (!lng) lng = this.languages && this.languages.length > 0 ? this.languages[0] : this.language;\n if (!lng) return 'rtl';\n\n var rtlLngs = ['ar', 'shu', 'sqr', 'ssh', 'xaa', 'yhd', 'yud', 'aao', 'abh', 'abv', 'acm', 'acq', 'acw', 'acx', 'acy', 'adf', 'ads', 'aeb', 'aec', 'afb', 'ajp', 'apc', 'apd', 'arb', 'arq', 'ars', 'ary', 'arz', 'auz', 'avl', 'ayh', 'ayl', 'ayn', 'ayp', 'bbz', 'pga', 'he', 'iw', 'ps', 'pbt', 'pbu', 'pst', 'prp', 'prd', 'ur', 'ydd', 'yds', 'yih', 'ji', 'yi', 'hbo', 'men', 'xmn', 'fa', 'jpr', 'peo', 'pes', 'prs', 'dv', 'sam'];\n\n return rtlLngs.indexOf(this.services.languageUtils.getLanguagePartFromCode(lng)) >= 0 ? 'rtl' : 'ltr';\n };\n\n /* eslint class-methods-use-this: 0 */\n\n\n I18n.prototype.createInstance = function createInstance() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments[1];\n\n return new I18n(options, callback);\n };\n\n I18n.prototype.cloneInstance = function cloneInstance() {\n var _this7 = this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n\n var mergedOptions = _extends({}, this.options, options, { isClone: true });\n var clone = new I18n(mergedOptions);\n var membersToCopy = ['store', 'services', 'language'];\n membersToCopy.forEach(function (m) {\n clone[m] = _this7[m];\n });\n clone.translator = new Translator(clone.services, clone.options);\n clone.translator.on('*', function (event) {\n for (var _len4 = arguments.length, args = Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n\n clone.emit.apply(clone, [event].concat(args));\n });\n clone.init(mergedOptions, callback);\n clone.translator.options = clone.options; // sync options\n\n return clone;\n };\n\n return I18n;\n}(EventEmitter);\n\nexport default new I18n();","import i18next from './i18next.js';\n\nexport default i18next;\n\nexport var changeLanguage = i18next.changeLanguage.bind(i18next);\nexport var cloneInstance = i18next.cloneInstance.bind(i18next);\nexport var createInstance = i18next.createInstance.bind(i18next);\nexport var dir = i18next.dir.bind(i18next);\nexport var exists = i18next.exists.bind(i18next);\nexport var getFixedT = i18next.getFixedT.bind(i18next);\nexport var init = i18next.init.bind(i18next);\nexport var loadLanguages = i18next.loadLanguages.bind(i18next);\nexport var loadNamespaces = i18next.loadNamespaces.bind(i18next);\nexport var loadResources = i18next.loadResources.bind(i18next);\nexport var off = i18next.off.bind(i18next);\nexport var on = i18next.on.bind(i18next);\nexport var setDefaultNamespace = i18next.setDefaultNamespace.bind(i18next);\nexport var t = i18next.t.bind(i18next);\nexport var use = i18next.use.bind(i18next);","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nvar consoleLogger = {\n type: 'logger',\n\n log: function log(args) {\n this.output('log', args);\n },\n warn: function warn(args) {\n this.output('warn', args);\n },\n error: function error(args) {\n this.output('error', args);\n },\n output: function output(type, args) {\n var _console;\n\n /* eslint no-console: 0 */\n if (console && console[type]) (_console = console)[type].apply(_console, _toConsumableArray(args));\n }\n};\n\nvar Logger = function () {\n function Logger(concreteLogger) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Logger);\n\n this.init(concreteLogger, options);\n }\n\n Logger.prototype.init = function init(concreteLogger) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n this.prefix = options.prefix || 'i18next:';\n this.logger = concreteLogger || consoleLogger;\n this.options = options;\n this.debug = options.debug;\n };\n\n Logger.prototype.setDebug = function setDebug(bool) {\n this.debug = bool;\n };\n\n Logger.prototype.log = function log() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return this.forward(args, 'log', '', true);\n };\n\n Logger.prototype.warn = function warn() {\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return this.forward(args, 'warn', '', true);\n };\n\n Logger.prototype.error = function error() {\n for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n return this.forward(args, 'error', '');\n };\n\n Logger.prototype.deprecate = function deprecate() {\n for (var _len4 = arguments.length, args = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n return this.forward(args, 'warn', 'WARNING DEPRECATED: ', true);\n };\n\n Logger.prototype.forward = function forward(args, lvl, prefix, debugOnly) {\n if (debugOnly && !this.debug) return null;\n if (typeof args[0] === 'string') args[0] = '' + prefix + this.prefix + ' ' + args[0];\n return this.logger[lvl](args);\n };\n\n Logger.prototype.create = function create(moduleName) {\n return new Logger(this.logger, _extends({ prefix: this.prefix + ':' + moduleName + ':' }, this.options));\n };\n\n return Logger;\n}();\n\nexport default new Logger();","export default {\n\n processors: {},\n\n addPostProcessor: function addPostProcessor(module) {\n this.processors[module.name] = module;\n },\n handle: function handle(processors, value, key, options, translator) {\n var _this = this;\n\n processors.forEach(function (processor) {\n if (_this.processors[processor]) value = _this.processors[processor].process(value, key, options, translator);\n });\n\n return value;\n }\n};","export function makeString(object) {\n if (object == null) return '';\n /* eslint prefer-template: 0 */\n return '' + object;\n}\n\nexport function copy(a, s, t) {\n a.forEach(function (m) {\n if (s[m]) t[m] = s[m];\n });\n}\n\nfunction getLastOfPath(object, path, Empty) {\n function cleanKey(key) {\n return key && key.indexOf('###') > -1 ? key.replace(/###/g, '.') : key;\n }\n\n function canNotTraverseDeeper() {\n return !object || typeof object === 'string';\n }\n\n var stack = typeof path !== 'string' ? [].concat(path) : path.split('.');\n while (stack.length > 1) {\n if (canNotTraverseDeeper()) return {};\n\n var key = cleanKey(stack.shift());\n if (!object[key] && Empty) object[key] = new Empty();\n object = object[key];\n }\n\n if (canNotTraverseDeeper()) return {};\n return {\n obj: object,\n k: cleanKey(stack.shift())\n };\n}\n\nexport function setPath(object, path, newValue) {\n var _getLastOfPath = getLastOfPath(object, path, Object),\n obj = _getLastOfPath.obj,\n k = _getLastOfPath.k;\n\n obj[k] = newValue;\n}\n\nexport function pushPath(object, path, newValue, concat) {\n var _getLastOfPath2 = getLastOfPath(object, path, Object),\n obj = _getLastOfPath2.obj,\n k = _getLastOfPath2.k;\n\n obj[k] = obj[k] || [];\n if (concat) obj[k] = obj[k].concat(newValue);\n if (!concat) obj[k].push(newValue);\n}\n\nexport function getPath(object, path) {\n var _getLastOfPath3 = getLastOfPath(object, path),\n obj = _getLastOfPath3.obj,\n k = _getLastOfPath3.k;\n\n if (!obj) return undefined;\n return obj[k];\n}\n\nexport function deepExtend(target, source, overwrite) {\n /* eslint no-restricted-syntax: 0 */\n for (var prop in source) {\n if (prop in target) {\n // If we reached a leaf string in target or source then replace with source or skip depending on the 'overwrite' switch\n if (typeof target[prop] === 'string' || target[prop] instanceof String || typeof source[prop] === 'string' || source[prop] instanceof String) {\n if (overwrite) target[prop] = source[prop];\n } else {\n deepExtend(target[prop], source[prop], overwrite);\n }\n } else {\n target[prop] = source[prop];\n }\n }\n return target;\n}\n\nexport function regexEscape(str) {\n /* eslint no-useless-escape: 0 */\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n}\n\n/* eslint-disable */\nvar _entityMap = {\n \"&\": \"&\",\n \"<\": \"<\",\n \">\": \">\",\n '\"': '"',\n \"'\": ''',\n \"/\": '/'\n};\n/* eslint-enable */\n\nexport function escape(data) {\n if (typeof data === 'string') {\n return data.replace(/[&<>\"'\\/]/g, function (s) {\n return _entityMap[s];\n });\n }\n\n return data;\n}","/*!\n * imagesLoaded v4.1.4\n * JavaScript is all like \"You images are done yet or what?\"\n * MIT License\n */\n\n( function( window, factory ) { 'use strict';\n // universal module definition\n\n /*global define: false, module: false, require: false */\n\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'ev-emitter/ev-emitter'\n ], function( EvEmitter ) {\n return factory( window, EvEmitter );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('ev-emitter')\n );\n } else {\n // browser global\n window.imagesLoaded = factory(\n window,\n window.EvEmitter\n );\n }\n\n})( typeof window !== 'undefined' ? window : this,\n\n// -------------------------- factory -------------------------- //\n\nfunction factory( window, EvEmitter ) {\n\n'use strict';\n\nvar $ = window.jQuery;\nvar console = window.console;\n\n// -------------------------- helpers -------------------------- //\n\n// extend objects\nfunction extend( a, b ) {\n for ( var prop in b ) {\n a[ prop ] = b[ prop ];\n }\n return a;\n}\n\nvar arraySlice = Array.prototype.slice;\n\n// turn element or nodeList into an array\nfunction makeArray( obj ) {\n if ( Array.isArray( obj ) ) {\n // use object if already an array\n return obj;\n }\n\n var isArrayLike = typeof obj == 'object' && typeof obj.length == 'number';\n if ( isArrayLike ) {\n // convert nodeList to array\n return arraySlice.call( obj );\n }\n\n // array of single index\n return [ obj ];\n}\n\n// -------------------------- imagesLoaded -------------------------- //\n\n/**\n * @param {Array, Element, NodeList, String} elem\n * @param {Object or Function} options - if function, use as callback\n * @param {Function} onAlways - callback function\n */\nfunction ImagesLoaded( elem, options, onAlways ) {\n // coerce ImagesLoaded() without new, to be new ImagesLoaded()\n if ( !( this instanceof ImagesLoaded ) ) {\n return new ImagesLoaded( elem, options, onAlways );\n }\n // use elem as selector string\n var queryElem = elem;\n if ( typeof elem == 'string' ) {\n queryElem = document.querySelectorAll( elem );\n }\n // bail if bad element\n if ( !queryElem ) {\n console.error( 'Bad element for imagesLoaded ' + ( queryElem || elem ) );\n return;\n }\n\n this.elements = makeArray( queryElem );\n this.options = extend( {}, this.options );\n // shift arguments if no options set\n if ( typeof options == 'function' ) {\n onAlways = options;\n } else {\n extend( this.options, options );\n }\n\n if ( onAlways ) {\n this.on( 'always', onAlways );\n }\n\n this.getImages();\n\n if ( $ ) {\n // add jQuery Deferred object\n this.jqDeferred = new $.Deferred();\n }\n\n // HACK check async to allow time to bind listeners\n setTimeout( this.check.bind( this ) );\n}\n\nImagesLoaded.prototype = Object.create( EvEmitter.prototype );\n\nImagesLoaded.prototype.options = {};\n\nImagesLoaded.prototype.getImages = function() {\n this.images = [];\n\n // filter & find items if we have an item selector\n this.elements.forEach( this.addElementImages, this );\n};\n\n/**\n * @param {Node} element\n */\nImagesLoaded.prototype.addElementImages = function( elem ) {\n // filter siblings\n if ( elem.nodeName == 'IMG' ) {\n this.addImage( elem );\n }\n // get background image on element\n if ( this.options.background === true ) {\n this.addElementBackgroundImages( elem );\n }\n\n // find children\n // no non-element nodes, #143\n var nodeType = elem.nodeType;\n if ( !nodeType || !elementNodeTypes[ nodeType ] ) {\n return;\n }\n var childImgs = elem.querySelectorAll('img');\n // concat childElems to filterFound array\n for ( var i=0; i < childImgs.length; i++ ) {\n var img = childImgs[i];\n this.addImage( img );\n }\n\n // get child background images\n if ( typeof this.options.background == 'string' ) {\n var children = elem.querySelectorAll( this.options.background );\n for ( i=0; i < children.length; i++ ) {\n var child = children[i];\n this.addElementBackgroundImages( child );\n }\n }\n};\n\nvar elementNodeTypes = {\n 1: true,\n 9: true,\n 11: true\n};\n\nImagesLoaded.prototype.addElementBackgroundImages = function( elem ) {\n var style = getComputedStyle( elem );\n if ( !style ) {\n // Firefox returns null if in a hidden iframe https://bugzil.la/548397\n return;\n }\n // get url inside url(\"...\")\n var reURL = /url\\((['\"])?(.*?)\\1\\)/gi;\n var matches = reURL.exec( style.backgroundImage );\n while ( matches !== null ) {\n var url = matches && matches[2];\n if ( url ) {\n this.addBackground( url, elem );\n }\n matches = reURL.exec( style.backgroundImage );\n }\n};\n\n/**\n * @param {Image} img\n */\nImagesLoaded.prototype.addImage = function( img ) {\n var loadingImage = new LoadingImage( img );\n this.images.push( loadingImage );\n};\n\nImagesLoaded.prototype.addBackground = function( url, elem ) {\n var background = new Background( url, elem );\n this.images.push( background );\n};\n\nImagesLoaded.prototype.check = function() {\n var _this = this;\n this.progressedCount = 0;\n this.hasAnyBroken = false;\n // complete if no images\n if ( !this.images.length ) {\n this.complete();\n return;\n }\n\n function onProgress( image, elem, message ) {\n // HACK - Chrome triggers event before object properties have changed. #83\n setTimeout( function() {\n _this.progress( image, elem, message );\n });\n }\n\n this.images.forEach( function( loadingImage ) {\n loadingImage.once( 'progress', onProgress );\n loadingImage.check();\n });\n};\n\nImagesLoaded.prototype.progress = function( image, elem, message ) {\n this.progressedCount++;\n this.hasAnyBroken = this.hasAnyBroken || !image.isLoaded;\n // progress event\n this.emitEvent( 'progress', [ this, image, elem ] );\n if ( this.jqDeferred && this.jqDeferred.notify ) {\n this.jqDeferred.notify( this, image );\n }\n // check if completed\n if ( this.progressedCount == this.images.length ) {\n this.complete();\n }\n\n if ( this.options.debug && console ) {\n console.log( 'progress: ' + message, image, elem );\n }\n};\n\nImagesLoaded.prototype.complete = function() {\n var eventName = this.hasAnyBroken ? 'fail' : 'done';\n this.isComplete = true;\n this.emitEvent( eventName, [ this ] );\n this.emitEvent( 'always', [ this ] );\n if ( this.jqDeferred ) {\n var jqMethod = this.hasAnyBroken ? 'reject' : 'resolve';\n this.jqDeferred[ jqMethod ]( this );\n }\n};\n\n// -------------------------- -------------------------- //\n\nfunction LoadingImage( img ) {\n this.img = img;\n}\n\nLoadingImage.prototype = Object.create( EvEmitter.prototype );\n\nLoadingImage.prototype.check = function() {\n // If complete is true and browser supports natural sizes,\n // try to check for image status manually.\n var isComplete = this.getIsImageComplete();\n if ( isComplete ) {\n // report based on naturalWidth\n this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' );\n return;\n }\n\n // If none of the checks above matched, simulate loading on detached element.\n this.proxyImage = new Image();\n this.proxyImage.addEventListener( 'load', this );\n this.proxyImage.addEventListener( 'error', this );\n // bind to image as well for Firefox. #191\n this.img.addEventListener( 'load', this );\n this.img.addEventListener( 'error', this );\n this.proxyImage.src = this.img.src;\n};\n\nLoadingImage.prototype.getIsImageComplete = function() {\n // check for non-zero, non-undefined naturalWidth\n // fixes Safari+InfiniteScroll+Masonry bug infinite-scroll#671\n return this.img.complete && this.img.naturalWidth;\n};\n\nLoadingImage.prototype.confirm = function( isLoaded, message ) {\n this.isLoaded = isLoaded;\n this.emitEvent( 'progress', [ this, this.img, message ] );\n};\n\n// ----- events ----- //\n\n// trigger specified handler for event type\nLoadingImage.prototype.handleEvent = function( event ) {\n var method = 'on' + event.type;\n if ( this[ method ] ) {\n this[ method ]( event );\n }\n};\n\nLoadingImage.prototype.onload = function() {\n this.confirm( true, 'onload' );\n this.unbindEvents();\n};\n\nLoadingImage.prototype.onerror = function() {\n this.confirm( false, 'onerror' );\n this.unbindEvents();\n};\n\nLoadingImage.prototype.unbindEvents = function() {\n this.proxyImage.removeEventListener( 'load', this );\n this.proxyImage.removeEventListener( 'error', this );\n this.img.removeEventListener( 'load', this );\n this.img.removeEventListener( 'error', this );\n};\n\n// -------------------------- Background -------------------------- //\n\nfunction Background( url, element ) {\n this.url = url;\n this.element = element;\n this.img = new Image();\n}\n\n// inherit LoadingImage prototype\nBackground.prototype = Object.create( LoadingImage.prototype );\n\nBackground.prototype.check = function() {\n this.img.addEventListener( 'load', this );\n this.img.addEventListener( 'error', this );\n this.img.src = this.url;\n // check if image is already complete\n var isComplete = this.getIsImageComplete();\n if ( isComplete ) {\n this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' );\n this.unbindEvents();\n }\n};\n\nBackground.prototype.unbindEvents = function() {\n this.img.removeEventListener( 'load', this );\n this.img.removeEventListener( 'error', this );\n};\n\nBackground.prototype.confirm = function( isLoaded, message ) {\n this.isLoaded = isLoaded;\n this.emitEvent( 'progress', [ this, this.element, message ] );\n};\n\n// -------------------------- jQuery -------------------------- //\n\nImagesLoaded.makeJQueryPlugin = function( jQuery ) {\n jQuery = jQuery || window.jQuery;\n if ( !jQuery ) {\n return;\n }\n // set local variable\n $ = jQuery;\n // $().imagesLoaded()\n $.fn.imagesLoaded = function( options, callback ) {\n var instance = new ImagesLoaded( this, options, callback );\n return instance.jqDeferred.promise( $(this) );\n };\n};\n// try making plugin\nImagesLoaded.makeJQueryPlugin();\n\n// -------------------------- -------------------------- //\n\nreturn ImagesLoaded;\n\n});\n","/**\n * Copyright 2016 Google Inc. All Rights Reserved.\n *\n * Licensed under the W3C SOFTWARE AND DOCUMENT NOTICE AND LICENSE.\n *\n * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n *\n */\n(function() {\n'use strict';\n\n// Exit early if we're not running in a browser.\nif (typeof window !== 'object') {\n return;\n}\n\n// Exit early if all IntersectionObserver and IntersectionObserverEntry\n// features are natively supported.\nif ('IntersectionObserver' in window &&\n 'IntersectionObserverEntry' in window &&\n 'intersectionRatio' in window.IntersectionObserverEntry.prototype) {\n\n // Minimal polyfill for Edge 15's lack of `isIntersecting`\n // See: https://github.com/w3c/IntersectionObserver/issues/211\n if (!('isIntersecting' in window.IntersectionObserverEntry.prototype)) {\n Object.defineProperty(window.IntersectionObserverEntry.prototype,\n 'isIntersecting', {\n get: function () {\n return this.intersectionRatio > 0;\n }\n });\n }\n return;\n}\n\n\n/**\n * A local reference to the document.\n */\nvar document = window.document;\n\n\n/**\n * An IntersectionObserver registry. This registry exists to hold a strong\n * reference to IntersectionObserver instances currently observing a target\n * element. Without this registry, instances without another reference may be\n * garbage collected.\n */\nvar registry = [];\n\n\n/**\n * Creates the global IntersectionObserverEntry constructor.\n * https://w3c.github.io/IntersectionObserver/#intersection-observer-entry\n * @param {Object} entry A dictionary of instance properties.\n * @constructor\n */\nfunction IntersectionObserverEntry(entry) {\n this.time = entry.time;\n this.target = entry.target;\n this.rootBounds = entry.rootBounds;\n this.boundingClientRect = entry.boundingClientRect;\n this.intersectionRect = entry.intersectionRect || getEmptyRect();\n this.isIntersecting = !!entry.intersectionRect;\n\n // Calculates the intersection ratio.\n var targetRect = this.boundingClientRect;\n var targetArea = targetRect.width * targetRect.height;\n var intersectionRect = this.intersectionRect;\n var intersectionArea = intersectionRect.width * intersectionRect.height;\n\n // Sets intersection ratio.\n if (targetArea) {\n // Round the intersection ratio to avoid floating point math issues:\n // https://github.com/w3c/IntersectionObserver/issues/324\n this.intersectionRatio = Number((intersectionArea / targetArea).toFixed(4));\n } else {\n // If area is zero and is intersecting, sets to 1, otherwise to 0\n this.intersectionRatio = this.isIntersecting ? 1 : 0;\n }\n}\n\n\n/**\n * Creates the global IntersectionObserver constructor.\n * https://w3c.github.io/IntersectionObserver/#intersection-observer-interface\n * @param {Function} callback The function to be invoked after intersection\n * changes have queued. The function is not invoked if the queue has\n * been emptied by calling the `takeRecords` method.\n * @param {Object=} opt_options Optional configuration options.\n * @constructor\n */\nfunction IntersectionObserver(callback, opt_options) {\n\n var options = opt_options || {};\n\n if (typeof callback != 'function') {\n throw new Error('callback must be a function');\n }\n\n if (options.root && options.root.nodeType != 1) {\n throw new Error('root must be an Element');\n }\n\n // Binds and throttles `this._checkForIntersections`.\n this._checkForIntersections = throttle(\n this._checkForIntersections.bind(this), this.THROTTLE_TIMEOUT);\n\n // Private properties.\n this._callback = callback;\n this._observationTargets = [];\n this._queuedEntries = [];\n this._rootMarginValues = this._parseRootMargin(options.rootMargin);\n\n // Public properties.\n this.thresholds = this._initThresholds(options.threshold);\n this.root = options.root || null;\n this.rootMargin = this._rootMarginValues.map(function(margin) {\n return margin.value + margin.unit;\n }).join(' ');\n}\n\n\n/**\n * The minimum interval within which the document will be checked for\n * intersection changes.\n */\nIntersectionObserver.prototype.THROTTLE_TIMEOUT = 100;\n\n\n/**\n * The frequency in which the polyfill polls for intersection changes.\n * this can be updated on a per instance basis and must be set prior to\n * calling `observe` on the first target.\n */\nIntersectionObserver.prototype.POLL_INTERVAL = null;\n\n/**\n * Use a mutation observer on the root element\n * to detect intersection changes.\n */\nIntersectionObserver.prototype.USE_MUTATION_OBSERVER = true;\n\n\n/**\n * Starts observing a target element for intersection changes based on\n * the thresholds values.\n * @param {Element} target The DOM element to observe.\n */\nIntersectionObserver.prototype.observe = function(target) {\n var isTargetAlreadyObserved = this._observationTargets.some(function(item) {\n return item.element == target;\n });\n\n if (isTargetAlreadyObserved) {\n return;\n }\n\n if (!(target && target.nodeType == 1)) {\n throw new Error('target must be an Element');\n }\n\n this._registerInstance();\n this._observationTargets.push({element: target, entry: null});\n this._monitorIntersections();\n this._checkForIntersections();\n};\n\n\n/**\n * Stops observing a target element for intersection changes.\n * @param {Element} target The DOM element to observe.\n */\nIntersectionObserver.prototype.unobserve = function(target) {\n this._observationTargets =\n this._observationTargets.filter(function(item) {\n\n return item.element != target;\n });\n if (!this._observationTargets.length) {\n this._unmonitorIntersections();\n this._unregisterInstance();\n }\n};\n\n\n/**\n * Stops observing all target elements for intersection changes.\n */\nIntersectionObserver.prototype.disconnect = function() {\n this._observationTargets = [];\n this._unmonitorIntersections();\n this._unregisterInstance();\n};\n\n\n/**\n * Returns any queue entries that have not yet been reported to the\n * callback and clears the queue. This can be used in conjunction with the\n * callback to obtain the absolute most up-to-date intersection information.\n * @return {Array} The currently queued entries.\n */\nIntersectionObserver.prototype.takeRecords = function() {\n var records = this._queuedEntries.slice();\n this._queuedEntries = [];\n return records;\n};\n\n\n/**\n * Accepts the threshold value from the user configuration object and\n * returns a sorted array of unique threshold values. If a value is not\n * between 0 and 1 and error is thrown.\n * @private\n * @param {Array|number=} opt_threshold An optional threshold value or\n * a list of threshold values, defaulting to [0].\n * @return {Array} A sorted list of unique and valid threshold values.\n */\nIntersectionObserver.prototype._initThresholds = function(opt_threshold) {\n var threshold = opt_threshold || [0];\n if (!Array.isArray(threshold)) threshold = [threshold];\n\n return threshold.sort().filter(function(t, i, a) {\n if (typeof t != 'number' || isNaN(t) || t < 0 || t > 1) {\n throw new Error('threshold must be a number between 0 and 1 inclusively');\n }\n return t !== a[i - 1];\n });\n};\n\n\n/**\n * Accepts the rootMargin value from the user configuration object\n * and returns an array of the four margin values as an object containing\n * the value and unit properties. If any of the values are not properly\n * formatted or use a unit other than px or %, and error is thrown.\n * @private\n * @param {string=} opt_rootMargin An optional rootMargin value,\n * defaulting to '0px'.\n * @return {Array} An array of margin objects with the keys\n * value and unit.\n */\nIntersectionObserver.prototype._parseRootMargin = function(opt_rootMargin) {\n var marginString = opt_rootMargin || '0px';\n var margins = marginString.split(/\\s+/).map(function(margin) {\n var parts = /^(-?\\d*\\.?\\d+)(px|%)$/.exec(margin);\n if (!parts) {\n throw new Error('rootMargin must be specified in pixels or percent');\n }\n return {value: parseFloat(parts[1]), unit: parts[2]};\n });\n\n // Handles shorthand.\n margins[1] = margins[1] || margins[0];\n margins[2] = margins[2] || margins[0];\n margins[3] = margins[3] || margins[1];\n\n return margins;\n};\n\n\n/**\n * Starts polling for intersection changes if the polling is not already\n * happening, and if the page's visibility state is visible.\n * @private\n */\nIntersectionObserver.prototype._monitorIntersections = function() {\n if (!this._monitoringIntersections) {\n this._monitoringIntersections = true;\n\n // If a poll interval is set, use polling instead of listening to\n // resize and scroll events or DOM mutations.\n if (this.POLL_INTERVAL) {\n this._monitoringInterval = setInterval(\n this._checkForIntersections, this.POLL_INTERVAL);\n }\n else {\n addEvent(window, 'resize', this._checkForIntersections, true);\n addEvent(document, 'scroll', this._checkForIntersections, true);\n\n if (this.USE_MUTATION_OBSERVER && 'MutationObserver' in window) {\n this._domObserver = new MutationObserver(this._checkForIntersections);\n this._domObserver.observe(document, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true\n });\n }\n }\n }\n};\n\n\n/**\n * Stops polling for intersection changes.\n * @private\n */\nIntersectionObserver.prototype._unmonitorIntersections = function() {\n if (this._monitoringIntersections) {\n this._monitoringIntersections = false;\n\n clearInterval(this._monitoringInterval);\n this._monitoringInterval = null;\n\n removeEvent(window, 'resize', this._checkForIntersections, true);\n removeEvent(document, 'scroll', this._checkForIntersections, true);\n\n if (this._domObserver) {\n this._domObserver.disconnect();\n this._domObserver = null;\n }\n }\n};\n\n\n/**\n * Scans each observation target for intersection changes and adds them\n * to the internal entries queue. If new entries are found, it\n * schedules the callback to be invoked.\n * @private\n */\nIntersectionObserver.prototype._checkForIntersections = function() {\n var rootIsInDom = this._rootIsInDom();\n var rootRect = rootIsInDom ? this._getRootRect() : getEmptyRect();\n\n this._observationTargets.forEach(function(item) {\n var target = item.element;\n var targetRect = getBoundingClientRect(target);\n var rootContainsTarget = this._rootContainsTarget(target);\n var oldEntry = item.entry;\n var intersectionRect = rootIsInDom && rootContainsTarget &&\n this._computeTargetAndRootIntersection(target, rootRect);\n\n var newEntry = item.entry = new IntersectionObserverEntry({\n time: now(),\n target: target,\n boundingClientRect: targetRect,\n rootBounds: rootRect,\n intersectionRect: intersectionRect\n });\n\n if (!oldEntry) {\n this._queuedEntries.push(newEntry);\n } else if (rootIsInDom && rootContainsTarget) {\n // If the new entry intersection ratio has crossed any of the\n // thresholds, add a new entry.\n if (this._hasCrossedThreshold(oldEntry, newEntry)) {\n this._queuedEntries.push(newEntry);\n }\n } else {\n // If the root is not in the DOM or target is not contained within\n // root but the previous entry for this target had an intersection,\n // add a new record indicating removal.\n if (oldEntry && oldEntry.isIntersecting) {\n this._queuedEntries.push(newEntry);\n }\n }\n }, this);\n\n if (this._queuedEntries.length) {\n this._callback(this.takeRecords(), this);\n }\n};\n\n\n/**\n * Accepts a target and root rect computes the intersection between then\n * following the algorithm in the spec.\n * TODO(philipwalton): at this time clip-path is not considered.\n * https://w3c.github.io/IntersectionObserver/#calculate-intersection-rect-algo\n * @param {Element} target The target DOM element\n * @param {Object} rootRect The bounding rect of the root after being\n * expanded by the rootMargin value.\n * @return {?Object} The final intersection rect object or undefined if no\n * intersection is found.\n * @private\n */\nIntersectionObserver.prototype._computeTargetAndRootIntersection =\n function(target, rootRect) {\n\n // If the element isn't displayed, an intersection can't happen.\n if (window.getComputedStyle(target).display == 'none') return;\n\n var targetRect = getBoundingClientRect(target);\n var intersectionRect = targetRect;\n var parent = getParentNode(target);\n var atRoot = false;\n\n while (!atRoot) {\n var parentRect = null;\n var parentComputedStyle = parent.nodeType == 1 ?\n window.getComputedStyle(parent) : {};\n\n // If the parent isn't displayed, an intersection can't happen.\n if (parentComputedStyle.display == 'none') return;\n\n if (parent == this.root || parent == document) {\n atRoot = true;\n parentRect = rootRect;\n } else {\n // If the element has a non-visible overflow, and it's not the \n // or element, update the intersection rect.\n // Note: and cannot be clipped to a rect that's not also\n // the document rect, so no need to compute a new intersection.\n if (parent != document.body &&\n parent != document.documentElement &&\n parentComputedStyle.overflow != 'visible') {\n parentRect = getBoundingClientRect(parent);\n }\n }\n\n // If either of the above conditionals set a new parentRect,\n // calculate new intersection data.\n if (parentRect) {\n intersectionRect = computeRectIntersection(parentRect, intersectionRect);\n\n if (!intersectionRect) break;\n }\n parent = getParentNode(parent);\n }\n return intersectionRect;\n};\n\n\n/**\n * Returns the root rect after being expanded by the rootMargin value.\n * @return {Object} The expanded root rect.\n * @private\n */\nIntersectionObserver.prototype._getRootRect = function() {\n var rootRect;\n if (this.root) {\n rootRect = getBoundingClientRect(this.root);\n } else {\n // Use / instead of window since scroll bars affect size.\n var html = document.documentElement;\n var body = document.body;\n rootRect = {\n top: 0,\n left: 0,\n right: html.clientWidth || body.clientWidth,\n width: html.clientWidth || body.clientWidth,\n bottom: html.clientHeight || body.clientHeight,\n height: html.clientHeight || body.clientHeight\n };\n }\n return this._expandRectByRootMargin(rootRect);\n};\n\n\n/**\n * Accepts a rect and expands it by the rootMargin value.\n * @param {Object} rect The rect object to expand.\n * @return {Object} The expanded rect.\n * @private\n */\nIntersectionObserver.prototype._expandRectByRootMargin = function(rect) {\n var margins = this._rootMarginValues.map(function(margin, i) {\n return margin.unit == 'px' ? margin.value :\n margin.value * (i % 2 ? rect.width : rect.height) / 100;\n });\n var newRect = {\n top: rect.top - margins[0],\n right: rect.right + margins[1],\n bottom: rect.bottom + margins[2],\n left: rect.left - margins[3]\n };\n newRect.width = newRect.right - newRect.left;\n newRect.height = newRect.bottom - newRect.top;\n\n return newRect;\n};\n\n\n/**\n * Accepts an old and new entry and returns true if at least one of the\n * threshold values has been crossed.\n * @param {?IntersectionObserverEntry} oldEntry The previous entry for a\n * particular target element or null if no previous entry exists.\n * @param {IntersectionObserverEntry} newEntry The current entry for a\n * particular target element.\n * @return {boolean} Returns true if a any threshold has been crossed.\n * @private\n */\nIntersectionObserver.prototype._hasCrossedThreshold =\n function(oldEntry, newEntry) {\n\n // To make comparing easier, an entry that has a ratio of 0\n // but does not actually intersect is given a value of -1\n var oldRatio = oldEntry && oldEntry.isIntersecting ?\n oldEntry.intersectionRatio || 0 : -1;\n var newRatio = newEntry.isIntersecting ?\n newEntry.intersectionRatio || 0 : -1;\n\n // Ignore unchanged ratios\n if (oldRatio === newRatio) return;\n\n for (var i = 0; i < this.thresholds.length; i++) {\n var threshold = this.thresholds[i];\n\n // Return true if an entry matches a threshold or if the new ratio\n // and the old ratio are on the opposite sides of a threshold.\n if (threshold == oldRatio || threshold == newRatio ||\n threshold < oldRatio !== threshold < newRatio) {\n return true;\n }\n }\n};\n\n\n/**\n * Returns whether or not the root element is an element and is in the DOM.\n * @return {boolean} True if the root element is an element and is in the DOM.\n * @private\n */\nIntersectionObserver.prototype._rootIsInDom = function() {\n return !this.root || containsDeep(document, this.root);\n};\n\n\n/**\n * Returns whether or not the target element is a child of root.\n * @param {Element} target The target element to check.\n * @return {boolean} True if the target element is a child of root.\n * @private\n */\nIntersectionObserver.prototype._rootContainsTarget = function(target) {\n return containsDeep(this.root || document, target);\n};\n\n\n/**\n * Adds the instance to the global IntersectionObserver registry if it isn't\n * already present.\n * @private\n */\nIntersectionObserver.prototype._registerInstance = function() {\n if (registry.indexOf(this) < 0) {\n registry.push(this);\n }\n};\n\n\n/**\n * Removes the instance from the global IntersectionObserver registry.\n * @private\n */\nIntersectionObserver.prototype._unregisterInstance = function() {\n var index = registry.indexOf(this);\n if (index != -1) registry.splice(index, 1);\n};\n\n\n/**\n * Returns the result of the performance.now() method or null in browsers\n * that don't support the API.\n * @return {number} The elapsed time since the page was requested.\n */\nfunction now() {\n return window.performance && performance.now && performance.now();\n}\n\n\n/**\n * Throttles a function and delays its execution, so it's only called at most\n * once within a given time period.\n * @param {Function} fn The function to throttle.\n * @param {number} timeout The amount of time that must pass before the\n * function can be called again.\n * @return {Function} The throttled function.\n */\nfunction throttle(fn, timeout) {\n var timer = null;\n return function () {\n if (!timer) {\n timer = setTimeout(function() {\n fn();\n timer = null;\n }, timeout);\n }\n };\n}\n\n\n/**\n * Adds an event handler to a DOM node ensuring cross-browser compatibility.\n * @param {Node} node The DOM node to add the event handler to.\n * @param {string} event The event name.\n * @param {Function} fn The event handler to add.\n * @param {boolean} opt_useCapture Optionally adds the even to the capture\n * phase. Note: this only works in modern browsers.\n */\nfunction addEvent(node, event, fn, opt_useCapture) {\n if (typeof node.addEventListener == 'function') {\n node.addEventListener(event, fn, opt_useCapture || false);\n }\n else if (typeof node.attachEvent == 'function') {\n node.attachEvent('on' + event, fn);\n }\n}\n\n\n/**\n * Removes a previously added event handler from a DOM node.\n * @param {Node} node The DOM node to remove the event handler from.\n * @param {string} event The event name.\n * @param {Function} fn The event handler to remove.\n * @param {boolean} opt_useCapture If the event handler was added with this\n * flag set to true, it should be set to true here in order to remove it.\n */\nfunction removeEvent(node, event, fn, opt_useCapture) {\n if (typeof node.removeEventListener == 'function') {\n node.removeEventListener(event, fn, opt_useCapture || false);\n }\n else if (typeof node.detatchEvent == 'function') {\n node.detatchEvent('on' + event, fn);\n }\n}\n\n\n/**\n * Returns the intersection between two rect objects.\n * @param {Object} rect1 The first rect.\n * @param {Object} rect2 The second rect.\n * @return {?Object} The intersection rect or undefined if no intersection\n * is found.\n */\nfunction computeRectIntersection(rect1, rect2) {\n var top = Math.max(rect1.top, rect2.top);\n var bottom = Math.min(rect1.bottom, rect2.bottom);\n var left = Math.max(rect1.left, rect2.left);\n var right = Math.min(rect1.right, rect2.right);\n var width = right - left;\n var height = bottom - top;\n\n return (width >= 0 && height >= 0) && {\n top: top,\n bottom: bottom,\n left: left,\n right: right,\n width: width,\n height: height\n };\n}\n\n\n/**\n * Shims the native getBoundingClientRect for compatibility with older IE.\n * @param {Element} el The element whose bounding rect to get.\n * @return {Object} The (possibly shimmed) rect of the element.\n */\nfunction getBoundingClientRect(el) {\n var rect;\n\n try {\n rect = el.getBoundingClientRect();\n } catch (err) {\n // Ignore Windows 7 IE11 \"Unspecified error\"\n // https://github.com/w3c/IntersectionObserver/pull/205\n }\n\n if (!rect) return getEmptyRect();\n\n // Older IE\n if (!(rect.width && rect.height)) {\n rect = {\n top: rect.top,\n right: rect.right,\n bottom: rect.bottom,\n left: rect.left,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n }\n return rect;\n}\n\n\n/**\n * Returns an empty rect object. An empty rect is returned when an element\n * is not in the DOM.\n * @return {Object} The empty rect.\n */\nfunction getEmptyRect() {\n return {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n width: 0,\n height: 0\n };\n}\n\n/**\n * Checks to see if a parent element contains a child element (including inside\n * shadow DOM).\n * @param {Node} parent The parent element.\n * @param {Node} child The child element.\n * @return {boolean} True if the parent node contains the child node.\n */\nfunction containsDeep(parent, child) {\n var node = child;\n while (node) {\n if (node == parent) return true;\n\n node = getParentNode(node);\n }\n return false;\n}\n\n\n/**\n * Gets the parent node of an element or its host element if the parent node\n * is a shadow root.\n * @param {Node} node The node whose parent to get.\n * @return {Node|null} The parent node or null if no parent exists.\n */\nfunction getParentNode(node) {\n var parent = node.parentNode;\n\n if (parent && parent.nodeType == 11 && parent.host) {\n // If the parent is a shadow root, return the host element.\n return parent.host;\n }\n\n if (parent && parent.assignedSlot) {\n // If the parent is distributed in a , return the parent of a slot.\n return parent.assignedSlot.parentNode;\n }\n\n return parent;\n}\n\n\n// Exposes the constructors globally.\nwindow.IntersectionObserver = IntersectionObserver;\nwindow.IntersectionObserverEntry = IntersectionObserverEntry;\n\n}());\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; 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\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _reactDom = require(\"react-dom\");\n\nvar _imagesloaded = _interopRequireDefault(require(\"imagesloaded\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nvar FlickityComponent = /*#__PURE__*/function (_Component) {\n _inherits(FlickityComponent, _Component);\n\n var _super = _createSuper(FlickityComponent);\n\n function FlickityComponent(props) {\n var _this;\n\n _classCallCheck(this, FlickityComponent);\n\n _this = _super.call(this, props);\n _this.state = {\n flickityReady: false,\n flickityCreated: false,\n cellCount: 0\n };\n _this.carousel = null;\n _this.flkty = null;\n return _this;\n }\n\n _createClass(FlickityComponent, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n var _this2 = this;\n\n var _this$props = this.props,\n children = _this$props.children,\n _this$props$options = _this$props.options,\n draggable = _this$props$options.draggable,\n initialIndex = _this$props$options.initialIndex,\n reloadOnUpdate = _this$props.reloadOnUpdate,\n disableImagesLoaded = _this$props.disableImagesLoaded;\n var flickityReady = this.state.flickityReady;\n\n if (reloadOnUpdate || !prevState.flickityReady && flickityReady) {\n var isActive = this.flkty.isActive;\n this.flkty.deactivate();\n this.flkty.selectedIndex = initialIndex || 0;\n this.flkty.options.draggable = draggable === undefined ? children ? children.length > 1 : false : draggable;\n if (isActive) this.flkty.activate();\n\n if (!disableImagesLoaded && this.carousel) {\n (0, _imagesloaded[\"default\"])(this.carousel, function () {\n _this2.flkty.reloadCells();\n });\n }\n } else {\n this.flkty.reloadCells();\n }\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (!canUseDOM) return null;\n\n var Flickity = require('flickity');\n\n var _this$props2 = this.props,\n flickityRef = _this$props2.flickityRef,\n options = _this$props2.options;\n this.flkty = new Flickity(this.carousel, options);\n if (flickityRef) flickityRef(this.flkty);\n\n if (this.props[\"static\"]) {\n this.setReady();\n } else {\n this.setState({\n flickityCreated: true\n });\n }\n }\n }, {\n key: \"setReady\",\n value: function setReady() {\n var _this3 = this;\n\n if (this.state.flickityReady) return;\n\n var setFlickityToReady = function setFlickityToReady() {\n return _this3.setState({\n flickityReady: true\n });\n };\n\n if (this.props.disableImagesLoaded) setFlickityToReady();else (0, _imagesloaded[\"default\"])(this.carousel, setFlickityToReady);\n }\n }, {\n key: \"renderPortal\",\n value: function renderPortal() {\n var _this4 = this;\n\n if (!this.carousel) return null;\n var mountNode = this.carousel.querySelector('.flickity-slider');\n\n if (mountNode) {\n var element = /*#__PURE__*/(0, _reactDom.createPortal)(this.props.children, mountNode);\n setTimeout(function () {\n return _this4.setReady();\n }, 0);\n return element;\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this5 = this;\n\n return /*#__PURE__*/_react[\"default\"].createElement(this.props.elementType, {\n className: this.props.className,\n ref: function ref(c) {\n _this5.carousel = c;\n }\n }, this.props[\"static\"] ? this.props.children : this.renderPortal());\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(props, state) {\n var cellCount = _react[\"default\"].Children.count(props.children);\n\n if (cellCount !== state.cellCount) return {\n flickityReady: false,\n cellCount: cellCount\n };\n return null;\n }\n }]);\n\n return FlickityComponent;\n}(_react.Component);\n\nFlickityComponent.propTypes = {\n children: _propTypes[\"default\"].array,\n className: _propTypes[\"default\"].string,\n disableImagesLoaded: _propTypes[\"default\"].bool,\n elementType: _propTypes[\"default\"].string,\n flickityRef: _propTypes[\"default\"].func,\n options: _propTypes[\"default\"].object,\n reloadOnUpdate: _propTypes[\"default\"].bool,\n \"static\": _propTypes[\"default\"].bool\n};\nFlickityComponent.defaultProps = {\n className: '',\n disableImagesLoaded: false,\n elementType: 'div',\n options: {},\n reloadOnUpdate: false,\n \"static\": false\n};\nvar _default = FlickityComponent;\nexports[\"default\"] = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=index.js.map","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction componentWillMount() {\n // Call this.constructor.gDSFP to support sub-classes.\n var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n if (state !== null && state !== undefined) {\n this.setState(state);\n }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n // Call this.constructor.gDSFP to support sub-classes.\n // Use the setState() updater to ensure state isn't stale in certain edge cases.\n function updater(prevState) {\n var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n return state !== null && state !== undefined ? state : null;\n }\n // Binding \"this\" is important for shallow renderer support.\n this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n try {\n var prevProps = this.props;\n var prevState = this.state;\n this.props = nextProps;\n this.state = nextState;\n this.__reactInternalSnapshotFlag = true;\n this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(\n prevProps,\n prevState\n );\n } finally {\n this.props = prevProps;\n this.state = prevState;\n }\n}\n\n// React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component) {\n var prototype = Component.prototype;\n\n if (!prototype || !prototype.isReactComponent) {\n throw new Error('Can only polyfill class components');\n }\n\n if (\n typeof Component.getDerivedStateFromProps !== 'function' &&\n typeof prototype.getSnapshotBeforeUpdate !== 'function'\n ) {\n return Component;\n }\n\n // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n // Error if any of these lifecycles are present,\n // Because they would work differently between older and newer (16.3+) versions of React.\n var foundWillMountName = null;\n var foundWillReceivePropsName = null;\n var foundWillUpdateName = null;\n if (typeof prototype.componentWillMount === 'function') {\n foundWillMountName = 'componentWillMount';\n } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n foundWillMountName = 'UNSAFE_componentWillMount';\n }\n if (typeof prototype.componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'componentWillReceiveProps';\n } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n }\n if (typeof prototype.componentWillUpdate === 'function') {\n foundWillUpdateName = 'componentWillUpdate';\n } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n }\n if (\n foundWillMountName !== null ||\n foundWillReceivePropsName !== null ||\n foundWillUpdateName !== null\n ) {\n var componentName = Component.displayName || Component.name;\n var newApiName =\n typeof Component.getDerivedStateFromProps === 'function'\n ? 'getDerivedStateFromProps()'\n : 'getSnapshotBeforeUpdate()';\n\n throw Error(\n 'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' +\n componentName +\n ' uses ' +\n newApiName +\n ' but also contains the following legacy lifecycles:' +\n (foundWillMountName !== null ? '\\n ' + foundWillMountName : '') +\n (foundWillReceivePropsName !== null\n ? '\\n ' + foundWillReceivePropsName\n : '') +\n (foundWillUpdateName !== null ? '\\n ' + foundWillUpdateName : '') +\n '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' +\n 'https://fb.me/react-async-component-lifecycle-hooks'\n );\n }\n\n // React <= 16.2 does not support static getDerivedStateFromProps.\n // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n // Newer versions of React will ignore these lifecycles if gDSFP exists.\n if (typeof Component.getDerivedStateFromProps === 'function') {\n prototype.componentWillMount = componentWillMount;\n prototype.componentWillReceiveProps = componentWillReceiveProps;\n }\n\n // React <= 16.2 does not support getSnapshotBeforeUpdate.\n // As a workaround, use cWU to invoke the new lifecycle.\n // Newer versions of React will ignore that lifecycle if gSBU exists.\n if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n if (typeof prototype.componentDidUpdate !== 'function') {\n throw new Error(\n 'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'\n );\n }\n\n prototype.componentWillUpdate = componentWillUpdate;\n\n var componentDidUpdate = prototype.componentDidUpdate;\n\n prototype.componentDidUpdate = function componentDidUpdatePolyfill(\n prevProps,\n prevState,\n maybeSnapshot\n ) {\n // 16.3+ will not execute our will-update method;\n // It will pass a snapshot value to did-update though.\n // Older versions will require our polyfilled will-update value.\n // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n // Because for <= 15.x versions this might be a \"prevContext\" object.\n // We also can't just check \"__reactInternalSnapshot\",\n // Because get-snapshot might return a falsy value.\n // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n var snapshot = this.__reactInternalSnapshotFlag\n ? this.__reactInternalSnapshot\n : maybeSnapshot;\n\n componentDidUpdate.call(this, prevProps, prevState, snapshot);\n };\n }\n\n return Component;\n}\n\nexport { polyfill };\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.bodyOpenClassName = exports.portalClassName = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require(\"react-dom\");\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _ModalPortal = require(\"./ModalPortal\");\n\nvar _ModalPortal2 = _interopRequireDefault(_ModalPortal);\n\nvar _ariaAppHider = require(\"../helpers/ariaAppHider\");\n\nvar ariaAppHider = _interopRequireWildcard(_ariaAppHider);\n\nvar _safeHTMLElement = require(\"../helpers/safeHTMLElement\");\n\nvar _safeHTMLElement2 = _interopRequireDefault(_safeHTMLElement);\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar portalClassName = exports.portalClassName = \"ReactModalPortal\";\nvar bodyOpenClassName = exports.bodyOpenClassName = \"ReactModal__Body--open\";\n\nvar isReact16 = _safeHTMLElement.canUseDOM && _reactDom2.default.createPortal !== undefined;\n\nvar createHTMLElement = function createHTMLElement(name) {\n return document.createElement(name);\n};\n\nvar getCreatePortal = function getCreatePortal() {\n return isReact16 ? _reactDom2.default.createPortal : _reactDom2.default.unstable_renderSubtreeIntoContainer;\n};\n\nfunction getParentElement(parentSelector) {\n return parentSelector();\n}\n\nvar Modal = function (_Component) {\n _inherits(Modal, _Component);\n\n function Modal() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Modal);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Modal.__proto__ || Object.getPrototypeOf(Modal)).call.apply(_ref, [this].concat(args))), _this), _this.removePortal = function () {\n !isReact16 && _reactDom2.default.unmountComponentAtNode(_this.node);\n var parent = getParentElement(_this.props.parentSelector);\n if (parent && parent.contains(_this.node)) {\n parent.removeChild(_this.node);\n } else {\n // eslint-disable-next-line no-console\n console.warn('React-Modal: \"parentSelector\" prop did not returned any DOM ' + \"element. Make sure that the parent element is unmounted to \" + \"avoid any memory leaks.\");\n }\n }, _this.portalRef = function (ref) {\n _this.portal = ref;\n }, _this.renderPortal = function (props) {\n var createPortal = getCreatePortal();\n var portal = createPortal(_this, _react2.default.createElement(_ModalPortal2.default, _extends({ defaultStyles: Modal.defaultStyles }, props)), _this.node);\n _this.portalRef(portal);\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(Modal, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (!_safeHTMLElement.canUseDOM) return;\n\n if (!isReact16) {\n this.node = createHTMLElement(\"div\");\n }\n this.node.className = this.props.portalClassName;\n\n var parent = getParentElement(this.props.parentSelector);\n parent.appendChild(this.node);\n\n !isReact16 && this.renderPortal(this.props);\n }\n }, {\n key: \"getSnapshotBeforeUpdate\",\n value: function getSnapshotBeforeUpdate(prevProps) {\n var prevParent = getParentElement(prevProps.parentSelector);\n var nextParent = getParentElement(this.props.parentSelector);\n return { prevParent: prevParent, nextParent: nextParent };\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, _, snapshot) {\n if (!_safeHTMLElement.canUseDOM) return;\n var _props = this.props,\n isOpen = _props.isOpen,\n portalClassName = _props.portalClassName;\n\n\n if (prevProps.portalClassName !== portalClassName) {\n this.node.className = portalClassName;\n }\n\n var prevParent = snapshot.prevParent,\n nextParent = snapshot.nextParent;\n\n if (nextParent !== prevParent) {\n prevParent.removeChild(this.node);\n nextParent.appendChild(this.node);\n }\n\n // Stop unnecessary renders if modal is remaining closed\n if (!prevProps.isOpen && !isOpen) return;\n\n !isReact16 && this.renderPortal(this.props);\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (!_safeHTMLElement.canUseDOM || !this.node || !this.portal) return;\n\n var state = this.portal.state;\n var now = Date.now();\n var closesAt = state.isOpen && this.props.closeTimeoutMS && (state.closesAt || now + this.props.closeTimeoutMS);\n\n if (closesAt) {\n if (!state.beforeClose) {\n this.portal.closeWithTimeout();\n }\n\n setTimeout(this.removePortal, closesAt - now);\n } else {\n this.removePortal();\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n if (!_safeHTMLElement.canUseDOM || !isReact16) {\n return null;\n }\n\n if (!this.node && isReact16) {\n this.node = createHTMLElement(\"div\");\n }\n\n var createPortal = getCreatePortal();\n return createPortal(_react2.default.createElement(_ModalPortal2.default, _extends({\n ref: this.portalRef,\n defaultStyles: Modal.defaultStyles\n }, this.props)), this.node);\n }\n }], [{\n key: \"setAppElement\",\n value: function setAppElement(element) {\n ariaAppHider.setElement(element);\n }\n\n /* eslint-disable react/no-unused-prop-types */\n\n /* eslint-enable react/no-unused-prop-types */\n\n }]);\n\n return Modal;\n}(_react.Component);\n\nModal.propTypes = {\n isOpen: _propTypes2.default.bool.isRequired,\n style: _propTypes2.default.shape({\n content: _propTypes2.default.object,\n overlay: _propTypes2.default.object\n }),\n portalClassName: _propTypes2.default.string,\n bodyOpenClassName: _propTypes2.default.string,\n htmlOpenClassName: _propTypes2.default.string,\n className: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.shape({\n base: _propTypes2.default.string.isRequired,\n afterOpen: _propTypes2.default.string.isRequired,\n beforeClose: _propTypes2.default.string.isRequired\n })]),\n overlayClassName: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.shape({\n base: _propTypes2.default.string.isRequired,\n afterOpen: _propTypes2.default.string.isRequired,\n beforeClose: _propTypes2.default.string.isRequired\n })]),\n appElement: _propTypes2.default.oneOfType([_propTypes2.default.instanceOf(_safeHTMLElement2.default), _propTypes2.default.instanceOf(_safeHTMLElement.SafeHTMLCollection), _propTypes2.default.instanceOf(_safeHTMLElement.SafeNodeList), _propTypes2.default.arrayOf(_propTypes2.default.instanceOf(_safeHTMLElement2.default))]),\n onAfterOpen: _propTypes2.default.func,\n onRequestClose: _propTypes2.default.func,\n closeTimeoutMS: _propTypes2.default.number,\n ariaHideApp: _propTypes2.default.bool,\n shouldFocusAfterRender: _propTypes2.default.bool,\n shouldCloseOnOverlayClick: _propTypes2.default.bool,\n shouldReturnFocusAfterClose: _propTypes2.default.bool,\n preventScroll: _propTypes2.default.bool,\n parentSelector: _propTypes2.default.func,\n aria: _propTypes2.default.object,\n data: _propTypes2.default.object,\n role: _propTypes2.default.string,\n contentLabel: _propTypes2.default.string,\n shouldCloseOnEsc: _propTypes2.default.bool,\n overlayRef: _propTypes2.default.func,\n contentRef: _propTypes2.default.func,\n id: _propTypes2.default.string,\n overlayElement: _propTypes2.default.func,\n contentElement: _propTypes2.default.func\n};\nModal.defaultProps = {\n isOpen: false,\n portalClassName: portalClassName,\n bodyOpenClassName: bodyOpenClassName,\n role: \"dialog\",\n ariaHideApp: true,\n closeTimeoutMS: 0,\n shouldFocusAfterRender: true,\n shouldCloseOnEsc: true,\n shouldCloseOnOverlayClick: true,\n shouldReturnFocusAfterClose: true,\n preventScroll: false,\n parentSelector: function parentSelector() {\n return document.body;\n },\n overlayElement: function overlayElement(props, contentEl) {\n return _react2.default.createElement(\n \"div\",\n props,\n contentEl\n );\n },\n contentElement: function contentElement(props, children) {\n return _react2.default.createElement(\n \"div\",\n props,\n children\n );\n }\n};\nModal.defaultStyles = {\n overlay: {\n position: \"fixed\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: \"rgba(255, 255, 255, 0.75)\"\n },\n content: {\n position: \"absolute\",\n top: \"40px\",\n left: \"40px\",\n right: \"40px\",\n bottom: \"40px\",\n border: \"1px solid #ccc\",\n background: \"#fff\",\n overflow: \"auto\",\n WebkitOverflowScrolling: \"touch\",\n borderRadius: \"4px\",\n outline: \"none\",\n padding: \"20px\"\n }\n};\n\n\n(0, _reactLifecyclesCompat.polyfill)(Modal);\n\nif (process.env.NODE_ENV !== \"production\") {\n Modal.setCreateHTMLElement = function (fn) {\n return createHTMLElement = fn;\n };\n}\n\nexports.default = Modal;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require(\"react\");\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _focusManager = require(\"../helpers/focusManager\");\n\nvar focusManager = _interopRequireWildcard(_focusManager);\n\nvar _scopeTab = require(\"../helpers/scopeTab\");\n\nvar _scopeTab2 = _interopRequireDefault(_scopeTab);\n\nvar _ariaAppHider = require(\"../helpers/ariaAppHider\");\n\nvar ariaAppHider = _interopRequireWildcard(_ariaAppHider);\n\nvar _classList = require(\"../helpers/classList\");\n\nvar classList = _interopRequireWildcard(_classList);\n\nvar _safeHTMLElement = require(\"../helpers/safeHTMLElement\");\n\nvar _safeHTMLElement2 = _interopRequireDefault(_safeHTMLElement);\n\nvar _portalOpenInstances = require(\"../helpers/portalOpenInstances\");\n\nvar _portalOpenInstances2 = _interopRequireDefault(_portalOpenInstances);\n\nrequire(\"../helpers/bodyTrap\");\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n// so that our CSS is statically analyzable\nvar CLASS_NAMES = {\n overlay: \"ReactModal__Overlay\",\n content: \"ReactModal__Content\"\n};\n\n/**\n * We need to support the deprecated `KeyboardEvent.keyCode` in addition to\n * `KeyboardEvent.code` for apps that still support IE11. Can be removed when\n * `react-modal` only supports React >18 (which dropped IE support).\n */\nvar isTabKey = function isTabKey(event) {\n return event.code === \"Tab\" || event.keyCode === 9;\n};\nvar isEscKey = function isEscKey(event) {\n return event.code === \"Escape\" || event.keyCode === 27;\n};\n\nvar ariaHiddenInstances = 0;\n\nvar ModalPortal = function (_Component) {\n _inherits(ModalPortal, _Component);\n\n function ModalPortal(props) {\n _classCallCheck(this, ModalPortal);\n\n var _this = _possibleConstructorReturn(this, (ModalPortal.__proto__ || Object.getPrototypeOf(ModalPortal)).call(this, props));\n\n _this.setOverlayRef = function (overlay) {\n _this.overlay = overlay;\n _this.props.overlayRef && _this.props.overlayRef(overlay);\n };\n\n _this.setContentRef = function (content) {\n _this.content = content;\n _this.props.contentRef && _this.props.contentRef(content);\n };\n\n _this.afterClose = function () {\n var _this$props = _this.props,\n appElement = _this$props.appElement,\n ariaHideApp = _this$props.ariaHideApp,\n htmlOpenClassName = _this$props.htmlOpenClassName,\n bodyOpenClassName = _this$props.bodyOpenClassName,\n parentSelector = _this$props.parentSelector;\n\n\n var parentDocument = parentSelector && parentSelector().ownerDocument || document;\n\n // Remove classes.\n bodyOpenClassName && classList.remove(parentDocument.body, bodyOpenClassName);\n\n htmlOpenClassName && classList.remove(parentDocument.getElementsByTagName(\"html\")[0], htmlOpenClassName);\n\n // Reset aria-hidden attribute if all modals have been removed\n if (ariaHideApp && ariaHiddenInstances > 0) {\n ariaHiddenInstances -= 1;\n\n if (ariaHiddenInstances === 0) {\n ariaAppHider.show(appElement);\n }\n }\n\n if (_this.props.shouldFocusAfterRender) {\n if (_this.props.shouldReturnFocusAfterClose) {\n focusManager.returnFocus(_this.props.preventScroll);\n focusManager.teardownScopedFocus();\n } else {\n focusManager.popWithoutFocus();\n }\n }\n\n if (_this.props.onAfterClose) {\n _this.props.onAfterClose();\n }\n\n _portalOpenInstances2.default.deregister(_this);\n };\n\n _this.open = function () {\n _this.beforeOpen();\n if (_this.state.afterOpen && _this.state.beforeClose) {\n clearTimeout(_this.closeTimer);\n _this.setState({ beforeClose: false });\n } else {\n if (_this.props.shouldFocusAfterRender) {\n focusManager.setupScopedFocus(_this.node);\n focusManager.markForFocusLater();\n }\n\n _this.setState({ isOpen: true }, function () {\n _this.openAnimationFrame = requestAnimationFrame(function () {\n _this.setState({ afterOpen: true });\n\n if (_this.props.isOpen && _this.props.onAfterOpen) {\n _this.props.onAfterOpen({\n overlayEl: _this.overlay,\n contentEl: _this.content\n });\n }\n });\n });\n }\n };\n\n _this.close = function () {\n if (_this.props.closeTimeoutMS > 0) {\n _this.closeWithTimeout();\n } else {\n _this.closeWithoutTimeout();\n }\n };\n\n _this.focusContent = function () {\n return _this.content && !_this.contentHasFocus() && _this.content.focus({ preventScroll: true });\n };\n\n _this.closeWithTimeout = function () {\n var closesAt = Date.now() + _this.props.closeTimeoutMS;\n _this.setState({ beforeClose: true, closesAt: closesAt }, function () {\n _this.closeTimer = setTimeout(_this.closeWithoutTimeout, _this.state.closesAt - Date.now());\n });\n };\n\n _this.closeWithoutTimeout = function () {\n _this.setState({\n beforeClose: false,\n isOpen: false,\n afterOpen: false,\n closesAt: null\n }, _this.afterClose);\n };\n\n _this.handleKeyDown = function (event) {\n if (isTabKey(event)) {\n (0, _scopeTab2.default)(_this.content, event);\n }\n\n if (_this.props.shouldCloseOnEsc && isEscKey(event)) {\n event.stopPropagation();\n _this.requestClose(event);\n }\n };\n\n _this.handleOverlayOnClick = function (event) {\n if (_this.shouldClose === null) {\n _this.shouldClose = true;\n }\n\n if (_this.shouldClose && _this.props.shouldCloseOnOverlayClick) {\n if (_this.ownerHandlesClose()) {\n _this.requestClose(event);\n } else {\n _this.focusContent();\n }\n }\n _this.shouldClose = null;\n };\n\n _this.handleContentOnMouseUp = function () {\n _this.shouldClose = false;\n };\n\n _this.handleOverlayOnMouseDown = function (event) {\n if (!_this.props.shouldCloseOnOverlayClick && event.target == _this.overlay) {\n event.preventDefault();\n }\n };\n\n _this.handleContentOnClick = function () {\n _this.shouldClose = false;\n };\n\n _this.handleContentOnMouseDown = function () {\n _this.shouldClose = false;\n };\n\n _this.requestClose = function (event) {\n return _this.ownerHandlesClose() && _this.props.onRequestClose(event);\n };\n\n _this.ownerHandlesClose = function () {\n return _this.props.onRequestClose;\n };\n\n _this.shouldBeClosed = function () {\n return !_this.state.isOpen && !_this.state.beforeClose;\n };\n\n _this.contentHasFocus = function () {\n return document.activeElement === _this.content || _this.content.contains(document.activeElement);\n };\n\n _this.buildClassName = function (which, additional) {\n var classNames = (typeof additional === \"undefined\" ? \"undefined\" : _typeof(additional)) === \"object\" ? additional : {\n base: CLASS_NAMES[which],\n afterOpen: CLASS_NAMES[which] + \"--after-open\",\n beforeClose: CLASS_NAMES[which] + \"--before-close\"\n };\n var className = classNames.base;\n if (_this.state.afterOpen) {\n className = className + \" \" + classNames.afterOpen;\n }\n if (_this.state.beforeClose) {\n className = className + \" \" + classNames.beforeClose;\n }\n return typeof additional === \"string\" && additional ? className + \" \" + additional : className;\n };\n\n _this.attributesFromObject = function (prefix, items) {\n return Object.keys(items).reduce(function (acc, name) {\n acc[prefix + \"-\" + name] = items[name];\n return acc;\n }, {});\n };\n\n _this.state = {\n afterOpen: false,\n beforeClose: false\n };\n\n _this.shouldClose = null;\n _this.moveFromContentToOverlay = null;\n return _this;\n }\n\n _createClass(ModalPortal, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (this.props.isOpen) {\n this.open();\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n if (process.env.NODE_ENV !== \"production\") {\n if (prevProps.bodyOpenClassName !== this.props.bodyOpenClassName) {\n // eslint-disable-next-line no-console\n console.warn('React-Modal: \"bodyOpenClassName\" prop has been modified. ' + \"This may cause unexpected behavior when multiple modals are open.\");\n }\n if (prevProps.htmlOpenClassName !== this.props.htmlOpenClassName) {\n // eslint-disable-next-line no-console\n console.warn('React-Modal: \"htmlOpenClassName\" prop has been modified. ' + \"This may cause unexpected behavior when multiple modals are open.\");\n }\n }\n\n if (this.props.isOpen && !prevProps.isOpen) {\n this.open();\n } else if (!this.props.isOpen && prevProps.isOpen) {\n this.close();\n }\n\n // Focus only needs to be set once when the modal is being opened\n if (this.props.shouldFocusAfterRender && this.state.isOpen && !prevState.isOpen) {\n this.focusContent();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this.state.isOpen) {\n this.afterClose();\n }\n clearTimeout(this.closeTimer);\n cancelAnimationFrame(this.openAnimationFrame);\n }\n }, {\n key: \"beforeOpen\",\n value: function beforeOpen() {\n var _props = this.props,\n appElement = _props.appElement,\n ariaHideApp = _props.ariaHideApp,\n htmlOpenClassName = _props.htmlOpenClassName,\n bodyOpenClassName = _props.bodyOpenClassName,\n parentSelector = _props.parentSelector;\n\n\n var parentDocument = parentSelector && parentSelector().ownerDocument || document;\n\n // Add classes.\n bodyOpenClassName && classList.add(parentDocument.body, bodyOpenClassName);\n\n htmlOpenClassName && classList.add(parentDocument.getElementsByTagName(\"html\")[0], htmlOpenClassName);\n\n if (ariaHideApp) {\n ariaHiddenInstances += 1;\n ariaAppHider.hide(appElement);\n }\n\n _portalOpenInstances2.default.register(this);\n }\n\n // Don't steal focus from inner elements\n\n }, {\n key: \"render\",\n value: function render() {\n var _props2 = this.props,\n id = _props2.id,\n className = _props2.className,\n overlayClassName = _props2.overlayClassName,\n defaultStyles = _props2.defaultStyles,\n children = _props2.children;\n\n var contentStyles = className ? {} : defaultStyles.content;\n var overlayStyles = overlayClassName ? {} : defaultStyles.overlay;\n\n if (this.shouldBeClosed()) {\n return null;\n }\n\n var overlayProps = {\n ref: this.setOverlayRef,\n className: this.buildClassName(\"overlay\", overlayClassName),\n style: _extends({}, overlayStyles, this.props.style.overlay),\n onClick: this.handleOverlayOnClick,\n onMouseDown: this.handleOverlayOnMouseDown\n };\n\n var contentProps = _extends({\n id: id,\n ref: this.setContentRef,\n style: _extends({}, contentStyles, this.props.style.content),\n className: this.buildClassName(\"content\", className),\n tabIndex: \"-1\",\n onKeyDown: this.handleKeyDown,\n onMouseDown: this.handleContentOnMouseDown,\n onMouseUp: this.handleContentOnMouseUp,\n onClick: this.handleContentOnClick,\n role: this.props.role,\n \"aria-label\": this.props.contentLabel\n }, this.attributesFromObject(\"aria\", _extends({ modal: true }, this.props.aria)), this.attributesFromObject(\"data\", this.props.data || {}), {\n \"data-testid\": this.props.testId\n });\n\n var contentElement = this.props.contentElement(contentProps, children);\n return this.props.overlayElement(overlayProps, contentElement);\n }\n }]);\n\n return ModalPortal;\n}(_react.Component);\n\nModalPortal.defaultProps = {\n style: {\n overlay: {},\n content: {}\n },\n defaultStyles: {}\n};\nModalPortal.propTypes = {\n isOpen: _propTypes2.default.bool.isRequired,\n defaultStyles: _propTypes2.default.shape({\n content: _propTypes2.default.object,\n overlay: _propTypes2.default.object\n }),\n style: _propTypes2.default.shape({\n content: _propTypes2.default.object,\n overlay: _propTypes2.default.object\n }),\n className: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.object]),\n overlayClassName: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.object]),\n parentSelector: _propTypes2.default.func,\n bodyOpenClassName: _propTypes2.default.string,\n htmlOpenClassName: _propTypes2.default.string,\n ariaHideApp: _propTypes2.default.bool,\n appElement: _propTypes2.default.oneOfType([_propTypes2.default.instanceOf(_safeHTMLElement2.default), _propTypes2.default.instanceOf(_safeHTMLElement.SafeHTMLCollection), _propTypes2.default.instanceOf(_safeHTMLElement.SafeNodeList), _propTypes2.default.arrayOf(_propTypes2.default.instanceOf(_safeHTMLElement2.default))]),\n onAfterOpen: _propTypes2.default.func,\n onAfterClose: _propTypes2.default.func,\n onRequestClose: _propTypes2.default.func,\n closeTimeoutMS: _propTypes2.default.number,\n shouldFocusAfterRender: _propTypes2.default.bool,\n shouldCloseOnOverlayClick: _propTypes2.default.bool,\n shouldReturnFocusAfterClose: _propTypes2.default.bool,\n preventScroll: _propTypes2.default.bool,\n role: _propTypes2.default.string,\n contentLabel: _propTypes2.default.string,\n aria: _propTypes2.default.object,\n data: _propTypes2.default.object,\n children: _propTypes2.default.node,\n shouldCloseOnEsc: _propTypes2.default.bool,\n overlayRef: _propTypes2.default.func,\n contentRef: _propTypes2.default.func,\n id: _propTypes2.default.string,\n overlayElement: _propTypes2.default.func,\n contentElement: _propTypes2.default.func,\n testId: _propTypes2.default.string\n};\nexports.default = ModalPortal;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.resetState = resetState;\nexports.log = log;\nexports.assertNodeList = assertNodeList;\nexports.setElement = setElement;\nexports.validateElement = validateElement;\nexports.hide = hide;\nexports.show = show;\nexports.documentNotReadyOrSSRTesting = documentNotReadyOrSSRTesting;\n\nvar _warning = require(\"warning\");\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _safeHTMLElement = require(\"./safeHTMLElement\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar globalElement = null;\n\n/* eslint-disable no-console */\n/* istanbul ignore next */\nfunction resetState() {\n if (globalElement) {\n if (globalElement.removeAttribute) {\n globalElement.removeAttribute(\"aria-hidden\");\n } else if (globalElement.length != null) {\n globalElement.forEach(function (element) {\n return element.removeAttribute(\"aria-hidden\");\n });\n } else {\n document.querySelectorAll(globalElement).forEach(function (element) {\n return element.removeAttribute(\"aria-hidden\");\n });\n }\n }\n globalElement = null;\n}\n\n/* istanbul ignore next */\nfunction log() {\n if (process.env.NODE_ENV !== \"production\") {\n var check = globalElement || {};\n console.log(\"ariaAppHider ----------\");\n console.log(check.nodeName, check.className, check.id);\n console.log(\"end ariaAppHider ----------\");\n }\n}\n/* eslint-enable no-console */\n\nfunction assertNodeList(nodeList, selector) {\n if (!nodeList || !nodeList.length) {\n throw new Error(\"react-modal: No elements were found for selector \" + selector + \".\");\n }\n}\n\nfunction setElement(element) {\n var useElement = element;\n if (typeof useElement === \"string\" && _safeHTMLElement.canUseDOM) {\n var el = document.querySelectorAll(useElement);\n assertNodeList(el, useElement);\n useElement = el;\n }\n globalElement = useElement || globalElement;\n return globalElement;\n}\n\nfunction validateElement(appElement) {\n var el = appElement || globalElement;\n if (el) {\n return Array.isArray(el) || el instanceof HTMLCollection || el instanceof NodeList ? el : [el];\n } else {\n (0, _warning2.default)(false, [\"react-modal: App element is not defined.\", \"Please use `Modal.setAppElement(el)` or set `appElement={el}`.\", \"This is needed so screen readers don't see main content\", \"when modal is opened. It is not recommended, but you can opt-out\", \"by setting `ariaHideApp={false}`.\"].join(\" \"));\n\n return [];\n }\n}\n\nfunction hide(appElement) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = validateElement(appElement)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var el = _step.value;\n\n el.setAttribute(\"aria-hidden\", \"true\");\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n}\n\nfunction show(appElement) {\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = validateElement(appElement)[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var el = _step2.value;\n\n el.removeAttribute(\"aria-hidden\");\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n}\n\nfunction documentNotReadyOrSSRTesting() {\n globalElement = null;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.resetState = resetState;\nexports.log = log;\n\nvar _portalOpenInstances = require(\"./portalOpenInstances\");\n\nvar _portalOpenInstances2 = _interopRequireDefault(_portalOpenInstances);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Body focus trap see Issue #742\n\nvar before = void 0,\n after = void 0,\n instances = [];\n\n/* eslint-disable no-console */\n/* istanbul ignore next */\nfunction resetState() {\n var _arr = [before, after];\n\n for (var _i = 0; _i < _arr.length; _i++) {\n var item = _arr[_i];\n if (!item) continue;\n item.parentNode && item.parentNode.removeChild(item);\n }\n before = after = null;\n instances = [];\n}\n\n/* istanbul ignore next */\nfunction log() {\n console.log(\"bodyTrap ----------\");\n console.log(instances.length);\n var _arr2 = [before, after];\n for (var _i2 = 0; _i2 < _arr2.length; _i2++) {\n var item = _arr2[_i2];\n var check = item || {};\n console.log(check.nodeName, check.className, check.id);\n }\n console.log(\"edn bodyTrap ----------\");\n}\n/* eslint-enable no-console */\n\nfunction focusContent() {\n if (instances.length === 0) {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(\"React-Modal: Open instances > 0 expected\");\n }\n return;\n }\n instances[instances.length - 1].focusContent();\n}\n\nfunction bodyTrap(eventType, openInstances) {\n if (!before && !after) {\n before = document.createElement(\"div\");\n before.setAttribute(\"data-react-modal-body-trap\", \"\");\n before.style.position = \"absolute\";\n before.style.opacity = \"0\";\n before.setAttribute(\"tabindex\", \"0\");\n before.addEventListener(\"focus\", focusContent);\n after = before.cloneNode();\n after.addEventListener(\"focus\", focusContent);\n }\n\n instances = openInstances;\n\n if (instances.length > 0) {\n // Add focus trap\n if (document.body.firstChild !== before) {\n document.body.insertBefore(before, document.body.firstChild);\n }\n if (document.body.lastChild !== after) {\n document.body.appendChild(after);\n }\n } else {\n // Remove focus trap\n if (before.parentElement) {\n before.parentElement.removeChild(before);\n }\n if (after.parentElement) {\n after.parentElement.removeChild(after);\n }\n }\n}\n\n_portalOpenInstances2.default.subscribe(bodyTrap);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.resetState = resetState;\nexports.log = log;\nvar htmlClassList = {};\nvar docBodyClassList = {};\n\n/* eslint-disable no-console */\n/* istanbul ignore next */\nfunction removeClass(at, cls) {\n at.classList.remove(cls);\n}\n\n/* istanbul ignore next */\nfunction resetState() {\n var htmlElement = document.getElementsByTagName(\"html\")[0];\n for (var cls in htmlClassList) {\n removeClass(htmlElement, htmlClassList[cls]);\n }\n\n var body = document.body;\n for (var _cls in docBodyClassList) {\n removeClass(body, docBodyClassList[_cls]);\n }\n\n htmlClassList = {};\n docBodyClassList = {};\n}\n\n/* istanbul ignore next */\nfunction log() {\n if (process.env.NODE_ENV !== \"production\") {\n var classes = document.getElementsByTagName(\"html\")[0].className;\n var buffer = \"Show tracked classes:\\n\\n\";\n\n buffer += \" (\" + classes + \"):\\n \";\n for (var x in htmlClassList) {\n buffer += \" \" + x + \" \" + htmlClassList[x] + \"\\n \";\n }\n\n classes = document.body.className;\n\n buffer += \"\\n\\ndoc.body (\" + classes + \"):\\n \";\n for (var _x in docBodyClassList) {\n buffer += \" \" + _x + \" \" + docBodyClassList[_x] + \"\\n \";\n }\n\n buffer += \"\\n\";\n\n console.log(buffer);\n }\n}\n/* eslint-enable no-console */\n\n/**\n * Track the number of reference of a class.\n * @param {object} poll The poll to receive the reference.\n * @param {string} className The class name.\n * @return {string}\n */\nvar incrementReference = function incrementReference(poll, className) {\n if (!poll[className]) {\n poll[className] = 0;\n }\n poll[className] += 1;\n return className;\n};\n\n/**\n * Drop the reference of a class.\n * @param {object} poll The poll to receive the reference.\n * @param {string} className The class name.\n * @return {string}\n */\nvar decrementReference = function decrementReference(poll, className) {\n if (poll[className]) {\n poll[className] -= 1;\n }\n return className;\n};\n\n/**\n * Track a class and add to the given class list.\n * @param {Object} classListRef A class list of an element.\n * @param {Object} poll The poll to be used.\n * @param {Array} classes The list of classes to be tracked.\n */\nvar trackClass = function trackClass(classListRef, poll, classes) {\n classes.forEach(function (className) {\n incrementReference(poll, className);\n classListRef.add(className);\n });\n};\n\n/**\n * Untrack a class and remove from the given class list if the reference\n * reaches 0.\n * @param {Object} classListRef A class list of an element.\n * @param {Object} poll The poll to be used.\n * @param {Array} classes The list of classes to be untracked.\n */\nvar untrackClass = function untrackClass(classListRef, poll, classes) {\n classes.forEach(function (className) {\n decrementReference(poll, className);\n poll[className] === 0 && classListRef.remove(className);\n });\n};\n\n/**\n * Public inferface to add classes to the document.body.\n * @param {string} bodyClass The class string to be added.\n * It may contain more then one class\n * with ' ' as separator.\n */\nvar add = exports.add = function add(element, classString) {\n return trackClass(element.classList, element.nodeName.toLowerCase() == \"html\" ? htmlClassList : docBodyClassList, classString.split(\" \"));\n};\n\n/**\n * Public inferface to remove classes from the document.body.\n * @param {string} bodyClass The class string to be added.\n * It may contain more then one class\n * with ' ' as separator.\n */\nvar remove = exports.remove = function remove(element, classString) {\n return untrackClass(element.classList, element.nodeName.toLowerCase() == \"html\" ? htmlClassList : docBodyClassList, classString.split(\" \"));\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.resetState = resetState;\nexports.log = log;\nexports.handleBlur = handleBlur;\nexports.handleFocus = handleFocus;\nexports.markForFocusLater = markForFocusLater;\nexports.returnFocus = returnFocus;\nexports.popWithoutFocus = popWithoutFocus;\nexports.setupScopedFocus = setupScopedFocus;\nexports.teardownScopedFocus = teardownScopedFocus;\n\nvar _tabbable = require(\"../helpers/tabbable\");\n\nvar _tabbable2 = _interopRequireDefault(_tabbable);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar focusLaterElements = [];\nvar modalElement = null;\nvar needToFocus = false;\n\n/* eslint-disable no-console */\n/* istanbul ignore next */\nfunction resetState() {\n focusLaterElements = [];\n}\n\n/* istanbul ignore next */\nfunction log() {\n if (process.env.NODE_ENV !== \"production\") {\n console.log(\"focusManager ----------\");\n focusLaterElements.forEach(function (f) {\n var check = f || {};\n console.log(check.nodeName, check.className, check.id);\n });\n console.log(\"end focusManager ----------\");\n }\n}\n/* eslint-enable no-console */\n\nfunction handleBlur() {\n needToFocus = true;\n}\n\nfunction handleFocus() {\n if (needToFocus) {\n needToFocus = false;\n if (!modalElement) {\n return;\n }\n // need to see how jQuery shims document.on('focusin') so we don't need the\n // setTimeout, firefox doesn't support focusin, if it did, we could focus\n // the element outside of a setTimeout. Side-effect of this implementation\n // is that the document.body gets focus, and then we focus our element right\n // after, seems fine.\n setTimeout(function () {\n if (modalElement.contains(document.activeElement)) {\n return;\n }\n var el = (0, _tabbable2.default)(modalElement)[0] || modalElement;\n el.focus();\n }, 0);\n }\n}\n\nfunction markForFocusLater() {\n focusLaterElements.push(document.activeElement);\n}\n\n/* eslint-disable no-console */\nfunction returnFocus() {\n var preventScroll = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n var toFocus = null;\n try {\n if (focusLaterElements.length !== 0) {\n toFocus = focusLaterElements.pop();\n toFocus.focus({ preventScroll: preventScroll });\n }\n return;\n } catch (e) {\n console.warn([\"You tried to return focus to\", toFocus, \"but it is not in the DOM anymore\"].join(\" \"));\n }\n}\n/* eslint-enable no-console */\n\nfunction popWithoutFocus() {\n focusLaterElements.length > 0 && focusLaterElements.pop();\n}\n\nfunction setupScopedFocus(element) {\n modalElement = element;\n\n if (window.addEventListener) {\n window.addEventListener(\"blur\", handleBlur, false);\n document.addEventListener(\"focus\", handleFocus, true);\n } else {\n window.attachEvent(\"onBlur\", handleBlur);\n document.attachEvent(\"onFocus\", handleFocus);\n }\n}\n\nfunction teardownScopedFocus() {\n modalElement = null;\n\n if (window.addEventListener) {\n window.removeEventListener(\"blur\", handleBlur);\n document.removeEventListener(\"focus\", handleFocus);\n } else {\n window.detachEvent(\"onBlur\", handleBlur);\n document.detachEvent(\"onFocus\", handleFocus);\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.log = log;\nexports.resetState = resetState;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n// Tracks portals that are open and emits events to subscribers\n\nvar PortalOpenInstances = function PortalOpenInstances() {\n var _this = this;\n\n _classCallCheck(this, PortalOpenInstances);\n\n this.register = function (openInstance) {\n if (_this.openInstances.indexOf(openInstance) !== -1) {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(\"React-Modal: Cannot register modal instance that's already open\");\n }\n return;\n }\n _this.openInstances.push(openInstance);\n _this.emit(\"register\");\n };\n\n this.deregister = function (openInstance) {\n var index = _this.openInstances.indexOf(openInstance);\n if (index === -1) {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(\"React-Modal: Unable to deregister \" + openInstance + \" as \" + \"it was never registered\");\n }\n return;\n }\n _this.openInstances.splice(index, 1);\n _this.emit(\"deregister\");\n };\n\n this.subscribe = function (callback) {\n _this.subscribers.push(callback);\n };\n\n this.emit = function (eventType) {\n _this.subscribers.forEach(function (subscriber) {\n return subscriber(eventType,\n // shallow copy to avoid accidental mutation\n _this.openInstances.slice());\n });\n };\n\n this.openInstances = [];\n this.subscribers = [];\n};\n\nvar portalOpenInstances = new PortalOpenInstances();\n\n/* eslint-disable no-console */\n/* istanbul ignore next */\nfunction log() {\n console.log(\"portalOpenInstances ----------\");\n console.log(portalOpenInstances.openInstances.length);\n portalOpenInstances.openInstances.forEach(function (p) {\n return console.log(p);\n });\n console.log(\"end portalOpenInstances ----------\");\n}\n\n/* istanbul ignore next */\nfunction resetState() {\n portalOpenInstances = new PortalOpenInstances();\n}\n/* eslint-enable no-console */\n\nexports.default = portalOpenInstances;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.canUseDOM = exports.SafeNodeList = exports.SafeHTMLCollection = undefined;\n\nvar _exenv = require(\"exenv\");\n\nvar _exenv2 = _interopRequireDefault(_exenv);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar EE = _exenv2.default;\n\nvar SafeHTMLElement = EE.canUseDOM ? window.HTMLElement : {};\n\nvar SafeHTMLCollection = exports.SafeHTMLCollection = EE.canUseDOM ? window.HTMLCollection : {};\n\nvar SafeNodeList = exports.SafeNodeList = EE.canUseDOM ? window.NodeList : {};\n\nvar canUseDOM = exports.canUseDOM = EE.canUseDOM;\n\nexports.default = SafeHTMLElement;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = scopeTab;\n\nvar _tabbable = require(\"./tabbable\");\n\nvar _tabbable2 = _interopRequireDefault(_tabbable);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction getActiveElement() {\n var el = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;\n\n return el.activeElement.shadowRoot ? getActiveElement(el.activeElement.shadowRoot) : el.activeElement;\n}\n\nfunction scopeTab(node, event) {\n var tabbable = (0, _tabbable2.default)(node);\n\n if (!tabbable.length) {\n // Do nothing, since there are no elements that can receive focus.\n event.preventDefault();\n return;\n }\n\n var target = void 0;\n\n var shiftKey = event.shiftKey;\n var head = tabbable[0];\n var tail = tabbable[tabbable.length - 1];\n var activeElement = getActiveElement();\n\n // proceed with default browser behavior on tab.\n // Focus on last element on shift + tab.\n if (node === activeElement) {\n if (!shiftKey) return;\n target = tail;\n }\n\n if (tail === activeElement && !shiftKey) {\n target = head;\n }\n\n if (head === activeElement && shiftKey) {\n target = tail;\n }\n\n if (target) {\n event.preventDefault();\n target.focus();\n return;\n }\n\n // Safari radio issue.\n //\n // Safari does not move the focus to the radio button,\n // so we need to force it to really walk through all elements.\n //\n // This is very error prone, since we are trying to guess\n // if it is a safari browser from the first occurence between\n // chrome or safari.\n //\n // The chrome user agent contains the first ocurrence\n // as the 'chrome/version' and later the 'safari/version'.\n var checkSafari = /(\\bChrome\\b|\\bSafari\\b)\\//.exec(navigator.userAgent);\n var isSafariDesktop = checkSafari != null && checkSafari[1] != \"Chrome\" && /\\biPod\\b|\\biPad\\b/g.exec(navigator.userAgent) == null;\n\n // If we are not in safari desktop, let the browser control\n // the focus\n if (!isSafariDesktop) return;\n\n var x = tabbable.indexOf(activeElement);\n\n if (x > -1) {\n x += shiftKey ? -1 : 1;\n }\n\n target = tabbable[x];\n\n // If the tabbable element does not exist,\n // focus head/tail based on shiftKey\n if (typeof target === \"undefined\") {\n event.preventDefault();\n target = shiftKey ? tail : head;\n target.focus();\n return;\n }\n\n event.preventDefault();\n\n target.focus();\n}\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = findTabbableDescendants;\n/*!\n * Adapted from jQuery UI core\n *\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/category/ui-core/\n */\n\nvar DISPLAY_NONE = \"none\";\nvar DISPLAY_CONTENTS = \"contents\";\n\nvar tabbableNode = /input|select|textarea|button|object|iframe/;\n\nfunction isNotOverflowing(element, style) {\n return style.getPropertyValue(\"overflow\") !== \"visible\" ||\n // if 'overflow: visible' set, check if there is actually any overflow\n element.scrollWidth <= 0 && element.scrollHeight <= 0;\n}\n\nfunction hidesContents(element) {\n var zeroSize = element.offsetWidth <= 0 && element.offsetHeight <= 0;\n\n // If the node is empty, this is good enough\n if (zeroSize && !element.innerHTML) return true;\n\n try {\n // Otherwise we need to check some styles\n var style = window.getComputedStyle(element);\n var displayValue = style.getPropertyValue(\"display\");\n return zeroSize ? displayValue !== DISPLAY_CONTENTS && isNotOverflowing(element, style) : displayValue === DISPLAY_NONE;\n } catch (exception) {\n // eslint-disable-next-line no-console\n console.warn(\"Failed to inspect element style\");\n return false;\n }\n}\n\nfunction visible(element) {\n var parentElement = element;\n var rootNode = element.getRootNode && element.getRootNode();\n while (parentElement) {\n if (parentElement === document.body) break;\n\n // if we are not hidden yet, skip to checking outside the Web Component\n if (rootNode && parentElement === rootNode) parentElement = rootNode.host.parentNode;\n\n if (hidesContents(parentElement)) return false;\n parentElement = parentElement.parentNode;\n }\n return true;\n}\n\nfunction focusable(element, isTabIndexNotNaN) {\n var nodeName = element.nodeName.toLowerCase();\n var res = tabbableNode.test(nodeName) && !element.disabled || (nodeName === \"a\" ? element.href || isTabIndexNotNaN : isTabIndexNotNaN);\n return res && visible(element);\n}\n\nfunction tabbable(element) {\n var tabIndex = element.getAttribute(\"tabindex\");\n if (tabIndex === null) tabIndex = undefined;\n var isTabIndexNaN = isNaN(tabIndex);\n return (isTabIndexNaN || tabIndex >= 0) && focusable(element, !isTabIndexNaN);\n}\n\nfunction findTabbableDescendants(element) {\n var descendants = [].slice.call(element.querySelectorAll(\"*\"), 0).reduce(function (finished, el) {\n return finished.concat(!el.shadowRoot ? [el] : findTabbableDescendants(el.shadowRoot));\n }, []);\n return descendants.filter(tabbable);\n}\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _Modal = require(\"./components/Modal\");\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _Modal2.default;\nmodule.exports = exports[\"default\"];","/** @license React v0.19.1\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var f,g,h,k,l;\nif(\"undefined\"===typeof window||\"function\"!==typeof MessageChannel){var p=null,q=null,t=function(){if(null!==p)try{var a=exports.unstable_now();p(!0,a);p=null}catch(b){throw setTimeout(t,0),b;}},u=Date.now();exports.unstable_now=function(){return Date.now()-u};f=function(a){null!==p?setTimeout(f,0,a):(p=a,setTimeout(t,0))};g=function(a,b){q=setTimeout(a,b)};h=function(){clearTimeout(q)};k=function(){return!1};l=exports.unstable_forceFrameRate=function(){}}else{var w=window.performance,x=window.Date,\ny=window.setTimeout,z=window.clearTimeout;if(\"undefined\"!==typeof console){var A=window.cancelAnimationFrame;\"function\"!==typeof window.requestAnimationFrame&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\");\"function\"!==typeof A&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\")}if(\"object\"===\ntypeof w&&\"function\"===typeof w.now)exports.unstable_now=function(){return w.now()};else{var B=x.now();exports.unstable_now=function(){return x.now()-B}}var C=!1,D=null,E=-1,F=5,G=0;k=function(){return exports.unstable_now()>=G};l=function(){};exports.unstable_forceFrameRate=function(a){0>a||125>>1,e=a[d];if(void 0!==e&&0K(n,c))void 0!==r&&0>K(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>K(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function K(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var N=[],O=[],P=1,Q=null,R=3,S=!1,T=!1,U=!1;\nfunction V(a){for(var b=L(O);null!==b;){if(null===b.callback)M(O);else if(b.startTime<=a)M(O),b.sortIndex=b.expirationTime,J(N,b);else break;b=L(O)}}function W(a){U=!1;V(a);if(!T)if(null!==L(N))T=!0,f(X);else{var b=L(O);null!==b&&g(W,b.startTime-a)}}\nfunction X(a,b){T=!1;U&&(U=!1,h());S=!0;var c=R;try{V(b);for(Q=L(N);null!==Q&&(!(Q.expirationTime>b)||a&&!k());){var d=Q.callback;if(null!==d){Q.callback=null;R=Q.priorityLevel;var e=d(Q.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?Q.callback=e:Q===L(N)&&M(N);V(b)}else M(N);Q=L(N)}if(null!==Q)var m=!0;else{var n=L(O);null!==n&&g(W,n.startTime-b);m=!1}return m}finally{Q=null,R=c,S=!1}}\nfunction Y(a){switch(a){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1E4;default:return 5E3}}var Z=l;exports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){T||S||(T=!0,f(X))};\nexports.unstable_getCurrentPriorityLevel=function(){return R};exports.unstable_getFirstCallbackNode=function(){return L(N)};exports.unstable_next=function(a){switch(R){case 1:case 2:case 3:var b=3;break;default:b=R}var c=R;R=b;try{return a()}finally{R=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=Z;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=R;R=a;try{return b()}finally{R=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();if(\"object\"===typeof c&&null!==c){var e=c.delay;e=\"number\"===typeof e&&0d?(a.sortIndex=e,J(O,a),null===L(N)&&a===L(O)&&(U?h():U=!0,g(W,e-d))):(a.sortIndex=c,J(N,a),T||S||(T=!0,f(X)));return a};\nexports.unstable_shouldYield=function(){var a=exports.unstable_now();V(a);var b=L(N);return b!==Q&&null!==Q&&null!==b&&null!==b.callback&&b.startTime<=a&&b.expirationTime 3 || Math.abs( moveVector.y ) > 3;\n};\n\n// ----- end event ----- //\n\n/**\n * pointer up\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\nproto.pointerUp = function( event, pointer ) {\n this.emitEvent( 'pointerUp', [ event, pointer ] );\n this._dragPointerUp( event, pointer );\n};\n\nproto._dragPointerUp = function( event, pointer ) {\n if ( this.isDragging ) {\n this._dragEnd( event, pointer );\n } else {\n // pointer didn't move enough for drag to start\n this._staticClick( event, pointer );\n }\n};\n\n// -------------------------- drag -------------------------- //\n\n// dragStart\nproto._dragStart = function( event, pointer ) {\n this.isDragging = true;\n // prevent clicks\n this.isPreventingClicks = true;\n this.dragStart( event, pointer );\n};\n\nproto.dragStart = function( event, pointer ) {\n this.emitEvent( 'dragStart', [ event, pointer ] );\n};\n\n// dragMove\nproto._dragMove = function( event, pointer, moveVector ) {\n // do not drag if not dragging yet\n if ( !this.isDragging ) {\n return;\n }\n\n this.dragMove( event, pointer, moveVector );\n};\n\nproto.dragMove = function( event, pointer, moveVector ) {\n event.preventDefault();\n this.emitEvent( 'dragMove', [ event, pointer, moveVector ] );\n};\n\n// dragEnd\nproto._dragEnd = function( event, pointer ) {\n // set flags\n this.isDragging = false;\n // re-enable clicking async\n setTimeout( function() {\n delete this.isPreventingClicks;\n }.bind( this ) );\n\n this.dragEnd( event, pointer );\n};\n\nproto.dragEnd = function( event, pointer ) {\n this.emitEvent( 'dragEnd', [ event, pointer ] );\n};\n\n// ----- onclick ----- //\n\n// handle all clicks and prevent clicks when dragging\nproto.onclick = function( event ) {\n if ( this.isPreventingClicks ) {\n event.preventDefault();\n }\n};\n\n// ----- staticClick ----- //\n\n// triggered after pointer down & up with no/tiny movement\nproto._staticClick = function( event, pointer ) {\n // ignore emulated mouse up clicks\n if ( this.isIgnoringMouseUp && event.type == 'mouseup' ) {\n return;\n }\n\n this.staticClick( event, pointer );\n\n // set flag for emulated clicks 300ms after touchend\n if ( event.type != 'mouseup' ) {\n this.isIgnoringMouseUp = true;\n // reset flag after 300ms\n setTimeout( function() {\n delete this.isIgnoringMouseUp;\n }.bind( this ), 400 );\n }\n};\n\nproto.staticClick = function( event, pointer ) {\n this.emitEvent( 'staticClick', [ event, pointer ] );\n};\n\n// ----- utils ----- //\n\nUnidragger.getPointerPoint = Unipointer.getPointerPoint;\n\n// ----- ----- //\n\nreturn Unidragger;\n\n}));\n","/*!\n * Unipointer v2.4.0\n * base class for doing one thing with pointer event\n * MIT license\n */\n\n/*jshint browser: true, undef: true, unused: true, strict: true */\n\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */ /*global define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'ev-emitter/ev-emitter'\n ], function( EvEmitter ) {\n return factory( window, EvEmitter );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('ev-emitter')\n );\n } else {\n // browser global\n window.Unipointer = factory(\n window,\n window.EvEmitter\n );\n }\n\n}( window, function factory( window, EvEmitter ) {\n\n'use strict';\n\nfunction noop() {}\n\nfunction Unipointer() {}\n\n// inherit EvEmitter\nvar proto = Unipointer.prototype = Object.create( EvEmitter.prototype );\n\nproto.bindStartEvent = function( elem ) {\n this._bindStartEvent( elem, true );\n};\n\nproto.unbindStartEvent = function( elem ) {\n this._bindStartEvent( elem, false );\n};\n\n/**\n * Add or remove start event\n * @param {Boolean} isAdd - remove if falsey\n */\nproto._bindStartEvent = function( elem, isAdd ) {\n // munge isAdd, default to true\n isAdd = isAdd === undefined ? true : isAdd;\n var bindMethod = isAdd ? 'addEventListener' : 'removeEventListener';\n\n // default to mouse events\n var startEvent = 'mousedown';\n if ( 'ontouchstart' in window ) {\n // HACK prefer Touch Events as you can preventDefault on touchstart to\n // disable scroll in iOS & mobile Chrome metafizzy/flickity#1177\n startEvent = 'touchstart';\n } else if ( window.PointerEvent ) {\n // Pointer Events\n startEvent = 'pointerdown';\n }\n elem[ bindMethod ]( startEvent, this );\n};\n\n// trigger handler methods for events\nproto.handleEvent = function( event ) {\n var method = 'on' + event.type;\n if ( this[ method ] ) {\n this[ method ]( event );\n }\n};\n\n// returns the touch that we're keeping track of\nproto.getTouch = function( touches ) {\n for ( var i=0; i < touches.length; i++ ) {\n var touch = touches[i];\n if ( touch.identifier == this.pointerIdentifier ) {\n return touch;\n }\n }\n};\n\n// ----- start event ----- //\n\nproto.onmousedown = function( event ) {\n // dismiss clicks from right or middle buttons\n var button = event.button;\n if ( button && ( button !== 0 && button !== 1 ) ) {\n return;\n }\n this._pointerDown( event, event );\n};\n\nproto.ontouchstart = function( event ) {\n this._pointerDown( event, event.changedTouches[0] );\n};\n\nproto.onpointerdown = function( event ) {\n this._pointerDown( event, event );\n};\n\n/**\n * pointer start\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\nproto._pointerDown = function( event, pointer ) {\n // dismiss right click and other pointers\n // button = 0 is okay, 1-4 not\n if ( event.button || this.isPointerDown ) {\n return;\n }\n\n this.isPointerDown = true;\n // save pointer identifier to match up touch events\n this.pointerIdentifier = pointer.pointerId !== undefined ?\n // pointerId for pointer events, touch.indentifier for touch events\n pointer.pointerId : pointer.identifier;\n\n this.pointerDown( event, pointer );\n};\n\nproto.pointerDown = function( event, pointer ) {\n this._bindPostStartEvents( event );\n this.emitEvent( 'pointerDown', [ event, pointer ] );\n};\n\n// hash of events to be bound after start event\nvar postStartEvents = {\n mousedown: [ 'mousemove', 'mouseup' ],\n touchstart: [ 'touchmove', 'touchend', 'touchcancel' ],\n pointerdown: [ 'pointermove', 'pointerup', 'pointercancel' ],\n};\n\nproto._bindPostStartEvents = function( event ) {\n if ( !event ) {\n return;\n }\n // get proper events to match start event\n var events = postStartEvents[ event.type ];\n // bind events to node\n events.forEach( function( eventName ) {\n window.addEventListener( eventName, this );\n }, this );\n // save these arguments\n this._boundPointerEvents = events;\n};\n\nproto._unbindPostStartEvents = function() {\n // check for _boundEvents, in case dragEnd triggered twice (old IE8 bug)\n if ( !this._boundPointerEvents ) {\n return;\n }\n this._boundPointerEvents.forEach( function( eventName ) {\n window.removeEventListener( eventName, this );\n }, this );\n\n delete this._boundPointerEvents;\n};\n\n// ----- move event ----- //\n\nproto.onmousemove = function( event ) {\n this._pointerMove( event, event );\n};\n\nproto.onpointermove = function( event ) {\n if ( event.pointerId == this.pointerIdentifier ) {\n this._pointerMove( event, event );\n }\n};\n\nproto.ontouchmove = function( event ) {\n var touch = this.getTouch( event.changedTouches );\n if ( touch ) {\n this._pointerMove( event, touch );\n }\n};\n\n/**\n * pointer move\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\nproto._pointerMove = function( event, pointer ) {\n this.pointerMove( event, pointer );\n};\n\n// public\nproto.pointerMove = function( event, pointer ) {\n this.emitEvent( 'pointerMove', [ event, pointer ] );\n};\n\n// ----- end event ----- //\n\n\nproto.onmouseup = function( event ) {\n this._pointerUp( event, event );\n};\n\nproto.onpointerup = function( event ) {\n if ( event.pointerId == this.pointerIdentifier ) {\n this._pointerUp( event, event );\n }\n};\n\nproto.ontouchend = function( event ) {\n var touch = this.getTouch( event.changedTouches );\n if ( touch ) {\n this._pointerUp( event, touch );\n }\n};\n\n/**\n * pointer up\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\nproto._pointerUp = function( event, pointer ) {\n this._pointerDone();\n this.pointerUp( event, pointer );\n};\n\n// public\nproto.pointerUp = function( event, pointer ) {\n this.emitEvent( 'pointerUp', [ event, pointer ] );\n};\n\n// ----- pointer done ----- //\n\n// triggered on pointer up & pointer cancel\nproto._pointerDone = function() {\n this._pointerReset();\n this._unbindPostStartEvents();\n this.pointerDone();\n};\n\nproto._pointerReset = function() {\n // reset properties\n this.isPointerDown = false;\n delete this.pointerIdentifier;\n};\n\nproto.pointerDone = noop;\n\n// ----- pointer cancel ----- //\n\nproto.onpointercancel = function( event ) {\n if ( event.pointerId == this.pointerIdentifier ) {\n this._pointerCancel( event, event );\n }\n};\n\nproto.ontouchcancel = function( event ) {\n var touch = this.getTouch( event.changedTouches );\n if ( touch ) {\n this._pointerCancel( event, touch );\n }\n};\n\n/**\n * pointer cancel\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\nproto._pointerCancel = function( event, pointer ) {\n this._pointerDone();\n this.pointerCancel( event, pointer );\n};\n\n// public\nproto.pointerCancel = function( event, pointer ) {\n this.emitEvent( 'pointerCancel', [ event, pointer ] );\n};\n\n// ----- ----- //\n\n// utility function for getting x/y coords from event\nUnipointer.getPointerPoint = function( pointer ) {\n return {\n x: pointer.pageX,\n y: pointer.pageY\n };\n};\n\n// ----- ----- //\n\nreturn Unipointer;\n\n}));\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 1 ? len - 1 : 0);\n for (var key = 1; key < len; key++) {\n args[key - 1] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return e;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var t,\n e = {},\n r = Object.prototype,\n n = r.hasOwnProperty,\n o = Object.defineProperty || function (t, e, r) {\n t[e] = r.value;\n },\n i = \"function\" == typeof Symbol ? Symbol : {},\n a = i.iterator || \"@@iterator\",\n c = i.asyncIterator || \"@@asyncIterator\",\n u = i.toStringTag || \"@@toStringTag\";\n function define(t, e, r) {\n return Object.defineProperty(t, e, {\n value: r,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), t[e];\n }\n try {\n define({}, \"\");\n } catch (t) {\n define = function define(t, e, r) {\n return t[e] = r;\n };\n }\n function wrap(t, e, r, n) {\n var i = e && e.prototype instanceof Generator ? e : Generator,\n a = Object.create(i.prototype),\n c = new Context(n || []);\n return o(a, \"_invoke\", {\n value: makeInvokeMethod(t, r, c)\n }), a;\n }\n function tryCatch(t, e, r) {\n try {\n return {\n type: \"normal\",\n arg: t.call(e, r)\n };\n } catch (t) {\n return {\n type: \"throw\",\n arg: t\n };\n }\n }\n e.wrap = wrap;\n var h = \"suspendedStart\",\n l = \"suspendedYield\",\n f = \"executing\",\n s = \"completed\",\n y = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var p = {};\n define(p, a, function () {\n return this;\n });\n var d = Object.getPrototypeOf,\n v = d && d(d(values([])));\n v && v !== r && n.call(v, a) && (p = v);\n var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);\n function defineIteratorMethods(t) {\n [\"next\", \"throw\", \"return\"].forEach(function (e) {\n define(t, e, function (t) {\n return this._invoke(e, t);\n });\n });\n }\n function AsyncIterator(t, e) {\n function invoke(r, o, i, a) {\n var c = tryCatch(t[r], t, o);\n if (\"throw\" !== c.type) {\n var u = c.arg,\n h = u.value;\n return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) {\n invoke(\"next\", t, i, a);\n }, function (t) {\n invoke(\"throw\", t, i, a);\n }) : e.resolve(h).then(function (t) {\n u.value = t, i(u);\n }, function (t) {\n return invoke(\"throw\", t, i, a);\n });\n }\n a(c.arg);\n }\n var r;\n o(this, \"_invoke\", {\n value: function value(t, n) {\n function callInvokeWithMethodAndArg() {\n return new e(function (e, r) {\n invoke(t, n, e, r);\n });\n }\n return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(e, r, n) {\n var o = h;\n return function (i, a) {\n if (o === f) throw Error(\"Generator is already running\");\n if (o === s) {\n if (\"throw\" === i) throw a;\n return {\n value: t,\n done: !0\n };\n }\n for (n.method = i, n.arg = a;;) {\n var c = n.delegate;\n if (c) {\n var u = maybeInvokeDelegate(c, n);\n if (u) {\n if (u === y) continue;\n return u;\n }\n }\n if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) {\n if (o === h) throw o = s, n.arg;\n n.dispatchException(n.arg);\n } else \"return\" === n.method && n.abrupt(\"return\", n.arg);\n o = f;\n var p = tryCatch(e, r, n);\n if (\"normal\" === p.type) {\n if (o = n.done ? s : l, p.arg === y) continue;\n return {\n value: p.arg,\n done: n.done\n };\n }\n \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg);\n }\n };\n }\n function maybeInvokeDelegate(e, r) {\n var n = r.method,\n o = e.iterator[n];\n if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y;\n var i = tryCatch(o, e.iterator, r.arg);\n if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y;\n var a = i.arg;\n return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y);\n }\n function pushTryEntry(t) {\n var e = {\n tryLoc: t[0]\n };\n 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);\n }\n function resetTryEntry(t) {\n var e = t.completion || {};\n e.type = \"normal\", delete e.arg, t.completion = e;\n }\n function Context(t) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], t.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(e) {\n if (e || \"\" === e) {\n var r = e[a];\n if (r) return r.call(e);\n if (\"function\" == typeof e.next) return e;\n if (!isNaN(e.length)) {\n var o = -1,\n i = function next() {\n for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next;\n return next.value = t, next.done = !0, next;\n };\n return i.next = i;\n }\n }\n throw new TypeError(_typeof(e) + \" is not iterable\");\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), o(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) {\n var e = \"function\" == typeof t && t.constructor;\n return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name));\n }, e.mark = function (t) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t;\n }, e.awrap = function (t) {\n return {\n __await: t\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {\n return this;\n }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {\n void 0 === i && (i = Promise);\n var a = new AsyncIterator(wrap(t, r, n, o), i);\n return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {\n return t.done ? t.value : a.next();\n });\n }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () {\n return this;\n }), define(g, \"toString\", function () {\n return \"[object Generator]\";\n }), e.keys = function (t) {\n var e = Object(t),\n r = [];\n for (var n in e) r.push(n);\n return r.reverse(), function next() {\n for (; r.length;) {\n var t = r.pop();\n if (t in e) return next.value = t, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, e.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(e) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);\n },\n stop: function stop() {\n this.done = !0;\n var t = this.tryEntries[0].completion;\n if (\"throw\" === t.type) throw t.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(e) {\n if (this.done) throw e;\n var r = this;\n function handle(n, o) {\n return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o;\n }\n for (var o = this.tryEntries.length - 1; o >= 0; --o) {\n var i = this.tryEntries[o],\n a = i.completion;\n if (\"root\" === i.tryLoc) return handle(\"end\");\n if (i.tryLoc <= this.prev) {\n var c = n.call(i, \"catchLoc\"),\n u = n.call(i, \"finallyLoc\");\n if (c && u) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n } else if (c) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n } else {\n if (!u) throw Error(\"try statement without catch or finally\");\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(t, e) {\n for (var r = this.tryEntries.length - 1; r >= 0; --r) {\n var o = this.tryEntries[r];\n if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) {\n var i = o;\n break;\n }\n }\n i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);\n var a = i ? i.completion : {};\n return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a);\n },\n complete: function complete(t, e) {\n if (\"throw\" === t.type) throw t.arg;\n return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y;\n },\n finish: function finish(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;\n }\n },\n \"catch\": function _catch(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.tryLoc === t) {\n var n = r.completion;\n if (\"throw\" === n.type) {\n var o = n.arg;\n resetTryEntry(r);\n }\n return o;\n }\n }\n throw Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(e, r, n) {\n return this.delegate = {\n iterator: values(e),\n resultName: r,\n nextLoc: n\n }, \"next\" === this.method && (this.arg = t), y;\n }\n }, e;\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","function _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nexport { _arrayLikeToArray as default };","function _arrayWithHoles(r) {\n if (Array.isArray(r)) return r;\n}\nexport { _arrayWithHoles as default };","function asyncGeneratorStep(n, t, e, r, o, a, c) {\n try {\n var i = n[a](c),\n u = i.value;\n } catch (n) {\n return void e(n);\n }\n i.done ? t(u) : Promise.resolve(u).then(r, o);\n}\nfunction _asyncToGenerator(n) {\n return function () {\n var t = this,\n e = arguments;\n return new Promise(function (r, o) {\n var a = n.apply(t, e);\n function _next(n) {\n asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n);\n }\n function _throw(n) {\n asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n);\n }\n _next(void 0);\n });\n };\n}\nexport { _asyncToGenerator as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","function _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}\nexport { _iterableToArrayLimit as default };","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _nonIterableRest as default };","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nfunction _slicedToArray(r, e) {\n return arrayWithHoles(r) || iterableToArrayLimit(r, e) || unsupportedIterableToArray(r, e) || nonIterableRest();\n}\nexport { _slicedToArray as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;\n }\n}\nexport { _unsupportedIterableToArray as default };","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.hmd = function(module) {\n\tmodule = Object.create(module);\n\tif (!module.children) module.children = [];\n\tObject.defineProperty(module, 'exports', {\n\t\tenumerable: true,\n\t\tset: function() {\n\t\t\tthrow new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);\n\t\t}\n\t});\n\treturn module;\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = \"productDetail\";","__webpack_require__.p = \"/public/\";","if (typeof document === \"undefined\") return;\nvar createStylesheet = function(chunkId, fullhref, oldTag, resolve, reject) {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tif (__webpack_require__.nc) {\n\t\tlinkTag.nonce = __webpack_require__.nc;\n\t}\n\tvar onLinkComplete = function(event) {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && event.type;\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + errorType + \": \" + realHref + \")\");\n\t\t\terr.name = \"ChunkLoadError\";\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tif (linkTag.parentNode) linkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\n\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\n\treturn linkTag;\n};\nvar findStylesheet = function(href, fullhref) {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = function(chunkId) {\n\treturn new Promise(function(resolve, reject) {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, null, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t\"globalize\": 0,\n\t\"modernizr\": 0,\n\t\"productDetail\": 0\n};\n\n__webpack_require__.f.miniCss = function(chunkId, promises) {\n\tvar cssChunks = {\"src_components_modules_questionAndAnswers_ProductQuestionAndAnswer_jsx\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(function() {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, function(e) {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr\n\n// no prefetching\n\n// no preloaded","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t\"globalize\": 0,\n\t\"modernizr\": 0,\n\t\"productDetail\": 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkecommerce\"] = self[\"webpackChunkecommerce\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [\"lodash\",\"translations\",\"react\",\"tracing\"], function() { return __webpack_require__(70116); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","t","constructor","Object","prototype","toString","call","e","i","s","shift","o","Error","n","slice","a","length","hasOwnProperty","Array","isArray","parseFloat","Math","round","Number","EPSILON","Element","document","body","__Panzoom","getComputedStyle","abs","scrollHeight","clientHeight","scrollWidth","clientWidth","parentNode","window","ResizeObserver","this","observables","boundCheck","check","bind","callback","observe","some","el","size","height","width","push","unobserve","filter","disconnect","map","requestAnimationFrame","id","self","Touch","identifier","pageX","pageY","clientX","clientY","sqrt","r","h","start","move","end","_element","startPointers","currentPointers","_pointerStart","buttons","button","_triggerPointerStart","addEventListener","_move","_pointerEnd","_touchStart","from","changedTouches","findIndex","_moveCallback","_triggerPointerEnd","splice","_endCallback","removeEventListener","passive","_touchEnd","_startCallback","stop","l","options","plugins","events","entries","option","String","split","reduce","localize","replace","toLowerCase","substring","join","on","forEach","indexOf","once","off","_","trigger","attachPlugins","defaults","attach","assign","detachPlugins","detach","c","touch","zoom","pinchToZoom","panOnlyZoomed","lockAxis","friction","decelFriction","zoomFriction","bounceForce","baseScale","minScale","maxScale","step","textSelection","click","wheel","wheelFactor","wheelLimit","draggableClass","draggingClass","ratio","d","super","state","$container","initLayout","resetValues","Plugins","updateMetrics","attachEvents","panTo","HTMLElement","querySelector","$content","createElement","classList","add","append","childNodes","appendChild","$viewport","updateRate","test","navigator","userAgent","container","viewport","content","origWidth","origHeight","x","y","scale","transform","resetDragPosition","onLoad","onClick","defaultPrevented","activeElement","closest","getSelection","target","hasAttribute","stopPropagation","getClientRects","dragPosition","midPoint","top","dragStart","rect","left","preventDefault","zoomWithClick","onWheel","zoomWithWheel","changedDelta","max","min","deltaY","deltaX","wheelDelta","detail","getBoundingClientRect","zoomTo","toggleZoom","initObserver","velocity","composedPath","nodeName","createRange","nodeType","Node","TEXT_NODE","selectNodeContents","right","bottom","type","time","Date","now","u","dragOffset","f","atan2","PI","stopImmediatePropagation","getZoomDelta","setDragResistance","startAnimation","_dragOffset","recalculateTransform","remove","pointerTracker","resizeObserver","updateTimer","setTimeout","isAnimating","endAnimation","HTMLImageElement","naturalWidth","baseVal","value","offsetWidth","naturalHeight","offsetHeight","style","maxWidth","maxHeight","g","p","m","v","b","paddingLeft","paddingRight","paddingTop","paddingBottom","fitWidth","fitHeight","isZoomable","zoomIn","zoomOut","ignoreBounds","boundX","boundY","getBounds","to","rAF","cancelAnimationFrame","animate","setEdgeForce","setDragForce","setTransform","handleCursor","detachEvents","destroy","clearTimeout","version","getTime","$prev","$next","carousel","onRefresh","createButton","setAttribute","toUpperCase","innerHTML","build","pages","elemDimWidth","wrapDimWidth","isInteger","cleanup","removeAttribute","page","prevTpl","nextTpl","classNames","main","next","prev","selectedIndex","onNavReady","onNavClick","onNavCreateSlide","onTargetChange","addAsTargetFor","nav","addAsNavFor","initialSlide","initialPage","parseInt","dataset","index","findPageForSlide","slideTo","markSelectedSlide","indexes","slides","$el","Sync","Navigation","Dots","$list","change","onChange","refresh","buildList","removeList","removeChild","rebuildDots","children","lastChild","code","nextSibling","previousSibling","setActiveDot","preload","slidesPerPage","center","infinite","fill","dragFree","prefix","track","slide","slideSelected","l10n","NEXT","PREV","GOTO","slideNext","slidePrev","init","__Carousel","pageIndex","prevPage","prevPageIndex","initSlides","$track","manageSlideVisiblity","initPanzoom","querySelectorAll","isDom","getSlideMetrics","contentWidth","viewportWidth","updatePanzoom","isTestEl","visibility","customClass","prepend","currentStyle","marginLeft","marginRight","find","setPage","Panzoom","wrapInner","resizeParent","centerOnStart","afterUpdate","updatePage","beforeTransform","onBeforeTransform","touchEnd","onTouchEnd","getPropertyValue","createSlideEl","removeSlideEl","hasDiff","markSelectedSlides","srcset","lazySrcset","lazySrc","src","backgroundImage","html","insertBefore","contains","manageInfiniteTrack","getPageFromPosition","slideToClosest","floor","w","focus","preventScroll","setActive","pageXOffset","scrollTop","pageYOffset","scrollLeft","scrollTo","behavior","C","fancybox","prepare","onPrepare","closing","onClosing","keydown","onKeydown","getSlides","Carousel","toggle","$carousel","items","thumb","hide","show","display","minSlideCount","minScreenHeight","autoStart","key","tpl","S","URL","URLSearchParams","search","set","match","E","video","autoplay","youtube","autohide","fs","rel","hd","wmode","enablejsapi","html5","vimeo","show_title","show_byline","show_portrait","fullscreen","html5video","format","P","onInit","ready","onReady","onCreateSlide","onRemoveSlide","onSelectSlide","onUnselectSlide","processType","encodeURIComponent","videoId","vendor","charAt","_width","_height","setContent","getSlide","playVideo","loadInlineContent","getElementById","$placeHolder","cloneNode","getAttribute","setError","loadAjaxContent","XMLHttpRequest","showLoading","onreadystatechange","readyState","DONE","hideLoading","status","responseText","ajax","open","setRequestHeader","send","xhr","loadIframeContent","className","$iframe","resizeIframe","onerror","onload","isReady","revealContent","setAspectRatio","autoSize","contentWindow","getElementsByTagName","overflow","flex","poster","play","then","catch","muted","event","func","method","postMessage","JSON","stringify","poller","pause","abort","$closeButton","onMessage","parse","data","origin","getElementsByClassName","source","T","done","onDone","onPageChange","clickTimer","$image","canZoom","imageFit","onImageStatusChange","alt","draggable","sizes","$wrap","complete","error","initSlidePanzoom","startIndex","getZoomInfo","$thumb","opacity","visualViewport","elementFromPoint","$caption","close","canZoomInClass","canZoomOutClass","zoomOpacity","ignoreCoveredThumbnail","doubleClick","fit","wrap","L","initCarousel","hasCreatedHistory","origHash","timer","hash","slug","$trigger","history","title","location","pathname","hasSilentClose","replaceState","startFromUrl","Fancybox","getInstance","Hash","getParsedURL","dispatchEvent","CustomEvent","bubbles","cancelable","onHashChange","create","substr","pop","element","fullscreenElement","mozFullScreenElement","webkitFullscreenElement","activate","requestFullscreen","mozRequestFullScreen","webkitRequestFullscreen","msRequestFullscreen","deactivate","exitFullscreen","mozCancelFullScreen","webkitExitFullscreen","A","active","handleVisibilityChange","isActive","setTimer","jumpTo","$progress","transitionDuration","clearTimer","z","autoEnable","counter","position","class","attr","tabindex","label","slideshow","Slideshow","download","thumbs","Thumbs","k","onSettle","closeButton","update","onFsChange","includes","fullscreenEnabled","fullScreen","downloadSrc","O","ScrollLock","pendingUpdate","startY","onResize","updateViewport","onTouchstart","onTouchmove","offsetLeft","offsetTop","touches","screenY","innerWidth","documentElement","Html","Toolbar","Image","M","showClass","hideClass","animated","hideScrollbar","parentEl","mainClass","autoFocus","trapFocus","placeFocusBack","dragToClose","keyboard","Escape","Delete","Backspace","PageUp","PageDown","ArrowUp","ArrowDown","ArrowRight","ArrowLeft","template","spinner","CLOSE","MODAL","ERROR","IMAGE_ERROR","ELEMENT_NOT_FOUND","AJAX_NOT_FOUND","AJAX_FORBIDDEN","IFRAME_ERROR","TOGGLE_ZOOM","TOGGLE_THUMBS","TOGGLE_SLIDESHOW","TOGGLE_FULLSCREEN","DOWNLOAD","I","Map","F","R","bindHandlers","setItems","onMousedown","onFocus","$root","insertAdjacentHTML","onscroll","role","tabIndex","$backdrop","currentSrc","origTarget","caption","infiniteX","infiniteY","createSlide","settle","touchMove","onTouchMove","afterTransform","onTransform","isTopmost","matches","blur","setProperty","ctrlKey","altKey","shiftKey","isContentEditable","ignoreFocusChange","offsetParent","origTabindex","lastFocus","revealScrollbar","clearContent","_className","createContextualFragment","suffix","manageCloseButton","firstChild","animateCSS","currentTarget","isClosing","delete","fromEvent","metaKey","triggerTarget","fancyboxTrigger","fancyboxIndex","openers","keys","reverse","fromOpener","get","groupAll","groupAttr","root","getRootNode","unbind","values","configHelper","require","trimTrailingSlash","virtualdir","arguments","undefined","getSiteUrl","$pathBase","port","protocol","hostname","contentFromCdn","_ref","path","keepUrlAsIs","config","getConfig","useCdn","cdnImagesUrl","cdnImagesFallbackUrl","cms","cmsUrl","isNil","isEmpty","startsWith","transformedPath","siteUrl","concat","console","getLang","lang","isTouch","Modernizr","isDesktop","mq","getSite","SITE","trim","getSiteCommercialName","lordgun","runkd","inwild","getPartnersByCulture","_ref2","culture","partners","acc","Culture","Name","url","Url","logo","Logo","getParameterByName","name","href","results","RegExp","exec","decodeURIComponent","_normalizeUrl","_asyncToGenerator","_regeneratorRuntime","_callee","_ref$headers","headers","mergedHeaders","_context","_objectSpread","abrupt","fetch","response","errorMessage","hasIn","statusText","redirected","returnUrl","returnedResponse","json","_x","apply","post","_ref6","_callee3","_ref5","_ref5$body","rawResponse","_context3","Accept","sent","_x3","translations","initialized","commonTranslations","reviewImages","common","commonTranslation","cartStep1","reassortmentNotification","nicknameValidator","disbursementSimulator","paymentInfo","socialLinks","blog","productCard","recentlyViewedProducts","topBrands","cartRightSummary","topBlogPosts","serviceLinks","productDetail","reviews","questions","feedbacks","form","home","orders","returns","newsletter","lowerPrice","translationsForLordgun","customFees","customFeesLordgun","cookieConsent","cookieConsentLordgun","bannerRedirect","bannerRedirectLordgun","cartStep2","cartStep2Lordgun","translationsForRunkd","customFeesRunkd","cookieConsentRunkd","bannerRedirectRunkd","cartStep2Runkd","translationsForInwild","customFeesInwild","cookieConsentInwild","bannerRedirectInwild","cartStep2Inwild","getMappedTranslation","translation","staticResources","supportedCultures","i18next","lng","resources","interpolate","params","paramKey","props","delegate","useEffect","opts","NativeFancybox","React","stars","maxRating","average","count","module","exports","debug","realtime","tokenUrl","paymentHubUrl","username","password","cdnCmsAssetsUrl","tracingUrl","development","staging","production","environment","NODE_ENV","configObj","Globalize","getLangMapping","Globalizer","langMapped","load","locale","parseDate","skeleton","formatDateShort","date","formatDate","formatDateLong","formatDateFull","numberFormatterPercent","number","maximumFractionDigits","numberFormatter","formatNumber","fractionDigits","minimumFractionDigits","openDetails","isMobile","tab","parentElement","openDestinationNotes","div","scrollToReviews","reviewsRef","current","scrollIntoView","scrollToSizeChart","sizeChartRef","scrollToSection","showOverlay","hideOverlay","toggleNextElementVisibility","nextElementSibling","handleAbuseTypeChange","reportAbuseFormRef","radioButtons","getQAndA","pageSize","sortType","reportQuestionAbuse","questionId","userVoteYes","answerId","userVoteNo","reportAnswerAbuse","getReviews","reportAbuse","_defineProperty","optionUnavailable","preorder","comingSoon","booking","discontinued","unavailable","oneAvailable","available","getOriginalDescription","addToCart","quantitySelected","isKit","quantity","groupAndOptionIds","addReassNotification","getColorSelectedFromQueryString","queryStringPairs","colorPair","pair","findOption","optionId","sourceId","findColorFromOption","foundOption","colorAttributeName","attributes","getPreselectionAndModals","colorFromQueryString","modals","optionAttributes","val","attribute","foundColor","decode","fieldId","kitOptionId","getFilteredOptions","selection","array","attrName","attrValue","item","filteredArray","getOptionSelected","optionsArray","found","foundElements","getQtyAvailable","q","isBooking","quantityKit","getKitQtyAvailable","kitUniqueProducts","opt","uniqueProductIndex","qtyNeeded","quantityNeeded","minAvailable","curr","isPreorder","isPreOrder","isSoonAvailable","bookingOverstock","bookingOrderDays","soonAvailable","isBookingOverstock","attrVal","getKitAvailabilityStatus","qtyAvailable","qtySelected","days","isComingSoon","productsAvailabilityStatus","qtyDiscontinued","bookingOverstockOptions","unavailableQtyBookingOverstockOptions","unavailableOptions","handleBookingOverStock","qtyUnavailable","getAvailabilityStatus","availabilityStatus","getAvailability","getBookingDays","getPreorderDate","preOrderArrivalDate","getComingSoonDate","comingSoonArrivalDate","getDeliveryMessage","toISOString","getTimezoneOffset","getPriceGroup","priceObj","getPrice","basePrice","priceVariation","price","_getCssClassAvailability","getAvailabilityLabel","translateService","_getAvailabilityText","getAvailabilityCssClass","purgeExpired","expirationMillis","localStorage","getItem","dataByKey","result","expired","timestamp","isKeyExpired","removeItem","setItem","_ref3","object","existing","_ref4","keyName","valueToRemove","newItems","absoluteUrl","RECENTLY_VIEWED_PRODUCTS","expirationStorageService","unescapedUrl","unescape","storedData","visitedProducts","vp","initializedLoggers","_initJsNlog","loggerName","defaultLoggingUrl","appender","JL","createAjaxAppender","consoleAppender","createConsoleAppender","setOptions","bufferSize","maxBatchSize","defaultAjaxUrl","appenders","_oldOnErrorHandler","msg","line","column","sourceUrl","fatalException","errorMsg","_oldOnUnhandledRejectionHandler","onunhandledrejection","reasonMessage","reason","message","fatal","logDebug","_len","args","_key","logEvent","_len3","_key3","logWarn","_len4","_key4","warn","logError","_len5","_key5","_defaultCookieConsent","exists","firstParty","thirdParty","marketingParty","showBanner","expirationDays","_getCookieConsent","cookie","getDecodedCookieConsentValues","asciiVal","atob","cookieConsentValues","MarketingParty","ThirdParty","userProfileCookieKey","cname","ca","_getCookie","parsedCookie","countryCode","CountryCode","currencyCode","CurrencyCode","validateGoogleData","prop","defaultValue","googleData","validateEcommerceData","ecommerceData","extractAdwordsConfiguration","adwordsConfiguration","_prefix","_validateGtag","gtag","_mapItems","itemObj","item_id","googleId","item_name","currency","disciplines","brandName","item_brand","categories","category","_setCategories","setConfigGoogleAnalytics4","_ref13","analytics4MeasurementId","dataLayer","debug_mode","analytics4MeasurementGlobalId","configAlreadySetAnalytics4MeasurementGlobalId","recordGA4BannerClick","_ref14","linkUrl","obj","content_type","recordGA4PromoImagesClick","_ref15","promoMessage","imageSrc","recordGA4InfoboxClick","_ref16","recordGA4NewsHomepageClick","recordGA4HelpClick","recordGA4CategoryClick","_ref17","recordGA4LogonClick","_ref18","recordGA4RegisterClick","_ref19","_getDestinationId","property","cookieService","defaultCountryCode","valueForSelectedCountry","_len2","_key2","info","logInfo","valueForDefaultCountry","_getConversionId","_getValuePropertyForCountryWithFallback","fallbackValue","resultFromDefaultCountryCode","_mapItemsForDynamicRemarketing","google_business_vertical","beginCheckout","cartId","totaleuro","conversionId","initiateCheckoutLabel","beginCheckoutObj","transaction_id","send_to","purchaseConversion","orderId","totalEuro","conversionLabel","categoriesConversionLabel","_getCategoriesConversionLabel","trackedCategories","_getTrackedCategories","orderCategories","uniq","itms","send_to_address_label","intersection","conversionData","enhanced_conversion_data","log","newsletterRegistration","email","newsletterLabel","adsAddToCartConversion","_ref10","transactionId","addToCartLabel","initConversions","analytics4EnableDebug","_validateFbq","fbq","_validateFbqData","facebookData","fbqPixelId","pixelId","fbCulture","pageView","viewItem","guid","viewItemObject","content_name","content_ids","pageTypes","_validateEcommTransactionId","ecomm_transactionid","_validateEcommTotalValue","ecomm_totalvalue","_validateEcommTotalValueEuro","ecomm_totalvalueeuro","_validateEcommCurrency","ecomm_currency","_validateEcommItems","ecomm_items","_sendInitiateCheckout","ecomm_pagetype","eventId","initiateCheckoutData","num_items","contents","facebookId","eventID","fbqBeginCheckout","ga4BeginCheckout","adsBeginCheckoutSendConversion","_sendNewsletterRegistration","completeRegistrationObj","fbqNewsletterRegistration","ga4NewsletterRegistration","adsNewsletterRegistrationSendConversion","_sendRegistration","ecomm_email","_validateEcommEmail","_sendFbqContact","_sendViewItem","ga4ViewItem","_ref8","adsViewItemDynamicRemarketing","_sendSearchItemResults","searchterm","ecomm_searchterm","_validateEcommSearchTerm","search_string","fbqSearch","search_term","ga4SearchItemsResults","adsSearchItemResultsDynamicRemarketing","_sendViewItemList","_ref7","ga4ViewItemList","adsViewItemListDynamicRemarketing","_sendViewCart","ga4ViewCart","_sendShippingInfo","_ref9","shipping_tier","ga4AddShippingInfo","ecomm_shippingoptionname","_validateEcommShippingOptionName","initLibs","Promise","resolve","reject","retryCount","interval","setInterval","_ref12","initGoogleAnalytics4","callMethod","queue","_fbq","loaded","async","clearInterval","viewItemFbq","fbqViewItem","_sendPurchase","shipping","ecomm_shippingfeeseuro","_validateEcommShippingFeesEuro","valueDecimal","shippingDecimal","purchaseData","li","fbqPurchase","item_category","ga4Purchase","purchaseDynamicRemarketing","recordBannerClick","_callee2","_context2","t0","_x2","recordPromoImagesClick","_ref11","recordInfoboxClick","_callee4","_context4","_x4","recordNewsHomepageClick","_callee5","_context5","recordHelpClick","_callee6","_context6","recordCategoryClick","_callee7","_context7","_x5","recordLogonClick","_ref20","_callee8","_context8","_x6","recordRegisterClick","_ref22","_callee9","_ref21","_context9","_x7","run","thirdPartyConsent","marketingPartyConsent","fbqPageView","err","addToCartObject","fbqAddToCart","ga4AddToCart","adsAddToCartDynamicRemarketing","addPaymentInfo","payment","paymentObj","fbqAddPaymentInfo","payment_type","ga4AddPaymentInfo","closePopUp","ga4ClosePopUp","popUpButtonClick","ga4PopUpButtonClick","sendGoogleSurvey","enableGoogleSurvey","merchantId","userEmail","deliveryCountry","estimatedDeliveryDate","surveyoptin","handleSurvey","surveyObj","merchant_id","order_id","delivery_country","estimated_delivery_date","render","sendRegistration","offersRoute","fallbackOfferData","hexColorTopRight","hexColorBottomLeft","labelColor","labelColorHover","labelText","getActiveOffersTag","offerdata","_JSON$parse","memoActiveOffersTag","memoize","classNameLink","baseStyle","hoverStyle","anchorHoverStyle","anchorBaseStyle","_useState","useState","_useState2","_slicedToArray","spanHovered","setHover","_useState3","_useState4","anchorHovered","setAnchorHover","toggleHover","toggleAnchorHover","onMouseEnter","onMouseLeave","latestArrival","offer","tags","offerData","setOfferData","isLatestArrival","isOffer","tagsArray","labelsState","setLabelsState","prevState","getTagsArray","getoffersTag","isString","serializedData","isObject","getCleanTag","tag","char","cleanTag","LinkHovered","color","backgroundColor","border","idx","escape","toUpper","brandUrl","revCount","ReviewStars","ratingAverage","itemProp","manufacturerCode","propsItems","carouselSize","flktyRef","setFlktyRef","fullScreenActive","setFullScreenActive","_useState5","_useState6","indexZoom","setIndexZoom","handleMouseEnter","handleMouseLeave","pointer","cellElement","cellIndex","ProductFullScreenHandler","Flickity","flickityRef","flcktyOption","imageUrl","itemsByCarouselSizeHtml","financingEnabled","currentAmount","timeLeftInSeconds","timeLeftInHours","timeLeftInMinutes","hours","minutes","seconds","countDown","setCountDown","targetDate","countdown","isNaN","countDownHelper","descriptionText","dangerouslySetInnerHTML","__html","countDownText","generateDescription","fontSize","tagsProps","currencySymbol","decimalPlaces","isKlarnaAvailable","hasManyPrices","priceCalculated","discount","priceRetail","priceGroup","fullPriceObject","setPrice","setTags","newFullPriceObject","calculateDiscount","prevPrice","newPrice","newPriceRetail","retailPrice","getFormattedPrice","getFormattedDiscount","LowerPriceMessage","shouldShowDiscountDescriptionContainer","ProductOfferDescription","DisbursementSimulator","pow","Boolean","price1","ranges","priceRanges","destinationNote","toggleSection","kitAvailable","handleClick","updateSelection","colorGallery","availableOrBooking","isAvailable","imageBrowse","Modal","updateModalState","handleModalStateChange","sizeSelection","cssClassAvailability","text","isOpen","modalsState","onRequestClose","contentLabel","closeTimeoutMS","base","afterOpen","beforeClose","overlayClassName","shouldFocusAfterRender","otherSelection","nameAttributes","getAttributeSelectText","kind","ProductOptionsColor","handleUpdateSelection","ProductOptionsSize","handleModalState","ProductOptionsOther","minutesToTodayShipping","shippingDate","deliveryInfo","setDeliveryInfo","timeToFastShipping","setTimeToFastShipping","_manageDeliveryInfo","deliveryInformation","totalMinutes","updateCountdown","manageDeliveryInfo","qty","shippingMessage","hh","mm","pathBase","decreaseQty","updateQty","handleBlur","increaseQty","maxQty","minQty","pattern","inputMode","onBlur","isUnpurchaseable","RangeInput","handleDecreaseQty","handleUpdateQty","checkInput","handleIncreaseQty","userAuthenticated","Button","handleCTAClick","selectiveDistribution","selectionAttributes","productAttributes","formattedAttributes","currVal","currKey","descriptionInLanguage","setDescriptionInLanguage","descriptionInOriginalLanguage","setDescriptionInOriginalLanguage","description","descriptionToShow","setDescriptionToShow","_useState7","_useState8","haveFetchedOriginal","setHaveFetchedOriginal","getDescription","descriptionOriginalUrl","updateTranslation","descriptionAutomated","ProductReview","productSlug","viewingCount","percAverageRating5","percAverageRating4","percAverageRating3","percAverageRating2","percAverageRating1","percAverageQuality5","percAverageQuality4","percAverageQuality3","percAverageQuality2","percAverageQuality1","productTitle","writeAReviewLink","allReviewsLink","totalRecords","totalPages","setReviews","_init","revs","review","isAuthenticated","Suspense","fallback","ProductQuestionAndAnswer","writeAQuestionLink","guidelinesLink","allQuestionsLink","setQuestions","qAndAs","question","j","setTabsIntersection","isObserving","setObserving","tabs","tabsNumber","observePrdTabs","updateIntersection","observer","tabElements","entry","intersectionRatio","indexMaxIntersecting","getMax","handleScroll","handleOpen","tabsObserver","IntersectionObserver","threshold","elementsToWatch","techspecs","techSpecs","specs","spec","indent","productName","technologies","brandsGuides","revNumber","qandaNumber","enableNews","ProductDescription","ref","revAverage","ProductReviews","ProductQuestionsAndAnswers","freeShipping","countryHasFreeShipping","freeShippingThreshold","shippingInfoUrl","currencyDecimalPlaces","securePaymentsUrl","isSuccess","isReassortment","productImageUrl","productQuantityAdded","productPriceDiscounted","productPriceFull","cartTotalItems","link","productUrl","ProductTags","brand","toFixed","hasManyColors","products","flcktyHtmlRef","useRef","setRef","autoPlay","cellAlign","contain","pageDots","prevNextButtons","wrapAround","groupCells","lazyLoad","ProductCard","relations","setRelations","_getRelatedProducts","alreadyHaveRelations","getRelatedProducts","ProductSlider","cancelUrl","buttonText","buttonLink","textColor","borderColor","heading","validFrom","validTo","popUpInfo","setPopUpInfo","handleClose","marketingAndAnalyticsService","getPopUpInfo","handleButtonClick","details","enablenews","noPhoto","big","browse","flcktyHtmlRefSmall","flcktyHtmlRefLarge","images","initialIndex","setSelection","showSelectionHint","setShowSelectionHint","setTabsNumber","flcktyRefSmall","setRefSmall","_useState9","_useState10","flcktyRefLarge","setRefLarge","_useState11","_useState12","setModalsState","_useState13","_useState14","cartModalState","setCartModalState","_useState15","_useState16","productSummary","setProductSummary","_initialize","tabsNum","optionPreselectionId","colorAttribute","optionPreselected","colorPreselection","_getPreselectionAndMo","_getPreselectionAndMo2","isPreselectionIncomplete","productImages","filteredImages","_colorAttribute","foundValue","foundImage","qtyAv","avStatus","optionPair","decodeURI","image","imageBig","initialize","recentlyViewedProductsService","changeCartModalState","groupId","redirectBuyUrl","isFullscreen","imgs","img","lowerPrices","originId","ProductHeader","reviewsCount","ProductCarousel","asNavFor","ProductPrice","isPayPalAvailable","klarnaCulture","ProductDestinationNote","ProductInfo","ProductOptions","isColor","foundImages","imageZoom","select","newAttr","prdOption","ProductAvailabilityNote","ProductSelectionHint","ProductQuantity","ProductNotes","ProductTabs","questionsAndAnswersCount","productsRelations","RelatedProducts","ProductSummary","PopUp","ReactDOM","ProductDetails","tests","ModernizrProto","_version","_config","_q","cb","addTest","fn","addAsyncTest","classes","docElement","isSVG","createElementNS","injectElementWithStyles","rule","nodes","testnames","ret","node","docOverflow","mod","fake","getBody","styleSheet","cssText","createTextNode","background","matchMedia","msMatchMedia","mql","bool","featureNames","feature","aliasIdx","nameIdx","featureNameSplit","featureIdx","aliases","_typeof","testRunner","merge","arrayIsArray","pathNormalize","arraySome","coreLikelySubtags","Cldr","cldr","subtags","language","script","sep","localeSep","territory","variants","force","coreRemoveLikelySubtags","maxLanguageId","coreSubtags","aux","arrayForEach","bundleLookup","minLanguageId","availableBundleMap","_availableBundleMap","availableBundleMapQueue","_availableBundleMapQueue","bundle","maxBundle","minBundle","objectKeys","createError","validate","validatePresence","validateType","expected","validateTypePath","isPlainObject","validateTypePlainObject","validateTypeString","resourceGet","coreSetAvailableBundles","alwaysArray","somethingOrArray","jsonMerge","destination","sources","coreLoad","jsons","itemGetResolved","normalizedPath","_resolved","_alwaysArray","_coreLoad","_createError","_itemGetResolved","_jsonMerge","_pathNormalize","_resourceGet","_validatePresence","_validateType","_validateTypePath","_validateTypePlainObject","unicodeLocaleExtensions","variant","unicodeLocaleExtensionsRaw","region","EventEmitter","proto","indexOfListener","listeners","listener","alias","getListeners","evt","_getEvents","flattenListeners","flatListeners","getListenersAsObject","addListener","listenerIsWrapped","addOnceListener","defineEvent","defineEvents","evts","removeListener","addListeners","manipulateListeners","removeListeners","single","multiple","removeEvent","_events","removeAllListeners","emitEvent","_getOnceReturnValue","emit","setOnceReturnValue","_onceReturnValue","noConflict","originalGlobalValue","superGet","superInit","validateTypeFunction","globalEe","validateTypeEvent","validateThenCall","getOverload","ee","_eventInit","supplementalMain","supplemental","weekData","firstDay","minDays","timeData","allowed","preferred","initSuper","factory","matchesMethod","ElemProto","matchesSelector","prefixes","elem","selector","EvEmitter","eventName","onceEvents","_onceEvents","onceListeners","allOff","canUseDOM","ExecutionEnvironment","canUseWorkers","Worker","canUseEventListeners","attachEvent","canUseViewport","screen","utils","num","arraySlice","makeArray","removeFrom","ary","getParent","getQueryElement","handleEvent","filterFindElements","elems","ffElems","childElems","debounceMethod","_class","methodName","timeoutName","timeout","_this","docReady","toDashed","str","$1","$2","htmlInit","WidgetClass","namespace","dashedNamespace","dataAttr","dataAttrElems","jsDashElems","dataOptionsAttr","jQuery","instance","createMethods","lerp","_createAsNavFor","activateAsNavFor","deactivateAsNavFor","destroyAsNavFor","asNavForOption","setNavCompanion","companion","navCompanion","onNavCompanionSelect","navCompanionSelect","onNavStaticClick","isInstant","selectedCell","selectedCells","firstIndex","cells","lastIndex","selectIndex","selectCell","removeNavSelectedElements","navSelectedElements","cell","changeNavSelectedClass","navElem","_createFullscreen","viewFullscreenButton","FullscreenButton","exitFullscreenButton","_changeFullscreenActive","childMethod","activeMethod","viewFullscreen","_changeFullscreen","isView","classMethod","resize","reposition","toggleFullscreen","setGallerySize","flickity","createIcon","clickHandler","capitalize","keyboardHandlers","svgURI","pathDirections","view","exit","svg","direction","getCellsFragment","fragment","createDocumentFragment","insert","_makeCells","len","isAppend","slider","insertCellElement","endCells","_sizeCells","cellChange","getCells","minCellIndex","cellSizeChange","getCell","getSize","changedCellIndex","isPositioningSlider","prevSelectedElem","selectedElement","_positionCells","_getWrapShiftCells","getCellSlideIndex","positionSliderAtSelected","restingFrames","applyDragForce","applySelectedAttraction","previousX","integratePhysics","positionSlider","modulo","slideableWidth","shiftWrapCells","setTranslateX","dispatchScrollEvent","is3d","cursorPosition","rightToLeft","translateX","getPositionValue","firstSlide","positionX","progress","slidesWidth","selectedSlide","percentPosition","isPointerDown","isFreeScrolling","beforeGap","_shiftCells","beforeShiftCells","afterGap","afterShiftCells","gap","cellShift","wrapShift","outerWidth","getFrictionFactor","isDraggable","dragForce","dragX","applyForce","selectedAttraction","Cell","parent","originSide","unselect","side","setPosition","updateTarget","renderPosition","setDefaultTarget","marginProperty","sideOffset","adjustedX","Unidragger","extend","dragThreshold","_touchActionValue","_createDrag","onActivateDrag","_uiChangeDrag","onDeactivateDrag","updateDraggable","handles","bindHandles","unbindHandles","bindDrag","unbindDrag","pointerDown","okayPointerDown","_pointerDownPreventDefault","pointerDownFocus","pointerDownBlur","pointerDownScroll","getScrollPosition","_pointerDownDefault","pointerDownPointer","_bindPostStartEvents","focusNodes","INPUT","TEXTAREA","SELECT","isTouchStart","isTouchPointer","pointerType","isFocusNode","hasDragStarted","moveVector","pointerUp","isTouchScrolling","_dragPointerUp","pointerDone","dragStartPosition","pointerMove","_dragPointerMove","_dragMove","dragMove","previousDragX","originBound","endBound","getLastSlide","dragMoveTime","dragEnd","freeScroll","dragEndRestingSelect","restingX","getRestingPosition","dragEndBoostSelect","isDragSelect","distance","getSlideDistance","positiveResting","_getClosestResting","negativeResting","increment","minDistance","Infinity","condition","dist","minDist","isWrapAround","slideIndex","delta","staticClick","clickedCell","getParentCell","cellElem","scroll","scrollMoveX","scrollMoveY","_pointerDone","Slide","animatePrototype","moveElements","toElem","GUID","instances","queryElement","flickityGUID","$element","_create","accessibility","freeScrollFriction","namespaceJQueryEvents","_createSlider","watchCSS","_filterFindCellElements","reloadCells","selectInitialIndex","isInitActivated","cellSelector","positionCells","getLastCell","maxCellHeight","cellX","startCell","outerHeight","updateSlides","_containSlides","nextMargin","canCellFit","_getCanCellFit","slideWidth","firstMargin","addCell","updateSelectedSlide","percentMatch","percent","setCellAlign","cellAlignShorthands","shorthand","adaptiveHeight","_unshiftCells","gapX","_getGapCells","isRightToLeft","beginMargin","endMargin","isContentSmaller","beginBound","emitArgs","$event","jQEvent","Event","isWrap","_wrapSelect","prevIndex","wrapIndex","backWrapDelta","forewardWrapDelta","previous","unselectSelectedSlide","selectedElements","getCellElements","queryCell","getAdjacentCellElements","adjCount","cellElems","uiChange","childUIPointerDown","onresize","isDragging","onkeydown","isNotFocused","handler","keyCode","leftMethod","rightMethod","prevScrollY","removeData","bridget","setJQuery","jq","getCellLazyImages","lazyloadAttr","srcAttr","srcsetAttr","lazySelector","LazyLoader","_createLazyload","lazyImages","lazyCellImages","Unipointer","PageDots","holder","dots","setDots","bindStartEvent","unbindStartEvent","addDots","removeDots","newDots","dot","updateSelected","selectedDot","onTap","_createPageDots","activatePageDots","updateSelectedPageDots","updatePageDots","deactivatePageDots","Player","onVisibilityChange","visibilityChange","onVisibilityPlay","visibilityPlay","hidden","tick","clear","unpause","pauseAutoPlayOnHover","_createPlayer","player","activatePlayer","stopPlayer","deactivatePlayer","playPlayer","pausePlayer","unpausePlayer","onmouseenter","onmouseleave","PrevNextButton","getArrowMovements","shape","x0","x1","y1","x2","y2","x3","isEnabled","isPrevious","leftDirection","isLeft","disable","createSVG","pathMovements","arrowShape","onclick","enable","disabled","boundIndex","_createPrevNextButtons","prevButton","nextButton","activatePrevNextButtons","deactivatePrevNextButtons","isOriginLeft","lastCell","lastMargin","getStyleSize","noop","measurements","measurementsLength","getZeroSize","innerHeight","getStyle","isBoxSizeOuter","isSetup","setup","padding","borderStyle","borderWidth","boxSizing","isBorderBox","measurement","paddingWidth","paddingHeight","marginWidth","marginHeight","marginTop","marginBottom","borderLeftWidth","borderRightWidth","borderHeight","borderTopWidth","borderBottomWidth","isBorderBoxSizeOuter","styleWidth","styleHeight","variable","formatMessage","objectExtend","partsPush","parts","formatMessageToParts","lastOffset","nameIncludingBrackets","offset","part","partsJoin","runtimeStringify","runtimeKey","stringHash","charCodeAt","fnName","argsStr","functionName","runtimeBind","runtimeArgs","generatorString","stringOrArray","validateCldr","skipBoolean","skip","pathRe","validateDefaultLocale","validateParameterPresence","validateParameterRange","minimum","maximum","validateParameterType","validateParameterTypeLocale","validateParameterTypePlainObject","alwaysCldr","localeOrCldr","regexpEscape","string","stringPad","validateLikelySubtags","_formatMessage","_formatMessageToParts","_isPlainObject","_objectExtend","_partsJoin","_partsPush","_regexpEscape","_runtimeBind","_stringPad","_validate","_validateCldr","_validateDefaultLocale","_validateParameterPresence","_validateParameterRange","_validateParameterTypePlainObject","_validateParameterType","numberNumberingSystem","_numberNumberingSystem","numberPattern","_numberPattern","validateParameterTypeNumber","_validateParameterTypeNumber","createErrorPluralModulePresence","validateParameterTypeCurrency","currencyFormatterFn","currencyToPartsFormatter","currencySupplementalOverride","digits","fraction","fractionData","_digits","_rounding","objectFilter","testRe","copy","currencyUnitPatterns","currencyNameProperties","displayNames","unitPatterns","regexpNotS","regexpNotSAndZ","currencySymbolProperties","currencySpacing","symbol","symbolEntries","regexp","symbolForm","unshift","symbolEntry","currencyMatch","surroundingMatch","insertBetween","currencyNameFormat","formattedNumber","pluralForm","properties","displayName","unitPattern","currencySymbolFormat","currencyToPartsFormatterFn","numberToPartsFormatter","pluralGenerator","objectOmit","validateRequiredCldr","currencyFormatter","returnFn","accounting","raw","plural","currencyParser","formatCurrency","formatCurrencyToParts","parseCurrency","createErrorUnsupportedFeature","_createErrorUnsupportedFeature","looseMatching","_looseMatching","numberNumberingSystemDigitsMap","_numberNumberingSystemDigitsMap","numberSymbol","_numberSymbol","removeLiteralQuotes","_removeLiteralQuotes","validateParameterTypeString","_validateParameterTypeString","validateParameterTypeDate","createErrorInvalidParameterValue","validateSkeletonFieldsPosMap","memo","validateSkeleton","last","fieldsPosMap","field","invalidField","every","objectInvert","newObject","dateExpandPatternSimilarFieldsMap","dateExpandPatternNormalizePatternType","character","datePatternRe","stringRepeat","expandBestMatchFormat","skeletonWithoutFractionalSeconds","bestMatchFormat","bestMatchFormatParts","matchedType","matchedLength","requestedType","requestedLength","requestedSkeletonParts","normalizePatternType","dateExpandPatternAugmentFormat","requestedSkeleton","decimalSeparator","countOfFractionalSeconds","fractionalSecondMatch","lastSecondIdx","lastIndexOf","dateExpandPatternCompareFormats","formatA","formatB","lenA","lenB","typeA","typeB","dateExpandPatternGetBestMatchPattern","askedSkeleton","availableFormats","ratedFormats","augmentFormat","compareFormats","rate","sort","dateExpandPattern","dateSkeleton","timeSkeleton","getBestMatchPattern","combineDateTime","datePattern","timePattern","datetime","dateWeekDays","dateFirstDayOfWeek","dateGetTimeZoneName","timeZone","metaZone","dateTimezoneHourFormatH","hourFormat","dateTimezoneHourFormatHm","hFormat","runtimeCacheDataBind","dataCacheKey","dateFormatProperties","numberFormatters","timeSeparator","widths","setNumberFormatterPattern","pad","timeZoneData","offsets","untils","isdsts","chr","daylightTzName","genericTzName","standardTzName","preferredTime","eras","quarters","months","dayPeriods","am","pm","timeZoneName","exemplarCity","gmtFormat","gmtZeroFormat","dateFormatterFn","dateToPartsFormatter","dateParseProperties","preferredTimeData","ZonedDateTime","definePrivateProperty","defineProperty","getUntilsIndex","original","originalTime","setWrap","offset1","setTime","offset2","setMinutes","getMinutes","local","clone","utcMethod","valueOf","isDST","inspect","abbrs","toDate","dateIsLeapYear","year","getMonth","dateLastDayOfMonth","getFullYear","getDate","dateStartOf","unit","setMonth","setDate","setHours","setSeconds","setMilliseconds","dateSetDate","day","lastDay","dateSetMonth","month","originalDate","outOfRange","low","high","dateParse","_value","tokens","amPm","daysOfYear","era","hour","hour12","timezoneOffset","YEAR","MONTH","DAY","HOUR","MINUTE","SECOND","MILLISECONDS","truncateAt","units","token","setFullYear","getHours","dateTokenizer","numberParser","digitsRe","valid","numeric","tokenRe","hourFormatParse","isPositive","oneDigitIfLengthOne","oneOrTwoDigitsIfLengthOne","oneOrTwoDigitsIfLengthOneOrTwo","twoDigitsIfLengthTwo","lookup","standardOrDaylightTzName","timeZoneNameRe","hourFormatRe","lexeme","dateParserFn","parseProperties","tokenizerProperties","dateTokenizerProperties","digitsReSource","re","populateProperties","regexpSourceSomeTerm","terms","dateDayOfWeek","getDay","dateDistanceInDays","inDays","dateDayOfYear","dateFieldsMap","dateMillisecondsInDay","dateTimezoneHourFormat","absOffset","dateFormat","dateField","ceil","getSeconds","getMilliseconds","dateToPartsFormatterFn","optionsHasStyle","validateOptionsPreset","validateOptionsPresetEach","validateOptionsSkeleton","validateRequiredIana","loadTimeZone","customData","dateFormatter","ianaListener","dateParser","formatDateToParts","MessageFormat","propname","jkey","pluralFunc","formatters","lc","runtime","pluralFuncs","fmt","_parse","peg$subclass","child","ctor","SyntaxError","input","peg$result","peg$FAILED","peg$startRuleFunctions","peg$parsestart","peg$startRuleFunction","peg$c1","st","statements","peg$c2","peg$c3","peg$c4","peg$c5","peg$c6","peg$c7","peg$c8","peg$c9","peg$c10","argIdx","efmt","res","argumentIndex","elementFormat","output","peg$c11","peg$c12","peg$c13","peg$c14","peg$c15","peg$c16","peg$c17","peg$c18","peg$c19","op","pf","pluralForms","peg$c20","peg$c21","peg$c22","peg$c23","peg$c24","peg$c25","mfp","peg$c26","peg$c27","peg$c28","peg$c29","peg$c30","peg$c31","peg$c32","peg$c33","peg$c34","peg$c35","peg$c36","peg$c37","peg$c38","peg$c39","peg$c40","peg$c41","chars","peg$c42","peg$c43","peg$c44","peg$c45","peg$c46","peg$c47","peg$c48","peg$c49","peg$c50","peg$c51","peg$c52","peg$c53","peg$c54","peg$c55","peg$c56","peg$c57","peg$c58","peg$c59","h1","h2","h3","h4","fromCharCode","peg$c60","peg$c61","peg$c62","ds","peg$c63","peg$c64","peg$c65","peg$c66","peg$c67","peg$c68","peg$currPos","peg$cachedPos","peg$cachedPosDetails","seenCR","peg$maxFailPos","peg$maxFailExpected","peg$silentFails","startRule","peg$computePosDetails","pos","advance","startPos","endPos","ch","peg$fail","peg$buildException","cleanupExpected","buildMessage","stringEscape","hex","expectedDescs","posDetails","peg$parsemessageFormatPattern","s1","s2","peg$parsemessageFormatElement","peg$parsestring","peg$parseoctothorpe","s0","s3","s4","s5","s6","peg$parse_","peg$parseid","peg$parseelementFormat","peg$parsepluralFormatPattern","peg$parseselectFormatPattern","peg$parseargStylePattern","peg$parseoffsetPattern","peg$parsepluralForm","peg$parsedigits","s8","peg$parsepluralKey","peg$parseselectForm","peg$parsechars","peg$parsewhitespace","peg$parsechar","peg$parsehexDigit","plurals","lcfunc","isOrdinal","other","_stringify","level","funcStr","_precompile","ast","tmp","pf_count","withIntlSupport","needOther","data_copy","compile","messages","lc0","compileMsg","Function","ns","global","validateMessageBundle","validateMessagePresence","validateMessageType","validateParameterTypeMessageVariables","messageFormatterFn","formatter","variables","messageFormatterRuntimeBind","messageformatter","origToString","loadMessages","messageFormatter","numberFormatterFn","nu","numberCompact","compactType","maxExponent","compactKey","numberExponent","_type","numberPatternRe","numberPatternProperties","aux1","aux2","fractionPattern","integerFractionOrSignificantPattern","integerPattern","maximumSignificantDigits","minimumIntegerDigits","minimumSignificantDigits","primaryGroupingSize","roundIncrement","scientificNotation","secondaryGroupingSize","significantPattern","_match","minimumSignificantDigitsMatch","maximumSignificantDigitsMatch","numberSymbolName","numberSymbolMap","symbolMap","numberTruncate","NaN","numberRound","incrementOrExp","exp","exponent","toExponential","numberFormatProperties","negativePattern","negativePrefix","negativeProperties","negativeSuffix","positivePattern","roundFn","getOptions","propertyIndex","compact","useGrouping","regexpCfG","regexpDashG","regexpZsG","numberParse","grammar","invertedNuDigitsMap","invertedSymbolMap","negative","prefixNSuffix","tokenizer","tokenizeNParse","statement","numberParserFn","numberSymbolInvertedMap","objectMap","numberParseProperties","decimalSymbolRe","groupingSeparatorRe","infinitySymbol","nanSymbol","nuDigitsMap","numberTokenizer","formatProperties","localizedDigit","literal","infinity","nan","numberCompactPatternRe","numberFormatGroupingSeparator","currentGroupingSize","switchToSecondary","numberFormatIntegerFractionDigits","numberToPrecision","precision","roundOrder","numberFormatSignificantDigits","atMinimum","atMaximum","numberFormat","compactMap","stringToParts","compactPattern","compactProperties","divisor","numberType","digit","etc","isFinite","_garbage","space","numberToPartsFormatterFn","validateDigits","fnArgs","formatNumberToParts","parseNumber","MakePlural","_toArray","arr","_toConsumableArray","arr2","_classCallCheck","Constructor","TypeError","_createClass","defineProperties","descriptor","enumerable","configurable","writable","protoProps","staticProps","Parser","cond","v0","sym","noteq","sn","se","_vars","vars","n10","n100","k0","cardinals","ordinals","cardinal","ordinal","parser","buildFunction","_obj","fnToString","req","cases","rules","_rules$r$trim$split","_rules$r$trim$split2","cat","_this3","fold","validateParameterTypePluralType","pluralGeneratorFn","relativeTimeFormat","relativeTimeFormatterFn","relativeTimeProperties","formatRelativeTime","relativeTimeFormatter","unitFormat","unitProperties","dividend","dividendProperties","formattedValue","divisorProperties","pluralValue","oneProperty","compoundUnitPattern","unitFormatterFn","unitCategories","stripPluralGarbage","pluralCount","unitGet","formatUnit","unitFormatter","__assign","named_references_1","numeric_unicode_map_1","surrogate_pairs_1","allNamedReferences","namedReferences","all","replaceUsingRegExp","macroText","macroRegExp","macroReplacer","replaceResult","replaceMatch","replaceLastIndex","replaceInput","encodeRegExps","specialChars","nonAscii","nonAsciiPrintable","nonAsciiPrintableOnly","extensive","defaultEncodeOptions","mode","encode","_a","_b","_c","_d","_e","encodeRegExp","references","characters","isHex","getCodePoint","defaultDecodeOptions","scope","strict","baseDecodeRegExps","xml","bodyRegExps","html4","decodeRegExps","outOfBoundsChar","defaultDecodeEntityOptions","getDecodedEntity","entity","isAttribute","isStrict","decodeResult","decodeEntityLastChar","decodeResultByReference","decodeSecondChar","decodeCode","fromCodePoint","numericUnicodeMap","decodeEntity","entities","decodeRegExp","$","fj","astralCodePoint","codePointAt","highSurrogateFrom","highSurrogateTo","_extends","Symbol","iterator","_arr","_n","_s","_i","sliceIterator","_inherits","subClass","superClass","setPrototypeOf","getOwnPropertyNames","getOwnPropertyDescriptor","_defaults","Connector","_EventEmitter","backend","store","services","ReferenceError","_possibleConstructorReturn","languageUtils","logger","queueLoad","languages","namespaces","_this2","toLoad","pending","toLoadLanguages","toLoadNamespaces","hasAllNamespaces","reload","hasResourceBundle","errors","_name$split","_name$split2","addResourceBundle","what","read","fcName","tried","wait","prepareLoading","_this4","toResolveHierarchy","loadOne","_this5","_name$split3","_name$split4","saveMissing","isUpdate","addResource","observers","Interpolator","interpolation","escapeValue","iOpts","useRawValueToEscape","prefixEscaped","suffixEscaped","formatSeparator","unescapePrefix","unescapeSuffix","nestingPrefix","nestingPrefixEscaped","nestingSuffix","nestingSuffixEscaped","maxReplaces","resetRegExp","reset","regexpStr","regexpUnescapeStr","regexpUnescape","nestingRegexpStr","nestingRegexp","replaces","regexSafe","handleFormat","missingInterpolationHandler","temp","nest","fc","clonedOptions","handleHasOptions","inheritedOptions","optionsString","applyPostProcessor","LanguageUtil","whitelist","getScriptPartFromCode","formatLanguageCode","getLanguagePartFromCode","specialCases","lowerCaseLng","cleanCode","isWhitelisted","nonExplicitWhitelist","getFallbackCodes","fallbacks","default","fallbackCode","fallbackCodes","fallbackLng","codes","addCode","sets","lngs","nr","_rulesPluralsTypes","PluralResolver","numbers","addRule","getRule","needsPlural","getPluralFormsOfKey","getSuffix","noAbs","simplifyPluralSuffix","returnSuffix","compatibilityJSON","ResourceStore","defaultNS","keySeparator","addNamespaces","removeNamespaces","getResource","silent","addResources","deep","overwrite","pack","removeResourceBundle","getResourceBundle","compatibilityAPI","getDataByLanguage","toJSON","Translator","changeLanguage","resolved","extractFromKey","nsSeparator","translate","overloadTranslationOptionHandler","_extractFromKey","appendNamespaceToCIMode","resUsedKey","usedKey","resType","joinArrays","handleAsObjectInI18nFormat","i18nFormat","handleAsObject","returnObjects","returnedObjectHandler","deepKey","extendTranslation","usedDefault","isValidLookup","pluralResolver","updateMissing","fallbackLngs","saveMissingTo","missingKeyHandler","backendConnector","needsPluralHandling","saveMissingPlurals","appendNamespaceToMissingKey","parseMissingKeyHandler","usedLng","usedNS","skipInterpolation","interpolator","defaultVariables","postProcess","postProcessorNames","handle","extracted","fallbackNS","needsContextHandling","context","finalKey","finalKeys","addLookupKeys","pluralSuffix","contextSeparator","possibleKey","returnNull","returnEmptyString","resourceStore","initImmediate","pluralSeparator","tDescription","_format","transformOptions","I18n","modules","external","isInitialized","isClone","_ret","createClassOnDemand","ClassOrObject","lu","languageDetector","detection","translator","_store","loadResources","reloadResources","use","addPostProcessor","setLng","cacheUserLanguage","detect","getFixedT","fixedT","rest","_translator","_translator2","setDefaultNamespace","loadNamespaces","_this6","loadLanguages","preloaded","newLngs","dir","createInstance","cloneInstance","_this7","mergedOptions","consoleLogger","_console","Logger","concreteLogger","setDebug","forward","deprecate","lvl","debugOnly","moduleName","processors","processor","process","makeString","getLastOfPath","Empty","cleanKey","canNotTraverseDeeper","stack","setPath","newValue","_getLastOfPath","pushPath","_getLastOfPath2","getPath","_getLastOfPath3","deepExtend","regexEscape","_entityMap","ImagesLoaded","onAlways","queryElem","elements","getImages","jqDeferred","Deferred","addElementImages","addImage","addElementBackgroundImages","elementNodeTypes","childImgs","LoadingImage","Background","reURL","addBackground","loadingImage","onProgress","progressedCount","hasAnyBroken","isLoaded","notify","isComplete","jqMethod","getIsImageComplete","confirm","proxyImage","unbindEvents","makeJQueryPlugin","imagesLoaded","promise","IntersectionObserverEntry","registry","THROTTLE_TIMEOUT","POLL_INTERVAL","USE_MUTATION_OBSERVER","_observationTargets","_registerInstance","_monitorIntersections","_checkForIntersections","_unmonitorIntersections","_unregisterInstance","takeRecords","records","_queuedEntries","_initThresholds","opt_threshold","_parseRootMargin","opt_rootMargin","margins","margin","_monitoringIntersections","_monitoringInterval","addEvent","_domObserver","MutationObserver","childList","characterData","subtree","rootIsInDom","_rootIsInDom","rootRect","_getRootRect","targetRect","rootContainsTarget","_rootContainsTarget","oldEntry","intersectionRect","_computeTargetAndRootIntersection","newEntry","performance","boundingClientRect","rootBounds","_hasCrossedThreshold","isIntersecting","_callback","rect1","rect2","getParentNode","atRoot","parentRect","parentComputedStyle","_expandRectByRootMargin","_rootMarginValues","newRect","oldRatio","newRatio","thresholds","containsDeep","targetArea","intersectionArea","opt_options","rootMargin","opt_useCapture","detatchEvent","host","assignedSlot","getOwnPropertySymbols","propIsEnumerable","propertyIsEnumerable","test1","test2","test3","letter","shouldUseNative","symbols","toObject","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","componentName","propFullName","secret","getShim","isRequired","ReactPropTypes","bigint","any","arrayOf","elementType","instanceOf","objectOf","oneOf","oneOfType","exact","checkPropTypes","PropTypes","_react","__esModule","cache","_getRequireWildcardCache","has","newObj","hasPropertyDescriptor","desc","_interopRequireWildcard","_reactDom","_imagesloaded","_interopRequireDefault","_propTypes","WeakMap","_defineProperties","_setPrototypeOf","__proto__","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","_isNativeReflectConstruct","Super","_getPrototypeOf","NewTarget","_assertThisInitialized","getPrototypeOf","FlickityComponent","_Component","_super","flickityReady","flickityCreated","cellCount","flkty","Children","prevProps","_this$props","_this$props$options","reloadOnUpdate","disableImagesLoaded","_this$props2","setReady","setState","setFlickityToReady","mountNode","createPortal","renderPortal","Component","propTypes","defaultProps","_default","componentWillMount","getDerivedStateFromProps","componentWillReceiveProps","nextProps","componentWillUpdate","nextState","__reactInternalSnapshotFlag","__reactInternalSnapshot","getSnapshotBeforeUpdate","polyfill","isReactComponent","foundWillMountName","foundWillReceivePropsName","foundWillUpdateName","UNSAFE_componentWillMount","UNSAFE_componentWillReceiveProps","UNSAFE_componentWillUpdate","newApiName","componentDidUpdate","maybeSnapshot","snapshot","__suppressDeprecationWarning","bodyOpenClassName","portalClassName","_react2","_reactDom2","_propTypes2","_ModalPortal2","ariaAppHider","_safeHTMLElement","_safeHTMLElement2","_reactLifecyclesCompat","isReact16","createHTMLElement","getCreatePortal","unstable_renderSubtreeIntoContainer","getParentElement","parentSelector","_temp","removePortal","unmountComponentAtNode","portalRef","portal","defaultStyles","prevParent","nextParent","_props","closesAt","closeWithTimeout","setElement","overlay","htmlOpenClassName","appElement","SafeHTMLCollection","SafeNodeList","onAfterOpen","ariaHideApp","shouldCloseOnOverlayClick","shouldReturnFocusAfterClose","aria","shouldCloseOnEsc","overlayRef","contentRef","overlayElement","contentElement","contentEl","WebkitOverflowScrolling","borderRadius","outline","focusManager","_scopeTab2","_portalOpenInstances2","CLASS_NAMES","ariaHiddenInstances","ModalPortal","setOverlayRef","setContentRef","afterClose","parentDocument","ownerDocument","returnFocus","teardownScopedFocus","popWithoutFocus","onAfterClose","deregister","beforeOpen","closeTimer","setupScopedFocus","markForFocusLater","openAnimationFrame","overlayEl","closeWithoutTimeout","focusContent","contentHasFocus","handleKeyDown","isTabKey","isEscKey","requestClose","handleOverlayOnClick","shouldClose","ownerHandlesClose","handleContentOnMouseUp","handleOverlayOnMouseDown","handleContentOnClick","handleContentOnMouseDown","shouldBeClosed","buildClassName","which","additional","attributesFromObject","moveFromContentToOverlay","register","_props2","contentStyles","overlayStyles","overlayProps","onMouseDown","contentProps","onKeyDown","onMouseUp","modal","testId","resetState","globalElement","assertNodeList","useElement","validateElement","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","return","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","documentNotReadyOrSSRTesting","_warning","_warning2","nodeList","HTMLCollection","NodeList","before","after","_arr2","_i2","_portalOpenInstances","subscribe","eventType","openInstances","htmlElement","cls","htmlClassList","removeClass","_cls","docBodyClassList","at","classString","classListRef","poll","incrementReference","decrementReference","focusLaterElements","handleFocus","toFocus","modalElement","detachEvent","_tabbable","_tabbable2","needToFocus","portalOpenInstances","PortalOpenInstances","openInstance","subscribers","subscriber","_exenv","EE","SafeHTMLElement","tabbable","head","tail","getActiveElement","checkSafari","shadowRoot","findTabbableDescendants","descendants","finished","DISPLAY_NONE","DISPLAY_CONTENTS","tabbableNode","hidesContents","zeroSize","displayValue","isNotOverflowing","exception","focusable","isTabIndexNotNaN","rootNode","visible","isTabIndexNaN","_Modal","_Modal2","MessageChannel","unstable_now","unstable_forceFrameRate","B","D","G","H","port2","port1","onmessage","J","K","sortIndex","N","Q","U","V","startTime","expirationTime","W","X","priorityLevel","Y","Z","unstable_IdlePriority","unstable_ImmediatePriority","unstable_LowPriority","unstable_NormalPriority","unstable_Profiling","unstable_UserBlockingPriority","unstable_cancelCallback","unstable_continueExecution","unstable_getCurrentPriorityLevel","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_requestPaint","unstable_runWithPriority","unstable_scheduleCallback","delay","unstable_shouldYield","unstable_wrapCallback","_bindHandles","isAdd","bindMethod","touchAction","_bindStartEvent","PointerEvent","cursorNodes","OPTION","clickTypes","radio","checkbox","submit","file","isCursorNode","isClickType","isOkay","_pointerReset","focused","_dragStart","_dragEnd","_staticClick","isPreventingClicks","isIgnoringMouseUp","getPointerPoint","startEvent","getTouch","pointerIdentifier","onmousedown","_pointerDown","ontouchstart","onpointerdown","pointerId","postStartEvents","mousedown","touchstart","pointerdown","_boundPointerEvents","_unbindPostStartEvents","onmousemove","_pointerMove","onpointermove","ontouchmove","onmouseup","_pointerUp","onpointerup","ontouchend","onpointercancel","_pointerCancel","ontouchcancel","pointerCancel","warning","asyncIterator","toStringTag","define","Generator","Context","makeInvokeMethod","tryCatch","arg","GeneratorFunction","GeneratorFunctionPrototype","defineIteratorMethods","_invoke","AsyncIterator","invoke","__await","callInvokeWithMethodAndArg","maybeInvokeDelegate","_sent","dispatchException","resultName","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","isGeneratorFunction","mark","awrap","rval","finish","delegateYield","regeneratorRuntime","accidentalStrictMode","globalThis","_arrayLikeToArray","_arrayWithHoles","asyncGeneratorStep","_next","_throw","_iterableToArrayLimit","_nonIterableRest","toPrimitive","toPropertyKey","_unsupportedIterableToArray","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","chunkIds","priority","notFulfilled","fulfilled","getter","definition","chunkId","promises","miniCssF","hmd","needAttach","scripts","charset","nc","onScriptComplete","doneFns","nmd","paths","loadStylesheet","fullhref","existingLinkTags","dataHref","existingStyleTags","findStylesheet","oldTag","linkTag","nonce","errorType","realHref","request","createStylesheet","installedCssChunks","miniCss","installedChunks","installedChunkData","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}