{"version":3,"file":"1618.79669fb13fe3cc12a298.js","mappings":"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C,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,YAAY,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,YAAY,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,YAAY,KAAK,CAAC,QAAQ,KAAK,CAAC,YAAY,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,aAAa,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,6BAA6B,KAAK,CAAC,aAAa,KAAK,CAAC,aAAa,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,aAAa,KAAK,CAAC,OAAO,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,YAAY,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,YAAY,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,OAAO,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,YAAY,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,aAAa,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,mBAAmB,KAAK,CAAC,mBAAmB,KAAK,CAAC,mBAAmB,KAAK,CAAC,mBAAmB,KAAK,CAAC,QAAQ,KAAK,CAAC,mBAAmB,KAAK,CAAC,mBAAmB,KAAK,CAAC,mBAAmB,KAAK,CAAC,mBAAmB,KAAK,CAAC,mBAAmB,KAAK,CAAC,mBAAmB,KAAK,CAAC,mBAAmB,KAAK,CAAC,mBAAmB,KAAK,CAAC,uBAAuB,KAAK,CAAC,uBAAuB,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,uBAAuB,KAAK,CAAC,uBAAuB,KAAK,CAAC,QAAQ,KAAK,CAAC,uBAAuB,KAAK,CAAC,uBAAuB,KAAK,CAAC,QAAQ,KAAK,CAAC,uBAAuB,KAAK,CAAC,uBAAuB,KAAK,CAAC,QAAQ,KAAK,CAAC,uBAAuB,KAAK,CAAC,uBAAuB,KAAK,CAAC,QAAQ,KAAK,CAAC,uBAAuB,KAAK,CAAC,uBAAuB,KAAK,CAAC,QAAQ,KAAK,CAAC,uBAAuB,KAAK,CAAC,uBAAuB,KAAK,CAAC,QAAQ,KAAK,CAAC,uBAAuB,KAAK,CAAC,uBAAuB,KAAK,CAAC,QAAQ,KAAK,CAAC,uBAAuB,KAAK,CAAC,uBAAuB,KAAK,CAAC,QAAQ,KAAK,CAAC,uBAAuB,KAAK,CAAC,uBAAuB,KAAK,CAAC,QAAQ,KAAK,CAAC,uBAAuB,KAAK,CAAC,uBAAuB,KAAK,CAAC,uBAAuB,KAAK,CAAC,uBAAuB,KAAK,CAAC,uBAAuB,KAAK,CAAC,mBAAmB,KAAK,CAAC,mBAAmB,KAAK,CAAC,mBAAmB,KAAK,CAAC,mBAAmB,KAAK,CAAC,mBAAmB,KAAK,CAAC,mBAAmB,KAAK,CAAC,uBAAuB,KAAK,CAAC,uBAAuB,KAAK,CAAC,uBAAuB,KAAK,CAAC,mBAAmB,KAAK,CAAC,mBAAmB,KAAK,CAAC,mBAAmB,KAAK,CAAC,mBAAmB,KAAK,CAAC,mBAAmB,KAAK,CAAC,mBAAmB,KAAK,CAAC,mBAAmB,KAAK,CAAC,mBAAmB,KAAK,CAAC,mBAAmB,KAAK,CAAC,mBAAmB,KAAK,CAAC,mBAAmB,KAAK,CAAC,mBAAmB,KAAK,CAAC,mBAAmB,KAAK,CAAC,mBAAmB,KAAK,CAAC,mBAAmB,KAAK,CAAC,mBAAmB,KAAK,CAAC,mBAAmB,KAAK,CAAC,mBAAmB,KAAK,CAAC,mBAAmB,KAAK,CAAC,mBAAmB,KAAK,CAAC,mBAAmB,KAAK,CAAC,mBAAmB,KAAK,CAAC,mBAAmB,KAAK,CAAC,mBAAmB,KAAK,CAAC,mBAAmB,KAAK,CAAC,mBAAmB,KAAK,CAAC,mBAAmB,KAAK,CAAC,uBAAuB,KAAK,CAAC,uBAAuB,KAAK,CAAC,uBAAuB,KAAK,CAAC,mBAAmB,KAAK,CAAC,mBAAmB,KAAK,CAAC,mBAAmB,KAAK,CAAC,mBAAmB,KAAK,CAAC,mBAAmB,KAAK,CAAC,mBAAmB,KAAK,CAAC,QAAQ,KAAK,CAAC,uBAAuB,KAAK,CAAC,uBAAuB,KAAK,CAAC,aAAa,KAAK,CAAC,4BAA4B,KAAK,CAAC,4BAA4B,KAAK,CAAC,QAAQ,KAAK,CAAC,uBAAuB,KAAK,CAAC,uBAAuB,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,uBAAuB,KAAK,CAAC,uBAAuB,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,uBAAuB,KAAK,CAAC,uBAAuB,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,uBAAuB,KAAK,CAAC,uBAAuB,KAAK,CAAC,QAAQ,KAAK,CAAC,uBAAuB,KAAK,CAAC,uBAAuB,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,mBAAmB,KAAK,CAAC,mBAAmB,KAAK,CAAC,mBAAmB,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,mBAAmB,KAAK,CAAC,QAAQ,KAAK,CAAC,uBAAuB,KAAK,CAAC,uBAAuB,KAAK,CAAC,QAAQ,KAAK,CAAC,uBAAuB,KAAK,CAAC,uBAAuB,KAAK,CAAC,QAAQ,KAAK,CAAC,uBAAuB,KAAK,CAAC,uBAAuB,KAAK,CAAC,QAAQ,KAAK,CAAC,uBAAuB,KAAK,CAAC,uBAAuB,KAAK,CAAC,QAAQ,KAAK,CAAC,uBAAuB,KAAK,CAAC,uBAAuB,KAAK,CAAC,QAAQ,KAAK,CAAC,uBAAuB,KAAK,CAAC,uBAAuB,KAAK,CAAC,QAAQ,KAAK,CAAC,uBAAuB,KAAK,CAAC,uBAAuB,KAAK,CAAC,QAAQ,KAAK,CAAC,uBAAuB,KAAK,CAAC,uBAAuB,KAAK,CAAC,QAAQ,KAAK,CAAC,uBAAuB,KAAK,CAAC,uBAAuB,KAAK,CAAC,QAAQ,KAAK,CAAC,uBAAuB,KAAK,CAAC,uBAAuB,KAAK,CAAC,QAAQ,KAAK,CAAC,uBAAuB,KAAK,CAAC,uBAAuB,KAAK,CAAC,QAAQ,KAAK,CAAC,uBAAuB,KAAK,CAAC,uBAAuB,KAAK,CAAC,QAAQ,KAAK,CAAC,uBAAuB,KAAK,CAAC,uBAAuB,KAAK,CAAC,QAAQ,KAAK,CAAC,uBAAuB,KAAK,CAAC,uBAAuB,KAAK,CAAC,mBAAmB,KAAK,CAAC,mBAAmB,KAAK,CAAC,mBAAmB,KAAK,CAAC,mBAAmB,KAAK,CAAC,mBAAmB,KAAK,CAAC,mBAAmB,KAAK,CAAC,mBAAmB,KAAK,CAAC,mBAAmB,KAAK,CAAC,mBAAmB,KAAK,CAAC,QAAQ,KAAK,CAAC,uBAAuB,KAAK,CAAC,uBAAuB,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,aAAa,KAAK,CAAC,QAAQ,KAAK,CAAC,uBAAuB,KAAK,CAAC,uBAAuB,KAAK,CAAC,QAAQ,KAAK,CAAC,uBAAuB,KAAK,CAAC,uBAAuB,KAAK,CAAC,QAAQ,KAAK,CAAC,uBAAuB,KAAK,CAAC,uBAAuB,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,YAAY,KAAK,CAAC,QAAQ,KAAK,CAAC,aAAa,KAAK,CAAC,4BAA4B,KAAK,CAAC,4BAA4B,KAAK,CAAC,QAAQ,KAAK,CAAC,uBAAuB,KAAK,CAAC,uBAAuB,KAAK,CAAC,QAAQ,KAAK,CAAC,uBAAuB,KAAK,CAAC,uBAAuB,KAAK,CAAC,QAAQ,KAAK,CAAC,uBAAuB,KAAK,CAAC,uBAAuB,KAAK,CAAC,YAAY,KAAK,CAAC,2BAA2B,KAAK,CAAC,2BAA2B,KAAK,CAAC,aAAa,KAAK,CAAC,4BAA4B,KAAK,CAAC,4BAA4B,KAAK,CAAC,QAAQ,KAAK,CAAC,uBAAuB,KAAK,CAAC,uBAAuB,KAAK,CAAC,QAAQ,KAAK,CAAC,uBAAuB,KAAK,CAAC,uBAAuB,KAAK,CAAC,QAAQ,KAAK,CAAC,uBAAuB,KAAK,CAAC,uBAAuB,KAAK,CAAC,QAAQ,KAAK,CAAC,uBAAuB,KAAK,CAAC,uBAAuB,KAAK,CAAC,QAAQ,KAAK,CAAC,uBAAuB,KAAK,CAAC,uBAAuB,KAAK,CAAC,QAAQ,KAAK,CAAC,uBAAuB,KAAK,CAAC,uBAAuB,KAAK,CAAC,QAAQ,KAAK,CAAC,uBAAuB,KAAK,CAAC,uBAAuB,KAAK,CAAC,QAAQ,KAAK,CAAC,uBAAuB,KAAK,CAAC,uBAAuB,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,8BAA8B,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,6CAA6C,KAAK,CAAC,6CAA6C,KAAK,CAAC,6CAA6C,KAAK,CAAC,QAAQ,KAAK,CAAC,kCAAkC,KAAK,CAAC,kCAAkC,KAAK,CAAC,kCAAkC,KAAK,CAAC,QAAQ,KAAK,CAAC,8BAA8B,KAAK,CAAC,8BAA8B,KAAK,CAAC,yCAAyC,KAAK,CAAC,yCAAyC,KAAK,CAAC,yCAAyC,KAAK,CAAC,8BAA8B,KAAK,CAAC,8BAA8B,KAAK,CAAC,yCAAyC,KAAK,CAAC,yCAAyC,KAAK,CAAC,yCAAyC,KAAK,CAAC,8BAA8B,KAAK,CAAC,8BAA8B,KAAK,CAAC,yCAAyC,KAAK,CAAC,yCAAyC,KAAK,CAAC,yCAAyC,KAAK,CAAC,mBAAmB,KAAK,CAAC,8BAA8B,KAAK,CAAC,mBAAmB,KAAK,CAAC,8BAA8B,KAAK,CAAC,8BAA8B,KAAK,CAAC,mBAAmB,KAAK,CAAC,8BAA8B,KAAK,CAAC,mBAAmB,KAAK,CAAC,8BAA8B,KAAK,CAAC,8BAA8B,KAAK,CAAC,aAAa,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,mBAAmB,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,kBAAkB,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,aAAa,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,uBAAuB,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,aAAa,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,aAAa,KAAK,CAAC,aAAa,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,aAAa,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,YAAY,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,aAAa,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,OAAO,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,aAAa,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,aAAa,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,aAAa,KAAK,CAAC,YAAY,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,aAAa,KAAK,CAAC,aAAa,KAAK,CAAC,aAAa,KAAK,CAAC,aAAa,KAAK,CAAC,aAAa,KAAK,CAAC,aAAa,KAAK,CAAC,aAAa,KAAK,CAAC,aAAa,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,aAAa,KAAK,CAAC,aAAa,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,OAAO,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,YAAY,KAAK,CAAC,QAAQ,KAAK,CAAC,OAAO,KAAK,CAAC,OAAO,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,aAAa,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,YAAY,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,aAAa,KAAK,CAAC,aAAa,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,aAAa,KAAK,CAAC,aAAa,KAAK,CAAC,aAAa,KAAK,CAAC,OAAO,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,OAAO,KAAK,CAAC,OAAO,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,aAAa,KAAK,CAAC,YAAY,KAAK,CAAC,aAAa,KAAK,CAAC,QAAQ,KAAK,CAAC,YAAY,KAAK,CAAC,aAAa,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,aAAa,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,aAAa,KAAK,CAAC,QAAQ,KAAK,CAAC,OAAO,KAAK,CAAC,OAAO,KAAK,CAAC,OAAO,KAAK,CAAC,OAAO,KAAK,CAAC,YAAY,KAAK,CAAC,YAAY,KAAK,CAAC,aAAa,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,aAAa,KAAK,CAAC,YAAY,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,OAAO,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,YAAY,KAAK,CAAC,OAAO,KAAK,CAAC,YAAY,KAAK,CAAC,aAAa,KAAK,CAAC,aAAa,KAAK,CAAC,aAAa,KAAK,CAAC,aAAa,KAAK,CAAC,aAAa,KAAK,CAAC,aAAa,KAAK,CAAC,aAAa,KAAK,CAAC,aAAa,KAAK,CAAC,aAAa,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,YAAY,KAAK,CAAC,OAAO,KAAK,CAAC,YAAY,KAAK,CAAC,OAAO,KAAK,CAAC,YAAY,KAAK,CAAC,YAAY,KAAK,CAAC,OAAO,KAAK,CAAC,YAAY,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,OAAO,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,KAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,aAAa,MAAM,CAAC,aAAa,MAAM,CAAC,QAAQ,MAAM,CAAC,aAAa,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,OAAO,MAAM,CAAC,OAAO,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,OAAO,MAAM,CAAC,YAAY,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,aAAa,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,YAAY,MAAM,CAAC,YAAY,MAAM,CAAC,YAAY,MAAM,CAAC,YAAY,MAAM,CAAC,YAAY,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,aAAa,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,aAAa,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,aAAa,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,YAAY,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,aAAa,MAAM,CAAC,aAAa,MAAM,CAAC,aAAa,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,YAAY,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,aAAa,MAAM,CAAC,aAAa,MAAM,CAAC,YAAY,MAAM,CAAC,aAAa,MAAM,CAAC,aAAa,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,aAAa,MAAM,CAAC,aAAa,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,aAAa,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,aAAa,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,aAAa,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,YAAY,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,aAAa,MAAM,CAAC,YAAY,MAAM,CAAC,YAAY,MAAM,CAAC,aAAa,MAAM,CAAC,aAAa,MAAM,CAAC,aAAa,MAAM,CAAC,aAAa,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,aAAa,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,aAAa,MAAM,CAAC,aAAa,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,aAAa,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,YAAY,MAAM,CAAC,aAAa,MAAM,CAAC,aAAa,MAAM,CAAC,aAAa,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,aAAa,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,YAAY,MAAM,CAAC,YAAY,MAAM,CAAC,aAAa,MAAM,CAAC,aAAa,MAAM,CAAC,YAAY,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,aAAa,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,YAAY,MAAM,CAAC,aAAa,MAAM,CAAC,YAAY,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,YAAY,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,YAAY,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,aAAa,MAAM,CAAC,aAAa,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,YAAY,MAAM,CAAC,QAAQ,MAAM,CAAC,YAAY,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,OAAO,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,YAAY,MAAM,CAAC,QAAQ,MAAM,CAAC,OAAO,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,YAAY,MAAM,CAAC,YAAY,MAAM,CAAC,YAAY,MAAM,CAAC,YAAY,MAAM,CAAC,YAAY,MAAM,CAAC,YAAY,MAAM,CAAC,YAAY,MAAM,CAAC,YAAY,MAAM,CAAC,YAAY,MAAM,CAAC,YAAY,MAAM,CAAC,YAAY,MAAM,CAAC,YAAY,MAAM,CAAC,YAAY,MAAM,CAAC,YAAY,MAAM,CAAC,YAAY,MAAM,CAAC,YAAY,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,YAAY,MAAM,CAAC,aAAa,MAAM,CAAC,YAAY,MAAM,CAAC,YAAY,MAAM,CAAC,YAAY,MAAM,CAAC,YAAY,MAAM,CAAC,YAAY,MAAM,CAAC,YAAY,MAAM,CAAC,YAAY,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,OAAO,MAAM,CAAC,OAAO,MAAM,CAAC,OAAO,MAAM,CAAC,OAAO,MAAM,CAAC,OAAO,MAAM,CAAC,OAAO,MAAM,CAAC,OAAO,MAAM,CAAC,OAAO,MAAM,CAAC,OAAO,MAAM,CAAC,OAAO,MAAM,CAAC,OAAO,MAAM,CAAC,OAAO,MAAM,CAAC,OAAO,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,YAAY,MAAM,CAAC,OAAO,MAAM,CAAC,YAAY,MAAM,CAAC,YAAY,MAAM,CAAC,YAAY,MAAM,CAAC,OAAO,MAAM,CAAC,YAAY,MAAM,CAAC,QAAQ,MAAM,CAAC,OAAO,MAAM,CAAC,QAAQ,MAAM,CAAC,OAAO,MAAM,CAAC,YAAY,MAAM,CAAC,YAAY,MAAM,CAAC,YAAY,MAAM,CAAC,YAAY,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,YAAY,MAAM,CAAC,YAAY,MAAM,CAAC,YAAY,MAAM,CAAC,YAAY,MAAM,CAAC,OAAO,MAAM,CAAC,OAAO,MAAM,CAAC,OAAO,MAAM,CAAC,YAAY,MAAM,CAAC,YAAY,MAAM,CAAC,YAAY,MAAM,CAAC,OAAO,MAAM,CAAC,OAAO,MAAM,CAAC,OAAO,MAAM,CAAC,OAAO,MAAM,CAAC,YAAY,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,YAAY,MAAM,CAAC,YAAY,MAAM,CAAC,YAAY,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,OAAO,MAAM,CAAC,OAAO,MAAM,CAAC,YAAY,MAAM,CAAC,YAAY,MAAM,CAAC,OAAO,MAAM,CAAC,OAAO,MAAM,CAAC,OAAO,MAAM,CAAC,OAAO,MAAM,CAAC,YAAY,MAAM,CAAC,YAAY,MAAM,CAAC,YAAY,MAAM,CAAC,YAAY,MAAM,CAAC,YAAY,MAAM,CAAC,YAAY,MAAM,CAAC,YAAY,MAAM,CAAC,iBAAiB,MAAM,CAAC,iBAAiB,MAAM,CAAC,iBAAiB,MAAM,CAAC,iBAAiB,MAAM,CAAC,iBAAiB,MAAM,CAAC,iBAAiB,MAAM,CAAC,iBAAiB,MAAM,CAAC,iBAAiB,MAAM,CAAC,iBAAiB,MAAM,CAAC,iBAAiB,MAAM,CAAC,iBAAiB,MAAM,CAAC,iBAAiB,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,aAAa,MAAM,CAAC,QAAQ,MAAM,CAAC,aAAa,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,YAAY,MAAM,CAAC,QAAQ,MAAM,CAAC,YAAY,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,aAAa,MAAM,CAAC,QAAQ,MAAM,CAAC,aAAa,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,aAAa,MAAM,CAAC,aAAa,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,YAAY,MAAM,CAAC,YAAY,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,OAAO,MAAM,CAAC,OAAO,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,OAAO,MAAM,CAAC,OAAO,MAAM,CAAC,YAAY,MAAM,CAAC,YAAY,MAAM,CAAC,OAAO,MAAM,CAAC,OAAO,MAAM,CAAC,YAAY,MAAM,CAAC,YAAY,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM,CAAC,aAAa,MAAM,CAAC,wBAAwB,MAAM,CAAC,4BAA4B,MAAM,CAAC,uBAAuB,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,4CAA4C,MAAM,CAAC,4CAA4C,MAAM,CAAC,4CAA4C,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,KAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,KAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,0CAA0C,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,yBAAyB,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,cAAc,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,6BAA6B,MAAM,CAAC,cAAc,MAAM,CAAC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,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,cAAc,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,OAAO,CAAC,YAAY,CAAC,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,iBAAiB,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,aAAa,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,gBAAgB,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,aAAa,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,OAAO,CAAC,UAAU,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,OAAO,CAAC,UAAU,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,OAAO,CAAC,QAAQ,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,OAAO,CAAC,SAAS,CAAC,SAEzte,IAAIA,IAAI,CAAC,CAAC,UAAW,IAAIA,IAAI,CAAC,CAAC,cAAc,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,SAAU,CAAC,QAAS,IAAIA,IAAI,CAAC,CAAC,cAAc,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,UAAW,CAAC,QAAS,IAAIA,IAAI,CAAC,CAAC,cAAc,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,UAAW,CAAC,QAAS,IAAIA,IAAI,CAAC,CAAC,cAAc,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,UAAW,CAAC,QAAS,IAAIA,IAAI,CAAC,CAAC,cAAc,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,UAAW,CAAC,QAAS,IAAIA,IAAI,CAAC,CAAC,cAAc,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,aACxpRsnB,EAA+B,IAAItnB,IAAI,CAAC,CAAC,kBAAkB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,cAAc,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,iBAAiB,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,aAAa,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,gBAAgB,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,aAAa,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,OAAO,CAAC,UAAU,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,OAAO,CAAC,UAAU,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,OAAO,CAAC,QAAQ,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,K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C,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IAKHC,EAAG,KAKHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IAGHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IAIHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IAEHC,EAAG,KACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,KACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IAGHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,KACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,KACHC,EAAG,KACHC,EAAG,IACHC,EAAG,IACHC,EAAG,KACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IAEHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IAEHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IAGHC,EAAG,KAEHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IAQHC,EAAG,IAEHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,KAEHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IAEHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IAGHC,EAAG,KACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IAEHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IAEHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,KACHC,EAAG,KAsBHC,EAAG,IACHC,EAAG,KACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IAGHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,KACHC,EAAG,IACHC,EAAG,KACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IAEHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IAQHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,KACHC,EAAG,KACHC,EAAG,KACHC,EAAG,KAGHC,EAAG,KACHC,EAAG,KACHC,EAAG,KACHC,EAAG,KACHC,EAAG,KACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IAGHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IAOHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IAIHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IAEHC,EAAG,KAGHC,EAAG,KACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IAQHC,EAAG,KAQHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IAEHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IAGHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IAIHC,EAAG,KACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IAGHC,EAAG,KACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IAEHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IAGHC,EAAG,KACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IAIHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IAKHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,KAEHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EA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","sources":["webpack://mattermost-webapp/./src/actions/channel_actions.ts","webpack://mattermost-webapp/./src/actions/emoji_actions.js","webpack://mattermost-webapp/./src/actions/hooks.js","webpack://mattermost-webapp/./src/actions/notification_actions.jsx","webpack://mattermost-webapp/./src/components/reaction_limit_reached_modal.tsx","webpack://mattermost-webapp/./src/actions/post_actions.ts","webpack://mattermost-webapp/./src/actions/new_post.ts","webpack://mattermost-webapp/./src/actions/status_actions.ts","webpack://mattermost-webapp/./src/actions/team_actions.ts","webpack://mattermost-webapp/./src/actions/telemetry_actions.jsx","webpack://mattermost-webapp/./src/actions/user_actions.ts","webpack://mattermost-webapp/./src/actions/views/drafts.ts","webpack://mattermost-webapp/./src/actions/views/modals.ts","webpack://mattermost-webapp/./src/actions/views/rhs.ts","webpack://mattermost-webapp/./src/actions/views/threads.ts","webpack://mattermost-webapp/./src/components/confirm_modal.tsx","webpack://mattermost-webapp/./src/components/external_link/index.tsx","webpack://mattermost-webapp/./src/components/permalink_view/actions.ts","webpack://mattermost-webapp/./src/i18n/i18n.jsx","webpack://mattermost-webapp/./src/packages/mattermost-redux/src/actions/search.ts","webpack://mattermost-webapp/./src/packages/mattermost-redux/src/selectors/entities/search.ts","webpack://mattermost-webapp/./src/packages/mattermost-redux/src/selectors/entities/timezone.ts","webpack://mattermost-webapp/./src/selectors/drafts.ts","webpack://mattermost-webapp/./src/selectors/emojis.ts","webpack://mattermost-webapp/./src/selectors/i18n.ts","webpack://mattermost-webapp/./src/selectors/posts.ts","webpack://mattermost-webapp/./src/selectors/preferences.ts","webpack://mattermost-webapp/./src/selectors/rhs.ts","webpack://mattermost-webapp/./src/selectors/storage.ts","webpack://mattermost-webapp/./src/selectors/urls.ts","webpack://mattermost-webapp/./src/selectors/views/browser.ts","webpack://mattermost-webapp/./src/selectors/views/channel_sidebar.ts","webpack://mattermost-webapp/./src/selectors/views/custom_status.ts","webpack://mattermost-webapp/./src/selectors/views/threads.ts","webpack://mattermost-webapp/./src/stores/local_storage_store.ts","webpack://mattermost-webapp/./src/components/join_private_channel_modal.tsx","webpack://mattermost-webapp/./src/utils/channel_utils.tsx","webpack://mattermost-webapp/./src/utils/emoji.ts","webpack://mattermost-webapp/./src/utils/emoji_map.ts","webpack://mattermost-webapp/./src/utils/emoji_utils.tsx","webpack://mattermost-webapp/./src/utils/emoticons.tsx","webpack://mattermost-webapp/./src/utils/keyboard.ts","webpack://mattermost-webapp/./src/utils/markdown/renderer.tsx","webpack://mattermost-webapp/./src/utils/markdown/helpers.ts","webpack://mattermost-webapp/./src/utils/markdown/index.ts","webpack://mattermost-webapp/./src/utils/markdown/mentionable_renderer.tsx","webpack://mattermost-webapp/./src/utils/markdown/plain_renderer.ts","webpack://mattermost-webapp/./src/utils/markdown/remove_markdown.ts","webpack://mattermost-webapp/./src/utils/notification_sounds.ts","webpack://mattermost-webapp/./src/utils/notifications.ts","webpack://mattermost-webapp/./src/utils/post_utils.ts","webpack://mattermost-webapp/./src/utils/text_formatting.tsx","webpack://mattermost-webapp/./src/utils/timezone.ts","webpack://mattermost-webapp/./src/utils/latinise.tsx","webpack://mattermost-webapp/./src/utils/url.tsx","webpack://mattermost-webapp/./src/utils/utils.tsx","webpack://mattermost-webapp/../src/generic_modal/generic_modal.tsx","webpack://mattermost-webapp/../src/footer_pagination/footer_pagination.tsx","webpack://mattermost-webapp/../src/skeleton_loader/index.tsx","webpack://mattermost-webapp/../src/pulsating_dot/index.tsx","webpack://mattermost-webapp/../src/tour_tip/tour_tip_backdrop.tsx","webpack://mattermost-webapp/../src/tour_tip/tour_tip.tsx","webpack://mattermost-webapp/../src/common/hooks/useMeasurePunchouts.ts","webpack://mattermost-webapp/../src/common/hooks/useElementAvailable.ts","webpack://mattermost-webapp/../src/common/hooks/useFollowElementDimensions.ts","webpack://mattermost-webapp/../platform/types/lib/posts.js","webpack://mattermost-webapp/../node_modules/date-fns/locale/ sync ^\\.\\/.*\\/index\\.js$"],"sourcesContent":["// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport {batchActions} from 'redux-batched-actions';\n\nimport type {Channel} from '@mattermost/types/channels';\nimport type {ServerError} from '@mattermost/types/errors';\nimport type {UserProfile} from '@mattermost/types/users';\n\nimport {PreferenceTypes} from 'mattermost-redux/action_types';\nimport * as ChannelActions from 'mattermost-redux/actions/channels';\nimport {savePreferences} from 'mattermost-redux/actions/preferences';\nimport {getChannelByName, getUnreadChannelIds, getChannel} from 'mattermost-redux/selectors/entities/channels';\nimport {getMyChannelMemberships} from 'mattermost-redux/selectors/entities/common';\nimport {getCurrentTeamUrl, getCurrentTeamId} from 'mattermost-redux/selectors/entities/teams';\nimport {getCurrentUserId} from 'mattermost-redux/selectors/entities/users';\nimport type {ActionFunc, NewActionFuncAsync} from 'mattermost-redux/types/actions';\n\nimport {trackEvent} from 'actions/telemetry_actions.jsx';\nimport {loadNewDMIfNeeded, loadNewGMIfNeeded, loadProfilesForSidebar} from 'actions/user_actions';\n\nimport {getHistory} from 'utils/browser_history';\nimport {Constants, Preferences, NotificationLevels} from 'utils/constants';\nimport {getDirectChannelName} from 'utils/utils';\n\nexport function openDirectChannelToUserId(userId: UserProfile['id']): NewActionFuncAsync {\n return async (dispatch, getState) => {\n const state = getState();\n const currentUserId = getCurrentUserId(state);\n const channelName = getDirectChannelName(currentUserId, userId);\n const channel = getChannelByName(state, channelName);\n\n if (!channel) {\n return dispatch(ChannelActions.createDirectChannel(currentUserId, userId) as any); // HARRISONTODO ActionFunc needs migration\n }\n\n trackEvent('api', 'api_channels_join_direct');\n const now = Date.now();\n const prefDirect = {\n category: Preferences.CATEGORY_DIRECT_CHANNEL_SHOW,\n name: userId,\n value: 'true',\n };\n const prefOpenTime = {\n category: Preferences.CATEGORY_CHANNEL_OPEN_TIME,\n name: channel.id,\n value: now.toString(),\n };\n const actions = [{\n type: PreferenceTypes.RECEIVED_PREFERENCES,\n data: [prefDirect],\n }, {\n type: PreferenceTypes.RECEIVED_PREFERENCES,\n data: [prefOpenTime],\n }];\n dispatch(batchActions(actions));\n\n dispatch(savePreferences(currentUserId, [\n {user_id: currentUserId, ...prefDirect},\n {user_id: currentUserId, ...prefOpenTime},\n ]));\n\n return {data: channel};\n };\n}\n\nexport function openGroupChannelToUserIds(userIds: Array): NewActionFuncAsync {\n return async (dispatch, getState) => {\n const result = await dispatch(ChannelActions.createGroupChannel(userIds));\n\n if (result.error) {\n getHistory().push(getCurrentTeamUrl(getState()));\n }\n\n return result;\n };\n}\n\nexport function loadChannelsForCurrentUser(): ActionFunc {\n return async (dispatch, getState) => {\n const state = getState();\n const unreads = getUnreadChannelIds(state);\n\n await dispatch(ChannelActions.fetchChannelsAndMembers(getCurrentTeamId(state)));\n for (const id of unreads) {\n const channel = getChannel(state, id);\n if (channel && channel.type === Constants.DM_CHANNEL) {\n dispatch(loadNewDMIfNeeded(channel.id));\n } else if (channel && channel.type === Constants.GM_CHANNEL) {\n dispatch(loadNewGMIfNeeded(channel.id));\n }\n }\n\n loadProfilesForSidebar();\n return {data: true};\n };\n}\n\nexport function searchMoreChannels(term: string, showArchivedChannels: boolean, hideJoinedChannels: boolean): ActionFunc {\n return async (dispatch, getState) => {\n const state = getState();\n const teamId = getCurrentTeamId(state);\n\n if (!teamId) {\n throw new Error('No team id');\n }\n\n const {data, error} = await dispatch(ChannelActions.searchChannels(teamId, term, showArchivedChannels));\n if (data) {\n const myMembers = getMyChannelMemberships(state);\n const channels = hideJoinedChannels ? (data as Channel[]).filter((channel) => !myMembers[channel.id]) : data;\n return {data: channels};\n }\n\n return {error};\n };\n}\n\nexport function autocompleteChannels(term: string, success: (channels: Channel[]) => void, error?: (err: ServerError) => void): NewActionFuncAsync {\n return async (dispatch, getState) => {\n const state = getState();\n const teamId = getCurrentTeamId(state);\n if (!teamId) {\n return {data: false};\n }\n\n const {data, error: err} = await dispatch(ChannelActions.autocompleteChannels(teamId, term));\n if (data && success) {\n success(data);\n } else if (err && error) {\n error({id: err.server_error_id, ...err});\n }\n\n return {data: true};\n };\n}\n\nexport function autocompleteChannelsForSearch(term: string, success?: (channels: Channel[]) => void, error?: (err: ServerError) => void): NewActionFuncAsync {\n return async (dispatch, getState) => {\n const state = getState();\n const teamId = getCurrentTeamId(state);\n\n if (!teamId) {\n return {data: false};\n }\n\n const {data, error: err} = await dispatch(ChannelActions.autocompleteChannelsForSearch(teamId, term));\n if (data && success) {\n success(data);\n } else if (err && error) {\n error({id: err.server_error_id, ...err});\n }\n return {data: true};\n };\n}\n\nexport function addUsersToChannel(channelId: Channel['id'], userIds: Array): NewActionFuncAsync {\n return async (dispatch) => {\n try {\n const requests = userIds.map((uId) => dispatch(ChannelActions.addChannelMember(channelId, uId)));\n\n return await Promise.all(requests) as any; // HARRISONTODO This incorrectly returns an ActionResult[]\n } catch (error) {\n return {error};\n }\n };\n}\n\nexport function unmuteChannel(userId: UserProfile['id'], channelId: Channel['id']) {\n return ChannelActions.updateChannelNotifyProps(userId, channelId, {\n mark_unread: NotificationLevels.ALL,\n });\n}\n\nexport function muteChannel(userId: UserProfile['id'], channelId: Channel['id']) {\n return ChannelActions.updateChannelNotifyProps(userId, channelId, {\n mark_unread: NotificationLevels.MENTION,\n });\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport * as EmojiActions from 'mattermost-redux/actions/emojis';\nimport {savePreferences} from 'mattermost-redux/actions/preferences';\nimport {Preferences as ReduxPreferences} from 'mattermost-redux/constants';\nimport {getCustomEmojisByName as selectCustomEmojisByName, getCustomEmojisEnabled} from 'mattermost-redux/selectors/entities/emojis';\nimport {get} from 'mattermost-redux/selectors/entities/preferences';\nimport {getCurrentUserId} from 'mattermost-redux/selectors/entities/users';\n\nimport {getEmojiMap, getRecentEmojisData, getRecentEmojisNames, isCustomEmojiEnabled} from 'selectors/emojis';\nimport {isCustomStatusEnabled, makeGetCustomStatus} from 'selectors/views/custom_status';\nimport LocalStorageStore from 'stores/local_storage_store';\n\nimport Constants, {ActionTypes, Preferences} from 'utils/constants';\nimport {EmojiIndicesByAlias} from 'utils/emoji';\n\nexport function loadRecentlyUsedCustomEmojis() {\n return (dispatch, getState) => {\n const state = getState();\n\n if (!getCustomEmojisEnabled(state)) {\n return {data: true};\n }\n\n const recentEmojiNames = getRecentEmojisNames(state);\n\n return dispatch(EmojiActions.getCustomEmojisByName(recentEmojiNames));\n };\n}\n\nexport function incrementEmojiPickerPage() {\n return async (dispatch) => {\n dispatch({\n type: ActionTypes.INCREMENT_EMOJI_PICKER_PAGE,\n });\n\n return {data: true};\n };\n}\n\nexport function setUserSkinTone(skin) {\n return async (dispatch, getState) => {\n const state = getState();\n const currentUserId = getCurrentUserId(state);\n const skinTonePreference = [{\n user_id: currentUserId,\n name: Preferences.EMOJI_SKINTONE,\n category: Preferences.CATEGORY_EMOJI,\n value: skin,\n }];\n dispatch(savePreferences(currentUserId, skinTonePreference));\n };\n}\n\nexport function addRecentEmoji(alias) {\n return addRecentEmojis([alias]);\n}\n\nexport const MAXIMUM_RECENT_EMOJI = 27;\n\nexport function addRecentEmojis(aliases) {\n return (dispatch, getState) => {\n const state = getState();\n const currentUserId = getCurrentUserId(state);\n const recentEmojis = getRecentEmojisData(state);\n const emojiMap = getEmojiMap(state);\n\n let updatedRecentEmojis = [...recentEmojis];\n for (const alias of aliases) {\n let name;\n const emoji = emojiMap.get(alias);\n if (!emoji) {\n continue;\n } else if (emoji.short_name) {\n name = emoji.short_name;\n } else {\n name = emoji.name;\n }\n\n const currentEmojiIndexInRecentList = updatedRecentEmojis.findIndex((recentEmoji) => recentEmoji.name === name);\n if (currentEmojiIndexInRecentList > -1) {\n const currentEmojiInRecentList = updatedRecentEmojis[currentEmojiIndexInRecentList];\n\n // If the emoji is already in the recent list, remove it and add it to the front with updated usage count\n const updatedCurrentEmojiData = {\n name,\n usageCount: currentEmojiInRecentList.usageCount + 1,\n };\n updatedRecentEmojis.splice(currentEmojiIndexInRecentList, 1);\n updatedRecentEmojis = [...updatedRecentEmojis, updatedCurrentEmojiData].slice(-MAXIMUM_RECENT_EMOJI);\n } else {\n const currentEmojiData = {\n name,\n usageCount: 1,\n };\n updatedRecentEmojis = [...updatedRecentEmojis, currentEmojiData].slice(-MAXIMUM_RECENT_EMOJI);\n }\n }\n\n // sort emojis by count in the ascending order\n updatedRecentEmojis.sort(\n (emojiA, emojiB) => emojiA.usageCount - emojiB.usageCount,\n );\n\n dispatch(savePreferences(currentUserId, [{category: Constants.Preferences.RECENT_EMOJIS, name: currentUserId, user_id: currentUserId, value: JSON.stringify(updatedRecentEmojis)}]));\n\n return {data: true};\n };\n}\n\nexport function loadCustomEmojisForCustomStatusesByUserIds(userIds) {\n const getCustomStatus = makeGetCustomStatus();\n return (dispatch, getState) => {\n const state = getState();\n const customEmojiEnabled = isCustomEmojiEnabled(state);\n const customStatusEnabled = isCustomStatusEnabled(state);\n if (!customEmojiEnabled || !customStatusEnabled) {\n return {data: false};\n }\n\n const emojisToLoad = new Set();\n\n userIds.forEach((userId) => {\n const customStatus = getCustomStatus(state, userId);\n if (!customStatus || !customStatus.emoji) {\n return;\n }\n\n emojisToLoad.add(customStatus.emoji);\n });\n\n return dispatch(loadCustomEmojisIfNeeded(Array.from(emojisToLoad)));\n };\n}\n\nexport function loadCustomEmojisForRecentCustomStatuses() {\n return (dispatch, getState) => {\n const state = getState();\n const customEmojiEnabled = isCustomEmojiEnabled(state);\n const customStatusEnabled = isCustomStatusEnabled(state);\n if (!customEmojiEnabled || !customStatusEnabled) {\n return {data: false};\n }\n\n const recentCustomStatusesValue = get(state, ReduxPreferences.CATEGORY_CUSTOM_STATUS, ReduxPreferences.NAME_RECENT_CUSTOM_STATUSES);\n if (!recentCustomStatusesValue) {\n return {data: false};\n }\n\n const recentCustomStatuses = JSON.parse(recentCustomStatusesValue);\n const emojisToLoad = new Set();\n\n for (const customStatus of recentCustomStatuses) {\n if (!customStatus || !customStatus.emoji) {\n continue;\n }\n\n emojisToLoad.add(customStatus.emoji);\n }\n\n return dispatch(loadCustomEmojisIfNeeded(Array.from(emojisToLoad)));\n };\n}\n\nexport function loadCustomEmojisIfNeeded(emojis) {\n return (dispatch, getState) => {\n if (!emojis || emojis.length === 0) {\n return {data: false};\n }\n\n const state = getState();\n const customEmojiEnabled = isCustomEmojiEnabled(state);\n if (!customEmojiEnabled) {\n return {data: false};\n }\n\n const systemEmojis = EmojiIndicesByAlias;\n const customEmojisByName = selectCustomEmojisByName(state);\n const nonExistentCustomEmoji = state.entities.emojis.nonExistentEmoji;\n const emojisToLoad = [];\n\n emojis.forEach((emoji) => {\n if (!emoji) {\n return;\n }\n\n if (systemEmojis.has(emoji)) {\n // It's a system emoji, no need to fetch\n return;\n }\n\n if (nonExistentCustomEmoji.has(emoji)) {\n // We've previously confirmed this is not a custom emoji\n return;\n }\n\n if (customEmojisByName.has(emoji)) {\n // We have the emoji, no need to fetch\n return;\n }\n\n emojisToLoad.push(emoji);\n });\n\n return dispatch(EmojiActions.getCustomEmojisByName(emojisToLoad));\n };\n}\n\nexport function loadCustomStatusEmojisForPostList(posts) {\n return (dispatch) => {\n if (!posts || posts.length === 0) {\n return {data: false};\n }\n\n const userIds = new Set();\n Object.keys(posts).forEach((postId) => {\n const post = posts[postId];\n if (post.user_id) {\n userIds.add(post.user_id);\n }\n });\n return dispatch(loadCustomEmojisForCustomStatusesByUserIds(userIds));\n };\n}\n\nexport function migrateRecentEmojis() {\n return async (dispatch, getState) => {\n const state = getState();\n const currentUserId = getCurrentUserId(state);\n const recentEmojisFromPreference = getRecentEmojisData(state);\n if (recentEmojisFromPreference.length === 0) {\n const recentEmojisFromLocalStorage = LocalStorageStore.getRecentEmojis(currentUserId);\n if (recentEmojisFromLocalStorage) {\n const parsedRecentEmojisFromLocalStorage = JSON.parse(recentEmojisFromLocalStorage);\n const toSetRecentEmojiData = parsedRecentEmojisFromLocalStorage.map((emojiName) => ({name: emojiName, usageCount: 1}));\n if (toSetRecentEmojiData.length > 0) {\n dispatch(savePreferences(currentUserId, [{category: Constants.Preferences.RECENT_EMOJIS, name: currentUserId, user_id: currentUserId, value: JSON.stringify(toSetRecentEmojiData)}]));\n }\n return {data: parsedRecentEmojisFromLocalStorage};\n }\n }\n return {data: recentEmojisFromPreference};\n };\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\n/**\n * @param {Post} originalPost\n * @returns {NewActionFuncAsync}\n */\nexport function runMessageWillBePostedHooks(originalPost) {\n return async (dispatch, getState) => {\n const hooks = getState().plugins.components.MessageWillBePosted;\n if (!hooks || hooks.length === 0) {\n return {data: originalPost};\n }\n\n let post = originalPost;\n\n for (const hook of hooks) {\n const result = await hook.hook(post); // eslint-disable-line no-await-in-loop\n\n if (result) {\n if (result.error) {\n return {\n error: result.error,\n };\n }\n\n post = result.post;\n }\n }\n\n return {data: post};\n };\n}\n\nexport function runSlashCommandWillBePostedHooks(originalMessage, originalArgs) {\n return async (dispatch, getState) => {\n const hooks = getState().plugins.components.SlashCommandWillBePosted;\n if (!hooks || hooks.length === 0) {\n return {data: {message: originalMessage, args: originalArgs}};\n }\n\n let message = originalMessage;\n let args = originalArgs;\n\n for (const hook of hooks) {\n const result = await hook.hook(message, args); // eslint-disable-line no-await-in-loop\n\n if (result) {\n if (result.error) {\n return {\n error: result.error,\n };\n }\n\n message = result.message;\n args = result.args;\n\n // The first plugin to consume the slash command by returning an empty object\n // should terminate the processing by subsequent plugins.\n if (Object.keys(result).length === 0) {\n break;\n }\n }\n }\n\n return {data: {message, args}};\n };\n}\n\nexport function runMessageWillBeUpdatedHooks(newPost, oldPost) {\n return async (dispatch, getState) => {\n const hooks = getState().plugins.components.MessageWillBeUpdated;\n if (!hooks || hooks.length === 0) {\n return {data: newPost};\n }\n\n let post = newPost;\n\n for (const hook of hooks) {\n const result = await hook.hook(post, oldPost); // eslint-disable-line no-await-in-loop\n\n if (result) {\n if (result.error) {\n return {\n error: result.error,\n };\n }\n\n post = result.post;\n }\n }\n\n return {data: post};\n };\n}\n\nexport function runDesktopNotificationHooks(post, msgProps, channel, teamId, args) {\n return async (dispatch, getState) => {\n const hooks = getState().plugins.components.DesktopNotificationHooks;\n if (!hooks || hooks.length === 0) {\n return {args};\n }\n\n let nextArgs = args;\n for (const hook of hooks) {\n const result = await hook.hook(post, msgProps, channel, teamId, nextArgs); // eslint-disable-line no-await-in-loop\n\n if (result) {\n if (result.error) {\n return {error: result.error};\n }\n\n if (!result.args) {\n return {error: 'returned empty args'};\n }\n\n nextArgs = result.args;\n }\n }\n\n return {args: nextArgs};\n };\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport {logError} from 'mattermost-redux/actions/errors';\nimport {getProfilesByIds} from 'mattermost-redux/actions/users';\nimport {getCurrentChannel, getMyChannelMember, makeGetChannel} from 'mattermost-redux/selectors/entities/channels';\nimport {getConfig} from 'mattermost-redux/selectors/entities/general';\nimport {\n getTeammateNameDisplaySetting,\n isCollapsedThreadsEnabled,\n} from 'mattermost-redux/selectors/entities/preferences';\nimport {getAllUserMentionKeys} from 'mattermost-redux/selectors/entities/search';\nimport {getCurrentUserId, getCurrentUser, getStatusForUserId, getUser} from 'mattermost-redux/selectors/entities/users';\nimport {isChannelMuted} from 'mattermost-redux/utils/channel_utils';\nimport {isSystemMessage, isUserAddedInChannel} from 'mattermost-redux/utils/post_utils';\nimport {displayUsername} from 'mattermost-redux/utils/user_utils';\n\nimport {getChannelURL, getPermalinkURL} from 'selectors/urls';\nimport {isThreadOpen} from 'selectors/views/threads';\n\nimport {getHistory} from 'utils/browser_history';\nimport Constants, {NotificationLevels, UserStatuses, IgnoreChannelMentions} from 'utils/constants';\nimport DesktopApp from 'utils/desktop_api';\nimport {t} from 'utils/i18n';\nimport {stripMarkdown, formatWithRenderer} from 'utils/markdown';\nimport MentionableRenderer from 'utils/markdown/mentionable_renderer';\nimport * as NotificationSounds from 'utils/notification_sounds';\nimport {showNotification} from 'utils/notifications';\nimport {cjkrPattern, escapeRegex} from 'utils/text_formatting';\nimport {isDesktopApp, isMobileApp, isWindowsApp} from 'utils/user_agent';\nimport * as Utils from 'utils/utils';\n\nimport {runDesktopNotificationHooks} from './hooks';\n\nconst NOTIFY_TEXT_MAX_LENGTH = 50;\n\n// windows notification length is based windows chrome which supports 128 characters and is the lowest length of windows browsers\nconst WINDOWS_NOTIFY_TEXT_MAX_LENGTH = 120;\n\nconst getSoundFromChannelMemberAndUser = (member, user) => {\n if (member?.notify_props?.desktop_sound) {\n return member.notify_props.desktop_sound === 'on';\n }\n\n return !user.notify_props || user.notify_props.desktop_sound === 'true';\n};\n\nconst getNotificationSoundFromChannelMemberAndUser = (member, user) => {\n if (member?.notify_props?.desktop_notification_sound) {\n return member.notify_props.desktop_notification_sound;\n }\n\n return user.notify_props?.desktop_notification_sound ? user.notify_props.desktop_notification_sound : 'Bing';\n};\n\nexport function sendDesktopNotification(post, msgProps) {\n return async (dispatch, getState) => {\n const state = getState();\n const currentUserId = getCurrentUserId(state);\n\n if ((currentUserId === post.user_id && post.props.from_webhook !== 'true')) {\n return;\n }\n\n if (isSystemMessage(post) && !isUserAddedInChannel(post, currentUserId)) {\n return;\n }\n\n let userFromPost = getUser(state, post.user_id);\n if (!userFromPost) {\n const missingProfileResponse = await dispatch(getProfilesByIds([post.user_id]));\n if (missingProfileResponse.data && missingProfileResponse.data.length) {\n userFromPost = missingProfileResponse.data[0];\n }\n }\n\n let mentions = [];\n if (msgProps.mentions) {\n mentions = JSON.parse(msgProps.mentions);\n }\n\n let followers = [];\n if (msgProps.followers) {\n followers = JSON.parse(msgProps.followers);\n mentions = [...new Set([...followers, ...mentions])];\n }\n\n const teamId = msgProps.team_id;\n\n let channel = makeGetChannel()(state, {id: post.channel_id});\n const user = getCurrentUser(state);\n const userStatus = getStatusForUserId(state, user.id);\n const member = getMyChannelMember(state, post.channel_id);\n const isCrtReply = isCollapsedThreadsEnabled(state) && post.root_id !== '';\n\n if (!member || isChannelMuted(member) || userStatus === UserStatuses.DND || userStatus === UserStatuses.OUT_OF_OFFICE) {\n return;\n }\n\n const channelNotifyProp = member?.notify_props?.desktop || NotificationLevels.DEFAULT;\n let notifyLevel = channelNotifyProp;\n\n if (notifyLevel === NotificationLevels.DEFAULT) {\n notifyLevel = user?.notify_props?.desktop || NotificationLevels.ALL;\n }\n\n if (channel.type === 'G' && channelNotifyProp === NotificationLevels.DEFAULT && user?.notify_props?.desktop === NotificationLevels.MENTION) {\n notifyLevel = NotificationLevels.ALL;\n }\n\n if (notifyLevel === NotificationLevels.NONE) {\n return;\n } else if (channel.type === 'G' && notifyLevel === NotificationLevels.MENTION) {\n // Compose the whole text in the message, including interactive messages.\n let text = post.message;\n\n // We do this on a try catch block to avoid errors from malformed props\n try {\n if (post.props && post.props.attachments) {\n const attachments = post.props.attachments;\n function appendText(toAppend) {\n if (toAppend) {\n text += `\\n${toAppend}`;\n }\n }\n for (const attachment of attachments) {\n appendText(attachment.pretext);\n appendText(attachment.title);\n appendText(attachment.text);\n appendText(attachment.footer);\n if (attachment.fields) {\n for (const field of attachment.fields) {\n appendText(field.title);\n appendText(field.value);\n }\n }\n }\n }\n } catch (e) {\n // eslint-disable-next-line no-console\n console.log('Could not process the whole attachment for mentions', e);\n }\n\n const allMentions = getAllUserMentionKeys(state);\n\n const ignoreChannelMentionProp = member?.notify_props?.ignore_channel_mentions || IgnoreChannelMentions.DEFAULT;\n let ignoreChannelMention = ignoreChannelMentionProp === IgnoreChannelMentions.ON;\n if (ignoreChannelMentionProp === IgnoreChannelMentions.DEFAULT) {\n ignoreChannelMention = user?.notify_props?.channel === 'false';\n }\n\n const mentionableText = formatWithRenderer(text, new MentionableRenderer());\n let isExplicitlyMentioned = false;\n for (const mention of allMentions) {\n if (!mention || !mention.key) {\n continue;\n }\n\n if (ignoreChannelMention && ['@all', '@here', '@channel'].includes(mention.key)) {\n continue;\n }\n\n let flags = 'g';\n if (!mention.caseSensitive) {\n flags += 'i';\n }\n\n let pattern;\n if (cjkrPattern.test(mention.key)) {\n // In the case of CJK mention key, even if there's no delimiters (such as spaces) at both ends of a word, it is recognized as a mention key\n pattern = new RegExp(`()(${escapeRegex(mention.key)})()`, flags);\n } else {\n pattern = new RegExp(\n `(^|\\\\W)(${escapeRegex(mention.key)})(\\\\b|_+\\\\b)`,\n flags,\n );\n }\n\n if (pattern.test(mentionableText)) {\n isExplicitlyMentioned = true;\n break;\n }\n }\n\n if (!isExplicitlyMentioned) {\n return;\n }\n } else if (notifyLevel === NotificationLevels.MENTION && mentions.indexOf(user.id) === -1 && msgProps.channel_type !== Constants.DM_CHANNEL) {\n return;\n } else if (isCrtReply && notifyLevel === NotificationLevels.ALL && followers.indexOf(currentUserId) === -1) {\n // if user is not following the thread don't notify\n return;\n }\n\n const config = getConfig(state);\n let username = '';\n if (post.props.override_username && config.EnablePostUsernameOverride === 'true') {\n username = post.props.override_username;\n } else if (userFromPost) {\n username = displayUsername(userFromPost, getTeammateNameDisplaySetting(state), false);\n } else {\n username = Utils.localizeMessage('channel_loader.someone', 'Someone');\n }\n\n let title = Utils.localizeMessage('channel_loader.posted', 'Posted');\n if (!channel) {\n title = msgProps.channel_display_name;\n channel = {\n name: msgProps.channel_name,\n type: msgProps.channel_type,\n };\n } else if (channel.type === Constants.DM_CHANNEL) {\n title = Utils.localizeMessage('notification.dm', 'Direct Message');\n } else {\n title = channel.display_name;\n }\n\n if (title === '') {\n if (msgProps.channel_type === Constants.DM_CHANNEL) {\n title = Utils.localizeMessage('notification.dm', 'Direct Message');\n } else {\n title = msgProps.channel_display_name;\n }\n }\n\n if (isCrtReply) {\n title = Utils.localizeAndFormatMessage(t('notification.crt'), 'Reply in {title}', {title});\n }\n\n let notifyText = post.message;\n\n const msgPropsPost = JSON.parse(msgProps.post);\n const attachments = msgPropsPost && msgPropsPost.props && msgPropsPost.props.attachments ? msgPropsPost.props.attachments : [];\n let image = false;\n attachments.forEach((attachment) => {\n if (notifyText.length === 0) {\n notifyText = attachment.fallback ||\n attachment.pretext ||\n attachment.text;\n }\n image |= attachment.image_url.length > 0;\n });\n\n let strippedMarkdownNotifyText = stripMarkdown(notifyText);\n\n const notifyTextMaxLength = isWindowsApp() ? WINDOWS_NOTIFY_TEXT_MAX_LENGTH : NOTIFY_TEXT_MAX_LENGTH;\n if (strippedMarkdownNotifyText.length > notifyTextMaxLength) {\n strippedMarkdownNotifyText = strippedMarkdownNotifyText.substring(0, notifyTextMaxLength - 1) + '...';\n }\n\n let body = `@${username}`;\n if (strippedMarkdownNotifyText.length === 0) {\n if (msgProps.image) {\n body += Utils.localizeMessage('channel_loader.uploadedImage', ' uploaded an image');\n } else if (msgProps.otherFile) {\n body += Utils.localizeMessage('channel_loader.uploadedFile', ' uploaded a file');\n } else if (image) {\n body += Utils.localizeMessage('channel_loader.postedImage', ' posted an image');\n } else {\n body += Utils.localizeMessage('channel_loader.something', ' did something new');\n }\n } else {\n body += `: ${strippedMarkdownNotifyText}`;\n }\n\n //Play a sound if explicitly set in settings\n const sound = getSoundFromChannelMemberAndUser(member, user);\n\n // Notify if you're not looking in the right channel or when\n // the window itself is not active\n const activeChannel = getCurrentChannel(state);\n const channelId = channel ? channel.id : null;\n\n let notify = false;\n if (isCrtReply) {\n notify = !isThreadOpen(state, post.root_id);\n } else {\n notify = activeChannel && activeChannel.id !== channelId;\n }\n notify = notify || !state.views.browser.focused;\n\n let soundName = getNotificationSoundFromChannelMemberAndUser(member, user);\n\n const updatedState = getState();\n let url = getChannelURL(updatedState, channel, teamId);\n\n if (isCrtReply) {\n url = getPermalinkURL(updatedState, teamId, post.id);\n }\n\n // Allow plugins to change the notification, or re-enable a notification\n const args = {title, body, silent: !sound, soundName, url, notify};\n const hookResult = await dispatch(runDesktopNotificationHooks(post, msgProps, channel, teamId, args));\n if (hookResult.error) {\n dispatch(logError(hookResult.error));\n return;\n }\n\n let silent = false;\n ({title, body, silent, soundName, url, notify} = hookResult.args);\n\n if (notify) {\n dispatch(notifyMe(title, body, channel, teamId, silent, soundName, url));\n\n //Don't add extra sounds on native desktop clients\n if (sound && !isDesktopApp() && !isMobileApp()) {\n NotificationSounds.ding(soundName);\n }\n }\n };\n}\n\nexport const notifyMe = (title, body, channel, teamId, silent, soundName, url) => (dispatch) => {\n // handle notifications in desktop app\n if (isDesktopApp()) {\n DesktopApp.dispatchNotification(title, body, channel.id, teamId, silent, soundName, url);\n } else {\n showNotification({\n title,\n body,\n requireInteraction: false,\n silent,\n onClick: () => {\n window.focus();\n getHistory().push(url);\n },\n }).catch((error) => {\n dispatch(logError(error));\n });\n }\n};\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport React from 'react';\nimport {FormattedMessage} from 'react-intl';\nimport {Link} from 'react-router-dom';\n\nimport {GenericModal} from '@mattermost/components';\n\nimport ExternalLink from 'components/external_link';\n\nexport default function ReactionLimitReachedModal(props: {isAdmin: boolean; onExited: () => void}) {\n const body = props.isAdmin ? (\n set a limit to keep things running smoothly on your server. As a system administrator, you can adjust this limit from the system console.\"\n values={{\n link: (msg: React.ReactNode) => (\n \n {msg}\n \n ),\n linkAdmin: (msg: React.ReactNode) => (\n \n {msg}\n \n ),\n }}\n />\n ) : (\n \n );\n\n return (\n \n }\n compassDesign={true}\n confirmButtonText={\n \n }\n onExited={props.onExited}\n handleConfirm={props.onExited}\n >\n {body}\n \n );\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport type {FileInfo} from '@mattermost/types/files';\nimport type {GroupChannel} from '@mattermost/types/groups';\nimport type {Post} from '@mattermost/types/posts';\n\nimport {SearchTypes} from 'mattermost-redux/action_types';\nimport {getMyChannelMember} from 'mattermost-redux/actions/channels';\nimport * as PostActions from 'mattermost-redux/actions/posts';\nimport * as ThreadActions from 'mattermost-redux/actions/threads';\nimport {getChannel, getMyChannelMember as getMyChannelMemberSelector} from 'mattermost-redux/selectors/entities/channels';\nimport {getConfig} from 'mattermost-redux/selectors/entities/general';\nimport * as PostSelectors from 'mattermost-redux/selectors/entities/posts';\nimport {isCollapsedThreadsEnabled} from 'mattermost-redux/selectors/entities/preferences';\nimport {getCurrentTeamId} from 'mattermost-redux/selectors/entities/teams';\nimport {getCurrentUserId, isCurrentUserSystemAdmin} from 'mattermost-redux/selectors/entities/users';\nimport type {DispatchFunc, GetStateFunc, NewActionFunc, NewActionFuncAsync, NewActionFuncOldVariantDoNotUse} from 'mattermost-redux/types/actions';\nimport {canEditPost, comparePosts} from 'mattermost-redux/utils/post_utils';\n\nimport {addRecentEmoji, addRecentEmojis} from 'actions/emoji_actions';\nimport * as StorageActions from 'actions/storage';\nimport {loadNewDMIfNeeded, loadNewGMIfNeeded} from 'actions/user_actions';\nimport {removeDraft} from 'actions/views/drafts';\nimport {closeModal, openModal} from 'actions/views/modals';\nimport * as RhsActions from 'actions/views/rhs';\nimport {manuallyMarkThreadAsUnread} from 'actions/views/threads';\nimport {isEmbedVisible, isInlineImageVisible} from 'selectors/posts';\nimport {getSelectedPostId, getSelectedPostCardId, getRhsState} from 'selectors/rhs';\nimport {getGlobalItem} from 'selectors/storage';\n\nimport ReactionLimitReachedModal from 'components/reaction_limit_reached_modal';\n\nimport {\n ActionTypes,\n Constants,\n ModalIdentifiers,\n RHSStates,\n StoragePrefixes,\n} from 'utils/constants';\nimport {matchEmoticons} from 'utils/emoticons';\nimport {makeGetIsReactionAlreadyAddedToPost, makeGetUniqueEmojiNameReactionsForPost} from 'utils/post_utils';\nimport * as UserAgent from 'utils/user_agent';\n\nimport type {GlobalState} from 'types/store';\n\nimport {completePostReceive} from './new_post';\nimport type {NewPostMessageProps} from './new_post';\n\nexport function handleNewPost(post: Post, msg?: {data?: NewPostMessageProps & GroupChannel}) {\n return async (dispatch: DispatchFunc, getState: GetStateFunc) => {\n let websocketMessageProps = {};\n const state = getState();\n if (msg) {\n websocketMessageProps = msg.data!;\n }\n\n const myChannelMember = getMyChannelMemberSelector(state, post.channel_id);\n const myChannelMemberDoesntExist = !myChannelMember || (Object.keys(myChannelMember).length === 0 && myChannelMember.constructor === Object);\n\n if (myChannelMemberDoesntExist) {\n await dispatch(getMyChannelMember(post.channel_id));\n }\n\n dispatch(completePostReceive(post, websocketMessageProps as NewPostMessageProps, myChannelMemberDoesntExist));\n\n if (msg && msg.data) {\n if (msg.data.channel_type === Constants.DM_CHANNEL) {\n dispatch(loadNewDMIfNeeded(post.channel_id));\n } else if (msg.data.channel_type === Constants.GM_CHANNEL) {\n dispatch(loadNewGMIfNeeded(post.channel_id));\n }\n }\n\n return {data: true};\n };\n}\n\nconst getPostsForIds = PostSelectors.makeGetPostsForIds();\n\nexport function flagPost(postId: string) {\n return async (dispatch: DispatchFunc, getState: GetStateFunc) => {\n await dispatch(PostActions.flagPost(postId));\n const state = getState() as GlobalState;\n const rhsState = getRhsState(state);\n\n if (rhsState === RHSStates.FLAG) {\n dispatch(addPostToSearchResults(postId));\n }\n\n return {data: true};\n };\n}\n\nexport function unflagPost(postId: string) {\n return async (dispatch: DispatchFunc, getState: GetStateFunc) => {\n await dispatch(PostActions.unflagPost(postId));\n const state = getState() as GlobalState;\n const rhsState = getRhsState(state);\n\n if (rhsState === RHSStates.FLAG) {\n removePostFromSearchResults(postId, state, dispatch);\n }\n\n return {data: true};\n };\n}\n\nexport function createPost(post: Post, files: FileInfo[]) {\n return async (dispatch: DispatchFunc) => {\n // parse message and emit emoji event\n const emojis = matchEmoticons(post.message);\n if (emojis) {\n const trimmedEmojis = emojis.map((emoji) => emoji.substring(1, emoji.length - 1));\n dispatch(addRecentEmojis(trimmedEmojis));\n }\n\n let result;\n if (UserAgent.isIosClassic()) {\n result = await dispatch(PostActions.createPostImmediately(post, files));\n } else {\n result = await dispatch(PostActions.createPost(post, files));\n }\n\n if (post.root_id) {\n dispatch(storeCommentDraft(post.root_id, null));\n } else {\n dispatch(storeDraft(post.channel_id, null));\n }\n\n return result;\n };\n}\n\nfunction storeDraft(channelId: string, draft: null) {\n return (dispatch: DispatchFunc) => {\n dispatch(StorageActions.setGlobalItem('draft_' + channelId, draft));\n return {data: true};\n };\n}\n\nfunction storeCommentDraft(rootPostId: string, draft: null) {\n return (dispatch: DispatchFunc) => {\n dispatch(StorageActions.setGlobalItem('comment_draft_' + rootPostId, draft));\n return {data: true};\n };\n}\n\nexport function submitReaction(postId: string, action: string, emojiName: string): NewActionFuncOldVariantDoNotUse {\n return (dispatch, getState) => {\n const state = getState() as GlobalState;\n const getIsReactionAlreadyAddedToPost = makeGetIsReactionAlreadyAddedToPost();\n\n const isReactionAlreadyAddedToPost = getIsReactionAlreadyAddedToPost(state, postId, emojiName);\n\n if (action === '+' && !isReactionAlreadyAddedToPost) {\n dispatch(addReaction(postId, emojiName));\n } else if (action === '-' && isReactionAlreadyAddedToPost) {\n dispatch(PostActions.removeReaction(postId, emojiName));\n }\n return {data: true};\n };\n}\n\nexport function toggleReaction(postId: string, emojiName: string): NewActionFuncOldVariantDoNotUse {\n return (dispatch, getState) => {\n const state = getState() as GlobalState;\n const getIsReactionAlreadyAddedToPost = makeGetIsReactionAlreadyAddedToPost();\n\n const isReactionAlreadyAddedToPost = getIsReactionAlreadyAddedToPost(state, postId, emojiName);\n\n if (isReactionAlreadyAddedToPost) {\n return dispatch(PostActions.removeReaction(postId, emojiName));\n }\n return dispatch(addReaction(postId, emojiName));\n };\n}\n\nexport function addReaction(postId: string, emojiName: string): NewActionFunc {\n const getUniqueEmojiNameReactionsForPost = makeGetUniqueEmojiNameReactionsForPost();\n return (dispatch, getState) => {\n const state = getState() as GlobalState;\n const config = getConfig(state);\n const uniqueEmojiNames = getUniqueEmojiNameReactionsForPost(state, postId) ?? [];\n\n // If we're adding a new reaction but we're already at or over the limit, stop\n if (uniqueEmojiNames.length >= Number(config.UniqueEmojiReactionLimitPerPost) && !uniqueEmojiNames.some((name) => name === emojiName)) {\n dispatch(openModal({\n modalId: ModalIdentifiers.REACTION_LIMIT_REACHED,\n dialogType: ReactionLimitReachedModal,\n dialogProps: {\n isAdmin: isCurrentUserSystemAdmin(state),\n onExited: () => closeModal(ModalIdentifiers.REACTION_LIMIT_REACHED),\n },\n }));\n return {data: false};\n }\n\n dispatch(PostActions.addReaction(postId, emojiName));\n dispatch(addRecentEmoji(emojiName));\n return {data: true};\n };\n}\n\nexport function searchForTerm(term: string) {\n return (dispatch: DispatchFunc) => {\n dispatch(RhsActions.updateSearchTerms(term));\n dispatch(RhsActions.showSearchResults());\n return {data: true};\n };\n}\n\nfunction addPostToSearchResults(postId: string) {\n return (dispatch: DispatchFunc, getState: GetStateFunc) => {\n const state = getState();\n const results = state.entities.search.results;\n const index = results.indexOf(postId);\n if (index === -1) {\n const newPost = PostSelectors.getPost(state, postId);\n const posts = getPostsForIds(state, results).reduce((acc, post) => {\n acc[post.id] = post;\n return acc;\n }, {} as Record);\n posts[newPost.id] = newPost;\n\n const newResults = [...results, postId];\n newResults.sort((a, b) => comparePosts(posts[a], posts[b]));\n\n dispatch({\n type: SearchTypes.RECEIVED_SEARCH_POSTS,\n data: {posts, order: newResults},\n });\n }\n return {data: true};\n };\n}\n\nfunction removePostFromSearchResults(postId: string, state: GlobalState, dispatch: DispatchFunc) {\n let results = state.entities.search.results;\n const index = results.indexOf(postId);\n if (index > -1) {\n results = [...results];\n results.splice(index, 1);\n\n const posts = getPostsForIds(state, results);\n\n dispatch({\n type: SearchTypes.RECEIVED_SEARCH_POSTS,\n data: {posts, order: results},\n });\n }\n}\n\nexport function pinPost(postId: string) {\n return async (dispatch: DispatchFunc, getState: GetStateFunc) => {\n await dispatch(PostActions.pinPost(postId));\n const state = getState() as GlobalState;\n const rhsState = getRhsState(state);\n\n if (rhsState === RHSStates.PIN) {\n dispatch(addPostToSearchResults(postId));\n }\n return {data: true};\n };\n}\n\nexport function unpinPost(postId: string) {\n return async (dispatch: DispatchFunc, getState: GetStateFunc) => {\n await dispatch(PostActions.unpinPost(postId));\n const state = getState() as GlobalState;\n const rhsState = getRhsState(state);\n\n if (rhsState === RHSStates.PIN) {\n removePostFromSearchResults(postId, state, dispatch);\n }\n return {data: true};\n };\n}\n\nexport function setEditingPost(postId = '', refocusId = '', title = '', isRHS = false): NewActionFunc {\n return (dispatch, getState) => {\n const state = getState();\n const post = PostSelectors.getPost(state, postId);\n\n if (!post || post.pending_post_id === postId) {\n return {data: false};\n }\n\n const config = state.entities.general.config;\n const license = state.entities.general.license;\n const userId = getCurrentUserId(state);\n const channel = getChannel(state, post.channel_id);\n const teamId = channel.team_id || '';\n\n const canEditNow = canEditPost(state, config, license, teamId, post.channel_id, userId, post);\n\n // Only show the modal if we can edit the post now, but allow it to be hidden at any time\n\n if (canEditNow) {\n dispatch({\n type: ActionTypes.TOGGLE_EDITING_POST,\n data: {postId, refocusId, title, isRHS, show: true},\n });\n }\n\n return {data: canEditNow};\n };\n}\n\nexport function unsetEditingPost() {\n return {\n type: ActionTypes.TOGGLE_EDITING_POST,\n data: {\n show: false,\n },\n };\n}\n\nexport function markPostAsUnread(post: Post, location?: string): NewActionFuncAsync {\n return async (dispatch, getState) => {\n const state = getState();\n const userId = getCurrentUserId(state);\n const currentTeamId = getCurrentTeamId(state);\n\n // if CRT:ON and this is from within ThreadViewer (e.g. post dot-menu), mark the thread as unread and followed\n if (isCollapsedThreadsEnabled(state) && (location === 'RHS_ROOT' || location === 'RHS_COMMENT')) {\n const threadId = post.root_id || post.id;\n ThreadActions.handleFollowChanged(dispatch, threadId, currentTeamId, true);\n dispatch(manuallyMarkThreadAsUnread(threadId, post.create_at - 1));\n await dispatch(ThreadActions.markThreadAsUnread(userId, currentTeamId, threadId, post.id));\n } else {\n // use normal channel unread system\n await dispatch(PostActions.setUnreadPost(userId, post.id));\n }\n\n return {data: true};\n };\n}\n\nexport function markMostRecentPostInChannelAsUnread(channelId: string) {\n return async (dispatch: DispatchFunc, getState: GetStateFunc) => {\n let state = getState();\n let postId = PostSelectors.getMostRecentPostIdInChannel(state, channelId);\n if (!postId) {\n await dispatch(PostActions.getPosts(channelId));\n state = getState();\n postId = PostSelectors.getMostRecentPostIdInChannel(state, channelId);\n }\n if (postId) {\n const lastPost = PostSelectors.getPost(state, postId);\n dispatch(markPostAsUnread(lastPost, 'CENTER'));\n }\n return {data: true};\n };\n}\n\n// Action called by DeletePostModal when the post is deleted\nexport function deleteAndRemovePost(post: Post): NewActionFuncAsync {\n return async (dispatch, getState) => {\n const {error} = await dispatch(PostActions.deletePost(post));\n if (error) {\n return {error};\n }\n\n if (post.id === getSelectedPostId(getState() as GlobalState)) {\n dispatch({\n type: ActionTypes.SELECT_POST,\n postId: '',\n channelId: '',\n timestamp: 0,\n });\n }\n\n if (post.id === getSelectedPostCardId(getState() as GlobalState)) {\n dispatch({\n type: ActionTypes.SELECT_POST_CARD,\n postId: '',\n channelId: '',\n });\n }\n\n if (post.root_id === '') {\n const key = StoragePrefixes.COMMENT_DRAFT + post.id;\n if (getGlobalItem(getState() as GlobalState, key, null)) {\n dispatch(removeDraft(key, post.channel_id, post.id));\n }\n }\n\n dispatch(PostActions.removePost(post));\n\n return {data: true};\n };\n}\n\nexport function toggleEmbedVisibility(postId: string) {\n return (dispatch: DispatchFunc, getState: GetStateFunc) => {\n const state = getState();\n const currentUserId = getCurrentUserId(state);\n const visible = isEmbedVisible(state as GlobalState, postId);\n\n dispatch(StorageActions.setGlobalItem(StoragePrefixes.EMBED_VISIBLE + currentUserId + '_' + postId, !visible));\n };\n}\n\nexport function resetEmbedVisibility() {\n return StorageActions.actionOnGlobalItemsWithPrefix(StoragePrefixes.EMBED_VISIBLE, () => null);\n}\n\nexport function toggleInlineImageVisibility(postId: string, imageKey: string) {\n return (dispatch: DispatchFunc, getState: GetStateFunc) => {\n const state = getState();\n const currentUserId = getCurrentUserId(state);\n const visible = isInlineImageVisible(state as GlobalState, postId, imageKey);\n\n dispatch(StorageActions.setGlobalItem(StoragePrefixes.INLINE_IMAGE_VISIBLE + currentUserId + '_' + postId + '_' + imageKey, !visible));\n };\n}\n\nexport function resetInlineImageVisibility() {\n return StorageActions.actionOnGlobalItemsWithPrefix(StoragePrefixes.INLINE_IMAGE_VISIBLE, () => null);\n}\n\n/*\n * It is called from either center or rhs text input when shortcut for react to last message is pressed\n *\n * @param {string} emittedFrom - It can be either \"CENTER\", \"RHS_ROOT\" or \"NO_WHERE\"\n */\nexport function emitShortcutReactToLastPostFrom(emittedFrom: keyof typeof Constants.Locations) {\n return {\n type: ActionTypes.EMITTED_SHORTCUT_REACT_TO_LAST_POST,\n payload: emittedFrom,\n };\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport type * as Redux from 'redux';\nimport {batchActions} from 'redux-batched-actions';\n\nimport type {Post} from '@mattermost/types/posts';\n\nimport {\n actionsToMarkChannelAsRead,\n actionsToMarkChannelAsUnread,\n markChannelAsViewedOnServer,\n} from 'mattermost-redux/actions/channels';\nimport * as PostActions from 'mattermost-redux/actions/posts';\nimport {getCurrentChannelId, isManuallyUnread} from 'mattermost-redux/selectors/entities/channels';\nimport * as PostSelectors from 'mattermost-redux/selectors/entities/posts';\nimport {isCollapsedThreadsEnabled} from 'mattermost-redux/selectors/entities/preferences';\nimport {getThread} from 'mattermost-redux/selectors/entities/threads';\nimport {getCurrentUserId} from 'mattermost-redux/selectors/entities/users';\nimport type {ActionFunc, DispatchFunc, GetStateFunc} from 'mattermost-redux/types/actions';\nimport {\n isFromWebhook,\n isSystemMessage,\n shouldIgnorePost,\n} from 'mattermost-redux/utils/post_utils';\n\nimport {sendDesktopNotification} from 'actions/notification_actions.jsx';\nimport {updateThreadLastOpened} from 'actions/views/threads';\nimport {isThreadOpen, makeGetThreadLastViewedAt} from 'selectors/views/threads';\n\nimport {ActionTypes} from 'utils/constants';\n\nimport type {GlobalState} from 'types/store';\n\nexport type NewPostMessageProps = {\n mentions: string[];\n team_id: string;\n}\n\nexport function completePostReceive(post: Post, websocketMessageProps: NewPostMessageProps, fetchedChannelMember?: boolean): ActionFunc {\n return async (dispatch: DispatchFunc, getState: GetStateFunc) => {\n const state = getState();\n const rootPost = PostSelectors.getPost(state, post.root_id);\n if (post.root_id && !rootPost) {\n const result = await dispatch(PostActions.getPostThread(post.root_id));\n\n if ('error' in result) {\n return result;\n }\n }\n const actions: Redux.AnyAction[] = [];\n\n if (post.channel_id === getCurrentChannelId(getState())) {\n actions.push({\n type: ActionTypes.INCREASE_POST_VISIBILITY,\n data: post.channel_id,\n amount: 1,\n });\n }\n\n const collapsedThreadsEnabled = isCollapsedThreadsEnabled(state);\n const isCRTReply = collapsedThreadsEnabled && post.root_id;\n\n actions.push(\n PostActions.receivedNewPost(post, collapsedThreadsEnabled),\n );\n\n const isCRTReplyByCurrentUser = isCRTReply && post.user_id === getCurrentUserId(state);\n if (!isCRTReplyByCurrentUser) {\n actions.push(\n ...setChannelReadAndViewed(dispatch, getState, post as Post, websocketMessageProps, fetchedChannelMember),\n );\n }\n dispatch(batchActions(actions));\n\n if (isCRTReply) {\n dispatch(setThreadRead(post));\n }\n\n return dispatch(sendDesktopNotification(post, websocketMessageProps) as unknown as ActionFunc);\n };\n}\n\n// setChannelReadAndViewed returns an array of actions to mark the channel read and viewed, and it dispatches an action\n// to asynchronously mark the channel as read on the server if necessary.\nexport function setChannelReadAndViewed(dispatch: DispatchFunc, getState: GetStateFunc, post: Post, websocketMessageProps: NewPostMessageProps, fetchedChannelMember?: boolean): Redux.AnyAction[] {\n const state = getState();\n const currentUserId = getCurrentUserId(state);\n\n // ignore system message posts, except when added to a team\n if (shouldIgnorePost(post, currentUserId)) {\n return [];\n }\n\n let markAsRead = false;\n let markAsReadOnServer = false;\n\n // Skip marking a channel as read (when the user is viewing a channel)\n // if they have manually marked it as unread.\n if (!isManuallyUnread(getState(), post.channel_id)) {\n if (\n post.user_id === getCurrentUserId(state) &&\n !isSystemMessage(post) &&\n !isFromWebhook(post)\n ) {\n markAsRead = true;\n markAsReadOnServer = false;\n } else if (\n post.channel_id === getCurrentChannelId(state) &&\n window.isActive\n ) {\n markAsRead = true;\n markAsReadOnServer = true;\n }\n }\n\n if (markAsRead) {\n if (markAsReadOnServer) {\n dispatch(markChannelAsViewedOnServer(post.channel_id));\n }\n\n return actionsToMarkChannelAsRead(getState, post.channel_id);\n }\n\n return actionsToMarkChannelAsUnread(getState, websocketMessageProps.team_id, post.channel_id, websocketMessageProps.mentions, fetchedChannelMember, post.root_id === '', post?.metadata?.priority?.priority);\n}\n\nexport function setThreadRead(post: Post) {\n const getThreadLastViewedAt = makeGetThreadLastViewedAt();\n return (dispatch: DispatchFunc, getState: GetStateFunc) => {\n const state = getState() as GlobalState;\n\n const thread = getThread(state, post.root_id);\n\n // mark a thread as read (when the user is viewing the thread)\n if (thread && isThreadOpen(state, thread.id)) {\n // update the new messages line (when there are no previous unreads)\n if (thread.last_reply_at < getThreadLastViewedAt(state, thread.id)) {\n dispatch(updateThreadLastOpened(thread.id, post.create_at));\n }\n }\n\n return {data: true};\n };\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport type {UserProfile} from '@mattermost/types/users';\n\nimport {getStatusesByIds} from 'mattermost-redux/actions/users';\nimport {getCurrentChannelId} from 'mattermost-redux/selectors/entities/channels';\nimport {getPostsInCurrentChannel} from 'mattermost-redux/selectors/entities/posts';\nimport {getDirectShowPreferences} from 'mattermost-redux/selectors/entities/preferences';\nimport {getCurrentUserId} from 'mattermost-redux/selectors/entities/users';\nimport type {ActionFunc, DispatchFunc, GetStateFunc, NewActionFunc} from 'mattermost-redux/types/actions';\n\nimport {loadCustomEmojisForCustomStatusesByUserIds} from 'actions/emoji_actions';\n\nimport {Constants} from 'utils/constants';\n\nimport type {GlobalState} from 'types/store';\n\nexport function loadStatusesForChannelAndSidebar(): ActionFunc {\n return (dispatch: DispatchFunc, getState: GetStateFunc) => {\n const state = getState();\n const statusesToLoad: Record = {};\n\n const channelId = getCurrentChannelId(state);\n const postsInChannel = getPostsInCurrentChannel(state);\n\n if (postsInChannel) {\n const posts = postsInChannel.slice(0, (state as GlobalState).views.channel.postVisibility[channelId] || 0);\n for (const post of posts) {\n if (post.user_id) {\n statusesToLoad[post.user_id] = true;\n }\n }\n }\n\n const dmPrefs = getDirectShowPreferences(state);\n\n for (const pref of dmPrefs) {\n if (pref.value === 'true') {\n statusesToLoad[pref.name] = true;\n }\n }\n\n const currentUserId = getCurrentUserId(state);\n statusesToLoad[currentUserId] = true;\n\n dispatch(loadStatusesByIds(Object.keys(statusesToLoad)));\n return {data: true};\n };\n}\n\nexport function loadStatusesForProfilesList(users: UserProfile[] | null): NewActionFunc {\n return (dispatch) => {\n if (users == null) {\n return {data: false};\n }\n\n const statusesToLoad = [];\n for (let i = 0; i < users.length; i++) {\n statusesToLoad.push(users[i].id);\n }\n\n dispatch(loadStatusesByIds(statusesToLoad));\n\n return {data: true};\n };\n}\n\nexport function loadStatusesForProfilesMap(users: Record | null) {\n return (dispatch: DispatchFunc) => {\n if (users == null) {\n return {data: false};\n }\n\n const statusesToLoad = [];\n for (const userId in users) {\n if ({}.hasOwnProperty.call(users, userId)) {\n statusesToLoad.push(userId);\n }\n }\n\n dispatch(loadStatusesByIds(statusesToLoad));\n\n return {data: true};\n };\n}\n\nexport function loadStatusesByIds(userIds: string[]) {\n return (dispatch: DispatchFunc) => {\n if (userIds.length === 0) {\n return {data: false};\n }\n\n dispatch(getStatusesByIds(userIds));\n dispatch(loadCustomEmojisForCustomStatusesByUserIds(userIds));\n return {data: true};\n };\n}\n\nexport function loadProfilesMissingStatus(users: UserProfile[]) {\n return (dispatch: DispatchFunc, getState: GetStateFunc) => {\n const state = getState();\n const statuses = state.entities.users.statuses;\n\n const missingStatusByIds = users.\n filter((user) => !statuses[user.id]).\n map((user) => user.id);\n\n if (missingStatusByIds.length === 0) {\n return {data: false};\n }\n\n dispatch(getStatusesByIds(missingStatusByIds));\n dispatch(loadCustomEmojisForCustomStatusesByUserIds(missingStatusByIds));\n return {data: true};\n };\n}\n\nlet intervalId: NodeJS.Timeout;\n\nexport function startPeriodicStatusUpdates() {\n return (dispatch: DispatchFunc) => {\n clearInterval(intervalId);\n\n intervalId = setInterval(\n () => {\n dispatch(loadStatusesForChannelAndSidebar());\n },\n Constants.STATUS_INTERVAL,\n );\n };\n}\n\nexport function stopPeriodicStatusUpdates() {\n clearInterval(intervalId);\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport type {ServerError} from '@mattermost/types/errors';\nimport type {Team, TeamMemberWithError} from '@mattermost/types/teams';\nimport type {UserProfile} from '@mattermost/types/users';\n\nimport {TeamTypes} from 'mattermost-redux/action_types';\nimport {getChannelStats} from 'mattermost-redux/actions/channels';\nimport {logError} from 'mattermost-redux/actions/errors';\nimport {savePreferences} from 'mattermost-redux/actions/preferences';\nimport * as TeamActions from 'mattermost-redux/actions/teams';\nimport {selectTeam} from 'mattermost-redux/actions/teams';\nimport {getUser} from 'mattermost-redux/actions/users';\nimport {Client4} from 'mattermost-redux/client';\nimport {getCurrentChannelId} from 'mattermost-redux/selectors/entities/channels';\nimport {getCurrentUserId} from 'mattermost-redux/selectors/entities/users';\nimport type {ActionFunc, DispatchFunc, GetStateFunc, NewActionFuncAsync} from 'mattermost-redux/types/actions';\n\nimport {getHistory} from 'utils/browser_history';\nimport {Preferences} from 'utils/constants';\n\nexport function removeUserFromTeamAndGetStats(teamId: Team['id'], userId: UserProfile['id']): NewActionFuncAsync {\n return async (dispatch, getState) => {\n const response = await dispatch(TeamActions.removeUserFromTeam(teamId, userId));\n dispatch(getUser(userId));\n dispatch(TeamActions.getTeamStats(teamId));\n dispatch(getChannelStats(getCurrentChannelId(getState())));\n return response;\n };\n}\n\nexport function addUserToTeamFromInvite(token: string, inviteId: string): NewActionFuncAsync {\n return async (dispatch) => {\n const {data: member, error} = await dispatch(TeamActions.addUserToTeamFromInvite(token, inviteId));\n if (member) {\n const {data} = await dispatch(TeamActions.getTeam(member.team_id));\n\n dispatch({\n type: TeamTypes.RECEIVED_MY_TEAM_MEMBER,\n data: {\n ...member,\n delete_at: 0,\n msg_count: 0,\n mention_count: 0,\n },\n });\n\n return {data};\n }\n return {error};\n };\n}\n\nexport function addUserToTeam(teamId: Team['id'], userId: UserProfile['id']): NewActionFuncAsync {\n return async (dispatch) => {\n const {data: member, error} = await dispatch(TeamActions.addUserToTeam(teamId, userId));\n if (member) {\n const {data} = await dispatch(TeamActions.getTeam(member.team_id));\n\n dispatch({\n type: TeamTypes.RECEIVED_MY_TEAM_MEMBER,\n data: {\n ...member,\n delete_at: 0,\n msg_count: 0,\n mention_count: 0,\n },\n });\n\n return {data};\n }\n return {error};\n };\n}\n\nexport function addUsersToTeam(teamId: Team['id'], userIds: Array): NewActionFuncAsync {\n return async (dispatch, getState) => {\n const {data, error} = await dispatch(TeamActions.addUsersToTeamGracefully(teamId, userIds));\n\n if (error) {\n return {error};\n }\n\n dispatch(getChannelStats(getCurrentChannelId(getState())));\n\n return {data};\n };\n}\n\nexport function switchTeam(url: string, team?: Team) {\n return (dispatch: DispatchFunc) => {\n // In Channels, the team argument is undefined, and team switching is done by pushing a URL onto history.\n // In other products, a team is passed instead of a URL because the current team isn't tied to the page URL.\n //\n // Note that url may also be a non-team URL since this is called when switching to the Create Team page\n // from the team sidebar as well.\n if (team) {\n dispatch(selectTeam(team));\n } else {\n getHistory().push(url);\n }\n };\n}\n\nexport function updateTeamsOrderForUser(teamIds: Array) {\n return async (dispatch: DispatchFunc, getState: GetStateFunc) => {\n const state = getState();\n const currentUserId = getCurrentUserId(state);\n const teamOrderPreferences = [{\n user_id: currentUserId,\n name: '',\n category: Preferences.TEAMS_ORDER,\n value: teamIds.join(','),\n }];\n dispatch(savePreferences(currentUserId, teamOrderPreferences));\n };\n}\n\nexport function getGroupMessageMembersCommonTeams(channelId: string): ActionFunc {\n return async (dispatch) => {\n let teams: Team[];\n\n try {\n const response = await Client4.getGroupMessageMembersCommonTeams(channelId);\n teams = response.data;\n } catch (error) {\n dispatch(logError(error as ServerError));\n return {error: error as ServerError};\n }\n\n return {data: teams};\n };\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport {Client4} from 'mattermost-redux/client';\nimport {Preferences} from 'mattermost-redux/constants';\nimport {getSortedTrackedSelectors} from 'mattermost-redux/selectors/create_selector';\nimport {getConfig, isPerformanceDebuggingEnabled} from 'mattermost-redux/selectors/entities/general';\nimport {getBool} from 'mattermost-redux/selectors/entities/preferences';\n\nimport {isDevModeEnabled} from 'selectors/general';\nimport store from 'stores/redux_store';\n\nconst SUPPORTS_CLEAR_MARKS = isSupported([performance.clearMarks]);\nconst SUPPORTS_MARK = isSupported([performance.mark]);\nconst SUPPORTS_MEASURE_METHODS = isSupported([\n performance.measure,\n performance.getEntries,\n performance.getEntriesByName,\n performance.clearMeasures,\n]);\n\nconst HEADER_X_PAGE_LOAD_CONTEXT = 'X-Page-Load-Context';\n\nexport function isTelemetryEnabled(state) {\n const config = getConfig(state);\n return config.DiagnosticsEnabled === 'true';\n}\n\nexport function shouldTrackPerformance(state = store.getState()) {\n return isDevModeEnabled(state) || isTelemetryEnabled(state);\n}\n\nexport function trackEvent(category, event, props) {\n const state = store.getState();\n if (\n isPerformanceDebuggingEnabled(state) &&\n getBool(state, Preferences.CATEGORY_PERFORMANCE_DEBUGGING, Preferences.NAME_DISABLE_TELEMETRY)\n ) {\n return;\n }\n\n Client4.trackEvent(category, event, props);\n\n if (isDevModeEnabled(state) && category === 'performance' && props) {\n // eslint-disable-next-line no-console\n console.log(event + ' - ' + Object.entries(props).map(([key, value]) => `${key}: ${value}`).join(', '));\n }\n}\n\nexport function pageVisited(category, name) {\n Client4.pageVisited(category, name);\n}\n\n/**\n * Takes an array of string names of performance markers and invokes\n * performance.clearMarkers on each.\n * @param {array} names of markers to clear\n *\n */\nexport function clearMarks(names) {\n if (!shouldTrackPerformance() || !SUPPORTS_CLEAR_MARKS) {\n return;\n }\n names.forEach((name) => performance.clearMarks(name));\n}\n\nexport function mark(name) {\n if (!shouldTrackPerformance() || !SUPPORTS_MARK) {\n return;\n }\n performance.mark(name);\n\n initRequestCountingIfNecessary();\n updateRequestCountAtMark(name);\n}\n\n/**\n * Takes the names of two markers and invokes performance.measure on\n * them. The measured duration (ms) and the string name of the measure is\n * are returned.\n *\n * @param {string} name1 the first marker\n * @param {string} name2 the second marker\n *\n * @returns {{duration: number; requestCount: number; measurementName: string}}\n * An object containing the measured duration (in ms) between two marks, the\n * number of API requests made during that period, and the name of the measurement.\n * Returns a duration and request count of -1 if performance isn't being tracked\n * or one of the markers can't be found.\n *\n */\nexport function measure(name1, name2) {\n if (!shouldTrackPerformance() || !SUPPORTS_MEASURE_METHODS) {\n return {duration: -1, requestCount: -1, measurementName: ''};\n }\n\n // Check for existence of entry name to avoid DOMException\n const performanceEntries = performance.getEntries();\n if (![name1, name2].every((name) => performanceEntries.find((item) => item.name === name))) {\n return {duration: -1, requestCount: -1, measurementName: ''};\n }\n\n const displayPrefix = '🐐 Mattermost: ';\n const measurementName = `${displayPrefix}${name1} - ${name2}`;\n performance.measure(measurementName, name1, name2);\n const duration = mostRecentDurationByEntryName(measurementName);\n\n const requestCount = getRequestCountAtMark(name2) - getRequestCountAtMark(name1);\n\n // Clean up the measures we created\n performance.clearMeasures(measurementName);\n\n return {duration, requestCount, measurementName};\n}\n\n/**\n * Measures the time and number of requests on first page load.\n */\nexport function measurePageLoadTelemetry() {\n if (!isSupported([\n performance,\n performance.timing.loadEventEnd,\n performance.timing.navigationStart,\n performance.getEntriesByType('resource'),\n ])) {\n return;\n }\n\n // Must be wrapped in setTimeout because loadEventEnd property is 0\n // until onload is complete, also time added because analytics\n // code isn't loaded until a subsequent window event has fired.\n const tenSeconds = 10000;\n setTimeout(() => {\n const {loadEventEnd, navigationStart} = window.performance.timing;\n const pageLoadTime = loadEventEnd - navigationStart;\n\n let numOfRequest = 0;\n let maxAPIResourceSize = 0; // in Bytes\n let longestAPIResource = '';\n let longestAPIResourceDuration = 0;\n performance.getEntriesByType('resource').forEach((resourceTimingEntry) => {\n if (resourceTimingEntry.initiatorType === 'xmlhttprequest' || resourceTimingEntry.initiatorType === 'fetch') {\n numOfRequest++;\n maxAPIResourceSize = Math.max(maxAPIResourceSize, resourceTimingEntry.encodedBodySize);\n\n if (resourceTimingEntry.responseEnd - resourceTimingEntry.startTime > longestAPIResourceDuration) {\n longestAPIResourceDuration = resourceTimingEntry.responseEnd - resourceTimingEntry.startTime;\n longestAPIResource = resourceTimingEntry.name?.split('/api/')?.[1] ?? '';\n }\n }\n });\n\n trackEvent('performance', 'page_load', {duration: pageLoadTime, numOfRequest, maxAPIResourceSize, longestAPIResource, longestAPIResourceDuration});\n }, tenSeconds);\n}\n\nfunction mostRecentDurationByEntryName(entryName) {\n const entriesWithName = performance.getEntriesByName(entryName);\n return entriesWithName.map((item) => item.duration)[entriesWithName.length - 1];\n}\n\nfunction isSupported(checks) {\n for (let i = 0, len = checks.length; i < len; i++) {\n const item = checks[i];\n if (typeof item === 'undefined') {\n return false;\n }\n }\n return true;\n}\n\nexport function trackPluginInitialization(plugins) {\n if (!shouldTrackPerformance()) {\n return;\n }\n\n const resourceEntries = performance.getEntriesByType('resource');\n\n let startTime = Infinity;\n let endTime = 0;\n let totalDuration = 0;\n let totalSize = 0;\n\n for (const plugin of plugins) {\n const filename = plugin.webapp.bundle_path.substring(plugin.webapp.bundle_path.lastIndexOf('/'));\n const resource = resourceEntries.find((r) => r.name.endsWith(filename));\n\n if (!resource) {\n // This should never happen, but handle it just in case\n continue;\n }\n\n startTime = Math.min(resource.startTime, startTime);\n endTime = Math.max(resource.startTime + resource.duration, endTime);\n totalDuration += resource.duration;\n totalSize += resource.encodedBodySize;\n }\n\n trackEvent('performance', 'plugins_load', {\n count: plugins.length,\n duration: endTime - startTime,\n totalDuration,\n totalSize,\n });\n}\n\nexport function trackSelectorMetrics() {\n setTimeout(() => {\n if (!shouldTrackPerformance()) {\n return;\n }\n\n const selectors = getSortedTrackedSelectors();\n\n trackEvent('performance', 'least_effective_selectors', {\n after: 'one_minute',\n first: selectors[0]?.name || '',\n first_effectiveness: selectors[0]?.effectiveness,\n first_recomputations: selectors[0]?.recomputations,\n second: selectors[1]?.name || '',\n second_effectiveness: selectors[1]?.effectiveness,\n second_recomputations: selectors[1]?.recomputations,\n third: selectors[2]?.name || '',\n third_effectiveness: selectors[2]?.effectiveness,\n third_recomputations: selectors[2]?.recomputations,\n });\n }, 60000);\n}\n\nlet requestCount = 0;\nconst requestCountAtMark = {};\nlet requestObserver;\n\nfunction initRequestCountingIfNecessary() {\n if (requestObserver) {\n return;\n }\n\n requestObserver = new PerformanceObserver((entries) => {\n for (const entry of entries.getEntries()) {\n const url = entry.name;\n\n if (!url.includes('/api/v4/')) {\n // Don't count requests made outside of the MM server's API\n continue;\n }\n\n if (entry.initiatorType !== 'fetch' && entry.initiatorType !== 'xmlhttprequest') {\n // Only look for API requests made by code and ignore things like attachments thumbnails\n continue;\n }\n\n requestCount += 1;\n }\n });\n requestObserver.observe({type: 'resource', buffered: true});\n}\n\nfunction updateRequestCountAtMark(name) {\n requestCountAtMark[name] = requestCount;\n window.requestCountAtMark = requestCountAtMark;\n}\n\nfunction getRequestCountAtMark(name) {\n return requestCountAtMark[name] ?? 0;\n}\n\n/**\n * This allows the server to know that a given HTTP request occurred during page load or reconnect.\n * The server then uses this information to store metrics fields based on the request context.\n * The setTimeout approach is a \"best effort\" approach that will produce false positives.\n * A more accurate approach will result in more obtrusive code, which would add risk and maintenance cost.\n */\nexport const temporarilySetPageLoadContext = (pageLoadContext) => {\n Client4.setHeader(HEADER_X_PAGE_LOAD_CONTEXT, pageLoadContext);\n setTimeout(() => {\n Client4.removeHeader(HEADER_X_PAGE_LOAD_CONTEXT);\n }, 5000);\n};\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport PQueue from 'p-queue';\n\nimport type {Channel} from '@mattermost/types/channels';\nimport type {UserProfile, UserStatus} from '@mattermost/types/users';\n\nimport {getChannelAndMyMember, getChannelMembersByIds} from 'mattermost-redux/actions/channels';\nimport {savePreferences} from 'mattermost-redux/actions/preferences';\nimport {getTeamMembersByIds} from 'mattermost-redux/actions/teams';\nimport * as UserActions from 'mattermost-redux/actions/users';\nimport {Preferences as PreferencesRedux, General} from 'mattermost-redux/constants';\nimport {\n getChannel,\n getChannelMembersInChannels,\n getChannelMessageCount,\n getCurrentChannelId,\n getMyChannelMember,\n getMyChannels,\n} from 'mattermost-redux/selectors/entities/channels';\nimport {getBool, isCollapsedThreadsEnabled} from 'mattermost-redux/selectors/entities/preferences';\nimport {getCurrentTeamId, getTeamMember} from 'mattermost-redux/selectors/entities/teams';\nimport * as Selectors from 'mattermost-redux/selectors/entities/users';\nimport type {ActionResult, DispatchFunc, GetStateFunc, NewActionFuncAsync} from 'mattermost-redux/types/actions';\nimport {calculateUnreadCount} from 'mattermost-redux/utils/channel_utils';\n\nimport {loadCustomEmojisForCustomStatusesByUserIds} from 'actions/emoji_actions';\nimport {loadStatusesForProfilesList, loadStatusesForProfilesMap} from 'actions/status_actions';\nimport {getDisplayedChannels} from 'selectors/views/channel_sidebar';\nimport store from 'stores/redux_store';\n\nimport {Constants, Preferences, UserStatuses} from 'utils/constants';\nimport * as Utils from 'utils/utils';\n\nimport type {GlobalState} from 'types/store';\n\nexport const queue = new PQueue({concurrency: 4});\nconst dispatch = store.dispatch;\nconst getState = store.getState;\n\nexport function loadProfilesAndStatusesInChannel(channelId: string, page = 0, perPage: number = General.PROFILE_CHUNK_SIZE, sort = '', options = {}) {\n return async (doDispatch: DispatchFunc) => {\n const {data} = await doDispatch(UserActions.getProfilesInChannel(channelId, page, perPage, sort, options));\n if (data) {\n doDispatch(loadStatusesForProfilesList(data));\n }\n return {data: true};\n };\n}\n\nexport function loadProfilesAndReloadTeamMembers(page: number, perPage: number, teamId: string, options = {}) {\n return async (doDispatch: DispatchFunc, doGetState: GetStateFunc) => {\n const newTeamId = teamId || getCurrentTeamId(doGetState());\n const {data} = await doDispatch(UserActions.getProfilesInTeam(newTeamId, page, perPage, '', options));\n if (data) {\n await Promise.all([\n doDispatch(loadTeamMembersForProfilesList(data, newTeamId, true)),\n doDispatch(loadStatusesForProfilesList(data)),\n ]);\n }\n\n return {data: true};\n };\n}\n\nexport function loadProfilesAndReloadChannelMembers(page: number, perPage?: number, channelId?: string, sort = '', options = {}) {\n return async (doDispatch: DispatchFunc, doGetState: GetStateFunc) => {\n const newChannelId = channelId || getCurrentChannelId(doGetState());\n const {data} = await doDispatch(UserActions.getProfilesInChannel(newChannelId, page, perPage, sort, options));\n if (data) {\n await Promise.all([\n doDispatch(loadChannelMembersForProfilesList(data, newChannelId, true)),\n doDispatch(loadStatusesForProfilesList(data)),\n ]);\n }\n\n return {data: true};\n };\n}\n\nexport function loadProfilesAndTeamMembers(page: number, perPage: number, teamId: string, options?: Record): NewActionFuncAsync {\n return async (doDispatch, doGetState) => {\n const newTeamId = teamId || getCurrentTeamId(doGetState());\n const {data} = await doDispatch(UserActions.getProfilesInTeam(newTeamId, page, perPage, '', options));\n if (data) {\n doDispatch(loadTeamMembersForProfilesList(data, newTeamId));\n doDispatch(loadStatusesForProfilesList(data));\n }\n\n return {data: true};\n };\n}\n\nexport function searchProfilesAndTeamMembers(term = '', options: Record = {}) {\n return async (doDispatch: DispatchFunc, doGetState: GetStateFunc) => {\n const newTeamId = options.team_id || getCurrentTeamId(doGetState());\n const {data} = await doDispatch(UserActions.searchProfiles(term, options));\n if (data) {\n await Promise.all([\n doDispatch(loadTeamMembersForProfilesList(data, newTeamId)),\n doDispatch(loadStatusesForProfilesList(data)),\n ]);\n }\n\n return {data: true};\n };\n}\n\nexport function searchProfilesAndChannelMembers(term: string, options: Record = {}) {\n return async (doDispatch: DispatchFunc, doGetState: GetStateFunc) => {\n const newChannelId = options.in_channel_id || getCurrentChannelId(doGetState());\n const {data} = await doDispatch(UserActions.searchProfiles(term, options));\n if (data) {\n await Promise.all([\n doDispatch(loadChannelMembersForProfilesList(data, newChannelId)),\n doDispatch(loadStatusesForProfilesList(data)),\n ]);\n }\n\n return {data: true};\n };\n}\n\nexport function loadProfilesAndTeamMembersAndChannelMembers(page: number, perPage: number, teamId: string, channelId: string, options?: {active?: boolean}): NewActionFuncAsync {\n return async (doDispatch, doGetState) => {\n const state = doGetState();\n const teamIdParam = teamId || getCurrentTeamId(state);\n const channelIdParam = channelId || getCurrentChannelId(state);\n const {data} = await doDispatch(UserActions.getProfilesInChannel(channelIdParam, page, perPage, '', options));\n if (data) {\n const {data: listData} = await doDispatch(loadTeamMembersForProfilesList(data, teamIdParam));\n if (listData) {\n doDispatch(loadChannelMembersForProfilesList(data, channelIdParam));\n doDispatch(loadStatusesForProfilesList(data));\n }\n }\n\n return {data: true};\n };\n}\n\nexport function loadTeamMembersForProfilesList(profiles: UserProfile[], teamId: string, reloadAllMembers = false) {\n return async (doDispatch: DispatchFunc, doGetState: GetStateFunc) => {\n const state = doGetState();\n const teamIdParam = teamId || getCurrentTeamId(state);\n const membersToLoad: Record = {};\n for (let i = 0; i < profiles.length; i++) {\n const pid = profiles[i].id;\n\n if (reloadAllMembers === true || !getTeamMember(state, teamIdParam, pid)) {\n membersToLoad[pid] = true;\n }\n }\n\n const userIdsToLoad = Object.keys(membersToLoad);\n if (userIdsToLoad.length === 0) {\n return {data: true};\n }\n\n await doDispatch(getTeamMembersByIds(teamIdParam, userIdsToLoad));\n\n return {data: true};\n };\n}\n\nexport function loadProfilesWithoutTeam(page: number, perPage: number, options?: Record) {\n return async (doDispatch: DispatchFunc) => {\n const {data} = await doDispatch(UserActions.getProfilesWithoutTeam(page, perPage, options));\n\n doDispatch(loadStatusesForProfilesMap(data));\n\n return data;\n };\n}\n\nexport function loadTeamMembersAndChannelMembersForProfilesList(profiles: UserProfile[], teamId: string, channelId: string) {\n return async (doDispatch: DispatchFunc, doGetState: GetStateFunc) => {\n const state = doGetState();\n const teamIdParam = teamId || getCurrentTeamId(state);\n const channelIdParam = channelId || getCurrentChannelId(state);\n const {data} = await doDispatch(loadTeamMembersForProfilesList(profiles, teamIdParam));\n if (data) {\n doDispatch(loadChannelMembersForProfilesList(profiles, channelIdParam));\n }\n\n return {data: true};\n };\n}\n\nexport function loadChannelMembersForProfilesList(profiles: UserProfile[], channelId: string, reloadAllMembers = false) {\n return async (doDispatch: DispatchFunc, doGetState: GetStateFunc) => {\n const state = doGetState();\n const channelIdParam = channelId || getCurrentChannelId(state);\n const membersToLoad: Record = {};\n for (let i = 0; i < profiles.length; i++) {\n const pid = profiles[i].id;\n\n const members = getChannelMembersInChannels(state)[channelIdParam];\n if (reloadAllMembers === true || !members || !members[pid]) {\n membersToLoad[pid] = true;\n }\n }\n\n const list = Object.keys(membersToLoad);\n if (list.length === 0) {\n return {data: true};\n }\n\n await doDispatch(getChannelMembersByIds(channelIdParam, list));\n return {data: true};\n };\n}\n\nexport function loadNewDMIfNeeded(channelId: string) {\n return async (doDispatch: DispatchFunc, doGetState: GetStateFunc) => {\n const state = doGetState();\n const currentUserId = Selectors.getCurrentUserId(state);\n\n function checkPreference(channel: Channel) {\n const userId = Utils.getUserIdFromChannelName(channel);\n\n if (!userId) {\n return {data: false};\n }\n\n const pref = getBool(state, Preferences.CATEGORY_DIRECT_CHANNEL_SHOW, userId, false);\n if (pref === false) {\n const now = Utils.getTimestamp();\n doDispatch(savePreferences(currentUserId, [\n {user_id: currentUserId, category: Preferences.CATEGORY_DIRECT_CHANNEL_SHOW, name: userId, value: 'true'},\n {user_id: currentUserId, category: Preferences.CATEGORY_CHANNEL_OPEN_TIME, name: channelId, value: now.toString()},\n ]));\n loadProfilesForDM();\n return {data: true};\n }\n return {data: false};\n }\n\n let result = {data: false} as ActionResult;\n\n const channel = getChannel(doGetState(), channelId);\n if (channel) {\n result = checkPreference(channel);\n } else {\n result = await doDispatch(getChannelAndMyMember(channelId));\n if (result.data) {\n result = checkPreference(result.data.channel);\n }\n }\n return result;\n };\n}\n\nexport function loadNewGMIfNeeded(channelId: string) {\n return async (doDispatch: DispatchFunc, doGetState: GetStateFunc) => {\n const state = doGetState();\n const currentUserId = Selectors.getCurrentUserId(state);\n\n function checkPreference() {\n const pref = getBool(state, Preferences.CATEGORY_GROUP_CHANNEL_SHOW, channelId, false);\n if (pref === false) {\n dispatch(savePreferences(currentUserId, [{user_id: currentUserId, category: Preferences.CATEGORY_GROUP_CHANNEL_SHOW, name: channelId, value: 'true'}]));\n loadProfilesForGM();\n return {data: true};\n }\n return {data: false};\n }\n\n const channel = getChannel(state, channelId);\n if (!channel) {\n await doDispatch(getChannelAndMyMember(channelId));\n }\n return checkPreference();\n };\n}\n\nexport function loadProfilesForGroupChannels(groupChannels: Channel[]) {\n return (doDispatch: DispatchFunc, doGetState: GetStateFunc) => {\n const state = doGetState();\n const userIdsInChannels = Selectors.getUserIdsInChannels(state);\n\n const groupChannelsToFetch = groupChannels.reduce((acc, {id}) => {\n const userIdsInGroupChannel = (userIdsInChannels[id] || new Set());\n\n if (userIdsInGroupChannel.size === 0) {\n acc.push(id);\n }\n return acc;\n }, ([] as string[]));\n\n if (groupChannelsToFetch.length > 0) {\n doDispatch(UserActions.getProfilesInGroupChannels(groupChannelsToFetch));\n return {data: true};\n }\n\n return {data: false};\n };\n}\n\nexport async function loadProfilesForSidebar() {\n await Promise.all([loadProfilesForDM(), loadProfilesForGM()]);\n}\n\nexport const getGMsForLoading = (state: GlobalState) => {\n // Get all channels visible on the current team which doesn't include hidden GMs/DMs\n let channels = getDisplayedChannels(state);\n\n // Make sure we only have GMs\n channels = channels.filter((channel) => channel.type === General.GM_CHANNEL);\n\n return channels;\n};\n\nexport async function loadProfilesForGM() {\n const state = getState();\n const newPreferences = [];\n const userIdsInChannels = Selectors.getUserIdsInChannels(state);\n const currentUserId = Selectors.getCurrentUserId(state);\n const collapsedThreads = isCollapsedThreadsEnabled(state);\n\n const userIdsForLoadingCustomEmojis = new Set();\n for (const channel of getGMsForLoading(state)) {\n const userIds = userIdsInChannels[channel.id] || new Set();\n\n userIds.forEach((userId) => userIdsForLoadingCustomEmojis.add(userId));\n\n if (userIds.size >= Constants.MIN_USERS_IN_GM) {\n continue;\n }\n\n const isVisible = getBool(state, Preferences.CATEGORY_GROUP_CHANNEL_SHOW, channel.id);\n\n if (!isVisible) {\n const messageCount = getChannelMessageCount(state, channel.id);\n const member = getMyChannelMember(state, channel.id);\n\n const unreadCount = calculateUnreadCount(messageCount, member, collapsedThreads);\n\n if (!unreadCount.showUnread) {\n continue;\n }\n\n newPreferences.push({\n user_id: currentUserId,\n category: Preferences.CATEGORY_GROUP_CHANNEL_SHOW,\n name: channel.id,\n value: 'true',\n });\n }\n\n const getProfilesAction = UserActions.getProfilesInChannel(channel.id, 0, Constants.MAX_USERS_IN_GM);\n queue.add(() => dispatch(getProfilesAction));\n }\n\n await queue.onEmpty();\n\n if (userIdsForLoadingCustomEmojis.size > 0) {\n dispatch(loadCustomEmojisForCustomStatusesByUserIds(userIdsForLoadingCustomEmojis));\n }\n if (newPreferences.length > 0) {\n dispatch(savePreferences(currentUserId, newPreferences));\n }\n}\n\nexport async function loadProfilesForDM() {\n const state = getState();\n const channels = getMyChannels(state);\n const newPreferences = [];\n const profilesToLoad = [];\n const profileIds = [];\n const currentUserId = Selectors.getCurrentUserId(state);\n const collapsedThreads = isCollapsedThreadsEnabled(state);\n\n for (let i = 0; i < channels.length; i++) {\n const channel = channels[i];\n if (channel.type !== Constants.DM_CHANNEL) {\n continue;\n }\n\n const teammateId = channel.name.replace(currentUserId, '').replace('__', '');\n const isVisible = getBool(state, Preferences.CATEGORY_DIRECT_CHANNEL_SHOW, teammateId);\n\n if (!isVisible) {\n const member = getMyChannelMember(state, channel.id);\n const messageCount = getChannelMessageCount(state, channel.id);\n\n const unreadCount = calculateUnreadCount(messageCount, member, collapsedThreads);\n\n if (!member || !unreadCount.showUnread) {\n continue;\n }\n\n newPreferences.push({\n user_id: currentUserId,\n category: Preferences.CATEGORY_DIRECT_CHANNEL_SHOW,\n name: teammateId,\n value: 'true',\n });\n }\n\n if (!Selectors.getUser(state, teammateId)) {\n profilesToLoad.push(teammateId);\n }\n profileIds.push(teammateId);\n }\n\n if (newPreferences.length > 0) {\n dispatch(savePreferences(currentUserId, newPreferences));\n }\n\n if (profilesToLoad.length > 0) {\n await dispatch(UserActions.getProfilesByIds(profilesToLoad));\n }\n await dispatch(loadCustomEmojisForCustomStatusesByUserIds(profileIds));\n}\n\nexport function autocompleteUsersInTeam(username: string) {\n return async (doDispatch: DispatchFunc, doGetState: GetStateFunc) => {\n const currentTeamId = getCurrentTeamId(doGetState());\n const {data} = await doDispatch(UserActions.autocompleteUsers(username, currentTeamId));\n return data;\n };\n}\n\nexport function autocompleteUsers(username: string) {\n return async (doDispatch: DispatchFunc) => {\n const {data} = await doDispatch(UserActions.autocompleteUsers(username));\n return data;\n };\n}\n\nexport function autoResetStatus() {\n return async (doDispatch: DispatchFunc): Promise<{data: UserStatus}> => {\n const {currentUserId} = getState().entities.users;\n const {data: userStatus} = await doDispatch(UserActions.getStatus(currentUserId));\n\n if (userStatus.status === UserStatuses.OUT_OF_OFFICE || !userStatus.manual) {\n return {data: userStatus};\n }\n\n const autoReset = getBool(getState(), PreferencesRedux.CATEGORY_AUTO_RESET_MANUAL_STATUS, currentUserId, false);\n\n if (autoReset) {\n doDispatch(UserActions.setStatus({user_id: currentUserId, status: 'online'}));\n return {data: userStatus};\n }\n\n return {data: userStatus};\n };\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport {batchActions} from 'redux-batched-actions';\n\nimport type {Draft as ServerDraft} from '@mattermost/types/drafts';\nimport type {FileInfo} from '@mattermost/types/files';\nimport type {PostMetadata, PostPriorityMetadata} from '@mattermost/types/posts';\nimport type {PreferenceType} from '@mattermost/types/preferences';\nimport type {UserProfile} from '@mattermost/types/users';\n\nimport {savePreferences} from 'mattermost-redux/actions/preferences';\nimport {Client4} from 'mattermost-redux/client';\nimport Preferences from 'mattermost-redux/constants/preferences';\nimport {syncedDraftsAreAllowedAndEnabled} from 'mattermost-redux/selectors/entities/preferences';\nimport {getCurrentUserId} from 'mattermost-redux/selectors/entities/users';\nimport type {ActionFunc, DispatchFunc, GetStateFunc} from 'mattermost-redux/types/actions';\n\nimport {setGlobalItem} from 'actions/storage';\nimport {makeGetDrafts} from 'selectors/drafts';\nimport {getConnectionId} from 'selectors/general';\nimport {getGlobalItem} from 'selectors/storage';\n\nimport {ActionTypes, StoragePrefixes} from 'utils/constants';\n\nimport type {GlobalState} from 'types/store';\nimport type {PostDraft} from 'types/store/draft';\n\ntype Draft = {\n key: keyof GlobalState['storage']['storage'];\n value: PostDraft;\n timestamp: Date;\n}\n\n/**\n * Gets drafts stored on the server and reconciles them with any locally stored drafts.\n * @param teamId Only drafts for the given teamId will be fetched.\n */\nexport function getDrafts(teamId: string) {\n const getLocalDrafts = makeGetDrafts(false);\n\n return async (dispatch: DispatchFunc, getState: GetStateFunc) => {\n const state = getState() as GlobalState;\n\n let serverDrafts: Draft[] = [];\n try {\n serverDrafts = (await Client4.getUserDrafts(teamId)).map((draft) => transformServerDraft(draft));\n } catch (error) {\n return {data: false, error};\n }\n\n const localDrafts = getLocalDrafts(state);\n const drafts = [...serverDrafts, ...localDrafts];\n\n // Reconcile drafts and only keep the latest version of a draft.\n const draftsMap = new Map(drafts.map((draft) => [draft.key, draft]));\n drafts.forEach((draft) => {\n const currentDraft = draftsMap.get(draft.key);\n if (currentDraft && draft.timestamp > currentDraft.timestamp) {\n draftsMap.set(draft.key, draft);\n }\n });\n\n const actions = Array.from(draftsMap).map(([key, draft]) => {\n return setGlobalItem(key, draft.value);\n });\n\n dispatch(batchActions(actions));\n return {data: true};\n };\n}\n\nexport function removeDraft(key: string, channelId: string, rootId = '') {\n return async (dispatch: DispatchFunc, getState: GetStateFunc) => {\n const state = getState() as GlobalState;\n\n dispatch(setGlobalItem(key, {message: '', fileInfos: [], uploadsInProgress: []}));\n\n if (syncedDraftsAreAllowedAndEnabled(state)) {\n const connectionId = getConnectionId(getState() as GlobalState);\n\n try {\n await Client4.deleteDraft(channelId, rootId, connectionId);\n } catch (error) {\n return {\n data: false,\n error,\n };\n }\n }\n return {data: true};\n };\n}\n\nexport function updateDraft(key: string, value: PostDraft|null, rootId = '', save = false) {\n return async (dispatch: DispatchFunc, getState: GetStateFunc) => {\n const state = getState() as GlobalState;\n let updatedValue: PostDraft|null = null;\n if (value) {\n const timestamp = new Date().getTime();\n const data = getGlobalItem(state, key, {});\n updatedValue = {\n ...value,\n createAt: data.createAt || timestamp,\n updateAt: timestamp,\n };\n }\n\n dispatch(setGlobalDraft(key, updatedValue, false));\n\n if (syncedDraftsAreAllowedAndEnabled(state) && save && updatedValue) {\n const connectionId = getConnectionId(state);\n const userId = getCurrentUserId(state);\n try {\n await upsertDraft(updatedValue, userId, rootId, connectionId);\n } catch (error) {\n return {data: false, error};\n }\n }\n return {data: true};\n };\n}\n\nfunction upsertDraft(draft: PostDraft, userId: UserProfile['id'], rootId = '', connectionId: string) {\n const fileIds = draft.fileInfos.map((file) => file.id);\n const newDraft = {\n create_at: draft.createAt || 0,\n update_at: draft.updateAt || 0,\n delete_at: 0,\n user_id: userId,\n channel_id: draft.channelId,\n root_id: draft.rootId || rootId,\n message: draft.message,\n props: draft.props,\n file_ids: fileIds,\n priority: draft.metadata?.priority as PostPriorityMetadata,\n };\n\n return Client4.upsertDraft(newDraft, connectionId);\n}\n\nexport function setDraftsTourTipPreference(initializationState: Record): ActionFunc {\n return async (dispatch: DispatchFunc, getState: GetStateFunc) => {\n const state = getState();\n const currentUserId = getCurrentUserId(state);\n const preference: PreferenceType = {\n user_id: currentUserId,\n category: Preferences.CATEGORY_DRAFTS,\n name: Preferences.DRAFTS_TOUR_TIP_SHOWED,\n value: JSON.stringify(initializationState),\n };\n await dispatch(savePreferences(currentUserId, [preference]));\n return {data: true};\n };\n}\n\nexport function setGlobalDraft(key: string, value: PostDraft|null, isRemote: boolean) {\n return (dispatch: DispatchFunc) => {\n dispatch(setGlobalItem(key, value));\n dispatch(setGlobalDraftSource(key, isRemote));\n return {data: true};\n };\n}\n\nexport function setGlobalDraftSource(key: string, isRemote: boolean) {\n return {\n type: ActionTypes.SET_DRAFT_SOURCE,\n data: {\n key,\n isRemote,\n },\n };\n}\n\nexport function transformServerDraft(draft: ServerDraft): Draft {\n let key: Draft['key'] = `${StoragePrefixes.DRAFT}${draft.channel_id}`;\n\n if (draft.root_id !== '') {\n key = `${StoragePrefixes.COMMENT_DRAFT}${draft.root_id}`;\n }\n\n let fileInfos: FileInfo[] = [];\n if (draft.metadata?.files) {\n fileInfos = draft.metadata.files;\n }\n\n const metadata = (draft.metadata || {}) as PostMetadata;\n if (draft.priority) {\n metadata.priority = draft.priority;\n }\n\n return {\n key,\n timestamp: new Date(draft.update_at),\n value: {\n message: draft.message,\n fileInfos,\n props: draft.props,\n uploadsInProgress: [],\n channelId: draft.channel_id,\n rootId: draft.root_id,\n createAt: draft.create_at,\n updateAt: draft.update_at,\n metadata,\n show: true,\n },\n };\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport {ActionTypes} from 'utils/constants';\n\nimport type {ModalData} from 'types/actions';\n\nexport function openModal

(modalData: ModalData

) {\n return {\n type: ActionTypes.MODAL_OPEN,\n modalId: modalData.modalId,\n dialogProps: modalData.dialogProps,\n dialogType: modalData.dialogType,\n };\n}\n\nexport type CloseModalType = {\n type: string;\n modalId: string;\n}\n\nexport function closeModal(modalId: string) {\n return {\n type: ActionTypes.MODAL_CLOSE,\n modalId,\n };\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport debounce from 'lodash/debounce';\nimport type {AnyAction} from 'redux';\nimport {batchActions} from 'redux-batched-actions';\n\nimport type {Post} from '@mattermost/types/posts';\n\nimport {SearchTypes} from 'mattermost-redux/action_types';\nimport {getChannel} from 'mattermost-redux/actions/channels';\nimport * as PostActions from 'mattermost-redux/actions/posts';\nimport {getPostsByIds, getPost as fetchPost} from 'mattermost-redux/actions/posts';\nimport {\n clearSearch,\n getFlaggedPosts,\n getPinnedPosts,\n searchPostsWithParams,\n searchFilesWithParams,\n} from 'mattermost-redux/actions/search';\nimport {getCurrentChannelId, getCurrentChannelNameForSearchShortcut, getChannel as getChannelSelector} from 'mattermost-redux/selectors/entities/channels';\nimport {getConfig} from 'mattermost-redux/selectors/entities/general';\nimport {getPost} from 'mattermost-redux/selectors/entities/posts';\nimport {getCurrentTeamId} from 'mattermost-redux/selectors/entities/teams';\nimport {getCurrentTimezone} from 'mattermost-redux/selectors/entities/timezone';\nimport {getCurrentUser, getCurrentUserMentionKeys} from 'mattermost-redux/selectors/entities/users';\nimport type {DispatchFunc, GetStateFunc} from 'mattermost-redux/types/actions';\n\nimport {trackEvent} from 'actions/telemetry_actions.jsx';\nimport {getSearchTerms, getRhsState, getPluggableId, getFilesSearchExtFilter, getPreviousRhsState} from 'selectors/rhs';\n\nimport {SidebarSize} from 'components/resizable_sidebar/constants';\n\nimport {ActionTypes, RHSStates, Constants} from 'utils/constants';\nimport {getBrowserUtcOffset, getUtcOffsetForTimeZone} from 'utils/timezone';\n\nimport type {GlobalState} from 'types/store';\nimport type {RhsState} from 'types/store/rhs';\n\nfunction selectPostFromRightHandSideSearchWithPreviousState(post: Post, previousRhsState?: RhsState) {\n return async (dispatch: DispatchFunc, getState: GetStateFunc) => {\n const postRootId = post.root_id || post.id;\n await dispatch(PostActions.getPostThread(postRootId));\n const state = getState() as GlobalState;\n\n dispatch({\n type: ActionTypes.SELECT_POST,\n postId: postRootId,\n channelId: post.channel_id,\n previousRhsState: previousRhsState || getRhsState(state),\n timestamp: Date.now(),\n });\n\n return {data: true};\n };\n}\n\nfunction selectPostCardFromRightHandSideSearchWithPreviousState(post: Post, previousRhsState?: RhsState) {\n return async (dispatch: DispatchFunc, getState: GetStateFunc) => {\n const state = getState() as GlobalState;\n\n dispatch({\n type: ActionTypes.SELECT_POST_CARD,\n postId: post.id,\n channelId: post.channel_id,\n previousRhsState: previousRhsState || getRhsState(state),\n });\n\n return {data: true};\n };\n}\n\nexport function updateRhsState(rhsState: string, channelId?: string, previousRhsState?: RhsState) {\n return (dispatch: DispatchFunc, getState: GetStateFunc) => {\n const action: AnyAction = {\n type: ActionTypes.UPDATE_RHS_STATE,\n state: rhsState,\n };\n\n if ([\n RHSStates.PIN,\n RHSStates.CHANNEL_FILES,\n RHSStates.CHANNEL_INFO,\n RHSStates.CHANNEL_MEMBERS,\n ].includes(rhsState)) {\n action.channelId = channelId || getCurrentChannelId(getState());\n }\n if (previousRhsState) {\n action.previousRhsState = previousRhsState;\n }\n\n dispatch(action);\n\n return {data: true};\n };\n}\n\nexport function openShowEditHistory(post: Post) {\n return {\n type: ActionTypes.UPDATE_RHS_STATE,\n state: RHSStates.EDIT_HISTORY,\n postId: post.id,\n channelId: post.channel_id,\n timestamp: Date.now(),\n };\n}\n\nexport function goBack() {\n return async (dispatch: DispatchFunc, getState: GetStateFunc) => {\n const prevState = getPreviousRhsState(getState() as GlobalState);\n const defaultTab = 'channel-info';\n\n dispatch({\n type: ActionTypes.RHS_GO_BACK,\n state: prevState || defaultTab,\n });\n\n return {data: true};\n };\n}\n\nexport function selectPostFromRightHandSideSearch(post: Post) {\n return selectPostFromRightHandSideSearchWithPreviousState(post);\n}\n\nexport function selectPostCardFromRightHandSideSearch(post: Post) {\n return selectPostCardFromRightHandSideSearchWithPreviousState(post);\n}\n\nexport function selectPostFromRightHandSideSearchByPostId(postId: string) {\n return async (dispatch: DispatchFunc, getState: GetStateFunc) => {\n const post = getPost(getState(), postId);\n return dispatch(selectPostFromRightHandSideSearch(post));\n };\n}\n\nexport function updateSearchTerms(terms: string) {\n return {\n type: ActionTypes.UPDATE_RHS_SEARCH_TERMS,\n terms,\n };\n}\n\nexport function setRhsSize(rhsSize?: SidebarSize) {\n let newSidebarSize = rhsSize;\n if (!newSidebarSize) {\n const width = window.innerWidth;\n\n switch (true) {\n case width <= Constants.SMALL_SIDEBAR_BREAKPOINT: {\n newSidebarSize = SidebarSize.SMALL;\n break;\n }\n case width > Constants.SMALL_SIDEBAR_BREAKPOINT && width <= Constants.MEDIUM_SIDEBAR_BREAKPOINT: {\n newSidebarSize = SidebarSize.MEDIUM;\n break;\n }\n case width > Constants.MEDIUM_SIDEBAR_BREAKPOINT && width <= Constants.LARGE_SIDEBAR_BREAKPOINT: {\n newSidebarSize = SidebarSize.LARGE;\n break;\n }\n default: {\n newSidebarSize = SidebarSize.XLARGE;\n }\n }\n }\n return {\n type: ActionTypes.SET_RHS_SIZE,\n size: newSidebarSize,\n };\n}\n\nexport function updateSearchTermsForShortcut() {\n return (dispatch: DispatchFunc, getState: GetStateFunc) => {\n const currentChannelName = getCurrentChannelNameForSearchShortcut(getState());\n return dispatch(updateSearchTerms(`in:${currentChannelName} `));\n };\n}\n\nexport function updateSearchType(searchType: string) {\n return {\n type: ActionTypes.UPDATE_RHS_SEARCH_TYPE,\n searchType,\n };\n}\n\nfunction updateSearchResultsTerms(terms: string) {\n return {\n type: ActionTypes.UPDATE_RHS_SEARCH_RESULTS_TERMS,\n terms,\n };\n}\n\nexport function performSearch(terms: string, isMentionSearch?: boolean) {\n return (dispatch: DispatchFunc, getState: GetStateFunc) => {\n let searchTerms = terms;\n const teamId = getCurrentTeamId(getState());\n const config = getConfig(getState());\n const viewArchivedChannels = config.ExperimentalViewArchivedChannels === 'true';\n const extensionsFilters = getFilesSearchExtFilter(getState() as GlobalState);\n\n const extensions = extensionsFilters?.map((ext) => `ext:${ext}`).join(' ');\n let termsWithExtensionsFilters = searchTerms;\n if (extensions?.trim().length > 0) {\n termsWithExtensionsFilters += ` ${extensions}`;\n }\n\n if (isMentionSearch) {\n // Username should be quoted to allow specific search\n // in case username is made with multiple words splitted by dashes or other symbols.\n const user = getCurrentUser(getState());\n const termsArr = searchTerms.split(' ').filter((t) => Boolean(t && t.trim()));\n const username = '@' + user.username;\n const quotedUsername = `\"${username}\"`;\n for (let i = 0; i < termsArr.length; i++) {\n if (termsArr[i] === username) {\n termsArr[i] = quotedUsername;\n break;\n }\n }\n searchTerms = termsArr.join(' ');\n }\n\n // timezone offset in seconds\n const userCurrentTimezone = getCurrentTimezone(getState());\n const timezoneOffset = ((userCurrentTimezone && (userCurrentTimezone.length > 0)) ? getUtcOffsetForTimeZone(userCurrentTimezone) : getBrowserUtcOffset()) * 60;\n const messagesPromise = dispatch(searchPostsWithParams(isMentionSearch ? '' : teamId, {terms: searchTerms, is_or_search: Boolean(isMentionSearch), include_deleted_channels: viewArchivedChannels, time_zone_offset: timezoneOffset, page: 0, per_page: 20}));\n const filesPromise = dispatch(searchFilesWithParams(teamId, {terms: termsWithExtensionsFilters, is_or_search: Boolean(isMentionSearch), include_deleted_channels: viewArchivedChannels, time_zone_offset: timezoneOffset, page: 0, per_page: 20}));\n return Promise.all([filesPromise, messagesPromise]);\n };\n}\n\nexport function filterFilesSearchByExt(extensions: string[]) {\n return (dispatch: DispatchFunc) => {\n dispatch({\n type: ActionTypes.SET_FILES_FILTER_BY_EXT,\n data: extensions,\n });\n return {data: true};\n };\n}\n\nexport function showSearchResults(isMentionSearch = false) {\n return (dispatch: DispatchFunc, getState: GetStateFunc) => {\n const state = getState() as GlobalState;\n\n const searchTerms = getSearchTerms(state);\n\n if (isMentionSearch) {\n dispatch(updateRhsState(RHSStates.MENTION));\n } else {\n dispatch(updateRhsState(RHSStates.SEARCH));\n }\n dispatch(updateSearchResultsTerms(searchTerms));\n\n return dispatch(performSearch(searchTerms));\n };\n}\n\nexport function showRHSPlugin(pluggableId: string) {\n return {\n type: ActionTypes.UPDATE_RHS_STATE,\n state: RHSStates.PLUGIN,\n pluggableId,\n };\n}\n\nexport function showChannelMembers(channelId: string, inEditingMode = false) {\n return async (dispatch: DispatchFunc, getState: GetStateFunc) => {\n const state = getState() as GlobalState;\n\n if (inEditingMode) {\n await dispatch(setEditChannelMembers(true));\n }\n\n let previousRhsState = getRhsState(state);\n if (previousRhsState === RHSStates.CHANNEL_MEMBERS) {\n previousRhsState = getPreviousRhsState(state);\n }\n dispatch({\n type: ActionTypes.UPDATE_RHS_STATE,\n channelId,\n state: RHSStates.CHANNEL_MEMBERS,\n previousRhsState,\n });\n\n return {data: true};\n };\n}\n\nexport function hideRHSPlugin(pluggableId: string) {\n return (dispatch: DispatchFunc, getState: GetStateFunc) => {\n const state = getState() as GlobalState;\n\n if (getPluggableId(state) === pluggableId) {\n dispatch(closeRightHandSide());\n }\n\n return {data: true};\n };\n}\n\nexport function toggleRHSPlugin(pluggableId: string) {\n return (dispatch: DispatchFunc, getState: GetStateFunc) => {\n const state = getState() as GlobalState;\n\n if (getPluggableId(state) === pluggableId) {\n dispatch(hideRHSPlugin(pluggableId));\n return {data: false};\n }\n\n dispatch(showRHSPlugin(pluggableId));\n return {data: true};\n };\n}\n\nexport function showFlaggedPosts() {\n return async (dispatch: DispatchFunc, getState: GetStateFunc) => {\n const state = getState();\n const teamId = getCurrentTeamId(state);\n\n dispatch({\n type: ActionTypes.UPDATE_RHS_STATE,\n state: RHSStates.FLAG,\n });\n\n const results = await dispatch(getFlaggedPosts());\n let data: any;\n if ('data' in results) {\n data = results.data;\n }\n\n dispatch(batchActions([\n {\n type: SearchTypes.RECEIVED_SEARCH_POSTS,\n data,\n },\n {\n type: SearchTypes.RECEIVED_SEARCH_TERM,\n data: {\n teamId,\n terms: null,\n isOrSearch: false,\n },\n },\n ]));\n\n return {data: true};\n };\n}\n\nexport function showPinnedPosts(channelId?: string) {\n return async (dispatch: DispatchFunc, getState: GetStateFunc) => {\n const state = getState() as GlobalState;\n const currentChannelId = getCurrentChannelId(state);\n const teamId = getCurrentTeamId(state);\n\n let previousRhsState = getRhsState(state);\n if (previousRhsState === RHSStates.PIN) {\n previousRhsState = getPreviousRhsState(state);\n }\n dispatch({\n type: ActionTypes.UPDATE_RHS_STATE,\n channelId: channelId || currentChannelId,\n state: RHSStates.PIN,\n previousRhsState,\n });\n\n const results = await dispatch(getPinnedPosts(channelId || currentChannelId));\n\n let data: any;\n if ('data' in results) {\n data = results.data;\n }\n\n dispatch(batchActions([\n {\n type: SearchTypes.RECEIVED_SEARCH_POSTS,\n data,\n },\n {\n type: SearchTypes.RECEIVED_SEARCH_TERM,\n data: {\n teamId,\n terms: null,\n isOrSearch: false,\n },\n },\n ]));\n\n return {data: true};\n };\n}\n\nexport function showChannelFiles(channelId: string) {\n return async (dispatch: DispatchFunc, getState: GetStateFunc) => {\n const state = getState() as GlobalState;\n const teamId = getCurrentTeamId(state);\n\n let previousRhsState = getRhsState(state);\n if (previousRhsState === RHSStates.CHANNEL_FILES) {\n previousRhsState = getPreviousRhsState(state);\n }\n dispatch({\n type: ActionTypes.UPDATE_RHS_STATE,\n channelId,\n state: RHSStates.CHANNEL_FILES,\n previousRhsState,\n });\n dispatch(updateSearchType('files'));\n\n const results = await dispatch(performSearch('channel:' + channelId));\n const fileData = results instanceof Array ? results[0].data : null;\n const missingPostIds: string[] = [];\n\n if (fileData) {\n Object.values(fileData.file_infos).forEach((file: any) => {\n const postId = file?.post_id;\n\n if (postId && !getPost(state, postId)) {\n missingPostIds.push(postId);\n }\n });\n }\n if (missingPostIds.length > 0) {\n await dispatch(getPostsByIds(missingPostIds));\n }\n\n let data: any;\n if (results && results instanceof Array && results.length === 2 && 'data' in results[1]) {\n data = results[1].data;\n }\n\n dispatch(batchActions([\n {\n type: SearchTypes.RECEIVED_SEARCH_POSTS,\n data,\n },\n {\n type: SearchTypes.RECEIVED_SEARCH_TERM,\n data: {\n teamId,\n terms: null,\n isOrSearch: false,\n },\n },\n ]));\n\n return {data: true};\n };\n}\n\nexport function showMentions() {\n return (dispatch: DispatchFunc, getState: GetStateFunc) => {\n const termKeys = getCurrentUserMentionKeys(getState()).filter(({key}) => {\n return key !== '@channel' && key !== '@all' && key !== '@here';\n });\n\n const terms = termKeys.map(({key}) => key).join(' ').trim() + ' ';\n\n trackEvent('api', 'api_posts_search_mention');\n\n dispatch(performSearch(terms, true));\n dispatch(batchActions([\n {\n type: ActionTypes.UPDATE_RHS_SEARCH_TERMS,\n terms,\n },\n {\n type: ActionTypes.UPDATE_RHS_STATE,\n state: RHSStates.MENTION,\n },\n ]));\n\n return {data: true};\n };\n}\n\nexport function showChannelInfo(channelId: string) {\n return (dispatch: DispatchFunc) => {\n dispatch({\n type: ActionTypes.UPDATE_RHS_STATE,\n channelId,\n state: RHSStates.CHANNEL_INFO,\n });\n return {data: true};\n };\n}\n\nexport function closeRightHandSide() {\n return (dispatch: DispatchFunc) => {\n const actionsBatch: AnyAction[] = [\n {\n type: ActionTypes.UPDATE_RHS_STATE,\n state: null,\n },\n {\n type: ActionTypes.SELECT_POST,\n postId: '',\n channelId: '',\n timestamp: 0,\n },\n ];\n\n dispatch(batchActions(actionsBatch));\n return {data: true};\n };\n}\n\nexport const toggleMenu = () => (dispatch: DispatchFunc) => dispatch({\n type: ActionTypes.TOGGLE_RHS_MENU,\n});\n\nexport const openMenu = () => (dispatch: DispatchFunc) => dispatch({\n type: ActionTypes.OPEN_RHS_MENU,\n});\n\nexport const closeMenu = () => (dispatch: DispatchFunc) => dispatch({\n type: ActionTypes.CLOSE_RHS_MENU,\n});\n\nexport function setRhsExpanded(expanded: boolean) {\n return {\n type: ActionTypes.SET_RHS_EXPANDED,\n expanded,\n };\n}\n\nexport function toggleRhsExpanded() {\n return {\n type: ActionTypes.TOGGLE_RHS_EXPANDED,\n };\n}\n\nexport function selectPostAndParentChannel(post: Post) {\n return async (dispatch: DispatchFunc, getState: GetStateFunc) => {\n const channel = getChannelSelector(getState(), post.channel_id);\n if (!channel) {\n await dispatch(getChannel(post.channel_id));\n }\n return dispatch(selectPost(post));\n };\n}\n\nexport function selectPost(post: Post) {\n return {\n type: ActionTypes.SELECT_POST,\n postId: post.root_id || post.id,\n channelId: post.channel_id,\n timestamp: Date.now(),\n };\n}\n\nexport function selectPostById(postId: string) {\n return async (dispatch: DispatchFunc, getState: GetStateFunc) => {\n const state = getState();\n const post = getPost(state, postId) ?? (await dispatch(fetchPost(postId))).data;\n if (post) {\n const channel = getChannelSelector(state, post.channel_id);\n if (!channel) {\n await dispatch(getChannel(post.channel_id));\n }\n dispatch(selectPost(post));\n return {data: true};\n }\n return {data: false};\n };\n}\n\nexport function highlightReply(post: Post) {\n return {\n type: ActionTypes.HIGHLIGHT_REPLY,\n postId: post.id,\n };\n}\n\nexport const clearHighlightReply = {\n type: ActionTypes.CLEAR_HIGHLIGHT_REPLY,\n};\n\nexport const debouncedClearHighlightReply = debounce((dispatch) => {\n return dispatch(clearHighlightReply);\n}, Constants.PERMALINK_FADEOUT);\n\nexport function selectPostAndHighlight(post: Post) {\n return (dispatch: DispatchFunc) => {\n dispatch(batchActions([\n selectPost(post),\n highlightReply(post),\n ]));\n\n debouncedClearHighlightReply(dispatch);\n\n return {data: true};\n };\n}\n\nexport function selectPostCard(post: Post) {\n return {type: ActionTypes.SELECT_POST_CARD, postId: post.id, channelId: post.channel_id};\n}\n\nexport function openRHSSearch() {\n return (dispatch: DispatchFunc) => {\n dispatch(clearSearch());\n dispatch(updateSearchTerms(''));\n dispatch(updateSearchResultsTerms(''));\n\n dispatch(updateRhsState(RHSStates.SEARCH));\n\n return {data: true};\n };\n}\n\nexport function openAtPrevious(previous: any) { // TODO Could not find the proper type. Seems to be in several props around\n return (dispatch: DispatchFunc, getState: GetStateFunc) => {\n if (!previous) {\n return dispatch(openRHSSearch());\n }\n\n if (previous.isChannelInfo) {\n const currentChannelId = getCurrentChannelId(getState());\n return dispatch(showChannelInfo(currentChannelId));\n }\n if (previous.isChannelMembers) {\n const currentChannelId = getCurrentChannelId(getState());\n return dispatch(showChannelMembers(currentChannelId));\n }\n if (previous.isMentionSearch) {\n return dispatch(showMentions());\n }\n if (previous.isPinnedPosts) {\n return dispatch(showPinnedPosts());\n }\n if (previous.isFlaggedPosts) {\n return dispatch(showFlaggedPosts());\n }\n if (previous.selectedPostId) {\n const post = getPost(getState(), previous.selectedPostId);\n return post ? dispatch(selectPostFromRightHandSideSearchWithPreviousState(post, previous.previousRhsState)) : dispatch(openRHSSearch());\n }\n if (previous.selectedPostCardId) {\n const post = getPost(getState(), previous.selectedPostCardId);\n return post ? dispatch(selectPostCardFromRightHandSideSearchWithPreviousState(post, previous.previousRhsState)) : dispatch(openRHSSearch());\n }\n if (previous.searchVisible) {\n return dispatch(showSearchResults());\n }\n\n return dispatch(openRHSSearch());\n };\n}\n\nexport const suppressRHS = {\n type: ActionTypes.SUPPRESS_RHS,\n};\n\nexport const unsuppressRHS = {\n type: ActionTypes.UNSUPPRESS_RHS,\n};\n\nexport function setEditChannelMembers(active: boolean) {\n return (dispatch: DispatchFunc) => {\n dispatch({\n type: ActionTypes.SET_EDIT_CHANNEL_MEMBERS,\n active,\n });\n return {data: true};\n };\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport {batchActions} from 'redux-batched-actions';\n\nimport {ActionTypes, Threads} from 'utils/constants';\n\nexport function updateThreadLastOpened(threadId: string, lastViewedAt: number) {\n return {\n type: Threads.CHANGED_LAST_VIEWED_AT,\n data: {\n threadId,\n lastViewedAt,\n },\n };\n}\n\nexport function setSelectedThreadId(teamId: string, threadId: string | undefined) {\n return {\n type: Threads.CHANGED_SELECTED_THREAD,\n data: {\n thread_id: threadId,\n team_id: teamId,\n },\n };\n}\n\nexport function manuallyMarkThreadAsUnread(threadId: string, lastViewedAt: number) {\n return batchActions([\n updateThreadLastOpened(threadId, lastViewedAt),\n {\n type: Threads.MANUALLY_UNREAD_THREAD,\n data: {threadId},\n },\n ]);\n}\n\nexport function updateThreadToastStatus(status: boolean) {\n return {\n type: ActionTypes.UPDATE_THREAD_TOAST_STATUS,\n data: status,\n };\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport React from 'react';\nimport {Modal} from 'react-bootstrap';\nimport {FormattedMessage} from 'react-intl';\n\ntype Props = {\n\n /*\n * Set to show modal\n */\n show: boolean;\n\n /*\n * Title to use for the modal\n */\n title?: React.ReactNode;\n\n /*\n * Message to display in the body of the modal\n */\n message?: React.ReactNode;\n\n /*\n * The CSS class to apply to the confirm button\n */\n confirmButtonClass?: string;\n\n /*\n * The CSS class to apply to the modal\n */\n modalClass?: string;\n\n /*\n * Text/jsx element on the confirm button\n */\n confirmButtonText?: React.ReactNode;\n\n /*\n * Text/jsx element on the cancel button\n */\n cancelButtonText?: React.ReactNode;\n\n /*\n * Set to show checkbox\n */\n showCheckbox?: boolean;\n\n /*\n * Text/jsx element to display with the checkbox\n */\n checkboxText?: React.ReactNode;\n\n /*\n * Function called when the confirm button or ENTER is pressed. Passes `true` if the checkbox is checked\n */\n onConfirm?: (checked: boolean) => void;\n\n /*\n * Function called when the cancel button is pressed or the modal is hidden. Passes `true` if the checkbox is checked\n */\n onCancel?: (checked: boolean) => void;\n\n /**\n * Function called when modal is dismissed\n */\n onExited?: () => void;\n\n /*\n * Set to hide the cancel button\n */\n hideCancel?: boolean;\n};\n\ntype State = {\n checked: boolean;\n}\n\nexport default class ConfirmModal extends React.Component {\n static defaultProps = {\n title: '',\n message: '',\n confirmButtonClass: 'btn btn-primary',\n confirmButtonText: '',\n modalClass: '',\n };\n\n constructor(props: Props) {\n super(props);\n\n this.state = {\n checked: false,\n };\n }\n\n shouldComponentUpdate(nextProps: Props, nextState: State) {\n return (\n nextProps.show !== this.props.show ||\n nextState.checked !== this.state.checked\n );\n }\n\n handleCheckboxChange = (e: React.ChangeEvent) => {\n this.setState({checked: e.target.checked});\n };\n\n handleConfirm = () => {\n this.props.onConfirm?.(this.state.checked);\n };\n\n handleCancel = () => {\n this.props.onCancel?.(this.state.checked);\n };\n\n render() {\n let checkbox;\n if (this.props.showCheckbox) {\n checkbox = (\n

\n \n
\n );\n }\n\n let cancelText;\n if (this.props.cancelButtonText) {\n cancelText = this.props.cancelButtonText;\n } else {\n cancelText = (\n \n );\n }\n\n let cancelButton;\n if (!this.props.hideCancel) {\n cancelButton = (\n \n {cancelText}\n \n );\n }\n\n return (\n \n \n \n {this.props.title}\n \n \n \n {this.props.message}\n {checkbox}\n \n \n {cancelButton}\n \n {this.props.confirmButtonText}\n \n \n \n );\n }\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\n/* eslint-disable @mattermost/use-external-link */\n\nimport React from 'react';\nimport {useSelector} from 'react-redux';\n\nimport {getCurrentUserId} from 'mattermost-redux/selectors/entities/common';\nimport {getConfig, getLicense} from 'mattermost-redux/selectors/entities/general';\n\nimport {trackEvent} from 'actions/telemetry_actions';\n\ntype ExternalLinkQueryParams = {\n utm_source?: string;\n utm_medium?: string;\n utm_campaign?: string;\n utm_content?: string;\n userId?: string;\n}\n\ntype Props = React.AnchorHTMLAttributes & {\n href: string;\n target?: string;\n rel?: string;\n onClick?: (event: React.MouseEvent) => void;\n queryParams?: ExternalLinkQueryParams;\n location?: string;\n children: React.ReactNode;\n};\n\nexport default function ExternalLink(props: Props) {\n const userId = useSelector(getCurrentUserId);\n const config = useSelector(getConfig);\n const license = useSelector(getLicense);\n let href = props.href;\n let queryParams = {};\n if (href?.includes('mattermost.com')) {\n const existingURLSearchParams = new URL(href).searchParams;\n const existingQueryParamsObj = Object.fromEntries(existingURLSearchParams.entries());\n queryParams = {\n utm_source: 'mattermost',\n utm_medium: license.Cloud === 'true' ? 'in-product-cloud' : 'in-product',\n utm_content: props.location || '',\n uid: userId,\n sid: config.TelemetryId || '',\n ...props.queryParams,\n ...existingQueryParamsObj,\n };\n const queryString = new URLSearchParams(queryParams).toString();\n\n if (Object.keys(existingQueryParamsObj).length) {\n // If the href already has query params, remove them before adding them back with the addition of the new ones\n href = href?.split('?')[0];\n }\n const anchor = new URL(href).hash;\n if (anchor) {\n href = href.replace(anchor, '');\n }\n href = `${href}?${queryString}${anchor ?? ''}`;\n }\n\n const handleClick = (e: React.MouseEvent) => {\n trackEvent('link_out', 'click_external_link', queryParams);\n if (typeof props.onClick === 'function') {\n props.onClick(e);\n }\n };\n\n return (\n \n {props.children}\n \n );\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport type {Channel} from '@mattermost/types/channels';\nimport type {Post} from '@mattermost/types/posts';\n\nimport {getChannel, getChannelMember, selectChannel, joinChannel, getChannelStats} from 'mattermost-redux/actions/channels';\nimport {getPostThread} from 'mattermost-redux/actions/posts';\nimport {getMissingProfilesByIds} from 'mattermost-redux/actions/users';\nimport {Client4} from 'mattermost-redux/client';\nimport {getCurrentChannel, getChannel as getChannelFromRedux} from 'mattermost-redux/selectors/entities/channels';\nimport {isCollapsedThreadsEnabled} from 'mattermost-redux/selectors/entities/preferences';\nimport {getCurrentTeam, getTeam} from 'mattermost-redux/selectors/entities/teams';\nimport {getCurrentUser} from 'mattermost-redux/selectors/entities/users';\nimport type {DispatchFunc, GetStateFunc} from 'mattermost-redux/types/actions';\nimport {getUserIdFromChannelName} from 'mattermost-redux/utils/channel_utils';\nimport {isSystemAdmin} from 'mattermost-redux/utils/user_utils';\n\nimport {loadChannelsForCurrentUser} from 'actions/channel_actions';\nimport {loadNewDMIfNeeded, loadNewGMIfNeeded} from 'actions/user_actions';\nimport {selectPostAndHighlight} from 'actions/views/rhs';\n\nimport {getHistory} from 'utils/browser_history';\nimport {joinPrivateChannelPrompt} from 'utils/channel_utils';\nimport {ActionTypes, Constants, ErrorPageTypes} from 'utils/constants';\nimport {isComment, getPostURL} from 'utils/post_utils';\n\nimport type {GlobalState} from 'types/store';\n\nlet privateChannelJoinPromptVisible = false;\n\ntype Option = {\n skipRedirectReplyPermalink: boolean;\n}\n\nfunction focusRootPost(post: Post, channel: Channel) {\n return async (dispatch: DispatchFunc, getState: GetStateFunc) => {\n const postURL = getPostURL(getState() as GlobalState, post);\n\n dispatch(selectChannel(channel.id));\n dispatch({\n type: ActionTypes.RECEIVED_FOCUSED_POST,\n data: post.id,\n channelId: channel.id,\n });\n\n getHistory().replace(postURL);\n return {data: true};\n };\n}\n\nfunction focusReplyPost(post: Post, channel: Channel, teamId: string, returnTo: string, option: Option) {\n return async (dispatch: DispatchFunc, getState: GetStateFunc) => {\n const {data} = await dispatch(getPostThread(post.root_id));\n\n if (data.first_inaccessible_post_time) {\n getHistory().replace(`/error?type=${ErrorPageTypes.CLOUD_ARCHIVED}&returnTo=${returnTo}`);\n return {data: false};\n }\n\n const state = getState() as GlobalState;\n\n const team = getTeam(state, channel.team_id || teamId);\n const currentChannel = getCurrentChannel(state);\n\n const sameTeam = currentChannel && currentChannel.team_id === team.id;\n\n const {skipRedirectReplyPermalink} = option;\n\n if (!sameTeam) {\n dispatch(selectChannel(channel.id));\n }\n\n if (sameTeam && returnTo && !skipRedirectReplyPermalink) {\n getHistory().replace(returnTo);\n } else if (!sameTeam || !skipRedirectReplyPermalink) {\n const postURL = getPostURL(state, post);\n getHistory().replace(postURL);\n }\n\n dispatch(selectPostAndHighlight(post));\n return {data: true};\n };\n}\n\nexport function focusPost(postId: string, returnTo = '', currentUserId: string, option: Option = {skipRedirectReplyPermalink: false}) {\n return async (dispatch: DispatchFunc, getState: GetStateFunc) => {\n // Ignore if prompt is still visible\n if (privateChannelJoinPromptVisible) {\n return;\n }\n\n let postInfo;\n try {\n postInfo = await Client4.getPostInfo(postId);\n } catch (e) {\n getHistory().replace(`/error?type=${ErrorPageTypes.PERMALINK_NOT_FOUND}&returnTo=${returnTo}`);\n return;\n }\n\n const state = getState();\n const currentTeam = getCurrentTeam(state);\n\n if (!postInfo.has_joined_channel) {\n // Prompt system admin before joining the private channel\n const user = getCurrentUser(state);\n if (postInfo.channel_type === Constants.PRIVATE_CHANNEL && isSystemAdmin(user.roles)) {\n privateChannelJoinPromptVisible = true;\n const joinPromptResult = await dispatch(joinPrivateChannelPrompt(currentTeam, postInfo.channel_display_name));\n privateChannelJoinPromptVisible = false;\n if ('data' in joinPromptResult && !joinPromptResult.data.join) {\n return;\n }\n }\n await dispatch(joinChannel(currentUserId, '', postInfo.channel_id));\n }\n\n const {data: threadData} = await dispatch(getPostThread(postId));\n\n if (!threadData) {\n getHistory().replace(`/error?type=${ErrorPageTypes.PERMALINK_NOT_FOUND}&returnTo=${returnTo}`);\n return;\n }\n\n if (threadData.first_inaccessible_post_time) {\n getHistory().replace(`/error?type=${ErrorPageTypes.CLOUD_ARCHIVED}&returnTo=${returnTo}`);\n return;\n }\n\n const isCollapsed = isCollapsedThreadsEnabled(state);\n\n const channelId = threadData.posts[threadData.order[0]].channel_id;\n let channel = getChannelFromRedux(state, channelId);\n\n if (!channel) {\n const {data: channelData} = await dispatch(getChannel(channelId));\n\n if (!channelData) {\n getHistory().replace(`/error?type=${ErrorPageTypes.PERMALINK_NOT_FOUND}&returnTo=${returnTo}`);\n return;\n }\n\n channel = channelData;\n }\n\n const teamId = channel.team_id || currentTeam.id;\n let myMember = state.entities.channels.myMembers[channelId];\n\n if (!myMember) {\n // If it's a DM or GM channel and we don't have a channel member for it already, user is not a member\n if (channel.type === Constants.DM_CHANNEL || channel.type === Constants.GM_CHANNEL) {\n getHistory().replace(`/error?type=${ErrorPageTypes.PERMALINK_NOT_FOUND}&returnTo=${returnTo}`);\n return;\n }\n\n const membership = await dispatch(getChannelMember(channel.id, currentUserId));\n if ('data' in membership) {\n myMember = membership.data;\n }\n\n if (!myMember) {\n getHistory().replace(`/error?type=${ErrorPageTypes.PERMALINK_NOT_FOUND}&returnTo=${returnTo}`);\n return;\n }\n }\n\n if (channel.team_id && channel.team_id !== teamId) {\n getHistory().replace(`/error?type=${ErrorPageTypes.PERMALINK_NOT_FOUND}&returnTo=${returnTo}`);\n return;\n }\n\n if (channel && channel.type === Constants.DM_CHANNEL) {\n const userId = getUserIdFromChannelName(currentUserId, channel.name);\n await dispatch(getMissingProfilesByIds([userId]));\n dispatch(loadNewDMIfNeeded(channel.id));\n } else if (channel && channel.type === Constants.GM_CHANNEL) {\n dispatch(loadNewGMIfNeeded(channel.id));\n }\n\n const post = threadData.posts[postId];\n\n if (isCollapsed && isComment(post)) {\n const {data} = await dispatch(focusReplyPost(post, channel, teamId, returnTo, option));\n if (!data) {\n return;\n }\n } else {\n dispatch(focusRootPost(post, channel));\n }\n\n dispatch(loadChannelsForCurrentUser());\n dispatch(getChannelStats(channelId));\n };\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\n/* eslint-disable import/order */\nimport bg from './bg.json';\nimport de from './de.json';\nimport enAU from './en_AU.json';\nimport es from './es.json';\nimport fa from './fa.json';\nimport fr from './fr.json';\nimport hu from './hu.json';\nimport it from './it.json';\nimport ja from './ja.json';\nimport ko from './ko.json';\nimport nl from './nl.json';\nimport pl from './pl.json';\nimport ptBR from './pt-BR.json';\nimport ro from './ro.json';\nimport ru from './ru.json';\nimport sv from './sv.json';\nimport vi from './vi.json';\nimport tr from './tr.json';\nimport uk from './uk.json';\nimport zhTW from './zh-TW.json';\nimport zhCN from './zh-CN.json';\n\nimport {getConfig} from 'mattermost-redux/selectors/entities/general';\n\nimport store from 'stores/redux_store';\n\n// should match the values in server/public/shared/i18n/i18n.go\nconst languages = {\n de: {\n value: 'de',\n name: 'Deutsch',\n order: 0,\n url: de,\n },\n en: {\n value: 'en',\n name: 'English (US)',\n order: 1,\n url: '',\n },\n 'en-AU': {\n value: 'en-AU',\n name: 'English (Australia)',\n order: 2,\n url: enAU,\n },\n es: {\n value: 'es',\n name: 'Español',\n order: 3,\n url: es,\n },\n fr: {\n value: 'fr',\n name: 'Français (Beta)',\n order: 4,\n url: fr,\n },\n it: {\n value: 'it',\n name: 'Italiano (Alpha)',\n order: 5,\n url: it,\n },\n hu: {\n value: 'hu',\n name: 'Magyar',\n order: 6,\n url: hu,\n },\n nl: {\n value: 'nl',\n name: 'Nederlands',\n order: 7,\n url: nl,\n },\n pl: {\n value: 'pl',\n name: 'Polski',\n order: 8,\n url: pl,\n },\n 'pt-BR': {\n value: 'pt-BR',\n name: 'Português (Brasil) (Alpha)',\n order: 9,\n url: ptBR,\n },\n ro: {\n value: 'ro',\n name: 'Română (Alpha)',\n order: 10,\n url: ro,\n },\n sv: {\n value: 'sv',\n name: 'Svenska',\n order: 11,\n url: sv,\n },\n vi: {\n value: 'vi',\n name: 'Tiếng Việt (Beta)',\n order: 12,\n url: vi,\n },\n tr: {\n value: 'tr',\n name: 'Türkçe',\n order: 13,\n url: tr,\n },\n bg: {\n value: 'bg',\n name: 'Български (Alpha)',\n order: 14,\n url: bg,\n },\n ru: {\n value: 'ru',\n name: 'Pусский',\n order: 15,\n url: ru,\n },\n uk: {\n value: 'uk',\n name: 'Yкраїнська (Alpha)',\n order: 16,\n url: uk,\n },\n fa: {\n value: 'fa',\n name: 'فارسی (Alpha)',\n order: 17,\n url: fa,\n },\n ko: {\n value: 'ko',\n name: '한국어 (Alpha)',\n order: 18,\n url: ko,\n },\n 'zh-CN': {\n value: 'zh-CN',\n name: '中文 (简体) (Alpha)',\n order: 19,\n url: zhCN,\n },\n 'zh-TW': {\n value: 'zh-TW',\n name: '中文 (繁體)',\n order: 20,\n url: zhTW,\n },\n ja: {\n value: 'ja',\n name: '日本語',\n order: 21,\n url: ja,\n },\n};\n\nexport function getAllLanguages() {\n return languages;\n}\n\nexport function getLanguages() {\n const config = getConfig(store.getState());\n if (!config.AvailableLocales) {\n return getAllLanguages();\n }\n return config.AvailableLocales.split(',').reduce((result, l) => {\n if (languages[l]) {\n result[l] = languages[l];\n }\n return result;\n }, {});\n}\n\nexport function getLanguageInfo(locale) {\n return getAllLanguages()[locale];\n}\n\nexport function isLanguageAvailable(locale) {\n return Boolean(getLanguages()[locale]);\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport {batchActions} from 'redux-batched-actions';\n\nimport type {FileSearchResults, FileSearchResultItem} from '@mattermost/types/files';\nimport type {PostList, PostSearchResults} from '@mattermost/types/posts';\nimport type {SearchParameter} from '@mattermost/types/search';\n\nimport {SearchTypes} from 'mattermost-redux/action_types';\nimport {Client4} from 'mattermost-redux/client';\nimport {getCurrentTeamId} from 'mattermost-redux/selectors/entities/teams';\nimport {getCurrentUserId} from 'mattermost-redux/selectors/entities/users';\nimport type {ActionResult, DispatchFunc, GetStateFunc, ActionFunc, NewActionFuncAsync, NewActionFuncOldVariantDoNotUse} from 'mattermost-redux/types/actions';\n\nimport {getChannelAndMyMember, getChannelMembers} from './channels';\nimport {logError} from './errors';\nimport {receivedFiles} from './files';\nimport {forceLogoutIfNecessary} from './helpers';\nimport {getMentionsAndStatusesForPosts, receivedPosts} from './posts';\n\nconst WEBAPP_SEARCH_PER_PAGE = 20;\n\nexport function getMissingChannelsFromPosts(posts: PostList['posts']): NewActionFuncOldVariantDoNotUse {\n return async (dispatch, getState) => {\n const {\n channels,\n membersInChannel,\n myMembers,\n } = getState().entities.channels;\n const promises: Array> = [];\n Object.values(posts).forEach((post) => {\n const id = post.channel_id;\n\n if (!channels[id] || !myMembers[id]) {\n promises.push(dispatch(getChannelAndMyMember(id)));\n }\n\n if (!membersInChannel[id]) {\n promises.push(dispatch(getChannelMembers(id)));\n }\n });\n return Promise.all(promises);\n };\n}\n\nexport function getMissingChannelsFromFiles(files: Map): ActionFunc {\n return async (dispatch: DispatchFunc, getState: GetStateFunc) => {\n const {\n channels,\n membersInChannel,\n myMembers,\n } = getState().entities.channels;\n const promises: Array> = [];\n Object.values(files).forEach((file) => {\n const id = file.channel_id;\n\n if (!channels[id] || !myMembers[id]) {\n promises.push(dispatch(getChannelAndMyMember(id)));\n }\n\n if (!membersInChannel[id]) {\n promises.push(dispatch(getChannelMembers(id)));\n }\n });\n return Promise.all(promises);\n };\n}\n\nexport function searchPostsWithParams(teamId: string, params: SearchParameter): NewActionFuncAsync {\n return async (dispatch, getState) => {\n const isGettingMore = params.page > 0;\n dispatch({\n type: SearchTypes.SEARCH_POSTS_REQUEST,\n isGettingMore,\n });\n let posts;\n\n try {\n posts = await Client4.searchPostsWithParams(teamId, params);\n\n const profilesAndStatuses = getMentionsAndStatusesForPosts(posts.posts, dispatch, getState);\n const missingChannels = dispatch(getMissingChannelsFromPosts(posts.posts));\n const arr = [profilesAndStatuses, missingChannels];\n await Promise.all(arr);\n } catch (error) {\n forceLogoutIfNecessary(error, dispatch, getState);\n dispatch(logError(error));\n return {error};\n }\n\n dispatch(batchActions([\n {\n type: SearchTypes.RECEIVED_SEARCH_POSTS,\n data: posts,\n isGettingMore,\n },\n receivedPosts(posts),\n {\n type: SearchTypes.RECEIVED_SEARCH_TERM,\n data: {\n teamId,\n params,\n isEnd: posts.order.length === 0,\n },\n },\n {\n type: SearchTypes.SEARCH_POSTS_SUCCESS,\n },\n ], 'SEARCH_POST_BATCH'));\n\n return {data: posts};\n };\n}\n\nexport function searchPosts(teamId: string, terms: string, isOrSearch: boolean, includeDeletedChannels: boolean) {\n return searchPostsWithParams(teamId, {terms, is_or_search: isOrSearch, include_deleted_channels: includeDeletedChannels, page: 0, per_page: WEBAPP_SEARCH_PER_PAGE});\n}\n\nexport function getMorePostsForSearch(): NewActionFuncAsync {\n return async (dispatch, getState) => {\n const teamId = getCurrentTeamId(getState());\n const {params, isEnd} = getState().entities.search.current[teamId];\n if (!isEnd) {\n const newParams = Object.assign({}, params);\n newParams.page += 1;\n return dispatch(searchPostsWithParams(teamId, newParams));\n }\n return {data: true};\n };\n}\n\nexport function clearSearch(): ActionFunc {\n return async (dispatch) => {\n dispatch({type: SearchTypes.REMOVE_SEARCH_POSTS});\n dispatch({type: SearchTypes.REMOVE_SEARCH_FILES});\n\n return {data: true};\n };\n}\n\nexport function searchFilesWithParams(teamId: string, params: SearchParameter): ActionFunc {\n return async (dispatch: DispatchFunc, getState: GetStateFunc) => {\n const isGettingMore = params.page > 0;\n dispatch({\n type: SearchTypes.SEARCH_FILES_REQUEST,\n isGettingMore,\n });\n\n let files: FileSearchResults;\n try {\n files = await Client4.searchFilesWithParams(teamId, params);\n\n await dispatch(getMissingChannelsFromFiles(files.file_infos));\n } catch (error) {\n forceLogoutIfNecessary(error, dispatch, getState);\n dispatch(logError(error));\n return {error};\n }\n\n dispatch(batchActions([\n {\n type: SearchTypes.RECEIVED_SEARCH_FILES,\n data: files,\n isGettingMore,\n },\n receivedFiles(files.file_infos),\n {\n type: SearchTypes.RECEIVED_SEARCH_TERM,\n data: {\n teamId,\n params,\n isFilesEnd: files.order.length === 0,\n },\n },\n {\n type: SearchTypes.SEARCH_FILES_SUCCESS,\n },\n ], 'SEARCH_FILE_BATCH'));\n\n return {data: files};\n };\n}\n\nexport function searchFiles(teamId: string, terms: string, isOrSearch: boolean, includeDeletedChannels: boolean) {\n return searchFilesWithParams(teamId, {terms, is_or_search: isOrSearch, include_deleted_channels: includeDeletedChannels, page: 0, per_page: WEBAPP_SEARCH_PER_PAGE});\n}\n\nexport function getMoreFilesForSearch(): ActionFunc {\n return async (dispatch: DispatchFunc, getState: GetStateFunc) => {\n const teamId = getCurrentTeamId(getState());\n const {params, isFilesEnd} = getState().entities.search.current[teamId];\n if (!isFilesEnd) {\n const newParams = Object.assign({}, params);\n newParams.page += 1;\n return dispatch(searchFilesWithParams(teamId, newParams));\n }\n return {data: true};\n };\n}\n\nexport function getFlaggedPosts(): ActionFunc {\n return async (dispatch: DispatchFunc, getState: GetStateFunc) => {\n const state = getState();\n const userId = getCurrentUserId(state);\n\n dispatch({type: SearchTypes.SEARCH_FLAGGED_POSTS_REQUEST});\n\n let posts;\n try {\n posts = await Client4.getFlaggedPosts(userId);\n\n await Promise.all([getMentionsAndStatusesForPosts(posts.posts, dispatch, getState), dispatch(getMissingChannelsFromPosts(posts.posts))]);\n } catch (error) {\n forceLogoutIfNecessary(error, dispatch, getState);\n dispatch({type: SearchTypes.SEARCH_FLAGGED_POSTS_FAILURE, error});\n dispatch(logError(error));\n return {error};\n }\n\n dispatch(batchActions([\n {\n type: SearchTypes.RECEIVED_SEARCH_FLAGGED_POSTS,\n data: posts,\n },\n receivedPosts(posts),\n {\n type: SearchTypes.SEARCH_FLAGGED_POSTS_SUCCESS,\n },\n ], 'SEARCH_FLAGGED_POSTS_BATCH'));\n\n return {data: posts};\n };\n}\n\nexport function getPinnedPosts(channelId: string): ActionFunc {\n return async (dispatch: DispatchFunc, getState: GetStateFunc) => {\n dispatch({type: SearchTypes.SEARCH_PINNED_POSTS_REQUEST});\n\n let result;\n try {\n result = await Client4.getPinnedPosts(channelId);\n\n const profilesAndStatuses = getMentionsAndStatusesForPosts(result.posts, dispatch, getState);\n const missingChannels = dispatch(getMissingChannelsFromPosts(result.posts));\n const arr: [Promise, Promise] = [profilesAndStatuses, missingChannels];\n await Promise.all(arr);\n } catch (error) {\n forceLogoutIfNecessary(error, dispatch, getState);\n dispatch({type: SearchTypes.SEARCH_PINNED_POSTS_FAILURE, error});\n return {error};\n }\n\n dispatch(batchActions([\n {\n type: SearchTypes.RECEIVED_SEARCH_PINNED_POSTS,\n data: {\n pinned: result,\n channelId,\n },\n },\n receivedPosts(result),\n {\n type: SearchTypes.SEARCH_PINNED_POSTS_SUCCESS,\n },\n ], 'SEARCH_PINNED_POSTS_BATCH'));\n\n return {data: result};\n };\n}\n\nexport function clearPinnedPosts(channelId: string): ActionFunc {\n return async (dispatch) => {\n dispatch({\n type: SearchTypes.REMOVE_SEARCH_PINNED_POSTS,\n data: {\n channelId,\n },\n });\n\n return {data: true};\n };\n}\n\nexport function removeSearchTerms(teamId: string, terms: string): ActionFunc {\n return async (dispatch) => {\n dispatch({\n type: SearchTypes.REMOVE_SEARCH_TERM,\n data: {\n teamId,\n terms,\n },\n });\n\n return {data: true};\n };\n}\n\nexport default {\n clearSearch,\n removeSearchTerms,\n searchPosts,\n};\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport type {GlobalState} from '@mattermost/types/store';\n\nimport {createSelector} from 'mattermost-redux/selectors/create_selector';\nimport {getMyGroupMentionKeys} from 'mattermost-redux/selectors/entities/groups';\nimport {getCurrentTeamId} from 'mattermost-redux/selectors/entities/teams';\nimport {getCurrentUserMentionKeys} from 'mattermost-redux/selectors/entities/users';\nimport type {UserMentionKey} from 'mattermost-redux/selectors/entities/users';\n\nexport const getCurrentSearchForCurrentTeam: (state: GlobalState) => string = createSelector(\n 'getCurrentSearchForCurrentTeam',\n (state: GlobalState) => state.entities.search.current,\n getCurrentTeamId,\n (current, teamId) => {\n return current[teamId];\n },\n);\n\nexport const getAllUserMentionKeys: (state: GlobalState) => UserMentionKey[] = createSelector(\n 'getAllUserMentionKeys',\n getCurrentUserMentionKeys,\n (state: GlobalState) => getMyGroupMentionKeys(state, false),\n (userMentionKeys, groupMentionKeys) => {\n return userMentionKeys.concat(groupMentionKeys);\n },\n);\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport timezones from 'timezones.json';\n\nimport type {UserProfile} from '@mattermost/types/users';\n\nimport {createSelector} from 'mattermost-redux/selectors/create_selector';\nimport {getTimezoneLabel, getUserCurrentTimezone} from 'mattermost-redux/utils/timezone_utils';\n\nimport {getCurrentUser} from './common';\n\nfunction getTimezoneForUserProfile(profile: UserProfile) {\n if (profile && profile.timezone) {\n return {\n ...profile.timezone,\n useAutomaticTimezone: profile.timezone.useAutomaticTimezone === 'true',\n };\n }\n\n return {\n useAutomaticTimezone: true,\n automaticTimezone: '',\n manualTimezone: '',\n };\n}\n\nexport const getCurrentTimezoneFull = createSelector(\n 'getCurrentTimezoneFull',\n getCurrentUser,\n (currentUser) => {\n return getTimezoneForUserProfile(currentUser);\n },\n);\n\nexport const getCurrentTimezone = createSelector(\n 'getCurrentTimezone',\n getCurrentTimezoneFull,\n (timezoneFull) => {\n return getUserCurrentTimezone(timezoneFull);\n },\n);\n\nexport const getCurrentTimezoneLabel = createSelector(\n 'getCurrentTimezoneLabel',\n getCurrentTimezone,\n (timezone) => {\n if (!timezone) {\n return '';\n }\n\n return getTimezoneLabel(timezones, timezone);\n },\n);\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport {Preferences} from 'mattermost-redux/constants';\nimport {createSelector} from 'mattermost-redux/selectors/create_selector';\nimport {getMyActiveChannelIds} from 'mattermost-redux/selectors/entities/channels';\nimport {get, onboardingTourTipsEnabled} from 'mattermost-redux/selectors/entities/preferences';\n\nimport {getIsMobileView} from 'selectors/views/browser';\n\nimport {StoragePrefixes} from 'utils/constants';\nimport {getDraftInfoFromKey} from 'utils/storage_utils';\n\nimport type {GlobalState} from 'types/store';\nimport type {DraftInfo, PostDraft} from 'types/store/draft';\n\nexport type Draft = DraftInfo & {\n key: keyof GlobalState['storage']['storage'];\n value: PostDraft;\n timestamp: Date;\n}\n\nexport type DraftSelector = (state: GlobalState) => Draft[];\nexport type DraftCountSelector = (state: GlobalState) => number;\n\nexport function showDraftsPulsatingDotAndTourTip(state: GlobalState): boolean {\n if (!onboardingTourTipsEnabled(state) || getIsMobileView(state)) {\n return false;\n }\n\n const draftsTourTipShowed = get(state, Preferences.CATEGORY_DRAFTS, Preferences.DRAFTS_TOUR_TIP_SHOWED, '');\n const draftsAlreadyViewed = draftsTourTipShowed && JSON.parse(draftsTourTipShowed)[Preferences.DRAFTS_TOUR_TIP_SHOWED];\n\n return !draftsAlreadyViewed;\n}\n\nexport function makeGetDraftsByPrefix(prefix: string): DraftSelector {\n return createSelector(\n 'makeGetDraftsByPrefix',\n (state: GlobalState) => state.storage?.storage,\n (storage) => {\n if (!storage) {\n return [];\n }\n\n return Object.keys(storage).flatMap((key) => {\n const item = storage[key];\n if (\n key.startsWith(prefix) &&\n item != null &&\n item.value != null &&\n (item.value.message || item.value.fileInfos?.length > 0) &&\n item.value.show\n ) {\n const info = getDraftInfoFromKey(key, prefix);\n\n if (info === null || !info.id) {\n return [];\n }\n\n return {\n ...item,\n key,\n id: info.id,\n type: info.type,\n };\n }\n return [];\n });\n },\n );\n}\n\n/**\n * Gets all local drafts in storage.\n * @param excludeInactive determines if we filter drafts based on active channels.\n */\nexport function makeGetDrafts(excludeInactive = true): DraftSelector {\n const getChannelDrafts = makeGetDraftsByPrefix(StoragePrefixes.DRAFT);\n const getRHSDrafts = makeGetDraftsByPrefix(StoragePrefixes.COMMENT_DRAFT);\n\n return createSelector(\n 'makeGetDrafts',\n getChannelDrafts,\n getRHSDrafts,\n getMyActiveChannelIds,\n (channelDrafts, rhsDrafts, myChannels) => (\n [...channelDrafts, ...rhsDrafts]\n ).\n filter((draft) => (excludeInactive ? myChannels.indexOf(draft.value.channelId) !== -1 : true)).\n sort((a, b) => b.value.updateAt - a.value.updateAt),\n );\n}\n\nexport function makeGetDraftsCount(): DraftCountSelector {\n const getChannelDrafts = makeGetDraftsByPrefix(StoragePrefixes.DRAFT);\n const getRHSDrafts = makeGetDraftsByPrefix(StoragePrefixes.COMMENT_DRAFT);\n return createSelector(\n 'makeGetDraftsCount',\n getChannelDrafts,\n getRHSDrafts,\n getMyActiveChannelIds,\n (channelDrafts, rhsDrafts, myChannels) => [...channelDrafts, ...rhsDrafts].\n filter((draft) => myChannels.indexOf(draft.value.channelId) !== -1).length,\n );\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport type {RecentEmojiData} from '@mattermost/types/emojis';\n\nimport {createSelector} from 'mattermost-redux/selectors/create_selector';\nimport {getCustomEmojisByName} from 'mattermost-redux/selectors/entities/emojis';\nimport {getConfig} from 'mattermost-redux/selectors/entities/general';\nimport {get} from 'mattermost-redux/selectors/entities/preferences';\nimport {getCurrentUserId} from 'mattermost-redux/selectors/entities/users';\n\nimport {Preferences} from 'utils/constants';\nimport {EmojiIndicesByAlias, Emojis} from 'utils/emoji';\nimport EmojiMap from 'utils/emoji_map';\nimport {convertEmojiSkinTone} from 'utils/emoji_utils';\n\nimport type {GlobalState} from 'types/store';\n\nexport const getEmojiMap = createSelector(\n 'getEmojiMap',\n getCustomEmojisByName,\n (customEmojisByName) => {\n return new EmojiMap(customEmojisByName);\n },\n);\n\nexport const getShortcutReactToLastPostEmittedFrom = (state: GlobalState) =>\n state.views.emoji.shortcutReactToLastPostEmittedFrom;\n\nexport const getRecentEmojisData = createSelector(\n 'getRecentEmojisData',\n (state: GlobalState) => {\n return get(\n state,\n Preferences.RECENT_EMOJIS,\n getCurrentUserId(state),\n '[]',\n );\n },\n getUserSkinTone,\n (recentEmojis: string, userSkinTone: string) => {\n if (!recentEmojis) {\n return [];\n }\n\n const parsedEmojiData: RecentEmojiData[] = JSON.parse(recentEmojis);\n return normalizeRecentEmojisData(parsedEmojiData, userSkinTone);\n },\n);\n\nexport function normalizeRecentEmojisData(data: RecentEmojiData[], userSkinTone: string) {\n const usageCounts = new Map();\n\n for (const recentEmoji of data) {\n const emojiIndex = EmojiIndicesByAlias.get(recentEmoji.name) ?? -1;\n const systemEmoji = Emojis[emojiIndex];\n\n let normalizedName;\n if (systemEmoji) {\n // This is a system emoji, so we may need to change its skin tone\n normalizedName = convertEmojiSkinTone(systemEmoji, userSkinTone).short_name;\n } else {\n // This is a custom emoji, so its name will never change\n normalizedName = recentEmoji.name;\n }\n\n // Dedupe and sum up the usage counts of any duplicated entries\n const currentCount = usageCounts.get(normalizedName) ?? 0;\n usageCounts.set(normalizedName, currentCount + recentEmoji.usageCount);\n }\n\n const normalizedData = [];\n for (const [name, usageCount] of usageCounts.entries()) {\n normalizedData.push({name, usageCount});\n }\n\n // Sort emojis by count in the ascending order, matching addRecentEmoji\n normalizedData.sort((emojiA: RecentEmojiData, emojiB: RecentEmojiData) => emojiA.usageCount - emojiB.usageCount);\n\n return normalizedData;\n}\n\nexport const getRecentEmojisNames = createSelector(\n 'getRecentEmojisNames',\n getRecentEmojisData,\n (recentEmojisData: RecentEmojiData[]) => {\n return recentEmojisData.map((emoji) => emoji.name);\n },\n);\n\nexport function getUserSkinTone(state: GlobalState): string {\n return get(state, Preferences.CATEGORY_EMOJI, Preferences.EMOJI_SKINTONE, 'default');\n}\n\nexport function isCustomEmojiEnabled(state: GlobalState) {\n const config = getConfig(state);\n return config && config.EnableCustomEmoji === 'true';\n}\n\nexport const getOneClickReactionEmojis = createSelector(\n 'getOneClickReactionEmojis',\n getEmojiMap,\n getRecentEmojisNames,\n (emojiMap, recentEmojis: string[]) => {\n if (recentEmojis.length === 0) {\n return [];\n }\n\n return (recentEmojis).\n map((recentEmoji) => emojiMap.get(recentEmoji)).\n filter(isDefined).\n slice(-3).\n reverse();\n },\n);\n\nfunction isDefined(t: T | undefined): t is T {\n return Boolean(t);\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport {General} from 'mattermost-redux/constants';\nimport {getConfig} from 'mattermost-redux/selectors/entities/general';\nimport {getCurrentUserLocale} from 'mattermost-redux/selectors/entities/i18n';\n\nimport * as I18n from 'i18n/i18n';\n\nimport type {GlobalState} from 'types/store';\nimport type {Translations} from 'types/store/i18n';\n\n// This is a placeholder for if we ever implement browser-locale detection\nexport function getCurrentLocale(state: GlobalState): string {\n // If locale is provided in query parameter and the user is not logged in, we try get locale from param\n const localeFromParam: string | null = (new URLSearchParams(window.location?.search)).get('locale');\n const defaultLocale: string | undefined =\n localeFromParam && I18n.isLanguageAvailable(localeFromParam) ? localeFromParam : getConfig(state).DefaultClientLocale;\n\n const currentLocale: string = getCurrentUserLocale(state, defaultLocale);\n if (I18n.isLanguageAvailable(currentLocale)) {\n return currentLocale;\n }\n return General.DEFAULT_LOCALE;\n}\n\nexport function getTranslations(state: GlobalState, locale: string): Translations {\n const localeInfo = I18n.getLanguageInfo(locale);\n\n let translations;\n if (localeInfo) {\n translations = state.views.i18n.translations[locale];\n } else {\n // Default to English if an unsupported locale is specified\n translations = state.views.i18n.translations.en;\n }\n\n return translations;\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport type {Channel} from '@mattermost/types/channels';\nimport type {ClientConfig} from '@mattermost/types/config';\nimport type {Post} from '@mattermost/types/posts';\nimport type {UserProfile} from '@mattermost/types/users';\n\nimport {createSelector} from 'mattermost-redux/selectors/create_selector';\nimport {getCurrentUser} from 'mattermost-redux/selectors/entities/common';\nimport {getConfig} from 'mattermost-redux/selectors/entities/general';\nimport {getPost} from 'mattermost-redux/selectors/entities/posts';\nimport {moveThreadsEnabled} from 'mattermost-redux/selectors/entities/preferences';\nimport {getCurrentUserId} from 'mattermost-redux/selectors/entities/users';\n\nimport {arePreviewsCollapsed} from 'selectors/preferences';\nimport {getGlobalItem} from 'selectors/storage';\n\nimport {StoragePrefixes} from 'utils/constants';\n\nimport type {GlobalState} from 'types/store';\n\nexport function getIsPostBeingEdited(state: GlobalState, postId: string) {\n return state.views.posts.editingPost.postId === postId && state.views.posts.editingPost.show;\n}\nexport function getIsPostBeingEditedInRHS(state: GlobalState, postId: string) {\n const editingPost = getEditingPost(state);\n\n return editingPost.isRHS && editingPost.postId === postId && state.views.posts.editingPost.show;\n}\n\nexport function getPostEditHistory(state: GlobalState): Post[] {\n return state.entities.posts.postEditHistory;\n}\n\nexport const getEditingPost = createSelector(\n 'getEditingPost',\n (state: GlobalState) => state.views.posts.editingPost,\n (state: GlobalState) => getPost(state, state.views.posts.editingPost.postId),\n (editingPost, post) => {\n return {\n ...editingPost,\n post,\n };\n },\n);\n\nexport function isEmbedVisible(state: GlobalState, postId: string) {\n const currentUserId = getCurrentUserId(state);\n const previewCollapsed = arePreviewsCollapsed(state);\n\n return getGlobalItem(state, StoragePrefixes.EMBED_VISIBLE + currentUserId + '_' + postId, !previewCollapsed);\n}\n\nexport function isInlineImageVisible(state: GlobalState, postId: string, imageKey: string) {\n const currentUserId = getCurrentUserId(state);\n const imageCollapsed = arePreviewsCollapsed(state);\n\n return getGlobalItem(state, StoragePrefixes.INLINE_IMAGE_VISIBLE + currentUserId + '_' + postId + '_' + imageKey, !imageCollapsed);\n}\n\nexport function makeCanWrangler() {\n return createSelector(\n 'makeCanWrangler',\n getConfig,\n getCurrentUser,\n moveThreadsEnabled,\n (_state: GlobalState, channelType: Channel['type']) => channelType,\n (_state: GlobalState, _channelType: Channel['type'], replyCount: number) => replyCount,\n (config: Partial, user: UserProfile, enabled: boolean, channelType: Channel['type'], replyCount: number) => {\n if (!enabled) {\n return false;\n }\n const {\n WranglerPermittedWranglerRoles,\n WranglerAllowedEmailDomain,\n WranglerMoveThreadMaxCount,\n WranglerMoveThreadFromPrivateChannelEnable,\n WranglerMoveThreadFromDirectMessageChannelEnable,\n WranglerMoveThreadFromGroupMessageChannelEnable,\n } = config;\n\n let permittedUsers: string[] = [];\n if (WranglerPermittedWranglerRoles && WranglerPermittedWranglerRoles !== '') {\n permittedUsers = WranglerPermittedWranglerRoles?.split(',');\n }\n\n let allowedEmailDomains: string[] = [];\n if (WranglerAllowedEmailDomain && WranglerAllowedEmailDomain !== '') {\n allowedEmailDomains = WranglerAllowedEmailDomain?.split(',') || [];\n }\n\n if (permittedUsers.length > 0 && !user.roles.includes('system_admin')) {\n const roles = user.roles.split(' ');\n const hasRole = roles.some((role) => permittedUsers.includes(role));\n if (!hasRole) {\n return false;\n }\n }\n\n if (allowedEmailDomains?.length > 0) {\n if (!user.email || !allowedEmailDomains.includes(user.email.split('@')[1])) {\n return false;\n }\n }\n\n if (Number(WranglerMoveThreadMaxCount) < replyCount) {\n return false;\n }\n\n if (channelType === 'P' && WranglerMoveThreadFromPrivateChannelEnable === 'false') {\n return false;\n }\n\n if (channelType === 'D' && WranglerMoveThreadFromDirectMessageChannelEnable === 'false') {\n return false;\n }\n\n if (channelType === 'G' && WranglerMoveThreadFromGroupMessageChannelEnable === 'false') {\n return false;\n }\n\n return true;\n },\n );\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport {getBool as getBoolPreference} from 'mattermost-redux/selectors/entities/preferences';\n\nimport {Preferences} from 'utils/constants';\n\nimport type {GlobalState} from 'types/store';\n\nexport const arePreviewsCollapsed = (state: GlobalState) => {\n return getBoolPreference(\n state,\n Preferences.CATEGORY_DISPLAY_SETTINGS,\n Preferences.COLLAPSE_DISPLAY,\n Preferences.COLLAPSE_DISPLAY_DEFAULT !== 'false',\n );\n};\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport type {Channel} from '@mattermost/types/channels';\nimport type {Post, PostType} from '@mattermost/types/posts';\n\nimport {createSelector} from 'mattermost-redux/selectors/create_selector';\nimport {makeGetChannel} from 'mattermost-redux/selectors/entities/channels';\nimport {getCurrentUserId} from 'mattermost-redux/selectors/entities/users';\n\nimport {makeGetGlobalItem, makeGetGlobalItemWithDefault} from 'selectors/storage';\n\nimport type {SidebarSize} from 'components/resizable_sidebar/constants';\n\nimport {PostTypes, StoragePrefixes} from 'utils/constants';\nimport {localizeMessage} from 'utils/utils';\n\nimport type {GlobalState} from 'types/store';\nimport type {PostDraft} from 'types/store/draft';\nimport type {RhsState, FakePost, SearchType} from 'types/store/rhs';\n\nexport function getSelectedPostId(state: GlobalState): Post['id'] {\n return state.views.rhs.selectedPostId;\n}\n\nexport function getRhsSize(state: GlobalState): SidebarSize {\n return state.views.rhs.size;\n}\n\nexport function getSelectedPostFocussedAt(state: GlobalState): number {\n return state.views.rhs.selectedPostFocussedAt;\n}\n\nexport function getSelectedPostCardId(state: GlobalState): Post['id'] {\n return state.views.rhs.selectedPostCardId;\n}\n\nexport function getHighlightedPostId(state: GlobalState): Post['id'] {\n return state.views.rhs.highlightedPostId;\n}\n\nexport function getFilesSearchExtFilter(state: GlobalState): string[] {\n return state.views.rhs.filesSearchExtFilter;\n}\n\nexport function getSelectedPostCard(state: GlobalState) {\n return state.entities.posts.posts[getSelectedPostCardId(state)];\n}\n\nexport function getSelectedChannelId(state: GlobalState) {\n return state.views.rhs.selectedChannelId;\n}\n\nexport const getSelectedChannel = (() => {\n const getChannel = makeGetChannel();\n\n return (state: GlobalState) => {\n const channelId = getSelectedChannelId(state);\n\n return getChannel(state, {id: channelId});\n };\n})();\n\nexport function getPluggableId(state: GlobalState) {\n return state.views.rhs.pluggableId;\n}\n\nexport function getActiveRhsComponent(state: GlobalState) {\n const pluggableId = getPluggableId(state);\n const components = state.plugins.components.RightHandSidebarComponent;\n return components.find((c) => c.id === pluggableId);\n}\n\nfunction getRealSelectedPost(state: GlobalState) {\n return state.entities.posts.posts[getSelectedPostId(state)];\n}\n\nexport const getSelectedPost = createSelector(\n 'getSelectedPost',\n getSelectedPostId,\n getRealSelectedPost,\n getSelectedChannelId,\n getCurrentUserId,\n (selectedPostId: Post['id'], selectedPost: Post, selectedPostChannelId: Channel['id'], currentUserId): Post|FakePost => {\n if (selectedPost) {\n return selectedPost;\n }\n\n // If there is no root post found, assume it has been deleted by data retention policy, and create a fake one.\n return {\n id: selectedPostId,\n exists: false,\n type: PostTypes.FAKE_PARENT_DELETED as PostType,\n message: localizeMessage('rhs_thread.rootPostDeletedMessage.body', 'Part of this thread has been deleted due to a data retention policy. You can no longer reply to this thread.'),\n channel_id: selectedPostChannelId,\n user_id: currentUserId,\n };\n },\n);\n\nexport function getRhsState(state: GlobalState): RhsState {\n return state.views.rhs.rhsState;\n}\n\nexport function getPreviousRhsState(state: GlobalState): RhsState {\n if (state.views.rhs.previousRhsStates === null || state.views.rhs.previousRhsStates.length === 0) {\n return null;\n }\n return state.views.rhs.previousRhsStates[state.views.rhs.previousRhsStates.length - 1];\n}\n\nexport function getSearchTerms(state: GlobalState): string {\n return state.views.rhs.searchTerms;\n}\n\nexport function getSearchType(state: GlobalState): SearchType {\n return state.views.rhs.searchType;\n}\n\nexport function getSearchResultsTerms(state: GlobalState): string {\n return state.views.rhs.searchResultsTerms;\n}\n\nexport function getIsSearchingTerm(state: GlobalState): boolean {\n return state.entities.search.isSearchingTerm;\n}\n\nexport function getIsSearchingFlaggedPost(state: GlobalState): boolean {\n return state.views.rhs.isSearchingFlaggedPost;\n}\n\nexport function getIsSearchingPinnedPost(state: GlobalState): boolean {\n return state.views.rhs.isSearchingPinnedPost;\n}\n\nexport function getIsSearchGettingMore(state: GlobalState): boolean {\n return state.entities.search.isSearchGettingMore;\n}\n\nexport function makeGetChannelDraft() {\n const defaultDraft = Object.freeze({message: '', fileInfos: [], uploadsInProgress: [], createAt: 0, updateAt: 0, channelId: '', rootId: ''});\n const getDraft = makeGetGlobalItemWithDefault(defaultDraft);\n\n return (state: GlobalState, channelId: string): PostDraft => {\n const draft = getDraft(state, StoragePrefixes.DRAFT + channelId);\n if (\n typeof draft.message !== 'undefined' &&\n typeof draft.uploadsInProgress !== 'undefined' &&\n typeof draft.fileInfos !== 'undefined'\n ) {\n return draft;\n }\n\n return defaultDraft;\n };\n}\n\nexport function getPostDraft(state: GlobalState, prefixId: string, suffixId: string): PostDraft {\n const defaultDraft = {message: '', fileInfos: [], uploadsInProgress: [], createAt: 0, updateAt: 0, channelId: '', rootId: ''};\n\n if (prefixId === StoragePrefixes.COMMENT_DRAFT) {\n defaultDraft.rootId = suffixId;\n }\n const draft = makeGetGlobalItem(prefixId + suffixId, defaultDraft)(state);\n\n if (\n typeof draft.message !== 'undefined' &&\n typeof draft.uploadsInProgress !== 'undefined' &&\n typeof draft.fileInfos !== 'undefined'\n ) {\n return draft;\n }\n\n return defaultDraft;\n}\n\nexport function getIsRhsSuppressed(state: GlobalState): boolean {\n return state.views.rhsSuppressed;\n}\n\nexport function getIsRhsOpen(state: GlobalState): boolean {\n return state.views.rhs.isSidebarOpen && !state.views.rhsSuppressed;\n}\n\nexport function getIsRhsMenuOpen(state: GlobalState): boolean {\n return state.views.rhs.isMenuOpen;\n}\n\nexport function getIsRhsExpanded(state: GlobalState): boolean {\n return state.views.rhs.isSidebarExpanded;\n}\n\nexport function getIsEditingMembers(state: GlobalState): boolean {\n return state.views.rhs.editChannelMembers === true;\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport {getPrefix} from 'utils/storage_utils';\n\nimport type {GlobalState} from 'types/store';\n\nexport const getGlobalItem = (state: GlobalState, name: string, defaultValue: T) => {\n const storage = state && state.storage && state.storage.storage;\n\n return getItemFromStorage(storage, name, defaultValue);\n};\n\nexport const getItem = (state: GlobalState, name: string, defaultValue: T) => {\n return getGlobalItem(state, getPrefix(state) + name, defaultValue);\n};\n\nexport const makeGetItem = (name: string, defaultValue: T) => {\n return (state: GlobalState) => {\n return getItem(state, name, defaultValue);\n };\n};\n\nexport const makeGetGlobalItem = (name: string, defaultValue: T) => {\n return (state: GlobalState) => {\n return getGlobalItem(state, name, defaultValue);\n };\n};\n\nexport const getItemFromStorage = (storage: Record, name: string, defaultValue: T) => {\n return storage[name]?.value ?? defaultValue;\n};\n\nexport const makeGetGlobalItemWithDefault = (defaultValue: T) => {\n return (state: GlobalState, name: string) => {\n return getGlobalItem(state, name, defaultValue);\n };\n};\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport type {Channel} from '@mattermost/types/channels';\nimport type {Post} from '@mattermost/types/posts';\nimport type {Team} from '@mattermost/types/teams';\n\nimport {getRedirectChannelNameForTeam} from 'mattermost-redux/selectors/entities/channels';\nimport {\n getCurrentRelativeTeamUrl,\n getCurrentTeam,\n getCurrentTeamId,\n getTeam,\n} from 'mattermost-redux/selectors/entities/teams';\n\nimport Constants from 'utils/constants';\n\nimport type {GlobalState} from 'types/store';\n\nfunction getTeamRelativeUrl(team: Team | undefined) {\n if (!team) {\n return '';\n }\n\n return '/' + team.name;\n}\n\nexport function getPermalinkURL(state: GlobalState, teamId: Team['id'], postId: Post['id']): string {\n let team = getTeam(state, teamId);\n if (!team) {\n team = getCurrentTeam(state);\n }\n return `${getTeamRelativeUrl(team)}/pl/${postId}`;\n}\n\nexport function getChannelURL(state: GlobalState, channel: Channel, teamId: string): string {\n let notificationURL;\n if (channel && (channel.type === Constants.DM_CHANNEL || channel.type === Constants.GM_CHANNEL)) {\n notificationURL = getCurrentRelativeTeamUrl(state) + '/channels/' + channel.name;\n } else if (channel) {\n const team = getTeam(state, teamId);\n notificationURL = getTeamRelativeUrl(team) + '/channels/' + channel.name;\n } else if (teamId) {\n const team = getTeam(state, teamId);\n const redirectChannel = getRedirectChannelNameForTeam(state, teamId);\n notificationURL = getTeamRelativeUrl(team) + `/channels/${redirectChannel}`;\n } else {\n const currentTeamId = getCurrentTeamId(state);\n const redirectChannel = getRedirectChannelNameForTeam(state, currentTeamId);\n notificationURL = getCurrentRelativeTeamUrl(state) + `/channels/${redirectChannel}`;\n }\n return notificationURL;\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport {WindowSizes} from 'utils/constants';\n\nimport type {GlobalState} from 'types/store';\n\nexport function getIsDesktopView(state: GlobalState): boolean {\n const windowSize = state.views.browser.windowSize;\n return windowSize === WindowSizes.DESKTOP_VIEW;\n}\n\nexport function getIsSmallDesktopView(state: GlobalState): boolean {\n const windowSize = state.views.browser.windowSize;\n return windowSize === WindowSizes.SMALL_DESKTOP_VIEW;\n}\n\nexport function getIsTabletView(state: GlobalState): boolean {\n const windowSize = state.views.browser.windowSize;\n return windowSize === WindowSizes.TABLET_VIEW;\n}\n\nexport function getIsMobileView(state: GlobalState): boolean {\n const windowSize = state.views.browser.windowSize;\n return windowSize === WindowSizes.MOBILE_VIEW;\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport type {ChannelCategory} from '@mattermost/types/channel_categories';\nimport {CategorySorting} from '@mattermost/types/channel_categories';\nimport type {Channel} from '@mattermost/types/channels';\nimport type {RelationOneToOne} from '@mattermost/types/utilities';\n\nimport {createSelector} from 'mattermost-redux/selectors/create_selector';\nimport {\n makeGetCategoriesForTeam,\n makeGetChannelsByCategory,\n makeGetChannelIdsForCategory,\n} from 'mattermost-redux/selectors/entities/channel_categories';\nimport {\n getAllChannels,\n getCurrentChannelId,\n getMyChannelMemberships,\n getUnreadChannelIds,\n sortUnreadChannels,\n} from 'mattermost-redux/selectors/entities/channels';\nimport {shouldShowUnreadsCategory, isCollapsedThreadsEnabled} from 'mattermost-redux/selectors/entities/preferences';\nimport {getCurrentTeamId} from 'mattermost-redux/selectors/entities/teams';\nimport {memoizeResult} from 'mattermost-redux/utils/helpers';\n\nimport type {DraggingState, GlobalState} from 'types/store';\n\nexport function isUnreadFilterEnabled(state: GlobalState): boolean {\n return state.views.channelSidebar.unreadFilterEnabled && !shouldShowUnreadsCategory(state);\n}\n\nexport const getCategoriesForCurrentTeam: (state: GlobalState) => ChannelCategory[] = (() => {\n const getCategoriesForTeam = makeGetCategoriesForTeam();\n\n return memoizeResult((state: GlobalState) => {\n const currentTeamId = getCurrentTeamId(state);\n return getCategoriesForTeam(state, currentTeamId);\n });\n})();\n\nexport const getAutoSortedCategoryIds: (state: GlobalState) => Set = (() => createSelector(\n 'getAutoSortedCategoryIds',\n (state: GlobalState) => getCategoriesForCurrentTeam(state),\n (categories) => {\n return new Set(categories.filter((category) =>\n category.sorting === CategorySorting.Alphabetical ||\n category.sorting === CategorySorting.Recency).map((category) => category.id));\n },\n))();\n\nexport const getChannelsByCategoryForCurrentTeam: (state: GlobalState) => RelationOneToOne = (() => {\n const getChannelsByCategory = makeGetChannelsByCategory();\n\n return memoizeResult((state: GlobalState) => {\n const currentTeamId = getCurrentTeamId(state);\n return getChannelsByCategory(state, currentTeamId);\n });\n})();\n\nconst getUnreadChannelIdsSet = createSelector(\n 'getUnreadChannelIdsSet',\n (state: GlobalState) => getUnreadChannelIds(state, state.views.channel.lastUnreadChannel),\n (unreadChannelIds) => {\n return new Set(unreadChannelIds);\n },\n);\n\n// getChannelsInCategoryOrder returns an array of channels on the current team that are currently visible in the sidebar.\n// Channels are returned in the same order as in the sidebar. Channels in the Unreads category are not included.\nexport const getChannelsInCategoryOrder = (() => {\n return createSelector(\n 'getChannelsInCategoryOrder',\n getCategoriesForCurrentTeam,\n getChannelsByCategoryForCurrentTeam,\n getCurrentChannelId,\n getUnreadChannelIdsSet,\n shouldShowUnreadsCategory,\n (categories, channelsByCategory, currentChannelId, unreadChannelIds, showUnreadsCategory) => {\n return categories.map((category) => {\n const channels = channelsByCategory[category.id];\n\n return channels.filter((channel: Channel) => {\n const isUnread = unreadChannelIds.has(channel.id);\n\n if (showUnreadsCategory) {\n // Filter out channels that have been moved to the Unreads category\n if (isUnread) {\n return false;\n }\n }\n\n if (category.collapsed) {\n // Filter out channels that would be hidden by a collapsed category\n if (!isUnread && currentChannelId !== channel.id) {\n return false;\n }\n }\n\n return true;\n });\n }).flat();\n },\n );\n})();\n\n// getUnreadChannels returns an array of all unread channels on the current team for display with the unread filter\n// enabled. Channels are sorted by recency with channels containing a mention grouped first.\nexport const getUnreadChannels = (() => {\n const getUnsortedUnreadChannels = createSelector(\n 'getUnreadChannels',\n getAllChannels,\n getUnreadChannelIdsSet,\n getCurrentChannelId,\n isUnreadFilterEnabled,\n (allChannels, unreadChannelIds, currentChannelId, unreadFilterEnabled) => {\n const unreadChannels: Channel[] = [];\n\n for (const channelId of unreadChannelIds) {\n const channel = allChannels[channelId];\n\n if (channel) {\n // Only include an archived channel if it's the current channel\n if (channel.delete_at > 0 && channel.id !== currentChannelId) {\n continue;\n }\n\n unreadChannels.push(channel);\n }\n }\n\n // This selector is used for both the unread filter and the unreads category which treat the current\n // channel differently\n if (unreadFilterEnabled) {\n // The current channel is already in unreadChannels if it was previously unread but we need to add it\n // if it wasn't previously unread\n if (currentChannelId && unreadChannels.findIndex((channel) => channel.id === currentChannelId) === -1) {\n if (allChannels[currentChannelId]) {\n unreadChannels.push(allChannels[currentChannelId]);\n }\n }\n }\n\n return unreadChannels;\n },\n );\n\n const sortChannels = createSelector(\n 'sortChannels',\n (_: GlobalState, channels: Channel[]) => channels,\n getMyChannelMemberships,\n (state: GlobalState) => state.views.channel.lastUnreadChannel,\n isCollapsedThreadsEnabled,\n (channels, myMembers, lastUnreadChannel, crtEnabled) => {\n return sortUnreadChannels(channels, myMembers, lastUnreadChannel, crtEnabled);\n },\n );\n\n return (state: GlobalState) => {\n const channels = getUnsortedUnreadChannels(state);\n return sortChannels(state, channels);\n };\n})();\n\n// WARNING: below functions are used in getDisplayedChannels only. Do not use it elsewhere.\nfunction concatChannels(channelsA: Channel[], channelsB: Channel[]) {\n return [...channelsA, ...channelsB];\n}\nconst memoizedConcatChannels = memoizeResult(concatChannels);\n\n// Returns an array of channels in the order that they currently appear in the sidebar. Channels are filtered out if they\n// are hidden such as by a collapsed category or the unread filter.\nexport const getDisplayedChannels = createSelector(\n 'getDisplayedChannels',\n isUnreadFilterEnabled,\n getUnreadChannels,\n shouldShowUnreadsCategory,\n getChannelsInCategoryOrder,\n (unreadFilterEnabled, unreadChannels, showUnreadsCategory, channelsInCategoryOrder) => {\n if (unreadFilterEnabled) {\n return unreadChannels;\n }\n\n if (showUnreadsCategory) {\n return memoizedConcatChannels(unreadChannels, channelsInCategoryOrder);\n }\n\n return channelsInCategoryOrder;\n },\n);\n\n// Returns a selector that, given a category, returns the ids of channels visible in that category. The returned channels do not\n// include unread channels when the Unreads category is enabled.\nexport function makeGetFilteredChannelIdsForCategory(): (state: GlobalState, category: ChannelCategory) => string[] {\n const getChannelIdsForCategory = makeGetChannelIdsForCategory();\n\n return createSelector(\n 'makeGetFilteredChannelIdsForCategory',\n getChannelIdsForCategory,\n getUnreadChannelIdsSet,\n shouldShowUnreadsCategory,\n (channelIds, unreadChannelIdsSet, showUnreadsCategory) => {\n if (!showUnreadsCategory) {\n return channelIds;\n }\n\n const filtered = channelIds.filter((id) => !unreadChannelIdsSet.has(id));\n\n return filtered.length === channelIds.length ? channelIds : filtered;\n },\n );\n}\n\n// Returns a selector that, given a category, returns the ids of channels visible in that category. The returned channels do not\n// include unread channels when the Unreads category is enabled.\nexport function makeGetUnreadIdsForCategory(): (state: GlobalState, category: ChannelCategory) => string[] {\n const getChannelIdsForCategory = makeGetChannelIdsForCategory();\n const emptyList: string[] = [];\n\n return createSelector(\n 'makeGetFilteredChannelIdsForCategory',\n getChannelIdsForCategory,\n getUnreadChannelIdsSet,\n shouldShowUnreadsCategory,\n (channelIds, unreadChannelIdsSet, showUnreadsCategory) => {\n if (showUnreadsCategory) {\n return emptyList;\n }\n\n const filtered = channelIds.filter((id) => unreadChannelIdsSet.has(id));\n\n if (filtered.length === 0) {\n return emptyList;\n }\n\n return filtered.length === channelIds.length ? channelIds : filtered;\n },\n );\n}\n\nexport function getDraggingState(state: GlobalState): DraggingState {\n return state.views.channelSidebar.draggingState;\n}\n\nexport function isChannelSelected(state: GlobalState, channelId: string): boolean {\n return state.views.channelSidebar.multiSelectedChannelIds.indexOf(channelId) !== -1;\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport moment from 'moment-timezone';\n\nimport type {UserCustomStatus} from '@mattermost/types/users';\nimport {CustomStatusDuration} from '@mattermost/types/users';\n\nimport {Preferences} from 'mattermost-redux/constants';\nimport {createSelector} from 'mattermost-redux/selectors/create_selector';\nimport {getConfig} from 'mattermost-redux/selectors/entities/general';\nimport {get} from 'mattermost-redux/selectors/entities/preferences';\nimport {getCurrentTimezone} from 'mattermost-redux/selectors/entities/timezone';\nimport {getCurrentUser, getUser} from 'mattermost-redux/selectors/entities/users';\n\nimport {getEmojiMap} from 'selectors/emojis';\n\nimport {getCurrentMomentForTimezone} from 'utils/timezone';\nimport {isDateWithinDaysRange, TimeInformation} from 'utils/utils';\n\nimport type {GlobalState} from 'types/store';\n\nexport function makeGetCustomStatus(): (state: GlobalState, userID?: string) => UserCustomStatus {\n return createSelector(\n 'makeGetCustomStatus',\n (state: GlobalState, userID?: string) => (userID ? getUser(state, userID) : getCurrentUser(state)),\n (user) => {\n const userProps = user?.props || {};\n return userProps.customStatus ? JSON.parse(userProps.customStatus) : undefined;\n },\n );\n}\n\nexport function isCustomStatusExpired(state: GlobalState, customStatus?: UserCustomStatus) {\n if (!customStatus) {\n return true;\n }\n\n if (customStatus.duration === CustomStatusDuration.DONT_CLEAR) {\n return false;\n }\n\n const expiryTime = moment(customStatus.expires_at);\n const timezone = getCurrentTimezone(state);\n const currentTime = getCurrentMomentForTimezone(timezone);\n return currentTime.isSameOrAfter(expiryTime);\n}\n\n/**\n * getRecentCustomStatuses returns an array of the current user's recent custom statuses with any statuses using\n * non-loaded or non-existent emojis filtered out.\n */\nexport const getRecentCustomStatuses: (state: GlobalState) => UserCustomStatus[] = createSelector(\n 'getRecentCustomStatuses',\n (state: GlobalState) => get(state, Preferences.CATEGORY_CUSTOM_STATUS, Preferences.NAME_RECENT_CUSTOM_STATUSES),\n getEmojiMap,\n (value, emojiMap) => {\n if (!value) {\n return [];\n }\n\n let recentCustomStatuses: UserCustomStatus[] = JSON.parse(value);\n recentCustomStatuses = recentCustomStatuses.filter((customStatus) => emojiMap.has(customStatus.emoji));\n\n return recentCustomStatuses;\n },\n);\n\nexport function isCustomStatusEnabled(state: GlobalState) {\n const config = getConfig(state);\n return config && config.EnableCustomUserStatuses === 'true';\n}\n\nfunction showCustomStatusPulsatingDotAndPostHeader(state: GlobalState) {\n // only show this for users after the first seven days\n const currentUser = getCurrentUser(state);\n const hasUserCreationMoreThanSevenDays = isDateWithinDaysRange(currentUser?.create_at, 7, TimeInformation.FUTURE);\n const customStatusTutorialState = get(state, Preferences.CATEGORY_CUSTOM_STATUS, Preferences.NAME_CUSTOM_STATUS_TUTORIAL_STATE);\n const modalAlreadyViewed = customStatusTutorialState && JSON.parse(customStatusTutorialState)[Preferences.CUSTOM_STATUS_MODAL_VIEWED];\n return !modalAlreadyViewed && hasUserCreationMoreThanSevenDays;\n}\n\nexport function showStatusDropdownPulsatingDot(state: GlobalState) {\n return showCustomStatusPulsatingDotAndPostHeader(state);\n}\n\nexport function showPostHeaderUpdateStatusButton(state: GlobalState) {\n return showCustomStatusPulsatingDotAndPostHeader(state);\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport moment from 'moment';\n\nimport type {Post} from '@mattermost/types/posts';\nimport type {Team} from '@mattermost/types/teams';\nimport type {UserThread} from '@mattermost/types/threads';\n\nimport {createSelector} from 'mattermost-redux/selectors/create_selector';\nimport {getCurrentUser} from 'mattermost-redux/selectors/entities/common';\nimport {makeGetPostsForIds} from 'mattermost-redux/selectors/entities/posts';\nimport {getCurrentTeamId} from 'mattermost-redux/selectors/entities/teams';\nimport {getThreads} from 'mattermost-redux/selectors/entities/threads';\nimport {createIdsSelector} from 'mattermost-redux/utils/helpers';\nimport {DATE_LINE, makeCombineUserActivityPosts, START_OF_NEW_MESSAGES, CREATE_COMMENT} from 'mattermost-redux/utils/post_list';\nimport {getUserCurrentTimezone} from 'mattermost-redux/utils/timezone_utils';\n\nimport {getIsRhsOpen, getSelectedPostId} from 'selectors/rhs';\n\nimport {isFromWebhook} from 'utils/post_utils';\n\nimport type {GlobalState} from 'types/store';\nimport type {ViewsState} from 'types/store/views';\n\ninterface PostFilterOptions {\n postIds: Array;\n showDate: boolean;\n lastViewedAt?: number;\n}\n\nexport function getSelectedThreadIdInTeam(state: GlobalState): ViewsState['threads']['selectedThreadIdInTeam'] {\n return state.views.threads.selectedThreadIdInTeam;\n}\n\nexport const getSelectedThreadIdInCurrentTeam: (state: GlobalState) => ViewsState['threads']['selectedThreadIdInTeam'][Team['id']] = createSelector(\n 'getSelectedThreadIdInCurrentTeam',\n getCurrentTeamId,\n getSelectedThreadIdInTeam,\n (\n currentTeamId,\n selectedThreadIdInTeam,\n ) => {\n return selectedThreadIdInTeam?.[currentTeamId] ?? null;\n },\n);\n\nexport const getSelectedThreadInCurrentTeam: (state: GlobalState) => UserThread | null = createSelector(\n 'getSelectedThreadInCurrentTeam',\n getCurrentTeamId,\n getSelectedThreadIdInTeam,\n getThreads,\n (\n currentTeamId,\n selectedThreadIdInTeam,\n threads,\n ) => {\n const threadId = selectedThreadIdInTeam?.[currentTeamId];\n return threadId ? threads[threadId] : null;\n },\n);\n\nexport function makeGetThreadLastViewedAt(): (state: GlobalState, threadId: Post['id']) => number {\n return createSelector(\n 'makeGetThreadLastViewedAt',\n (state: GlobalState, threadId: Post['id']) => state.views.threads.lastViewedAt[threadId],\n getThreads,\n (_state, threadId) => threadId,\n (lastViewedAt, threads, threadId) => {\n if (typeof lastViewedAt === 'number') {\n return lastViewedAt;\n }\n\n return threads[threadId]?.last_viewed_at;\n },\n );\n}\n\nexport const isThreadOpen = (state: GlobalState, threadId: UserThread['id']): boolean => {\n return (\n threadId === getSelectedThreadIdInCurrentTeam(state) ||\n (getIsRhsOpen(state) && threadId === getSelectedPostId(state))\n );\n};\n\nexport const isThreadManuallyUnread = (state: GlobalState, threadId: UserThread['id']): boolean => {\n return state.views.threads.manuallyUnread[threadId] || false;\n};\n\n// Returns a selector that, given the state and an object containing an array of postIds and an optional\n// timestamp of when the channel was last read, returns a memoized array of postIds interspersed with\n// day indicators, an optional new message indicator and create comment.\nexport function makeFilterRepliesAndAddSeparators() {\n const getPostsForIds = makeGetPostsForIds();\n\n return createIdsSelector(\n 'makeFilterPostsAndAddSeparators',\n (state: GlobalState, {postIds}: PostFilterOptions) => getPostsForIds(state, postIds),\n (_state: GlobalState, {lastViewedAt}: PostFilterOptions) => lastViewedAt,\n (_state: GlobalState, {showDate}: PostFilterOptions) => showDate,\n getCurrentUser,\n (posts, lastViewedAt, showDate, currentUser) => {\n if (posts.length === 0 || !currentUser) {\n return [];\n }\n\n const out: string[] = [];\n let lastDate;\n let addedNewMessagesIndicator = false;\n\n // Iterating through the posts from oldest to newest\n for (let i = posts.length - 1; i >= 0; i--) {\n const post = posts[i];\n\n if (!post) {\n continue;\n }\n\n if (showDate) {\n // Push on a date header if the last post was on a different day than the current one\n const postDate = new Date(post.create_at);\n const currentOffset = postDate.getTimezoneOffset() * 60 * 1000;\n const timezone = getUserCurrentTimezone(currentUser.timezone);\n if (timezone) {\n const zone = moment.tz.zone(timezone);\n if (zone) {\n const timezoneOffset = zone.utcOffset(post.create_at) * 60 * 1000;\n postDate.setTime(post.create_at + (currentOffset - timezoneOffset));\n }\n }\n\n if ((!lastDate || lastDate.toDateString() !== postDate.toDateString())) {\n out.push(DATE_LINE + postDate.getTime());\n lastDate = postDate;\n }\n }\n\n if (\n typeof lastViewedAt === 'number' &&\n post.create_at >= lastViewedAt &&\n (i < posts.length - 1) &&\n (post.user_id !== currentUser.id || isFromWebhook(post)) &&\n !addedNewMessagesIndicator\n ) {\n out.push(START_OF_NEW_MESSAGES);\n addedNewMessagesIndicator = true;\n }\n\n out.push(post.id);\n }\n\n out.push(CREATE_COMMENT);\n\n // Flip it back to newest to oldest\n return out.reverse();\n },\n );\n}\n\nexport function makePrepareReplyIdsForThreadViewer() {\n const filterRepliesAndAddSeparators = makeFilterRepliesAndAddSeparators();\n const combineUserActivityPosts = makeCombineUserActivityPosts();\n return (state: GlobalState, options: PostFilterOptions) => {\n const postIds = filterRepliesAndAddSeparators(state, options);\n return combineUserActivityPosts(state, postIds);\n };\n}\n\nexport function getThreadToastStatus(state: GlobalState) {\n return state.views.threads.toastStatus;\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport {getRedirectChannelNameForTeam} from 'mattermost-redux/selectors/entities/channels';\n\nimport {getBasePath} from 'selectors/general';\nimport store from 'stores/redux_store';\n\nimport {PreviousViewedTypes} from 'utils/constants';\n\nconst getPreviousTeamIdKey = (userId: string) => ['user_prev_team', userId].join(':');\nconst getPreviousChannelNameKey = (userId: string | null, teamId: string) => ['user_team_prev_channel', userId, teamId].join(':');\nconst getPreviousViewedTypeKey = (userId: string | null, teamId: string) => ['user_team_prev_viewed_type', userId, teamId].join(':');\nconst getPenultimateViewedTypeKey = (userId: string, teamId: string) => ['user_team_penultimate_viewed_type', userId, teamId].join(':');\nexport const getPenultimateChannelNameKey = (userId: string, teamId: string) => ['user_team_penultimate_channel', userId, teamId].join(':');\nconst getRecentEmojisKey = (userId: string) => ['recent_emojis', userId].join(':');\nconst getWasLoggedInKey = () => 'was_logged_in';\nconst teamIdJoinedOnLoadKey = 'teamIdJoinedOnLoad';\nconst wasNotifiedOfLogInKey = 'was_notified_of_login';\n\nconst getPathScopedKey = (path: string, key: string) => {\n if (path === '' || path === '/') {\n return key;\n }\n\n return [path, key].join(':');\n};\n\n// LocalStorageStore exposes an interface for accessing entries in the localStorage.\n//\n// Note that this excludes keys managed by redux-persist. The latter cannot currently be used for\n// key/value storage that persists beyond logout. Ideally, we could purge all but certain parts\n// of the Redux store so as to allow them to be used on re-login.\n\n// Lets open a separate issue to refactor local storage and state interactions.\n// This whole store can be connected to redux\nclass LocalStorageStoreClass {\n getItem(key: string, state = store.getState()) {\n const basePath = getBasePath(state);\n\n return localStorage.getItem(getPathScopedKey(basePath, key));\n }\n\n setItem(key: string, value: string | null) {\n const state = store.getState();\n const basePath = getBasePath(state);\n\n localStorage.setItem(getPathScopedKey(basePath, key), value === null ? 'null' : value);\n }\n\n getPreviousChannelName(userId: string | null, teamId: string, state = store.getState()) {\n return this.getItem(getPreviousChannelNameKey(userId, teamId), state) || getRedirectChannelNameForTeam(state, teamId);\n }\n\n getPreviousViewedType(userId: string | null, teamId: string, state = store.getState()) {\n return this.getItem(getPreviousViewedTypeKey(userId, teamId), state) ?? PreviousViewedTypes.CHANNELS;\n }\n\n removeItem(key: string) {\n const state = store.getState();\n const basePath = getBasePath(state);\n\n localStorage.removeItem(getPathScopedKey(basePath, key));\n }\n\n setPreviousChannelName(userId: string, teamId: string, channelName: string) {\n this.setItem(getPreviousChannelNameKey(userId, teamId), channelName);\n }\n\n setPreviousViewedType(userId: string, teamId: string, channelType: string) {\n this.setItem(getPreviousViewedTypeKey(userId, teamId), channelType);\n }\n\n getPenultimateViewedType(userId: string, teamId: string, state = store.getState()) {\n return this.getItem(getPenultimateViewedTypeKey(userId, teamId), state) ?? PreviousViewedTypes.CHANNELS;\n }\n\n setPenultimateViewedType(userId: string, teamId: string, channelType: string) {\n this.setItem(getPenultimateViewedTypeKey(userId, teamId), channelType);\n }\n getPenultimateChannelName(userId: string, teamId: string, state = store.getState()) {\n return this.getItem(getPenultimateChannelNameKey(userId, teamId), state) || getRedirectChannelNameForTeam(state, teamId);\n }\n\n setPenultimateChannelName(userId: string, teamId: string, channelName: string) {\n this.setItem(getPenultimateChannelNameKey(userId, teamId), channelName);\n }\n\n removePreviousChannelName(userId: string, teamId: string, state = store.getState()) {\n this.setItem(getPreviousChannelNameKey(userId, teamId), this.getPenultimateChannelName(userId, teamId, state));\n this.removeItem(getPenultimateChannelNameKey(userId, teamId));\n }\n\n removePreviousChannelType(userId: string, teamId: string, state = store.getStore()) {\n this.setItem(getPreviousViewedTypeKey(userId, teamId), this.getPenultimateViewedType(userId, teamId, state));\n this.removeItem(getPenultimateViewedTypeKey(userId, teamId));\n }\n\n removePreviousChannel(userId: string, teamId: string, state = store.getStore()) {\n this.removePreviousChannelName(userId, teamId, state);\n this.removePreviousChannelType(userId, teamId, state);\n }\n\n removePenultimateChannelName(userId: string, teamId: string) {\n this.removeItem(getPenultimateChannelNameKey(userId, teamId));\n }\n\n removePenultimateViewedType(userId: string, teamId: string) {\n this.removeItem(getPenultimateViewedTypeKey(userId, teamId));\n }\n\n getPreviousTeamId(userId: string) {\n return this.getItem(getPreviousTeamIdKey(userId));\n }\n\n setPreviousTeamId(userId: string, teamId: string) {\n this.setItem(getPreviousTeamIdKey(userId), teamId);\n }\n\n /**\n * Returns the list of recently used emojis for the user in string format.\n * @param {string} userId The user ID.\n * @returns The list of emojis in string format. eg. '['smile','+1', 'pizza']'\n * @memberof LocalStorageStore\n * @example\n * const recentEmojis = LocalStorageStore.getRecentEmojis('userId');\n * if (recentEmojis) {\n * const recentEmojisArray = JSON.parse(recentEmojis);\n * // do something with the emoji list\n * }\n **/\n getRecentEmojis(userId: string) {\n const recentEmojis = this.getItem(getRecentEmojisKey(userId));\n if (!recentEmojis) {\n return null;\n }\n\n return recentEmojis;\n }\n\n getTeamIdJoinedOnLoad() {\n return this.getItem(teamIdJoinedOnLoadKey);\n }\n\n setTeamIdJoinedOnLoad(teamId: string | null) {\n this.setItem(teamIdJoinedOnLoadKey, teamId);\n }\n\n setWasLoggedIn(wasLoggedIn: boolean) {\n if (wasLoggedIn) {\n this.setItem(getWasLoggedInKey(), 'true');\n } else {\n this.setItem(getWasLoggedInKey(), 'false');\n }\n }\n\n getWasLoggedIn() {\n return this.getItem(getWasLoggedInKey()) === 'true';\n }\n\n // the following flag's setter and getter are used to make sure a user is notified (via aria-label)\n // about a successful login only once (MM-50821)\n setWasNotifiedOfLogIn(wasNotified: boolean) {\n this.setItem(wasNotifiedOfLogInKey, String(wasNotified));\n }\n\n getWasNotifiedOfLogIn() {\n return this.getItem(wasNotifiedOfLogInKey) === 'true';\n }\n}\n\nconst LocalStorageStore = new LocalStorageStoreClass();\n\nexport default LocalStorageStore;\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport React from 'react';\nimport {FormattedMessage} from 'react-intl';\n\nimport ConfirmModal from 'components/confirm_modal';\n\ntype Props = {\n channelName: string;\n onCancel: () => void;\n onExited: () => void;\n onJoin: () => void;\n}\n\nfunction JoinPrivateChannelModal({channelName, onCancel, onExited, onJoin}: Props) {\n const join = React.useRef(false);\n const [show, setShow] = React.useState(true);\n\n const handleJoin = () => {\n join.current = true;\n handleHide();\n };\n\n const handleHide = () => {\n setShow(false);\n };\n\n const handleExited = () => {\n if (join.current) {\n if (typeof onJoin === 'function') {\n onJoin();\n }\n } else if (typeof onCancel === 'function') {\n onCancel();\n }\n\n onExited();\n };\n\n return (\n \n }\n message={\n {channelName},\n }}\n />\n }\n confirmButtonText={\n \n }\n onConfirm={handleJoin}\n onCancel={handleHide}\n onExited={handleExited}\n />\n );\n}\n\nexport default React.memo(JoinPrivateChannelModal);\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport type {Channel, ChannelType} from '@mattermost/types/channels';\nimport type {Team} from '@mattermost/types/teams';\n\nimport {TeamTypes} from 'mattermost-redux/action_types';\nimport {removeUserFromTeam} from 'mattermost-redux/actions/teams';\nimport Permissions from 'mattermost-redux/constants/permissions';\nimport {getRedirectChannelNameForTeam} from 'mattermost-redux/selectors/entities/channels';\nimport {haveIChannelPermission} from 'mattermost-redux/selectors/entities/roles';\nimport {getCurrentUserId} from 'mattermost-redux/selectors/entities/users';\nimport type {NewActionFuncAsync} from 'mattermost-redux/types/actions';\n\nimport {openModal} from 'actions/views/modals';\nimport LocalStorageStore from 'stores/local_storage_store';\n\nimport JoinPrivateChannelModal from 'components/join_private_channel_modal';\n\nimport Constants, {ModalIdentifiers} from 'utils/constants';\nimport * as Utils from 'utils/utils';\n\nimport type {GlobalState} from 'types/store';\n\nimport {getHistory} from './browser_history';\nimport {cleanUpUrlable} from './url';\n\nexport function canManageMembers(state: GlobalState, channel: Channel) {\n if (channel.type === Constants.PRIVATE_CHANNEL) {\n return haveIChannelPermission(\n state,\n channel.team_id,\n channel.id,\n Permissions.MANAGE_PRIVATE_CHANNEL_MEMBERS,\n );\n }\n\n if (channel.type === Constants.OPEN_CHANNEL) {\n return haveIChannelPermission(\n state,\n channel.team_id,\n channel.id,\n Permissions.MANAGE_PUBLIC_CHANNEL_MEMBERS,\n );\n }\n\n return true;\n}\n\nexport function findNextUnreadChannelId(curChannelId: string, allChannelIds: string[], unreadChannelIds: string[], direction: number) {\n const curIndex = allChannelIds.indexOf(curChannelId);\n\n for (let i = 1; i < allChannelIds.length; i++) {\n const index = Utils.mod(curIndex + (i * direction), allChannelIds.length);\n\n if (unreadChannelIds.includes(allChannelIds[index])) {\n return index;\n }\n }\n\n return -1;\n}\n\nexport function isArchivedChannel(channel: Channel) {\n return Boolean(channel && channel.delete_at !== 0);\n}\n\ntype JoinPrivateChannelPromptResult = {\n data: {\n join: boolean;\n };\n};\n\nexport function joinPrivateChannelPrompt(team: Team, channelDisplayName: string, handleOnCancel = true): NewActionFuncAsync {\n return async (dispatch, getState) => {\n const result: JoinPrivateChannelPromptResult = await new Promise((resolve) => {\n const modalData = {\n modalId: ModalIdentifiers.JOIN_CHANNEL_PROMPT,\n dialogType: JoinPrivateChannelModal,\n dialogProps: {\n channelName: channelDisplayName,\n onJoin: () => {\n LocalStorageStore.setTeamIdJoinedOnLoad(null);\n resolve({\n data: {join: true},\n });\n },\n onCancel: async () => {\n if (handleOnCancel) {\n const state = getState();\n\n // If auto joined the team on load, leave the team as well\n if (LocalStorageStore.getTeamIdJoinedOnLoad() === team.id) {\n await dispatch(removeUserFromTeam(team.id, getCurrentUserId(state)));\n dispatch({type: TeamTypes.LEAVE_TEAM, data: team});\n getHistory().replace('/');\n } else {\n const redirectChannelName = getRedirectChannelNameForTeam(state, team.id);\n getHistory().replace(`/${team.name}/channels/${redirectChannelName}`);\n }\n }\n LocalStorageStore.setTeamIdJoinedOnLoad(null);\n resolve({\n data: {join: false},\n });\n },\n },\n };\n dispatch(openModal(modalData));\n });\n return result;\n };\n}\n\nexport function makeNewEmptyChannel(displayName: string, teamId: string): Channel {\n return {\n team_id: teamId,\n name: cleanUpUrlable(displayName),\n display_name: displayName,\n purpose: '',\n header: '',\n type: Constants.OPEN_CHANNEL as ChannelType,\n create_at: 0,\n creator_id: '',\n delete_at: 0,\n group_constrained: false,\n id: '',\n last_post_at: 0,\n last_root_post_at: 0,\n scheme_id: '',\n update_at: 0,\n };\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\n// This file is automatically generated via `/webapp/channels/build/make_emojis.mjs`. Do not modify it manually.\n\n/* eslint-disable */\n\nimport {t} from 'utils/i18n';\n\nimport memoize from 'memoize-one';\n\nimport emojis from 'utils/emoji.json';\n\nimport spriteSheet from 'images/emoji-sheets/apple-sheet.png';\n\nexport const Emojis = emojis;\n\nexport const EmojiIndicesByAlias = new Map([[\"grinning\",0],[\"smiley\",1],[\"smile\",2],[\"grin\",3],[\"laughing\",4],[\"satisfied\",4],[\"sweat_smile\",5],[\"rolling_on_the_floor_laughing\",6],[\"rofl\",6],[\"joy\",7],[\"slightly_smiling_face\",8],[\"upside_down_face\",9],[\"wink\",10],[\"blush\",11],[\"innocent\",12],[\"smiling_face_with_3_hearts\",13],[\"heart_eyes\",14],[\"star-struck\",15],[\"grinning_face_with_star_eyes\",15],[\"kissing_heart\",16],[\"kissing\",17],[\"relaxed\",18],[\"kissing_closed_eyes\",19],[\"kissing_smiling_eyes\",20],[\"smiling_face_with_tear\",21],[\"yum\",22],[\"stuck_out_tongue\",23],[\"stuck_out_tongue_winking_eye\",24],[\"zany_face\",25],[\"grinning_face_with_one_large_and_one_small_eye\",25],[\"stuck_out_tongue_closed_eyes\",26],[\"money_mouth_face\",27],[\"hugging_face\",28],[\"hugs\",28],[\"face_with_hand_over_mouth\",29],[\"smiling_face_with_smiling_eyes_and_hand_covering_mouth\",29],[\"shushing_face\",30],[\"face_with_finger_covering_closed_lips\",30],[\"thinking_face\",31],[\"thinking\",31],[\"zipper_mouth_face\",32],[\"face_with_raised_eyebrow\",33],[\"face_with_one_eyebrow_raised\",33],[\"neutral_face\",34],[\"expressionless\",35],[\"no_mouth\",36],[\"smirk\",37],[\"unamused\",38],[\"face_with_rolling_eyes\",39],[\"roll_eyes\",39],[\"grimacing\",40],[\"lying_face\",41],[\"relieved\",42],[\"pensive\",43],[\"sleepy\",44],[\"drooling_face\",45],[\"sleeping\",46],[\"mask\",47],[\"face_with_thermometer\",48],[\"face_with_head_bandage\",49],[\"nauseated_face\",50],[\"face_vomiting\",51],[\"face_with_open_mouth_vomiting\",51],[\"sneezing_face\",52],[\"hot_face\",53],[\"cold_face\",54],[\"woozy_face\",55],[\"dizzy_face\",56],[\"exploding_head\",57],[\"shocked_face_with_exploding_head\",57],[\"face_with_cowboy_hat\",58],[\"cowboy_hat_face\",58],[\"partying_face\",59],[\"disguised_face\",60],[\"sunglasses\",61],[\"nerd_face\",62],[\"face_with_monocle\",63],[\"confused\",64],[\"worried\",65],[\"slightly_frowning_face\",66],[\"white_frowning_face\",67],[\"frowning_face\",67],[\"open_mouth\",68],[\"hushed\",69],[\"astonished\",70],[\"flushed\",71],[\"pleading_face\",72],[\"frowning\",73],[\"anguished\",74],[\"fearful\",75],[\"cold_sweat\",76],[\"disappointed_relieved\",77],[\"cry\",78],[\"sob\",79],[\"scream\",80],[\"confounded\",81],[\"persevere\",82],[\"disappointed\",83],[\"sweat\",84],[\"weary\",85],[\"tired_face\",86],[\"yawning_face\",87],[\"triumph\",88],[\"rage\",89],[\"pout\",89],[\"angry\",90],[\"face_with_symbols_on_mouth\",91],[\"serious_face_with_symbols_covering_mouth\",91],[\"smiling_imp\",92],[\"imp\",93],[\"skull\",94],[\"skull_and_crossbones\",95],[\"hankey\",96],[\"poop\",96],[\"shit\",96],[\"clown_face\",97],[\"japanese_ogre\",98],[\"japanese_goblin\",99],[\"ghost\",100],[\"alien\",101],[\"space_invader\",102],[\"robot_face\",103],[\"robot\",103],[\"smiley_cat\",104],[\"smile_cat\",105],[\"joy_cat\",106],[\"heart_eyes_cat\",107],[\"smirk_cat\",108],[\"kissing_cat\",109],[\"scream_cat\",110],[\"crying_cat_face\",111],[\"pouting_cat\",112],[\"see_no_evil\",113],[\"hear_no_evil\",114],[\"speak_no_evil\",115],[\"kiss\",116],[\"love_letter\",117],[\"cupid\",118],[\"gift_heart\",119],[\"sparkling_heart\",120],[\"heartpulse\",121],[\"heartbeat\",122],[\"revolving_hearts\",123],[\"two_hearts\",124],[\"heart_decoration\",125],[\"heavy_heart_exclamation_mark_ornament\",126],[\"heavy_heart_exclamation\",126],[\"broken_heart\",127],[\"heart\",128],[\"orange_heart\",129],[\"yellow_heart\",130],[\"green_heart\",131],[\"blue_heart\",132],[\"purple_heart\",133],[\"brown_heart\",134],[\"black_heart\",135],[\"white_heart\",136],[\"100\",137],[\"anger\",138],[\"boom\",139],[\"collision\",139],[\"dizzy\",140],[\"sweat_drops\",141],[\"dash\",142],[\"hole\",143],[\"bomb\",144],[\"speech_balloon\",145],[\"eye-in-speech-bubble\",146],[\"left_speech_bubble\",147],[\"right_anger_bubble\",148],[\"thought_balloon\",149],[\"zzz\",150],[\"wave\",151],[\"raised_back_of_hand\",152],[\"raised_hand_with_fingers_splayed\",153],[\"hand\",154],[\"raised_hand\",154],[\"spock-hand\",155],[\"vulcan_salute\",155],[\"ok_hand\",156],[\"pinched_fingers\",157],[\"pinching_hand\",158],[\"v\",159],[\"crossed_fingers\",160],[\"hand_with_index_and_middle_fingers_crossed\",160],[\"i_love_you_hand_sign\",161],[\"the_horns\",162],[\"sign_of_the_horns\",162],[\"metal\",162],[\"call_me_hand\",163],[\"point_left\",164],[\"point_right\",165],[\"point_up_2\",166],[\"middle_finger\",167],[\"reversed_hand_with_middle_finger_extended\",167],[\"fu\",167],[\"point_down\",168],[\"point_up\",169],[\"+1\",170],[\"thumbsup\",170],[\"-1\",171],[\"thumbsdown\",171],[\"fist\",172],[\"fist_raised\",172],[\"facepunch\",173],[\"punch\",173],[\"fist_oncoming\",173],[\"left-facing_fist\",174],[\"fist_left\",174],[\"right-facing_fist\",175],[\"fist_right\",175],[\"clap\",176],[\"raised_hands\",177],[\"open_hands\",178],[\"palms_up_together\",179],[\"handshake\",180],[\"pray\",181],[\"writing_hand\",182],[\"nail_care\",183],[\"selfie\",184],[\"muscle\",185],[\"mechanical_arm\",186],[\"mechanical_leg\",187],[\"leg\",188],[\"foot\",189],[\"ear\",190],[\"ear_with_hearing_aid\",191],[\"nose\",192],[\"brain\",193],[\"anatomical_heart\",194],[\"lungs\",195],[\"tooth\",196],[\"bone\",197],[\"eyes\",198],[\"eye\",199],[\"tongue\",200],[\"lips\",201],[\"baby\",202],[\"child\",203],[\"boy\",204],[\"girl\",205],[\"adult\",206],[\"person_with_blond_hair\",207],[\"man\",208],[\"bearded_person\",209],[\"red_haired_man\",210],[\"curly_haired_man\",211],[\"white_haired_man\",212],[\"bald_man\",213],[\"woman\",214],[\"red_haired_woman\",215],[\"red_haired_person\",216],[\"curly_haired_woman\",217],[\"curly_haired_person\",218],[\"white_haired_woman\",219],[\"white_haired_person\",220],[\"bald_woman\",221],[\"bald_person\",222],[\"blond-haired-woman\",223],[\"blonde_woman\",223],[\"blond-haired-man\",224],[\"blonde_man\",224],[\"older_adult\",225],[\"older_man\",226],[\"older_woman\",227],[\"person_frowning\",228],[\"man-frowning\",229],[\"frowning_man\",229],[\"woman-frowning\",230],[\"frowning_woman\",230],[\"person_with_pouting_face\",231],[\"man-pouting\",232],[\"pouting_man\",232],[\"woman-pouting\",233],[\"pouting_woman\",233],[\"no_good\",234],[\"man-gesturing-no\",235],[\"ng_man\",235],[\"no_good_man\",235],[\"woman-gesturing-no\",236],[\"no_good_woman\",236],[\"ng_woman\",236],[\"ok_woman\",237],[\"man-gesturing-ok\",238],[\"ok_man\",238],[\"woman-gesturing-ok\",239],[\"information_desk_person\",240],[\"man-tipping-hand\",241],[\"tipping_hand_man\",241],[\"woman-tipping-hand\",242],[\"tipping_hand_woman\",242],[\"raising_hand\",243],[\"man-raising-hand\",244],[\"raising_hand_man\",244],[\"woman-raising-hand\",245],[\"raising_hand_woman\",245],[\"deaf_person\",246],[\"deaf_man\",247],[\"deaf_woman\",248],[\"bow\",249],[\"man-bowing\",250],[\"bowing_man\",250],[\"woman-bowing\",251],[\"bowing_woman\",251],[\"face_palm\",252],[\"man-facepalming\",253],[\"man_facepalming\",253],[\"woman-facepalming\",254],[\"woman_facepalming\",254],[\"shrug\",255],[\"man-shrugging\",256],[\"man_shrugging\",256],[\"woman-shrugging\",257],[\"woman_shrugging\",257],[\"health_worker\",258],[\"doctor\",258],[\"male-doctor\",259],[\"man_health_worker\",259],[\"female-doctor\",260],[\"woman_health_worker\",260],[\"student\",261],[\"male-student\",262],[\"man_student\",262],[\"female-student\",263],[\"woman_student\",263],[\"teacher\",264],[\"male-teacher\",265],[\"man_teacher\",265],[\"female-teacher\",266],[\"woman_teacher\",266],[\"judge\",267],[\"male-judge\",268],[\"man_judge\",268],[\"female-judge\",269],[\"woman_judge\",269],[\"farmer\",270],[\"male-farmer\",271],[\"man_farmer\",271],[\"female-farmer\",272],[\"woman_farmer\",272],[\"cook\",273],[\"male-cook\",274],[\"man_cook\",274],[\"female-cook\",275],[\"woman_cook\",275],[\"mechanic\",276],[\"male-mechanic\",277],[\"man_mechanic\",277],[\"female-mechanic\",278],[\"woman_mechanic\",278],[\"factory_worker\",279],[\"male-factory-worker\",280],[\"man_factory_worker\",280],[\"female-factory-worker\",281],[\"woman_factory_worker\",281],[\"office_worker\",282],[\"male-office-worker\",283],[\"man_office_worker\",283],[\"female-office-worker\",284],[\"woman_office_worker\",284],[\"scientist\",285],[\"male-scientist\",286],[\"man_scientist\",286],[\"female-scientist\",287],[\"woman_scientist\",287],[\"technologist\",288],[\"male-technologist\",289],[\"man_technologist\",289],[\"female-technologist\",290],[\"woman_technologist\",290],[\"singer\",291],[\"male-singer\",292],[\"man_singer\",292],[\"female-singer\",293],[\"woman_singer\",293],[\"artist\",294],[\"male-artist\",295],[\"man_artist\",295],[\"female-artist\",296],[\"woman_artist\",296],[\"pilot\",297],[\"male-pilot\",298],[\"man_pilot\",298],[\"female-pilot\",299],[\"woman_pilot\",299],[\"astronaut\",300],[\"male-astronaut\",301],[\"man_astronaut\",301],[\"female-astronaut\",302],[\"woman_astronaut\",302],[\"firefighter\",303],[\"male-firefighter\",304],[\"man_firefighter\",304],[\"female-firefighter\",305],[\"woman_firefighter\",305],[\"cop\",306],[\"male-police-officer\",307],[\"policeman\",307],[\"female-police-officer\",308],[\"policewoman\",308],[\"sleuth_or_spy\",309],[\"detective\",309],[\"male-detective\",310],[\"male_detective\",310],[\"female-detective\",311],[\"female_detective\",311],[\"guardsman\",312],[\"male-guard\",313],[\"female-guard\",314],[\"guardswoman\",314],[\"ninja\",315],[\"construction_worker\",316],[\"male-construction-worker\",317],[\"construction_worker_man\",317],[\"female-construction-worker\",318],[\"construction_worker_woman\",318],[\"prince\",319],[\"princess\",320],[\"man_with_turban\",321],[\"man-wearing-turban\",322],[\"woman-wearing-turban\",323],[\"woman_with_turban\",323],[\"man_with_gua_pi_mao\",324],[\"person_with_headscarf\",325],[\"person_in_tuxedo\",326],[\"man_in_tuxedo\",327],[\"woman_in_tuxedo\",328],[\"bride_with_veil\",329],[\"man_with_veil\",330],[\"woman_with_veil\",331],[\"pregnant_woman\",332],[\"breast-feeding\",333],[\"woman_feeding_baby\",334],[\"man_feeding_baby\",335],[\"person_feeding_baby\",336],[\"angel\",337],[\"santa\",338],[\"mrs_claus\",339],[\"mother_christmas\",339],[\"mx_claus\",340],[\"superhero\",341],[\"male_superhero\",342],[\"female_superhero\",343],[\"supervillain\",344],[\"male_supervillain\",345],[\"female_supervillain\",346],[\"mage\",347],[\"male_mage\",348],[\"female_mage\",349],[\"fairy\",350],[\"male_fairy\",351],[\"female_fairy\",352],[\"vampire\",353],[\"male_vampire\",354],[\"female_vampire\",355],[\"merperson\",356],[\"merman\",357],[\"mermaid\",358],[\"elf\",359],[\"male_elf\",360],[\"female_elf\",361],[\"genie\",362],[\"male_genie\",363],[\"female_genie\",364],[\"zombie\",365],[\"male_zombie\",366],[\"female_zombie\",367],[\"massage\",368],[\"man-getting-massage\",369],[\"massage_man\",369],[\"woman-getting-massage\",370],[\"massage_woman\",370],[\"haircut\",371],[\"man-getting-haircut\",372],[\"haircut_man\",372],[\"woman-getting-haircut\",373],[\"haircut_woman\",373],[\"walking\",374],[\"man-walking\",375],[\"walking_man\",375],[\"woman-walking\",376],[\"walking_woman\",376],[\"standing_person\",377],[\"man_standing\",378],[\"woman_standing\",379],[\"kneeling_person\",380],[\"man_kneeling\",381],[\"woman_kneeling\",382],[\"person_with_probing_cane\",383],[\"man_with_probing_cane\",384],[\"woman_with_probing_cane\",385],[\"person_in_motorized_wheelchair\",386],[\"man_in_motorized_wheelchair\",387],[\"woman_in_motorized_wheelchair\",388],[\"person_in_manual_wheelchair\",389],[\"man_in_manual_wheelchair\",390],[\"woman_in_manual_wheelchair\",391],[\"runner\",392],[\"running\",392],[\"man-running\",393],[\"running_man\",393],[\"woman-running\",394],[\"running_woman\",394],[\"dancer\",395],[\"man_dancing\",396],[\"man_in_business_suit_levitating\",397],[\"business_suit_levitating\",397],[\"dancers\",398],[\"man-with-bunny-ears-partying\",399],[\"dancing_men\",399],[\"woman-with-bunny-ears-partying\",400],[\"dancing_women\",400],[\"person_in_steamy_room\",401],[\"man_in_steamy_room\",402],[\"woman_in_steamy_room\",403],[\"person_climbing\",404],[\"man_climbing\",405],[\"woman_climbing\",406],[\"fencer\",407],[\"person_fencing\",407],[\"horse_racing\",408],[\"skier\",409],[\"snowboarder\",410],[\"golfer\",411],[\"man-golfing\",412],[\"golfing_man\",412],[\"woman-golfing\",413],[\"golfing_woman\",413],[\"surfer\",414],[\"man-surfing\",415],[\"surfing_man\",415],[\"woman-surfing\",416],[\"surfing_woman\",416],[\"rowboat\",417],[\"man-rowing-boat\",418],[\"rowing_man\",418],[\"woman-rowing-boat\",419],[\"rowing_woman\",419],[\"swimmer\",420],[\"man-swimming\",421],[\"swimming_man\",421],[\"woman-swimming\",422],[\"swimming_woman\",422],[\"person_with_ball\",423],[\"man-bouncing-ball\",424],[\"basketball_man\",424],[\"woman-bouncing-ball\",425],[\"basketball_woman\",425],[\"weight_lifter\",426],[\"man-lifting-weights\",427],[\"weight_lifting_man\",427],[\"woman-lifting-weights\",428],[\"weight_lifting_woman\",428],[\"bicyclist\",429],[\"man-biking\",430],[\"biking_man\",430],[\"woman-biking\",431],[\"biking_woman\",431],[\"mountain_bicyclist\",432],[\"man-mountain-biking\",433],[\"mountain_biking_man\",433],[\"woman-mountain-biking\",434],[\"mountain_biking_woman\",434],[\"person_doing_cartwheel\",435],[\"man-cartwheeling\",436],[\"man_cartwheeling\",436],[\"woman-cartwheeling\",437],[\"woman_cartwheeling\",437],[\"wrestlers\",438],[\"man-wrestling\",439],[\"men_wrestling\",439],[\"woman-wrestling\",440],[\"women_wrestling\",440],[\"water_polo\",441],[\"man-playing-water-polo\",442],[\"man_playing_water_polo\",442],[\"woman-playing-water-polo\",443],[\"woman_playing_water_polo\",443],[\"handball\",444],[\"man-playing-handball\",445],[\"man_playing_handball\",445],[\"woman-playing-handball\",446],[\"woman_playing_handball\",446],[\"juggling\",447],[\"man-juggling\",448],[\"man_juggling\",448],[\"woman-juggling\",449],[\"woman_juggling\",449],[\"person_in_lotus_position\",450],[\"man_in_lotus_position\",451],[\"woman_in_lotus_position\",452],[\"bath\",453],[\"sleeping_accommodation\",454],[\"sleeping_bed\",454],[\"people_holding_hands\",455],[\"two_women_holding_hands\",456],[\"women_holding_hands\",456],[\"man_and_woman_holding_hands\",457],[\"woman_and_man_holding_hands\",457],[\"couple\",457],[\"two_men_holding_hands\",458],[\"men_holding_hands\",458],[\"couplekiss\",459],[\"woman-kiss-man\",460],[\"couplekiss_man_woman\",460],[\"man-kiss-man\",461],[\"couplekiss_man_man\",461],[\"woman-kiss-woman\",462],[\"couplekiss_woman_woman\",462],[\"couple_with_heart\",463],[\"woman-heart-man\",464],[\"couple_with_heart_woman_man\",464],[\"man-heart-man\",465],[\"couple_with_heart_man_man\",465],[\"woman-heart-woman\",466],[\"couple_with_heart_woman_woman\",466],[\"family\",467],[\"man-woman-boy\",468],[\"family_man_woman_boy\",468],[\"man-woman-girl\",469],[\"family_man_woman_girl\",469],[\"man-woman-girl-boy\",470],[\"family_man_woman_girl_boy\",470],[\"man-woman-boy-boy\",471],[\"family_man_woman_boy_boy\",471],[\"man-woman-girl-girl\",472],[\"family_man_woman_girl_girl\",472],[\"man-man-boy\",473],[\"family_man_man_boy\",473],[\"man-man-girl\",474],[\"family_man_man_girl\",474],[\"man-man-girl-boy\",475],[\"family_man_man_girl_boy\",475],[\"man-man-boy-boy\",476],[\"family_man_man_boy_boy\",476],[\"man-man-girl-girl\",477],[\"family_man_man_girl_girl\",477],[\"woman-woman-boy\",478],[\"family_woman_woman_boy\",478],[\"woman-woman-girl\",479],[\"family_woman_woman_girl\",479],[\"woman-woman-girl-boy\",480],[\"family_woman_woman_girl_boy\",480],[\"woman-woman-boy-boy\",481],[\"family_woman_woman_boy_boy\",481],[\"woman-woman-girl-girl\",482],[\"family_woman_woman_girl_girl\",482],[\"man-boy\",483],[\"family_man_boy\",483],[\"man-boy-boy\",484],[\"family_man_boy_boy\",484],[\"man-girl\",485],[\"family_man_girl\",485],[\"man-girl-boy\",486],[\"family_man_girl_boy\",486],[\"man-girl-girl\",487],[\"family_man_girl_girl\",487],[\"woman-boy\",488],[\"family_woman_boy\",488],[\"woman-boy-boy\",489],[\"family_woman_boy_boy\",489],[\"woman-girl\",490],[\"family_woman_girl\",490],[\"woman-girl-boy\",491],[\"family_woman_girl_boy\",491],[\"woman-girl-girl\",492],[\"family_woman_girl_girl\",492],[\"speaking_head_in_silhouette\",493],[\"speaking_head\",493],[\"bust_in_silhouette\",494],[\"busts_in_silhouette\",495],[\"people_hugging\",496],[\"footprints\",497],[\"skin-tone-2\",498],[\"skin-tone-3\",499],[\"skin-tone-4\",500],[\"skin-tone-5\",501],[\"skin-tone-6\",502],[\"monkey_face\",503],[\"monkey\",504],[\"gorilla\",505],[\"orangutan\",506],[\"dog\",507],[\"dog2\",508],[\"guide_dog\",509],[\"service_dog\",510],[\"poodle\",511],[\"wolf\",512],[\"fox_face\",513],[\"raccoon\",514],[\"cat\",515],[\"cat2\",516],[\"black_cat\",517],[\"lion_face\",518],[\"lion\",518],[\"tiger\",519],[\"tiger2\",520],[\"leopard\",521],[\"horse\",522],[\"racehorse\",523],[\"unicorn_face\",524],[\"unicorn\",524],[\"zebra_face\",525],[\"deer\",526],[\"bison\",527],[\"cow\",528],[\"ox\",529],[\"water_buffalo\",530],[\"cow2\",531],[\"pig\",532],[\"pig2\",533],[\"boar\",534],[\"pig_nose\",535],[\"ram\",536],[\"sheep\",537],[\"goat\",538],[\"dromedary_camel\",539],[\"camel\",540],[\"llama\",541],[\"giraffe_face\",542],[\"elephant\",543],[\"mammoth\",544],[\"rhinoceros\",545],[\"hippopotamus\",546],[\"mouse\",547],[\"mouse2\",548],[\"rat\",549],[\"hamster\",550],[\"rabbit\",551],[\"rabbit2\",552],[\"chipmunk\",553],[\"beaver\",554],[\"hedgehog\",555],[\"bat\",556],[\"bear\",557],[\"polar_bear\",558],[\"koala\",559],[\"panda_face\",560],[\"sloth\",561],[\"otter\",562],[\"skunk\",563],[\"kangaroo\",564],[\"badger\",565],[\"feet\",566],[\"paw_prints\",566],[\"turkey\",567],[\"chicken\",568],[\"rooster\",569],[\"hatching_chick\",570],[\"baby_chick\",571],[\"hatched_chick\",572],[\"bird\",573],[\"penguin\",574],[\"dove_of_peace\",575],[\"dove\",575],[\"eagle\",576],[\"duck\",577],[\"swan\",578],[\"owl\",579],[\"dodo\",580],[\"feather\",581],[\"flamingo\",582],[\"peacock\",583],[\"parrot\",584],[\"frog\",585],[\"crocodile\",586],[\"turtle\",587],[\"lizard\",588],[\"snake\",589],[\"dragon_face\",590],[\"dragon\",591],[\"sauropod\",592],[\"t-rex\",593],[\"whale\",594],[\"whale2\",595],[\"dolphin\",596],[\"flipper\",596],[\"seal\",597],[\"fish\",598],[\"tropical_fish\",599],[\"blowfish\",600],[\"shark\",601],[\"octopus\",602],[\"shell\",603],[\"snail\",604],[\"butterfly\",605],[\"bug\",606],[\"ant\",607],[\"bee\",608],[\"honeybee\",608],[\"beetle\",609],[\"ladybug\",610],[\"lady_beetle\",610],[\"cricket\",611],[\"cockroach\",612],[\"spider\",613],[\"spider_web\",614],[\"scorpion\",615],[\"mosquito\",616],[\"fly\",617],[\"worm\",618],[\"microbe\",619],[\"bouquet\",620],[\"cherry_blossom\",621],[\"white_flower\",622],[\"rosette\",623],[\"rose\",624],[\"wilted_flower\",625],[\"hibiscus\",626],[\"sunflower\",627],[\"blossom\",628],[\"tulip\",629],[\"seedling\",630],[\"potted_plant\",631],[\"evergreen_tree\",632],[\"deciduous_tree\",633],[\"palm_tree\",634],[\"cactus\",635],[\"ear_of_rice\",636],[\"herb\",637],[\"shamrock\",638],[\"four_leaf_clover\",639],[\"maple_leaf\",640],[\"fallen_leaf\",641],[\"leaves\",642],[\"grapes\",643],[\"melon\",644],[\"watermelon\",645],[\"tangerine\",646],[\"mandarin\",646],[\"orange\",646],[\"lemon\",647],[\"banana\",648],[\"pineapple\",649],[\"mango\",650],[\"apple\",651],[\"green_apple\",652],[\"pear\",653],[\"peach\",654],[\"cherries\",655],[\"strawberry\",656],[\"blueberries\",657],[\"kiwifruit\",658],[\"kiwi_fruit\",658],[\"tomato\",659],[\"olive\",660],[\"coconut\",661],[\"avocado\",662],[\"eggplant\",663],[\"potato\",664],[\"carrot\",665],[\"corn\",666],[\"hot_pepper\",667],[\"bell_pepper\",668],[\"cucumber\",669],[\"leafy_green\",670],[\"broccoli\",671],[\"garlic\",672],[\"onion\",673],[\"mushroom\",674],[\"peanuts\",675],[\"chestnut\",676],[\"bread\",677],[\"croissant\",678],[\"baguette_bread\",679],[\"flatbread\",680],[\"pretzel\",681],[\"bagel\",682],[\"pancakes\",683],[\"waffle\",684],[\"cheese_wedge\",685],[\"cheese\",685],[\"meat_on_bone\",686],[\"poultry_leg\",687],[\"cut_of_meat\",688],[\"bacon\",689],[\"hamburger\",690],[\"fries\",691],[\"pizza\",692],[\"hotdog\",693],[\"sandwich\",694],[\"taco\",695],[\"burrito\",696],[\"tamale\",697],[\"stuffed_flatbread\",698],[\"falafel\",699],[\"egg\",700],[\"fried_egg\",701],[\"cooking\",701],[\"shallow_pan_of_food\",702],[\"stew\",703],[\"fondue\",704],[\"bowl_with_spoon\",705],[\"green_salad\",706],[\"popcorn\",707],[\"butter\",708],[\"salt\",709],[\"canned_food\",710],[\"bento\",711],[\"rice_cracker\",712],[\"rice_ball\",713],[\"rice\",714],[\"curry\",715],[\"ramen\",716],[\"spaghetti\",717],[\"sweet_potato\",718],[\"oden\",719],[\"sushi\",720],[\"fried_shrimp\",721],[\"fish_cake\",722],[\"moon_cake\",723],[\"dango\",724],[\"dumpling\",725],[\"fortune_cookie\",726],[\"takeout_box\",727],[\"crab\",728],[\"lobster\",729],[\"shrimp\",730],[\"squid\",731],[\"oyster\",732],[\"icecream\",733],[\"shaved_ice\",734],[\"ice_cream\",735],[\"doughnut\",736],[\"cookie\",737],[\"birthday\",738],[\"cake\",739],[\"cupcake\",740],[\"pie\",741],[\"chocolate_bar\",742],[\"candy\",743],[\"lollipop\",744],[\"custard\",745],[\"honey_pot\",746],[\"baby_bottle\",747],[\"glass_of_milk\",748],[\"milk_glass\",748],[\"coffee\",749],[\"teapot\",750],[\"tea\",751],[\"sake\",752],[\"champagne\",753],[\"wine_glass\",754],[\"cocktail\",755],[\"tropical_drink\",756],[\"beer\",757],[\"beers\",758],[\"clinking_glasses\",759],[\"tumbler_glass\",760],[\"cup_with_straw\",761],[\"bubble_tea\",762],[\"beverage_box\",763],[\"mate_drink\",764],[\"ice_cube\",765],[\"chopsticks\",766],[\"knife_fork_plate\",767],[\"plate_with_cutlery\",767],[\"fork_and_knife\",768],[\"spoon\",769],[\"hocho\",770],[\"knife\",770],[\"amphora\",771],[\"earth_africa\",772],[\"earth_americas\",773],[\"earth_asia\",774],[\"globe_with_meridians\",775],[\"world_map\",776],[\"japan\",777],[\"compass\",778],[\"snow_capped_mountain\",779],[\"mountain_snow\",779],[\"mountain\",780],[\"volcano\",781],[\"mount_fuji\",782],[\"camping\",783],[\"beach_with_umbrella\",784],[\"beach_umbrella\",784],[\"desert\",785],[\"desert_island\",786],[\"national_park\",787],[\"stadium\",788],[\"classical_building\",789],[\"building_construction\",790],[\"bricks\",791],[\"rock\",792],[\"wood\",793],[\"hut\",794],[\"house_buildings\",795],[\"houses\",795],[\"derelict_house_building\",796],[\"derelict_house\",796],[\"house\",797],[\"house_with_garden\",798],[\"office\",799],[\"post_office\",800],[\"european_post_office\",801],[\"hospital\",802],[\"bank\",803],[\"hotel\",804],[\"love_hotel\",805],[\"convenience_store\",806],[\"school\",807],[\"department_store\",808],[\"factory\",809],[\"japanese_castle\",810],[\"european_castle\",811],[\"wedding\",812],[\"tokyo_tower\",813],[\"statue_of_liberty\",814],[\"church\",815],[\"mosque\",816],[\"hindu_temple\",817],[\"synagogue\",818],[\"shinto_shrine\",819],[\"kaaba\",820],[\"fountain\",821],[\"tent\",822],[\"foggy\",823],[\"night_with_stars\",824],[\"cityscape\",825],[\"sunrise_over_mountains\",826],[\"sunrise\",827],[\"city_sunset\",828],[\"city_sunrise\",829],[\"bridge_at_night\",830],[\"hotsprings\",831],[\"carousel_horse\",832],[\"ferris_wheel\",833],[\"roller_coaster\",834],[\"barber\",835],[\"circus_tent\",836],[\"steam_locomotive\",837],[\"railway_car\",838],[\"bullettrain_side\",839],[\"bullettrain_front\",840],[\"train2\",841],[\"metro\",842],[\"light_rail\",843],[\"station\",844],[\"tram\",845],[\"monorail\",846],[\"mountain_railway\",847],[\"train\",848],[\"bus\",849],[\"oncoming_bus\",850],[\"trolleybus\",851],[\"minibus\",852],[\"ambulance\",853],[\"fire_engine\",854],[\"police_car\",855],[\"oncoming_police_car\",856],[\"taxi\",857],[\"oncoming_taxi\",858],[\"car\",859],[\"red_car\",859],[\"oncoming_automobile\",860],[\"blue_car\",861],[\"pickup_truck\",862],[\"truck\",863],[\"articulated_lorry\",864],[\"tractor\",865],[\"racing_car\",866],[\"racing_motorcycle\",867],[\"motorcycle\",867],[\"motor_scooter\",868],[\"manual_wheelchair\",869],[\"motorized_wheelchair\",870],[\"auto_rickshaw\",871],[\"bike\",872],[\"scooter\",873],[\"kick_scooter\",873],[\"skateboard\",874],[\"roller_skate\",875],[\"busstop\",876],[\"motorway\",877],[\"railway_track\",878],[\"oil_drum\",879],[\"fuelpump\",880],[\"rotating_light\",881],[\"traffic_light\",882],[\"vertical_traffic_light\",883],[\"octagonal_sign\",884],[\"stop_sign\",884],[\"construction\",885],[\"anchor\",886],[\"boat\",887],[\"sailboat\",887],[\"canoe\",888],[\"speedboat\",889],[\"passenger_ship\",890],[\"ferry\",891],[\"motor_boat\",892],[\"ship\",893],[\"airplane\",894],[\"small_airplane\",895],[\"airplane_departure\",896],[\"flight_departure\",896],[\"airplane_arriving\",897],[\"flight_arrival\",897],[\"parachute\",898],[\"seat\",899],[\"helicopter\",900],[\"suspension_railway\",901],[\"mountain_cableway\",902],[\"aerial_tramway\",903],[\"satellite\",904],[\"artificial_satellite\",904],[\"rocket\",905],[\"flying_saucer\",906],[\"bellhop_bell\",907],[\"luggage\",908],[\"hourglass\",909],[\"hourglass_flowing_sand\",910],[\"watch\",911],[\"alarm_clock\",912],[\"stopwatch\",913],[\"timer_clock\",914],[\"mantelpiece_clock\",915],[\"clock12\",916],[\"clock1230\",917],[\"clock1\",918],[\"clock130\",919],[\"clock2\",920],[\"clock230\",921],[\"clock3\",922],[\"clock330\",923],[\"clock4\",924],[\"clock430\",925],[\"clock5\",926],[\"clock530\",927],[\"clock6\",928],[\"clock630\",929],[\"clock7\",930],[\"clock730\",931],[\"clock8\",932],[\"clock830\",933],[\"clock9\",934],[\"clock930\",935],[\"clock10\",936],[\"clock1030\",937],[\"clock11\",938],[\"clock1130\",939],[\"new_moon\",940],[\"waxing_crescent_moon\",941],[\"first_quarter_moon\",942],[\"moon\",943],[\"waxing_gibbous_moon\",943],[\"full_moon\",944],[\"waning_gibbous_moon\",945],[\"last_quarter_moon\",946],[\"waning_crescent_moon\",947],[\"crescent_moon\",948],[\"new_moon_with_face\",949],[\"first_quarter_moon_with_face\",950],[\"last_quarter_moon_with_face\",951],[\"thermometer\",952],[\"sunny\",953],[\"full_moon_with_face\",954],[\"sun_with_face\",955],[\"ringed_planet\",956],[\"star\",957],[\"star2\",958],[\"stars\",959],[\"milky_way\",960],[\"cloud\",961],[\"partly_sunny\",962],[\"thunder_cloud_and_rain\",963],[\"cloud_with_lightning_and_rain\",963],[\"mostly_sunny\",964],[\"sun_small_cloud\",964],[\"sun_behind_small_cloud\",964],[\"barely_sunny\",965],[\"sun_behind_cloud\",965],[\"sun_behind_large_cloud\",965],[\"partly_sunny_rain\",966],[\"sun_behind_rain_cloud\",966],[\"rain_cloud\",967],[\"cloud_with_rain\",967],[\"snow_cloud\",968],[\"cloud_with_snow\",968],[\"lightning\",969],[\"lightning_cloud\",969],[\"cloud_with_lightning\",969],[\"tornado\",970],[\"tornado_cloud\",970],[\"fog\",971],[\"wind_blowing_face\",972],[\"wind_face\",972],[\"cyclone\",973],[\"rainbow\",974],[\"closed_umbrella\",975],[\"umbrella\",976],[\"open_umbrella\",976],[\"umbrella_with_rain_drops\",977],[\"umbrella_on_ground\",978],[\"parasol_on_ground\",978],[\"zap\",979],[\"snowflake\",980],[\"snowman\",981],[\"snowman_with_snow\",981],[\"snowman_without_snow\",982],[\"comet\",983],[\"fire\",984],[\"droplet\",985],[\"ocean\",986],[\"jack_o_lantern\",987],[\"christmas_tree\",988],[\"fireworks\",989],[\"sparkler\",990],[\"firecracker\",991],[\"sparkles\",992],[\"balloon\",993],[\"tada\",994],[\"confetti_ball\",995],[\"tanabata_tree\",996],[\"bamboo\",997],[\"dolls\",998],[\"flags\",999],[\"wind_chime\",1000],[\"rice_scene\",1001],[\"red_envelope\",1002],[\"ribbon\",1003],[\"gift\",1004],[\"reminder_ribbon\",1005],[\"admission_tickets\",1006],[\"tickets\",1006],[\"ticket\",1007],[\"medal\",1008],[\"medal_military\",1008],[\"trophy\",1009],[\"sports_medal\",1010],[\"medal_sports\",1010],[\"first_place_medal\",1011],[\"1st_place_medal\",1011],[\"second_place_medal\",1012],[\"2nd_place_medal\",1012],[\"third_place_medal\",1013],[\"3rd_place_medal\",1013],[\"soccer\",1014],[\"baseball\",1015],[\"softball\",1016],[\"basketball\",1017],[\"volleyball\",1018],[\"football\",1019],[\"rugby_football\",1020],[\"tennis\",1021],[\"flying_disc\",1022],[\"bowling\",1023],[\"cricket_bat_and_ball\",1024],[\"field_hockey_stick_and_ball\",1025],[\"field_hockey\",1025],[\"ice_hockey_stick_and_puck\",1026],[\"ice_hockey\",1026],[\"lacrosse\",1027],[\"table_tennis_paddle_and_ball\",1028],[\"ping_pong\",1028],[\"badminton_racquet_and_shuttlecock\",1029],[\"badminton\",1029],[\"boxing_glove\",1030],[\"martial_arts_uniform\",1031],[\"goal_net\",1032],[\"golf\",1033],[\"ice_skate\",1034],[\"fishing_pole_and_fish\",1035],[\"diving_mask\",1036],[\"running_shirt_with_sash\",1037],[\"ski\",1038],[\"sled\",1039],[\"curling_stone\",1040],[\"dart\",1041],[\"yo-yo\",1042],[\"kite\",1043],[\"8ball\",1044],[\"crystal_ball\",1045],[\"magic_wand\",1046],[\"nazar_amulet\",1047],[\"video_game\",1048],[\"joystick\",1049],[\"slot_machine\",1050],[\"game_die\",1051],[\"jigsaw\",1052],[\"teddy_bear\",1053],[\"pinata\",1054],[\"nesting_dolls\",1055],[\"spades\",1056],[\"hearts\",1057],[\"diamonds\",1058],[\"clubs\",1059],[\"chess_pawn\",1060],[\"black_joker\",1061],[\"mahjong\",1062],[\"flower_playing_cards\",1063],[\"performing_arts\",1064],[\"frame_with_picture\",1065],[\"framed_picture\",1065],[\"art\",1066],[\"thread\",1067],[\"sewing_needle\",1068],[\"yarn\",1069],[\"knot\",1070],[\"eyeglasses\",1071],[\"dark_sunglasses\",1072],[\"goggles\",1073],[\"lab_coat\",1074],[\"safety_vest\",1075],[\"necktie\",1076],[\"shirt\",1077],[\"tshirt\",1077],[\"jeans\",1078],[\"scarf\",1079],[\"gloves\",1080],[\"coat\",1081],[\"socks\",1082],[\"dress\",1083],[\"kimono\",1084],[\"sari\",1085],[\"one-piece_swimsuit\",1086],[\"briefs\",1087],[\"shorts\",1088],[\"bikini\",1089],[\"womans_clothes\",1090],[\"purse\",1091],[\"handbag\",1092],[\"pouch\",1093],[\"shopping_bags\",1094],[\"shopping\",1094],[\"school_satchel\",1095],[\"thong_sandal\",1096],[\"mans_shoe\",1097],[\"shoe\",1097],[\"athletic_shoe\",1098],[\"hiking_boot\",1099],[\"womans_flat_shoe\",1100],[\"high_heel\",1101],[\"sandal\",1102],[\"ballet_shoes\",1103],[\"boot\",1104],[\"crown\",1105],[\"womans_hat\",1106],[\"tophat\",1107],[\"mortar_board\",1108],[\"billed_cap\",1109],[\"military_helmet\",1110],[\"helmet_with_white_cross\",1111],[\"rescue_worker_helmet\",1111],[\"prayer_beads\",1112],[\"lipstick\",1113],[\"ring\",1114],[\"gem\",1115],[\"mute\",1116],[\"speaker\",1117],[\"sound\",1118],[\"loud_sound\",1119],[\"loudspeaker\",1120],[\"mega\",1121],[\"postal_horn\",1122],[\"bell\",1123],[\"no_bell\",1124],[\"musical_score\",1125],[\"musical_note\",1126],[\"notes\",1127],[\"studio_microphone\",1128],[\"level_slider\",1129],[\"control_knobs\",1130],[\"microphone\",1131],[\"headphones\",1132],[\"radio\",1133],[\"saxophone\",1134],[\"accordion\",1135],[\"guitar\",1136],[\"musical_keyboard\",1137],[\"trumpet\",1138],[\"violin\",1139],[\"banjo\",1140],[\"drum_with_drumsticks\",1141],[\"drum\",1141],[\"long_drum\",1142],[\"iphone\",1143],[\"calling\",1144],[\"phone\",1145],[\"telephone\",1145],[\"telephone_receiver\",1146],[\"pager\",1147],[\"fax\",1148],[\"battery\",1149],[\"electric_plug\",1150],[\"computer\",1151],[\"desktop_computer\",1152],[\"printer\",1153],[\"keyboard\",1154],[\"three_button_mouse\",1155],[\"computer_mouse\",1155],[\"trackball\",1156],[\"minidisc\",1157],[\"floppy_disk\",1158],[\"cd\",1159],[\"dvd\",1160],[\"abacus\",1161],[\"movie_camera\",1162],[\"film_frames\",1163],[\"film_strip\",1163],[\"film_projector\",1164],[\"clapper\",1165],[\"tv\",1166],[\"camera\",1167],[\"camera_with_flash\",1168],[\"camera_flash\",1168],[\"video_camera\",1169],[\"vhs\",1170],[\"mag\",1171],[\"mag_right\",1172],[\"candle\",1173],[\"bulb\",1174],[\"flashlight\",1175],[\"izakaya_lantern\",1176],[\"lantern\",1176],[\"diya_lamp\",1177],[\"notebook_with_decorative_cover\",1178],[\"closed_book\",1179],[\"book\",1180],[\"open_book\",1180],[\"green_book\",1181],[\"blue_book\",1182],[\"orange_book\",1183],[\"books\",1184],[\"notebook\",1185],[\"ledger\",1186],[\"page_with_curl\",1187],[\"scroll\",1188],[\"page_facing_up\",1189],[\"newspaper\",1190],[\"rolled_up_newspaper\",1191],[\"newspaper_roll\",1191],[\"bookmark_tabs\",1192],[\"bookmark\",1193],[\"label\",1194],[\"moneybag\",1195],[\"coin\",1196],[\"yen\",1197],[\"dollar\",1198],[\"euro\",1199],[\"pound\",1200],[\"money_with_wings\",1201],[\"credit_card\",1202],[\"receipt\",1203],[\"chart\",1204],[\"email\",1205],[\"envelope\",1205],[\"e-mail\",1206],[\"incoming_envelope\",1207],[\"envelope_with_arrow\",1208],[\"outbox_tray\",1209],[\"inbox_tray\",1210],[\"package\",1211],[\"mailbox\",1212],[\"mailbox_closed\",1213],[\"mailbox_with_mail\",1214],[\"mailbox_with_no_mail\",1215],[\"postbox\",1216],[\"ballot_box_with_ballot\",1217],[\"ballot_box\",1217],[\"pencil2\",1218],[\"black_nib\",1219],[\"lower_left_fountain_pen\",1220],[\"fountain_pen\",1220],[\"lower_left_ballpoint_pen\",1221],[\"pen\",1221],[\"lower_left_paintbrush\",1222],[\"paintbrush\",1222],[\"lower_left_crayon\",1223],[\"crayon\",1223],[\"memo\",1224],[\"pencil\",1224],[\"briefcase\",1225],[\"file_folder\",1226],[\"open_file_folder\",1227],[\"card_index_dividers\",1228],[\"date\",1229],[\"calendar\",1230],[\"spiral_note_pad\",1231],[\"spiral_notepad\",1231],[\"spiral_calendar_pad\",1232],[\"spiral_calendar\",1232],[\"card_index\",1233],[\"chart_with_upwards_trend\",1234],[\"chart_with_downwards_trend\",1235],[\"bar_chart\",1236],[\"clipboard\",1237],[\"pushpin\",1238],[\"round_pushpin\",1239],[\"paperclip\",1240],[\"linked_paperclips\",1241],[\"paperclips\",1241],[\"straight_ruler\",1242],[\"triangular_ruler\",1243],[\"scissors\",1244],[\"card_file_box\",1245],[\"file_cabinet\",1246],[\"wastebasket\",1247],[\"lock\",1248],[\"unlock\",1249],[\"lock_with_ink_pen\",1250],[\"closed_lock_with_key\",1251],[\"key\",1252],[\"old_key\",1253],[\"hammer\",1254],[\"axe\",1255],[\"pick\",1256],[\"hammer_and_pick\",1257],[\"hammer_and_wrench\",1258],[\"dagger_knife\",1259],[\"dagger\",1259],[\"crossed_swords\",1260],[\"gun\",1261],[\"boomerang\",1262],[\"bow_and_arrow\",1263],[\"shield\",1264],[\"carpentry_saw\",1265],[\"wrench\",1266],[\"screwdriver\",1267],[\"nut_and_bolt\",1268],[\"gear\",1269],[\"compression\",1270],[\"clamp\",1270],[\"scales\",1271],[\"balance_scale\",1271],[\"probing_cane\",1272],[\"link\",1273],[\"chains\",1274],[\"hook\",1275],[\"toolbox\",1276],[\"magnet\",1277],[\"ladder\",1278],[\"alembic\",1279],[\"test_tube\",1280],[\"petri_dish\",1281],[\"dna\",1282],[\"microscope\",1283],[\"telescope\",1284],[\"satellite_antenna\",1285],[\"syringe\",1286],[\"drop_of_blood\",1287],[\"pill\",1288],[\"adhesive_bandage\",1289],[\"stethoscope\",1290],[\"door\",1291],[\"elevator\",1292],[\"mirror\",1293],[\"window\",1294],[\"bed\",1295],[\"couch_and_lamp\",1296],[\"chair\",1297],[\"toilet\",1298],[\"plunger\",1299],[\"shower\",1300],[\"bathtub\",1301],[\"mouse_trap\",1302],[\"razor\",1303],[\"lotion_bottle\",1304],[\"safety_pin\",1305],[\"broom\",1306],[\"basket\",1307],[\"roll_of_paper\",1308],[\"bucket\",1309],[\"soap\",1310],[\"toothbrush\",1311],[\"sponge\",1312],[\"fire_extinguisher\",1313],[\"shopping_trolley\",1314],[\"shopping_cart\",1314],[\"smoking\",1315],[\"coffin\",1316],[\"headstone\",1317],[\"funeral_urn\",1318],[\"moyai\",1319],[\"placard\",1320],[\"atm\",1321],[\"put_litter_in_its_place\",1322],[\"potable_water\",1323],[\"wheelchair\",1324],[\"mens\",1325],[\"womens\",1326],[\"restroom\",1327],[\"baby_symbol\",1328],[\"wc\",1329],[\"passport_control\",1330],[\"customs\",1331],[\"baggage_claim\",1332],[\"left_luggage\",1333],[\"warning\",1334],[\"children_crossing\",1335],[\"no_entry\",1336],[\"no_entry_sign\",1337],[\"no_bicycles\",1338],[\"no_smoking\",1339],[\"do_not_litter\",1340],[\"non-potable_water\",1341],[\"no_pedestrians\",1342],[\"no_mobile_phones\",1343],[\"underage\",1344],[\"radioactive_sign\",1345],[\"radioactive\",1345],[\"biohazard_sign\",1346],[\"biohazard\",1346],[\"arrow_up\",1347],[\"arrow_upper_right\",1348],[\"arrow_right\",1349],[\"arrow_lower_right\",1350],[\"arrow_down\",1351],[\"arrow_lower_left\",1352],[\"arrow_left\",1353],[\"arrow_upper_left\",1354],[\"arrow_up_down\",1355],[\"left_right_arrow\",1356],[\"leftwards_arrow_with_hook\",1357],[\"arrow_right_hook\",1358],[\"arrow_heading_up\",1359],[\"arrow_heading_down\",1360],[\"arrows_clockwise\",1361],[\"arrows_counterclockwise\",1362],[\"back\",1363],[\"end\",1364],[\"on\",1365],[\"soon\",1366],[\"top\",1367],[\"place_of_worship\",1368],[\"atom_symbol\",1369],[\"om_symbol\",1370],[\"om\",1370],[\"star_of_david\",1371],[\"wheel_of_dharma\",1372],[\"yin_yang\",1373],[\"latin_cross\",1374],[\"orthodox_cross\",1375],[\"star_and_crescent\",1376],[\"peace_symbol\",1377],[\"menorah_with_nine_branches\",1378],[\"menorah\",1378],[\"six_pointed_star\",1379],[\"aries\",1380],[\"taurus\",1381],[\"gemini\",1382],[\"cancer\",1383],[\"leo\",1384],[\"virgo\",1385],[\"libra\",1386],[\"scorpius\",1387],[\"sagittarius\",1388],[\"capricorn\",1389],[\"aquarius\",1390],[\"pisces\",1391],[\"ophiuchus\",1392],[\"twisted_rightwards_arrows\",1393],[\"repeat\",1394],[\"repeat_one\",1395],[\"arrow_forward\",1396],[\"fast_forward\",1397],[\"black_right_pointing_double_triangle_with_vertical_bar\",1398],[\"next_track_button\",1398],[\"black_right_pointing_triangle_with_double_vertical_bar\",1399],[\"play_or_pause_button\",1399],[\"arrow_backward\",1400],[\"rewind\",1401],[\"black_left_pointing_double_triangle_with_vertical_bar\",1402],[\"previous_track_button\",1402],[\"arrow_up_small\",1403],[\"arrow_double_up\",1404],[\"arrow_down_small\",1405],[\"arrow_double_down\",1406],[\"double_vertical_bar\",1407],[\"pause_button\",1407],[\"black_square_for_stop\",1408],[\"stop_button\",1408],[\"black_circle_for_record\",1409],[\"record_button\",1409],[\"eject\",1410],[\"cinema\",1411],[\"low_brightness\",1412],[\"high_brightness\",1413],[\"signal_strength\",1414],[\"vibration_mode\",1415],[\"mobile_phone_off\",1416],[\"female_sign\",1417],[\"male_sign\",1418],[\"transgender_symbol\",1419],[\"heavy_multiplication_x\",1420],[\"heavy_plus_sign\",1421],[\"heavy_minus_sign\",1422],[\"heavy_division_sign\",1423],[\"infinity\",1424],[\"bangbang\",1425],[\"interrobang\",1426],[\"question\",1427],[\"grey_question\",1428],[\"grey_exclamation\",1429],[\"exclamation\",1430],[\"heavy_exclamation_mark\",1430],[\"wavy_dash\",1431],[\"currency_exchange\",1432],[\"heavy_dollar_sign\",1433],[\"medical_symbol\",1434],[\"staff_of_aesculapius\",1434],[\"recycle\",1435],[\"fleur_de_lis\",1436],[\"trident\",1437],[\"name_badge\",1438],[\"beginner\",1439],[\"o\",1440],[\"white_check_mark\",1441],[\"ballot_box_with_check\",1442],[\"heavy_check_mark\",1443],[\"x\",1444],[\"negative_squared_cross_mark\",1445],[\"curly_loop\",1446],[\"loop\",1447],[\"part_alternation_mark\",1448],[\"eight_spoked_asterisk\",1449],[\"eight_pointed_black_star\",1450],[\"sparkle\",1451],[\"copyright\",1452],[\"registered\",1453],[\"tm\",1454],[\"hash\",1455],[\"keycap_star\",1456],[\"asterisk\",1456],[\"zero\",1457],[\"one\",1458],[\"two\",1459],[\"three\",1460],[\"four\",1461],[\"five\",1462],[\"six\",1463],[\"seven\",1464],[\"eight\",1465],[\"nine\",1466],[\"keycap_ten\",1467],[\"capital_abcd\",1468],[\"abcd\",1469],[\"1234\",1470],[\"symbols\",1471],[\"abc\",1472],[\"a\",1473],[\"ab\",1474],[\"b\",1475],[\"cl\",1476],[\"cool\",1477],[\"free\",1478],[\"information_source\",1479],[\"id\",1480],[\"m\",1481],[\"new\",1482],[\"ng\",1483],[\"o2\",1484],[\"ok\",1485],[\"parking\",1486],[\"sos\",1487],[\"up\",1488],[\"vs\",1489],[\"koko\",1490],[\"sa\",1491],[\"u6708\",1492],[\"u6709\",1493],[\"u6307\",1494],[\"ideograph_advantage\",1495],[\"u5272\",1496],[\"u7121\",1497],[\"u7981\",1498],[\"accept\",1499],[\"u7533\",1500],[\"u5408\",1501],[\"u7a7a\",1502],[\"congratulations\",1503],[\"secret\",1504],[\"u55b6\",1505],[\"u6e80\",1506],[\"red_circle\",1507],[\"large_orange_circle\",1508],[\"large_yellow_circle\",1509],[\"large_green_circle\",1510],[\"large_blue_circle\",1511],[\"large_purple_circle\",1512],[\"large_brown_circle\",1513],[\"black_circle\",1514],[\"white_circle\",1515],[\"large_red_square\",1516],[\"large_orange_square\",1517],[\"large_yellow_square\",1518],[\"large_green_square\",1519],[\"large_blue_square\",1520],[\"large_purple_square\",1521],[\"large_brown_square\",1522],[\"black_large_square\",1523],[\"white_large_square\",1524],[\"black_medium_square\",1525],[\"white_medium_square\",1526],[\"black_medium_small_square\",1527],[\"white_medium_small_square\",1528],[\"black_small_square\",1529],[\"white_small_square\",1530],[\"large_orange_diamond\",1531],[\"large_blue_diamond\",1532],[\"small_orange_diamond\",1533],[\"small_blue_diamond\",1534],[\"small_red_triangle\",1535],[\"small_red_triangle_down\",1536],[\"diamond_shape_with_a_dot_inside\",1537],[\"radio_button\",1538],[\"white_square_button\",1539],[\"black_square_button\",1540],[\"checkered_flag\",1541],[\"triangular_flag_on_post\",1542],[\"crossed_flags\",1543],[\"waving_black_flag\",1544],[\"black_flag\",1544],[\"waving_white_flag\",1545],[\"white_flag\",1545],[\"rainbow-flag\",1546],[\"rainbow_flag\",1546],[\"transgender_flag\",1547],[\"pirate_flag\",1548],[\"flag-ac\",1549],[\"flag-ad\",1550],[\"andorra\",1550],[\"flag-ae\",1551],[\"united_arab_emirates\",1551],[\"flag-af\",1552],[\"afghanistan\",1552],[\"flag-ag\",1553],[\"antigua_barbuda\",1553],[\"flag-ai\",1554],[\"anguilla\",1554],[\"flag-al\",1555],[\"albania\",1555],[\"flag-am\",1556],[\"armenia\",1556],[\"flag-ao\",1557],[\"angola\",1557],[\"flag-aq\",1558],[\"antarctica\",1558],[\"flag-ar\",1559],[\"argentina\",1559],[\"flag-as\",1560],[\"american_samoa\",1560],[\"flag-at\",1561],[\"austria\",1561],[\"flag-au\",1562],[\"australia\",1562],[\"flag-aw\",1563],[\"aruba\",1563],[\"flag-ax\",1564],[\"aland_islands\",1564],[\"flag-az\",1565],[\"azerbaijan\",1565],[\"flag-ba\",1566],[\"bosnia_herzegovina\",1566],[\"flag-bb\",1567],[\"barbados\",1567],[\"flag-bd\",1568],[\"bangladesh\",1568],[\"flag-be\",1569],[\"belgium\",1569],[\"flag-bf\",1570],[\"burkina_faso\",1570],[\"flag-bg\",1571],[\"bulgaria\",1571],[\"flag-bh\",1572],[\"bahrain\",1572],[\"flag-bi\",1573],[\"burundi\",1573],[\"flag-bj\",1574],[\"benin\",1574],[\"flag-bl\",1575],[\"st_barthelemy\",1575],[\"flag-bm\",1576],[\"bermuda\",1576],[\"flag-bn\",1577],[\"brunei\",1577],[\"flag-bo\",1578],[\"bolivia\",1578],[\"flag-bq\",1579],[\"caribbean_netherlands\",1579],[\"flag-br\",1580],[\"brazil\",1580],[\"flag-bs\",1581],[\"bahamas\",1581],[\"flag-bt\",1582],[\"bhutan\",1582],[\"flag-bv\",1583],[\"flag-bw\",1584],[\"botswana\",1584],[\"flag-by\",1585],[\"belarus\",1585],[\"flag-bz\",1586],[\"belize\",1586],[\"flag-ca\",1587],[\"ca\",1587],[\"canada\",1587],[\"flag-cc\",1588],[\"cocos_islands\",1588],[\"flag-cd\",1589],[\"congo_kinshasa\",1589],[\"flag-cf\",1590],[\"central_african_republic\",1590],[\"flag-cg\",1591],[\"congo_brazzaville\",1591],[\"flag-ch\",1592],[\"switzerland\",1592],[\"flag-ci\",1593],[\"cote_divoire\",1593],[\"flag-ck\",1594],[\"cook_islands\",1594],[\"flag-cl\",1595],[\"chile\",1595],[\"flag-cm\",1596],[\"cameroon\",1596],[\"cn\",1597],[\"flag-cn\",1597],[\"flag-co\",1598],[\"colombia\",1598],[\"flag-cp\",1599],[\"flag-cr\",1600],[\"costa_rica\",1600],[\"flag-cu\",1601],[\"cuba\",1601],[\"flag-cv\",1602],[\"cape_verde\",1602],[\"flag-cw\",1603],[\"curacao\",1603],[\"flag-cx\",1604],[\"christmas_island\",1604],[\"flag-cy\",1605],[\"cyprus\",1605],[\"flag-cz\",1606],[\"czech_republic\",1606],[\"de\",1607],[\"flag-de\",1607],[\"flag-dg\",1608],[\"flag-dj\",1609],[\"djibouti\",1609],[\"flag-dk\",1610],[\"denmark\",1610],[\"flag-dm\",1611],[\"dominica\",1611],[\"flag-do\",1612],[\"dominican_republic\",1612],[\"flag-dz\",1613],[\"algeria\",1613],[\"flag-ea\",1614],[\"flag-ec\",1615],[\"ecuador\",1615],[\"flag-ee\",1616],[\"estonia\",1616],[\"flag-eg\",1617],[\"egypt\",1617],[\"flag-eh\",1618],[\"western_sahara\",1618],[\"flag-er\",1619],[\"eritrea\",1619],[\"es\",1620],[\"flag-es\",1620],[\"flag-et\",1621],[\"ethiopia\",1621],[\"flag-eu\",1622],[\"eu\",1622],[\"european_union\",1622],[\"flag-fi\",1623],[\"finland\",1623],[\"flag-fj\",1624],[\"fiji\",1624],[\"flag-fk\",1625],[\"falkland_islands\",1625],[\"flag-fm\",1626],[\"micronesia\",1626],[\"flag-fo\",1627],[\"faroe_islands\",1627],[\"fr\",1628],[\"flag-fr\",1628],[\"flag-ga\",1629],[\"gabon\",1629],[\"gb\",1630],[\"uk\",1630],[\"flag-gb\",1630],[\"flag-gd\",1631],[\"grenada\",1631],[\"flag-ge\",1632],[\"georgia\",1632],[\"flag-gf\",1633],[\"french_guiana\",1633],[\"flag-gg\",1634],[\"guernsey\",1634],[\"flag-gh\",1635],[\"ghana\",1635],[\"flag-gi\",1636],[\"gibraltar\",1636],[\"flag-gl\",1637],[\"greenland\",1637],[\"flag-gm\",1638],[\"gambia\",1638],[\"flag-gn\",1639],[\"guinea\",1639],[\"flag-gp\",1640],[\"guadeloupe\",1640],[\"flag-gq\",1641],[\"equatorial_guinea\",1641],[\"flag-gr\",1642],[\"greece\",1642],[\"flag-gs\",1643],[\"south_georgia_south_sandwich_islands\",1643],[\"flag-gt\",1644],[\"guatemala\",1644],[\"flag-gu\",1645],[\"guam\",1645],[\"flag-gw\",1646],[\"guinea_bissau\",1646],[\"flag-gy\",1647],[\"guyana\",1647],[\"flag-hk\",1648],[\"hong_kong\",1648],[\"flag-hm\",1649],[\"flag-hn\",1650],[\"honduras\",1650],[\"flag-hr\",1651],[\"croatia\",1651],[\"flag-ht\",1652],[\"haiti\",1652],[\"flag-hu\",1653],[\"hungary\",1653],[\"flag-ic\",1654],[\"canary_islands\",1654],[\"flag-id\",1655],[\"indonesia\",1655],[\"flag-ie\",1656],[\"ireland\",1656],[\"flag-il\",1657],[\"israel\",1657],[\"flag-im\",1658],[\"isle_of_man\",1658],[\"flag-in\",1659],[\"india\",1659],[\"flag-io\",1660],[\"british_indian_ocean_territory\",1660],[\"flag-iq\",1661],[\"iraq\",1661],[\"flag-ir\",1662],[\"iran\",1662],[\"flag-is\",1663],[\"iceland\",1663],[\"it\",1664],[\"flag-it\",1664],[\"flag-je\",1665],[\"jersey\",1665],[\"flag-jm\",1666],[\"jamaica\",1666],[\"flag-jo\",1667],[\"jordan\",1667],[\"jp\",1668],[\"flag-jp\",1668],[\"flag-ke\",1669],[\"kenya\",1669],[\"flag-kg\",1670],[\"kyrgyzstan\",1670],[\"flag-kh\",1671],[\"cambodia\",1671],[\"flag-ki\",1672],[\"kiribati\",1672],[\"flag-km\",1673],[\"comoros\",1673],[\"flag-kn\",1674],[\"st_kitts_nevis\",1674],[\"flag-kp\",1675],[\"north_korea\",1675],[\"kr\",1676],[\"flag-kr\",1676],[\"flag-kw\",1677],[\"kuwait\",1677],[\"flag-ky\",1678],[\"cayman_islands\",1678],[\"flag-kz\",1679],[\"kazakhstan\",1679],[\"flag-la\",1680],[\"laos\",1680],[\"flag-lb\",1681],[\"lebanon\",1681],[\"flag-lc\",1682],[\"st_lucia\",1682],[\"flag-li\",1683],[\"liechtenstein\",1683],[\"flag-lk\",1684],[\"sri_lanka\",1684],[\"flag-lr\",1685],[\"liberia\",1685],[\"flag-ls\",1686],[\"lesotho\",1686],[\"flag-lt\",1687],[\"lithuania\",1687],[\"flag-lu\",1688],[\"luxembourg\",1688],[\"flag-lv\",1689],[\"latvia\",1689],[\"flag-ly\",1690],[\"libya\",1690],[\"flag-ma\",1691],[\"morocco\",1691],[\"flag-mc\",1692],[\"monaco\",1692],[\"flag-md\",1693],[\"moldova\",1693],[\"flag-me\",1694],[\"montenegro\",1694],[\"flag-mf\",1695],[\"flag-mg\",1696],[\"madagascar\",1696],[\"flag-mh\",1697],[\"marshall_islands\",1697],[\"flag-mk\",1698],[\"macedonia\",1698],[\"flag-ml\",1699],[\"mali\",1699],[\"flag-mm\",1700],[\"myanmar\",1700],[\"flag-mn\",1701],[\"mongolia\",1701],[\"flag-mo\",1702],[\"macau\",1702],[\"flag-mp\",1703],[\"northern_mariana_islands\",1703],[\"flag-mq\",1704],[\"martinique\",1704],[\"flag-mr\",1705],[\"mauritania\",1705],[\"flag-ms\",1706],[\"montserrat\",1706],[\"flag-mt\",1707],[\"malta\",1707],[\"flag-mu\",1708],[\"mauritius\",1708],[\"flag-mv\",1709],[\"maldives\",1709],[\"flag-mw\",1710],[\"malawi\",1710],[\"flag-mx\",1711],[\"mexico\",1711],[\"flag-my\",1712],[\"malaysia\",1712],[\"flag-mz\",1713],[\"mozambique\",1713],[\"flag-na\",1714],[\"namibia\",1714],[\"flag-nc\",1715],[\"new_caledonia\",1715],[\"flag-ne\",1716],[\"niger\",1716],[\"flag-nf\",1717],[\"norfolk_island\",1717],[\"flag-ng\",1718],[\"nigeria\",1718],[\"flag-ni\",1719],[\"nicaragua\",1719],[\"flag-nl\",1720],[\"netherlands\",1720],[\"flag-no\",1721],[\"norway\",1721],[\"flag-np\",1722],[\"nepal\",1722],[\"flag-nr\",1723],[\"nauru\",1723],[\"flag-nu\",1724],[\"niue\",1724],[\"flag-nz\",1725],[\"new_zealand\",1725],[\"flag-om\",1726],[\"oman\",1726],[\"flag-pa\",1727],[\"panama\",1727],[\"flag-pe\",1728],[\"peru\",1728],[\"flag-pf\",1729],[\"french_polynesia\",1729],[\"flag-pg\",1730],[\"papua_new_guinea\",1730],[\"flag-ph\",1731],[\"philippines\",1731],[\"flag-pk\",1732],[\"pakistan\",1732],[\"pk\",1732],[\"flag-pl\",1733],[\"poland\",1733],[\"flag-pm\",1734],[\"st_pierre_miquelon\",1734],[\"flag-pn\",1735],[\"pitcairn_islands\",1735],[\"flag-pr\",1736],[\"puerto_rico\",1736],[\"flag-ps\",1737],[\"palestinian_territories\",1737],[\"flag-pt\",1738],[\"portugal\",1738],[\"flag-pw\",1739],[\"palau\",1739],[\"flag-py\",1740],[\"paraguay\",1740],[\"flag-qa\",1741],[\"qatar\",1741],[\"flag-re\",1742],[\"reunion\",1742],[\"flag-ro\",1743],[\"romania\",1743],[\"flag-rs\",1744],[\"serbia\",1744],[\"ru\",1745],[\"flag-ru\",1745],[\"flag-rw\",1746],[\"rwanda\",1746],[\"flag-sa\",1747],[\"saudi_arabia\",1747],[\"flag-sb\",1748],[\"solomon_islands\",1748],[\"flag-sc\",1749],[\"seychelles\",1749],[\"flag-sd\",1750],[\"sudan\",1750],[\"flag-se\",1751],[\"sweden\",1751],[\"flag-sg\",1752],[\"singapore\",1752],[\"flag-sh\",1753],[\"st_helena\",1753],[\"flag-si\",1754],[\"slovenia\",1754],[\"flag-sj\",1755],[\"flag-sk\",1756],[\"slovakia\",1756],[\"flag-sl\",1757],[\"sierra_leone\",1757],[\"flag-sm\",1758],[\"san_marino\",1758],[\"flag-sn\",1759],[\"senegal\",1759],[\"flag-so\",1760],[\"somalia\",1760],[\"flag-sr\",1761],[\"suriname\",1761],[\"flag-ss\",1762],[\"south_sudan\",1762],[\"flag-st\",1763],[\"sao_tome_principe\",1763],[\"flag-sv\",1764],[\"el_salvador\",1764],[\"flag-sx\",1765],[\"sint_maarten\",1765],[\"flag-sy\",1766],[\"syria\",1766],[\"flag-sz\",1767],[\"swaziland\",1767],[\"flag-ta\",1768],[\"flag-tc\",1769],[\"turks_caicos_islands\",1769],[\"flag-td\",1770],[\"chad\",1770],[\"flag-tf\",1771],[\"french_southern_territories\",1771],[\"flag-tg\",1772],[\"togo\",1772],[\"flag-th\",1773],[\"thailand\",1773],[\"flag-tj\",1774],[\"tajikistan\",1774],[\"flag-tk\",1775],[\"tokelau\",1775],[\"flag-tl\",1776],[\"timor_leste\",1776],[\"flag-tm\",1777],[\"turkmenistan\",1777],[\"flag-tn\",1778],[\"tunisia\",1778],[\"flag-to\",1779],[\"tonga\",1779],[\"flag-tr\",1780],[\"tr\",1780],[\"flag-tt\",1781],[\"trinidad_tobago\",1781],[\"flag-tv\",1782],[\"tuvalu\",1782],[\"flag-tw\",1783],[\"taiwan\",1783],[\"flag-tz\",1784],[\"tanzania\",1784],[\"flag-ua\",1785],[\"ukraine\",1785],[\"flag-ug\",1786],[\"uganda\",1786],[\"flag-um\",1787],[\"flag-un\",1788],[\"us\",1789],[\"flag-us\",1789],[\"flag-uy\",1790],[\"uruguay\",1790],[\"flag-uz\",1791],[\"uzbekistan\",1791],[\"flag-va\",1792],[\"vatican_city\",1792],[\"flag-vc\",1793],[\"st_vincent_grenadines\",1793],[\"flag-ve\",1794],[\"venezuela\",1794],[\"flag-vg\",1795],[\"british_virgin_islands\",1795],[\"flag-vi\",1796],[\"us_virgin_islands\",1796],[\"flag-vn\",1797],[\"vietnam\",1797],[\"flag-vu\",1798],[\"vanuatu\",1798],[\"flag-wf\",1799],[\"wallis_futuna\",1799],[\"flag-ws\",1800],[\"samoa\",1800],[\"flag-xk\",1801],[\"kosovo\",1801],[\"flag-ye\",1802],[\"yemen\",1802],[\"flag-yt\",1803],[\"mayotte\",1803],[\"flag-za\",1804],[\"south_africa\",1804],[\"za\",1804],[\"flag-zm\",1805],[\"zambia\",1805],[\"flag-zw\",1806],[\"zimbabwe\",1806],[\"flag-england\",1807],[\"flag-scotland\",1808],[\"flag-wales\",1809],[\"santa_light_skin_tone\",1810],[\"santa_medium_light_skin_tone\",1811],[\"santa_medium_skin_tone\",1812],[\"santa_medium_dark_skin_tone\",1813],[\"santa_dark_skin_tone\",1814],[\"snowboarder_light_skin_tone\",1815],[\"snowboarder_medium_light_skin_tone\",1816],[\"snowboarder_medium_skin_tone\",1817],[\"snowboarder_medium_dark_skin_tone\",1818],[\"snowboarder_dark_skin_tone\",1819],[\"woman-running_light_skin_tone\",1820],[\"running_woman_light_skin_tone\",1820],[\"woman-running_medium_light_skin_tone\",1821],[\"running_woman_medium_light_skin_tone\",1821],[\"woman-running_medium_skin_tone\",1822],[\"running_woman_medium_skin_tone\",1822],[\"woman-running_medium_dark_skin_tone\",1823],[\"running_woman_medium_dark_skin_tone\",1823],[\"woman-running_dark_skin_tone\",1824],[\"running_woman_dark_skin_tone\",1824],[\"man-running_light_skin_tone\",1825],[\"running_man_light_skin_tone\",1825],[\"man-running_medium_light_skin_tone\",1826],[\"running_man_medium_light_skin_tone\",1826],[\"man-running_medium_skin_tone\",1827],[\"running_man_medium_skin_tone\",1827],[\"man-running_medium_dark_skin_tone\",1828],[\"running_man_medium_dark_skin_tone\",1828],[\"man-running_dark_skin_tone\",1829],[\"running_man_dark_skin_tone\",1829],[\"runner_light_skin_tone\",1830],[\"running_light_skin_tone\",1830],[\"runner_medium_light_skin_tone\",1831],[\"running_medium_light_skin_tone\",1831],[\"runner_medium_skin_tone\",1832],[\"running_medium_skin_tone\",1832],[\"runner_medium_dark_skin_tone\",1833],[\"running_medium_dark_skin_tone\",1833],[\"runner_dark_skin_tone\",1834],[\"running_dark_skin_tone\",1834],[\"woman-surfing_light_skin_tone\",1835],[\"surfing_woman_light_skin_tone\",1835],[\"woman-surfing_medium_light_skin_tone\",1836],[\"surfing_woman_medium_light_skin_tone\",1836],[\"woman-surfing_medium_skin_tone\",1837],[\"surfing_woman_medium_skin_tone\",1837],[\"woman-surfing_medium_dark_skin_tone\",1838],[\"surfing_woman_medium_dark_skin_tone\",1838],[\"woman-surfing_dark_skin_tone\",1839],[\"surfing_woman_dark_skin_tone\",1839],[\"man-surfing_light_skin_tone\",1840],[\"surfing_man_light_skin_tone\",1840],[\"man-surfing_medium_light_skin_tone\",1841],[\"surfing_man_medium_light_skin_tone\",1841],[\"man-surfing_medium_skin_tone\",1842],[\"surfing_man_medium_skin_tone\",1842],[\"man-surfing_medium_dark_skin_tone\",1843],[\"surfing_man_medium_dark_skin_tone\",1843],[\"man-surfing_dark_skin_tone\",1844],[\"surfing_man_dark_skin_tone\",1844],[\"surfer_light_skin_tone\",1845],[\"surfer_medium_light_skin_tone\",1846],[\"surfer_medium_skin_tone\",1847],[\"surfer_medium_dark_skin_tone\",1848],[\"surfer_dark_skin_tone\",1849],[\"horse_racing_light_skin_tone\",1850],[\"horse_racing_medium_light_skin_tone\",1851],[\"horse_racing_medium_skin_tone\",1852],[\"horse_racing_medium_dark_skin_tone\",1853],[\"horse_racing_dark_skin_tone\",1854],[\"woman-swimming_light_skin_tone\",1855],[\"swimming_woman_light_skin_tone\",1855],[\"woman-swimming_medium_light_skin_tone\",1856],[\"swimming_woman_medium_light_skin_tone\",1856],[\"woman-swimming_medium_skin_tone\",1857],[\"swimming_woman_medium_skin_tone\",1857],[\"woman-swimming_medium_dark_skin_tone\",1858],[\"swimming_woman_medium_dark_skin_tone\",1858],[\"woman-swimming_dark_skin_tone\",1859],[\"swimming_woman_dark_skin_tone\",1859],[\"man-swimming_light_skin_tone\",1860],[\"swimming_man_light_skin_tone\",1860],[\"man-swimming_medium_light_skin_tone\",1861],[\"swimming_man_medium_light_skin_tone\",1861],[\"man-swimming_medium_skin_tone\",1862],[\"swimming_man_medium_skin_tone\",1862],[\"man-swimming_medium_dark_skin_tone\",1863],[\"swimming_man_medium_dark_skin_tone\",1863],[\"man-swimming_dark_skin_tone\",1864],[\"swimming_man_dark_skin_tone\",1864],[\"swimmer_light_skin_tone\",1865],[\"swimmer_medium_light_skin_tone\",1866],[\"swimmer_medium_skin_tone\",1867],[\"swimmer_medium_dark_skin_tone\",1868],[\"swimmer_dark_skin_tone\",1869],[\"woman-lifting-weights_light_skin_tone\",1870],[\"weight_lifting_woman_light_skin_tone\",1870],[\"woman-lifting-weights_medium_light_skin_tone\",1871],[\"weight_lifting_woman_medium_light_skin_tone\",1871],[\"woman-lifting-weights_medium_skin_tone\",1872],[\"weight_lifting_woman_medium_skin_tone\",1872],[\"woman-lifting-weights_medium_dark_skin_tone\",1873],[\"weight_lifting_woman_medium_dark_skin_tone\",1873],[\"woman-lifting-weights_dark_skin_tone\",1874],[\"weight_lifting_woman_dark_skin_tone\",1874],[\"man-lifting-weights_light_skin_tone\",1875],[\"weight_lifting_man_light_skin_tone\",1875],[\"man-lifting-weights_medium_light_skin_tone\",1876],[\"weight_lifting_man_medium_light_skin_tone\",1876],[\"man-lifting-weights_medium_skin_tone\",1877],[\"weight_lifting_man_medium_skin_tone\",1877],[\"man-lifting-weights_medium_dark_skin_tone\",1878],[\"weight_lifting_man_medium_dark_skin_tone\",1878],[\"man-lifting-weights_dark_skin_tone\",1879],[\"weight_lifting_man_dark_skin_tone\",1879],[\"weight_lifter_light_skin_tone\",1880],[\"weight_lifter_medium_light_skin_tone\",1881],[\"weight_lifter_medium_skin_tone\",1882],[\"weight_lifter_medium_dark_skin_tone\",1883],[\"weight_lifter_dark_skin_tone\",1884],[\"woman-golfing_light_skin_tone\",1885],[\"golfing_woman_light_skin_tone\",1885],[\"woman-golfing_medium_light_skin_tone\",1886],[\"golfing_woman_medium_light_skin_tone\",1886],[\"woman-golfing_medium_skin_tone\",1887],[\"golfing_woman_medium_skin_tone\",1887],[\"woman-golfing_medium_dark_skin_tone\",1888],[\"golfing_woman_medium_dark_skin_tone\",1888],[\"woman-golfing_dark_skin_tone\",1889],[\"golfing_woman_dark_skin_tone\",1889],[\"man-golfing_light_skin_tone\",1890],[\"golfing_man_light_skin_tone\",1890],[\"man-golfing_medium_light_skin_tone\",1891],[\"golfing_man_medium_light_skin_tone\",1891],[\"man-golfing_medium_skin_tone\",1892],[\"golfing_man_medium_skin_tone\",1892],[\"man-golfing_medium_dark_skin_tone\",1893],[\"golfing_man_medium_dark_skin_tone\",1893],[\"man-golfing_dark_skin_tone\",1894],[\"golfing_man_dark_skin_tone\",1894],[\"golfer_light_skin_tone\",1895],[\"golfer_medium_light_skin_tone\",1896],[\"golfer_medium_skin_tone\",1897],[\"golfer_medium_dark_skin_tone\",1898],[\"golfer_dark_skin_tone\",1899],[\"ear_light_skin_tone\",1900],[\"ear_medium_light_skin_tone\",1901],[\"ear_medium_skin_tone\",1902],[\"ear_medium_dark_skin_tone\",1903],[\"ear_dark_skin_tone\",1904],[\"nose_light_skin_tone\",1905],[\"nose_medium_light_skin_tone\",1906],[\"nose_medium_skin_tone\",1907],[\"nose_medium_dark_skin_tone\",1908],[\"nose_dark_skin_tone\",1909],[\"point_up_2_light_skin_tone\",1910],[\"point_up_2_medium_light_skin_tone\",1911],[\"point_up_2_medium_skin_tone\",1912],[\"point_up_2_medium_dark_skin_tone\",1913],[\"point_up_2_dark_skin_tone\",1914],[\"point_down_light_skin_tone\",1915],[\"point_down_medium_light_skin_tone\",1916],[\"point_down_medium_skin_tone\",1917],[\"point_down_medium_dark_skin_tone\",1918],[\"point_down_dark_skin_tone\",1919],[\"point_left_light_skin_tone\",1920],[\"point_left_medium_light_skin_tone\",1921],[\"point_left_medium_skin_tone\",1922],[\"point_left_medium_dark_skin_tone\",1923],[\"point_left_dark_skin_tone\",1924],[\"point_right_light_skin_tone\",1925],[\"point_right_medium_light_skin_tone\",1926],[\"point_right_medium_skin_tone\",1927],[\"point_right_medium_dark_skin_tone\",1928],[\"point_right_dark_skin_tone\",1929],[\"facepunch_light_skin_tone\",1930],[\"punch_light_skin_tone\",1930],[\"fist_oncoming_light_skin_tone\",1930],[\"facepunch_medium_light_skin_tone\",1931],[\"punch_medium_light_skin_tone\",1931],[\"fist_oncoming_medium_light_skin_tone\",1931],[\"facepunch_medium_skin_tone\",1932],[\"punch_medium_skin_tone\",1932],[\"fist_oncoming_medium_skin_tone\",1932],[\"facepunch_medium_dark_skin_tone\",1933],[\"punch_medium_dark_skin_tone\",1933],[\"fist_oncoming_medium_dark_skin_tone\",1933],[\"facepunch_dark_skin_tone\",1934],[\"punch_dark_skin_tone\",1934],[\"fist_oncoming_dark_skin_tone\",1934],[\"wave_light_skin_tone\",1935],[\"wave_medium_light_skin_tone\",1936],[\"wave_medium_skin_tone\",1937],[\"wave_medium_dark_skin_tone\",1938],[\"wave_dark_skin_tone\",1939],[\"ok_hand_light_skin_tone\",1940],[\"ok_hand_medium_light_skin_tone\",1941],[\"ok_hand_medium_skin_tone\",1942],[\"ok_hand_medium_dark_skin_tone\",1943],[\"ok_hand_dark_skin_tone\",1944],[\"+1_light_skin_tone\",1945],[\"thumbsup_light_skin_tone\",1945],[\"+1_medium_light_skin_tone\",1946],[\"thumbsup_medium_light_skin_tone\",1946],[\"+1_medium_skin_tone\",1947],[\"thumbsup_medium_skin_tone\",1947],[\"+1_medium_dark_skin_tone\",1948],[\"thumbsup_medium_dark_skin_tone\",1948],[\"+1_dark_skin_tone\",1949],[\"thumbsup_dark_skin_tone\",1949],[\"-1_light_skin_tone\",1950],[\"thumbsdown_light_skin_tone\",1950],[\"-1_medium_light_skin_tone\",1951],[\"thumbsdown_medium_light_skin_tone\",1951],[\"-1_medium_skin_tone\",1952],[\"thumbsdown_medium_skin_tone\",1952],[\"-1_medium_dark_skin_tone\",1953],[\"thumbsdown_medium_dark_skin_tone\",1953],[\"-1_dark_skin_tone\",1954],[\"thumbsdown_dark_skin_tone\",1954],[\"clap_light_skin_tone\",1955],[\"clap_medium_light_skin_tone\",1956],[\"clap_medium_skin_tone\",1957],[\"clap_medium_dark_skin_tone\",1958],[\"clap_dark_skin_tone\",1959],[\"open_hands_light_skin_tone\",1960],[\"open_hands_medium_light_skin_tone\",1961],[\"open_hands_medium_skin_tone\",1962],[\"open_hands_medium_dark_skin_tone\",1963],[\"open_hands_dark_skin_tone\",1964],[\"boy_light_skin_tone\",1965],[\"boy_medium_light_skin_tone\",1966],[\"boy_medium_skin_tone\",1967],[\"boy_medium_dark_skin_tone\",1968],[\"boy_dark_skin_tone\",1969],[\"girl_light_skin_tone\",1970],[\"girl_medium_light_skin_tone\",1971],[\"girl_medium_skin_tone\",1972],[\"girl_medium_dark_skin_tone\",1973],[\"girl_dark_skin_tone\",1974],[\"male-farmer_light_skin_tone\",1975],[\"man_farmer_light_skin_tone\",1975],[\"male-farmer_medium_light_skin_tone\",1976],[\"man_farmer_medium_light_skin_tone\",1976],[\"male-farmer_medium_skin_tone\",1977],[\"man_farmer_medium_skin_tone\",1977],[\"male-farmer_medium_dark_skin_tone\",1978],[\"man_farmer_medium_dark_skin_tone\",1978],[\"male-farmer_dark_skin_tone\",1979],[\"man_farmer_dark_skin_tone\",1979],[\"male-cook_light_skin_tone\",1980],[\"man_cook_light_skin_tone\",1980],[\"male-cook_medium_light_skin_tone\",1981],[\"man_cook_medium_light_skin_tone\",1981],[\"male-cook_medium_skin_tone\",1982],[\"man_cook_medium_skin_tone\",1982],[\"male-cook_medium_dark_skin_tone\",1983],[\"man_cook_medium_dark_skin_tone\",1983],[\"male-cook_dark_skin_tone\",1984],[\"man_cook_dark_skin_tone\",1984],[\"man_feeding_baby_light_skin_tone\",1985],[\"man_feeding_baby_medium_light_skin_tone\",1986],[\"man_feeding_baby_medium_skin_tone\",1987],[\"man_feeding_baby_medium_dark_skin_tone\",1988],[\"man_feeding_baby_dark_skin_tone\",1989],[\"male-student_light_skin_tone\",1990],[\"man_student_light_skin_tone\",1990],[\"male-student_medium_light_skin_tone\",1991],[\"man_student_medium_light_skin_tone\",1991],[\"male-student_medium_skin_tone\",1992],[\"man_student_medium_skin_tone\",1992],[\"male-student_medium_dark_skin_tone\",1993],[\"man_student_medium_dark_skin_tone\",1993],[\"male-student_dark_skin_tone\",1994],[\"man_student_dark_skin_tone\",1994],[\"male-singer_light_skin_tone\",1995],[\"man_singer_light_skin_tone\",1995],[\"male-singer_medium_light_skin_tone\",1996],[\"man_singer_medium_light_skin_tone\",1996],[\"male-singer_medium_skin_tone\",1997],[\"man_singer_medium_skin_tone\",1997],[\"male-singer_medium_dark_skin_tone\",1998],[\"man_singer_medium_dark_skin_tone\",1998],[\"male-singer_dark_skin_tone\",1999],[\"man_singer_dark_skin_tone\",1999],[\"male-artist_light_skin_tone\",2000],[\"man_artist_light_skin_tone\",2000],[\"male-artist_medium_light_skin_tone\",2001],[\"man_artist_medium_light_skin_tone\",2001],[\"male-artist_medium_skin_tone\",2002],[\"man_artist_medium_skin_tone\",2002],[\"male-artist_medium_dark_skin_tone\",2003],[\"man_artist_medium_dark_skin_tone\",2003],[\"male-artist_dark_skin_tone\",2004],[\"man_artist_dark_skin_tone\",2004],[\"male-teacher_light_skin_tone\",2005],[\"man_teacher_light_skin_tone\",2005],[\"male-teacher_medium_light_skin_tone\",2006],[\"man_teacher_medium_light_skin_tone\",2006],[\"male-teacher_medium_skin_tone\",2007],[\"man_teacher_medium_skin_tone\",2007],[\"male-teacher_medium_dark_skin_tone\",2008],[\"man_teacher_medium_dark_skin_tone\",2008],[\"male-teacher_dark_skin_tone\",2009],[\"man_teacher_dark_skin_tone\",2009],[\"male-factory-worker_light_skin_tone\",2010],[\"man_factory_worker_light_skin_tone\",2010],[\"male-factory-worker_medium_light_skin_tone\",2011],[\"man_factory_worker_medium_light_skin_tone\",2011],[\"male-factory-worker_medium_skin_tone\",2012],[\"man_factory_worker_medium_skin_tone\",2012],[\"male-factory-worker_medium_dark_skin_tone\",2013],[\"man_factory_worker_medium_dark_skin_tone\",2013],[\"male-factory-worker_dark_skin_tone\",2014],[\"man_factory_worker_dark_skin_tone\",2014],[\"male-technologist_light_skin_tone\",2015],[\"man_technologist_light_skin_tone\",2015],[\"male-technologist_medium_light_skin_tone\",2016],[\"man_technologist_medium_light_skin_tone\",2016],[\"male-technologist_medium_skin_tone\",2017],[\"man_technologist_medium_skin_tone\",2017],[\"male-technologist_medium_dark_skin_tone\",2018],[\"man_technologist_medium_dark_skin_tone\",2018],[\"male-technologist_dark_skin_tone\",2019],[\"man_technologist_dark_skin_tone\",2019],[\"male-office-worker_light_skin_tone\",2020],[\"man_office_worker_light_skin_tone\",2020],[\"male-office-worker_medium_light_skin_tone\",2021],[\"man_office_worker_medium_light_skin_tone\",2021],[\"male-office-worker_medium_skin_tone\",2022],[\"man_office_worker_medium_skin_tone\",2022],[\"male-office-worker_medium_dark_skin_tone\",2023],[\"man_office_worker_medium_dark_skin_tone\",2023],[\"male-office-worker_dark_skin_tone\",2024],[\"man_office_worker_dark_skin_tone\",2024],[\"male-mechanic_light_skin_tone\",2025],[\"man_mechanic_light_skin_tone\",2025],[\"male-mechanic_medium_light_skin_tone\",2026],[\"man_mechanic_medium_light_skin_tone\",2026],[\"male-mechanic_medium_skin_tone\",2027],[\"man_mechanic_medium_skin_tone\",2027],[\"male-mechanic_medium_dark_skin_tone\",2028],[\"man_mechanic_medium_dark_skin_tone\",2028],[\"male-mechanic_dark_skin_tone\",2029],[\"man_mechanic_dark_skin_tone\",2029],[\"male-scientist_light_skin_tone\",2030],[\"man_scientist_light_skin_tone\",2030],[\"male-scientist_medium_light_skin_tone\",2031],[\"man_scientist_medium_light_skin_tone\",2031],[\"male-scientist_medium_skin_tone\",2032],[\"man_scientist_medium_skin_tone\",2032],[\"male-scientist_medium_dark_skin_tone\",2033],[\"man_scientist_medium_dark_skin_tone\",2033],[\"male-scientist_dark_skin_tone\",2034],[\"man_scientist_dark_skin_tone\",2034],[\"male-astronaut_light_skin_tone\",2035],[\"man_astronaut_light_skin_tone\",2035],[\"male-astronaut_medium_light_skin_tone\",2036],[\"man_astronaut_medium_light_skin_tone\",2036],[\"male-astronaut_medium_skin_tone\",2037],[\"man_astronaut_medium_skin_tone\",2037],[\"male-astronaut_medium_dark_skin_tone\",2038],[\"man_astronaut_medium_dark_skin_tone\",2038],[\"male-astronaut_dark_skin_tone\",2039],[\"man_astronaut_dark_skin_tone\",2039],[\"male-firefighter_light_skin_tone\",2040],[\"man_firefighter_light_skin_tone\",2040],[\"male-firefighter_medium_light_skin_tone\",2041],[\"man_firefighter_medium_light_skin_tone\",2041],[\"male-firefighter_medium_skin_tone\",2042],[\"man_firefighter_medium_skin_tone\",2042],[\"male-firefighter_medium_dark_skin_tone\",2043],[\"man_firefighter_medium_dark_skin_tone\",2043],[\"male-firefighter_dark_skin_tone\",2044],[\"man_firefighter_dark_skin_tone\",2044],[\"man_with_probing_cane_light_skin_tone\",2045],[\"man_with_probing_cane_medium_light_skin_tone\",2046],[\"man_with_probing_cane_medium_skin_tone\",2047],[\"man_with_probing_cane_medium_dark_skin_tone\",2048],[\"man_with_probing_cane_dark_skin_tone\",2049],[\"red_haired_man_light_skin_tone\",2050],[\"red_haired_man_medium_light_skin_tone\",2051],[\"red_haired_man_medium_skin_tone\",2052],[\"red_haired_man_medium_dark_skin_tone\",2053],[\"red_haired_man_dark_skin_tone\",2054],[\"curly_haired_man_light_skin_tone\",2055],[\"curly_haired_man_medium_light_skin_tone\",2056],[\"curly_haired_man_medium_skin_tone\",2057],[\"curly_haired_man_medium_dark_skin_tone\",2058],[\"curly_haired_man_dark_skin_tone\",2059],[\"bald_man_light_skin_tone\",2060],[\"bald_man_medium_light_skin_tone\",2061],[\"bald_man_medium_skin_tone\",2062],[\"bald_man_medium_dark_skin_tone\",2063],[\"bald_man_dark_skin_tone\",2064],[\"white_haired_man_light_skin_tone\",2065],[\"white_haired_man_medium_light_skin_tone\",2066],[\"white_haired_man_medium_skin_tone\",2067],[\"white_haired_man_medium_dark_skin_tone\",2068],[\"white_haired_man_dark_skin_tone\",2069],[\"man_in_motorized_wheelchair_light_skin_tone\",2070],[\"man_in_motorized_wheelchair_medium_light_skin_tone\",2071],[\"man_in_motorized_wheelchair_medium_skin_tone\",2072],[\"man_in_motorized_wheelchair_medium_dark_skin_tone\",2073],[\"man_in_motorized_wheelchair_dark_skin_tone\",2074],[\"man_in_manual_wheelchair_light_skin_tone\",2075],[\"man_in_manual_wheelchair_medium_light_skin_tone\",2076],[\"man_in_manual_wheelchair_medium_skin_tone\",2077],[\"man_in_manual_wheelchair_medium_dark_skin_tone\",2078],[\"man_in_manual_wheelchair_dark_skin_tone\",2079],[\"male-doctor_light_skin_tone\",2080],[\"man_health_worker_light_skin_tone\",2080],[\"male-doctor_medium_light_skin_tone\",2081],[\"man_health_worker_medium_light_skin_tone\",2081],[\"male-doctor_medium_skin_tone\",2082],[\"man_health_worker_medium_skin_tone\",2082],[\"male-doctor_medium_dark_skin_tone\",2083],[\"man_health_worker_medium_dark_skin_tone\",2083],[\"male-doctor_dark_skin_tone\",2084],[\"man_health_worker_dark_skin_tone\",2084],[\"male-judge_light_skin_tone\",2085],[\"man_judge_light_skin_tone\",2085],[\"male-judge_medium_light_skin_tone\",2086],[\"man_judge_medium_light_skin_tone\",2086],[\"male-judge_medium_skin_tone\",2087],[\"man_judge_medium_skin_tone\",2087],[\"male-judge_medium_dark_skin_tone\",2088],[\"man_judge_medium_dark_skin_tone\",2088],[\"male-judge_dark_skin_tone\",2089],[\"man_judge_dark_skin_tone\",2089],[\"male-pilot_light_skin_tone\",2090],[\"man_pilot_light_skin_tone\",2090],[\"male-pilot_medium_light_skin_tone\",2091],[\"man_pilot_medium_light_skin_tone\",2091],[\"male-pilot_medium_skin_tone\",2092],[\"man_pilot_medium_skin_tone\",2092],[\"male-pilot_medium_dark_skin_tone\",2093],[\"man_pilot_medium_dark_skin_tone\",2093],[\"male-pilot_dark_skin_tone\",2094],[\"man_pilot_dark_skin_tone\",2094],[\"man_light_skin_tone\",2095],[\"man_medium_light_skin_tone\",2096],[\"man_medium_skin_tone\",2097],[\"man_medium_dark_skin_tone\",2098],[\"man_dark_skin_tone\",2099],[\"female-farmer_light_skin_tone\",2100],[\"woman_farmer_light_skin_tone\",2100],[\"female-farmer_medium_light_skin_tone\",2101],[\"woman_farmer_medium_light_skin_tone\",2101],[\"female-farmer_medium_skin_tone\",2102],[\"woman_farmer_medium_skin_tone\",2102],[\"female-farmer_medium_dark_skin_tone\",2103],[\"woman_farmer_medium_dark_skin_tone\",2103],[\"female-farmer_dark_skin_tone\",2104],[\"woman_farmer_dark_skin_tone\",2104],[\"female-cook_light_skin_tone\",2105],[\"woman_cook_light_skin_tone\",2105],[\"female-cook_medium_light_skin_tone\",2106],[\"woman_cook_medium_light_skin_tone\",2106],[\"female-cook_medium_skin_tone\",2107],[\"woman_cook_medium_skin_tone\",2107],[\"female-cook_medium_dark_skin_tone\",2108],[\"woman_cook_medium_dark_skin_tone\",2108],[\"female-cook_dark_skin_tone\",2109],[\"woman_cook_dark_skin_tone\",2109],[\"woman_feeding_baby_light_skin_tone\",2110],[\"woman_feeding_baby_medium_light_skin_tone\",2111],[\"woman_feeding_baby_medium_skin_tone\",2112],[\"woman_feeding_baby_medium_dark_skin_tone\",2113],[\"woman_feeding_baby_dark_skin_tone\",2114],[\"female-student_light_skin_tone\",2115],[\"woman_student_light_skin_tone\",2115],[\"female-student_medium_light_skin_tone\",2116],[\"woman_student_medium_light_skin_tone\",2116],[\"female-student_medium_skin_tone\",2117],[\"woman_student_medium_skin_tone\",2117],[\"female-student_medium_dark_skin_tone\",2118],[\"woman_student_medium_dark_skin_tone\",2118],[\"female-student_dark_skin_tone\",2119],[\"woman_student_dark_skin_tone\",2119],[\"female-singer_light_skin_tone\",2120],[\"woman_singer_light_skin_tone\",2120],[\"female-singer_medium_light_skin_tone\",2121],[\"woman_singer_medium_light_skin_tone\",2121],[\"female-singer_medium_skin_tone\",2122],[\"woman_singer_medium_skin_tone\",2122],[\"female-singer_medium_dark_skin_tone\",2123],[\"woman_singer_medium_dark_skin_tone\",2123],[\"female-singer_dark_skin_tone\",2124],[\"woman_singer_dark_skin_tone\",2124],[\"female-artist_light_skin_tone\",2125],[\"woman_artist_light_skin_tone\",2125],[\"female-artist_medium_light_skin_tone\",2126],[\"woman_artist_medium_light_skin_tone\",2126],[\"female-artist_medium_skin_tone\",2127],[\"woman_artist_medium_skin_tone\",2127],[\"female-artist_medium_dark_skin_tone\",2128],[\"woman_artist_medium_dark_skin_tone\",2128],[\"female-artist_dark_skin_tone\",2129],[\"woman_artist_dark_skin_tone\",2129],[\"female-teacher_light_skin_tone\",2130],[\"woman_teacher_light_skin_tone\",2130],[\"female-teacher_medium_light_skin_tone\",2131],[\"woman_teacher_medium_light_skin_tone\",2131],[\"female-teacher_medium_skin_tone\",2132],[\"woman_teacher_medium_skin_tone\",2132],[\"female-teacher_medium_dark_skin_tone\",2133],[\"woman_teacher_medium_dark_skin_tone\",2133],[\"female-teacher_dark_skin_tone\",2134],[\"woman_teacher_dark_skin_tone\",2134],[\"female-factory-worker_light_skin_tone\",2135],[\"woman_factory_worker_light_skin_tone\",2135],[\"female-factory-worker_medium_light_skin_tone\",2136],[\"woman_factory_worker_medium_light_skin_tone\",2136],[\"female-factory-worker_medium_skin_tone\",2137],[\"woman_factory_worker_medium_skin_tone\",2137],[\"female-factory-worker_medium_dark_skin_tone\",2138],[\"woman_factory_worker_medium_dark_skin_tone\",2138],[\"female-factory-worker_dark_skin_tone\",2139],[\"woman_factory_worker_dark_skin_tone\",2139],[\"female-technologist_light_skin_tone\",2140],[\"woman_technologist_light_skin_tone\",2140],[\"female-technologist_medium_light_skin_tone\",2141],[\"woman_technologist_medium_light_skin_tone\",2141],[\"female-technologist_medium_skin_tone\",2142],[\"woman_technologist_medium_skin_tone\",2142],[\"female-technologist_medium_dark_skin_tone\",2143],[\"woman_technologist_medium_dark_skin_tone\",2143],[\"female-technologist_dark_skin_tone\",2144],[\"woman_technologist_dark_skin_tone\",2144],[\"female-office-worker_light_skin_tone\",2145],[\"woman_office_worker_light_skin_tone\",2145],[\"female-office-worker_medium_light_skin_tone\",2146],[\"woman_office_worker_medium_light_skin_tone\",2146],[\"female-office-worker_medium_skin_tone\",2147],[\"woman_office_worker_medium_skin_tone\",2147],[\"female-office-worker_medium_dark_skin_tone\",2148],[\"woman_office_worker_medium_dark_skin_tone\",2148],[\"female-office-worker_dark_skin_tone\",2149],[\"woman_office_worker_dark_skin_tone\",2149],[\"female-mechanic_light_skin_tone\",2150],[\"woman_mechanic_light_skin_tone\",2150],[\"female-mechanic_medium_light_skin_tone\",2151],[\"woman_mechanic_medium_light_skin_tone\",2151],[\"female-mechanic_medium_skin_tone\",2152],[\"woman_mechanic_medium_skin_tone\",2152],[\"female-mechanic_medium_dark_skin_tone\",2153],[\"woman_mechanic_medium_dark_skin_tone\",2153],[\"female-mechanic_dark_skin_tone\",2154],[\"woman_mechanic_dark_skin_tone\",2154],[\"female-scientist_light_skin_tone\",2155],[\"woman_scientist_light_skin_tone\",2155],[\"female-scientist_medium_light_skin_tone\",2156],[\"woman_scientist_medium_light_skin_tone\",2156],[\"female-scientist_medium_skin_tone\",2157],[\"woman_scientist_medium_skin_tone\",2157],[\"female-scientist_medium_dark_skin_tone\",2158],[\"woman_scientist_medium_dark_skin_tone\",2158],[\"female-scientist_dark_skin_tone\",2159],[\"woman_scientist_dark_skin_tone\",2159],[\"female-astronaut_light_skin_tone\",2160],[\"woman_astronaut_light_skin_tone\",2160],[\"female-astronaut_medium_light_skin_tone\",2161],[\"woman_astronaut_medium_light_skin_tone\",2161],[\"female-astronaut_medium_skin_tone\",2162],[\"woman_astronaut_medium_skin_tone\",2162],[\"female-astronaut_medium_dark_skin_tone\",2163],[\"woman_astronaut_medium_dark_skin_tone\",2163],[\"female-astronaut_dark_skin_tone\",2164],[\"woman_astronaut_dark_skin_tone\",2164],[\"female-firefighter_light_skin_tone\",2165],[\"woman_firefighter_light_skin_tone\",2165],[\"female-firefighter_medium_light_skin_tone\",2166],[\"woman_firefighter_medium_light_skin_tone\",2166],[\"female-firefighter_medium_skin_tone\",2167],[\"woman_firefighter_medium_skin_tone\",2167],[\"female-firefighter_medium_dark_skin_tone\",2168],[\"woman_firefighter_medium_dark_skin_tone\",2168],[\"female-firefighter_dark_skin_tone\",2169],[\"woman_firefighter_dark_skin_tone\",2169],[\"woman_with_probing_cane_light_skin_tone\",2170],[\"woman_with_probing_cane_medium_light_skin_tone\",2171],[\"woman_with_probing_cane_medium_skin_tone\",2172],[\"woman_with_probing_cane_medium_dark_skin_tone\",2173],[\"woman_with_probing_cane_dark_skin_tone\",2174],[\"red_haired_woman_light_skin_tone\",2175],[\"red_haired_woman_medium_light_skin_tone\",2176],[\"red_haired_woman_medium_skin_tone\",2177],[\"red_haired_woman_medium_dark_skin_tone\",2178],[\"red_haired_woman_dark_skin_tone\",2179],[\"curly_haired_woman_light_skin_tone\",2180],[\"curly_haired_woman_medium_light_skin_tone\",2181],[\"curly_haired_woman_medium_skin_tone\",2182],[\"curly_haired_woman_medium_dark_skin_tone\",2183],[\"curly_haired_woman_dark_skin_tone\",2184],[\"bald_woman_light_skin_tone\",2185],[\"bald_woman_medium_light_skin_tone\",2186],[\"bald_woman_medium_skin_tone\",2187],[\"bald_woman_medium_dark_skin_tone\",2188],[\"bald_woman_dark_skin_tone\",2189],[\"white_haired_woman_light_skin_tone\",2190],[\"white_haired_woman_medium_light_skin_tone\",2191],[\"white_haired_woman_medium_skin_tone\",2192],[\"white_haired_woman_medium_dark_skin_tone\",2193],[\"white_haired_woman_dark_skin_tone\",2194],[\"woman_in_motorized_wheelchair_light_skin_tone\",2195],[\"woman_in_motorized_wheelchair_medium_light_skin_tone\",2196],[\"woman_in_motorized_wheelchair_medium_skin_tone\",2197],[\"woman_in_motorized_wheelchair_medium_dark_skin_tone\",2198],[\"woman_in_motorized_wheelchair_dark_skin_tone\",2199],[\"woman_in_manual_wheelchair_light_skin_tone\",2200],[\"woman_in_manual_wheelchair_medium_light_skin_tone\",2201],[\"woman_in_manual_wheelchair_medium_skin_tone\",2202],[\"woman_in_manual_wheelchair_medium_dark_skin_tone\",2203],[\"woman_in_manual_wheelchair_dark_skin_tone\",2204],[\"female-doctor_light_skin_tone\",2205],[\"woman_health_worker_light_skin_tone\",2205],[\"female-doctor_medium_light_skin_tone\",2206],[\"woman_health_worker_medium_light_skin_tone\",2206],[\"female-doctor_medium_skin_tone\",2207],[\"woman_health_worker_medium_skin_tone\",2207],[\"female-doctor_medium_dark_skin_tone\",2208],[\"woman_health_worker_medium_dark_skin_tone\",2208],[\"female-doctor_dark_skin_tone\",2209],[\"woman_health_worker_dark_skin_tone\",2209],[\"female-judge_light_skin_tone\",2210],[\"woman_judge_light_skin_tone\",2210],[\"female-judge_medium_light_skin_tone\",2211],[\"woman_judge_medium_light_skin_tone\",2211],[\"female-judge_medium_skin_tone\",2212],[\"woman_judge_medium_skin_tone\",2212],[\"female-judge_medium_dark_skin_tone\",2213],[\"woman_judge_medium_dark_skin_tone\",2213],[\"female-judge_dark_skin_tone\",2214],[\"woman_judge_dark_skin_tone\",2214],[\"female-pilot_light_skin_tone\",2215],[\"woman_pilot_light_skin_tone\",2215],[\"female-pilot_medium_light_skin_tone\",2216],[\"woman_pilot_medium_light_skin_tone\",2216],[\"female-pilot_medium_skin_tone\",2217],[\"woman_pilot_medium_skin_tone\",2217],[\"female-pilot_medium_dark_skin_tone\",2218],[\"woman_pilot_medium_dark_skin_tone\",2218],[\"female-pilot_dark_skin_tone\",2219],[\"woman_pilot_dark_skin_tone\",2219],[\"woman_light_skin_tone\",2220],[\"woman_medium_light_skin_tone\",2221],[\"woman_medium_skin_tone\",2222],[\"woman_medium_dark_skin_tone\",2223],[\"woman_dark_skin_tone\",2224],[\"man_and_woman_holding_hands_light_skin_tone\",2225],[\"woman_and_man_holding_hands_light_skin_tone\",2225],[\"couple_light_skin_tone\",2225],[\"man_and_woman_holding_hands_medium_light_skin_tone\",2226],[\"woman_and_man_holding_hands_medium_light_skin_tone\",2226],[\"couple_medium_light_skin_tone\",2226],[\"man_and_woman_holding_hands_medium_skin_tone\",2227],[\"woman_and_man_holding_hands_medium_skin_tone\",2227],[\"couple_medium_skin_tone\",2227],[\"man_and_woman_holding_hands_medium_dark_skin_tone\",2228],[\"woman_and_man_holding_hands_medium_dark_skin_tone\",2228],[\"couple_medium_dark_skin_tone\",2228],[\"man_and_woman_holding_hands_dark_skin_tone\",2229],[\"woman_and_man_holding_hands_dark_skin_tone\",2229],[\"couple_dark_skin_tone\",2229],[\"man_and_woman_holding_hands_light_skin_tone_medium_light_skin_tone\",2230],[\"woman_and_man_holding_hands_light_skin_tone_medium_light_skin_tone\",2230],[\"couple_light_skin_tone_medium_light_skin_tone\",2230],[\"man_and_woman_holding_hands_light_skin_tone_medium_skin_tone\",2231],[\"woman_and_man_holding_hands_light_skin_tone_medium_skin_tone\",2231],[\"couple_light_skin_tone_medium_skin_tone\",2231],[\"man_and_woman_holding_hands_light_skin_tone_medium_dark_skin_tone\",2232],[\"woman_and_man_holding_hands_light_skin_tone_medium_dark_skin_tone\",2232],[\"couple_light_skin_tone_medium_dark_skin_tone\",2232],[\"man_and_woman_holding_hands_light_skin_tone_dark_skin_tone\",2233],[\"woman_and_man_holding_hands_light_skin_tone_dark_skin_tone\",2233],[\"couple_light_skin_tone_dark_skin_tone\",2233],[\"man_and_woman_holding_hands_medium_light_skin_tone_light_skin_tone\",2234],[\"woman_and_man_holding_hands_medium_light_skin_tone_light_skin_tone\",2234],[\"couple_medium_light_skin_tone_light_skin_tone\",2234],[\"man_and_woman_holding_hands_medium_light_skin_tone_medium_skin_tone\",2235],[\"woman_and_man_holding_hands_medium_light_skin_tone_medium_skin_tone\",2235],[\"couple_medium_light_skin_tone_medium_skin_tone\",2235],[\"man_and_woman_holding_hands_medium_light_skin_tone_medium_dark_skin_tone\",2236],[\"woman_and_man_holding_hands_medium_light_skin_tone_medium_dark_skin_tone\",2236],[\"couple_medium_light_skin_tone_medium_dark_skin_tone\",2236],[\"man_and_woman_holding_hands_medium_light_skin_tone_dark_skin_tone\",2237],[\"woman_and_man_holding_hands_medium_light_skin_tone_dark_skin_tone\",2237],[\"couple_medium_light_skin_tone_dark_skin_tone\",2237],[\"man_and_woman_holding_hands_medium_skin_tone_light_skin_tone\",2238],[\"woman_and_man_holding_hands_medium_skin_tone_light_skin_tone\",2238],[\"couple_medium_skin_tone_light_skin_tone\",2238],[\"man_and_woman_holding_hands_medium_skin_tone_medium_light_skin_tone\",2239],[\"woman_and_man_holding_hands_medium_skin_tone_medium_light_skin_tone\",2239],[\"couple_medium_skin_tone_medium_light_skin_tone\",2239],[\"man_and_woman_holding_hands_medium_skin_tone_medium_dark_skin_tone\",2240],[\"woman_and_man_holding_hands_medium_skin_tone_medium_dark_skin_tone\",2240],[\"couple_medium_skin_tone_medium_dark_skin_tone\",2240],[\"man_and_woman_holding_hands_medium_skin_tone_dark_skin_tone\",2241],[\"woman_and_man_holding_hands_medium_skin_tone_dark_skin_tone\",2241],[\"couple_medium_skin_tone_dark_skin_tone\",2241],[\"man_and_woman_holding_hands_medium_dark_skin_tone_light_skin_tone\",2242],[\"woman_and_man_holding_hands_medium_dark_skin_tone_light_skin_tone\",2242],[\"couple_medium_dark_skin_tone_light_skin_tone\",2242],[\"man_and_woman_holding_hands_medium_dark_skin_tone_medium_light_skin_tone\",2243],[\"woman_and_man_holding_hands_medium_dark_skin_tone_medium_light_skin_tone\",2243],[\"couple_medium_dark_skin_tone_medium_light_skin_tone\",2243],[\"man_and_woman_holding_hands_medium_dark_skin_tone_medium_skin_tone\",2244],[\"woman_and_man_holding_hands_medium_dark_skin_tone_medium_skin_tone\",2244],[\"couple_medium_dark_skin_tone_medium_skin_tone\",2244],[\"man_and_woman_holding_hands_medium_dark_skin_tone_dark_skin_tone\",2245],[\"woman_and_man_holding_hands_medium_dark_skin_tone_dark_skin_tone\",2245],[\"couple_medium_dark_skin_tone_dark_skin_tone\",2245],[\"man_and_woman_holding_hands_dark_skin_tone_light_skin_tone\",2246],[\"woman_and_man_holding_hands_dark_skin_tone_light_skin_tone\",2246],[\"couple_dark_skin_tone_light_skin_tone\",2246],[\"man_and_woman_holding_hands_dark_skin_tone_medium_light_skin_tone\",2247],[\"woman_and_man_holding_hands_dark_skin_tone_medium_light_skin_tone\",2247],[\"couple_dark_skin_tone_medium_light_skin_tone\",2247],[\"man_and_woman_holding_hands_dark_skin_tone_medium_skin_tone\",2248],[\"woman_and_man_holding_hands_dark_skin_tone_medium_skin_tone\",2248],[\"couple_dark_skin_tone_medium_skin_tone\",2248],[\"man_and_woman_holding_hands_dark_skin_tone_medium_dark_skin_tone\",2249],[\"woman_and_man_holding_hands_dark_skin_tone_medium_dark_skin_tone\",2249],[\"couple_dark_skin_tone_medium_dark_skin_tone\",2249],[\"two_men_holding_hands_light_skin_tone\",2250],[\"men_holding_hands_light_skin_tone\",2250],[\"two_men_holding_hands_medium_light_skin_tone\",2251],[\"men_holding_hands_medium_light_skin_tone\",2251],[\"two_men_holding_hands_medium_skin_tone\",2252],[\"men_holding_hands_medium_skin_tone\",2252],[\"two_men_holding_hands_medium_dark_skin_tone\",2253],[\"men_holding_hands_medium_dark_skin_tone\",2253],[\"two_men_holding_hands_dark_skin_tone\",2254],[\"men_holding_hands_dark_skin_tone\",2254],[\"two_men_holding_hands_light_skin_tone_medium_light_skin_tone\",2255],[\"men_holding_hands_light_skin_tone_medium_light_skin_tone\",2255],[\"two_men_holding_hands_light_skin_tone_medium_skin_tone\",2256],[\"men_holding_hands_light_skin_tone_medium_skin_tone\",2256],[\"two_men_holding_hands_light_skin_tone_medium_dark_skin_tone\",2257],[\"men_holding_hands_light_skin_tone_medium_dark_skin_tone\",2257],[\"two_men_holding_hands_light_skin_tone_dark_skin_tone\",2258],[\"men_holding_hands_light_skin_tone_dark_skin_tone\",2258],[\"two_men_holding_hands_medium_light_skin_tone_light_skin_tone\",2259],[\"men_holding_hands_medium_light_skin_tone_light_skin_tone\",2259],[\"two_men_holding_hands_medium_light_skin_tone_medium_skin_tone\",2260],[\"men_holding_hands_medium_light_skin_tone_medium_skin_tone\",2260],[\"two_men_holding_hands_medium_light_skin_tone_medium_dark_skin_tone\",2261],[\"men_holding_hands_medium_light_skin_tone_medium_dark_skin_tone\",2261],[\"two_men_holding_hands_medium_light_skin_tone_dark_skin_tone\",2262],[\"men_holding_hands_medium_light_skin_tone_dark_skin_tone\",2262],[\"two_men_holding_hands_medium_skin_tone_light_skin_tone\",2263],[\"men_holding_hands_medium_skin_tone_light_skin_tone\",2263],[\"two_men_holding_hands_medium_skin_tone_medium_light_skin_tone\",2264],[\"men_holding_hands_medium_skin_tone_medium_light_skin_tone\",2264],[\"two_men_holding_hands_medium_skin_tone_medium_dark_skin_tone\",2265],[\"men_holding_hands_medium_skin_tone_medium_dark_skin_tone\",2265],[\"two_men_holding_hands_medium_skin_tone_dark_skin_tone\",2266],[\"men_holding_hands_medium_skin_tone_dark_skin_tone\",2266],[\"two_men_holding_hands_medium_dark_skin_tone_light_skin_tone\",2267],[\"men_holding_hands_medium_dark_skin_tone_light_skin_tone\",2267],[\"two_men_holding_hands_medium_dark_skin_tone_medium_light_skin_tone\",2268],[\"men_holding_hands_medium_dark_skin_tone_medium_light_skin_tone\",2268],[\"two_men_holding_hands_medium_dark_skin_tone_medium_skin_tone\",2269],[\"men_holding_hands_medium_dark_skin_tone_medium_skin_tone\",2269],[\"two_men_holding_hands_medium_dark_skin_tone_dark_skin_tone\",2270],[\"men_holding_hands_medium_dark_skin_tone_dark_skin_tone\",2270],[\"two_men_holding_hands_dark_skin_tone_light_skin_tone\",2271],[\"men_holding_hands_dark_skin_tone_light_skin_tone\",2271],[\"two_men_holding_hands_dark_skin_tone_medium_light_skin_tone\",2272],[\"men_holding_hands_dark_skin_tone_medium_light_skin_tone\",2272],[\"two_men_holding_hands_dark_skin_tone_medium_skin_tone\",2273],[\"men_holding_hands_dark_skin_tone_medium_skin_tone\",2273],[\"two_men_holding_hands_dark_skin_tone_medium_dark_skin_tone\",2274],[\"men_holding_hands_dark_skin_tone_medium_dark_skin_tone\",2274],[\"two_women_holding_hands_light_skin_tone\",2275],[\"women_holding_hands_light_skin_tone\",2275],[\"two_women_holding_hands_medium_light_skin_tone\",2276],[\"women_holding_hands_medium_light_skin_tone\",2276],[\"two_women_holding_hands_medium_skin_tone\",2277],[\"women_holding_hands_medium_skin_tone\",2277],[\"two_women_holding_hands_medium_dark_skin_tone\",2278],[\"women_holding_hands_medium_dark_skin_tone\",2278],[\"two_women_holding_hands_dark_skin_tone\",2279],[\"women_holding_hands_dark_skin_tone\",2279],[\"two_women_holding_hands_light_skin_tone_medium_light_skin_tone\",2280],[\"women_holding_hands_light_skin_tone_medium_light_skin_tone\",2280],[\"two_women_holding_hands_light_skin_tone_medium_skin_tone\",2281],[\"women_holding_hands_light_skin_tone_medium_skin_tone\",2281],[\"two_women_holding_hands_light_skin_tone_medium_dark_skin_tone\",2282],[\"women_holding_hands_light_skin_tone_medium_dark_skin_tone\",2282],[\"two_women_holding_hands_light_skin_tone_dark_skin_tone\",2283],[\"women_holding_hands_light_skin_tone_dark_skin_tone\",2283],[\"two_women_holding_hands_medium_light_skin_tone_light_skin_tone\",2284],[\"women_holding_hands_medium_light_skin_tone_light_skin_tone\",2284],[\"two_women_holding_hands_medium_light_skin_tone_medium_skin_tone\",2285],[\"women_holding_hands_medium_light_skin_tone_medium_skin_tone\",2285],[\"two_women_holding_hands_medium_light_skin_tone_medium_dark_skin_tone\",2286],[\"women_holding_hands_medium_light_skin_tone_medium_dark_skin_tone\",2286],[\"two_women_holding_hands_medium_light_skin_tone_dark_skin_tone\",2287],[\"women_holding_hands_medium_light_skin_tone_dark_skin_tone\",2287],[\"two_women_holding_hands_medium_skin_tone_light_skin_tone\",2288],[\"women_holding_hands_medium_skin_tone_light_skin_tone\",2288],[\"two_women_holding_hands_medium_skin_tone_medium_light_skin_tone\",2289],[\"women_holding_hands_medium_skin_tone_medium_light_skin_tone\",2289],[\"two_women_holding_hands_medium_skin_tone_medium_dark_skin_tone\",2290],[\"women_holding_hands_medium_skin_tone_medium_dark_skin_tone\",2290],[\"two_women_holding_hands_medium_skin_tone_dark_skin_tone\",2291],[\"women_holding_hands_medium_skin_tone_dark_skin_tone\",2291],[\"two_women_holding_hands_medium_dark_skin_tone_light_skin_tone\",2292],[\"women_holding_hands_medium_dark_skin_tone_light_skin_tone\",2292],[\"two_women_holding_hands_medium_dark_skin_tone_medium_light_skin_tone\",2293],[\"women_holding_hands_medium_dark_skin_tone_medium_light_skin_tone\",2293],[\"two_women_holding_hands_medium_dark_skin_tone_medium_skin_tone\",2294],[\"women_holding_hands_medium_dark_skin_tone_medium_skin_tone\",2294],[\"two_women_holding_hands_medium_dark_skin_tone_dark_skin_tone\",2295],[\"women_holding_hands_medium_dark_skin_tone_dark_skin_tone\",2295],[\"two_women_holding_hands_dark_skin_tone_light_skin_tone\",2296],[\"women_holding_hands_dark_skin_tone_light_skin_tone\",2296],[\"two_women_holding_hands_dark_skin_tone_medium_light_skin_tone\",2297],[\"women_holding_hands_dark_skin_tone_medium_light_skin_tone\",2297],[\"two_women_holding_hands_dark_skin_tone_medium_skin_tone\",2298],[\"women_holding_hands_dark_skin_tone_medium_skin_tone\",2298],[\"two_women_holding_hands_dark_skin_tone_medium_dark_skin_tone\",2299],[\"women_holding_hands_dark_skin_tone_medium_dark_skin_tone\",2299],[\"female-police-officer_light_skin_tone\",2300],[\"policewoman_light_skin_tone\",2300],[\"female-police-officer_medium_light_skin_tone\",2301],[\"policewoman_medium_light_skin_tone\",2301],[\"female-police-officer_medium_skin_tone\",2302],[\"policewoman_medium_skin_tone\",2302],[\"female-police-officer_medium_dark_skin_tone\",2303],[\"policewoman_medium_dark_skin_tone\",2303],[\"female-police-officer_dark_skin_tone\",2304],[\"policewoman_dark_skin_tone\",2304],[\"male-police-officer_light_skin_tone\",2305],[\"policeman_light_skin_tone\",2305],[\"male-police-officer_medium_light_skin_tone\",2306],[\"policeman_medium_light_skin_tone\",2306],[\"male-police-officer_medium_skin_tone\",2307],[\"policeman_medium_skin_tone\",2307],[\"male-police-officer_medium_dark_skin_tone\",2308],[\"policeman_medium_dark_skin_tone\",2308],[\"male-police-officer_dark_skin_tone\",2309],[\"policeman_dark_skin_tone\",2309],[\"cop_light_skin_tone\",2310],[\"cop_medium_light_skin_tone\",2311],[\"cop_medium_skin_tone\",2312],[\"cop_medium_dark_skin_tone\",2313],[\"cop_dark_skin_tone\",2314],[\"woman_with_veil_light_skin_tone\",2315],[\"woman_with_veil_medium_light_skin_tone\",2316],[\"woman_with_veil_medium_skin_tone\",2317],[\"woman_with_veil_medium_dark_skin_tone\",2318],[\"woman_with_veil_dark_skin_tone\",2319],[\"man_with_veil_light_skin_tone\",2320],[\"man_with_veil_medium_light_skin_tone\",2321],[\"man_with_veil_medium_skin_tone\",2322],[\"man_with_veil_medium_dark_skin_tone\",2323],[\"man_with_veil_dark_skin_tone\",2324],[\"bride_with_veil_light_skin_tone\",2325],[\"bride_with_veil_medium_light_skin_tone\",2326],[\"bride_with_veil_medium_skin_tone\",2327],[\"bride_with_veil_medium_dark_skin_tone\",2328],[\"bride_with_veil_dark_skin_tone\",2329],[\"blond-haired-woman_light_skin_tone\",2330],[\"blonde_woman_light_skin_tone\",2330],[\"blond-haired-woman_medium_light_skin_tone\",2331],[\"blonde_woman_medium_light_skin_tone\",2331],[\"blond-haired-woman_medium_skin_tone\",2332],[\"blonde_woman_medium_skin_tone\",2332],[\"blond-haired-woman_medium_dark_skin_tone\",2333],[\"blonde_woman_medium_dark_skin_tone\",2333],[\"blond-haired-woman_dark_skin_tone\",2334],[\"blonde_woman_dark_skin_tone\",2334],[\"blond-haired-man_light_skin_tone\",2335],[\"blonde_man_light_skin_tone\",2335],[\"blond-haired-man_medium_light_skin_tone\",2336],[\"blonde_man_medium_light_skin_tone\",2336],[\"blond-haired-man_medium_skin_tone\",2337],[\"blonde_man_medium_skin_tone\",2337],[\"blond-haired-man_medium_dark_skin_tone\",2338],[\"blonde_man_medium_dark_skin_tone\",2338],[\"blond-haired-man_dark_skin_tone\",2339],[\"blonde_man_dark_skin_tone\",2339],[\"person_with_blond_hair_light_skin_tone\",2340],[\"person_with_blond_hair_medium_light_skin_tone\",2341],[\"person_with_blond_hair_medium_skin_tone\",2342],[\"person_with_blond_hair_medium_dark_skin_tone\",2343],[\"person_with_blond_hair_dark_skin_tone\",2344],[\"man_with_gua_pi_mao_light_skin_tone\",2345],[\"man_with_gua_pi_mao_medium_light_skin_tone\",2346],[\"man_with_gua_pi_mao_medium_skin_tone\",2347],[\"man_with_gua_pi_mao_medium_dark_skin_tone\",2348],[\"man_with_gua_pi_mao_dark_skin_tone\",2349],[\"woman-wearing-turban_light_skin_tone\",2350],[\"woman_with_turban_light_skin_tone\",2350],[\"woman-wearing-turban_medium_light_skin_tone\",2351],[\"woman_with_turban_medium_light_skin_tone\",2351],[\"woman-wearing-turban_medium_skin_tone\",2352],[\"woman_with_turban_medium_skin_tone\",2352],[\"woman-wearing-turban_medium_dark_skin_tone\",2353],[\"woman_with_turban_medium_dark_skin_tone\",2353],[\"woman-wearing-turban_dark_skin_tone\",2354],[\"woman_with_turban_dark_skin_tone\",2354],[\"man-wearing-turban_light_skin_tone\",2355],[\"man-wearing-turban_medium_light_skin_tone\",2356],[\"man-wearing-turban_medium_skin_tone\",2357],[\"man-wearing-turban_medium_dark_skin_tone\",2358],[\"man-wearing-turban_dark_skin_tone\",2359],[\"man_with_turban_light_skin_tone\",2360],[\"man_with_turban_medium_light_skin_tone\",2361],[\"man_with_turban_medium_skin_tone\",2362],[\"man_with_turban_medium_dark_skin_tone\",2363],[\"man_with_turban_dark_skin_tone\",2364],[\"older_man_light_skin_tone\",2365],[\"older_man_medium_light_skin_tone\",2366],[\"older_man_medium_skin_tone\",2367],[\"older_man_medium_dark_skin_tone\",2368],[\"older_man_dark_skin_tone\",2369],[\"older_woman_light_skin_tone\",2370],[\"older_woman_medium_light_skin_tone\",2371],[\"older_woman_medium_skin_tone\",2372],[\"older_woman_medium_dark_skin_tone\",2373],[\"older_woman_dark_skin_tone\",2374],[\"baby_light_skin_tone\",2375],[\"baby_medium_light_skin_tone\",2376],[\"baby_medium_skin_tone\",2377],[\"baby_medium_dark_skin_tone\",2378],[\"baby_dark_skin_tone\",2379],[\"female-construction-worker_light_skin_tone\",2380],[\"construction_worker_woman_light_skin_tone\",2380],[\"female-construction-worker_medium_light_skin_tone\",2381],[\"construction_worker_woman_medium_light_skin_tone\",2381],[\"female-construction-worker_medium_skin_tone\",2382],[\"construction_worker_woman_medium_skin_tone\",2382],[\"female-construction-worker_medium_dark_skin_tone\",2383],[\"construction_worker_woman_medium_dark_skin_tone\",2383],[\"female-construction-worker_dark_skin_tone\",2384],[\"construction_worker_woman_dark_skin_tone\",2384],[\"male-construction-worker_light_skin_tone\",2385],[\"construction_worker_man_light_skin_tone\",2385],[\"male-construction-worker_medium_light_skin_tone\",2386],[\"construction_worker_man_medium_light_skin_tone\",2386],[\"male-construction-worker_medium_skin_tone\",2387],[\"construction_worker_man_medium_skin_tone\",2387],[\"male-construction-worker_medium_dark_skin_tone\",2388],[\"construction_worker_man_medium_dark_skin_tone\",2388],[\"male-construction-worker_dark_skin_tone\",2389],[\"construction_worker_man_dark_skin_tone\",2389],[\"construction_worker_light_skin_tone\",2390],[\"construction_worker_medium_light_skin_tone\",2391],[\"construction_worker_medium_skin_tone\",2392],[\"construction_worker_medium_dark_skin_tone\",2393],[\"construction_worker_dark_skin_tone\",2394],[\"princess_light_skin_tone\",2395],[\"princess_medium_light_skin_tone\",2396],[\"princess_medium_skin_tone\",2397],[\"princess_medium_dark_skin_tone\",2398],[\"princess_dark_skin_tone\",2399],[\"angel_light_skin_tone\",2400],[\"angel_medium_light_skin_tone\",2401],[\"angel_medium_skin_tone\",2402],[\"angel_medium_dark_skin_tone\",2403],[\"angel_dark_skin_tone\",2404],[\"woman-tipping-hand_light_skin_tone\",2405],[\"tipping_hand_woman_light_skin_tone\",2405],[\"woman-tipping-hand_medium_light_skin_tone\",2406],[\"tipping_hand_woman_medium_light_skin_tone\",2406],[\"woman-tipping-hand_medium_skin_tone\",2407],[\"tipping_hand_woman_medium_skin_tone\",2407],[\"woman-tipping-hand_medium_dark_skin_tone\",2408],[\"tipping_hand_woman_medium_dark_skin_tone\",2408],[\"woman-tipping-hand_dark_skin_tone\",2409],[\"tipping_hand_woman_dark_skin_tone\",2409],[\"man-tipping-hand_light_skin_tone\",2410],[\"tipping_hand_man_light_skin_tone\",2410],[\"man-tipping-hand_medium_light_skin_tone\",2411],[\"tipping_hand_man_medium_light_skin_tone\",2411],[\"man-tipping-hand_medium_skin_tone\",2412],[\"tipping_hand_man_medium_skin_tone\",2412],[\"man-tipping-hand_medium_dark_skin_tone\",2413],[\"tipping_hand_man_medium_dark_skin_tone\",2413],[\"man-tipping-hand_dark_skin_tone\",2414],[\"tipping_hand_man_dark_skin_tone\",2414],[\"information_desk_person_light_skin_tone\",2415],[\"information_desk_person_medium_light_skin_tone\",2416],[\"information_desk_person_medium_skin_tone\",2417],[\"information_desk_person_medium_dark_skin_tone\",2418],[\"information_desk_person_dark_skin_tone\",2419],[\"female-guard_light_skin_tone\",2420],[\"guardswoman_light_skin_tone\",2420],[\"female-guard_medium_light_skin_tone\",2421],[\"guardswoman_medium_light_skin_tone\",2421],[\"female-guard_medium_skin_tone\",2422],[\"guardswoman_medium_skin_tone\",2422],[\"female-guard_medium_dark_skin_tone\",2423],[\"guardswoman_medium_dark_skin_tone\",2423],[\"female-guard_dark_skin_tone\",2424],[\"guardswoman_dark_skin_tone\",2424],[\"male-guard_light_skin_tone\",2425],[\"male-guard_medium_light_skin_tone\",2426],[\"male-guard_medium_skin_tone\",2427],[\"male-guard_medium_dark_skin_tone\",2428],[\"male-guard_dark_skin_tone\",2429],[\"guardsman_light_skin_tone\",2430],[\"guardsman_medium_light_skin_tone\",2431],[\"guardsman_medium_skin_tone\",2432],[\"guardsman_medium_dark_skin_tone\",2433],[\"guardsman_dark_skin_tone\",2434],[\"dancer_light_skin_tone\",2435],[\"dancer_medium_light_skin_tone\",2436],[\"dancer_medium_skin_tone\",2437],[\"dancer_medium_dark_skin_tone\",2438],[\"dancer_dark_skin_tone\",2439],[\"nail_care_light_skin_tone\",2440],[\"nail_care_medium_light_skin_tone\",2441],[\"nail_care_medium_skin_tone\",2442],[\"nail_care_medium_dark_skin_tone\",2443],[\"nail_care_dark_skin_tone\",2444],[\"woman-getting-massage_light_skin_tone\",2445],[\"massage_woman_light_skin_tone\",2445],[\"woman-getting-massage_medium_light_skin_tone\",2446],[\"massage_woman_medium_light_skin_tone\",2446],[\"woman-getting-massage_medium_skin_tone\",2447],[\"massage_woman_medium_skin_tone\",2447],[\"woman-getting-massage_medium_dark_skin_tone\",2448],[\"massage_woman_medium_dark_skin_tone\",2448],[\"woman-getting-massage_dark_skin_tone\",2449],[\"massage_woman_dark_skin_tone\",2449],[\"man-getting-massage_light_skin_tone\",2450],[\"massage_man_light_skin_tone\",2450],[\"man-getting-massage_medium_light_skin_tone\",2451],[\"massage_man_medium_light_skin_tone\",2451],[\"man-getting-massage_medium_skin_tone\",2452],[\"massage_man_medium_skin_tone\",2452],[\"man-getting-massage_medium_dark_skin_tone\",2453],[\"massage_man_medium_dark_skin_tone\",2453],[\"man-getting-massage_dark_skin_tone\",2454],[\"massage_man_dark_skin_tone\",2454],[\"massage_light_skin_tone\",2455],[\"massage_medium_light_skin_tone\",2456],[\"massage_medium_skin_tone\",2457],[\"massage_medium_dark_skin_tone\",2458],[\"massage_dark_skin_tone\",2459],[\"woman-getting-haircut_light_skin_tone\",2460],[\"haircut_woman_light_skin_tone\",2460],[\"woman-getting-haircut_medium_light_skin_tone\",2461],[\"haircut_woman_medium_light_skin_tone\",2461],[\"woman-getting-haircut_medium_skin_tone\",2462],[\"haircut_woman_medium_skin_tone\",2462],[\"woman-getting-haircut_medium_dark_skin_tone\",2463],[\"haircut_woman_medium_dark_skin_tone\",2463],[\"woman-getting-haircut_dark_skin_tone\",2464],[\"haircut_woman_dark_skin_tone\",2464],[\"man-getting-haircut_light_skin_tone\",2465],[\"haircut_man_light_skin_tone\",2465],[\"man-getting-haircut_medium_light_skin_tone\",2466],[\"haircut_man_medium_light_skin_tone\",2466],[\"man-getting-haircut_medium_skin_tone\",2467],[\"haircut_man_medium_skin_tone\",2467],[\"man-getting-haircut_medium_dark_skin_tone\",2468],[\"haircut_man_medium_dark_skin_tone\",2468],[\"man-getting-haircut_dark_skin_tone\",2469],[\"haircut_man_dark_skin_tone\",2469],[\"haircut_light_skin_tone\",2470],[\"haircut_medium_light_skin_tone\",2471],[\"haircut_medium_skin_tone\",2472],[\"haircut_medium_dark_skin_tone\",2473],[\"haircut_dark_skin_tone\",2474],[\"muscle_light_skin_tone\",2475],[\"muscle_medium_light_skin_tone\",2476],[\"muscle_medium_skin_tone\",2477],[\"muscle_medium_dark_skin_tone\",2478],[\"muscle_dark_skin_tone\",2479],[\"man_in_business_suit_levitating_light_skin_tone\",2480],[\"business_suit_levitating_light_skin_tone\",2480],[\"man_in_business_suit_levitating_medium_light_skin_tone\",2481],[\"business_suit_levitating_medium_light_skin_tone\",2481],[\"man_in_business_suit_levitating_medium_skin_tone\",2482],[\"business_suit_levitating_medium_skin_tone\",2482],[\"man_in_business_suit_levitating_medium_dark_skin_tone\",2483],[\"business_suit_levitating_medium_dark_skin_tone\",2483],[\"man_in_business_suit_levitating_dark_skin_tone\",2484],[\"business_suit_levitating_dark_skin_tone\",2484],[\"female-detective_light_skin_tone\",2485],[\"female_detective_light_skin_tone\",2485],[\"female-detective_medium_light_skin_tone\",2486],[\"female_detective_medium_light_skin_tone\",2486],[\"female-detective_medium_skin_tone\",2487],[\"female_detective_medium_skin_tone\",2487],[\"female-detective_medium_dark_skin_tone\",2488],[\"female_detective_medium_dark_skin_tone\",2488],[\"female-detective_dark_skin_tone\",2489],[\"female_detective_dark_skin_tone\",2489],[\"male-detective_light_skin_tone\",2490],[\"male_detective_light_skin_tone\",2490],[\"male-detective_medium_light_skin_tone\",2491],[\"male_detective_medium_light_skin_tone\",2491],[\"male-detective_medium_skin_tone\",2492],[\"male_detective_medium_skin_tone\",2492],[\"male-detective_medium_dark_skin_tone\",2493],[\"male_detective_medium_dark_skin_tone\",2493],[\"male-detective_dark_skin_tone\",2494],[\"male_detective_dark_skin_tone\",2494],[\"sleuth_or_spy_light_skin_tone\",2495],[\"sleuth_or_spy_medium_light_skin_tone\",2496],[\"sleuth_or_spy_medium_skin_tone\",2497],[\"sleuth_or_spy_medium_dark_skin_tone\",2498],[\"sleuth_or_spy_dark_skin_tone\",2499],[\"man_dancing_light_skin_tone\",2500],[\"man_dancing_medium_light_skin_tone\",2501],[\"man_dancing_medium_skin_tone\",2502],[\"man_dancing_medium_dark_skin_tone\",2503],[\"man_dancing_dark_skin_tone\",2504],[\"raised_hand_with_fingers_splayed_light_skin_tone\",2505],[\"raised_hand_with_fingers_splayed_medium_light_skin_tone\",2506],[\"raised_hand_with_fingers_splayed_medium_skin_tone\",2507],[\"raised_hand_with_fingers_splayed_medium_dark_skin_tone\",2508],[\"raised_hand_with_fingers_splayed_dark_skin_tone\",2509],[\"middle_finger_light_skin_tone\",2510],[\"reversed_hand_with_middle_finger_extended_light_skin_tone\",2510],[\"middle_finger_medium_light_skin_tone\",2511],[\"reversed_hand_with_middle_finger_extended_medium_light_skin_tone\",2511],[\"middle_finger_medium_skin_tone\",2512],[\"reversed_hand_with_middle_finger_extended_medium_skin_tone\",2512],[\"middle_finger_medium_dark_skin_tone\",2513],[\"reversed_hand_with_middle_finger_extended_medium_dark_skin_tone\",2513],[\"middle_finger_dark_skin_tone\",2514],[\"reversed_hand_with_middle_finger_extended_dark_skin_tone\",2514],[\"spock-hand_light_skin_tone\",2515],[\"vulcan_salute_light_skin_tone\",2515],[\"spock-hand_medium_light_skin_tone\",2516],[\"vulcan_salute_medium_light_skin_tone\",2516],[\"spock-hand_medium_skin_tone\",2517],[\"vulcan_salute_medium_skin_tone\",2517],[\"spock-hand_medium_dark_skin_tone\",2518],[\"vulcan_salute_medium_dark_skin_tone\",2518],[\"spock-hand_dark_skin_tone\",2519],[\"vulcan_salute_dark_skin_tone\",2519],[\"woman-gesturing-no_light_skin_tone\",2520],[\"no_good_woman_light_skin_tone\",2520],[\"woman-gesturing-no_medium_light_skin_tone\",2521],[\"no_good_woman_medium_light_skin_tone\",2521],[\"woman-gesturing-no_medium_skin_tone\",2522],[\"no_good_woman_medium_skin_tone\",2522],[\"woman-gesturing-no_medium_dark_skin_tone\",2523],[\"no_good_woman_medium_dark_skin_tone\",2523],[\"woman-gesturing-no_dark_skin_tone\",2524],[\"no_good_woman_dark_skin_tone\",2524],[\"man-gesturing-no_light_skin_tone\",2525],[\"no_good_man_light_skin_tone\",2525],[\"man-gesturing-no_medium_light_skin_tone\",2526],[\"no_good_man_medium_light_skin_tone\",2526],[\"man-gesturing-no_medium_skin_tone\",2527],[\"no_good_man_medium_skin_tone\",2527],[\"man-gesturing-no_medium_dark_skin_tone\",2528],[\"no_good_man_medium_dark_skin_tone\",2528],[\"man-gesturing-no_dark_skin_tone\",2529],[\"no_good_man_dark_skin_tone\",2529],[\"no_good_light_skin_tone\",2530],[\"no_good_medium_light_skin_tone\",2531],[\"no_good_medium_skin_tone\",2532],[\"no_good_medium_dark_skin_tone\",2533],[\"no_good_dark_skin_tone\",2534],[\"woman-gesturing-ok_light_skin_tone\",2535],[\"woman-gesturing-ok_medium_light_skin_tone\",2536],[\"woman-gesturing-ok_medium_skin_tone\",2537],[\"woman-gesturing-ok_medium_dark_skin_tone\",2538],[\"woman-gesturing-ok_dark_skin_tone\",2539],[\"man-gesturing-ok_light_skin_tone\",2540],[\"ok_man_light_skin_tone\",2540],[\"man-gesturing-ok_medium_light_skin_tone\",2541],[\"ok_man_medium_light_skin_tone\",2541],[\"man-gesturing-ok_medium_skin_tone\",2542],[\"ok_man_medium_skin_tone\",2542],[\"man-gesturing-ok_medium_dark_skin_tone\",2543],[\"ok_man_medium_dark_skin_tone\",2543],[\"man-gesturing-ok_dark_skin_tone\",2544],[\"ok_man_dark_skin_tone\",2544],[\"ok_woman_light_skin_tone\",2545],[\"ok_woman_medium_light_skin_tone\",2546],[\"ok_woman_medium_skin_tone\",2547],[\"ok_woman_medium_dark_skin_tone\",2548],[\"ok_woman_dark_skin_tone\",2549],[\"woman-bowing_light_skin_tone\",2550],[\"bowing_woman_light_skin_tone\",2550],[\"woman-bowing_medium_light_skin_tone\",2551],[\"bowing_woman_medium_light_skin_tone\",2551],[\"woman-bowing_medium_skin_tone\",2552],[\"bowing_woman_medium_skin_tone\",2552],[\"woman-bowing_medium_dark_skin_tone\",2553],[\"bowing_woman_medium_dark_skin_tone\",2553],[\"woman-bowing_dark_skin_tone\",2554],[\"bowing_woman_dark_skin_tone\",2554],[\"man-bowing_light_skin_tone\",2555],[\"bowing_man_light_skin_tone\",2555],[\"man-bowing_medium_light_skin_tone\",2556],[\"bowing_man_medium_light_skin_tone\",2556],[\"man-bowing_medium_skin_tone\",2557],[\"bowing_man_medium_skin_tone\",2557],[\"man-bowing_medium_dark_skin_tone\",2558],[\"bowing_man_medium_dark_skin_tone\",2558],[\"man-bowing_dark_skin_tone\",2559],[\"bowing_man_dark_skin_tone\",2559],[\"bow_light_skin_tone\",2560],[\"bow_medium_light_skin_tone\",2561],[\"bow_medium_skin_tone\",2562],[\"bow_medium_dark_skin_tone\",2563],[\"bow_dark_skin_tone\",2564],[\"woman-raising-hand_light_skin_tone\",2565],[\"raising_hand_woman_light_skin_tone\",2565],[\"woman-raising-hand_medium_light_skin_tone\",2566],[\"raising_hand_woman_medium_light_skin_tone\",2566],[\"woman-raising-hand_medium_skin_tone\",2567],[\"raising_hand_woman_medium_skin_tone\",2567],[\"woman-raising-hand_medium_dark_skin_tone\",2568],[\"raising_hand_woman_medium_dark_skin_tone\",2568],[\"woman-raising-hand_dark_skin_tone\",2569],[\"raising_hand_woman_dark_skin_tone\",2569],[\"man-raising-hand_light_skin_tone\",2570],[\"raising_hand_man_light_skin_tone\",2570],[\"man-raising-hand_medium_light_skin_tone\",2571],[\"raising_hand_man_medium_light_skin_tone\",2571],[\"man-raising-hand_medium_skin_tone\",2572],[\"raising_hand_man_medium_skin_tone\",2572],[\"man-raising-hand_medium_dark_skin_tone\",2573],[\"raising_hand_man_medium_dark_skin_tone\",2573],[\"man-raising-hand_dark_skin_tone\",2574],[\"raising_hand_man_dark_skin_tone\",2574],[\"raising_hand_light_skin_tone\",2575],[\"raising_hand_medium_light_skin_tone\",2576],[\"raising_hand_medium_skin_tone\",2577],[\"raising_hand_medium_dark_skin_tone\",2578],[\"raising_hand_dark_skin_tone\",2579],[\"raised_hands_light_skin_tone\",2580],[\"raised_hands_medium_light_skin_tone\",2581],[\"raised_hands_medium_skin_tone\",2582],[\"raised_hands_medium_dark_skin_tone\",2583],[\"raised_hands_dark_skin_tone\",2584],[\"woman-frowning_light_skin_tone\",2585],[\"frowning_woman_light_skin_tone\",2585],[\"woman-frowning_medium_light_skin_tone\",2586],[\"frowning_woman_medium_light_skin_tone\",2586],[\"woman-frowning_medium_skin_tone\",2587],[\"frowning_woman_medium_skin_tone\",2587],[\"woman-frowning_medium_dark_skin_tone\",2588],[\"frowning_woman_medium_dark_skin_tone\",2588],[\"woman-frowning_dark_skin_tone\",2589],[\"frowning_woman_dark_skin_tone\",2589],[\"man-frowning_light_skin_tone\",2590],[\"frowning_man_light_skin_tone\",2590],[\"man-frowning_medium_light_skin_tone\",2591],[\"frowning_man_medium_light_skin_tone\",2591],[\"man-frowning_medium_skin_tone\",2592],[\"frowning_man_medium_skin_tone\",2592],[\"man-frowning_medium_dark_skin_tone\",2593],[\"frowning_man_medium_dark_skin_tone\",2593],[\"man-frowning_dark_skin_tone\",2594],[\"frowning_man_dark_skin_tone\",2594],[\"person_frowning_light_skin_tone\",2595],[\"person_frowning_medium_light_skin_tone\",2596],[\"person_frowning_medium_skin_tone\",2597],[\"person_frowning_medium_dark_skin_tone\",2598],[\"person_frowning_dark_skin_tone\",2599],[\"woman-pouting_light_skin_tone\",2600],[\"pouting_woman_light_skin_tone\",2600],[\"woman-pouting_medium_light_skin_tone\",2601],[\"pouting_woman_medium_light_skin_tone\",2601],[\"woman-pouting_medium_skin_tone\",2602],[\"pouting_woman_medium_skin_tone\",2602],[\"woman-pouting_medium_dark_skin_tone\",2603],[\"pouting_woman_medium_dark_skin_tone\",2603],[\"woman-pouting_dark_skin_tone\",2604],[\"pouting_woman_dark_skin_tone\",2604],[\"man-pouting_light_skin_tone\",2605],[\"pouting_man_light_skin_tone\",2605],[\"man-pouting_medium_light_skin_tone\",2606],[\"pouting_man_medium_light_skin_tone\",2606],[\"man-pouting_medium_skin_tone\",2607],[\"pouting_man_medium_skin_tone\",2607],[\"man-pouting_medium_dark_skin_tone\",2608],[\"pouting_man_medium_dark_skin_tone\",2608],[\"man-pouting_dark_skin_tone\",2609],[\"pouting_man_dark_skin_tone\",2609],[\"person_with_pouting_face_light_skin_tone\",2610],[\"person_with_pouting_face_medium_light_skin_tone\",2611],[\"person_with_pouting_face_medium_skin_tone\",2612],[\"person_with_pouting_face_medium_dark_skin_tone\",2613],[\"person_with_pouting_face_dark_skin_tone\",2614],[\"pray_light_skin_tone\",2615],[\"pray_medium_light_skin_tone\",2616],[\"pray_medium_skin_tone\",2617],[\"pray_medium_dark_skin_tone\",2618],[\"pray_dark_skin_tone\",2619],[\"woman-rowing-boat_light_skin_tone\",2620],[\"rowing_woman_light_skin_tone\",2620],[\"woman-rowing-boat_medium_light_skin_tone\",2621],[\"rowing_woman_medium_light_skin_tone\",2621],[\"woman-rowing-boat_medium_skin_tone\",2622],[\"rowing_woman_medium_skin_tone\",2622],[\"woman-rowing-boat_medium_dark_skin_tone\",2623],[\"rowing_woman_medium_dark_skin_tone\",2623],[\"woman-rowing-boat_dark_skin_tone\",2624],[\"rowing_woman_dark_skin_tone\",2624],[\"man-rowing-boat_light_skin_tone\",2625],[\"rowing_man_light_skin_tone\",2625],[\"man-rowing-boat_medium_light_skin_tone\",2626],[\"rowing_man_medium_light_skin_tone\",2626],[\"man-rowing-boat_medium_skin_tone\",2627],[\"rowing_man_medium_skin_tone\",2627],[\"man-rowing-boat_medium_dark_skin_tone\",2628],[\"rowing_man_medium_dark_skin_tone\",2628],[\"man-rowing-boat_dark_skin_tone\",2629],[\"rowing_man_dark_skin_tone\",2629],[\"rowboat_light_skin_tone\",2630],[\"rowboat_medium_light_skin_tone\",2631],[\"rowboat_medium_skin_tone\",2632],[\"rowboat_medium_dark_skin_tone\",2633],[\"rowboat_dark_skin_tone\",2634],[\"woman-biking_light_skin_tone\",2635],[\"biking_woman_light_skin_tone\",2635],[\"woman-biking_medium_light_skin_tone\",2636],[\"biking_woman_medium_light_skin_tone\",2636],[\"woman-biking_medium_skin_tone\",2637],[\"biking_woman_medium_skin_tone\",2637],[\"woman-biking_medium_dark_skin_tone\",2638],[\"biking_woman_medium_dark_skin_tone\",2638],[\"woman-biking_dark_skin_tone\",2639],[\"biking_woman_dark_skin_tone\",2639],[\"man-biking_light_skin_tone\",2640],[\"biking_man_light_skin_tone\",2640],[\"man-biking_medium_light_skin_tone\",2641],[\"biking_man_medium_light_skin_tone\",2641],[\"man-biking_medium_skin_tone\",2642],[\"biking_man_medium_skin_tone\",2642],[\"man-biking_medium_dark_skin_tone\",2643],[\"biking_man_medium_dark_skin_tone\",2643],[\"man-biking_dark_skin_tone\",2644],[\"biking_man_dark_skin_tone\",2644],[\"bicyclist_light_skin_tone\",2645],[\"bicyclist_medium_light_skin_tone\",2646],[\"bicyclist_medium_skin_tone\",2647],[\"bicyclist_medium_dark_skin_tone\",2648],[\"bicyclist_dark_skin_tone\",2649],[\"woman-mountain-biking_light_skin_tone\",2650],[\"mountain_biking_woman_light_skin_tone\",2650],[\"woman-mountain-biking_medium_light_skin_tone\",2651],[\"mountain_biking_woman_medium_light_skin_tone\",2651],[\"woman-mountain-biking_medium_skin_tone\",2652],[\"mountain_biking_woman_medium_skin_tone\",2652],[\"woman-mountain-biking_medium_dark_skin_tone\",2653],[\"mountain_biking_woman_medium_dark_skin_tone\",2653],[\"woman-mountain-biking_dark_skin_tone\",2654],[\"mountain_biking_woman_dark_skin_tone\",2654],[\"man-mountain-biking_light_skin_tone\",2655],[\"mountain_biking_man_light_skin_tone\",2655],[\"man-mountain-biking_medium_light_skin_tone\",2656],[\"mountain_biking_man_medium_light_skin_tone\",2656],[\"man-mountain-biking_medium_skin_tone\",2657],[\"mountain_biking_man_medium_skin_tone\",2657],[\"man-mountain-biking_medium_dark_skin_tone\",2658],[\"mountain_biking_man_medium_dark_skin_tone\",2658],[\"man-mountain-biking_dark_skin_tone\",2659],[\"mountain_biking_man_dark_skin_tone\",2659],[\"mountain_bicyclist_light_skin_tone\",2660],[\"mountain_bicyclist_medium_light_skin_tone\",2661],[\"mountain_bicyclist_medium_skin_tone\",2662],[\"mountain_bicyclist_medium_dark_skin_tone\",2663],[\"mountain_bicyclist_dark_skin_tone\",2664],[\"woman-walking_light_skin_tone\",2665],[\"walking_woman_light_skin_tone\",2665],[\"woman-walking_medium_light_skin_tone\",2666],[\"walking_woman_medium_light_skin_tone\",2666],[\"woman-walking_medium_skin_tone\",2667],[\"walking_woman_medium_skin_tone\",2667],[\"woman-walking_medium_dark_skin_tone\",2668],[\"walking_woman_medium_dark_skin_tone\",2668],[\"woman-walking_dark_skin_tone\",2669],[\"walking_woman_dark_skin_tone\",2669],[\"man-walking_light_skin_tone\",2670],[\"walking_man_light_skin_tone\",2670],[\"man-walking_medium_light_skin_tone\",2671],[\"walking_man_medium_light_skin_tone\",2671],[\"man-walking_medium_skin_tone\",2672],[\"walking_man_medium_skin_tone\",2672],[\"man-walking_medium_dark_skin_tone\",2673],[\"walking_man_medium_dark_skin_tone\",2673],[\"man-walking_dark_skin_tone\",2674],[\"walking_man_dark_skin_tone\",2674],[\"walking_light_skin_tone\",2675],[\"walking_medium_light_skin_tone\",2676],[\"walking_medium_skin_tone\",2677],[\"walking_medium_dark_skin_tone\",2678],[\"walking_dark_skin_tone\",2679],[\"bath_light_skin_tone\",2680],[\"bath_medium_light_skin_tone\",2681],[\"bath_medium_skin_tone\",2682],[\"bath_medium_dark_skin_tone\",2683],[\"bath_dark_skin_tone\",2684],[\"sleeping_accommodation_light_skin_tone\",2685],[\"sleeping_accommodation_medium_light_skin_tone\",2686],[\"sleeping_accommodation_medium_skin_tone\",2687],[\"sleeping_accommodation_medium_dark_skin_tone\",2688],[\"sleeping_accommodation_dark_skin_tone\",2689],[\"pinched_fingers_light_skin_tone\",2690],[\"pinched_fingers_medium_light_skin_tone\",2691],[\"pinched_fingers_medium_skin_tone\",2692],[\"pinched_fingers_medium_dark_skin_tone\",2693],[\"pinched_fingers_dark_skin_tone\",2694],[\"pinching_hand_light_skin_tone\",2695],[\"pinching_hand_medium_light_skin_tone\",2696],[\"pinching_hand_medium_skin_tone\",2697],[\"pinching_hand_medium_dark_skin_tone\",2698],[\"pinching_hand_dark_skin_tone\",2699],[\"the_horns_light_skin_tone\",2700],[\"sign_of_the_horns_light_skin_tone\",2700],[\"metal_light_skin_tone\",2700],[\"the_horns_medium_light_skin_tone\",2701],[\"sign_of_the_horns_medium_light_skin_tone\",2701],[\"metal_medium_light_skin_tone\",2701],[\"the_horns_medium_skin_tone\",2702],[\"sign_of_the_horns_medium_skin_tone\",2702],[\"metal_medium_skin_tone\",2702],[\"the_horns_medium_dark_skin_tone\",2703],[\"sign_of_the_horns_medium_dark_skin_tone\",2703],[\"metal_medium_dark_skin_tone\",2703],[\"the_horns_dark_skin_tone\",2704],[\"sign_of_the_horns_dark_skin_tone\",2704],[\"metal_dark_skin_tone\",2704],[\"call_me_hand_light_skin_tone\",2705],[\"call_me_hand_medium_light_skin_tone\",2706],[\"call_me_hand_medium_skin_tone\",2707],[\"call_me_hand_medium_dark_skin_tone\",2708],[\"call_me_hand_dark_skin_tone\",2709],[\"raised_back_of_hand_light_skin_tone\",2710],[\"raised_back_of_hand_medium_light_skin_tone\",2711],[\"raised_back_of_hand_medium_skin_tone\",2712],[\"raised_back_of_hand_medium_dark_skin_tone\",2713],[\"raised_back_of_hand_dark_skin_tone\",2714],[\"left-facing_fist_light_skin_tone\",2715],[\"fist_left_light_skin_tone\",2715],[\"left-facing_fist_medium_light_skin_tone\",2716],[\"fist_left_medium_light_skin_tone\",2716],[\"left-facing_fist_medium_skin_tone\",2717],[\"fist_left_medium_skin_tone\",2717],[\"left-facing_fist_medium_dark_skin_tone\",2718],[\"fist_left_medium_dark_skin_tone\",2718],[\"left-facing_fist_dark_skin_tone\",2719],[\"fist_left_dark_skin_tone\",2719],[\"right-facing_fist_light_skin_tone\",2720],[\"fist_right_light_skin_tone\",2720],[\"right-facing_fist_medium_light_skin_tone\",2721],[\"fist_right_medium_light_skin_tone\",2721],[\"right-facing_fist_medium_skin_tone\",2722],[\"fist_right_medium_skin_tone\",2722],[\"right-facing_fist_medium_dark_skin_tone\",2723],[\"fist_right_medium_dark_skin_tone\",2723],[\"right-facing_fist_dark_skin_tone\",2724],[\"fist_right_dark_skin_tone\",2724],[\"crossed_fingers_light_skin_tone\",2725],[\"hand_with_index_and_middle_fingers_crossed_light_skin_tone\",2725],[\"crossed_fingers_medium_light_skin_tone\",2726],[\"hand_with_index_and_middle_fingers_crossed_medium_light_skin_tone\",2726],[\"crossed_fingers_medium_skin_tone\",2727],[\"hand_with_index_and_middle_fingers_crossed_medium_skin_tone\",2727],[\"crossed_fingers_medium_dark_skin_tone\",2728],[\"hand_with_index_and_middle_fingers_crossed_medium_dark_skin_tone\",2728],[\"crossed_fingers_dark_skin_tone\",2729],[\"hand_with_index_and_middle_fingers_crossed_dark_skin_tone\",2729],[\"i_love_you_hand_sign_light_skin_tone\",2730],[\"i_love_you_hand_sign_medium_light_skin_tone\",2731],[\"i_love_you_hand_sign_medium_skin_tone\",2732],[\"i_love_you_hand_sign_medium_dark_skin_tone\",2733],[\"i_love_you_hand_sign_dark_skin_tone\",2734],[\"woman-facepalming_light_skin_tone\",2735],[\"woman_facepalming_light_skin_tone\",2735],[\"woman-facepalming_medium_light_skin_tone\",2736],[\"woman_facepalming_medium_light_skin_tone\",2736],[\"woman-facepalming_medium_skin_tone\",2737],[\"woman_facepalming_medium_skin_tone\",2737],[\"woman-facepalming_medium_dark_skin_tone\",2738],[\"woman_facepalming_medium_dark_skin_tone\",2738],[\"woman-facepalming_dark_skin_tone\",2739],[\"woman_facepalming_dark_skin_tone\",2739],[\"man-facepalming_light_skin_tone\",2740],[\"man_facepalming_light_skin_tone\",2740],[\"man-facepalming_medium_light_skin_tone\",2741],[\"man_facepalming_medium_light_skin_tone\",2741],[\"man-facepalming_medium_skin_tone\",2742],[\"man_facepalming_medium_skin_tone\",2742],[\"man-facepalming_medium_dark_skin_tone\",2743],[\"man_facepalming_medium_dark_skin_tone\",2743],[\"man-facepalming_dark_skin_tone\",2744],[\"man_facepalming_dark_skin_tone\",2744],[\"face_palm_light_skin_tone\",2745],[\"face_palm_medium_light_skin_tone\",2746],[\"face_palm_medium_skin_tone\",2747],[\"face_palm_medium_dark_skin_tone\",2748],[\"face_palm_dark_skin_tone\",2749],[\"pregnant_woman_light_skin_tone\",2750],[\"pregnant_woman_medium_light_skin_tone\",2751],[\"pregnant_woman_medium_skin_tone\",2752],[\"pregnant_woman_medium_dark_skin_tone\",2753],[\"pregnant_woman_dark_skin_tone\",2754],[\"breast-feeding_light_skin_tone\",2755],[\"breast-feeding_medium_light_skin_tone\",2756],[\"breast-feeding_medium_skin_tone\",2757],[\"breast-feeding_medium_dark_skin_tone\",2758],[\"breast-feeding_dark_skin_tone\",2759],[\"palms_up_together_light_skin_tone\",2760],[\"palms_up_together_medium_light_skin_tone\",2761],[\"palms_up_together_medium_skin_tone\",2762],[\"palms_up_together_medium_dark_skin_tone\",2763],[\"palms_up_together_dark_skin_tone\",2764],[\"selfie_light_skin_tone\",2765],[\"selfie_medium_light_skin_tone\",2766],[\"selfie_medium_skin_tone\",2767],[\"selfie_medium_dark_skin_tone\",2768],[\"selfie_dark_skin_tone\",2769],[\"prince_light_skin_tone\",2770],[\"prince_medium_light_skin_tone\",2771],[\"prince_medium_skin_tone\",2772],[\"prince_medium_dark_skin_tone\",2773],[\"prince_dark_skin_tone\",2774],[\"woman_in_tuxedo_light_skin_tone\",2775],[\"woman_in_tuxedo_medium_light_skin_tone\",2776],[\"woman_in_tuxedo_medium_skin_tone\",2777],[\"woman_in_tuxedo_medium_dark_skin_tone\",2778],[\"woman_in_tuxedo_dark_skin_tone\",2779],[\"man_in_tuxedo_light_skin_tone\",2780],[\"man_in_tuxedo_medium_light_skin_tone\",2781],[\"man_in_tuxedo_medium_skin_tone\",2782],[\"man_in_tuxedo_medium_dark_skin_tone\",2783],[\"man_in_tuxedo_dark_skin_tone\",2784],[\"person_in_tuxedo_light_skin_tone\",2785],[\"person_in_tuxedo_medium_light_skin_tone\",2786],[\"person_in_tuxedo_medium_skin_tone\",2787],[\"person_in_tuxedo_medium_dark_skin_tone\",2788],[\"person_in_tuxedo_dark_skin_tone\",2789],[\"mrs_claus_light_skin_tone\",2790],[\"mother_christmas_light_skin_tone\",2790],[\"mrs_claus_medium_light_skin_tone\",2791],[\"mother_christmas_medium_light_skin_tone\",2791],[\"mrs_claus_medium_skin_tone\",2792],[\"mother_christmas_medium_skin_tone\",2792],[\"mrs_claus_medium_dark_skin_tone\",2793],[\"mother_christmas_medium_dark_skin_tone\",2793],[\"mrs_claus_dark_skin_tone\",2794],[\"mother_christmas_dark_skin_tone\",2794],[\"woman-shrugging_light_skin_tone\",2795],[\"woman_shrugging_light_skin_tone\",2795],[\"woman-shrugging_medium_light_skin_tone\",2796],[\"woman_shrugging_medium_light_skin_tone\",2796],[\"woman-shrugging_medium_skin_tone\",2797],[\"woman_shrugging_medium_skin_tone\",2797],[\"woman-shrugging_medium_dark_skin_tone\",2798],[\"woman_shrugging_medium_dark_skin_tone\",2798],[\"woman-shrugging_dark_skin_tone\",2799],[\"woman_shrugging_dark_skin_tone\",2799],[\"man-shrugging_light_skin_tone\",2800],[\"man_shrugging_light_skin_tone\",2800],[\"man-shrugging_medium_light_skin_tone\",2801],[\"man_shrugging_medium_light_skin_tone\",2801],[\"man-shrugging_medium_skin_tone\",2802],[\"man_shrugging_medium_skin_tone\",2802],[\"man-shrugging_medium_dark_skin_tone\",2803],[\"man_shrugging_medium_dark_skin_tone\",2803],[\"man-shrugging_dark_skin_tone\",2804],[\"man_shrugging_dark_skin_tone\",2804],[\"shrug_light_skin_tone\",2805],[\"shrug_medium_light_skin_tone\",2806],[\"shrug_medium_skin_tone\",2807],[\"shrug_medium_dark_skin_tone\",2808],[\"shrug_dark_skin_tone\",2809],[\"woman-cartwheeling_light_skin_tone\",2810],[\"woman_cartwheeling_light_skin_tone\",2810],[\"woman-cartwheeling_medium_light_skin_tone\",2811],[\"woman_cartwheeling_medium_light_skin_tone\",2811],[\"woman-cartwheeling_medium_skin_tone\",2812],[\"woman_cartwheeling_medium_skin_tone\",2812],[\"woman-cartwheeling_medium_dark_skin_tone\",2813],[\"woman_cartwheeling_medium_dark_skin_tone\",2813],[\"woman-cartwheeling_dark_skin_tone\",2814],[\"woman_cartwheeling_dark_skin_tone\",2814],[\"man-cartwheeling_light_skin_tone\",2815],[\"man_cartwheeling_light_skin_tone\",2815],[\"man-cartwheeling_medium_light_skin_tone\",2816],[\"man_cartwheeling_medium_light_skin_tone\",2816],[\"man-cartwheeling_medium_skin_tone\",2817],[\"man_cartwheeling_medium_skin_tone\",2817],[\"man-cartwheeling_medium_dark_skin_tone\",2818],[\"man_cartwheeling_medium_dark_skin_tone\",2818],[\"man-cartwheeling_dark_skin_tone\",2819],[\"man_cartwheeling_dark_skin_tone\",2819],[\"person_doing_cartwheel_light_skin_tone\",2820],[\"person_doing_cartwheel_medium_light_skin_tone\",2821],[\"person_doing_cartwheel_medium_skin_tone\",2822],[\"person_doing_cartwheel_medium_dark_skin_tone\",2823],[\"person_doing_cartwheel_dark_skin_tone\",2824],[\"woman-juggling_light_skin_tone\",2825],[\"woman_juggling_light_skin_tone\",2825],[\"woman-juggling_medium_light_skin_tone\",2826],[\"woman_juggling_medium_light_skin_tone\",2826],[\"woman-juggling_medium_skin_tone\",2827],[\"woman_juggling_medium_skin_tone\",2827],[\"woman-juggling_medium_dark_skin_tone\",2828],[\"woman_juggling_medium_dark_skin_tone\",2828],[\"woman-juggling_dark_skin_tone\",2829],[\"woman_juggling_dark_skin_tone\",2829],[\"man-juggling_light_skin_tone\",2830],[\"man_juggling_light_skin_tone\",2830],[\"man-juggling_medium_light_skin_tone\",2831],[\"man_juggling_medium_light_skin_tone\",2831],[\"man-juggling_medium_skin_tone\",2832],[\"man_juggling_medium_skin_tone\",2832],[\"man-juggling_medium_dark_skin_tone\",2833],[\"man_juggling_medium_dark_skin_tone\",2833],[\"man-juggling_dark_skin_tone\",2834],[\"man_juggling_dark_skin_tone\",2834],[\"juggling_light_skin_tone\",2835],[\"juggling_medium_light_skin_tone\",2836],[\"juggling_medium_skin_tone\",2837],[\"juggling_medium_dark_skin_tone\",2838],[\"juggling_dark_skin_tone\",2839],[\"woman-playing-water-polo_light_skin_tone\",2840],[\"woman_playing_water_polo_light_skin_tone\",2840],[\"woman-playing-water-polo_medium_light_skin_tone\",2841],[\"woman_playing_water_polo_medium_light_skin_tone\",2841],[\"woman-playing-water-polo_medium_skin_tone\",2842],[\"woman_playing_water_polo_medium_skin_tone\",2842],[\"woman-playing-water-polo_medium_dark_skin_tone\",2843],[\"woman_playing_water_polo_medium_dark_skin_tone\",2843],[\"woman-playing-water-polo_dark_skin_tone\",2844],[\"woman_playing_water_polo_dark_skin_tone\",2844],[\"man-playing-water-polo_light_skin_tone\",2845],[\"man_playing_water_polo_light_skin_tone\",2845],[\"man-playing-water-polo_medium_light_skin_tone\",2846],[\"man_playing_water_polo_medium_light_skin_tone\",2846],[\"man-playing-water-polo_medium_skin_tone\",2847],[\"man_playing_water_polo_medium_skin_tone\",2847],[\"man-playing-water-polo_medium_dark_skin_tone\",2848],[\"man_playing_water_polo_medium_dark_skin_tone\",2848],[\"man-playing-water-polo_dark_skin_tone\",2849],[\"man_playing_water_polo_dark_skin_tone\",2849],[\"water_polo_light_skin_tone\",2850],[\"water_polo_medium_light_skin_tone\",2851],[\"water_polo_medium_skin_tone\",2852],[\"water_polo_medium_dark_skin_tone\",2853],[\"water_polo_dark_skin_tone\",2854],[\"woman-playing-handball_light_skin_tone\",2855],[\"woman_playing_handball_light_skin_tone\",2855],[\"woman-playing-handball_medium_light_skin_tone\",2856],[\"woman_playing_handball_medium_light_skin_tone\",2856],[\"woman-playing-handball_medium_skin_tone\",2857],[\"woman_playing_handball_medium_skin_tone\",2857],[\"woman-playing-handball_medium_dark_skin_tone\",2858],[\"woman_playing_handball_medium_dark_skin_tone\",2858],[\"woman-playing-handball_dark_skin_tone\",2859],[\"woman_playing_handball_dark_skin_tone\",2859],[\"man-playing-handball_light_skin_tone\",2860],[\"man_playing_handball_light_skin_tone\",2860],[\"man-playing-handball_medium_light_skin_tone\",2861],[\"man_playing_handball_medium_light_skin_tone\",2861],[\"man-playing-handball_medium_skin_tone\",2862],[\"man_playing_handball_medium_skin_tone\",2862],[\"man-playing-handball_medium_dark_skin_tone\",2863],[\"man_playing_handball_medium_dark_skin_tone\",2863],[\"man-playing-handball_dark_skin_tone\",2864],[\"man_playing_handball_dark_skin_tone\",2864],[\"handball_light_skin_tone\",2865],[\"handball_medium_light_skin_tone\",2866],[\"handball_medium_skin_tone\",2867],[\"handball_medium_dark_skin_tone\",2868],[\"handball_dark_skin_tone\",2869],[\"ninja_light_skin_tone\",2870],[\"ninja_medium_light_skin_tone\",2871],[\"ninja_medium_skin_tone\",2872],[\"ninja_medium_dark_skin_tone\",2873],[\"ninja_dark_skin_tone\",2874],[\"leg_light_skin_tone\",2875],[\"leg_medium_light_skin_tone\",2876],[\"leg_medium_skin_tone\",2877],[\"leg_medium_dark_skin_tone\",2878],[\"leg_dark_skin_tone\",2879],[\"foot_light_skin_tone\",2880],[\"foot_medium_light_skin_tone\",2881],[\"foot_medium_skin_tone\",2882],[\"foot_medium_dark_skin_tone\",2883],[\"foot_dark_skin_tone\",2884],[\"female_superhero_light_skin_tone\",2885],[\"female_superhero_medium_light_skin_tone\",2886],[\"female_superhero_medium_skin_tone\",2887],[\"female_superhero_medium_dark_skin_tone\",2888],[\"female_superhero_dark_skin_tone\",2889],[\"male_superhero_light_skin_tone\",2890],[\"male_superhero_medium_light_skin_tone\",2891],[\"male_superhero_medium_skin_tone\",2892],[\"male_superhero_medium_dark_skin_tone\",2893],[\"male_superhero_dark_skin_tone\",2894],[\"superhero_light_skin_tone\",2895],[\"superhero_medium_light_skin_tone\",2896],[\"superhero_medium_skin_tone\",2897],[\"superhero_medium_dark_skin_tone\",2898],[\"superhero_dark_skin_tone\",2899],[\"female_supervillain_light_skin_tone\",2900],[\"female_supervillain_medium_light_skin_tone\",2901],[\"female_supervillain_medium_skin_tone\",2902],[\"female_supervillain_medium_dark_skin_tone\",2903],[\"female_supervillain_dark_skin_tone\",2904],[\"male_supervillain_light_skin_tone\",2905],[\"male_supervillain_medium_light_skin_tone\",2906],[\"male_supervillain_medium_skin_tone\",2907],[\"male_supervillain_medium_dark_skin_tone\",2908],[\"male_supervillain_dark_skin_tone\",2909],[\"supervillain_light_skin_tone\",2910],[\"supervillain_medium_light_skin_tone\",2911],[\"supervillain_medium_skin_tone\",2912],[\"supervillain_medium_dark_skin_tone\",2913],[\"supervillain_dark_skin_tone\",2914],[\"ear_with_hearing_aid_light_skin_tone\",2915],[\"ear_with_hearing_aid_medium_light_skin_tone\",2916],[\"ear_with_hearing_aid_medium_skin_tone\",2917],[\"ear_with_hearing_aid_medium_dark_skin_tone\",2918],[\"ear_with_hearing_aid_dark_skin_tone\",2919],[\"woman_standing_light_skin_tone\",2920],[\"woman_standing_medium_light_skin_tone\",2921],[\"woman_standing_medium_skin_tone\",2922],[\"woman_standing_medium_dark_skin_tone\",2923],[\"woman_standing_dark_skin_tone\",2924],[\"man_standing_light_skin_tone\",2925],[\"man_standing_medium_light_skin_tone\",2926],[\"man_standing_medium_skin_tone\",2927],[\"man_standing_medium_dark_skin_tone\",2928],[\"man_standing_dark_skin_tone\",2929],[\"standing_person_light_skin_tone\",2930],[\"standing_person_medium_light_skin_tone\",2931],[\"standing_person_medium_skin_tone\",2932],[\"standing_person_medium_dark_skin_tone\",2933],[\"standing_person_dark_skin_tone\",2934],[\"woman_kneeling_light_skin_tone\",2935],[\"woman_kneeling_medium_light_skin_tone\",2936],[\"woman_kneeling_medium_skin_tone\",2937],[\"woman_kneeling_medium_dark_skin_tone\",2938],[\"woman_kneeling_dark_skin_tone\",2939],[\"man_kneeling_light_skin_tone\",2940],[\"man_kneeling_medium_light_skin_tone\",2941],[\"man_kneeling_medium_skin_tone\",2942],[\"man_kneeling_medium_dark_skin_tone\",2943],[\"man_kneeling_dark_skin_tone\",2944],[\"kneeling_person_light_skin_tone\",2945],[\"kneeling_person_medium_light_skin_tone\",2946],[\"kneeling_person_medium_skin_tone\",2947],[\"kneeling_person_medium_dark_skin_tone\",2948],[\"kneeling_person_dark_skin_tone\",2949],[\"deaf_woman_light_skin_tone\",2950],[\"deaf_woman_medium_light_skin_tone\",2951],[\"deaf_woman_medium_skin_tone\",2952],[\"deaf_woman_medium_dark_skin_tone\",2953],[\"deaf_woman_dark_skin_tone\",2954],[\"deaf_man_light_skin_tone\",2955],[\"deaf_man_medium_light_skin_tone\",2956],[\"deaf_man_medium_skin_tone\",2957],[\"deaf_man_medium_dark_skin_tone\",2958],[\"deaf_man_dark_skin_tone\",2959],[\"deaf_person_light_skin_tone\",2960],[\"deaf_person_medium_light_skin_tone\",2961],[\"deaf_person_medium_skin_tone\",2962],[\"deaf_person_medium_dark_skin_tone\",2963],[\"deaf_person_dark_skin_tone\",2964],[\"farmer_light_skin_tone\",2965],[\"farmer_medium_light_skin_tone\",2966],[\"farmer_medium_skin_tone\",2967],[\"farmer_medium_dark_skin_tone\",2968],[\"farmer_dark_skin_tone\",2969],[\"cook_light_skin_tone\",2970],[\"cook_medium_light_skin_tone\",2971],[\"cook_medium_skin_tone\",2972],[\"cook_medium_dark_skin_tone\",2973],[\"cook_dark_skin_tone\",2974],[\"person_feeding_baby_light_skin_tone\",2975],[\"person_feeding_baby_medium_light_skin_tone\",2976],[\"person_feeding_baby_medium_skin_tone\",2977],[\"person_feeding_baby_medium_dark_skin_tone\",2978],[\"person_feeding_baby_dark_skin_tone\",2979],[\"mx_claus_light_skin_tone\",2980],[\"mx_claus_medium_light_skin_tone\",2981],[\"mx_claus_medium_skin_tone\",2982],[\"mx_claus_medium_dark_skin_tone\",2983],[\"mx_claus_dark_skin_tone\",2984],[\"student_light_skin_tone\",2985],[\"student_medium_light_skin_tone\",2986],[\"student_medium_skin_tone\",2987],[\"student_medium_dark_skin_tone\",2988],[\"student_dark_skin_tone\",2989],[\"singer_light_skin_tone\",2990],[\"singer_medium_light_skin_tone\",2991],[\"singer_medium_skin_tone\",2992],[\"singer_medium_dark_skin_tone\",2993],[\"singer_dark_skin_tone\",2994],[\"artist_light_skin_tone\",2995],[\"artist_medium_light_skin_tone\",2996],[\"artist_medium_skin_tone\",2997],[\"artist_medium_dark_skin_tone\",2998],[\"artist_dark_skin_tone\",2999],[\"teacher_light_skin_tone\",3000],[\"teacher_medium_light_skin_tone\",3001],[\"teacher_medium_skin_tone\",3002],[\"teacher_medium_dark_skin_tone\",3003],[\"teacher_dark_skin_tone\",3004],[\"factory_worker_light_skin_tone\",3005],[\"factory_worker_medium_light_skin_tone\",3006],[\"factory_worker_medium_skin_tone\",3007],[\"factory_worker_medium_dark_skin_tone\",3008],[\"factory_worker_dark_skin_tone\",3009],[\"technologist_light_skin_tone\",3010],[\"technologist_medium_light_skin_tone\",3011],[\"technologist_medium_skin_tone\",3012],[\"technologist_medium_dark_skin_tone\",3013],[\"technologist_dark_skin_tone\",3014],[\"office_worker_light_skin_tone\",3015],[\"office_worker_medium_light_skin_tone\",3016],[\"office_worker_medium_skin_tone\",3017],[\"office_worker_medium_dark_skin_tone\",3018],[\"office_worker_dark_skin_tone\",3019],[\"mechanic_light_skin_tone\",3020],[\"mechanic_medium_light_skin_tone\",3021],[\"mechanic_medium_skin_tone\",3022],[\"mechanic_medium_dark_skin_tone\",3023],[\"mechanic_dark_skin_tone\",3024],[\"scientist_light_skin_tone\",3025],[\"scientist_medium_light_skin_tone\",3026],[\"scientist_medium_skin_tone\",3027],[\"scientist_medium_dark_skin_tone\",3028],[\"scientist_dark_skin_tone\",3029],[\"astronaut_light_skin_tone\",3030],[\"astronaut_medium_light_skin_tone\",3031],[\"astronaut_medium_skin_tone\",3032],[\"astronaut_medium_dark_skin_tone\",3033],[\"astronaut_dark_skin_tone\",3034],[\"firefighter_light_skin_tone\",3035],[\"firefighter_medium_light_skin_tone\",3036],[\"firefighter_medium_skin_tone\",3037],[\"firefighter_medium_dark_skin_tone\",3038],[\"firefighter_dark_skin_tone\",3039],[\"people_holding_hands_light_skin_tone_light_skin_tone\",3040],[\"people_holding_hands_light_skin_tone_medium_light_skin_tone\",3041],[\"people_holding_hands_light_skin_tone_medium_skin_tone\",3042],[\"people_holding_hands_light_skin_tone_medium_dark_skin_tone\",3043],[\"people_holding_hands_light_skin_tone_dark_skin_tone\",3044],[\"people_holding_hands_medium_light_skin_tone_light_skin_tone\",3045],[\"people_holding_hands_medium_light_skin_tone_medium_light_skin_tone\",3046],[\"people_holding_hands_medium_light_skin_tone_medium_skin_tone\",3047],[\"people_holding_hands_medium_light_skin_tone_medium_dark_skin_tone\",3048],[\"people_holding_hands_medium_light_skin_tone_dark_skin_tone\",3049],[\"people_holding_hands_medium_skin_tone_light_skin_tone\",3050],[\"people_holding_hands_medium_skin_tone_medium_light_skin_tone\",3051],[\"people_holding_hands_medium_skin_tone_medium_skin_tone\",3052],[\"people_holding_hands_medium_skin_tone_medium_dark_skin_tone\",3053],[\"people_holding_hands_medium_skin_tone_dark_skin_tone\",3054],[\"people_holding_hands_medium_dark_skin_tone_light_skin_tone\",3055],[\"people_holding_hands_medium_dark_skin_tone_medium_light_skin_tone\",3056],[\"people_holding_hands_medium_dark_skin_tone_medium_skin_tone\",3057],[\"people_holding_hands_medium_dark_skin_tone_medium_dark_skin_tone\",3058],[\"people_holding_hands_medium_dark_skin_tone_dark_skin_tone\",3059],[\"people_holding_hands_dark_skin_tone_light_skin_tone\",3060],[\"people_holding_hands_dark_skin_tone_medium_light_skin_tone\",3061],[\"people_holding_hands_dark_skin_tone_medium_skin_tone\",3062],[\"people_holding_hands_dark_skin_tone_medium_dark_skin_tone\",3063],[\"people_holding_hands_dark_skin_tone_dark_skin_tone\",3064],[\"person_with_probing_cane_light_skin_tone\",3065],[\"person_with_probing_cane_medium_light_skin_tone\",3066],[\"person_with_probing_cane_medium_skin_tone\",3067],[\"person_with_probing_cane_medium_dark_skin_tone\",3068],[\"person_with_probing_cane_dark_skin_tone\",3069],[\"red_haired_person_light_skin_tone\",3070],[\"red_haired_person_medium_light_skin_tone\",3071],[\"red_haired_person_medium_skin_tone\",3072],[\"red_haired_person_medium_dark_skin_tone\",3073],[\"red_haired_person_dark_skin_tone\",3074],[\"curly_haired_person_light_skin_tone\",3075],[\"curly_haired_person_medium_light_skin_tone\",3076],[\"curly_haired_person_medium_skin_tone\",3077],[\"curly_haired_person_medium_dark_skin_tone\",3078],[\"curly_haired_person_dark_skin_tone\",3079],[\"bald_person_light_skin_tone\",3080],[\"bald_person_medium_light_skin_tone\",3081],[\"bald_person_medium_skin_tone\",3082],[\"bald_person_medium_dark_skin_tone\",3083],[\"bald_person_dark_skin_tone\",3084],[\"white_haired_person_light_skin_tone\",3085],[\"white_haired_person_medium_light_skin_tone\",3086],[\"white_haired_person_medium_skin_tone\",3087],[\"white_haired_person_medium_dark_skin_tone\",3088],[\"white_haired_person_dark_skin_tone\",3089],[\"person_in_motorized_wheelchair_light_skin_tone\",3090],[\"person_in_motorized_wheelchair_medium_light_skin_tone\",3091],[\"person_in_motorized_wheelchair_medium_skin_tone\",3092],[\"person_in_motorized_wheelchair_medium_dark_skin_tone\",3093],[\"person_in_motorized_wheelchair_dark_skin_tone\",3094],[\"person_in_manual_wheelchair_light_skin_tone\",3095],[\"person_in_manual_wheelchair_medium_light_skin_tone\",3096],[\"person_in_manual_wheelchair_medium_skin_tone\",3097],[\"person_in_manual_wheelchair_medium_dark_skin_tone\",3098],[\"person_in_manual_wheelchair_dark_skin_tone\",3099],[\"health_worker_light_skin_tone\",3100],[\"doctor_light_skin_tone\",3100],[\"health_worker_medium_light_skin_tone\",3101],[\"doctor_medium_light_skin_tone\",3101],[\"health_worker_medium_skin_tone\",3102],[\"doctor_medium_skin_tone\",3102],[\"health_worker_medium_dark_skin_tone\",3103],[\"doctor_medium_dark_skin_tone\",3103],[\"health_worker_dark_skin_tone\",3104],[\"doctor_dark_skin_tone\",3104],[\"judge_light_skin_tone\",3105],[\"judge_medium_light_skin_tone\",3106],[\"judge_medium_skin_tone\",3107],[\"judge_medium_dark_skin_tone\",3108],[\"judge_dark_skin_tone\",3109],[\"pilot_light_skin_tone\",3110],[\"pilot_medium_light_skin_tone\",3111],[\"pilot_medium_skin_tone\",3112],[\"pilot_medium_dark_skin_tone\",3113],[\"pilot_dark_skin_tone\",3114],[\"adult_light_skin_tone\",3115],[\"adult_medium_light_skin_tone\",3116],[\"adult_medium_skin_tone\",3117],[\"adult_medium_dark_skin_tone\",3118],[\"adult_dark_skin_tone\",3119],[\"child_light_skin_tone\",3120],[\"child_medium_light_skin_tone\",3121],[\"child_medium_skin_tone\",3122],[\"child_medium_dark_skin_tone\",3123],[\"child_dark_skin_tone\",3124],[\"older_adult_light_skin_tone\",3125],[\"older_adult_medium_light_skin_tone\",3126],[\"older_adult_medium_skin_tone\",3127],[\"older_adult_medium_dark_skin_tone\",3128],[\"older_adult_dark_skin_tone\",3129],[\"bearded_person_light_skin_tone\",3130],[\"bearded_person_medium_light_skin_tone\",3131],[\"bearded_person_medium_skin_tone\",3132],[\"bearded_person_medium_dark_skin_tone\",3133],[\"bearded_person_dark_skin_tone\",3134],[\"person_with_headscarf_light_skin_tone\",3135],[\"person_with_headscarf_medium_light_skin_tone\",3136],[\"person_with_headscarf_medium_skin_tone\",3137],[\"person_with_headscarf_medium_dark_skin_tone\",3138],[\"person_with_headscarf_dark_skin_tone\",3139],[\"woman_in_steamy_room_light_skin_tone\",3140],[\"woman_in_steamy_room_medium_light_skin_tone\",3141],[\"woman_in_steamy_room_medium_skin_tone\",3142],[\"woman_in_steamy_room_medium_dark_skin_tone\",3143],[\"woman_in_steamy_room_dark_skin_tone\",3144],[\"man_in_steamy_room_light_skin_tone\",3145],[\"man_in_steamy_room_medium_light_skin_tone\",3146],[\"man_in_steamy_room_medium_skin_tone\",3147],[\"man_in_steamy_room_medium_dark_skin_tone\",3148],[\"man_in_steamy_room_dark_skin_tone\",3149],[\"person_in_steamy_room_light_skin_tone\",3150],[\"person_in_steamy_room_medium_light_skin_tone\",3151],[\"person_in_steamy_room_medium_skin_tone\",3152],[\"person_in_steamy_room_medium_dark_skin_tone\",3153],[\"person_in_steamy_room_dark_skin_tone\",3154],[\"woman_climbing_light_skin_tone\",3155],[\"woman_climbing_medium_light_skin_tone\",3156],[\"woman_climbing_medium_skin_tone\",3157],[\"woman_climbing_medium_dark_skin_tone\",3158],[\"woman_climbing_dark_skin_tone\",3159],[\"man_climbing_light_skin_tone\",3160],[\"man_climbing_medium_light_skin_tone\",3161],[\"man_climbing_medium_skin_tone\",3162],[\"man_climbing_medium_dark_skin_tone\",3163],[\"man_climbing_dark_skin_tone\",3164],[\"person_climbing_light_skin_tone\",3165],[\"person_climbing_medium_light_skin_tone\",3166],[\"person_climbing_medium_skin_tone\",3167],[\"person_climbing_medium_dark_skin_tone\",3168],[\"person_climbing_dark_skin_tone\",3169],[\"woman_in_lotus_position_light_skin_tone\",3170],[\"woman_in_lotus_position_medium_light_skin_tone\",3171],[\"woman_in_lotus_position_medium_skin_tone\",3172],[\"woman_in_lotus_position_medium_dark_skin_tone\",3173],[\"woman_in_lotus_position_dark_skin_tone\",3174],[\"man_in_lotus_position_light_skin_tone\",3175],[\"man_in_lotus_position_medium_light_skin_tone\",3176],[\"man_in_lotus_position_medium_skin_tone\",3177],[\"man_in_lotus_position_medium_dark_skin_tone\",3178],[\"man_in_lotus_position_dark_skin_tone\",3179],[\"person_in_lotus_position_light_skin_tone\",3180],[\"person_in_lotus_position_medium_light_skin_tone\",3181],[\"person_in_lotus_position_medium_skin_tone\",3182],[\"person_in_lotus_position_medium_dark_skin_tone\",3183],[\"person_in_lotus_position_dark_skin_tone\",3184],[\"female_mage_light_skin_tone\",3185],[\"female_mage_medium_light_skin_tone\",3186],[\"female_mage_medium_skin_tone\",3187],[\"female_mage_medium_dark_skin_tone\",3188],[\"female_mage_dark_skin_tone\",3189],[\"male_mage_light_skin_tone\",3190],[\"male_mage_medium_light_skin_tone\",3191],[\"male_mage_medium_skin_tone\",3192],[\"male_mage_medium_dark_skin_tone\",3193],[\"male_mage_dark_skin_tone\",3194],[\"mage_light_skin_tone\",3195],[\"mage_medium_light_skin_tone\",3196],[\"mage_medium_skin_tone\",3197],[\"mage_medium_dark_skin_tone\",3198],[\"mage_dark_skin_tone\",3199],[\"female_fairy_light_skin_tone\",3200],[\"female_fairy_medium_light_skin_tone\",3201],[\"female_fairy_medium_skin_tone\",3202],[\"female_fairy_medium_dark_skin_tone\",3203],[\"female_fairy_dark_skin_tone\",3204],[\"male_fairy_light_skin_tone\",3205],[\"male_fairy_medium_light_skin_tone\",3206],[\"male_fairy_medium_skin_tone\",3207],[\"male_fairy_medium_dark_skin_tone\",3208],[\"male_fairy_dark_skin_tone\",3209],[\"fairy_light_skin_tone\",3210],[\"fairy_medium_light_skin_tone\",3211],[\"fairy_medium_skin_tone\",3212],[\"fairy_medium_dark_skin_tone\",3213],[\"fairy_dark_skin_tone\",3214],[\"female_vampire_light_skin_tone\",3215],[\"female_vampire_medium_light_skin_tone\",3216],[\"female_vampire_medium_skin_tone\",3217],[\"female_vampire_medium_dark_skin_tone\",3218],[\"female_vampire_dark_skin_tone\",3219],[\"male_vampire_light_skin_tone\",3220],[\"male_vampire_medium_light_skin_tone\",3221],[\"male_vampire_medium_skin_tone\",3222],[\"male_vampire_medium_dark_skin_tone\",3223],[\"male_vampire_dark_skin_tone\",3224],[\"vampire_light_skin_tone\",3225],[\"vampire_medium_light_skin_tone\",3226],[\"vampire_medium_skin_tone\",3227],[\"vampire_medium_dark_skin_tone\",3228],[\"vampire_dark_skin_tone\",3229],[\"mermaid_light_skin_tone\",3230],[\"mermaid_medium_light_skin_tone\",3231],[\"mermaid_medium_skin_tone\",3232],[\"mermaid_medium_dark_skin_tone\",3233],[\"mermaid_dark_skin_tone\",3234],[\"merman_light_skin_tone\",3235],[\"merman_medium_light_skin_tone\",3236],[\"merman_medium_skin_tone\",3237],[\"merman_medium_dark_skin_tone\",3238],[\"merman_dark_skin_tone\",3239],[\"merperson_light_skin_tone\",3240],[\"merperson_medium_light_skin_tone\",3241],[\"merperson_medium_skin_tone\",3242],[\"merperson_medium_dark_skin_tone\",3243],[\"merperson_dark_skin_tone\",3244],[\"female_elf_light_skin_tone\",3245],[\"female_elf_medium_light_skin_tone\",3246],[\"female_elf_medium_skin_tone\",3247],[\"female_elf_medium_dark_skin_tone\",3248],[\"female_elf_dark_skin_tone\",3249],[\"male_elf_light_skin_tone\",3250],[\"male_elf_medium_light_skin_tone\",3251],[\"male_elf_medium_skin_tone\",3252],[\"male_elf_medium_dark_skin_tone\",3253],[\"male_elf_dark_skin_tone\",3254],[\"elf_light_skin_tone\",3255],[\"elf_medium_light_skin_tone\",3256],[\"elf_medium_skin_tone\",3257],[\"elf_medium_dark_skin_tone\",3258],[\"elf_dark_skin_tone\",3259],[\"point_up_light_skin_tone\",3260],[\"point_up_medium_light_skin_tone\",3261],[\"point_up_medium_skin_tone\",3262],[\"point_up_medium_dark_skin_tone\",3263],[\"point_up_dark_skin_tone\",3264],[\"woman-bouncing-ball_light_skin_tone\",3265],[\"basketball_woman_light_skin_tone\",3265],[\"woman-bouncing-ball_medium_light_skin_tone\",3266],[\"basketball_woman_medium_light_skin_tone\",3266],[\"woman-bouncing-ball_medium_skin_tone\",3267],[\"basketball_woman_medium_skin_tone\",3267],[\"woman-bouncing-ball_medium_dark_skin_tone\",3268],[\"basketball_woman_medium_dark_skin_tone\",3268],[\"woman-bouncing-ball_dark_skin_tone\",3269],[\"basketball_woman_dark_skin_tone\",3269],[\"man-bouncing-ball_light_skin_tone\",3270],[\"basketball_man_light_skin_tone\",3270],[\"man-bouncing-ball_medium_light_skin_tone\",3271],[\"basketball_man_medium_light_skin_tone\",3271],[\"man-bouncing-ball_medium_skin_tone\",3272],[\"basketball_man_medium_skin_tone\",3272],[\"man-bouncing-ball_medium_dark_skin_tone\",3273],[\"basketball_man_medium_dark_skin_tone\",3273],[\"man-bouncing-ball_dark_skin_tone\",3274],[\"basketball_man_dark_skin_tone\",3274],[\"person_with_ball_light_skin_tone\",3275],[\"person_with_ball_medium_light_skin_tone\",3276],[\"person_with_ball_medium_skin_tone\",3277],[\"person_with_ball_medium_dark_skin_tone\",3278],[\"person_with_ball_dark_skin_tone\",3279],[\"fist_light_skin_tone\",3280],[\"fist_raised_light_skin_tone\",3280],[\"fist_medium_light_skin_tone\",3281],[\"fist_raised_medium_light_skin_tone\",3281],[\"fist_medium_skin_tone\",3282],[\"fist_raised_medium_skin_tone\",3282],[\"fist_medium_dark_skin_tone\",3283],[\"fist_raised_medium_dark_skin_tone\",3283],[\"fist_dark_skin_tone\",3284],[\"fist_raised_dark_skin_tone\",3284],[\"hand_light_skin_tone\",3285],[\"raised_hand_light_skin_tone\",3285],[\"hand_medium_light_skin_tone\",3286],[\"raised_hand_medium_light_skin_tone\",3286],[\"hand_medium_skin_tone\",3287],[\"raised_hand_medium_skin_tone\",3287],[\"hand_medium_dark_skin_tone\",3288],[\"raised_hand_medium_dark_skin_tone\",3288],[\"hand_dark_skin_tone\",3289],[\"raised_hand_dark_skin_tone\",3289],[\"v_light_skin_tone\",3290],[\"v_medium_light_skin_tone\",3291],[\"v_medium_skin_tone\",3292],[\"v_medium_dark_skin_tone\",3293],[\"v_dark_skin_tone\",3294],[\"writing_hand_light_skin_tone\",3295],[\"writing_hand_medium_light_skin_tone\",3296],[\"writing_hand_medium_skin_tone\",3297],[\"writing_hand_medium_dark_skin_tone\",3298],[\"writing_hand_dark_skin_tone\",3299],[\"mattermost\",3300]]);\n\nexport const EmojiIndicesByUnicode = new Map([[\"1f600\",0],[\"1f603\",1],[\"1f604\",2],[\"1f601\",3],[\"1f606\",4],[\"1f605\",5],[\"1f923\",6],[\"1f602\",7],[\"1f642\",8],[\"1f643\",9],[\"1f609\",10],[\"1f60a\",11],[\"1f607\",12],[\"1f970\",13],[\"1f60d\",14],[\"1f929\",15],[\"1f618\",16],[\"1f617\",17],[\"263a-fe0f\",18],[\"1f61a\",19],[\"1f619\",20],[\"1f972\",21],[\"1f60b\",22],[\"1f61b\",23],[\"1f61c\",24],[\"1f92a\",25],[\"1f61d\",26],[\"1f911\",27],[\"1f917\",28],[\"1f92d\",29],[\"1f92b\",30],[\"1f914\",31],[\"1f910\",32],[\"1f928\",33],[\"1f610\",34],[\"1f611\",35],[\"1f636\",36],[\"1f60f\",37],[\"1f612\",38],[\"1f644\",39],[\"1f62c\",40],[\"1f925\",41],[\"1f60c\",42],[\"1f614\",43],[\"1f62a\",44],[\"1f924\",45],[\"1f634\",46],[\"1f637\",47],[\"1f912\",48],[\"1f915\",49],[\"1f922\",50],[\"1f92e\",51],[\"1f927\",52],[\"1f975\",53],[\"1f976\",54],[\"1f974\",55],[\"1f635\",56],[\"1f92f\",57],[\"1f920\",58],[\"1f973\",59],[\"1f978\",60],[\"1f60e\",61],[\"1f913\",62],[\"1f9d0\",63],[\"1f615\",64],[\"1f61f\",65],[\"1f641\",66],[\"2639-fe0f\",67],[\"1f62e\",68],[\"1f62f\",69],[\"1f632\",70],[\"1f633\",71],[\"1f97a\",72],[\"1f626\",73],[\"1f627\",74],[\"1f628\",75],[\"1f630\",76],[\"1f625\",77],[\"1f622\",78],[\"1f62d\",79],[\"1f631\",80],[\"1f616\",81],[\"1f623\",82],[\"1f61e\",83],[\"1f613\",84],[\"1f629\",85],[\"1f62b\",86],[\"1f971\",87],[\"1f624\",88],[\"1f621\",89],[\"1f620\",90],[\"1f92c\",91],[\"1f608\",92],[\"1f47f\",93],[\"1f480\",94],[\"2620-fe0f\",95],[\"1f4a9\",96],[\"1f921\",97],[\"1f479\",98],[\"1f47a\",99],[\"1f47b\",100],[\"1f47d\",101],[\"1f47e\",102],[\"1f916\",103],[\"1f63a\",104],[\"1f638\",105],[\"1f639\",106],[\"1f63b\",107],[\"1f63c\",108],[\"1f63d\",109],[\"1f640\",110],[\"1f63f\",111],[\"1f63e\",112],[\"1f648\",113],[\"1f649\",114],[\"1f64a\",115],[\"1f48b\",116],[\"1f48c\",117],[\"1f498\",118],[\"1f49d\",119],[\"1f496\",120],[\"1f497\",121],[\"1f493\",122],[\"1f49e\",123],[\"1f495\",124],[\"1f49f\",125],[\"2763-fe0f\",126],[\"1f494\",127],[\"2764-fe0f\",128],[\"1f9e1\",129],[\"1f49b\",130],[\"1f49a\",131],[\"1f499\",132],[\"1f49c\",133],[\"1f90e\",134],[\"1f5a4\",135],[\"1f90d\",136],[\"1f4af\",137],[\"1f4a2\",138],[\"1f4a5\",139],[\"1f4ab\",140],[\"1f4a6\",141],[\"1f4a8\",142],[\"1f573-fe0f\",143],[\"1f4a3\",144],[\"1f4ac\",145],[\"1f441-fe0f-200d-1f5e8-fe0f\",146],[\"1f5e8-fe0f\",147],[\"1f5ef-fe0f\",148],[\"1f4ad\",149],[\"1f4a4\",150],[\"1f44b\",151],[\"1f91a\",152],[\"1f590-fe0f\",153],[\"270b\",154],[\"1f596\",155],[\"1f44c\",156],[\"1f90c\",157],[\"1f90f\",158],[\"270c-fe0f\",159],[\"1f91e\",160],[\"1f91f\",161],[\"1f918\",162],[\"1f919\",163],[\"1f448\",164],[\"1f449\",165],[\"1f446\",166],[\"1f595\",167],[\"1f447\",168],[\"261d-fe0f\",169],[\"1f44d\",170],[\"1f44e\",171],[\"270a\",172],[\"1f44a\",173],[\"1f91b\",174],[\"1f91c\",175],[\"1f44f\",176],[\"1f64c\",177],[\"1f450\",178],[\"1f932\",179],[\"1f91d\",180],[\"1f64f\",181],[\"270d-fe0f\",182],[\"1f485\",183],[\"1f933\",184],[\"1f4aa\",185],[\"1f9be\",186],[\"1f9bf\",187],[\"1f9b5\",188],[\"1f9b6\",189],[\"1f442\",190],[\"1f9bb\",191],[\"1f443\",192],[\"1f9e0\",193],[\"1fac0\",194],[\"1fac1\",195],[\"1f9b7\",196],[\"1f9b4\",197],[\"1f440\",198],[\"1f441-fe0f\",199],[\"1f445\",200],[\"1f444\",201],[\"1f476\",202],[\"1f9d2\",203],[\"1f466\",204],[\"1f467\",205],[\"1f9d1\",206],[\"1f471\",207],[\"1f468\",208],[\"1f9d4\",209],[\"1f468-200d-1f9b0\",210],[\"1f468-200d-1f9b1\",211],[\"1f468-200d-1f9b3\",212],[\"1f468-200d-1f9b2\",213],[\"1f469\",214],[\"1f469-200d-1f9b0\",215],[\"1f9d1-200d-1f9b0\",216],[\"1f469-200d-1f9b1\",217],[\"1f9d1-200d-1f9b1\",218],[\"1f469-200d-1f9b3\",219],[\"1f9d1-200d-1f9b3\",220],[\"1f469-200d-1f9b2\",221],[\"1f9d1-200d-1f9b2\",222],[\"1f471-200d-2640-fe0f\",223],[\"1f471-200d-2642-fe0f\",224],[\"1f9d3\",225],[\"1f474\",226],[\"1f475\",227],[\"1f64d\",228],[\"1f64d-200d-2642-fe0f\",229],[\"1f64d-200d-2640-fe0f\",230],[\"1f64e\",231],[\"1f64e-200d-2642-fe0f\",232],[\"1f64e-200d-2640-fe0f\",233],[\"1f645\",234],[\"1f645-200d-2642-fe0f\",235],[\"1f645-200d-2640-fe0f\",236],[\"1f646\",237],[\"1f646-200d-2642-fe0f\",238],[\"1f646-200d-2640-fe0f\",239],[\"1f481\",240],[\"1f481-200d-2642-fe0f\",241],[\"1f481-200d-2640-fe0f\",242],[\"1f64b\",243],[\"1f64b-200d-2642-fe0f\",244],[\"1f64b-200d-2640-fe0f\",245],[\"1f9cf\",246],[\"1f9cf-200d-2642-fe0f\",247],[\"1f9cf-200d-2640-fe0f\",248],[\"1f647\",249],[\"1f647-200d-2642-fe0f\",250],[\"1f647-200d-2640-fe0f\",251],[\"1f926\",252],[\"1f926-200d-2642-fe0f\",253],[\"1f926-200d-2640-fe0f\",254],[\"1f937\",255],[\"1f937-200d-2642-fe0f\",256],[\"1f937-200d-2640-fe0f\",257],[\"1f9d1-200d-2695-fe0f\",258],[\"1f468-200d-2695-fe0f\",259],[\"1f469-200d-2695-fe0f\",260],[\"1f9d1-200d-1f393\",261],[\"1f468-200d-1f393\",262],[\"1f469-200d-1f393\",263],[\"1f9d1-200d-1f3eb\",264],[\"1f468-200d-1f3eb\",265],[\"1f469-200d-1f3eb\",266],[\"1f9d1-200d-2696-fe0f\",267],[\"1f468-200d-2696-fe0f\",268],[\"1f469-200d-2696-fe0f\",269],[\"1f9d1-200d-1f33e\",270],[\"1f468-200d-1f33e\",271],[\"1f469-200d-1f33e\",272],[\"1f9d1-200d-1f373\",273],[\"1f468-200d-1f373\",274],[\"1f469-200d-1f373\",275],[\"1f9d1-200d-1f527\",276],[\"1f468-200d-1f527\",277],[\"1f469-200d-1f527\",278],[\"1f9d1-200d-1f3ed\",279],[\"1f468-200d-1f3ed\",280],[\"1f469-200d-1f3ed\",281],[\"1f9d1-200d-1f4bc\",282],[\"1f468-200d-1f4bc\",283],[\"1f469-200d-1f4bc\",284],[\"1f9d1-200d-1f52c\",285],[\"1f468-200d-1f52c\",286],[\"1f469-200d-1f52c\",287],[\"1f9d1-200d-1f4bb\",288],[\"1f468-200d-1f4bb\",289],[\"1f469-200d-1f4bb\",290],[\"1f9d1-200d-1f3a4\",291],[\"1f468-200d-1f3a4\",292],[\"1f469-200d-1f3a4\",293],[\"1f9d1-200d-1f3a8\",294],[\"1f468-200d-1f3a8\",295],[\"1f469-200d-1f3a8\",296],[\"1f9d1-200d-2708-fe0f\",297],[\"1f468-200d-2708-fe0f\",298],[\"1f469-200d-2708-fe0f\",299],[\"1f9d1-200d-1f680\",300],[\"1f468-200d-1f680\",301],[\"1f469-200d-1f680\",302],[\"1f9d1-200d-1f692\",303],[\"1f468-200d-1f692\",304],[\"1f469-200d-1f692\",305],[\"1f46e\",306],[\"1f46e-200d-2642-fe0f\",307],[\"1f46e-200d-2640-fe0f\",308],[\"1f575-fe0f\",309],[\"1f575-fe0f-200d-2642-fe0f\",310],[\"1f575-fe0f-200d-2640-fe0f\",311],[\"1f482\",312],[\"1f482-200d-2642-fe0f\",313],[\"1f482-200d-2640-fe0f\",314],[\"1f977\",315],[\"1f477\",316],[\"1f477-200d-2642-fe0f\",317],[\"1f477-200d-2640-fe0f\",318],[\"1f934\",319],[\"1f478\",320],[\"1f473\",321],[\"1f473-200d-2642-fe0f\",322],[\"1f473-200d-2640-fe0f\",323],[\"1f472\",324],[\"1f9d5\",325],[\"1f935\",326],[\"1f935-200d-2642-fe0f\",327],[\"1f935-200d-2640-fe0f\",328],[\"1f470\",329],[\"1f470-200d-2642-fe0f\",330],[\"1f470-200d-2640-fe0f\",331],[\"1f930\",332],[\"1f931\",333],[\"1f469-200d-1f37c\",334],[\"1f468-200d-1f37c\",335],[\"1f9d1-200d-1f37c\",336],[\"1f47c\",337],[\"1f385\",338],[\"1f936\",339],[\"1f9d1-200d-1f384\",340],[\"1f9b8\",341],[\"1f9b8-200d-2642-fe0f\",342],[\"1f9b8-200d-2640-fe0f\",343],[\"1f9b9\",344],[\"1f9b9-200d-2642-fe0f\",345],[\"1f9b9-200d-2640-fe0f\",346],[\"1f9d9\",347],[\"1f9d9-200d-2642-fe0f\",348],[\"1f9d9-200d-2640-fe0f\",349],[\"1f9da\",350],[\"1f9da-200d-2642-fe0f\",351],[\"1f9da-200d-2640-fe0f\",352],[\"1f9db\",353],[\"1f9db-200d-2642-fe0f\",354],[\"1f9db-200d-2640-fe0f\",355],[\"1f9dc\",356],[\"1f9dc-200d-2642-fe0f\",357],[\"1f9dc-200d-2640-fe0f\",358],[\"1f9dd\",359],[\"1f9dd-200d-2642-fe0f\",360],[\"1f9dd-200d-2640-fe0f\",361],[\"1f9de\",362],[\"1f9de-200d-2642-fe0f\",363],[\"1f9de-200d-2640-fe0f\",364],[\"1f9df\",365],[\"1f9df-200d-2642-fe0f\",366],[\"1f9df-200d-2640-fe0f\",367],[\"1f486\",368],[\"1f486-200d-2642-fe0f\",369],[\"1f486-200d-2640-fe0f\",370],[\"1f487\",371],[\"1f487-200d-2642-fe0f\",372],[\"1f487-200d-2640-fe0f\",373],[\"1f6b6\",374],[\"1f6b6-200d-2642-fe0f\",375],[\"1f6b6-200d-2640-fe0f\",376],[\"1f9cd\",377],[\"1f9cd-200d-2642-fe0f\",378],[\"1f9cd-200d-2640-fe0f\",379],[\"1f9ce\",380],[\"1f9ce-200d-2642-fe0f\",381],[\"1f9ce-200d-2640-fe0f\",382],[\"1f9d1-200d-1f9af\",383],[\"1f468-200d-1f9af\",384],[\"1f469-200d-1f9af\",385],[\"1f9d1-200d-1f9bc\",386],[\"1f468-200d-1f9bc\",387],[\"1f469-200d-1f9bc\",388],[\"1f9d1-200d-1f9bd\",389],[\"1f468-200d-1f9bd\",390],[\"1f469-200d-1f9bd\",391],[\"1f3c3\",392],[\"1f3c3-200d-2642-fe0f\",393],[\"1f3c3-200d-2640-fe0f\",394],[\"1f483\",395],[\"1f57a\",396],[\"1f574-fe0f\",397],[\"1f46f\",398],[\"1f46f-200d-2642-fe0f\",399],[\"1f46f-200d-2640-fe0f\",400],[\"1f9d6\",401],[\"1f9d6-200d-2642-fe0f\",402],[\"1f9d6-200d-2640-fe0f\",403],[\"1f9d7\",404],[\"1f9d7-200d-2642-fe0f\",405],[\"1f9d7-200d-2640-fe0f\",406],[\"1f93a\",407],[\"1f3c7\",408],[\"26f7-fe0f\",409],[\"1f3c2\",410],[\"1f3cc-fe0f\",411],[\"1f3cc-fe0f-200d-2642-fe0f\",412],[\"1f3cc-fe0f-200d-2640-fe0f\",413],[\"1f3c4\",414],[\"1f3c4-200d-2642-fe0f\",415],[\"1f3c4-200d-2640-fe0f\",416],[\"1f6a3\",417],[\"1f6a3-200d-2642-fe0f\",418],[\"1f6a3-200d-2640-fe0f\",419],[\"1f3ca\",420],[\"1f3ca-200d-2642-fe0f\",421],[\"1f3ca-200d-2640-fe0f\",422],[\"26f9-fe0f\",423],[\"26f9-fe0f-200d-2642-fe0f\",424],[\"26f9-fe0f-200d-2640-fe0f\",425],[\"1f3cb-fe0f\",426],[\"1f3cb-fe0f-200d-2642-fe0f\",427],[\"1f3cb-fe0f-200d-2640-fe0f\",428],[\"1f6b4\",429],[\"1f6b4-200d-2642-fe0f\",430],[\"1f6b4-200d-2640-fe0f\",431],[\"1f6b5\",432],[\"1f6b5-200d-2642-fe0f\",433],[\"1f6b5-200d-2640-fe0f\",434],[\"1f938\",435],[\"1f938-200d-2642-fe0f\",436],[\"1f938-200d-2640-fe0f\",437],[\"1f93c\",438],[\"1f93c-200d-2642-fe0f\",439],[\"1f93c-200d-2640-fe0f\",440],[\"1f93d\",441],[\"1f93d-200d-2642-fe0f\",442],[\"1f93d-200d-2640-fe0f\",443],[\"1f93e\",444],[\"1f93e-200d-2642-fe0f\",445],[\"1f93e-200d-2640-fe0f\",446],[\"1f939\",447],[\"1f939-200d-2642-fe0f\",448],[\"1f939-200d-2640-fe0f\",449],[\"1f9d8\",450],[\"1f9d8-200d-2642-fe0f\",451],[\"1f9d8-200d-2640-fe0f\",452],[\"1f6c0\",453],[\"1f6cc\",454],[\"1f9d1-200d-1f91d-200d-1f9d1\",455],[\"1f46d\",456],[\"1f46b\",457],[\"1f46c\",458],[\"1f48f\",459],[\"1f469-200d-2764-fe0f-200d-1f48b-200d-1f468\",460],[\"1f468-200d-2764-fe0f-200d-1f48b-200d-1f468\",461],[\"1f469-200d-2764-fe0f-200d-1f48b-200d-1f469\",462],[\"1f491\",463],[\"1f469-200d-2764-fe0f-200d-1f468\",464],[\"1f468-200d-2764-fe0f-200d-1f468\",465],[\"1f469-200d-2764-fe0f-200d-1f469\",466],[\"1f46a\",467],[\"1f468-200d-1f469-200d-1f466\",468],[\"1f468-200d-1f469-200d-1f467\",469],[\"1f468-200d-1f469-200d-1f467-200d-1f466\",470],[\"1f468-200d-1f469-200d-1f466-200d-1f466\",471],[\"1f468-200d-1f469-200d-1f467-200d-1f467\",472],[\"1f468-200d-1f468-200d-1f466\",473],[\"1f468-200d-1f468-200d-1f467\",474],[\"1f468-200d-1f468-200d-1f467-200d-1f466\",475],[\"1f468-200d-1f468-200d-1f466-200d-1f466\",476],[\"1f468-200d-1f468-200d-1f467-200d-1f467\",477],[\"1f469-200d-1f469-200d-1f466\",478],[\"1f469-200d-1f469-200d-1f467\",479],[\"1f469-200d-1f469-200d-1f467-200d-1f466\",480],[\"1f469-200d-1f469-200d-1f466-200d-1f466\",481],[\"1f469-200d-1f469-200d-1f467-200d-1f467\",482],[\"1f468-200d-1f466\",483],[\"1f468-200d-1f466-200d-1f466\",484],[\"1f468-200d-1f467\",485],[\"1f468-200d-1f467-200d-1f466\",486],[\"1f468-200d-1f467-200d-1f467\",487],[\"1f469-200d-1f466\",488],[\"1f469-200d-1f466-200d-1f466\",489],[\"1f469-200d-1f467\",490],[\"1f469-200d-1f467-200d-1f466\",491],[\"1f469-200d-1f467-200d-1f467\",492],[\"1f5e3-fe0f\",493],[\"1f464\",494],[\"1f465\",495],[\"1fac2\",496],[\"1f463\",497],[\"1f3fb\",498],[\"1f3fc\",499],[\"1f3fd\",500],[\"1f3fe\",501],[\"1f3ff\",502],[\"1f435\",503],[\"1f412\",504],[\"1f98d\",505],[\"1f9a7\",506],[\"1f436\",507],[\"1f415\",508],[\"1f9ae\",509],[\"1f415-200d-1f9ba\",510],[\"1f429\",511],[\"1f43a\",512],[\"1f98a\",513],[\"1f99d\",514],[\"1f431\",515],[\"1f408\",516],[\"1f408-200d-2b1b\",517],[\"1f981\",518],[\"1f42f\",519],[\"1f405\",520],[\"1f406\",521],[\"1f434\",522],[\"1f40e\",523],[\"1f984\",524],[\"1f993\",525],[\"1f98c\",526],[\"1f9ac\",527],[\"1f42e\",528],[\"1f402\",529],[\"1f403\",530],[\"1f404\",531],[\"1f437\",532],[\"1f416\",533],[\"1f417\",534],[\"1f43d\",535],[\"1f40f\",536],[\"1f411\",537],[\"1f410\",538],[\"1f42a\",539],[\"1f42b\",540],[\"1f999\",541],[\"1f992\",542],[\"1f418\",543],[\"1f9a3\",544],[\"1f98f\",545],[\"1f99b\",546],[\"1f42d\",547],[\"1f401\",548],[\"1f400\",549],[\"1f439\",550],[\"1f430\",551],[\"1f407\",552],[\"1f43f-fe0f\",553],[\"1f9ab\",554],[\"1f994\",555],[\"1f987\",556],[\"1f43b\",557],[\"1f43b-200d-2744-fe0f\",558],[\"1f428\",559],[\"1f43c\",560],[\"1f9a5\",561],[\"1f9a6\",562],[\"1f9a8\",563],[\"1f998\",564],[\"1f9a1\",565],[\"1f43e\",566],[\"1f983\",567],[\"1f414\",568],[\"1f413\",569],[\"1f423\",570],[\"1f424\",571],[\"1f425\",572],[\"1f426\",573],[\"1f427\",574],[\"1f54a-fe0f\",575],[\"1f985\",576],[\"1f986\",577],[\"1f9a2\",578],[\"1f989\",579],[\"1f9a4\",580],[\"1fab6\",581],[\"1f9a9\",582],[\"1f99a\",583],[\"1f99c\",584],[\"1f438\",585],[\"1f40a\",586],[\"1f422\",587],[\"1f98e\",588],[\"1f40d\",589],[\"1f432\",590],[\"1f409\",591],[\"1f995\",592],[\"1f996\",593],[\"1f433\",594],[\"1f40b\",595],[\"1f42c\",596],[\"1f9ad\",597],[\"1f41f\",598],[\"1f420\",599],[\"1f421\",600],[\"1f988\",601],[\"1f419\",602],[\"1f41a\",603],[\"1f40c\",604],[\"1f98b\",605],[\"1f41b\",606],[\"1f41c\",607],[\"1f41d\",608],[\"1fab2\",609],[\"1f41e\",610],[\"1f997\",611],[\"1fab3\",612],[\"1f577-fe0f\",613],[\"1f578-fe0f\",614],[\"1f982\",615],[\"1f99f\",616],[\"1fab0\",617],[\"1fab1\",618],[\"1f9a0\",619],[\"1f490\",620],[\"1f338\",621],[\"1f4ae\",622],[\"1f3f5-fe0f\",623],[\"1f339\",624],[\"1f940\",625],[\"1f33a\",626],[\"1f33b\",627],[\"1f33c\",628],[\"1f337\",629],[\"1f331\",630],[\"1fab4\",631],[\"1f332\",632],[\"1f333\",633],[\"1f334\",634],[\"1f335\",635],[\"1f33e\",636],[\"1f33f\",637],[\"2618-fe0f\",638],[\"1f340\",639],[\"1f341\",640],[\"1f342\",641],[\"1f343\",642],[\"1f347\",643],[\"1f348\",644],[\"1f349\",645],[\"1f34a\",646],[\"1f34b\",647],[\"1f34c\",648],[\"1f34d\",649],[\"1f96d\",650],[\"1f34e\",651],[\"1f34f\",652],[\"1f350\",653],[\"1f351\",654],[\"1f352\",655],[\"1f353\",656],[\"1fad0\",657],[\"1f95d\",658],[\"1f345\",659],[\"1fad2\",660],[\"1f965\",661],[\"1f951\",662],[\"1f346\",663],[\"1f954\",664],[\"1f955\",665],[\"1f33d\",666],[\"1f336-fe0f\",667],[\"1fad1\",668],[\"1f952\",669],[\"1f96c\",670],[\"1f966\",671],[\"1f9c4\",672],[\"1f9c5\",673],[\"1f344\",674],[\"1f95c\",675],[\"1f330\",676],[\"1f35e\",677],[\"1f950\",678],[\"1f956\",679],[\"1fad3\",680],[\"1f968\",681],[\"1f96f\",682],[\"1f95e\",683],[\"1f9c7\",684],[\"1f9c0\",685],[\"1f356\",686],[\"1f357\",687],[\"1f969\",688],[\"1f953\",689],[\"1f354\",690],[\"1f35f\",691],[\"1f355\",692],[\"1f32d\",693],[\"1f96a\",694],[\"1f32e\",695],[\"1f32f\",696],[\"1fad4\",697],[\"1f959\",698],[\"1f9c6\",699],[\"1f95a\",700],[\"1f373\",701],[\"1f958\",702],[\"1f372\",703],[\"1fad5\",704],[\"1f963\",705],[\"1f957\",706],[\"1f37f\",707],[\"1f9c8\",708],[\"1f9c2\",709],[\"1f96b\",710],[\"1f371\",711],[\"1f358\",712],[\"1f359\",713],[\"1f35a\",714],[\"1f35b\",715],[\"1f35c\",716],[\"1f35d\",717],[\"1f360\",718],[\"1f362\",719],[\"1f363\",720],[\"1f364\",721],[\"1f365\",722],[\"1f96e\",723],[\"1f361\",724],[\"1f95f\",725],[\"1f960\",726],[\"1f961\",727],[\"1f980\",728],[\"1f99e\",729],[\"1f990\",730],[\"1f991\",731],[\"1f9aa\",732],[\"1f366\",733],[\"1f367\",734],[\"1f368\",735],[\"1f369\",736],[\"1f36a\",737],[\"1f382\",738],[\"1f370\",739],[\"1f9c1\",740],[\"1f967\",741],[\"1f36b\",742],[\"1f36c\",743],[\"1f36d\",744],[\"1f36e\",745],[\"1f36f\",746],[\"1f37c\",747],[\"1f95b\",748],[\"2615\",749],[\"1fad6\",750],[\"1f375\",751],[\"1f376\",752],[\"1f37e\",753],[\"1f377\",754],[\"1f378\",755],[\"1f379\",756],[\"1f37a\",757],[\"1f37b\",758],[\"1f942\",759],[\"1f943\",760],[\"1f964\",761],[\"1f9cb\",762],[\"1f9c3\",763],[\"1f9c9\",764],[\"1f9ca\",765],[\"1f962\",766],[\"1f37d-fe0f\",767],[\"1f374\",768],[\"1f944\",769],[\"1f52a\",770],[\"1f3fa\",771],[\"1f30d\",772],[\"1f30e\",773],[\"1f30f\",774],[\"1f310\",775],[\"1f5fa-fe0f\",776],[\"1f5fe\",777],[\"1f9ed\",778],[\"1f3d4-fe0f\",779],[\"26f0-fe0f\",780],[\"1f30b\",781],[\"1f5fb\",782],[\"1f3d5-fe0f\",783],[\"1f3d6-fe0f\",784],[\"1f3dc-fe0f\",785],[\"1f3dd-fe0f\",786],[\"1f3de-fe0f\",787],[\"1f3df-fe0f\",788],[\"1f3db-fe0f\",789],[\"1f3d7-fe0f\",790],[\"1f9f1\",791],[\"1faa8\",792],[\"1fab5\",793],[\"1f6d6\",794],[\"1f3d8-fe0f\",795],[\"1f3da-fe0f\",796],[\"1f3e0\",797],[\"1f3e1\",798],[\"1f3e2\",799],[\"1f3e3\",800],[\"1f3e4\",801],[\"1f3e5\",802],[\"1f3e6\",803],[\"1f3e8\",804],[\"1f3e9\",805],[\"1f3ea\",806],[\"1f3eb\",807],[\"1f3ec\",808],[\"1f3ed\",809],[\"1f3ef\",810],[\"1f3f0\",811],[\"1f492\",812],[\"1f5fc\",813],[\"1f5fd\",814],[\"26ea\",815],[\"1f54c\",816],[\"1f6d5\",817],[\"1f54d\",818],[\"26e9-fe0f\",819],[\"1f54b\",820],[\"26f2\",821],[\"26fa\",822],[\"1f301\",823],[\"1f303\",824],[\"1f3d9-fe0f\",825],[\"1f304\",826],[\"1f305\",827],[\"1f306\",828],[\"1f307\",829],[\"1f309\",830],[\"2668-fe0f\",831],[\"1f3a0\",832],[\"1f3a1\",833],[\"1f3a2\",834],[\"1f488\",835],[\"1f3aa\",836],[\"1f682\",837],[\"1f683\",838],[\"1f684\",839],[\"1f685\",840],[\"1f686\",841],[\"1f687\",842],[\"1f688\",843],[\"1f689\",844],[\"1f68a\",845],[\"1f69d\",846],[\"1f69e\",847],[\"1f68b\",848],[\"1f68c\",849],[\"1f68d\",850],[\"1f68e\",851],[\"1f690\",852],[\"1f691\",853],[\"1f692\",854],[\"1f693\",855],[\"1f694\",856],[\"1f695\",857],[\"1f696\",858],[\"1f697\",859],[\"1f698\",860],[\"1f699\",861],[\"1f6fb\",862],[\"1f69a\",863],[\"1f69b\",864],[\"1f69c\",865],[\"1f3ce-fe0f\",866],[\"1f3cd-fe0f\",867],[\"1f6f5\",868],[\"1f9bd\",869],[\"1f9bc\",870],[\"1f6fa\",871],[\"1f6b2\",872],[\"1f6f4\",873],[\"1f6f9\",874],[\"1f6fc\",875],[\"1f68f\",876],[\"1f6e3-fe0f\",877],[\"1f6e4-fe0f\",878],[\"1f6e2-fe0f\",879],[\"26fd\",880],[\"1f6a8\",881],[\"1f6a5\",882],[\"1f6a6\",883],[\"1f6d1\",884],[\"1f6a7\",885],[\"2693\",886],[\"26f5\",887],[\"1f6f6\",888],[\"1f6a4\",889],[\"1f6f3-fe0f\",890],[\"26f4-fe0f\",891],[\"1f6e5-fe0f\",892],[\"1f6a2\",893],[\"2708-fe0f\",894],[\"1f6e9-fe0f\",895],[\"1f6eb\",896],[\"1f6ec\",897],[\"1fa82\",898],[\"1f4ba\",899],[\"1f681\",900],[\"1f69f\",901],[\"1f6a0\",902],[\"1f6a1\",903],[\"1f6f0-fe0f\",904],[\"1f680\",905],[\"1f6f8\",906],[\"1f6ce-fe0f\",907],[\"1f9f3\",908],[\"231b\",909],[\"23f3\",910],[\"231a\",911],[\"23f0\",912],[\"23f1-fe0f\",913],[\"23f2-fe0f\",914],[\"1f570-fe0f\",915],[\"1f55b\",916],[\"1f567\",917],[\"1f550\",918],[\"1f55c\",919],[\"1f551\",920],[\"1f55d\",921],[\"1f552\",922],[\"1f55e\",923],[\"1f553\",924],[\"1f55f\",925],[\"1f554\",926],[\"1f560\",927],[\"1f555\",928],[\"1f561\",929],[\"1f556\",930],[\"1f562\",931],[\"1f557\",932],[\"1f563\",933],[\"1f558\",934],[\"1f564\",935],[\"1f559\",936],[\"1f565\",937],[\"1f55a\",938],[\"1f566\",939],[\"1f311\",940],[\"1f312\",941],[\"1f313\",942],[\"1f314\",943],[\"1f315\",944],[\"1f316\",945],[\"1f317\",946],[\"1f318\",947],[\"1f319\",948],[\"1f31a\",949],[\"1f31b\",950],[\"1f31c\",951],[\"1f321-fe0f\",952],[\"2600-fe0f\",953],[\"1f31d\",954],[\"1f31e\",955],[\"1fa90\",956],[\"2b50\",957],[\"1f31f\",958],[\"1f320\",959],[\"1f30c\",960],[\"2601-fe0f\",961],[\"26c5\",962],[\"26c8-fe0f\",963],[\"1f324-fe0f\",964],[\"1f325-fe0f\",965],[\"1f326-fe0f\",966],[\"1f327-fe0f\",967],[\"1f328-fe0f\",968],[\"1f329-fe0f\",969],[\"1f32a-fe0f\",970],[\"1f32b-fe0f\",971],[\"1f32c-fe0f\",972],[\"1f300\",973],[\"1f308\",974],[\"1f302\",975],[\"2602-fe0f\",976],[\"2614\",977],[\"26f1-fe0f\",978],[\"26a1\",979],[\"2744-fe0f\",980],[\"2603-fe0f\",981],[\"26c4\",982],[\"2604-fe0f\",983],[\"1f525\",984],[\"1f4a7\",985],[\"1f30a\",986],[\"1f383\",987],[\"1f384\",988],[\"1f386\",989],[\"1f387\",990],[\"1f9e8\",991],[\"2728\",992],[\"1f388\",993],[\"1f389\",994],[\"1f38a\",995],[\"1f38b\",996],[\"1f38d\",997],[\"1f38e\",998],[\"1f38f\",999],[\"1f390\",1000],[\"1f391\",1001],[\"1f9e7\",1002],[\"1f380\",1003],[\"1f381\",1004],[\"1f397-fe0f\",1005],[\"1f39f-fe0f\",1006],[\"1f3ab\",1007],[\"1f396-fe0f\",1008],[\"1f3c6\",1009],[\"1f3c5\",1010],[\"1f947\",1011],[\"1f948\",1012],[\"1f949\",1013],[\"26bd\",1014],[\"26be\",1015],[\"1f94e\",1016],[\"1f3c0\",1017],[\"1f3d0\",1018],[\"1f3c8\",1019],[\"1f3c9\",1020],[\"1f3be\",1021],[\"1f94f\",1022],[\"1f3b3\",1023],[\"1f3cf\",1024],[\"1f3d1\",1025],[\"1f3d2\",1026],[\"1f94d\",1027],[\"1f3d3\",1028],[\"1f3f8\",1029],[\"1f94a\",1030],[\"1f94b\",1031],[\"1f945\",1032],[\"26f3\",1033],[\"26f8-fe0f\",1034],[\"1f3a3\",1035],[\"1f93f\",1036],[\"1f3bd\",1037],[\"1f3bf\",1038],[\"1f6f7\",1039],[\"1f94c\",1040],[\"1f3af\",1041],[\"1fa80\",1042],[\"1fa81\",1043],[\"1f3b1\",1044],[\"1f52e\",1045],[\"1fa84\",1046],[\"1f9ff\",1047],[\"1f3ae\",1048],[\"1f579-fe0f\",1049],[\"1f3b0\",1050],[\"1f3b2\",1051],[\"1f9e9\",1052],[\"1f9f8\",1053],[\"1fa85\",1054],[\"1fa86\",1055],[\"2660-fe0f\",1056],[\"2665-fe0f\",1057],[\"2666-fe0f\",1058],[\"2663-fe0f\",1059],[\"265f-fe0f\",1060],[\"1f0cf\",1061],[\"1f004\",1062],[\"1f3b4\",1063],[\"1f3ad\",1064],[\"1f5bc-fe0f\",1065],[\"1f3a8\",1066],[\"1f9f5\",1067],[\"1faa1\",1068],[\"1f9f6\",1069],[\"1faa2\",1070],[\"1f453\",1071],[\"1f576-fe0f\",1072],[\"1f97d\",1073],[\"1f97c\",1074],[\"1f9ba\",1075],[\"1f454\",1076],[\"1f455\",1077],[\"1f456\",1078],[\"1f9e3\",1079],[\"1f9e4\",1080],[\"1f9e5\",1081],[\"1f9e6\",1082],[\"1f457\",1083],[\"1f458\",1084],[\"1f97b\",1085],[\"1fa71\",1086],[\"1fa72\",1087],[\"1fa73\",1088],[\"1f459\",1089],[\"1f45a\",1090],[\"1f45b\",1091],[\"1f45c\",1092],[\"1f45d\",1093],[\"1f6cd-fe0f\",1094],[\"1f392\",1095],[\"1fa74\",1096],[\"1f45e\",1097],[\"1f45f\",1098],[\"1f97e\",1099],[\"1f97f\",1100],[\"1f460\",1101],[\"1f461\",1102],[\"1fa70\",1103],[\"1f462\",1104],[\"1f451\",1105],[\"1f452\",1106],[\"1f3a9\",1107],[\"1f393\",1108],[\"1f9e2\",1109],[\"1fa96\",1110],[\"26d1-fe0f\",1111],[\"1f4ff\",1112],[\"1f484\",1113],[\"1f48d\",1114],[\"1f48e\",1115],[\"1f507\",1116],[\"1f508\",1117],[\"1f509\",1118],[\"1f50a\",1119],[\"1f4e2\",1120],[\"1f4e3\",1121],[\"1f4ef\",1122],[\"1f514\",1123],[\"1f515\",1124],[\"1f3bc\",1125],[\"1f3b5\",1126],[\"1f3b6\",1127],[\"1f399-fe0f\",1128],[\"1f39a-fe0f\",1129],[\"1f39b-fe0f\",1130],[\"1f3a4\",1131],[\"1f3a7\",1132],[\"1f4fb\",1133],[\"1f3b7\",1134],[\"1fa97\",1135],[\"1f3b8\",1136],[\"1f3b9\",1137],[\"1f3ba\",1138],[\"1f3bb\",1139],[\"1fa95\",1140],[\"1f941\",1141],[\"1fa98\",1142],[\"1f4f1\",1143],[\"1f4f2\",1144],[\"260e-fe0f\",1145],[\"1f4de\",1146],[\"1f4df\",1147],[\"1f4e0\",1148],[\"1f50b\",1149],[\"1f50c\",1150],[\"1f4bb\",1151],[\"1f5a5-fe0f\",1152],[\"1f5a8-fe0f\",1153],[\"2328-fe0f\",1154],[\"1f5b1-fe0f\",1155],[\"1f5b2-fe0f\",1156],[\"1f4bd\",1157],[\"1f4be\",1158],[\"1f4bf\",1159],[\"1f4c0\",1160],[\"1f9ee\",1161],[\"1f3a5\",1162],[\"1f39e-fe0f\",1163],[\"1f4fd-fe0f\",1164],[\"1f3ac\",1165],[\"1f4fa\",1166],[\"1f4f7\",1167],[\"1f4f8\",1168],[\"1f4f9\",1169],[\"1f4fc\",1170],[\"1f50d\",1171],[\"1f50e\",1172],[\"1f56f-fe0f\",1173],[\"1f4a1\",1174],[\"1f526\",1175],[\"1f3ee\",1176],[\"1fa94\",1177],[\"1f4d4\",1178],[\"1f4d5\",1179],[\"1f4d6\",1180],[\"1f4d7\",1181],[\"1f4d8\",1182],[\"1f4d9\",1183],[\"1f4da\",1184],[\"1f4d3\",1185],[\"1f4d2\",1186],[\"1f4c3\",1187],[\"1f4dc\",1188],[\"1f4c4\",1189],[\"1f4f0\",1190],[\"1f5de-fe0f\",1191],[\"1f4d1\",1192],[\"1f516\",1193],[\"1f3f7-fe0f\",1194],[\"1f4b0\",1195],[\"1fa99\",1196],[\"1f4b4\",1197],[\"1f4b5\",1198],[\"1f4b6\",1199],[\"1f4b7\",1200],[\"1f4b8\",1201],[\"1f4b3\",1202],[\"1f9fe\",1203],[\"1f4b9\",1204],[\"2709-fe0f\",1205],[\"1f4e7\",1206],[\"1f4e8\",1207],[\"1f4e9\",1208],[\"1f4e4\",1209],[\"1f4e5\",1210],[\"1f4e6\",1211],[\"1f4eb\",1212],[\"1f4ea\",1213],[\"1f4ec\",1214],[\"1f4ed\",1215],[\"1f4ee\",1216],[\"1f5f3-fe0f\",1217],[\"270f-fe0f\",1218],[\"2712-fe0f\",1219],[\"1f58b-fe0f\",1220],[\"1f58a-fe0f\",1221],[\"1f58c-fe0f\",1222],[\"1f58d-fe0f\",1223],[\"1f4dd\",1224],[\"1f4bc\",1225],[\"1f4c1\",1226],[\"1f4c2\",1227],[\"1f5c2-fe0f\",1228],[\"1f4c5\",1229],[\"1f4c6\",1230],[\"1f5d2-fe0f\",1231],[\"1f5d3-fe0f\",1232],[\"1f4c7\",1233],[\"1f4c8\",1234],[\"1f4c9\",1235],[\"1f4ca\",1236],[\"1f4cb\",1237],[\"1f4cc\",1238],[\"1f4cd\",1239],[\"1f4ce\",1240],[\"1f587-fe0f\",1241],[\"1f4cf\",1242],[\"1f4d0\",1243],[\"2702-fe0f\",1244],[\"1f5c3-fe0f\",1245],[\"1f5c4-fe0f\",1246],[\"1f5d1-fe0f\",1247],[\"1f512\",1248],[\"1f513\",1249],[\"1f50f\",1250],[\"1f510\",1251],[\"1f511\",1252],[\"1f5dd-fe0f\",1253],[\"1f528\",1254],[\"1fa93\",1255],[\"26cf-fe0f\",1256],[\"2692-fe0f\",1257],[\"1f6e0-fe0f\",1258],[\"1f5e1-fe0f\",1259],[\"2694-fe0f\",1260],[\"1f52b\",1261],[\"1fa83\",1262],[\"1f3f9\",1263],[\"1f6e1-fe0f\",1264],[\"1fa9a\",1265],[\"1f527\",1266],[\"1fa9b\",1267],[\"1f529\",1268],[\"2699-fe0f\",1269],[\"1f5dc-fe0f\",1270],[\"2696-fe0f\",1271],[\"1f9af\",1272],[\"1f517\",1273],[\"26d3-fe0f\",1274],[\"1fa9d\",1275],[\"1f9f0\",1276],[\"1f9f2\",1277],[\"1fa9c\",1278],[\"2697-fe0f\",1279],[\"1f9ea\",1280],[\"1f9eb\",1281],[\"1f9ec\",1282],[\"1f52c\",1283],[\"1f52d\",1284],[\"1f4e1\",1285],[\"1f489\",1286],[\"1fa78\",1287],[\"1f48a\",1288],[\"1fa79\",1289],[\"1fa7a\",1290],[\"1f6aa\",1291],[\"1f6d7\",1292],[\"1fa9e\",1293],[\"1fa9f\",1294],[\"1f6cf-fe0f\",1295],[\"1f6cb-fe0f\",1296],[\"1fa91\",1297],[\"1f6bd\",1298],[\"1faa0\",1299],[\"1f6bf\",1300],[\"1f6c1\",1301],[\"1faa4\",1302],[\"1fa92\",1303],[\"1f9f4\",1304],[\"1f9f7\",1305],[\"1f9f9\",1306],[\"1f9fa\",1307],[\"1f9fb\",1308],[\"1faa3\",1309],[\"1f9fc\",1310],[\"1faa5\",1311],[\"1f9fd\",1312],[\"1f9ef\",1313],[\"1f6d2\",1314],[\"1f6ac\",1315],[\"26b0-fe0f\",1316],[\"1faa6\",1317],[\"26b1-fe0f\",1318],[\"1f5ff\",1319],[\"1faa7\",1320],[\"1f3e7\",1321],[\"1f6ae\",1322],[\"1f6b0\",1323],[\"267f\",1324],[\"1f6b9\",1325],[\"1f6ba\",1326],[\"1f6bb\",1327],[\"1f6bc\",1328],[\"1f6be\",1329],[\"1f6c2\",1330],[\"1f6c3\",1331],[\"1f6c4\",1332],[\"1f6c5\",1333],[\"26a0-fe0f\",1334],[\"1f6b8\",1335],[\"26d4\",1336],[\"1f6ab\",1337],[\"1f6b3\",1338],[\"1f6ad\",1339],[\"1f6af\",1340],[\"1f6b1\",1341],[\"1f6b7\",1342],[\"1f4f5\",1343],[\"1f51e\",1344],[\"2622-fe0f\",1345],[\"2623-fe0f\",1346],[\"2b06-fe0f\",1347],[\"2197-fe0f\",1348],[\"27a1-fe0f\",1349],[\"2198-fe0f\",1350],[\"2b07-fe0f\",1351],[\"2199-fe0f\",1352],[\"2b05-fe0f\",1353],[\"2196-fe0f\",1354],[\"2195-fe0f\",1355],[\"2194-fe0f\",1356],[\"21a9-fe0f\",1357],[\"21aa-fe0f\",1358],[\"2934-fe0f\",1359],[\"2935-fe0f\",1360],[\"1f503\",1361],[\"1f504\",1362],[\"1f519\",1363],[\"1f51a\",1364],[\"1f51b\",1365],[\"1f51c\",1366],[\"1f51d\",1367],[\"1f6d0\",1368],[\"269b-fe0f\",1369],[\"1f549-fe0f\",1370],[\"2721-fe0f\",1371],[\"2638-fe0f\",1372],[\"262f-fe0f\",1373],[\"271d-fe0f\",1374],[\"2626-fe0f\",1375],[\"262a-fe0f\",1376],[\"262e-fe0f\",1377],[\"1f54e\",1378],[\"1f52f\",1379],[\"2648\",1380],[\"2649\",1381],[\"264a\",1382],[\"264b\",1383],[\"264c\",1384],[\"264d\",1385],[\"264e\",1386],[\"264f\",1387],[\"2650\",1388],[\"2651\",1389],[\"2652\",1390],[\"2653\",1391],[\"26ce\",1392],[\"1f500\",1393],[\"1f501\",1394],[\"1f502\",1395],[\"25b6-fe0f\",1396],[\"23e9\",1397],[\"23ed-fe0f\",1398],[\"23ef-fe0f\",1399],[\"25c0-fe0f\",1400],[\"23ea\",1401],[\"23ee-fe0f\",1402],[\"1f53c\",1403],[\"23eb\",1404],[\"1f53d\",1405],[\"23ec\",1406],[\"23f8-fe0f\",1407],[\"23f9-fe0f\",1408],[\"23fa-fe0f\",1409],[\"23cf-fe0f\",1410],[\"1f3a6\",1411],[\"1f505\",1412],[\"1f506\",1413],[\"1f4f6\",1414],[\"1f4f3\",1415],[\"1f4f4\",1416],[\"2640-fe0f\",1417],[\"2642-fe0f\",1418],[\"26a7-fe0f\",1419],[\"2716-fe0f\",1420],[\"2795\",1421],[\"2796\",1422],[\"2797\",1423],[\"267e-fe0f\",1424],[\"203c-fe0f\",1425],[\"2049-fe0f\",1426],[\"2753\",1427],[\"2754\",1428],[\"2755\",1429],[\"2757\",1430],[\"3030-fe0f\",1431],[\"1f4b1\",1432],[\"1f4b2\",1433],[\"2695-fe0f\",1434],[\"267b-fe0f\",1435],[\"269c-fe0f\",1436],[\"1f531\",1437],[\"1f4db\",1438],[\"1f530\",1439],[\"2b55\",1440],[\"2705\",1441],[\"2611-fe0f\",1442],[\"2714-fe0f\",1443],[\"274c\",1444],[\"274e\",1445],[\"27b0\",1446],[\"27bf\",1447],[\"303d-fe0f\",1448],[\"2733-fe0f\",1449],[\"2734-fe0f\",1450],[\"2747-fe0f\",1451],[\"00a9-fe0f\",1452],[\"00ae-fe0f\",1453],[\"2122-fe0f\",1454],[\"0023-fe0f-20e3\",1455],[\"002a-fe0f-20e3\",1456],[\"0030-fe0f-20e3\",1457],[\"0031-fe0f-20e3\",1458],[\"0032-fe0f-20e3\",1459],[\"0033-fe0f-20e3\",1460],[\"0034-fe0f-20e3\",1461],[\"0035-fe0f-20e3\",1462],[\"0036-fe0f-20e3\",1463],[\"0037-fe0f-20e3\",1464],[\"0038-fe0f-20e3\",1465],[\"0039-fe0f-20e3\",1466],[\"1f51f\",1467],[\"1f520\",1468],[\"1f521\",1469],[\"1f522\",1470],[\"1f523\",1471],[\"1f524\",1472],[\"1f170-fe0f\",1473],[\"1f18e\",1474],[\"1f171-fe0f\",1475],[\"1f191\",1476],[\"1f192\",1477],[\"1f193\",1478],[\"2139-fe0f\",1479],[\"1f194\",1480],[\"24c2-fe0f\",1481],[\"1f195\",1482],[\"1f196\",1483],[\"1f17e-fe0f\",1484],[\"1f197\",1485],[\"1f17f-fe0f\",1486],[\"1f198\",1487],[\"1f199\",1488],[\"1f19a\",1489],[\"1f201\",1490],[\"1f202-fe0f\",1491],[\"1f237-fe0f\",1492],[\"1f236\",1493],[\"1f22f\",1494],[\"1f250\",1495],[\"1f239\",1496],[\"1f21a\",1497],[\"1f232\",1498],[\"1f251\",1499],[\"1f238\",1500],[\"1f234\",1501],[\"1f233\",1502],[\"3297-fe0f\",1503],[\"3299-fe0f\",1504],[\"1f23a\",1505],[\"1f235\",1506],[\"1f534\",1507],[\"1f7e0\",1508],[\"1f7e1\",1509],[\"1f7e2\",1510],[\"1f535\",1511],[\"1f7e3\",1512],[\"1f7e4\",1513],[\"26ab\",1514],[\"26aa\",1515],[\"1f7e5\",1516],[\"1f7e7\",1517],[\"1f7e8\",1518],[\"1f7e9\",1519],[\"1f7e6\",1520],[\"1f7ea\",1521],[\"1f7eb\",1522],[\"2b1b\",1523],[\"2b1c\",1524],[\"25fc-fe0f\",1525],[\"25fb-fe0f\",1526],[\"25fe\",1527],[\"25fd\",1528],[\"25aa-fe0f\",1529],[\"25ab-fe0f\",1530],[\"1f536\",1531],[\"1f537\",1532],[\"1f538\",1533],[\"1f539\",1534],[\"1f53a\",1535],[\"1f53b\",1536],[\"1f4a0\",1537],[\"1f518\",1538],[\"1f533\",1539],[\"1f532\",1540],[\"1f3c1\",1541],[\"1f6a9\",1542],[\"1f38c\",1543],[\"1f3f4\",1544],[\"1f3f3-fe0f\",1545],[\"1f3f3-fe0f-200d-1f308\",1546],[\"1f3f3-fe0f-200d-26a7-fe0f\",1547],[\"1f3f4-200d-2620-fe0f\",1548],[\"1f1e6-1f1e8\",1549],[\"1f1e6-1f1e9\",1550],[\"1f1e6-1f1ea\",1551],[\"1f1e6-1f1eb\",1552],[\"1f1e6-1f1ec\",1553],[\"1f1e6-1f1ee\",1554],[\"1f1e6-1f1f1\",1555],[\"1f1e6-1f1f2\",1556],[\"1f1e6-1f1f4\",1557],[\"1f1e6-1f1f6\",1558],[\"1f1e6-1f1f7\",1559],[\"1f1e6-1f1f8\",1560],[\"1f1e6-1f1f9\",1561],[\"1f1e6-1f1fa\",1562],[\"1f1e6-1f1fc\",1563],[\"1f1e6-1f1fd\",1564],[\"1f1e6-1f1ff\",1565],[\"1f1e7-1f1e6\",1566],[\"1f1e7-1f1e7\",1567],[\"1f1e7-1f1e9\",1568],[\"1f1e7-1f1ea\",1569],[\"1f1e7-1f1eb\",1570],[\"1f1e7-1f1ec\",1571],[\"1f1e7-1f1ed\",1572],[\"1f1e7-1f1ee\",1573],[\"1f1e7-1f1ef\",1574],[\"1f1e7-1f1f1\",1575],[\"1f1e7-1f1f2\",1576],[\"1f1e7-1f1f3\",1577],[\"1f1e7-1f1f4\",1578],[\"1f1e7-1f1f6\",1579],[\"1f1e7-1f1f7\",1580],[\"1f1e7-1f1f8\",1581],[\"1f1e7-1f1f9\",1582],[\"1f1e7-1f1fb\",1583],[\"1f1e7-1f1fc\",1584],[\"1f1e7-1f1fe\",1585],[\"1f1e7-1f1ff\",1586],[\"1f1e8-1f1e6\",1587],[\"1f1e8-1f1e8\",1588],[\"1f1e8-1f1e9\",1589],[\"1f1e8-1f1eb\",1590],[\"1f1e8-1f1ec\",1591],[\"1f1e8-1f1ed\",1592],[\"1f1e8-1f1ee\",1593],[\"1f1e8-1f1f0\",1594],[\"1f1e8-1f1f1\",1595],[\"1f1e8-1f1f2\",1596],[\"1f1e8-1f1f3\",1597],[\"1f1e8-1f1f4\",1598],[\"1f1e8-1f1f5\",1599],[\"1f1e8-1f1f7\",1600],[\"1f1e8-1f1fa\",1601],[\"1f1e8-1f1fb\",1602],[\"1f1e8-1f1fc\",1603],[\"1f1e8-1f1fd\",1604],[\"1f1e8-1f1fe\",1605],[\"1f1e8-1f1ff\",1606],[\"1f1e9-1f1ea\",1607],[\"1f1e9-1f1ec\",1608],[\"1f1e9-1f1ef\",1609],[\"1f1e9-1f1f0\",1610],[\"1f1e9-1f1f2\",1611],[\"1f1e9-1f1f4\",1612],[\"1f1e9-1f1ff\",1613],[\"1f1ea-1f1e6\",1614],[\"1f1ea-1f1e8\",1615],[\"1f1ea-1f1ea\",1616],[\"1f1ea-1f1ec\",1617],[\"1f1ea-1f1ed\",1618],[\"1f1ea-1f1f7\",1619],[\"1f1ea-1f1f8\",1620],[\"1f1ea-1f1f9\",1621],[\"1f1ea-1f1fa\",1622],[\"1f1eb-1f1ee\",1623],[\"1f1eb-1f1ef\",1624],[\"1f1eb-1f1f0\",1625],[\"1f1eb-1f1f2\",1626],[\"1f1eb-1f1f4\",1627],[\"1f1eb-1f1f7\",1628],[\"1f1ec-1f1e6\",1629],[\"1f1ec-1f1e7\",1630],[\"1f1ec-1f1e9\",1631],[\"1f1ec-1f1ea\",1632],[\"1f1ec-1f1eb\",1633],[\"1f1ec-1f1ec\",1634],[\"1f1ec-1f1ed\",1635],[\"1f1ec-1f1ee\",1636],[\"1f1ec-1f1f1\",1637],[\"1f1ec-1f1f2\",1638],[\"1f1ec-1f1f3\",1639],[\"1f1ec-1f1f5\",1640],[\"1f1ec-1f1f6\",1641],[\"1f1ec-1f1f7\",1642],[\"1f1ec-1f1f8\",1643],[\"1f1ec-1f1f9\",1644],[\"1f1ec-1f1fa\",1645],[\"1f1ec-1f1fc\",1646],[\"1f1ec-1f1fe\",1647],[\"1f1ed-1f1f0\",1648],[\"1f1ed-1f1f2\",1649],[\"1f1ed-1f1f3\",1650],[\"1f1ed-1f1f7\",1651],[\"1f1ed-1f1f9\",1652],[\"1f1ed-1f1fa\",1653],[\"1f1ee-1f1e8\",1654],[\"1f1ee-1f1e9\",1655],[\"1f1ee-1f1ea\",1656],[\"1f1ee-1f1f1\",1657],[\"1f1ee-1f1f2\",1658],[\"1f1ee-1f1f3\",1659],[\"1f1ee-1f1f4\",1660],[\"1f1ee-1f1f6\",1661],[\"1f1ee-1f1f7\",1662],[\"1f1ee-1f1f8\",1663],[\"1f1ee-1f1f9\",1664],[\"1f1ef-1f1ea\",1665],[\"1f1ef-1f1f2\",1666],[\"1f1ef-1f1f4\",1667],[\"1f1ef-1f1f5\",1668],[\"1f1f0-1f1ea\",1669],[\"1f1f0-1f1ec\",1670],[\"1f1f0-1f1ed\",1671],[\"1f1f0-1f1ee\",1672],[\"1f1f0-1f1f2\",1673],[\"1f1f0-1f1f3\",1674],[\"1f1f0-1f1f5\",1675],[\"1f1f0-1f1f7\",1676],[\"1f1f0-1f1fc\",1677],[\"1f1f0-1f1fe\",1678],[\"1f1f0-1f1ff\",1679],[\"1f1f1-1f1e6\",1680],[\"1f1f1-1f1e7\",1681],[\"1f1f1-1f1e8\",1682],[\"1f1f1-1f1ee\",1683],[\"1f1f1-1f1f0\",1684],[\"1f1f1-1f1f7\",1685],[\"1f1f1-1f1f8\",1686],[\"1f1f1-1f1f9\",1687],[\"1f1f1-1f1fa\",1688],[\"1f1f1-1f1fb\",1689],[\"1f1f1-1f1fe\",1690],[\"1f1f2-1f1e6\",1691],[\"1f1f2-1f1e8\",1692],[\"1f1f2-1f1e9\",1693],[\"1f1f2-1f1ea\",1694],[\"1f1f2-1f1eb\",1695],[\"1f1f2-1f1ec\",1696],[\"1f1f2-1f1ed\",1697],[\"1f1f2-1f1f0\",1698],[\"1f1f2-1f1f1\",1699],[\"1f1f2-1f1f2\",1700],[\"1f1f2-1f1f3\",1701],[\"1f1f2-1f1f4\",1702],[\"1f1f2-1f1f5\",1703],[\"1f1f2-1f1f6\",1704],[\"1f1f2-1f1f7\",1705],[\"1f1f2-1f1f8\",1706],[\"1f1f2-1f1f9\",1707],[\"1f1f2-1f1fa\",1708],[\"1f1f2-1f1fb\",1709],[\"1f1f2-1f1fc\",1710],[\"1f1f2-1f1fd\",1711],[\"1f1f2-1f1fe\",1712],[\"1f1f2-1f1ff\",1713],[\"1f1f3-1f1e6\",1714],[\"1f1f3-1f1e8\",1715],[\"1f1f3-1f1ea\",1716],[\"1f1f3-1f1eb\",1717],[\"1f1f3-1f1ec\",1718],[\"1f1f3-1f1ee\",1719],[\"1f1f3-1f1f1\",1720],[\"1f1f3-1f1f4\",1721],[\"1f1f3-1f1f5\",1722],[\"1f1f3-1f1f7\",1723],[\"1f1f3-1f1fa\",1724],[\"1f1f3-1f1ff\",1725],[\"1f1f4-1f1f2\",1726],[\"1f1f5-1f1e6\",1727],[\"1f1f5-1f1ea\",1728],[\"1f1f5-1f1eb\",1729],[\"1f1f5-1f1ec\",1730],[\"1f1f5-1f1ed\",1731],[\"1f1f5-1f1f0\",1732],[\"1f1f5-1f1f1\",1733],[\"1f1f5-1f1f2\",1734],[\"1f1f5-1f1f3\",1735],[\"1f1f5-1f1f7\",1736],[\"1f1f5-1f1f8\",1737],[\"1f1f5-1f1f9\",1738],[\"1f1f5-1f1fc\",1739],[\"1f1f5-1f1fe\",1740],[\"1f1f6-1f1e6\",1741],[\"1f1f7-1f1ea\",1742],[\"1f1f7-1f1f4\",1743],[\"1f1f7-1f1f8\",1744],[\"1f1f7-1f1fa\",1745],[\"1f1f7-1f1fc\",1746],[\"1f1f8-1f1e6\",1747],[\"1f1f8-1f1e7\",1748],[\"1f1f8-1f1e8\",1749],[\"1f1f8-1f1e9\",1750],[\"1f1f8-1f1ea\",1751],[\"1f1f8-1f1ec\",1752],[\"1f1f8-1f1ed\",1753],[\"1f1f8-1f1ee\",1754],[\"1f1f8-1f1ef\",1755],[\"1f1f8-1f1f0\",1756],[\"1f1f8-1f1f1\",1757],[\"1f1f8-1f1f2\",1758],[\"1f1f8-1f1f3\",1759],[\"1f1f8-1f1f4\",1760],[\"1f1f8-1f1f7\",1761],[\"1f1f8-1f1f8\",1762],[\"1f1f8-1f1f9\",1763],[\"1f1f8-1f1fb\",1764],[\"1f1f8-1f1fd\",1765],[\"1f1f8-1f1fe\",1766],[\"1f1f8-1f1ff\",1767],[\"1f1f9-1f1e6\",1768],[\"1f1f9-1f1e8\",1769],[\"1f1f9-1f1e9\",1770],[\"1f1f9-1f1eb\",1771],[\"1f1f9-1f1ec\",1772],[\"1f1f9-1f1ed\",1773],[\"1f1f9-1f1ef\",1774],[\"1f1f9-1f1f0\",1775],[\"1f1f9-1f1f1\",1776],[\"1f1f9-1f1f2\",1777],[\"1f1f9-1f1f3\",1778],[\"1f1f9-1f1f4\",1779],[\"1f1f9-1f1f7\",1780],[\"1f1f9-1f1f9\",1781],[\"1f1f9-1f1fb\",1782],[\"1f1f9-1f1fc\",1783],[\"1f1f9-1f1ff\",1784],[\"1f1fa-1f1e6\",1785],[\"1f1fa-1f1ec\",1786],[\"1f1fa-1f1f2\",1787],[\"1f1fa-1f1f3\",1788],[\"1f1fa-1f1f8\",1789],[\"1f1fa-1f1fe\",1790],[\"1f1fa-1f1ff\",1791],[\"1f1fb-1f1e6\",1792],[\"1f1fb-1f1e8\",1793],[\"1f1fb-1f1ea\",1794],[\"1f1fb-1f1ec\",1795],[\"1f1fb-1f1ee\",1796],[\"1f1fb-1f1f3\",1797],[\"1f1fb-1f1fa\",1798],[\"1f1fc-1f1eb\",1799],[\"1f1fc-1f1f8\",1800],[\"1f1fd-1f1f0\",1801],[\"1f1fe-1f1ea\",1802],[\"1f1fe-1f1f9\",1803],[\"1f1ff-1f1e6\",1804],[\"1f1ff-1f1f2\",1805],[\"1f1ff-1f1fc\",1806],[\"1f3f4-e0067-e0062-e0065-e006e-e0067-e007f\",1807],[\"1f3f4-e0067-e0062-e0073-e0063-e0074-e007f\",1808],[\"1f3f4-e0067-e0062-e0077-e006c-e0073-e007f\",1809],[\"1f385-1f3fb\",1810],[\"1f385-1f3fc\",1811],[\"1f385-1f3fd\",1812],[\"1f385-1f3fe\",1813],[\"1f385-1f3ff\",1814],[\"1f3c2-1f3fb\",1815],[\"1f3c2-1f3fc\",1816],[\"1f3c2-1f3fd\",1817],[\"1f3c2-1f3fe\",1818],[\"1f3c2-1f3ff\",1819],[\"1f3c3-1f3fb-200d-2640-fe0f\",1820],[\"1f3c3-1f3fc-200d-2640-fe0f\",1821],[\"1f3c3-1f3fd-200d-2640-fe0f\",1822],[\"1f3c3-1f3fe-200d-2640-fe0f\",1823],[\"1f3c3-1f3ff-200d-2640-fe0f\",1824],[\"1f3c3-1f3fb-200d-2642-fe0f\",1825],[\"1f3c3-1f3fc-200d-2642-fe0f\",1826],[\"1f3c3-1f3fd-200d-2642-fe0f\",1827],[\"1f3c3-1f3fe-200d-2642-fe0f\",1828],[\"1f3c3-1f3ff-200d-2642-fe0f\",1829],[\"1f3c3-1f3fb\",1830],[\"1f3c3-1f3fc\",1831],[\"1f3c3-1f3fd\",1832],[\"1f3c3-1f3fe\",1833],[\"1f3c3-1f3ff\",1834],[\"1f3c4-1f3fb-200d-2640-fe0f\",1835],[\"1f3c4-1f3fc-200d-2640-fe0f\",1836],[\"1f3c4-1f3fd-200d-2640-fe0f\",1837],[\"1f3c4-1f3fe-200d-2640-fe0f\",1838],[\"1f3c4-1f3ff-200d-2640-fe0f\",1839],[\"1f3c4-1f3fb-200d-2642-fe0f\",1840],[\"1f3c4-1f3fc-200d-2642-fe0f\",1841],[\"1f3c4-1f3fd-200d-2642-fe0f\",1842],[\"1f3c4-1f3fe-200d-2642-fe0f\",1843],[\"1f3c4-1f3ff-200d-2642-fe0f\",1844],[\"1f3c4-1f3fb\",1845],[\"1f3c4-1f3fc\",1846],[\"1f3c4-1f3fd\",1847],[\"1f3c4-1f3fe\",1848],[\"1f3c4-1f3ff\",1849],[\"1f3c7-1f3fb\",1850],[\"1f3c7-1f3fc\",1851],[\"1f3c7-1f3fd\",1852],[\"1f3c7-1f3fe\",1853],[\"1f3c7-1f3ff\",1854],[\"1f3ca-1f3fb-200d-2640-fe0f\",1855],[\"1f3ca-1f3fc-200d-2640-fe0f\",1856],[\"1f3ca-1f3fd-200d-2640-fe0f\",1857],[\"1f3ca-1f3fe-200d-2640-fe0f\",1858],[\"1f3ca-1f3ff-200d-2640-fe0f\",1859],[\"1f3ca-1f3fb-200d-2642-fe0f\",1860],[\"1f3ca-1f3fc-200d-2642-fe0f\",1861],[\"1f3ca-1f3fd-200d-2642-fe0f\",1862],[\"1f3ca-1f3fe-200d-2642-fe0f\",1863],[\"1f3ca-1f3ff-200d-2642-fe0f\",1864],[\"1f3ca-1f3fb\",1865],[\"1f3ca-1f3fc\",1866],[\"1f3ca-1f3fd\",1867],[\"1f3ca-1f3fe\",1868],[\"1f3ca-1f3ff\",1869],[\"1f3cb-1f3fb-200d-2640-fe0f\",1870],[\"1f3cb-1f3fc-200d-2640-fe0f\",1871],[\"1f3cb-1f3fd-200d-2640-fe0f\",1872],[\"1f3cb-1f3fe-200d-2640-fe0f\",1873],[\"1f3cb-1f3ff-200d-2640-fe0f\",1874],[\"1f3cb-1f3fb-200d-2642-fe0f\",1875],[\"1f3cb-1f3fc-200d-2642-fe0f\",1876],[\"1f3cb-1f3fd-200d-2642-fe0f\",1877],[\"1f3cb-1f3fe-200d-2642-fe0f\",1878],[\"1f3cb-1f3ff-200d-2642-fe0f\",1879],[\"1f3cb-1f3fb\",1880],[\"1f3cb-1f3fc\",1881],[\"1f3cb-1f3fd\",1882],[\"1f3cb-1f3fe\",1883],[\"1f3cb-1f3ff\",1884],[\"1f3cc-1f3fb-200d-2640-fe0f\",1885],[\"1f3cc-1f3fc-200d-2640-fe0f\",1886],[\"1f3cc-1f3fd-200d-2640-fe0f\",1887],[\"1f3cc-1f3fe-200d-2640-fe0f\",1888],[\"1f3cc-1f3ff-200d-2640-fe0f\",1889],[\"1f3cc-1f3fb-200d-2642-fe0f\",1890],[\"1f3cc-1f3fc-200d-2642-fe0f\",1891],[\"1f3cc-1f3fd-200d-2642-fe0f\",1892],[\"1f3cc-1f3fe-200d-2642-fe0f\",1893],[\"1f3cc-1f3ff-200d-2642-fe0f\",1894],[\"1f3cc-1f3fb\",1895],[\"1f3cc-1f3fc\",1896],[\"1f3cc-1f3fd\",1897],[\"1f3cc-1f3fe\",1898],[\"1f3cc-1f3ff\",1899],[\"1f442-1f3fb\",1900],[\"1f442-1f3fc\",1901],[\"1f442-1f3fd\",1902],[\"1f442-1f3fe\",1903],[\"1f442-1f3ff\",1904],[\"1f443-1f3fb\",1905],[\"1f443-1f3fc\",1906],[\"1f443-1f3fd\",1907],[\"1f443-1f3fe\",1908],[\"1f443-1f3ff\",1909],[\"1f446-1f3fb\",1910],[\"1f446-1f3fc\",1911],[\"1f446-1f3fd\",1912],[\"1f446-1f3fe\",1913],[\"1f446-1f3ff\",1914],[\"1f447-1f3fb\",1915],[\"1f447-1f3fc\",1916],[\"1f447-1f3fd\",1917],[\"1f447-1f3fe\",1918],[\"1f447-1f3ff\",1919],[\"1f448-1f3fb\",1920],[\"1f448-1f3fc\",1921],[\"1f448-1f3fd\",1922],[\"1f448-1f3fe\",1923],[\"1f448-1f3ff\",1924],[\"1f449-1f3fb\",1925],[\"1f449-1f3fc\",1926],[\"1f449-1f3fd\",1927],[\"1f449-1f3fe\",1928],[\"1f449-1f3ff\",1929],[\"1f44a-1f3fb\",1930],[\"1f44a-1f3fc\",1931],[\"1f44a-1f3fd\",1932],[\"1f44a-1f3fe\",1933],[\"1f44a-1f3ff\",1934],[\"1f44b-1f3fb\",1935],[\"1f44b-1f3fc\",1936],[\"1f44b-1f3fd\",1937],[\"1f44b-1f3fe\",1938],[\"1f44b-1f3ff\",1939],[\"1f44c-1f3fb\",1940],[\"1f44c-1f3fc\",1941],[\"1f44c-1f3fd\",1942],[\"1f44c-1f3fe\",1943],[\"1f44c-1f3ff\",1944],[\"1f44d-1f3fb\",1945],[\"1f44d-1f3fc\",1946],[\"1f44d-1f3fd\",1947],[\"1f44d-1f3fe\",1948],[\"1f44d-1f3ff\",1949],[\"1f44e-1f3fb\",1950],[\"1f44e-1f3fc\",1951],[\"1f44e-1f3fd\",1952],[\"1f44e-1f3fe\",1953],[\"1f44e-1f3ff\",1954],[\"1f44f-1f3fb\",1955],[\"1f44f-1f3fc\",1956],[\"1f44f-1f3fd\",1957],[\"1f44f-1f3fe\",1958],[\"1f44f-1f3ff\",1959],[\"1f450-1f3fb\",1960],[\"1f450-1f3fc\",1961],[\"1f450-1f3fd\",1962],[\"1f450-1f3fe\",1963],[\"1f450-1f3ff\",1964],[\"1f466-1f3fb\",1965],[\"1f466-1f3fc\",1966],[\"1f466-1f3fd\",1967],[\"1f466-1f3fe\",1968],[\"1f466-1f3ff\",1969],[\"1f467-1f3fb\",1970],[\"1f467-1f3fc\",1971],[\"1f467-1f3fd\",1972],[\"1f467-1f3fe\",1973],[\"1f467-1f3ff\",1974],[\"1f468-1f3fb-200d-1f33e\",1975],[\"1f468-1f3fc-200d-1f33e\",1976],[\"1f468-1f3fd-200d-1f33e\",1977],[\"1f468-1f3fe-200d-1f33e\",1978],[\"1f468-1f3ff-200d-1f33e\",1979],[\"1f468-1f3fb-200d-1f373\",1980],[\"1f468-1f3fc-200d-1f373\",1981],[\"1f468-1f3fd-200d-1f373\",1982],[\"1f468-1f3fe-200d-1f373\",1983],[\"1f468-1f3ff-200d-1f373\",1984],[\"1f468-1f3fb-200d-1f37c\",1985],[\"1f468-1f3fc-200d-1f37c\",1986],[\"1f468-1f3fd-200d-1f37c\",1987],[\"1f468-1f3fe-200d-1f37c\",1988],[\"1f468-1f3ff-200d-1f37c\",1989],[\"1f468-1f3fb-200d-1f393\",1990],[\"1f468-1f3fc-200d-1f393\",1991],[\"1f468-1f3fd-200d-1f393\",1992],[\"1f468-1f3fe-200d-1f393\",1993],[\"1f468-1f3ff-200d-1f393\",1994],[\"1f468-1f3fb-200d-1f3a4\",1995],[\"1f468-1f3fc-200d-1f3a4\",1996],[\"1f468-1f3fd-200d-1f3a4\",1997],[\"1f468-1f3fe-200d-1f3a4\",1998],[\"1f468-1f3ff-200d-1f3a4\",1999],[\"1f468-1f3fb-200d-1f3a8\",2000],[\"1f468-1f3fc-200d-1f3a8\",2001],[\"1f468-1f3fd-200d-1f3a8\",2002],[\"1f468-1f3fe-200d-1f3a8\",2003],[\"1f468-1f3ff-200d-1f3a8\",2004],[\"1f468-1f3fb-200d-1f3eb\",2005],[\"1f468-1f3fc-200d-1f3eb\",2006],[\"1f468-1f3fd-200d-1f3eb\",2007],[\"1f468-1f3fe-200d-1f3eb\",2008],[\"1f468-1f3ff-200d-1f3eb\",2009],[\"1f468-1f3fb-200d-1f3ed\",2010],[\"1f468-1f3fc-200d-1f3ed\",2011],[\"1f468-1f3fd-200d-1f3ed\",2012],[\"1f468-1f3fe-200d-1f3ed\",2013],[\"1f468-1f3ff-200d-1f3ed\",2014],[\"1f468-1f3fb-200d-1f4bb\",2015],[\"1f468-1f3fc-200d-1f4bb\",2016],[\"1f468-1f3fd-200d-1f4bb\",2017],[\"1f468-1f3fe-200d-1f4bb\",2018],[\"1f468-1f3ff-200d-1f4bb\",2019],[\"1f468-1f3fb-200d-1f4bc\",2020],[\"1f468-1f3fc-200d-1f4bc\",2021],[\"1f468-1f3fd-200d-1f4bc\",2022],[\"1f468-1f3fe-200d-1f4bc\",2023],[\"1f468-1f3ff-200d-1f4bc\",2024],[\"1f468-1f3fb-200d-1f527\",2025],[\"1f468-1f3fc-200d-1f527\",2026],[\"1f468-1f3fd-200d-1f527\",2027],[\"1f468-1f3fe-200d-1f527\",2028],[\"1f468-1f3ff-200d-1f527\",2029],[\"1f468-1f3fb-200d-1f52c\",2030],[\"1f468-1f3fc-200d-1f52c\",2031],[\"1f468-1f3fd-200d-1f52c\",2032],[\"1f468-1f3fe-200d-1f52c\",2033],[\"1f468-1f3ff-200d-1f52c\",2034],[\"1f468-1f3fb-200d-1f680\",2035],[\"1f468-1f3fc-200d-1f680\",2036],[\"1f468-1f3fd-200d-1f680\",2037],[\"1f468-1f3fe-200d-1f680\",2038],[\"1f468-1f3ff-200d-1f680\",2039],[\"1f468-1f3fb-200d-1f692\",2040],[\"1f468-1f3fc-200d-1f692\",2041],[\"1f468-1f3fd-200d-1f692\",2042],[\"1f468-1f3fe-200d-1f692\",2043],[\"1f468-1f3ff-200d-1f692\",2044],[\"1f468-1f3fb-200d-1f9af\",2045],[\"1f468-1f3fc-200d-1f9af\",2046],[\"1f468-1f3fd-200d-1f9af\",2047],[\"1f468-1f3fe-200d-1f9af\",2048],[\"1f468-1f3ff-200d-1f9af\",2049],[\"1f468-1f3fb-200d-1f9b0\",2050],[\"1f468-1f3fc-200d-1f9b0\",2051],[\"1f468-1f3fd-200d-1f9b0\",2052],[\"1f468-1f3fe-200d-1f9b0\",2053],[\"1f468-1f3ff-200d-1f9b0\",2054],[\"1f468-1f3fb-200d-1f9b1\",2055],[\"1f468-1f3fc-200d-1f9b1\",2056],[\"1f468-1f3fd-200d-1f9b1\",2057],[\"1f468-1f3fe-200d-1f9b1\",2058],[\"1f468-1f3ff-200d-1f9b1\",2059],[\"1f468-1f3fb-200d-1f9b2\",2060],[\"1f468-1f3fc-200d-1f9b2\",2061],[\"1f468-1f3fd-200d-1f9b2\",2062],[\"1f468-1f3fe-200d-1f9b2\",2063],[\"1f468-1f3ff-200d-1f9b2\",2064],[\"1f468-1f3fb-200d-1f9b3\",2065],[\"1f468-1f3fc-200d-1f9b3\",2066],[\"1f468-1f3fd-200d-1f9b3\",2067],[\"1f468-1f3fe-200d-1f9b3\",2068],[\"1f468-1f3ff-200d-1f9b3\",2069],[\"1f468-1f3fb-200d-1f9bc\",2070],[\"1f468-1f3fc-200d-1f9bc\",2071],[\"1f468-1f3fd-200d-1f9bc\",2072],[\"1f468-1f3fe-200d-1f9bc\",2073],[\"1f468-1f3ff-200d-1f9bc\",2074],[\"1f468-1f3fb-200d-1f9bd\",2075],[\"1f468-1f3fc-200d-1f9bd\",2076],[\"1f468-1f3fd-200d-1f9bd\",2077],[\"1f468-1f3fe-200d-1f9bd\",2078],[\"1f468-1f3ff-200d-1f9bd\",2079],[\"1f468-1f3fb-200d-2695-fe0f\",2080],[\"1f468-1f3fc-200d-2695-fe0f\",2081],[\"1f468-1f3fd-200d-2695-fe0f\",2082],[\"1f468-1f3fe-200d-2695-fe0f\",2083],[\"1f468-1f3ff-200d-2695-fe0f\",2084],[\"1f468-1f3fb-200d-2696-fe0f\",2085],[\"1f468-1f3fc-200d-2696-fe0f\",2086],[\"1f468-1f3fd-200d-2696-fe0f\",2087],[\"1f468-1f3fe-200d-2696-fe0f\",2088],[\"1f468-1f3ff-200d-2696-fe0f\",2089],[\"1f468-1f3fb-200d-2708-fe0f\",2090],[\"1f468-1f3fc-200d-2708-fe0f\",2091],[\"1f468-1f3fd-200d-2708-fe0f\",2092],[\"1f468-1f3fe-200d-2708-fe0f\",2093],[\"1f468-1f3ff-200d-2708-fe0f\",2094],[\"1f468-1f3fb\",2095],[\"1f468-1f3fc\",2096],[\"1f468-1f3fd\",2097],[\"1f468-1f3fe\",2098],[\"1f468-1f3ff\",2099],[\"1f469-1f3fb-200d-1f33e\",2100],[\"1f469-1f3fc-200d-1f33e\",2101],[\"1f469-1f3fd-200d-1f33e\",2102],[\"1f469-1f3fe-200d-1f33e\",2103],[\"1f469-1f3ff-200d-1f33e\",2104],[\"1f469-1f3fb-200d-1f373\",2105],[\"1f469-1f3fc-200d-1f373\",2106],[\"1f469-1f3fd-200d-1f373\",2107],[\"1f469-1f3fe-200d-1f373\",2108],[\"1f469-1f3ff-200d-1f373\",2109],[\"1f469-1f3fb-200d-1f37c\",2110],[\"1f469-1f3fc-200d-1f37c\",2111],[\"1f469-1f3fd-200d-1f37c\",2112],[\"1f469-1f3fe-200d-1f37c\",2113],[\"1f469-1f3ff-200d-1f37c\",2114],[\"1f469-1f3fb-200d-1f393\",2115],[\"1f469-1f3fc-200d-1f393\",2116],[\"1f469-1f3fd-200d-1f393\",2117],[\"1f469-1f3fe-200d-1f393\",2118],[\"1f469-1f3ff-200d-1f393\",2119],[\"1f469-1f3fb-200d-1f3a4\",2120],[\"1f469-1f3fc-200d-1f3a4\",2121],[\"1f469-1f3fd-200d-1f3a4\",2122],[\"1f469-1f3fe-200d-1f3a4\",2123],[\"1f469-1f3ff-200d-1f3a4\",2124],[\"1f469-1f3fb-200d-1f3a8\",2125],[\"1f469-1f3fc-200d-1f3a8\",2126],[\"1f469-1f3fd-200d-1f3a8\",2127],[\"1f469-1f3fe-200d-1f3a8\",2128],[\"1f469-1f3ff-200d-1f3a8\",2129],[\"1f469-1f3fb-200d-1f3eb\",2130],[\"1f469-1f3fc-200d-1f3eb\",2131],[\"1f469-1f3fd-200d-1f3eb\",2132],[\"1f469-1f3fe-200d-1f3eb\",2133],[\"1f469-1f3ff-200d-1f3eb\",2134],[\"1f469-1f3fb-200d-1f3ed\",2135],[\"1f469-1f3fc-200d-1f3ed\",2136],[\"1f469-1f3fd-200d-1f3ed\",2137],[\"1f469-1f3fe-200d-1f3ed\",2138],[\"1f469-1f3ff-200d-1f3ed\",2139],[\"1f469-1f3fb-200d-1f4bb\",2140],[\"1f469-1f3fc-200d-1f4bb\",2141],[\"1f469-1f3fd-200d-1f4bb\",2142],[\"1f469-1f3fe-200d-1f4bb\",2143],[\"1f469-1f3ff-200d-1f4bb\",2144],[\"1f469-1f3fb-200d-1f4bc\",2145],[\"1f469-1f3fc-200d-1f4bc\",2146],[\"1f469-1f3fd-200d-1f4bc\",2147],[\"1f469-1f3fe-200d-1f4bc\",2148],[\"1f469-1f3ff-200d-1f4bc\",2149],[\"1f469-1f3fb-200d-1f527\",2150],[\"1f469-1f3fc-200d-1f527\",2151],[\"1f469-1f3fd-200d-1f527\",2152],[\"1f469-1f3fe-200d-1f527\",2153],[\"1f469-1f3ff-200d-1f527\",2154],[\"1f469-1f3fb-200d-1f52c\",2155],[\"1f469-1f3fc-200d-1f52c\",2156],[\"1f469-1f3fd-200d-1f52c\",2157],[\"1f469-1f3fe-200d-1f52c\",2158],[\"1f469-1f3ff-200d-1f52c\",2159],[\"1f469-1f3fb-200d-1f680\",2160],[\"1f469-1f3fc-200d-1f680\",2161],[\"1f469-1f3fd-200d-1f680\",2162],[\"1f469-1f3fe-200d-1f680\",2163],[\"1f469-1f3ff-200d-1f680\",2164],[\"1f469-1f3fb-200d-1f692\",2165],[\"1f469-1f3fc-200d-1f692\",2166],[\"1f469-1f3fd-200d-1f692\",2167],[\"1f469-1f3fe-200d-1f692\",2168],[\"1f469-1f3ff-200d-1f692\",2169],[\"1f469-1f3fb-200d-1f9af\",2170],[\"1f469-1f3fc-200d-1f9af\",2171],[\"1f469-1f3fd-200d-1f9af\",2172],[\"1f469-1f3fe-200d-1f9af\",2173],[\"1f469-1f3ff-200d-1f9af\",2174],[\"1f469-1f3fb-200d-1f9b0\",2175],[\"1f469-1f3fc-200d-1f9b0\",2176],[\"1f469-1f3fd-200d-1f9b0\",2177],[\"1f469-1f3fe-200d-1f9b0\",2178],[\"1f469-1f3ff-200d-1f9b0\",2179],[\"1f469-1f3fb-200d-1f9b1\",2180],[\"1f469-1f3fc-200d-1f9b1\",2181],[\"1f469-1f3fd-200d-1f9b1\",2182],[\"1f469-1f3fe-200d-1f9b1\",2183],[\"1f469-1f3ff-200d-1f9b1\",2184],[\"1f469-1f3fb-200d-1f9b2\",2185],[\"1f469-1f3fc-200d-1f9b2\",2186],[\"1f469-1f3fd-200d-1f9b2\",2187],[\"1f469-1f3fe-200d-1f9b2\",2188],[\"1f469-1f3ff-200d-1f9b2\",2189],[\"1f469-1f3fb-200d-1f9b3\",2190],[\"1f469-1f3fc-200d-1f9b3\",2191],[\"1f469-1f3fd-200d-1f9b3\",2192],[\"1f469-1f3fe-200d-1f9b3\",2193],[\"1f469-1f3ff-200d-1f9b3\",2194],[\"1f469-1f3fb-200d-1f9bc\",2195],[\"1f469-1f3fc-200d-1f9bc\",2196],[\"1f469-1f3fd-200d-1f9bc\",2197],[\"1f469-1f3fe-200d-1f9bc\",2198],[\"1f469-1f3ff-200d-1f9bc\",2199],[\"1f469-1f3fb-200d-1f9bd\",2200],[\"1f469-1f3fc-200d-1f9bd\",2201],[\"1f469-1f3fd-200d-1f9bd\",2202],[\"1f469-1f3fe-200d-1f9bd\",2203],[\"1f469-1f3ff-200d-1f9bd\",2204],[\"1f469-1f3fb-200d-2695-fe0f\",2205],[\"1f469-1f3fc-200d-2695-fe0f\",2206],[\"1f469-1f3fd-200d-2695-fe0f\",2207],[\"1f469-1f3fe-200d-2695-fe0f\",2208],[\"1f469-1f3ff-200d-2695-fe0f\",2209],[\"1f469-1f3fb-200d-2696-fe0f\",2210],[\"1f469-1f3fc-200d-2696-fe0f\",2211],[\"1f469-1f3fd-200d-2696-fe0f\",2212],[\"1f469-1f3fe-200d-2696-fe0f\",2213],[\"1f469-1f3ff-200d-2696-fe0f\",2214],[\"1f469-1f3fb-200d-2708-fe0f\",2215],[\"1f469-1f3fc-200d-2708-fe0f\",2216],[\"1f469-1f3fd-200d-2708-fe0f\",2217],[\"1f469-1f3fe-200d-2708-fe0f\",2218],[\"1f469-1f3ff-200d-2708-fe0f\",2219],[\"1f469-1f3fb\",2220],[\"1f469-1f3fc\",2221],[\"1f469-1f3fd\",2222],[\"1f469-1f3fe\",2223],[\"1f469-1f3ff\",2224],[\"1f46b-1f3fb\",2225],[\"1f46b-1f3fc\",2226],[\"1f46b-1f3fd\",2227],[\"1f46b-1f3fe\",2228],[\"1f46b-1f3ff\",2229],[\"1f469-1f3fb-200d-1f91d-200d-1f468-1f3fc\",2230],[\"1f469-1f3fb-200d-1f91d-200d-1f468-1f3fd\",2231],[\"1f469-1f3fb-200d-1f91d-200d-1f468-1f3fe\",2232],[\"1f469-1f3fb-200d-1f91d-200d-1f468-1f3ff\",2233],[\"1f469-1f3fc-200d-1f91d-200d-1f468-1f3fb\",2234],[\"1f469-1f3fc-200d-1f91d-200d-1f468-1f3fd\",2235],[\"1f469-1f3fc-200d-1f91d-200d-1f468-1f3fe\",2236],[\"1f469-1f3fc-200d-1f91d-200d-1f468-1f3ff\",2237],[\"1f469-1f3fd-200d-1f91d-200d-1f468-1f3fb\",2238],[\"1f469-1f3fd-200d-1f91d-200d-1f468-1f3fc\",2239],[\"1f469-1f3fd-200d-1f91d-200d-1f468-1f3fe\",2240],[\"1f469-1f3fd-200d-1f91d-200d-1f468-1f3ff\",2241],[\"1f469-1f3fe-200d-1f91d-200d-1f468-1f3fb\",2242],[\"1f469-1f3fe-200d-1f91d-200d-1f468-1f3fc\",2243],[\"1f469-1f3fe-200d-1f91d-200d-1f468-1f3fd\",2244],[\"1f469-1f3fe-200d-1f91d-200d-1f468-1f3ff\",2245],[\"1f469-1f3ff-200d-1f91d-200d-1f468-1f3fb\",2246],[\"1f469-1f3ff-200d-1f91d-200d-1f468-1f3fc\",2247],[\"1f469-1f3ff-200d-1f91d-200d-1f468-1f3fd\",2248],[\"1f469-1f3ff-200d-1f91d-200d-1f468-1f3fe\",2249],[\"1f46c-1f3fb\",2250],[\"1f46c-1f3fc\",2251],[\"1f46c-1f3fd\",2252],[\"1f46c-1f3fe\",2253],[\"1f46c-1f3ff\",2254],[\"1f468-1f3fb-200d-1f91d-200d-1f468-1f3fc\",2255],[\"1f468-1f3fb-200d-1f91d-200d-1f468-1f3fd\",2256],[\"1f468-1f3fb-200d-1f91d-200d-1f468-1f3fe\",2257],[\"1f468-1f3fb-200d-1f91d-200d-1f468-1f3ff\",2258],[\"1f468-1f3fc-200d-1f91d-200d-1f468-1f3fb\",2259],[\"1f468-1f3fc-200d-1f91d-200d-1f468-1f3fd\",2260],[\"1f468-1f3fc-200d-1f91d-200d-1f468-1f3fe\",2261],[\"1f468-1f3fc-200d-1f91d-200d-1f468-1f3ff\",2262],[\"1f468-1f3fd-200d-1f91d-200d-1f468-1f3fb\",2263],[\"1f468-1f3fd-200d-1f91d-200d-1f468-1f3fc\",2264],[\"1f468-1f3fd-200d-1f91d-200d-1f468-1f3fe\",2265],[\"1f468-1f3fd-200d-1f91d-200d-1f468-1f3ff\",2266],[\"1f468-1f3fe-200d-1f91d-200d-1f468-1f3fb\",2267],[\"1f468-1f3fe-200d-1f91d-200d-1f468-1f3fc\",2268],[\"1f468-1f3fe-200d-1f91d-200d-1f468-1f3fd\",2269],[\"1f468-1f3fe-200d-1f91d-200d-1f468-1f3ff\",2270],[\"1f468-1f3ff-200d-1f91d-200d-1f468-1f3fb\",2271],[\"1f468-1f3ff-200d-1f91d-200d-1f468-1f3fc\",2272],[\"1f468-1f3ff-200d-1f91d-200d-1f468-1f3fd\",2273],[\"1f468-1f3ff-200d-1f91d-200d-1f468-1f3fe\",2274],[\"1f46d-1f3fb\",2275],[\"1f46d-1f3fc\",2276],[\"1f46d-1f3fd\",2277],[\"1f46d-1f3fe\",2278],[\"1f46d-1f3ff\",2279],[\"1f469-1f3fb-200d-1f91d-200d-1f469-1f3fc\",2280],[\"1f469-1f3fb-200d-1f91d-200d-1f469-1f3fd\",2281],[\"1f469-1f3fb-200d-1f91d-200d-1f469-1f3fe\",2282],[\"1f469-1f3fb-200d-1f91d-200d-1f469-1f3ff\",2283],[\"1f469-1f3fc-200d-1f91d-200d-1f469-1f3fb\",2284],[\"1f469-1f3fc-200d-1f91d-200d-1f469-1f3fd\",2285],[\"1f469-1f3fc-200d-1f91d-200d-1f469-1f3fe\",2286],[\"1f469-1f3fc-200d-1f91d-200d-1f469-1f3ff\",2287],[\"1f469-1f3fd-200d-1f91d-200d-1f469-1f3fb\",2288],[\"1f469-1f3fd-200d-1f91d-200d-1f469-1f3fc\",2289],[\"1f469-1f3fd-200d-1f91d-200d-1f469-1f3fe\",2290],[\"1f469-1f3fd-200d-1f91d-200d-1f469-1f3ff\",2291],[\"1f469-1f3fe-200d-1f91d-200d-1f469-1f3fb\",2292],[\"1f469-1f3fe-200d-1f91d-200d-1f469-1f3fc\",2293],[\"1f469-1f3fe-200d-1f91d-200d-1f469-1f3fd\",2294],[\"1f469-1f3fe-200d-1f91d-200d-1f469-1f3ff\",2295],[\"1f469-1f3ff-200d-1f91d-200d-1f469-1f3fb\",2296],[\"1f469-1f3ff-200d-1f91d-200d-1f469-1f3fc\",2297],[\"1f469-1f3ff-200d-1f91d-200d-1f469-1f3fd\",2298],[\"1f469-1f3ff-200d-1f91d-200d-1f469-1f3fe\",2299],[\"1f46e-1f3fb-200d-2640-fe0f\",2300],[\"1f46e-1f3fc-200d-2640-fe0f\",2301],[\"1f46e-1f3fd-200d-2640-fe0f\",2302],[\"1f46e-1f3fe-200d-2640-fe0f\",2303],[\"1f46e-1f3ff-200d-2640-fe0f\",2304],[\"1f46e-1f3fb-200d-2642-fe0f\",2305],[\"1f46e-1f3fc-200d-2642-fe0f\",2306],[\"1f46e-1f3fd-200d-2642-fe0f\",2307],[\"1f46e-1f3fe-200d-2642-fe0f\",2308],[\"1f46e-1f3ff-200d-2642-fe0f\",2309],[\"1f46e-1f3fb\",2310],[\"1f46e-1f3fc\",2311],[\"1f46e-1f3fd\",2312],[\"1f46e-1f3fe\",2313],[\"1f46e-1f3ff\",2314],[\"1f470-1f3fb-200d-2640-fe0f\",2315],[\"1f470-1f3fc-200d-2640-fe0f\",2316],[\"1f470-1f3fd-200d-2640-fe0f\",2317],[\"1f470-1f3fe-200d-2640-fe0f\",2318],[\"1f470-1f3ff-200d-2640-fe0f\",2319],[\"1f470-1f3fb-200d-2642-fe0f\",2320],[\"1f470-1f3fc-200d-2642-fe0f\",2321],[\"1f470-1f3fd-200d-2642-fe0f\",2322],[\"1f470-1f3fe-200d-2642-fe0f\",2323],[\"1f470-1f3ff-200d-2642-fe0f\",2324],[\"1f470-1f3fb\",2325],[\"1f470-1f3fc\",2326],[\"1f470-1f3fd\",2327],[\"1f470-1f3fe\",2328],[\"1f470-1f3ff\",2329],[\"1f471-1f3fb-200d-2640-fe0f\",2330],[\"1f471-1f3fc-200d-2640-fe0f\",2331],[\"1f471-1f3fd-200d-2640-fe0f\",2332],[\"1f471-1f3fe-200d-2640-fe0f\",2333],[\"1f471-1f3ff-200d-2640-fe0f\",2334],[\"1f471-1f3fb-200d-2642-fe0f\",2335],[\"1f471-1f3fc-200d-2642-fe0f\",2336],[\"1f471-1f3fd-200d-2642-fe0f\",2337],[\"1f471-1f3fe-200d-2642-fe0f\",2338],[\"1f471-1f3ff-200d-2642-fe0f\",2339],[\"1f471-1f3fb\",2340],[\"1f471-1f3fc\",2341],[\"1f471-1f3fd\",2342],[\"1f471-1f3fe\",2343],[\"1f471-1f3ff\",2344],[\"1f472-1f3fb\",2345],[\"1f472-1f3fc\",2346],[\"1f472-1f3fd\",2347],[\"1f472-1f3fe\",2348],[\"1f472-1f3ff\",2349],[\"1f473-1f3fb-200d-2640-fe0f\",2350],[\"1f473-1f3fc-200d-2640-fe0f\",2351],[\"1f473-1f3fd-200d-2640-fe0f\",2352],[\"1f473-1f3fe-200d-2640-fe0f\",2353],[\"1f473-1f3ff-200d-2640-fe0f\",2354],[\"1f473-1f3fb-200d-2642-fe0f\",2355],[\"1f473-1f3fc-200d-2642-fe0f\",2356],[\"1f473-1f3fd-200d-2642-fe0f\",2357],[\"1f473-1f3fe-200d-2642-fe0f\",2358],[\"1f473-1f3ff-200d-2642-fe0f\",2359],[\"1f473-1f3fb\",2360],[\"1f473-1f3fc\",2361],[\"1f473-1f3fd\",2362],[\"1f473-1f3fe\",2363],[\"1f473-1f3ff\",2364],[\"1f474-1f3fb\",2365],[\"1f474-1f3fc\",2366],[\"1f474-1f3fd\",2367],[\"1f474-1f3fe\",2368],[\"1f474-1f3ff\",2369],[\"1f475-1f3fb\",2370],[\"1f475-1f3fc\",2371],[\"1f475-1f3fd\",2372],[\"1f475-1f3fe\",2373],[\"1f475-1f3ff\",2374],[\"1f476-1f3fb\",2375],[\"1f476-1f3fc\",2376],[\"1f476-1f3fd\",2377],[\"1f476-1f3fe\",2378],[\"1f476-1f3ff\",2379],[\"1f477-1f3fb-200d-2640-fe0f\",2380],[\"1f477-1f3fc-200d-2640-fe0f\",2381],[\"1f477-1f3fd-200d-2640-fe0f\",2382],[\"1f477-1f3fe-200d-2640-fe0f\",2383],[\"1f477-1f3ff-200d-2640-fe0f\",2384],[\"1f477-1f3fb-200d-2642-fe0f\",2385],[\"1f477-1f3fc-200d-2642-fe0f\",2386],[\"1f477-1f3fd-200d-2642-fe0f\",2387],[\"1f477-1f3fe-200d-2642-fe0f\",2388],[\"1f477-1f3ff-200d-2642-fe0f\",2389],[\"1f477-1f3fb\",2390],[\"1f477-1f3fc\",2391],[\"1f477-1f3fd\",2392],[\"1f477-1f3fe\",2393],[\"1f477-1f3ff\",2394],[\"1f478-1f3fb\",2395],[\"1f478-1f3fc\",2396],[\"1f478-1f3fd\",2397],[\"1f478-1f3fe\",2398],[\"1f478-1f3ff\",2399],[\"1f47c-1f3fb\",2400],[\"1f47c-1f3fc\",2401],[\"1f47c-1f3fd\",2402],[\"1f47c-1f3fe\",2403],[\"1f47c-1f3ff\",2404],[\"1f481-1f3fb-200d-2640-fe0f\",2405],[\"1f481-1f3fc-200d-2640-fe0f\",2406],[\"1f481-1f3fd-200d-2640-fe0f\",2407],[\"1f481-1f3fe-200d-2640-fe0f\",2408],[\"1f481-1f3ff-200d-2640-fe0f\",2409],[\"1f481-1f3fb-200d-2642-fe0f\",2410],[\"1f481-1f3fc-200d-2642-fe0f\",2411],[\"1f481-1f3fd-200d-2642-fe0f\",2412],[\"1f481-1f3fe-200d-2642-fe0f\",2413],[\"1f481-1f3ff-200d-2642-fe0f\",2414],[\"1f481-1f3fb\",2415],[\"1f481-1f3fc\",2416],[\"1f481-1f3fd\",2417],[\"1f481-1f3fe\",2418],[\"1f481-1f3ff\",2419],[\"1f482-1f3fb-200d-2640-fe0f\",2420],[\"1f482-1f3fc-200d-2640-fe0f\",2421],[\"1f482-1f3fd-200d-2640-fe0f\",2422],[\"1f482-1f3fe-200d-2640-fe0f\",2423],[\"1f482-1f3ff-200d-2640-fe0f\",2424],[\"1f482-1f3fb-200d-2642-fe0f\",2425],[\"1f482-1f3fc-200d-2642-fe0f\",2426],[\"1f482-1f3fd-200d-2642-fe0f\",2427],[\"1f482-1f3fe-200d-2642-fe0f\",2428],[\"1f482-1f3ff-200d-2642-fe0f\",2429],[\"1f482-1f3fb\",2430],[\"1f482-1f3fc\",2431],[\"1f482-1f3fd\",2432],[\"1f482-1f3fe\",2433],[\"1f482-1f3ff\",2434],[\"1f483-1f3fb\",2435],[\"1f483-1f3fc\",2436],[\"1f483-1f3fd\",2437],[\"1f483-1f3fe\",2438],[\"1f483-1f3ff\",2439],[\"1f485-1f3fb\",2440],[\"1f485-1f3fc\",2441],[\"1f485-1f3fd\",2442],[\"1f485-1f3fe\",2443],[\"1f485-1f3ff\",2444],[\"1f486-1f3fb-200d-2640-fe0f\",2445],[\"1f486-1f3fc-200d-2640-fe0f\",2446],[\"1f486-1f3fd-200d-2640-fe0f\",2447],[\"1f486-1f3fe-200d-2640-fe0f\",2448],[\"1f486-1f3ff-200d-2640-fe0f\",2449],[\"1f486-1f3fb-200d-2642-fe0f\",2450],[\"1f486-1f3fc-200d-2642-fe0f\",2451],[\"1f486-1f3fd-200d-2642-fe0f\",2452],[\"1f486-1f3fe-200d-2642-fe0f\",2453],[\"1f486-1f3ff-200d-2642-fe0f\",2454],[\"1f486-1f3fb\",2455],[\"1f486-1f3fc\",2456],[\"1f486-1f3fd\",2457],[\"1f486-1f3fe\",2458],[\"1f486-1f3ff\",2459],[\"1f487-1f3fb-200d-2640-fe0f\",2460],[\"1f487-1f3fc-200d-2640-fe0f\",2461],[\"1f487-1f3fd-200d-2640-fe0f\",2462],[\"1f487-1f3fe-200d-2640-fe0f\",2463],[\"1f487-1f3ff-200d-2640-fe0f\",2464],[\"1f487-1f3fb-200d-2642-fe0f\",2465],[\"1f487-1f3fc-200d-2642-fe0f\",2466],[\"1f487-1f3fd-200d-2642-fe0f\",2467],[\"1f487-1f3fe-200d-2642-fe0f\",2468],[\"1f487-1f3ff-200d-2642-fe0f\",2469],[\"1f487-1f3fb\",2470],[\"1f487-1f3fc\",2471],[\"1f487-1f3fd\",2472],[\"1f487-1f3fe\",2473],[\"1f487-1f3ff\",2474],[\"1f4aa-1f3fb\",2475],[\"1f4aa-1f3fc\",2476],[\"1f4aa-1f3fd\",2477],[\"1f4aa-1f3fe\",2478],[\"1f4aa-1f3ff\",2479],[\"1f574-1f3fb\",2480],[\"1f574-1f3fc\",2481],[\"1f574-1f3fd\",2482],[\"1f574-1f3fe\",2483],[\"1f574-1f3ff\",2484],[\"1f575-1f3fb-200d-2640-fe0f\",2485],[\"1f575-1f3fc-200d-2640-fe0f\",2486],[\"1f575-1f3fd-200d-2640-fe0f\",2487],[\"1f575-1f3fe-200d-2640-fe0f\",2488],[\"1f575-1f3ff-200d-2640-fe0f\",2489],[\"1f575-1f3fb-200d-2642-fe0f\",2490],[\"1f575-1f3fc-200d-2642-fe0f\",2491],[\"1f575-1f3fd-200d-2642-fe0f\",2492],[\"1f575-1f3fe-200d-2642-fe0f\",2493],[\"1f575-1f3ff-200d-2642-fe0f\",2494],[\"1f575-1f3fb\",2495],[\"1f575-1f3fc\",2496],[\"1f575-1f3fd\",2497],[\"1f575-1f3fe\",2498],[\"1f575-1f3ff\",2499],[\"1f57a-1f3fb\",2500],[\"1f57a-1f3fc\",2501],[\"1f57a-1f3fd\",2502],[\"1f57a-1f3fe\",2503],[\"1f57a-1f3ff\",2504],[\"1f590-1f3fb\",2505],[\"1f590-1f3fc\",2506],[\"1f590-1f3fd\",2507],[\"1f590-1f3fe\",2508],[\"1f590-1f3ff\",2509],[\"1f595-1f3fb\",2510],[\"1f595-1f3fc\",2511],[\"1f595-1f3fd\",2512],[\"1f595-1f3fe\",2513],[\"1f595-1f3ff\",2514],[\"1f596-1f3fb\",2515],[\"1f596-1f3fc\",2516],[\"1f596-1f3fd\",2517],[\"1f596-1f3fe\",2518],[\"1f596-1f3ff\",2519],[\"1f645-1f3fb-200d-2640-fe0f\",2520],[\"1f645-1f3fc-200d-2640-fe0f\",2521],[\"1f645-1f3fd-200d-2640-fe0f\",2522],[\"1f645-1f3fe-200d-2640-fe0f\",2523],[\"1f645-1f3ff-200d-2640-fe0f\",2524],[\"1f645-1f3fb-200d-2642-fe0f\",2525],[\"1f645-1f3fc-200d-2642-fe0f\",2526],[\"1f645-1f3fd-200d-2642-fe0f\",2527],[\"1f645-1f3fe-200d-2642-fe0f\",2528],[\"1f645-1f3ff-200d-2642-fe0f\",2529],[\"1f645-1f3fb\",2530],[\"1f645-1f3fc\",2531],[\"1f645-1f3fd\",2532],[\"1f645-1f3fe\",2533],[\"1f645-1f3ff\",2534],[\"1f646-1f3fb-200d-2640-fe0f\",2535],[\"1f646-1f3fc-200d-2640-fe0f\",2536],[\"1f646-1f3fd-200d-2640-fe0f\",2537],[\"1f646-1f3fe-200d-2640-fe0f\",2538],[\"1f646-1f3ff-200d-2640-fe0f\",2539],[\"1f646-1f3fb-200d-2642-fe0f\",2540],[\"1f646-1f3fc-200d-2642-fe0f\",2541],[\"1f646-1f3fd-200d-2642-fe0f\",2542],[\"1f646-1f3fe-200d-2642-fe0f\",2543],[\"1f646-1f3ff-200d-2642-fe0f\",2544],[\"1f646-1f3fb\",2545],[\"1f646-1f3fc\",2546],[\"1f646-1f3fd\",2547],[\"1f646-1f3fe\",2548],[\"1f646-1f3ff\",2549],[\"1f647-1f3fb-200d-2640-fe0f\",2550],[\"1f647-1f3fc-200d-2640-fe0f\",2551],[\"1f647-1f3fd-200d-2640-fe0f\",2552],[\"1f647-1f3fe-200d-2640-fe0f\",2553],[\"1f647-1f3ff-200d-2640-fe0f\",2554],[\"1f647-1f3fb-200d-2642-fe0f\",2555],[\"1f647-1f3fc-200d-2642-fe0f\",2556],[\"1f647-1f3fd-200d-2642-fe0f\",2557],[\"1f647-1f3fe-200d-2642-fe0f\",2558],[\"1f647-1f3ff-200d-2642-fe0f\",2559],[\"1f647-1f3fb\",2560],[\"1f647-1f3fc\",2561],[\"1f647-1f3fd\",2562],[\"1f647-1f3fe\",2563],[\"1f647-1f3ff\",2564],[\"1f64b-1f3fb-200d-2640-fe0f\",2565],[\"1f64b-1f3fc-200d-2640-fe0f\",2566],[\"1f64b-1f3fd-200d-2640-fe0f\",2567],[\"1f64b-1f3fe-200d-2640-fe0f\",2568],[\"1f64b-1f3ff-200d-2640-fe0f\",2569],[\"1f64b-1f3fb-200d-2642-fe0f\",2570],[\"1f64b-1f3fc-200d-2642-fe0f\",2571],[\"1f64b-1f3fd-200d-2642-fe0f\",2572],[\"1f64b-1f3fe-200d-2642-fe0f\",2573],[\"1f64b-1f3ff-200d-2642-fe0f\",2574],[\"1f64b-1f3fb\",2575],[\"1f64b-1f3fc\",2576],[\"1f64b-1f3fd\",2577],[\"1f64b-1f3fe\",2578],[\"1f64b-1f3ff\",2579],[\"1f64c-1f3fb\",2580],[\"1f64c-1f3fc\",2581],[\"1f64c-1f3fd\",2582],[\"1f64c-1f3fe\",2583],[\"1f64c-1f3ff\",2584],[\"1f64d-1f3fb-200d-2640-fe0f\",2585],[\"1f64d-1f3fc-200d-2640-fe0f\",2586],[\"1f64d-1f3fd-200d-2640-fe0f\",2587],[\"1f64d-1f3fe-200d-2640-fe0f\",2588],[\"1f64d-1f3ff-200d-2640-fe0f\",2589],[\"1f64d-1f3fb-200d-2642-fe0f\",2590],[\"1f64d-1f3fc-200d-2642-fe0f\",2591],[\"1f64d-1f3fd-200d-2642-fe0f\",2592],[\"1f64d-1f3fe-200d-2642-fe0f\",2593],[\"1f64d-1f3ff-200d-2642-fe0f\",2594],[\"1f64d-1f3fb\",2595],[\"1f64d-1f3fc\",2596],[\"1f64d-1f3fd\",2597],[\"1f64d-1f3fe\",2598],[\"1f64d-1f3ff\",2599],[\"1f64e-1f3fb-200d-2640-fe0f\",2600],[\"1f64e-1f3fc-200d-2640-fe0f\",2601],[\"1f64e-1f3fd-200d-2640-fe0f\",2602],[\"1f64e-1f3fe-200d-2640-fe0f\",2603],[\"1f64e-1f3ff-200d-2640-fe0f\",2604],[\"1f64e-1f3fb-200d-2642-fe0f\",2605],[\"1f64e-1f3fc-200d-2642-fe0f\",2606],[\"1f64e-1f3fd-200d-2642-fe0f\",2607],[\"1f64e-1f3fe-200d-2642-fe0f\",2608],[\"1f64e-1f3ff-200d-2642-fe0f\",2609],[\"1f64e-1f3fb\",2610],[\"1f64e-1f3fc\",2611],[\"1f64e-1f3fd\",2612],[\"1f64e-1f3fe\",2613],[\"1f64e-1f3ff\",2614],[\"1f64f-1f3fb\",2615],[\"1f64f-1f3fc\",2616],[\"1f64f-1f3fd\",2617],[\"1f64f-1f3fe\",2618],[\"1f64f-1f3ff\",2619],[\"1f6a3-1f3fb-200d-2640-fe0f\",2620],[\"1f6a3-1f3fc-200d-2640-fe0f\",2621],[\"1f6a3-1f3fd-200d-2640-fe0f\",2622],[\"1f6a3-1f3fe-200d-2640-fe0f\",2623],[\"1f6a3-1f3ff-200d-2640-fe0f\",2624],[\"1f6a3-1f3fb-200d-2642-fe0f\",2625],[\"1f6a3-1f3fc-200d-2642-fe0f\",2626],[\"1f6a3-1f3fd-200d-2642-fe0f\",2627],[\"1f6a3-1f3fe-200d-2642-fe0f\",2628],[\"1f6a3-1f3ff-200d-2642-fe0f\",2629],[\"1f6a3-1f3fb\",2630],[\"1f6a3-1f3fc\",2631],[\"1f6a3-1f3fd\",2632],[\"1f6a3-1f3fe\",2633],[\"1f6a3-1f3ff\",2634],[\"1f6b4-1f3fb-200d-2640-fe0f\",2635],[\"1f6b4-1f3fc-200d-2640-fe0f\",2636],[\"1f6b4-1f3fd-200d-2640-fe0f\",2637],[\"1f6b4-1f3fe-200d-2640-fe0f\",2638],[\"1f6b4-1f3ff-200d-2640-fe0f\",2639],[\"1f6b4-1f3fb-200d-2642-fe0f\",2640],[\"1f6b4-1f3fc-200d-2642-fe0f\",2641],[\"1f6b4-1f3fd-200d-2642-fe0f\",2642],[\"1f6b4-1f3fe-200d-2642-fe0f\",2643],[\"1f6b4-1f3ff-200d-2642-fe0f\",2644],[\"1f6b4-1f3fb\",2645],[\"1f6b4-1f3fc\",2646],[\"1f6b4-1f3fd\",2647],[\"1f6b4-1f3fe\",2648],[\"1f6b4-1f3ff\",2649],[\"1f6b5-1f3fb-200d-2640-fe0f\",2650],[\"1f6b5-1f3fc-200d-2640-fe0f\",2651],[\"1f6b5-1f3fd-200d-2640-fe0f\",2652],[\"1f6b5-1f3fe-200d-2640-fe0f\",2653],[\"1f6b5-1f3ff-200d-2640-fe0f\",2654],[\"1f6b5-1f3fb-200d-2642-fe0f\",2655],[\"1f6b5-1f3fc-200d-2642-fe0f\",2656],[\"1f6b5-1f3fd-200d-2642-fe0f\",2657],[\"1f6b5-1f3fe-200d-2642-fe0f\",2658],[\"1f6b5-1f3ff-200d-2642-fe0f\",2659],[\"1f6b5-1f3fb\",2660],[\"1f6b5-1f3fc\",2661],[\"1f6b5-1f3fd\",2662],[\"1f6b5-1f3fe\",2663],[\"1f6b5-1f3ff\",2664],[\"1f6b6-1f3fb-200d-2640-fe0f\",2665],[\"1f6b6-1f3fc-200d-2640-fe0f\",2666],[\"1f6b6-1f3fd-200d-2640-fe0f\",2667],[\"1f6b6-1f3fe-200d-2640-fe0f\",2668],[\"1f6b6-1f3ff-200d-2640-fe0f\",2669],[\"1f6b6-1f3fb-200d-2642-fe0f\",2670],[\"1f6b6-1f3fc-200d-2642-fe0f\",2671],[\"1f6b6-1f3fd-200d-2642-fe0f\",2672],[\"1f6b6-1f3fe-200d-2642-fe0f\",2673],[\"1f6b6-1f3ff-200d-2642-fe0f\",2674],[\"1f6b6-1f3fb\",2675],[\"1f6b6-1f3fc\",2676],[\"1f6b6-1f3fd\",2677],[\"1f6b6-1f3fe\",2678],[\"1f6b6-1f3ff\",2679],[\"1f6c0-1f3fb\",2680],[\"1f6c0-1f3fc\",2681],[\"1f6c0-1f3fd\",2682],[\"1f6c0-1f3fe\",2683],[\"1f6c0-1f3ff\",2684],[\"1f6cc-1f3fb\",2685],[\"1f6cc-1f3fc\",2686],[\"1f6cc-1f3fd\",2687],[\"1f6cc-1f3fe\",2688],[\"1f6cc-1f3ff\",2689],[\"1f90c-1f3fb\",2690],[\"1f90c-1f3fc\",2691],[\"1f90c-1f3fd\",2692],[\"1f90c-1f3fe\",2693],[\"1f90c-1f3ff\",2694],[\"1f90f-1f3fb\",2695],[\"1f90f-1f3fc\",2696],[\"1f90f-1f3fd\",2697],[\"1f90f-1f3fe\",2698],[\"1f90f-1f3ff\",2699],[\"1f918-1f3fb\",2700],[\"1f918-1f3fc\",2701],[\"1f918-1f3fd\",2702],[\"1f918-1f3fe\",2703],[\"1f918-1f3ff\",2704],[\"1f919-1f3fb\",2705],[\"1f919-1f3fc\",2706],[\"1f919-1f3fd\",2707],[\"1f919-1f3fe\",2708],[\"1f919-1f3ff\",2709],[\"1f91a-1f3fb\",2710],[\"1f91a-1f3fc\",2711],[\"1f91a-1f3fd\",2712],[\"1f91a-1f3fe\",2713],[\"1f91a-1f3ff\",2714],[\"1f91b-1f3fb\",2715],[\"1f91b-1f3fc\",2716],[\"1f91b-1f3fd\",2717],[\"1f91b-1f3fe\",2718],[\"1f91b-1f3ff\",2719],[\"1f91c-1f3fb\",2720],[\"1f91c-1f3fc\",2721],[\"1f91c-1f3fd\",2722],[\"1f91c-1f3fe\",2723],[\"1f91c-1f3ff\",2724],[\"1f91e-1f3fb\",2725],[\"1f91e-1f3fc\",2726],[\"1f91e-1f3fd\",2727],[\"1f91e-1f3fe\",2728],[\"1f91e-1f3ff\",2729],[\"1f91f-1f3fb\",2730],[\"1f91f-1f3fc\",2731],[\"1f91f-1f3fd\",2732],[\"1f91f-1f3fe\",2733],[\"1f91f-1f3ff\",2734],[\"1f926-1f3fb-200d-2640-fe0f\",2735],[\"1f926-1f3fc-200d-2640-fe0f\",2736],[\"1f926-1f3fd-200d-2640-fe0f\",2737],[\"1f926-1f3fe-200d-2640-fe0f\",2738],[\"1f926-1f3ff-200d-2640-fe0f\",2739],[\"1f926-1f3fb-200d-2642-fe0f\",2740],[\"1f926-1f3fc-200d-2642-fe0f\",2741],[\"1f926-1f3fd-200d-2642-fe0f\",2742],[\"1f926-1f3fe-200d-2642-fe0f\",2743],[\"1f926-1f3ff-200d-2642-fe0f\",2744],[\"1f926-1f3fb\",2745],[\"1f926-1f3fc\",2746],[\"1f926-1f3fd\",2747],[\"1f926-1f3fe\",2748],[\"1f926-1f3ff\",2749],[\"1f930-1f3fb\",2750],[\"1f930-1f3fc\",2751],[\"1f930-1f3fd\",2752],[\"1f930-1f3fe\",2753],[\"1f930-1f3ff\",2754],[\"1f931-1f3fb\",2755],[\"1f931-1f3fc\",2756],[\"1f931-1f3fd\",2757],[\"1f931-1f3fe\",2758],[\"1f931-1f3ff\",2759],[\"1f932-1f3fb\",2760],[\"1f932-1f3fc\",2761],[\"1f932-1f3fd\",2762],[\"1f932-1f3fe\",2763],[\"1f932-1f3ff\",2764],[\"1f933-1f3fb\",2765],[\"1f933-1f3fc\",2766],[\"1f933-1f3fd\",2767],[\"1f933-1f3fe\",2768],[\"1f933-1f3ff\",2769],[\"1f934-1f3fb\",2770],[\"1f934-1f3fc\",2771],[\"1f934-1f3fd\",2772],[\"1f934-1f3fe\",2773],[\"1f934-1f3ff\",2774],[\"1f935-1f3fb-200d-2640-fe0f\",2775],[\"1f935-1f3fc-200d-2640-fe0f\",2776],[\"1f935-1f3fd-200d-2640-fe0f\",2777],[\"1f935-1f3fe-200d-2640-fe0f\",2778],[\"1f935-1f3ff-200d-2640-fe0f\",2779],[\"1f935-1f3fb-200d-2642-fe0f\",2780],[\"1f935-1f3fc-200d-2642-fe0f\",2781],[\"1f935-1f3fd-200d-2642-fe0f\",2782],[\"1f935-1f3fe-200d-2642-fe0f\",2783],[\"1f935-1f3ff-200d-2642-fe0f\",2784],[\"1f935-1f3fb\",2785],[\"1f935-1f3fc\",2786],[\"1f935-1f3fd\",2787],[\"1f935-1f3fe\",2788],[\"1f935-1f3ff\",2789],[\"1f936-1f3fb\",2790],[\"1f936-1f3fc\",2791],[\"1f936-1f3fd\",2792],[\"1f936-1f3fe\",2793],[\"1f936-1f3ff\",2794],[\"1f937-1f3fb-200d-2640-fe0f\",2795],[\"1f937-1f3fc-200d-2640-fe0f\",2796],[\"1f937-1f3fd-200d-2640-fe0f\",2797],[\"1f937-1f3fe-200d-2640-fe0f\",2798],[\"1f937-1f3ff-200d-2640-fe0f\",2799],[\"1f937-1f3fb-200d-2642-fe0f\",2800],[\"1f937-1f3fc-200d-2642-fe0f\",2801],[\"1f937-1f3fd-200d-2642-fe0f\",2802],[\"1f937-1f3fe-200d-2642-fe0f\",2803],[\"1f937-1f3ff-200d-2642-fe0f\",2804],[\"1f937-1f3fb\",2805],[\"1f937-1f3fc\",2806],[\"1f937-1f3fd\",2807],[\"1f937-1f3fe\",2808],[\"1f937-1f3ff\",2809],[\"1f938-1f3fb-200d-2640-fe0f\",2810],[\"1f938-1f3fc-200d-2640-fe0f\",2811],[\"1f938-1f3fd-200d-2640-fe0f\",2812],[\"1f938-1f3fe-200d-2640-fe0f\",2813],[\"1f938-1f3ff-200d-2640-fe0f\",2814],[\"1f938-1f3fb-200d-2642-fe0f\",2815],[\"1f938-1f3fc-200d-2642-fe0f\",2816],[\"1f938-1f3fd-200d-2642-fe0f\",2817],[\"1f938-1f3fe-200d-2642-fe0f\",2818],[\"1f938-1f3ff-200d-2642-fe0f\",2819],[\"1f938-1f3fb\",2820],[\"1f938-1f3fc\",2821],[\"1f938-1f3fd\",2822],[\"1f938-1f3fe\",2823],[\"1f938-1f3ff\",2824],[\"1f939-1f3fb-200d-2640-fe0f\",2825],[\"1f939-1f3fc-200d-2640-fe0f\",2826],[\"1f939-1f3fd-200d-2640-fe0f\",2827],[\"1f939-1f3fe-200d-2640-fe0f\",2828],[\"1f939-1f3ff-200d-2640-fe0f\",2829],[\"1f939-1f3fb-200d-2642-fe0f\",2830],[\"1f939-1f3fc-200d-2642-fe0f\",2831],[\"1f939-1f3fd-200d-2642-fe0f\",2832],[\"1f939-1f3fe-200d-2642-fe0f\",2833],[\"1f939-1f3ff-200d-2642-fe0f\",2834],[\"1f939-1f3fb\",2835],[\"1f939-1f3fc\",2836],[\"1f939-1f3fd\",2837],[\"1f939-1f3fe\",2838],[\"1f939-1f3ff\",2839],[\"1f93d-1f3fb-200d-2640-fe0f\",2840],[\"1f93d-1f3fc-200d-2640-fe0f\",2841],[\"1f93d-1f3fd-200d-2640-fe0f\",2842],[\"1f93d-1f3fe-200d-2640-fe0f\",2843],[\"1f93d-1f3ff-200d-2640-fe0f\",2844],[\"1f93d-1f3fb-200d-2642-fe0f\",2845],[\"1f93d-1f3fc-200d-2642-fe0f\",2846],[\"1f93d-1f3fd-200d-2642-fe0f\",2847],[\"1f93d-1f3fe-200d-2642-fe0f\",2848],[\"1f93d-1f3ff-200d-2642-fe0f\",2849],[\"1f93d-1f3fb\",2850],[\"1f93d-1f3fc\",2851],[\"1f93d-1f3fd\",2852],[\"1f93d-1f3fe\",2853],[\"1f93d-1f3ff\",2854],[\"1f93e-1f3fb-200d-2640-fe0f\",2855],[\"1f93e-1f3fc-200d-2640-fe0f\",2856],[\"1f93e-1f3fd-200d-2640-fe0f\",2857],[\"1f93e-1f3fe-200d-2640-fe0f\",2858],[\"1f93e-1f3ff-200d-2640-fe0f\",2859],[\"1f93e-1f3fb-200d-2642-fe0f\",2860],[\"1f93e-1f3fc-200d-2642-fe0f\",2861],[\"1f93e-1f3fd-200d-2642-fe0f\",2862],[\"1f93e-1f3fe-200d-2642-fe0f\",2863],[\"1f93e-1f3ff-200d-2642-fe0f\",2864],[\"1f93e-1f3fb\",2865],[\"1f93e-1f3fc\",2866],[\"1f93e-1f3fd\",2867],[\"1f93e-1f3fe\",2868],[\"1f93e-1f3ff\",2869],[\"1f977-1f3fb\",2870],[\"1f977-1f3fc\",2871],[\"1f977-1f3fd\",2872],[\"1f977-1f3fe\",2873],[\"1f977-1f3ff\",2874],[\"1f9b5-1f3fb\",2875],[\"1f9b5-1f3fc\",2876],[\"1f9b5-1f3fd\",2877],[\"1f9b5-1f3fe\",2878],[\"1f9b5-1f3ff\",2879],[\"1f9b6-1f3fb\",2880],[\"1f9b6-1f3fc\",2881],[\"1f9b6-1f3fd\",2882],[\"1f9b6-1f3fe\",2883],[\"1f9b6-1f3ff\",2884],[\"1f9b8-1f3fb-200d-2640-fe0f\",2885],[\"1f9b8-1f3fc-200d-2640-fe0f\",2886],[\"1f9b8-1f3fd-200d-2640-fe0f\",2887],[\"1f9b8-1f3fe-200d-2640-fe0f\",2888],[\"1f9b8-1f3ff-200d-2640-fe0f\",2889],[\"1f9b8-1f3fb-200d-2642-fe0f\",2890],[\"1f9b8-1f3fc-200d-2642-fe0f\",2891],[\"1f9b8-1f3fd-200d-2642-fe0f\",2892],[\"1f9b8-1f3fe-200d-2642-fe0f\",2893],[\"1f9b8-1f3ff-200d-2642-fe0f\",2894],[\"1f9b8-1f3fb\",2895],[\"1f9b8-1f3fc\",2896],[\"1f9b8-1f3fd\",2897],[\"1f9b8-1f3fe\",2898],[\"1f9b8-1f3ff\",2899],[\"1f9b9-1f3fb-200d-2640-fe0f\",2900],[\"1f9b9-1f3fc-200d-2640-fe0f\",2901],[\"1f9b9-1f3fd-200d-2640-fe0f\",2902],[\"1f9b9-1f3fe-200d-2640-fe0f\",2903],[\"1f9b9-1f3ff-200d-2640-fe0f\",2904],[\"1f9b9-1f3fb-200d-2642-fe0f\",2905],[\"1f9b9-1f3fc-200d-2642-fe0f\",2906],[\"1f9b9-1f3fd-200d-2642-fe0f\",2907],[\"1f9b9-1f3fe-200d-2642-fe0f\",2908],[\"1f9b9-1f3ff-200d-2642-fe0f\",2909],[\"1f9b9-1f3fb\",2910],[\"1f9b9-1f3fc\",2911],[\"1f9b9-1f3fd\",2912],[\"1f9b9-1f3fe\",2913],[\"1f9b9-1f3ff\",2914],[\"1f9bb-1f3fb\",2915],[\"1f9bb-1f3fc\",2916],[\"1f9bb-1f3fd\",2917],[\"1f9bb-1f3fe\",2918],[\"1f9bb-1f3ff\",2919],[\"1f9cd-1f3fb-200d-2640-fe0f\",2920],[\"1f9cd-1f3fc-200d-2640-fe0f\",2921],[\"1f9cd-1f3fd-200d-2640-fe0f\",2922],[\"1f9cd-1f3fe-200d-2640-fe0f\",2923],[\"1f9cd-1f3ff-200d-2640-fe0f\",2924],[\"1f9cd-1f3fb-200d-2642-fe0f\",2925],[\"1f9cd-1f3fc-200d-2642-fe0f\",2926],[\"1f9cd-1f3fd-200d-2642-fe0f\",2927],[\"1f9cd-1f3fe-200d-2642-fe0f\",2928],[\"1f9cd-1f3ff-200d-2642-fe0f\",2929],[\"1f9cd-1f3fb\",2930],[\"1f9cd-1f3fc\",2931],[\"1f9cd-1f3fd\",2932],[\"1f9cd-1f3fe\",2933],[\"1f9cd-1f3ff\",2934],[\"1f9ce-1f3fb-200d-2640-fe0f\",2935],[\"1f9ce-1f3fc-200d-2640-fe0f\",2936],[\"1f9ce-1f3fd-200d-2640-fe0f\",2937],[\"1f9ce-1f3fe-200d-2640-fe0f\",2938],[\"1f9ce-1f3ff-200d-2640-fe0f\",2939],[\"1f9ce-1f3fb-200d-2642-fe0f\",2940],[\"1f9ce-1f3fc-200d-2642-fe0f\",2941],[\"1f9ce-1f3fd-200d-2642-fe0f\",2942],[\"1f9ce-1f3fe-200d-2642-fe0f\",2943],[\"1f9ce-1f3ff-200d-2642-fe0f\",2944],[\"1f9ce-1f3fb\",2945],[\"1f9ce-1f3fc\",2946],[\"1f9ce-1f3fd\",2947],[\"1f9ce-1f3fe\",2948],[\"1f9ce-1f3ff\",2949],[\"1f9cf-1f3fb-200d-2640-fe0f\",2950],[\"1f9cf-1f3fc-200d-2640-fe0f\",2951],[\"1f9cf-1f3fd-200d-2640-fe0f\",2952],[\"1f9cf-1f3fe-200d-2640-fe0f\",2953],[\"1f9cf-1f3ff-200d-2640-fe0f\",2954],[\"1f9cf-1f3fb-200d-2642-fe0f\",2955],[\"1f9cf-1f3fc-200d-2642-fe0f\",2956],[\"1f9cf-1f3fd-200d-2642-fe0f\",2957],[\"1f9cf-1f3fe-200d-2642-fe0f\",2958],[\"1f9cf-1f3ff-200d-2642-fe0f\",2959],[\"1f9cf-1f3fb\",2960],[\"1f9cf-1f3fc\",2961],[\"1f9cf-1f3fd\",2962],[\"1f9cf-1f3fe\",2963],[\"1f9cf-1f3ff\",2964],[\"1f9d1-1f3fb-200d-1f33e\",2965],[\"1f9d1-1f3fc-200d-1f33e\",2966],[\"1f9d1-1f3fd-200d-1f33e\",2967],[\"1f9d1-1f3fe-200d-1f33e\",2968],[\"1f9d1-1f3ff-200d-1f33e\",2969],[\"1f9d1-1f3fb-200d-1f373\",2970],[\"1f9d1-1f3fc-200d-1f373\",2971],[\"1f9d1-1f3fd-200d-1f373\",2972],[\"1f9d1-1f3fe-200d-1f373\",2973],[\"1f9d1-1f3ff-200d-1f373\",2974],[\"1f9d1-1f3fb-200d-1f37c\",2975],[\"1f9d1-1f3fc-200d-1f37c\",2976],[\"1f9d1-1f3fd-200d-1f37c\",2977],[\"1f9d1-1f3fe-200d-1f37c\",2978],[\"1f9d1-1f3ff-200d-1f37c\",2979],[\"1f9d1-1f3fb-200d-1f384\",2980],[\"1f9d1-1f3fc-200d-1f384\",2981],[\"1f9d1-1f3fd-200d-1f384\",2982],[\"1f9d1-1f3fe-200d-1f384\",2983],[\"1f9d1-1f3ff-200d-1f384\",2984],[\"1f9d1-1f3fb-200d-1f393\",2985],[\"1f9d1-1f3fc-200d-1f393\",2986],[\"1f9d1-1f3fd-200d-1f393\",2987],[\"1f9d1-1f3fe-200d-1f393\",2988],[\"1f9d1-1f3ff-200d-1f393\",2989],[\"1f9d1-1f3fb-200d-1f3a4\",2990],[\"1f9d1-1f3fc-200d-1f3a4\",2991],[\"1f9d1-1f3fd-200d-1f3a4\",2992],[\"1f9d1-1f3fe-200d-1f3a4\",2993],[\"1f9d1-1f3ff-200d-1f3a4\",2994],[\"1f9d1-1f3fb-200d-1f3a8\",2995],[\"1f9d1-1f3fc-200d-1f3a8\",2996],[\"1f9d1-1f3fd-200d-1f3a8\",2997],[\"1f9d1-1f3fe-200d-1f3a8\",2998],[\"1f9d1-1f3ff-200d-1f3a8\",2999],[\"1f9d1-1f3fb-200d-1f3eb\",3000],[\"1f9d1-1f3fc-200d-1f3eb\",3001],[\"1f9d1-1f3fd-200d-1f3eb\",3002],[\"1f9d1-1f3fe-200d-1f3eb\",3003],[\"1f9d1-1f3ff-200d-1f3eb\",3004],[\"1f9d1-1f3fb-200d-1f3ed\",3005],[\"1f9d1-1f3fc-200d-1f3ed\",3006],[\"1f9d1-1f3fd-200d-1f3ed\",3007],[\"1f9d1-1f3fe-200d-1f3ed\",3008],[\"1f9d1-1f3ff-200d-1f3ed\",3009],[\"1f9d1-1f3fb-200d-1f4bb\",3010],[\"1f9d1-1f3fc-200d-1f4bb\",3011],[\"1f9d1-1f3fd-200d-1f4bb\",3012],[\"1f9d1-1f3fe-200d-1f4bb\",3013],[\"1f9d1-1f3ff-200d-1f4bb\",3014],[\"1f9d1-1f3fb-200d-1f4bc\",3015],[\"1f9d1-1f3fc-200d-1f4bc\",3016],[\"1f9d1-1f3fd-200d-1f4bc\",3017],[\"1f9d1-1f3fe-200d-1f4bc\",3018],[\"1f9d1-1f3ff-200d-1f4bc\",3019],[\"1f9d1-1f3fb-200d-1f527\",3020],[\"1f9d1-1f3fc-200d-1f527\",3021],[\"1f9d1-1f3fd-200d-1f527\",3022],[\"1f9d1-1f3fe-200d-1f527\",3023],[\"1f9d1-1f3ff-200d-1f527\",3024],[\"1f9d1-1f3fb-200d-1f52c\",3025],[\"1f9d1-1f3fc-200d-1f52c\",3026],[\"1f9d1-1f3fd-200d-1f52c\",3027],[\"1f9d1-1f3fe-200d-1f52c\",3028],[\"1f9d1-1f3ff-200d-1f52c\",3029],[\"1f9d1-1f3fb-200d-1f680\",3030],[\"1f9d1-1f3fc-200d-1f680\",3031],[\"1f9d1-1f3fd-200d-1f680\",3032],[\"1f9d1-1f3fe-200d-1f680\",3033],[\"1f9d1-1f3ff-200d-1f680\",3034],[\"1f9d1-1f3fb-200d-1f692\",3035],[\"1f9d1-1f3fc-200d-1f692\",3036],[\"1f9d1-1f3fd-200d-1f692\",3037],[\"1f9d1-1f3fe-200d-1f692\",3038],[\"1f9d1-1f3ff-200d-1f692\",3039],[\"1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3fb\",3040],[\"1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3fc\",3041],[\"1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3fd\",3042],[\"1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3fe\",3043],[\"1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3ff\",3044],[\"1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3fb\",3045],[\"1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3fc\",3046],[\"1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3fd\",3047],[\"1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3fe\",3048],[\"1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3ff\",3049],[\"1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3fb\",3050],[\"1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3fc\",3051],[\"1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3fd\",3052],[\"1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3fe\",3053],[\"1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3ff\",3054],[\"1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3fb\",3055],[\"1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3fc\",3056],[\"1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3fd\",3057],[\"1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3fe\",3058],[\"1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3ff\",3059],[\"1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3fb\",3060],[\"1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3fc\",3061],[\"1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3fd\",3062],[\"1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3fe\",3063],[\"1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3ff\",3064],[\"1f9d1-1f3fb-200d-1f9af\",3065],[\"1f9d1-1f3fc-200d-1f9af\",3066],[\"1f9d1-1f3fd-200d-1f9af\",3067],[\"1f9d1-1f3fe-200d-1f9af\",3068],[\"1f9d1-1f3ff-200d-1f9af\",3069],[\"1f9d1-1f3fb-200d-1f9b0\",3070],[\"1f9d1-1f3fc-200d-1f9b0\",3071],[\"1f9d1-1f3fd-200d-1f9b0\",3072],[\"1f9d1-1f3fe-200d-1f9b0\",3073],[\"1f9d1-1f3ff-200d-1f9b0\",3074],[\"1f9d1-1f3fb-200d-1f9b1\",3075],[\"1f9d1-1f3fc-200d-1f9b1\",3076],[\"1f9d1-1f3fd-200d-1f9b1\",3077],[\"1f9d1-1f3fe-200d-1f9b1\",3078],[\"1f9d1-1f3ff-200d-1f9b1\",3079],[\"1f9d1-1f3fb-200d-1f9b2\",3080],[\"1f9d1-1f3fc-200d-1f9b2\",3081],[\"1f9d1-1f3fd-200d-1f9b2\",3082],[\"1f9d1-1f3fe-200d-1f9b2\",3083],[\"1f9d1-1f3ff-200d-1f9b2\",3084],[\"1f9d1-1f3fb-200d-1f9b3\",3085],[\"1f9d1-1f3fc-200d-1f9b3\",3086],[\"1f9d1-1f3fd-200d-1f9b3\",3087],[\"1f9d1-1f3fe-200d-1f9b3\",3088],[\"1f9d1-1f3ff-200d-1f9b3\",3089],[\"1f9d1-1f3fb-200d-1f9bc\",3090],[\"1f9d1-1f3fc-200d-1f9bc\",3091],[\"1f9d1-1f3fd-200d-1f9bc\",3092],[\"1f9d1-1f3fe-200d-1f9bc\",3093],[\"1f9d1-1f3ff-200d-1f9bc\",3094],[\"1f9d1-1f3fb-200d-1f9bd\",3095],[\"1f9d1-1f3fc-200d-1f9bd\",3096],[\"1f9d1-1f3fd-200d-1f9bd\",3097],[\"1f9d1-1f3fe-200d-1f9bd\",3098],[\"1f9d1-1f3ff-200d-1f9bd\",3099],[\"1f9d1-1f3fb-200d-2695-fe0f\",3100],[\"1f9d1-1f3fc-200d-2695-fe0f\",3101],[\"1f9d1-1f3fd-200d-2695-fe0f\",3102],[\"1f9d1-1f3fe-200d-2695-fe0f\",3103],[\"1f9d1-1f3ff-200d-2695-fe0f\",3104],[\"1f9d1-1f3fb-200d-2696-fe0f\",3105],[\"1f9d1-1f3fc-200d-2696-fe0f\",3106],[\"1f9d1-1f3fd-200d-2696-fe0f\",3107],[\"1f9d1-1f3fe-200d-2696-fe0f\",3108],[\"1f9d1-1f3ff-200d-2696-fe0f\",3109],[\"1f9d1-1f3fb-200d-2708-fe0f\",3110],[\"1f9d1-1f3fc-200d-2708-fe0f\",3111],[\"1f9d1-1f3fd-200d-2708-fe0f\",3112],[\"1f9d1-1f3fe-200d-2708-fe0f\",3113],[\"1f9d1-1f3ff-200d-2708-fe0f\",3114],[\"1f9d1-1f3fb\",3115],[\"1f9d1-1f3fc\",3116],[\"1f9d1-1f3fd\",3117],[\"1f9d1-1f3fe\",3118],[\"1f9d1-1f3ff\",3119],[\"1f9d2-1f3fb\",3120],[\"1f9d2-1f3fc\",3121],[\"1f9d2-1f3fd\",3122],[\"1f9d2-1f3fe\",3123],[\"1f9d2-1f3ff\",3124],[\"1f9d3-1f3fb\",3125],[\"1f9d3-1f3fc\",3126],[\"1f9d3-1f3fd\",3127],[\"1f9d3-1f3fe\",3128],[\"1f9d3-1f3ff\",3129],[\"1f9d4-1f3fb\",3130],[\"1f9d4-1f3fc\",3131],[\"1f9d4-1f3fd\",3132],[\"1f9d4-1f3fe\",3133],[\"1f9d4-1f3ff\",3134],[\"1f9d5-1f3fb\",3135],[\"1f9d5-1f3fc\",3136],[\"1f9d5-1f3fd\",3137],[\"1f9d5-1f3fe\",3138],[\"1f9d5-1f3ff\",3139],[\"1f9d6-1f3fb-200d-2640-fe0f\",3140],[\"1f9d6-1f3fc-200d-2640-fe0f\",3141],[\"1f9d6-1f3fd-200d-2640-fe0f\",3142],[\"1f9d6-1f3fe-200d-2640-fe0f\",3143],[\"1f9d6-1f3ff-200d-2640-fe0f\",3144],[\"1f9d6-1f3fb-200d-2642-fe0f\",3145],[\"1f9d6-1f3fc-200d-2642-fe0f\",3146],[\"1f9d6-1f3fd-200d-2642-fe0f\",3147],[\"1f9d6-1f3fe-200d-2642-fe0f\",3148],[\"1f9d6-1f3ff-200d-2642-fe0f\",3149],[\"1f9d6-1f3fb\",3150],[\"1f9d6-1f3fc\",3151],[\"1f9d6-1f3fd\",3152],[\"1f9d6-1f3fe\",3153],[\"1f9d6-1f3ff\",3154],[\"1f9d7-1f3fb-200d-2640-fe0f\",3155],[\"1f9d7-1f3fc-200d-2640-fe0f\",3156],[\"1f9d7-1f3fd-200d-2640-fe0f\",3157],[\"1f9d7-1f3fe-200d-2640-fe0f\",3158],[\"1f9d7-1f3ff-200d-2640-fe0f\",3159],[\"1f9d7-1f3fb-200d-2642-fe0f\",3160],[\"1f9d7-1f3fc-200d-2642-fe0f\",3161],[\"1f9d7-1f3fd-200d-2642-fe0f\",3162],[\"1f9d7-1f3fe-200d-2642-fe0f\",3163],[\"1f9d7-1f3ff-200d-2642-fe0f\",3164],[\"1f9d7-1f3fb\",3165],[\"1f9d7-1f3fc\",3166],[\"1f9d7-1f3fd\",3167],[\"1f9d7-1f3fe\",3168],[\"1f9d7-1f3ff\",3169],[\"1f9d8-1f3fb-200d-2640-fe0f\",3170],[\"1f9d8-1f3fc-200d-2640-fe0f\",3171],[\"1f9d8-1f3fd-200d-2640-fe0f\",3172],[\"1f9d8-1f3fe-200d-2640-fe0f\",3173],[\"1f9d8-1f3ff-200d-2640-fe0f\",3174],[\"1f9d8-1f3fb-200d-2642-fe0f\",3175],[\"1f9d8-1f3fc-200d-2642-fe0f\",3176],[\"1f9d8-1f3fd-200d-2642-fe0f\",3177],[\"1f9d8-1f3fe-200d-2642-fe0f\",3178],[\"1f9d8-1f3ff-200d-2642-fe0f\",3179],[\"1f9d8-1f3fb\",3180],[\"1f9d8-1f3fc\",3181],[\"1f9d8-1f3fd\",3182],[\"1f9d8-1f3fe\",3183],[\"1f9d8-1f3ff\",3184],[\"1f9d9-1f3fb-200d-2640-fe0f\",3185],[\"1f9d9-1f3fc-200d-2640-fe0f\",3186],[\"1f9d9-1f3fd-200d-2640-fe0f\",3187],[\"1f9d9-1f3fe-200d-2640-fe0f\",3188],[\"1f9d9-1f3ff-200d-2640-fe0f\",3189],[\"1f9d9-1f3fb-200d-2642-fe0f\",3190],[\"1f9d9-1f3fc-200d-2642-fe0f\",3191],[\"1f9d9-1f3fd-200d-2642-fe0f\",3192],[\"1f9d9-1f3fe-200d-2642-fe0f\",3193],[\"1f9d9-1f3ff-200d-2642-fe0f\",3194],[\"1f9d9-1f3fb\",3195],[\"1f9d9-1f3fc\",3196],[\"1f9d9-1f3fd\",3197],[\"1f9d9-1f3fe\",3198],[\"1f9d9-1f3ff\",3199],[\"1f9da-1f3fb-200d-2640-fe0f\",3200],[\"1f9da-1f3fc-200d-2640-fe0f\",3201],[\"1f9da-1f3fd-200d-2640-fe0f\",3202],[\"1f9da-1f3fe-200d-2640-fe0f\",3203],[\"1f9da-1f3ff-200d-2640-fe0f\",3204],[\"1f9da-1f3fb-200d-2642-fe0f\",3205],[\"1f9da-1f3fc-200d-2642-fe0f\",3206],[\"1f9da-1f3fd-200d-2642-fe0f\",3207],[\"1f9da-1f3fe-200d-2642-fe0f\",3208],[\"1f9da-1f3ff-200d-2642-fe0f\",3209],[\"1f9da-1f3fb\",3210],[\"1f9da-1f3fc\",3211],[\"1f9da-1f3fd\",3212],[\"1f9da-1f3fe\",3213],[\"1f9da-1f3ff\",3214],[\"1f9db-1f3fb-200d-2640-fe0f\",3215],[\"1f9db-1f3fc-200d-2640-fe0f\",3216],[\"1f9db-1f3fd-200d-2640-fe0f\",3217],[\"1f9db-1f3fe-200d-2640-fe0f\",3218],[\"1f9db-1f3ff-200d-2640-fe0f\",3219],[\"1f9db-1f3fb-200d-2642-fe0f\",3220],[\"1f9db-1f3fc-200d-2642-fe0f\",3221],[\"1f9db-1f3fd-200d-2642-fe0f\",3222],[\"1f9db-1f3fe-200d-2642-fe0f\",3223],[\"1f9db-1f3ff-200d-2642-fe0f\",3224],[\"1f9db-1f3fb\",3225],[\"1f9db-1f3fc\",3226],[\"1f9db-1f3fd\",3227],[\"1f9db-1f3fe\",3228],[\"1f9db-1f3ff\",3229],[\"1f9dc-1f3fb-200d-2640-fe0f\",3230],[\"1f9dc-1f3fc-200d-2640-fe0f\",3231],[\"1f9dc-1f3fd-200d-2640-fe0f\",3232],[\"1f9dc-1f3fe-200d-2640-fe0f\",3233],[\"1f9dc-1f3ff-200d-2640-fe0f\",3234],[\"1f9dc-1f3fb-200d-2642-fe0f\",3235],[\"1f9dc-1f3fc-200d-2642-fe0f\",3236],[\"1f9dc-1f3fd-200d-2642-fe0f\",3237],[\"1f9dc-1f3fe-200d-2642-fe0f\",3238],[\"1f9dc-1f3ff-200d-2642-fe0f\",3239],[\"1f9dc-1f3fb\",3240],[\"1f9dc-1f3fc\",3241],[\"1f9dc-1f3fd\",3242],[\"1f9dc-1f3fe\",3243],[\"1f9dc-1f3ff\",3244],[\"1f9dd-1f3fb-200d-2640-fe0f\",3245],[\"1f9dd-1f3fc-200d-2640-fe0f\",3246],[\"1f9dd-1f3fd-200d-2640-fe0f\",3247],[\"1f9dd-1f3fe-200d-2640-fe0f\",3248],[\"1f9dd-1f3ff-200d-2640-fe0f\",3249],[\"1f9dd-1f3fb-200d-2642-fe0f\",3250],[\"1f9dd-1f3fc-200d-2642-fe0f\",3251],[\"1f9dd-1f3fd-200d-2642-fe0f\",3252],[\"1f9dd-1f3fe-200d-2642-fe0f\",3253],[\"1f9dd-1f3ff-200d-2642-fe0f\",3254],[\"1f9dd-1f3fb\",3255],[\"1f9dd-1f3fc\",3256],[\"1f9dd-1f3fd\",3257],[\"1f9dd-1f3fe\",3258],[\"1f9dd-1f3ff\",3259],[\"261d-1f3fb\",3260],[\"261d-1f3fc\",3261],[\"261d-1f3fd\",3262],[\"261d-1f3fe\",3263],[\"261d-1f3ff\",3264],[\"26f9-1f3fb-200d-2640-fe0f\",3265],[\"26f9-1f3fc-200d-2640-fe0f\",3266],[\"26f9-1f3fd-200d-2640-fe0f\",3267],[\"26f9-1f3fe-200d-2640-fe0f\",3268],[\"26f9-1f3ff-200d-2640-fe0f\",3269],[\"26f9-1f3fb-200d-2642-fe0f\",3270],[\"26f9-1f3fc-200d-2642-fe0f\",3271],[\"26f9-1f3fd-200d-2642-fe0f\",3272],[\"26f9-1f3fe-200d-2642-fe0f\",3273],[\"26f9-1f3ff-200d-2642-fe0f\",3274],[\"26f9-1f3fb\",3275],[\"26f9-1f3fc\",3276],[\"26f9-1f3fd\",3277],[\"26f9-1f3fe\",3278],[\"26f9-1f3ff\",3279],[\"270a-1f3fb\",3280],[\"270a-1f3fc\",3281],[\"270a-1f3fd\",3282],[\"270a-1f3fe\",3283],[\"270a-1f3ff\",3284],[\"270b-1f3fb\",3285],[\"270b-1f3fc\",3286],[\"270b-1f3fd\",3287],[\"270b-1f3fe\",3288],[\"270b-1f3ff\",3289],[\"270c-1f3fb\",3290],[\"270c-1f3fc\",3291],[\"270c-1f3fd\",3292],[\"270c-1f3fe\",3293],[\"270c-1f3ff\",3294],[\"270d-1f3fb\",3295],[\"270d-1f3fc\",3296],[\"270d-1f3fd\",3297],[\"270d-1f3fe\",3298],[\"270d-1f3ff\",3299]]);\n\nexport const CategoryNames = [\"recent\",\"smileys-emotion\",\"people-body\",\"animals-nature\",\"food-drink\",\"travel-places\",\"activities\",\"objects\",\"symbols\",\"flags\",\"custom\"];\n\nexport const CategoryMessage = new Map([[\"smileys-emotion\",\"Smileys & Emotion\"],[\"people-body\",\"People & Body\"],[\"component\",\"Component\"],[\"animals-nature\",\"Animals & Nature\"],[\"food-drink\",\"Food & Drink\"],[\"travel-places\",\"Travel & Places\"],[\"activities\",\"Activities\"],[\"objects\",\"Objects\"],[\"symbols\",\"Symbols\"],[\"flags\",\"Flags\"],[\"custom\",\"Custom\"],[\"recent\",\"Recently Used\"],[\"searchResults\",\"Search Results\"]]);\n\nexport const CategoryTranslations = new Map([['recent', t('emoji_picker.recent')],['searchResults', t('emoji_picker.searchResults')],['recent', t('emoji_picker.recent')],['smileys-emotion', t('emoji_picker.smileys-emotion')],['people-body', t('emoji_picker.people-body')],['animals-nature', t('emoji_picker.animals-nature')],['food-drink', t('emoji_picker.food-drink')],['travel-places', t('emoji_picker.travel-places')],['activities', t('emoji_picker.activities')],['objects', t('emoji_picker.objects')],['symbols', t('emoji_picker.symbols')],['flags', t('emoji_picker.flags')],['custom', t('emoji_picker.custom')]]);\n\nexport const SkinTranslations = new Map([['default', t('emoji_skin.default')], ['1F3FB', t('emoji_skin.light_skin_tone')], ['1F3FC', t('emoji_skin.medium_light_skin_tone')], ['1F3FD', t('emoji_skin.medium_skin_tone')], ['1F3FE', t('emoji_skin.medium_dark_skin_tone')], ['1F3FF', t('emoji_skin.dark_skin_tone')]]);\n\nexport const ComponentCategory = 'Component';\n\nconst AllEmojiIndicesByCategory = new Map([[\"smileys-emotion\",[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150]],[\"people-body\",[151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,1810,1811,1812,1813,1814,1815,1816,1817,1818,1819,1820,1821,1822,1823,1824,1825,1826,1827,1828,1829,1830,1831,1832,1833,1834,1835,1836,1837,1838,1839,1840,1841,1842,1843,1844,1845,1846,1847,1848,1849,1850,1851,1852,1853,1854,1855,1856,1857,1858,1859,1860,1861,1862,1863,1864,1865,1866,1867,1868,1869,1870,1871,1872,1873,1874,1875,1876,1877,1878,1879,1880,1881,1882,1883,1884,1885,1886,1887,1888,1889,1890,1891,1892,1893,1894,1895,1896,1897,1898,1899,1900,1901,1902,1903,1904,1905,1906,1907,1908,1909,1910,1911,1912,1913,1914,1915,1916,1917,1918,1919,1920,1921,1922,1923,1924,1925,1926,1927,1928,1929,1930,1931,1932,1933,1934,1935,1936,1937,1938,1939,1940,1941,1942,1943,1944,1945,1946,1947,1948,1949,1950,1951,1952,1953,1954,1955,1956,1957,1958,1959,1960,1961,1962,1963,1964,1965,1966,1967,1968,1969,1970,1971,1972,1973,1974,1975,1976,1977,1978,1979,1980,1981,1982,1983,1984,1985,1986,1987,1988,1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022,2023,2024,2025,2026,2027,2028,2029,2030,2031,2032,2033,2034,2035,2036,2037,2038,2039,2040,2041,2042,2043,2044,2045,2046,2047,2048,2049,2050,2051,2052,2053,2054,2055,2056,2057,2058,2059,2060,2061,2062,2063,2064,2065,2066,2067,2068,2069,2070,2071,2072,2073,2074,2075,2076,2077,2078,2079,2080,2081,2082,2083,2084,2085,2086,2087,2088,2089,2090,2091,2092,2093,2094,2095,2096,2097,2098,2099,2100,2101,2102,2103,2104,2105,2106,2107,2108,2109,2110,2111,2112,2113,2114,2115,2116,2117,2118,2119,2120,2121,2122,2123,2124,2125,2126,2127,2128,2129,2130,2131,2132,2133,2134,2135,2136,2137,2138,2139,2140,2141,2142,2143,2144,2145,2146,2147,2148,2149,2150,2151,2152,2153,2154,2155,2156,2157,2158,2159,2160,2161,2162,2163,2164,2165,2166,2167,2168,2169,2170,2171,2172,2173,2174,2175,2176,2177,2178,2179,2180,2181,2182,2183,2184,2185,2186,2187,2188,2189,2190,2191,2192,2193,2194,2195,2196,2197,2198,2199,2200,2201,2202,2203,2204,2205,2206,2207,2208,2209,2210,2211,2212,2213,2214,2215,2216,2217,2218,2219,2220,2221,2222,2223,2224,2225,2226,2227,2228,2229,2230,2231,2232,2233,2234,2235,2236,2237,2238,2239,2240,2241,2242,2243,2244,2245,2246,2247,2248,2249,2250,2251,2252,2253,2254,2255,2256,2257,2258,2259,2260,2261,2262,2263,2264,2265,2266,2267,2268,2269,2270,2271,2272,2273,2274,2275,2276,2277,2278,2279,2280,2281,2282,2283,2284,2285,2286,2287,2288,2289,2290,2291,2292,2293,2294,2295,2296,2297,2298,2299,2300,2301,2302,2303,2304,2305,2306,2307,2308,2309,2310,2311,2312,2313,2314,2315,2316,2317,2318,2319,2320,2321,2322,2323,2324,2325,2326,2327,2328,2329,2330,2331,2332,2333,2334,2335,2336,2337,2338,2339,2340,2341,2342,2343,2344,2345,2346,2347,2348,2349,2350,2351,2352,2353,2354,2355,2356,2357,2358,2359,2360,2361,2362,2363,2364,2365,2366,2367,2368,2369,2370,2371,2372,2373,2374,2375,2376,2377,2378,2379,2380,2381,2382,2383,2384,2385,2386,2387,2388,2389,2390,2391,2392,2393,2394,2395,2396,2397,2398,2399,2400,2401,2402,2403,2404,2405,2406,2407,2408,2409,2410,2411,2412,2413,2414,2415,2416,2417,2418,2419,2420,2421,2422,2423,2424,2425,2426,2427,2428,2429,2430,2431,2432,2433,2434,2435,2436,2437,2438,2439,2440,2441,2442,2443,2444,2445,2446,2447,2448,2449,2450,2451,2452,2453,2454,2455,2456,2457,2458,2459,2460,2461,2462,2463,2464,2465,2466,2467,2468,2469,2470,2471,2472,2473,2474,2475,2476,2477,2478,2479,2480,2481,2482,2483,2484,2485,2486,2487,2488,2489,2490,2491,2492,2493,2494,2495,2496,2497,2498,2499,2500,2501,2502,2503,2504,2505,2506,2507,2508,2509,2510,2511,2512,2513,2514,2515,2516,2517,2518,2519,2520,2521,2522,2523,2524,2525,2526,2527,2528,2529,2530,2531,2532,2533,2534,2535,2536,2537,2538,2539,2540,2541,2542,2543,2544,2545,2546,2547,2548,2549,2550,2551,2552,2553,2554,2555,2556,2557,2558,2559,2560,2561,2562,2563,2564,2565,2566,2567,2568,2569,2570,2571,2572,2573,2574,2575,2576,2577,2578,2579,2580,2581,2582,2583,2584,2585,2586,2587,2588,2589,2590,2591,2592,2593,2594,2595,2596,2597,2598,2599,2600,2601,2602,2603,2604,2605,2606,2607,2608,2609,2610,2611,2612,2613,2614,2615,2616,2617,2618,2619,2620,2621,2622,2623,2624,2625,2626,2627,2628,2629,2630,2631,2632,2633,2634,2635,2636,2637,2638,2639,2640,2641,2642,2643,2644,2645,2646,2647,2648,2649,2650,2651,2652,2653,2654,2655,2656,2657,2658,2659,2660,2661,2662,2663,2664,2665,2666,2667,2668,2669,2670,2671,2672,2673,2674,2675,2676,2677,2678,2679,2680,2681,2682,2683,2684,2685,2686,2687,2688,2689,2690,2691,2692,2693,2694,2695,2696,2697,2698,2699,2700,2701,2702,2703,2704,2705,2706,2707,2708,2709,2710,2711,2712,2713,2714,2715,2716,2717,2718,2719,2720,2721,2722,2723,2724,2725,2726,2727,2728,2729,2730,2731,2732,2733,2734,2735,2736,2737,2738,2739,2740,2741,2742,2743,2744,2745,2746,2747,2748,2749,2750,2751,2752,2753,2754,2755,2756,2757,2758,2759,2760,2761,2762,2763,2764,2765,2766,2767,2768,2769,2770,2771,2772,2773,2774,2775,2776,2777,2778,2779,2780,2781,2782,2783,2784,2785,2786,2787,2788,2789,2790,2791,2792,2793,2794,2795,2796,2797,2798,2799,2800,2801,2802,2803,2804,2805,2806,2807,2808,2809,2810,2811,2812,2813,2814,2815,2816,2817,2818,2819,2820,2821,2822,2823,2824,2825,2826,2827,2828,2829,2830,2831,2832,2833,2834,2835,2836,2837,2838,2839,2840,2841,2842,2843,2844,2845,2846,2847,2848,2849,2850,2851,2852,2853,2854,2855,2856,2857,2858,2859,2860,2861,2862,2863,2864,2865,2866,2867,2868,2869,2870,2871,2872,2873,2874,2875,2876,2877,2878,2879,2880,2881,2882,2883,2884,2885,2886,2887,2888,2889,2890,2891,2892,2893,2894,2895,2896,2897,2898,2899,2900,2901,2902,2903,2904,2905,2906,2907,2908,2909,2910,2911,2912,2913,2914,2915,2916,2917,2918,2919,2920,2921,2922,2923,2924,2925,2926,2927,2928,2929,2930,2931,2932,2933,2934,2935,2936,2937,2938,2939,2940,2941,2942,2943,2944,2945,2946,2947,2948,2949,2950,2951,2952,2953,2954,2955,2956,2957,2958,2959,2960,2961,2962,2963,2964,2965,2966,2967,2968,2969,2970,2971,2972,2973,2974,2975,2976,2977,2978,2979,2980,2981,2982,2983,2984,2985,2986,2987,2988,2989,2990,2991,2992,2993,2994,2995,2996,2997,2998,2999,3000,3001,3002,3003,3004,3005,3006,3007,3008,3009,3010,3011,3012,3013,3014,3015,3016,3017,3018,3019,3020,3021,3022,3023,3024,3025,3026,3027,3028,3029,3030,3031,3032,3033,3034,3035,3036,3037,3038,3039,3040,3041,3042,3043,3044,3045,3046,3047,3048,3049,3050,3051,3052,3053,3054,3055,3056,3057,3058,3059,3060,3061,3062,3063,3064,3065,3066,3067,3068,3069,3070,3071,3072,3073,3074,3075,3076,3077,3078,3079,3080,3081,3082,3083,3084,3085,3086,3087,3088,3089,3090,3091,3092,3093,3094,3095,3096,3097,3098,3099,3100,3101,3102,3103,3104,3105,3106,3107,3108,3109,3110,3111,3112,3113,3114,3115,3116,3117,3118,3119,3120,3121,3122,3123,3124,3125,3126,3127,3128,3129,3130,3131,3132,3133,3134,3135,3136,3137,3138,3139,3140,3141,3142,3143,3144,3145,3146,3147,3148,3149,3150,3151,3152,3153,3154,3155,3156,3157,3158,3159,3160,3161,3162,3163,3164,3165,3166,3167,3168,3169,3170,3171,3172,3173,3174,3175,3176,3177,3178,3179,3180,3181,3182,3183,3184,3185,3186,3187,3188,3189,3190,3191,3192,3193,3194,3195,3196,3197,3198,3199,3200,3201,3202,3203,3204,3205,3206,3207,3208,3209,3210,3211,3212,3213,3214,3215,3216,3217,3218,3219,3220,3221,3222,3223,3224,3225,3226,3227,3228,3229,3230,3231,3232,3233,3234,3235,3236,3237,3238,3239,3240,3241,3242,3243,3244,3245,3246,3247,3248,3249,3250,3251,3252,3253,3254,3255,3256,3257,3258,3259,3260,3261,3262,3263,3264,3265,3266,3267,3268,3269,3270,3271,3272,3273,3274,3275,3276,3277,3278,3279,3280,3281,3282,3283,3284,3285,3286,3287,3288,3289,3290,3291,3292,3293,3294,3295,3296,3297,3298,3299]],[\"component\",[498,499,500,501,502]],[\"animals-nature\",[503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642]],[\"food-drink\",[643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771]],[\"travel-places\",[772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,896,897,898,899,900,901,902,903,904,905,906,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986]],[\"activities\",[987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070]],[\"objects\",[1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,1182,1183,1184,1185,1186,1187,1188,1189,1190,1191,1192,1193,1194,1195,1196,1197,1198,1199,1200,1201,1202,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,1217,1218,1219,1220,1221,1222,1223,1224,1225,1226,1227,1228,1229,1230,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,1246,1247,1248,1249,1250,1251,1252,1253,1254,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,1276,1277,1278,1279,1280,1281,1282,1283,1284,1285,1286,1287,1288,1289,1290,1291,1292,1293,1294,1295,1296,1297,1298,1299,1300,1301,1302,1303,1304,1305,1306,1307,1308,1309,1310,1311,1312,1313,1314,1315,1316,1317,1318,1319,1320]],[\"symbols\",[1321,1322,1323,1324,1325,1326,1327,1328,1329,1330,1331,1332,1333,1334,1335,1336,1337,1338,1339,1340,1341,1342,1343,1344,1345,1346,1347,1348,1349,1350,1351,1352,1353,1354,1355,1356,1357,1358,1359,1360,1361,1362,1363,1364,1365,1366,1367,1368,1369,1370,1371,1372,1373,1374,1375,1376,1377,1378,1379,1380,1381,1382,1383,1384,1385,1386,1387,1388,1389,1390,1391,1392,1393,1394,1395,1396,1397,1398,1399,1400,1401,1402,1403,1404,1405,1406,1407,1408,1409,1410,1411,1412,1413,1414,1415,1416,1417,1418,1419,1420,1421,1422,1423,1424,1425,1426,1427,1428,1429,1430,1431,1432,1433,1434,1435,1436,1437,1438,1439,1440,1441,1442,1443,1444,1445,1446,1447,1448,1449,1450,1451,1452,1453,1454,1455,1456,1457,1458,1459,1460,1461,1462,1463,1464,1465,1466,1467,1468,1469,1470,1471,1472,1473,1474,1475,1476,1477,1478,1479,1480,1481,1482,1483,1484,1485,1486,1487,1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,1515,1516,1517,1518,1519,1520,1521,1522,1523,1524,1525,1526,1527,1528,1529,1530,1531,1532,1533,1534,1535,1536,1537,1538,1539,1540]],[\"flags\",[1541,1542,1543,1544,1545,1546,1547,1548,1549,1550,1551,1552,1553,1554,1555,1556,1557,1558,1559,1560,1561,1562,1563,1564,1565,1566,1567,1568,1569,1570,1571,1572,1573,1574,1575,1576,1577,1578,1579,1580,1581,1582,1583,1584,1585,1586,1587,1588,1589,1590,1591,1592,1593,1594,1595,1596,1597,1598,1599,1600,1601,1602,1603,1604,1605,1606,1607,1608,1609,1610,1611,1612,1613,1614,1615,1616,1617,1618,1619,1620,1621,1622,1623,1624,1625,1626,1627,1628,1629,1630,1631,1632,1633,1634,1635,1636,1637,1638,1639,1640,1641,1642,1643,1644,1645,1646,1647,1648,1649,1650,1651,1652,1653,1654,1655,1656,1657,1658,1659,1660,1661,1662,1663,1664,1665,1666,1667,1668,1669,1670,1671,1672,1673,1674,1675,1676,1677,1678,1679,1680,1681,1682,1683,1684,1685,1686,1687,1688,1689,1690,1691,1692,1693,1694,1695,1696,1697,1698,1699,1700,1701,1702,1703,1704,1705,1706,1707,1708,1709,1710,1711,1712,1713,1714,1715,1716,1717,1718,1719,1720,1721,1722,1723,1724,1725,1726,1727,1728,1729,1730,1731,1732,1733,1734,1735,1736,1737,1738,1739,1740,1741,1742,1743,1744,1745,1746,1747,1748,1749,1750,1751,1752,1753,1754,1755,1756,1757,1758,1759,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809]],[\"custom\",[3300]]]);\n\nconst EmojiIndicesByCategoryAndSkin = new Map([['default', new Map([[\"people-body\",[151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,181,182,183,184,185,188,189,190,191,192,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,401,402,403,404,405,406,408,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458]]])], ['1F3FB', new Map([[\"people-body\",[1810,1815,1820,1825,1830,1835,1840,1845,1850,1855,1860,1865,1870,1875,1880,1885,1890,1895,1900,1905,1910,1915,1920,1925,1930,1935,1940,1945,1950,1955,1960,1965,1970,1975,1980,1985,1990,1995,2000,2005,2010,2015,2020,2025,2030,2035,2040,2045,2050,2055,2060,2065,2070,2075,2080,2085,2090,2095,2100,2105,2110,2115,2120,2125,2130,2135,2140,2145,2150,2155,2160,2165,2170,2175,2180,2185,2190,2195,2200,2205,2210,2215,2220,2225,2230,2231,2232,2233,2250,2255,2256,2257,2258,2275,2280,2281,2282,2283,2300,2305,2310,2315,2320,2325,2330,2335,2340,2345,2350,2355,2360,2365,2370,2375,2380,2385,2390,2395,2400,2405,2410,2415,2420,2425,2430,2435,2440,2445,2450,2455,2460,2465,2470,2475,2480,2485,2490,2495,2500,2505,2510,2515,2520,2525,2530,2535,2540,2545,2550,2555,2560,2565,2570,2575,2580,2585,2590,2595,2600,2605,2610,2615,2620,2625,2630,2635,2640,2645,2650,2655,2660,2665,2670,2675,2680,2685,2690,2695,2700,2705,2710,2715,2720,2725,2730,2735,2740,2745,2750,2755,2760,2765,2770,2775,2780,2785,2790,2795,2800,2805,2810,2815,2820,2825,2830,2835,2840,2845,2850,2855,2860,2865,2870,2875,2880,2885,2890,2895,2900,2905,2910,2915,2920,2925,2930,2935,2940,2945,2950,2955,2960,2965,2970,2975,2980,2985,2990,2995,3000,3005,3010,3015,3020,3025,3030,3035,3040,3041,3042,3043,3044,3065,3070,3075,3080,3085,3090,3095,3100,3105,3110,3115,3120,3125,3130,3135,3140,3145,3150,3155,3160,3165,3170,3175,3180,3185,3190,3195,3200,3205,3210,3215,3220,3225,3230,3235,3240,3245,3250,3255,3260,3265,3270,3275,3280,3285,3290,3295]]])], ['1F3FC', new Map([[\"people-body\",[1811,1816,1821,1826,1831,1836,1841,1846,1851,1856,1861,1866,1871,1876,1881,1886,1891,1896,1901,1906,1911,1916,1921,1926,1931,1936,1941,1946,1951,1956,1961,1966,1971,1976,1981,1986,1991,1996,2001,2006,2011,2016,2021,2026,2031,2036,2041,2046,2051,2056,2061,2066,2071,2076,2081,2086,2091,2096,2101,2106,2111,2116,2121,2126,2131,2136,2141,2146,2151,2156,2161,2166,2171,2176,2181,2186,2191,2196,2201,2206,2211,2216,2221,2226,2234,2235,2236,2237,2251,2259,2260,2261,2262,2276,2284,2285,2286,2287,2301,2306,2311,2316,2321,2326,2331,2336,2341,2346,2351,2356,2361,2366,2371,2376,2381,2386,2391,2396,2401,2406,2411,2416,2421,2426,2431,2436,2441,2446,2451,2456,2461,2466,2471,2476,2481,2486,2491,2496,2501,2506,2511,2516,2521,2526,2531,2536,2541,2546,2551,2556,2561,2566,2571,2576,2581,2586,2591,2596,2601,2606,2611,2616,2621,2626,2631,2636,2641,2646,2651,2656,2661,2666,2671,2676,2681,2686,2691,2696,2701,2706,2711,2716,2721,2726,2731,2736,2741,2746,2751,2756,2761,2766,2771,2776,2781,2786,2791,2796,2801,2806,2811,2816,2821,2826,2831,2836,2841,2846,2851,2856,2861,2866,2871,2876,2881,2886,2891,2896,2901,2906,2911,2916,2921,2926,2931,2936,2941,2946,2951,2956,2961,2966,2971,2976,2981,2986,2991,2996,3001,3006,3011,3016,3021,3026,3031,3036,3045,3046,3047,3048,3049,3066,3071,3076,3081,3086,3091,3096,3101,3106,3111,3116,3121,3126,3131,3136,3141,3146,3151,3156,3161,3166,3171,3176,3181,3186,3191,3196,3201,3206,3211,3216,3221,3226,3231,3236,3241,3246,3251,3256,3261,3266,3271,3276,3281,3286,3291,3296]]])], ['1F3FD', new Map([[\"people-body\",[1812,1817,1822,1827,1832,1837,1842,1847,1852,1857,1862,1867,1872,1877,1882,1887,1892,1897,1902,1907,1912,1917,1922,1927,1932,1937,1942,1947,1952,1957,1962,1967,1972,1977,1982,1987,1992,1997,2002,2007,2012,2017,2022,2027,2032,2037,2042,2047,2052,2057,2062,2067,2072,2077,2082,2087,2092,2097,2102,2107,2112,2117,2122,2127,2132,2137,2142,2147,2152,2157,2162,2167,2172,2177,2182,2187,2192,2197,2202,2207,2212,2217,2222,2227,2238,2239,2240,2241,2252,2263,2264,2265,2266,2277,2288,2289,2290,2291,2302,2307,2312,2317,2322,2327,2332,2337,2342,2347,2352,2357,2362,2367,2372,2377,2382,2387,2392,2397,2402,2407,2412,2417,2422,2427,2432,2437,2442,2447,2452,2457,2462,2467,2472,2477,2482,2487,2492,2497,2502,2507,2512,2517,2522,2527,2532,2537,2542,2547,2552,2557,2562,2567,2572,2577,2582,2587,2592,2597,2602,2607,2612,2617,2622,2627,2632,2637,2642,2647,2652,2657,2662,2667,2672,2677,2682,2687,2692,2697,2702,2707,2712,2717,2722,2727,2732,2737,2742,2747,2752,2757,2762,2767,2772,2777,2782,2787,2792,2797,2802,2807,2812,2817,2822,2827,2832,2837,2842,2847,2852,2857,2862,2867,2872,2877,2882,2887,2892,2897,2902,2907,2912,2917,2922,2927,2932,2937,2942,2947,2952,2957,2962,2967,2972,2977,2982,2987,2992,2997,3002,3007,3012,3017,3022,3027,3032,3037,3050,3051,3052,3053,3054,3067,3072,3077,3082,3087,3092,3097,3102,3107,3112,3117,3122,3127,3132,3137,3142,3147,3152,3157,3162,3167,3172,3177,3182,3187,3192,3197,3202,3207,3212,3217,3222,3227,3232,3237,3242,3247,3252,3257,3262,3267,3272,3277,3282,3287,3292,3297]]])], ['1F3FE', new Map([[\"people-body\",[1813,1818,1823,1828,1833,1838,1843,1848,1853,1858,1863,1868,1873,1878,1883,1888,1893,1898,1903,1908,1913,1918,1923,1928,1933,1938,1943,1948,1953,1958,1963,1968,1973,1978,1983,1988,1993,1998,2003,2008,2013,2018,2023,2028,2033,2038,2043,2048,2053,2058,2063,2068,2073,2078,2083,2088,2093,2098,2103,2108,2113,2118,2123,2128,2133,2138,2143,2148,2153,2158,2163,2168,2173,2178,2183,2188,2193,2198,2203,2208,2213,2218,2223,2228,2242,2243,2244,2245,2253,2267,2268,2269,2270,2278,2292,2293,2294,2295,2303,2308,2313,2318,2323,2328,2333,2338,2343,2348,2353,2358,2363,2368,2373,2378,2383,2388,2393,2398,2403,2408,2413,2418,2423,2428,2433,2438,2443,2448,2453,2458,2463,2468,2473,2478,2483,2488,2493,2498,2503,2508,2513,2518,2523,2528,2533,2538,2543,2548,2553,2558,2563,2568,2573,2578,2583,2588,2593,2598,2603,2608,2613,2618,2623,2628,2633,2638,2643,2648,2653,2658,2663,2668,2673,2678,2683,2688,2693,2698,2703,2708,2713,2718,2723,2728,2733,2738,2743,2748,2753,2758,2763,2768,2773,2778,2783,2788,2793,2798,2803,2808,2813,2818,2823,2828,2833,2838,2843,2848,2853,2858,2863,2868,2873,2878,2883,2888,2893,2898,2903,2908,2913,2918,2923,2928,2933,2938,2943,2948,2953,2958,2963,2968,2973,2978,2983,2988,2993,2998,3003,3008,3013,3018,3023,3028,3033,3038,3055,3056,3057,3058,3059,3068,3073,3078,3083,3088,3093,3098,3103,3108,3113,3118,3123,3128,3133,3138,3143,3148,3153,3158,3163,3168,3173,3178,3183,3188,3193,3198,3203,3208,3213,3218,3223,3228,3233,3238,3243,3248,3253,3258,3263,3268,3273,3278,3283,3288,3293,3298]]])], ['1F3FF', new Map([[\"people-body\",[1814,1819,1824,1829,1834,1839,1844,1849,1854,1859,1864,1869,1874,1879,1884,1889,1894,1899,1904,1909,1914,1919,1924,1929,1934,1939,1944,1949,1954,1959,1964,1969,1974,1979,1984,1989,1994,1999,2004,2009,2014,2019,2024,2029,2034,2039,2044,2049,2054,2059,2064,2069,2074,2079,2084,2089,2094,2099,2104,2109,2114,2119,2124,2129,2134,2139,2144,2149,2154,2159,2164,2169,2174,2179,2184,2189,2194,2199,2204,2209,2214,2219,2224,2229,2246,2247,2248,2249,2254,2271,2272,2273,2274,2279,2296,2297,2298,2299,2304,2309,2314,2319,2324,2329,2334,2339,2344,2349,2354,2359,2364,2369,2374,2379,2384,2389,2394,2399,2404,2409,2414,2419,2424,2429,2434,2439,2444,2449,2454,2459,2464,2469,2474,2479,2484,2489,2494,2499,2504,2509,2514,2519,2524,2529,2534,2539,2544,2549,2554,2559,2564,2569,2574,2579,2584,2589,2594,2599,2604,2609,2614,2619,2624,2629,2634,2639,2644,2649,2654,2659,2664,2669,2674,2679,2684,2689,2694,2699,2704,2709,2714,2719,2724,2729,2734,2739,2744,2749,2754,2759,2764,2769,2774,2779,2784,2789,2794,2799,2804,2809,2814,2819,2824,2829,2834,2839,2844,2849,2854,2859,2864,2869,2874,2879,2884,2889,2894,2899,2904,2909,2914,2919,2924,2929,2934,2939,2944,2949,2954,2959,2964,2969,2974,2979,2984,2989,2994,2999,3004,3009,3014,3019,3024,3029,3034,3039,3060,3061,3062,3063,3064,3069,3074,3079,3084,3089,3094,3099,3104,3109,3114,3119,3124,3129,3134,3139,3144,3149,3154,3159,3164,3169,3174,3179,3184,3189,3194,3199,3204,3209,3214,3219,3224,3229,3234,3239,3244,3249,3254,3259,3264,3269,3274,3279,3284,3289,3294,3299]]])]]);\nconst EmojiIndicesByCategoryNoSkin = new Map([[\"smileys-emotion\",[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150]],[\"people-body\",[180,186,187,193,194,195,196,197,198,199,200,201,362,363,364,365,366,367,398,399,400,407,409,438,439,440,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497]],[\"component\",[498,499,500,501,502]],[\"animals-nature\",[503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642]],[\"food-drink\",[643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771]],[\"travel-places\",[772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,896,897,898,899,900,901,902,903,904,905,906,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986]],[\"activities\",[987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070]],[\"objects\",[1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,1182,1183,1184,1185,1186,1187,1188,1189,1190,1191,1192,1193,1194,1195,1196,1197,1198,1199,1200,1201,1202,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,1217,1218,1219,1220,1221,1222,1223,1224,1225,1226,1227,1228,1229,1230,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,1246,1247,1248,1249,1250,1251,1252,1253,1254,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,1276,1277,1278,1279,1280,1281,1282,1283,1284,1285,1286,1287,1288,1289,1290,1291,1292,1293,1294,1295,1296,1297,1298,1299,1300,1301,1302,1303,1304,1305,1306,1307,1308,1309,1310,1311,1312,1313,1314,1315,1316,1317,1318,1319,1320]],[\"symbols\",[1321,1322,1323,1324,1325,1326,1327,1328,1329,1330,1331,1332,1333,1334,1335,1336,1337,1338,1339,1340,1341,1342,1343,1344,1345,1346,1347,1348,1349,1350,1351,1352,1353,1354,1355,1356,1357,1358,1359,1360,1361,1362,1363,1364,1365,1366,1367,1368,1369,1370,1371,1372,1373,1374,1375,1376,1377,1378,1379,1380,1381,1382,1383,1384,1385,1386,1387,1388,1389,1390,1391,1392,1393,1394,1395,1396,1397,1398,1399,1400,1401,1402,1403,1404,1405,1406,1407,1408,1409,1410,1411,1412,1413,1414,1415,1416,1417,1418,1419,1420,1421,1422,1423,1424,1425,1426,1427,1428,1429,1430,1431,1432,1433,1434,1435,1436,1437,1438,1439,1440,1441,1442,1443,1444,1445,1446,1447,1448,1449,1450,1451,1452,1453,1454,1455,1456,1457,1458,1459,1460,1461,1462,1463,1464,1465,1466,1467,1468,1469,1470,1471,1472,1473,1474,1475,1476,1477,1478,1479,1480,1481,1482,1483,1484,1485,1486,1487,1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,1515,1516,1517,1518,1519,1520,1521,1522,1523,1524,1525,1526,1527,1528,1529,1530,1531,1532,1533,1534,1535,1536,1537,1538,1539,1540]],[\"flags\",[1541,1542,1543,1544,1545,1546,1547,1548,1549,1550,1551,1552,1553,1554,1555,1556,1557,1558,1559,1560,1561,1562,1563,1564,1565,1566,1567,1568,1569,1570,1571,1572,1573,1574,1575,1576,1577,1578,1579,1580,1581,1582,1583,1584,1585,1586,1587,1588,1589,1590,1591,1592,1593,1594,1595,1596,1597,1598,1599,1600,1601,1602,1603,1604,1605,1606,1607,1608,1609,1610,1611,1612,1613,1614,1615,1616,1617,1618,1619,1620,1621,1622,1623,1624,1625,1626,1627,1628,1629,1630,1631,1632,1633,1634,1635,1636,1637,1638,1639,1640,1641,1642,1643,1644,1645,1646,1647,1648,1649,1650,1651,1652,1653,1654,1655,1656,1657,1658,1659,1660,1661,1662,1663,1664,1665,1666,1667,1668,1669,1670,1671,1672,1673,1674,1675,1676,1677,1678,1679,1680,1681,1682,1683,1684,1685,1686,1687,1688,1689,1690,1691,1692,1693,1694,1695,1696,1697,1698,1699,1700,1701,1702,1703,1704,1705,1706,1707,1708,1709,1710,1711,1712,1713,1714,1715,1716,1717,1718,1719,1720,1721,1722,1723,1724,1725,1726,1727,1728,1729,1730,1731,1732,1733,1734,1735,1736,1737,1738,1739,1740,1741,1742,1743,1744,1745,1746,1747,1748,1749,1750,1751,1752,1753,1754,1755,1756,1757,1758,1759,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809]],[\"custom\",[3300]]]);\n\nconst skinCodes = {\"1F3FB\":\"light_skin_tone\",\"1F3FC\":\"medium_light_skin_tone\",\"1F3FD\":\"medium_skin_tone\",\"1F3FE\":\"medium_dark_skin_tone\",\"1F3FF\":\"dark_skin_tone\",\"default\":\"default\"};\n\n// Generate the list of indices that belong to each category by an specified skin\nfunction genSkinnedCategories(skin: string) {\n const result = new Map();\n for (const cat of CategoryNames) {\n const indices = [];\n const skinCat = (EmojiIndicesByCategoryAndSkin.get(skin) || new Map()).get(cat) || [];\n indices.push(...(EmojiIndicesByCategoryNoSkin.get(cat) || []));\n indices.push(...skinCat);\n\n result.set(cat, indices);\n }\n return result;\n}\n\nconst getSkinnedCategories = memoize(genSkinnedCategories);\nexport const EmojiIndicesByCategory = new Map([['default', genSkinnedCategories('default')], ['1F3FB', genSkinnedCategories('1F3FB')], ['1F3FC', genSkinnedCategories('1F3FC')], ['1F3FD', genSkinnedCategories('1F3FD')], ['1F3FE', genSkinnedCategories('1F3FE')], ['1F3FF', genSkinnedCategories('1F3FF')]]);\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport type {CustomEmoji, Emoji, SystemEmoji} from '@mattermost/types/emojis';\n\nimport {EmojiIndicesByAlias, EmojiIndicesByUnicode, Emojis} from 'utils/emoji';\n\n// Wrap the contents of the store so that we don't need to construct an ES6 map where most of the content\n// (the system emojis) will never change. It provides the get/has functions of a map and an iterator so\n// that it can be used in for..of loops\nexport default class EmojiMap {\n public customEmojis: Map; // This should probably be private\n private customEmojisArray: Array<[string, CustomEmoji]>;\n\n constructor(customEmojis: Map) {\n this.customEmojis = customEmojis;\n\n // Store customEmojis to an array so we can iterate it more easily\n this.customEmojisArray = [...customEmojis];\n }\n\n has(name: string): boolean {\n return EmojiIndicesByAlias.has(name) || this.customEmojis.has(name);\n }\n\n hasSystemEmoji(name: string): boolean {\n return EmojiIndicesByAlias.has(name);\n }\n\n hasUnicode(codepoint: string): boolean {\n return EmojiIndicesByUnicode.has(codepoint);\n }\n\n get(name: string): Emoji | undefined {\n if (EmojiIndicesByAlias.has(name)) {\n return Emojis[EmojiIndicesByAlias.get(name) as number];\n }\n\n return this.customEmojis.get(name);\n }\n\n getUnicode(codepoint: string): SystemEmoji | undefined {\n return Emojis[EmojiIndicesByUnicode.get(codepoint) as number];\n }\n\n [Symbol.iterator](): Iterator<[string, Emoji]> {\n const customEmojisArray = this.customEmojisArray;\n\n let systemIndex = 0;\n let customIndex = 0;\n\n return {\n next(): IteratorResult<[string, Emoji]> {\n // We loop throgh system emojis first, by progressively incrementing systemIndex until we reach the end of system emojis array\n if (systemIndex < Emojis.length) {\n const systemEmoji = Emojis[systemIndex] as SystemEmoji;\n\n systemIndex += 1;\n\n return {value: [systemEmoji.short_names[0], systemEmoji]};\n }\n\n // Then we loop through custom emojis\n if (customIndex < customEmojisArray.length) {\n const customEmoji = customEmojisArray[customIndex][1] as CustomEmoji;\n\n customIndex += 1;\n\n return {value: [customEmoji.name, customEmoji]};\n }\n\n // When we have looped through all, we return done\n return {done: true, value: undefined};\n },\n };\n }\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport emojiRegex from 'emoji-regex';\nimport React from 'react';\n\nimport type {Emoji, SystemEmoji} from '@mattermost/types/emojis';\n\nimport {EmojiIndicesByUnicode, Emojis} from 'utils/emoji';\n\nconst defaultRule = (aName: string, bName: string, emojiA: Emoji, emojiB: Emoji) => {\n if (emojiA.category === 'custom' && emojiB.category !== 'custom') {\n return 1;\n } else if (emojiB.category === 'custom' && emojiA.category !== 'custom') {\n return -1;\n }\n\n return aName.localeCompare(bName);\n};\n\nconst thumbsDownRule = (otherName: string) => {\n if (otherName === 'thumbsup' || otherName === '+1') {\n return 1;\n }\n return 0;\n};\n\nconst thumbsUpRule = (otherName: string) => {\n if (otherName === 'thumbsdown' || otherName === '-1') {\n return -1;\n }\n return 0;\n};\n\nconst customRules: Record number> = {\n thumbsdown: thumbsDownRule,\n '-1': thumbsDownRule,\n thumbsup: thumbsUpRule,\n '+1': thumbsUpRule,\n};\n\nconst getEmojiName = (emoji: Emoji, searchedName: string) => {\n // There's an edge case for custom emojis that start with a thumb prefix.\n // It doesn't match the first alias for the relevant system emoji.\n // We don't have control over the names or aliases of custom emojis...\n // ... and how they compare to the relevant system ones.\n // So we need to search for a matching alias in the whole array.\n // E.g. thumbsup-custom vs [+1, thumbsup]\n if (!emoji) {\n return '';\n }\n\n // does it have aliases?\n if (searchedName && 'short_names' in emoji) {\n return emoji.short_names.find((alias: string) => alias.startsWith(searchedName)) || emoji.short_name;\n }\n\n return 'short_name' in emoji ? emoji.short_name : emoji.name;\n};\n\nexport function compareEmojis(emojiA: Emoji, emojiB: Emoji, searchedName: string) {\n const aName = getEmojiName(emojiA, searchedName);\n const bName = getEmojiName(emojiB, searchedName);\n\n // Have the emojis that starts with the search appear first\n const aPrefix = aName.startsWith(searchedName);\n const bPrefix = bName.startsWith(searchedName);\n\n if (aPrefix === bPrefix) {\n if (aName in customRules) {\n return customRules[aName](bName) || defaultRule(aName, bName, emojiA, emojiB);\n }\n\n return defaultRule(aName, bName, emojiA, emojiB);\n } else if (aPrefix) {\n return -1;\n }\n\n return 1;\n}\n\n// wrapEmojis takes a text string and returns it with any Unicode emojis wrapped by a span with the emoji class.\nexport function wrapEmojis(text: string): React.ReactNode {\n const nodes = [];\n\n let lastIndex = 0;\n\n // Manually split the string into an array of strings and spans wrapping individual emojis\n for (const match of text.matchAll(emojiRegex())) {\n const emoji = match[0];\n const index = match.index!;\n\n if (match.index !== lastIndex) {\n nodes.push(text.substring(lastIndex, index));\n }\n\n nodes.push(\n \n {emoji}\n ,\n );\n\n // Remember that emojis can be multiple code points long when incrementing the index\n lastIndex = index + emoji.length;\n }\n\n if (lastIndex < text.length) {\n nodes.push(text.substring(lastIndex));\n }\n\n // Only return an array if we're returning multiple nodes\n return nodes.length === 1 ? nodes[0] : nodes;\n}\n\n// Note : This function is not an idea implementation, a more better and efficeint way to do this come when we make changes to emoji json.\nexport function convertEmojiSkinTone(emoji: SystemEmoji, newSkinTone: string): SystemEmoji {\n let newEmojiId = '';\n\n if (!emoji.skins && !emoji.skin_variations) {\n // Don't change the skin tone of an emoji without skin tone variations\n return emoji;\n }\n\n if (emoji.skins && emoji.skins.length > 1) {\n // Don't change the skin tone of emojis affected by multiple skin tones\n return emoji;\n }\n\n const currentSkinTone = getSkin(emoji);\n\n // If its a default (yellow) emoji, get the skin variation from its property\n if (currentSkinTone === 'default') {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const variation = Object.keys(emoji?.skin_variations).find((skinVariation) => skinVariation.includes(newSkinTone));\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n newEmojiId = variation ? emoji.skin_variations[variation].unified : emoji.unified;\n } else if (newSkinTone === 'default') {\n // If default (yellow) skin is selected, remove the skin code from emoji id\n newEmojiId = emoji.unified.replaceAll(/-(1F3FB|1F3FC|1F3FD|1F3FE|1F3FF)/g, '');\n } else {\n // If non default skin is selected, add the new skin selected code to emoji id\n newEmojiId = emoji.unified.replaceAll(/(1F3FB|1F3FC|1F3FD|1F3FE|1F3FF)/g, newSkinTone);\n }\n\n let emojiIndex = EmojiIndicesByUnicode.get(newEmojiId.toLowerCase()) as number;\n let newEmoji = Emojis[emojiIndex];\n\n if (!newEmoji) {\n // The emoji wasn't found, possibly because it needs a variation selector appended (FE0F) appended for some reason.\n // This is needed for certain emojis like point_up which is 261d-fe0f instead of just 261d\n emojiIndex = EmojiIndicesByUnicode.get(newEmojiId.toLowerCase() + '-fe0f') as number;\n newEmoji = Emojis[emojiIndex];\n }\n\n return newEmoji ?? emoji;\n}\n\n// if an emoji\n// - has `skin_variations` then it uses the default skin (yellow)\n// - has `skins` it's first value is considered the skin version (it can contain more values)\n// - any other case it doesn't have variations or is a custom emoji.\nexport function getSkin(emoji: Emoji) {\n if ('skin_variations' in emoji) {\n return 'default';\n }\n if ('skins' in emoji) {\n const skin = emoji?.skins?.[0] ?? '';\n\n if (skin.length !== 0) {\n return skin;\n }\n }\n return null;\n}\n\nexport function emojiMatchesSkin(emoji: Emoji, skin: string) {\n const emojiSkin = getSkin(emoji);\n return !emojiSkin || emojiSkin === skin;\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport {formatWithRenderer} from './markdown';\nimport PlainRenderer from './markdown/plain_renderer';\n\nexport const emoticonPatterns: { [key: string]: RegExp } = {\n slightly_smiling_face: /(^|\\B)(:-?\\))($|\\B)/g, // :)\n wink: /(^|\\B)(;-?\\))($|\\B)/g, // ;)\n open_mouth: /(^|\\B)(:o)($|\\b)/gi, // :o\n scream: /(^|\\B)(:-o)($|\\b)/gi, // :-o\n smirk: /(^|\\B)(:-?])($|\\B)/g, // :]\n smile: /(^|\\B)(:-?d)($|\\b)/gi, // :D\n stuck_out_tongue_closed_eyes: /(^|\\b)(x-d)($|\\b)/gi, // x-d\n stuck_out_tongue: /(^|\\B)(:-?p)($|\\b)/gi, // :p\n rage: /(^|\\B)(:-?[[@])($|\\B)/g, // :@\n slightly_frowning_face: /(^|\\B)(:-?\\()($|\\B)/g, // :(\n cry: /(^|\\B)(:[`'’]-?\\(|:'\\(|:'\\()($|\\B)/g, // :`(\n confused: /(^|\\B)(:-?\\/)($|\\B)/g, // :/\n confounded: /(^|\\B)(:-?s)($|\\b)/gi, // :s\n neutral_face: /(^|\\B)(:-?\\|)($|\\B)/g, // :|\n flushed: /(^|\\B)(:-?\\$)($|\\B)/g, // :$\n mask: /(^|\\B)(:-x)($|\\b)/gi, // :-x\n heart: /(^|\\B)(<3|<3)($|\\b)/g, // <3\n broken_heart: /(^|\\B)(<\\/3|<\\/3)($|\\b)/g, // ,\n): string {\n let output = text;\n\n function replaceEmoticonWithToken(\n fullMatch: string,\n prefix: string,\n matchText: string,\n name: string,\n ): string {\n const index = tokens.size;\n const alias = `$MM_EMOTICON${index}$`;\n\n tokens.set(alias, {\n value: renderEmoji(name, matchText),\n originalText: fullMatch,\n });\n\n return prefix + alias;\n }\n\n // match named emoticons like :goat:\n output = output.replace(\n EMOJI_PATTERN,\n (fullMatch: string, matchText: string, name: string): string =>\n replaceEmoticonWithToken(fullMatch, '', matchText, name),\n );\n\n // match text smilies like :D\n for (const name of Object.keys(emoticonPatterns)) {\n const pattern = emoticonPatterns[name];\n\n // this might look a bit funny, but since the name isn't contained in the actual match\n // like with the named emoticons, we need to add it in manually\n output = output.replace(pattern, (fullMatch, prefix, matchText) => replaceEmoticonWithToken(fullMatch, prefix, matchText, name));\n }\n\n return output;\n}\n\nexport function renderEmoji(name: string, matchText: string): string {\n return `${matchText.toLowerCase()}`;\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport Constants from 'utils/constants';\nimport * as UserAgent from 'utils/user_agent';\n\nexport function cmdOrCtrlPressed(e: React.KeyboardEvent | KeyboardEvent, allowAlt = false) {\n const isMac = UserAgent.isMac();\n\n if (allowAlt) {\n return (isMac && e.metaKey) || (!isMac && e.ctrlKey);\n }\n return (isMac && e.metaKey) || (!isMac && e.ctrlKey && !e.altKey);\n}\n\nexport function isKeyPressed(event: React.KeyboardEvent | KeyboardEvent, key: [string, number]) {\n // There are two types of keyboards\n // 1. English with different layouts(Ex: Dvorak)\n // 2. Different language keyboards(Ex: Russian)\n\n if (event.keyCode === Constants.KeyCodes.COMPOSING[1]) {\n return false;\n }\n\n // checks for event.key for older browsers and also for the case of different English layout keyboards.\n if (typeof event.key !== 'undefined' && event.key !== 'Unidentified' && event.key !== 'Dead') {\n const isPressedByCode = event.key === key[0] || event.key === key[0].toUpperCase();\n if (isPressedByCode) {\n return true;\n }\n }\n\n // used for different language keyboards to detect the position of keys\n return event.keyCode === key[1];\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport marked from 'marked';\nimport type {MarkedOptions} from 'marked';\n\nimport EmojiMap from 'utils/emoji_map';\nimport * as PostUtils from 'utils/post_utils';\nimport * as TextFormatting from 'utils/text_formatting';\nimport {getScheme, isUrlSafe, shouldOpenInNewTab} from 'utils/url';\n\nimport {parseImageDimensions} from './helpers';\n\nexport default class Renderer extends marked.Renderer {\n private formattingOptions: TextFormatting.TextFormattingOptions;\n private emojiMap: EmojiMap;\n public constructor(\n options: MarkedOptions,\n formattingOptions: TextFormatting.TextFormattingOptions,\n emojiMap = new EmojiMap(new Map()),\n ) {\n super(options);\n\n this.heading = this.heading.bind(this);\n this.paragraph = this.paragraph.bind(this);\n this.text = this.text.bind(this);\n this.emojiMap = emojiMap;\n\n this.formattingOptions = formattingOptions;\n }\n\n public code(code: string, language: string) {\n let usedLanguage = language || '';\n usedLanguage = usedLanguage.toLowerCase();\n\n if (usedLanguage === 'tex' || usedLanguage === 'latex') {\n return `
`;\n }\n\n let searchedContent = '';\n\n if (this.formattingOptions.searchPatterns) {\n try {\n const tokens = new TextFormatting.Tokens();\n\n let searched = TextFormatting.sanitizeHtml(code);\n searched = TextFormatting.highlightSearchTerms(\n searched,\n tokens,\n this.formattingOptions.searchPatterns,\n );\n\n if (tokens.size > 0) {\n searched = TextFormatting.replaceTokens(searched, tokens);\n\n searchedContent = (\n '
' +\n searched +\n '
'\n );\n }\n } catch (error) {\n if (!TextFormatting.isFormatTokenLimitError(error)) {\n throw error;\n }\n }\n }\n\n return '
';\n }\n\n public codespan(text: string) {\n let output = text;\n\n if (this.formattingOptions.searchPatterns) {\n try {\n const tokens = new TextFormatting.Tokens();\n output = TextFormatting.highlightSearchTerms(\n output,\n tokens,\n this.formattingOptions.searchPatterns,\n );\n output = TextFormatting.replaceTokens(output, tokens);\n } catch (error) {\n if (!TextFormatting.isFormatTokenLimitError(error)) {\n throw error;\n }\n output = text;\n }\n }\n\n return (\n '' +\n '' +\n output +\n '' +\n ''\n );\n }\n\n public br() {\n if (this.formattingOptions.singleline) {\n return ' ';\n }\n\n return super.br();\n }\n\n public image(href: string, title: string, text: string) {\n const dimensions = parseImageDimensions(href);\n\n let src = dimensions.href;\n src = PostUtils.getImageSrc(src, this.formattingOptions.proxyImages);\n\n let out = `\"${text}\"`;\n' : '>';\n return out;\n }\n\n public heading(text: string, level: number) {\n return `${text}`;\n }\n\n public link(href: string, title: string, text: string, isUrl = false) {\n let outHref = href;\n\n if (!href.startsWith('/')) {\n const scheme = getScheme(href);\n if (!scheme) {\n outHref = `http://${outHref}`;\n } else if (isUrl && this.formattingOptions.autolinkedUrlSchemes) {\n const isValidUrl =\n this.formattingOptions.autolinkedUrlSchemes.indexOf(\n scheme.toLowerCase(),\n ) !== -1;\n\n if (!isValidUrl) {\n return text;\n }\n }\n }\n\n if (!isUrlSafe(unescapeHtmlEntities(href))) {\n return text;\n }\n\n let output = ']*>/g, '') + '';\n\n return output;\n }\n\n public paragraph(text: string) {\n if (this.formattingOptions.singleline) {\n let result;\n if (text.includes('class=\"markdown-inline-img\"')) {\n /*\n ** use a div tag instead of a p tag to allow other divs to be nested,\n ** which avoids errors of incorrect DOM nesting (
inside

)\n */\n result = `${text}`;\n } else {\n result = `

${text}

`;\n }\n return result;\n }\n\n return super.paragraph(text);\n }\n\n public table(header: string, body: string) {\n return `
${header}${body}
`;\n }\n\n public tablerow(content: string) {\n return `${content}`;\n }\n\n public tablecell(\n content: string,\n flags: {\n header: boolean;\n align: 'center' | 'left' | 'right' | null;\n },\n ) {\n return marked.Renderer.prototype.tablecell(content, flags).trim();\n }\n\n public list(content: string, ordered: boolean, start: number) {\n const type = ordered ? 'ol' : 'ul';\n\n let output = `<${type} className=\"markdown__list\"`;\n if (ordered && start !== undefined) {\n // The CSS that we use for lists hides the actual counter and uses ::before to simulate one so that we can\n // style it properly. We need to use a CSS counter to tell the ::before elements which numbers to show.\n output += ` style=\"counter-reset: list ${start - 1}\"`;\n }\n output += `>\\n${content}`;\n\n return output;\n }\n\n public listitem(text: string, bullet = '') { // eslint-disable-line @typescript-eslint/no-unused-vars\n const taskListReg = /^\\[([ |xX])] /;\n const isTaskList = taskListReg.exec(text);\n\n if (isTaskList) {\n return `
  • ${' '}${text.replace(taskListReg, '')}
  • `;\n }\n\n // Added a span because if not whitespace nodes only\n // works in Firefox but not in Webkit\n return `
  • ${text}
  • `;\n }\n\n public text(txt: string) {\n return TextFormatting.doFormatText(\n txt,\n this.formattingOptions,\n this.emojiMap,\n );\n }\n}\n\n// Marked helper functions that should probably just be exported\n\nfunction unescapeHtmlEntities(html: string) {\n return html.replace(/&([#\\w]+);/g, (_, m) => {\n const n = m.toLowerCase();\n if (n === 'colon') {\n return ':';\n } else if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x' ? String.fromCharCode(parseInt(n.substring(2), 16)) : String.fromCharCode(Number(n.substring(1)));\n }\n return '';\n });\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\n// parseImageDimensions takes an href returned by marked and separates out any image dimensions if those are specified.\n// If the input contains dimensions, the returned href will have them removed and they will be returned as strings,\n// otherwise, the returned dimensions will both be the empty string. If only one dimension is provided, the other will\n// be the string \"auto\".\nexport function parseImageDimensions(input: string): {href: string; height: string; width: string} {\n const match = (/ =(\\d*)(?:x(\\d+))?$/).exec(input);\n if (!match) {\n return {\n href: input,\n height: '',\n width: '',\n };\n }\n\n let width = match[1];\n let height = match[2];\n if (!width && !height) {\n return {\n href: input,\n height: '',\n width: '',\n };\n }\n\n if (width && !height) {\n height = 'auto';\n } else if (height && !width) {\n width = 'auto';\n }\n\n return {\n href: input.substring(0, input.length - match[0].length),\n height,\n width,\n };\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport marked from 'marked';\n\nimport {getConfig} from 'mattermost-redux/selectors/entities/general';\n\nimport store from 'stores/redux_store';\n\nimport type EmojiMap from 'utils/emoji_map';\nimport RemoveMarkdown from 'utils/markdown/remove_markdown';\nimport {convertEntityToCharacter} from 'utils/text_formatting';\n\nimport Renderer from './renderer';\n\nconst removeMarkdown = new RemoveMarkdown();\n\nexport function format(text: string, options = {}, emojiMap?: EmojiMap) {\n return formatWithRenderer(text, new Renderer({}, options, emojiMap));\n}\n\nexport function formatWithRenderer(text: string, renderer: marked.Renderer) {\n const config = getConfig(store.getState());\n\n const markdownOptions = {\n renderer,\n sanitize: true,\n gfm: true,\n tables: true,\n mangle: false,\n inlinelatex: config.EnableLatex === 'true' && config.EnableInlineLatex === 'true',\n };\n\n return marked(text, markdownOptions).trim();\n}\n\nexport function stripMarkdown(text: string) {\n if (typeof text === 'string' && text.length > 0) {\n return convertEntityToCharacter(\n formatWithRenderer(text, removeMarkdown),\n ).trim();\n }\n\n return text;\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport {EMOJI_PATTERN} from 'utils/emoticons';\n\nimport PlainRenderer from './plain_renderer';\n\n/** A Markdown renderer that converts a post into plain text that we can search for mentions */\nexport default class MentionableRenderer extends PlainRenderer {\n public text(text: string) {\n // Remove all emojis\n return text.replace(EMOJI_PATTERN, '');\n }\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport marked from 'marked';\n\n/** A Markdown renderer that converts a post into plain text */\nexport default class PlainRenderer extends marked.Renderer {\n public code() {\n // Code blocks can't contain mentions\n return '\\n';\n }\n\n public blockquote(text: string) {\n return text + '\\n';\n }\n\n public heading(text: string) {\n return text + '\\n';\n }\n\n public hr() {\n return '\\n';\n }\n\n public list(body: string) {\n return body + '\\n';\n }\n\n public listitem(text: string) {\n return text + '\\n';\n }\n\n public paragraph(text: string) {\n return text + '\\n';\n }\n\n public table(header: string, body: string) {\n return header + '\\n' + body;\n }\n\n public tablerow(content: string) {\n return content;\n }\n\n public tablecell(content: string) {\n return content + '\\n';\n }\n\n public strong(text: string) {\n return ' ' + text + ' ';\n }\n\n public em(text: string) {\n return ' ' + text + ' ';\n }\n\n public codespan() {\n // Code spans can't contain mentions\n return ' ';\n }\n\n public br() {\n return '\\n';\n }\n\n public del(text: string) {\n return ' ' + text + ' ';\n }\n\n public link(href: string, title: string, text: string) {\n return ' ' + text + ' ';\n }\n\n public image(href: string, title: string, text: string) {\n return ' ' + text + ' ';\n }\n\n public text(text: string) {\n return text;\n }\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport marked from 'marked';\n\nimport * as TextFormatting from 'utils/text_formatting';\n\nexport default class RemoveMarkdown extends marked.Renderer {\n public code(text: string) {\n // We need to escape the input here because our version of marked does this in the renderer. Every other node\n // type has its input escaped before it reaches the renderer.\n return TextFormatting.escapeHtml(text).replace(/\\n/g, ' ');\n }\n\n public blockquote(text: string) {\n return text.replace(/\\n/g, ' ');\n }\n\n public heading(text: string) {\n return text + ' ';\n }\n\n public hr() {\n return '';\n }\n\n public list(body: string) {\n return body;\n }\n\n public listitem(text: string) {\n return text + ' ';\n }\n\n public paragraph(text: string) {\n return text + ' ';\n }\n\n public table() {\n return '';\n }\n\n public tablerow() {\n return '';\n }\n\n public tablecell() {\n return '';\n }\n\n public strong(text: string) {\n return text;\n }\n\n public em(text: string) {\n return text;\n }\n\n public codespan(text: string) {\n return text.replace(/\\n/g, ' ');\n }\n\n public br() {\n return ' ';\n }\n\n public del(text: string) {\n return text;\n }\n\n public link(href: string, title: string, text: string) {\n return text;\n }\n\n public image(href: string, title: string, text: string) {\n return text;\n }\n\n public text(text: string) {\n return text.replace('\\n', ' ');\n }\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport bing from 'sounds/bing.mp3';\nimport calls_calm from 'sounds/calls_calm.mp3';\nimport calls_cheerful from 'sounds/calls_cheerful.mp3';\nimport calls_dynamic from 'sounds/calls_dynamic.mp3';\nimport calls_urgent from 'sounds/calls_urgent.mp3';\nimport crackle from 'sounds/crackle.mp3';\nimport down from 'sounds/down.mp3';\nimport hello from 'sounds/hello.mp3';\nimport ripple from 'sounds/ripple.mp3';\nimport upstairs from 'sounds/upstairs.mp3';\nimport * as UserAgent from 'utils/user_agent';\n\nexport const notificationSounds = new Map([\n ['Bing', bing],\n ['Crackle', crackle],\n ['Down', down],\n ['Hello', hello],\n ['Ripple', ripple],\n ['Upstairs', upstairs],\n]);\n\nexport const callsNotificationSounds = new Map([\n ['Dynamic', calls_dynamic],\n ['Calm', calls_calm],\n ['Urgent', calls_urgent],\n ['Cheerful', calls_cheerful],\n]);\n\nlet canDing = true;\nexport function ding(name: string) {\n if (hasSoundOptions() && canDing) {\n tryNotificationSound(name);\n canDing = false;\n setTimeout(() => {\n canDing = true;\n }, 3000);\n }\n}\n\nexport function tryNotificationSound(name: string) {\n const audio = new Audio(notificationSounds.get(name) ?? notificationSounds.get('Bing'));\n audio.play();\n}\n\nlet currentRing: HTMLAudioElement | null = null;\nexport function ring(name: string) {\n if (!hasSoundOptions()) {\n return;\n }\n stopRing();\n\n currentRing = loopNotificationRing(name);\n currentRing.addEventListener('pause', () => {\n stopRing();\n });\n}\n\nexport function stopRing() {\n if (currentRing) {\n currentRing.pause();\n currentRing.src = '';\n currentRing.remove();\n currentRing = null;\n }\n}\n\nlet currentTryRing: HTMLAudioElement | null = null;\nlet currentTimer: NodeJS.Timeout;\nexport function tryNotificationRing(name: string) {\n if (!hasSoundOptions()) {\n return;\n }\n stopTryNotificationRing();\n clearTimeout(currentTimer);\n\n currentTryRing = loopNotificationRing(name);\n currentTryRing.addEventListener('pause', () => {\n stopTryNotificationRing();\n });\n\n currentTimer = setTimeout(() => {\n stopTryNotificationRing();\n }, 5000);\n}\n\nexport function stopTryNotificationRing() {\n if (currentTryRing) {\n currentTryRing.pause();\n currentTryRing.src = '';\n currentTryRing.remove();\n currentTryRing = null;\n }\n}\n\nexport function loopNotificationRing(name: string) {\n const audio = new Audio(callsNotificationSounds.get(name) ?? callsNotificationSounds.get('Calm'));\n audio.loop = true;\n audio.play();\n return audio;\n}\n\nexport function hasSoundOptions() {\n return (!UserAgent.isEdge());\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport icon50 from 'images/icon50x50.png';\nimport iconWS from 'images/icon_WS.png';\nimport Constants from 'utils/constants';\nimport * as UserAgent from 'utils/user_agent';\n\nlet requestedNotificationPermission = false;\n\n// showNotification displays a platform notification with the configured parameters.\n//\n// If successful in showing a notification, it resolves with a callback to manually close the\n// notification. If no error occurred but the user did not grant permission to show notifications, it\n// resolves with a no-op callback. Notifications that do not require interaction will be closed automatically after\n// the Constants.DEFAULT_NOTIFICATION_DURATION. Not all platforms support all features, and may\n// choose different semantics for the notifications.\n\nexport interface ShowNotificationParams {\n title: string;\n body: string;\n requireInteraction: boolean;\n silent: boolean;\n onClick?: (this: Notification, e: Event) => any | null;\n}\n\nexport async function showNotification(\n {\n title,\n body,\n requireInteraction,\n silent,\n onClick,\n }: ShowNotificationParams = {\n title: '',\n body: '',\n requireInteraction: false,\n silent: false,\n },\n) {\n let icon = icon50;\n if (UserAgent.isEdge()) {\n icon = iconWS;\n }\n\n if (!('Notification' in window)) {\n throw new Error('Notification not supported');\n }\n\n if (typeof Notification.requestPermission !== 'function') {\n throw new Error('Notification.requestPermission not supported');\n }\n\n if (Notification.permission !== 'granted' && requestedNotificationPermission) {\n // User didn't allow notifications\n return () => {};\n }\n\n requestedNotificationPermission = true;\n\n let permission = await Notification.requestPermission();\n if (typeof permission === 'undefined') {\n // Handle browsers that don't support the promise-based syntax.\n permission = await new Promise((resolve) => {\n Notification.requestPermission(resolve);\n });\n }\n\n if (permission !== 'granted') {\n // User has denied notification for the site\n return () => {};\n }\n\n const notification = new Notification(title, {\n body,\n tag: body,\n icon,\n requireInteraction,\n silent,\n });\n\n if (onClick) {\n notification.onclick = onClick;\n }\n\n notification.onerror = () => {\n throw new Error('Notification failed to show.');\n };\n\n // Mac desktop app notification dismissal is handled by the OS\n if (!requireInteraction && !UserAgent.isMacApp()) {\n setTimeout(() => {\n notification.close();\n }, Constants.DEFAULT_NOTIFICATION_DURATION);\n }\n\n return () => {\n notification.close();\n };\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport {useMemo} from 'react';\nimport {useIntl} from 'react-intl';\nimport type {IntlShape} from 'react-intl';\nimport {useSelector} from 'react-redux';\n\nimport type {Channel} from '@mattermost/types/channels';\nimport type {ClientConfig, ClientLicense} from '@mattermost/types/config';\nimport type {ServerError} from '@mattermost/types/errors';\nimport type {Group} from '@mattermost/types/groups';\nimport type {Post, PostPriorityMetadata} from '@mattermost/types/posts';\nimport {PostPriority} from '@mattermost/types/posts';\nimport type {Reaction} from '@mattermost/types/reactions';\nimport type {UserProfile} from '@mattermost/types/users';\n\nimport {Client4} from 'mattermost-redux/client';\nimport {Permissions, Posts} from 'mattermost-redux/constants';\nimport {createSelector} from 'mattermost-redux/selectors/create_selector';\nimport {getChannel} from 'mattermost-redux/selectors/entities/channels';\nimport {getConfig} from 'mattermost-redux/selectors/entities/general';\nimport {getAllGroupsForReferenceByName} from 'mattermost-redux/selectors/entities/groups';\nimport {makeGetReactionsForPost} from 'mattermost-redux/selectors/entities/posts';\nimport {get, getTeammateNameDisplaySetting, isCollapsedThreadsEnabled} from 'mattermost-redux/selectors/entities/preferences';\nimport {haveIChannelPermission} from 'mattermost-redux/selectors/entities/roles';\nimport {getCurrentTeamId, getTeam} from 'mattermost-redux/selectors/entities/teams';\nimport {makeGetDisplayName, getCurrentUserId, getUser, getUsersByUsername} from 'mattermost-redux/selectors/entities/users';\nimport type {UserMentionKey} from 'mattermost-redux/selectors/entities/users';\nimport {getUserIdFromChannelName} from 'mattermost-redux/utils/channel_utils';\nimport {memoizeResult} from 'mattermost-redux/utils/helpers';\nimport * as PostListUtils from 'mattermost-redux/utils/post_list';\nimport {canEditPost as canEditPostRedux} from 'mattermost-redux/utils/post_utils';\nimport {displayUsername} from 'mattermost-redux/utils/user_utils';\n\nimport {getEmojiMap} from 'selectors/emojis';\nimport {getIsMobileView} from 'selectors/views/browser';\n\nimport Constants, {PostListRowListIds, Preferences} from 'utils/constants';\nimport * as Keyboard from 'utils/keyboard';\nimport {formatWithRenderer} from 'utils/markdown';\nimport MentionableRenderer from 'utils/markdown/mentionable_renderer';\nimport {allAtMentions} from 'utils/text_formatting';\nimport {isMobile} from 'utils/user_agent';\n\nimport type {GlobalState} from 'types/store';\n\nimport type EmojiMap from './emoji_map';\nimport * as Emoticons from './emoticons';\n\nconst CHANNEL_SWITCH_IGNORE_ENTER_THRESHOLD_MS = 500;\n\nexport function isSystemMessage(post: Post): boolean {\n return Boolean(post.type && (post.type.lastIndexOf(Constants.SYSTEM_MESSAGE_PREFIX) === 0));\n}\n\nexport function fromAutoResponder(post: Post): boolean {\n return Boolean(post.type && (post.type === Constants.AUTO_RESPONDER));\n}\n\nexport function isFromWebhook(post: Post): boolean {\n return post.props && post.props.from_webhook === 'true';\n}\n\nexport function isFromBot(post: Post): boolean {\n return post.props && post.props.from_bot === 'true';\n}\n\nexport function isPostOwner(state: GlobalState, post: Post): boolean {\n return getCurrentUserId(state) === post.user_id;\n}\n\nexport function isComment(post: Post): boolean {\n if ('root_id' in post) {\n return post.root_id !== '' && post.root_id != null;\n }\n return false;\n}\n\nexport function isEdited(post: Post): boolean {\n return post.edit_at > 0;\n}\n\nexport function getImageSrc(src: string, hasImageProxy = false): string {\n if (!src) {\n return src;\n }\n\n const imageAPI = Client4.getBaseRoute() + '/image?url=';\n\n if (hasImageProxy && !src.startsWith(imageAPI)) {\n return imageAPI + encodeURIComponent(src);\n }\n\n return src;\n}\n\nexport function canDeletePost(state: GlobalState, post: Post, channel: Channel): boolean {\n if (post.type === Constants.PostTypes.FAKE_PARENT_DELETED) {\n return false;\n }\n\n if (channel && channel.delete_at !== 0) {\n return false;\n }\n\n if (isPostOwner(state, post)) {\n return haveIChannelPermission(state, channel && channel.team_id, post.channel_id, Permissions.DELETE_POST);\n }\n return haveIChannelPermission(state, channel && channel.team_id, post.channel_id, Permissions.DELETE_OTHERS_POSTS);\n}\n\nexport function canEditPost(\n state: GlobalState,\n post: Post,\n license?: ClientLicense,\n config?: Partial,\n channel?: Channel,\n userId?: string,\n): boolean {\n return canEditPostRedux(state, config, license, channel?.team_id ?? '', channel?.id ?? '', userId ?? '', post);\n}\n\nexport function shouldShowDotMenu(state: GlobalState, post: Post, channel: Channel): boolean {\n if (post && post.state === Posts.POST_DELETED) {\n return false;\n }\n\n if (getIsMobileView(state)) {\n return true;\n }\n\n if (!isSystemMessage(post)) {\n return true;\n }\n\n if (canDeletePost(state, post, channel)) {\n return true;\n }\n\n if (canEditPost(state, post)) {\n return true;\n }\n\n return false;\n}\n\nexport function shouldShowActionsMenu(state: GlobalState, post: Post): boolean {\n const config = getConfig(state);\n const pluginsEnabled = config.PluginsEnabled === 'true';\n if (!pluginsEnabled) {\n return false;\n }\n\n if (isSystemMessage(post)) {\n return false;\n }\n\n return true;\n}\n\nexport function containsAtChannel(text: string, options?: {checkAllMentions: boolean}): boolean {\n // Don't warn for slash commands\n if (!text || text.startsWith('/')) {\n return false;\n }\n\n let mentionsRegex;\n if (options?.checkAllMentions) {\n mentionsRegex = new RegExp(Constants.SPECIAL_MENTIONS_REGEX);\n } else {\n mentionsRegex = new RegExp(Constants.ALL_MEMBERS_MENTIONS_REGEX);\n }\n\n const mentionableText = formatWithRenderer(text, new MentionableRenderer());\n return mentionsRegex.test(mentionableText);\n}\n\nexport function specialMentionsInText(text: string): {[key: string]: boolean} {\n const mentions = {\n all: false,\n channel: false,\n here: false,\n };\n\n // Don't warn for slash commands\n if (!text || text.startsWith('/')) {\n return mentions;\n }\n\n const mentionableText = formatWithRenderer(text, new MentionableRenderer());\n\n mentions.all = new RegExp(Constants.ALL_MENTION_REGEX).test(mentionableText);\n mentions.channel = new RegExp(Constants.CHANNEL_MENTION_REGEX).test(mentionableText);\n mentions.here = new RegExp(Constants.HERE_MENTION_REGEX).test(mentionableText);\n\n return mentions;\n}\n\nexport const groupsMentionedInText = (text: string, groups: Map | null): Group[] => {\n // Don't warn for slash commands\n if (!text || text.startsWith('/')) {\n return [];\n }\n\n if (!groups) {\n return [];\n }\n\n const mentionableText = formatWithRenderer(text, new MentionableRenderer());\n const mentions = allAtMentions(mentionableText);\n\n const ret: Group[] = [];\n for (const mention of mentions) {\n const group = groups.get(mention);\n\n if (group) {\n ret.push(group);\n }\n }\n return ret;\n};\n\nexport function shouldFocusMainTextbox(e: React.KeyboardEvent | KeyboardEvent, activeElement: Element | null): boolean {\n if (!e) {\n return false;\n }\n\n // Do not focus if we're currently focused on a textarea or input\n const keepFocusTags = ['TEXTAREA', 'INPUT'];\n if (!activeElement || keepFocusTags.includes(activeElement.tagName)) {\n return false;\n }\n\n // Focus if it is an attempted paste\n if (Keyboard.cmdOrCtrlPressed(e) && Keyboard.isKeyPressed(e, Constants.KeyCodes.V)) {\n return true;\n }\n\n // Do not focus if a modifier key is pressed\n if (e.ctrlKey || e.metaKey || e.altKey) {\n return false;\n }\n\n // Do not focus if the key is undefined or null\n if (e.key == null) {\n return false;\n }\n\n // Do not focus for non-character or non-number keys\n if (e.key.length !== 1 || !e.key.match(/./)) {\n return false;\n }\n\n // Do not focus when pressing space on link elements\n const spaceKeepFocusTags = ['BUTTON', 'A'];\n if (Keyboard.isKeyPressed(e, Constants.KeyCodes.SPACE) && spaceKeepFocusTags.includes(activeElement.tagName)) {\n return false;\n }\n\n return true;\n}\n\nfunction canAutomaticallyCloseBackticks(message: string) {\n const splitMessage = message.split('\\n').filter((line) => line.trim() !== '');\n const lastPart = splitMessage[splitMessage.length - 1];\n\n if (splitMessage.length > 1 && !lastPart.includes('```')) {\n return {\n allowSending: true,\n message: message.endsWith('\\n') ? message.concat('```') : message.concat('\\n```'),\n withClosedCodeBlock: true,\n };\n }\n\n return {allowSending: true};\n}\n\nexport function isWithinCodeBlock(message: string, caretPosition: number): boolean {\n const match = message.substring(0, caretPosition).match(Constants.REGEX_CODE_BLOCK_OPTIONAL_LANGUAGE_TAG);\n\n return Boolean(match && match.length % 2 !== 0);\n}\n\nfunction sendOnCtrlEnter(message: string, ctrlOrMetaKeyPressed: boolean, isSendMessageOnCtrlEnter: boolean, caretPosition: number) {\n const inCodeBlock = isWithinCodeBlock(message, caretPosition);\n if (isSendMessageOnCtrlEnter && ctrlOrMetaKeyPressed && !inCodeBlock) {\n return {allowSending: true};\n } else if (!isSendMessageOnCtrlEnter && !inCodeBlock) {\n return {allowSending: true};\n } else if (ctrlOrMetaKeyPressed && inCodeBlock) {\n return canAutomaticallyCloseBackticks(message);\n }\n\n return {allowSending: false};\n}\n\nexport function postMessageOnKeyPress(\n event: React.KeyboardEvent,\n message: string,\n sendMessageOnCtrlEnter: boolean,\n sendCodeBlockOnCtrlEnter: boolean,\n now = 0,\n lastChannelSwitchAt = 0,\n caretPosition = 0,\n): {allowSending: boolean; ignoreKeyPress?: boolean} {\n if (!event) {\n return {allowSending: false};\n }\n\n // Typing enter on mobile never sends.\n if (isMobile()) {\n return {allowSending: false};\n }\n\n // Only ENTER sends, unless shift or alt key pressed.\n if (!Keyboard.isKeyPressed(event, Constants.KeyCodes.ENTER) || event.shiftKey || event.altKey) {\n return {allowSending: false};\n }\n\n // Don't send if we just switched channels within a threshold.\n if (lastChannelSwitchAt > 0 && now > 0 && now - lastChannelSwitchAt <= CHANNEL_SWITCH_IGNORE_ENTER_THRESHOLD_MS) {\n return {allowSending: false, ignoreKeyPress: true};\n }\n\n if (\n message.trim() === '' ||\n !(sendMessageOnCtrlEnter || sendCodeBlockOnCtrlEnter)\n ) {\n return {allowSending: true};\n }\n\n const ctrlOrMetaKeyPressed = event.ctrlKey || event.metaKey;\n\n if (sendMessageOnCtrlEnter) {\n return sendOnCtrlEnter(message, ctrlOrMetaKeyPressed, true, caretPosition);\n } else if (sendCodeBlockOnCtrlEnter) {\n return sendOnCtrlEnter(message, ctrlOrMetaKeyPressed, false, caretPosition);\n }\n\n return {allowSending: false};\n}\n\nexport function isErrorInvalidSlashCommand(error: ServerError | null): boolean {\n if (error && error.server_error_id) {\n return error.server_error_id === 'api.command.execute_command.not_found.app_error';\n }\n\n return false;\n}\n\nexport function isIdNotPost(postId: string): boolean {\n return (\n PostListUtils.isStartOfNewMessages(postId) ||\n PostListUtils.isDateLine(postId) ||\n postId in PostListRowListIds\n );\n}\n\n// getOldestPostId returns the oldest valid post ID in the given list of post IDs. This function is copied from\n// mattermost-redux, except it also includes additional special IDs that are only used in the web app.\nexport function getOldestPostId(postIds: string[]): string {\n for (let i = postIds.length - 1; i >= 0; i--) {\n const item = postIds[i];\n\n if (isIdNotPost(item)) {\n // This is not a post at all\n continue;\n }\n\n if (PostListUtils.isCombinedUserActivityPost(item)) {\n // This is a combined post, so find the first post ID from it\n const combinedIds = PostListUtils.getPostIdsForCombinedUserActivityPost(item);\n\n return combinedIds[combinedIds.length - 1];\n }\n\n // This is a post ID\n return item;\n }\n\n return '';\n}\n\nexport function getPreviousPostId(postIds: string[], startIndex: number): string {\n for (let i = startIndex + 1; i < postIds.length; i++) {\n const itemId = postIds[i];\n\n if (isIdNotPost(itemId)) {\n // This is not a post at all\n continue;\n }\n\n if (PostListUtils.isCombinedUserActivityPost(itemId)) {\n // This is a combined post, so find the last post ID from it\n const combinedIds = PostListUtils.getPostIdsForCombinedUserActivityPost(itemId);\n\n return combinedIds[0];\n }\n\n // This is a post ID\n return itemId;\n }\n\n return '';\n}\n\n// getLatestPostId returns the most recent valid post ID in the given list of post IDs. This function is copied from\n// mattermost-redux, except it also includes additional special IDs that are only used in the web app.\nexport function getLatestPostId(postIds: string[]): string {\n for (let i = 0; i < postIds.length; i++) {\n const item = postIds[i];\n\n if (isIdNotPost(item)) {\n // This is not a post at all\n continue;\n }\n\n if (PostListUtils.isCombinedUserActivityPost(item)) {\n // This is a combined post, so find the lastest post ID from it\n const combinedIds = PostListUtils.getPostIdsForCombinedUserActivityPost(item);\n\n return combinedIds[0];\n }\n\n // This is a post ID\n return item;\n }\n\n return '';\n}\n\nexport function makeGetMentionsFromMessage(): (state: GlobalState, post: Post) => Record {\n return createSelector(\n 'getMentionsFromMessage',\n (state: GlobalState, post: Post) => post,\n (state: GlobalState) => getUsersByUsername(state),\n (post, users) => {\n const mentions: Record = {};\n const mentionsArray = post.message.match(Constants.MENTIONS_REGEX) || [];\n for (let i = 0; i < mentionsArray.length; i++) {\n const mention = mentionsArray[i];\n const user = getMentionDetails(users, mention.substring(1)) as UserProfile | '';\n\n if (user) {\n mentions[mention] = user;\n }\n }\n\n return mentions;\n },\n );\n}\n\nexport function usePostAriaLabel(post: Post | undefined) {\n const intl = useIntl();\n\n const getDisplayName = useMemo(makeGetDisplayName, []);\n const getReactionsForPost = useMemo(makeGetReactionsForPost, []);\n const getMentionsFromMessage = useMemo(makeGetMentionsFromMessage, []);\n\n const createAriaLabelMemoized = memoizeResult(createAriaLabelForPost);\n\n return useSelector((state: GlobalState) => {\n if (!post) {\n return '';\n }\n\n const authorDisplayName = getDisplayName(state, post.user_id);\n const reactions = getReactionsForPost(state, post?.id);\n const isFlagged = get(state, Preferences.CATEGORY_FLAGGED_POST, post.id, null) != null;\n const emojiMap = getEmojiMap(state);\n const mentions = getMentionsFromMessage(state, post);\n const teammateNameDisplaySetting = getTeammateNameDisplaySetting(state);\n\n return createAriaLabelMemoized(\n post,\n authorDisplayName,\n isFlagged,\n reactions,\n intl,\n emojiMap,\n mentions,\n teammateNameDisplaySetting,\n );\n });\n}\n\nexport function createAriaLabelForPost(post: Post, author: string, isFlagged: boolean, reactions: Record | undefined, intl: IntlShape, emojiMap: EmojiMap, mentions: Record, teammateNameDisplaySetting: string): string {\n const {formatMessage, formatTime, formatDate} = intl;\n\n let message = post.state === Posts.POST_DELETED ? formatMessage({\n id: 'post_body.deleted',\n defaultMessage: '(message deleted)',\n }) : post.message || '';\n let match;\n\n // Match all the shorthand forms of emojis first\n for (const name of Object.keys(Emoticons.emoticonPatterns)) {\n const pattern = Emoticons.emoticonPatterns[name];\n message = message.replace(pattern, `:${name}:`);\n }\n\n while ((match = Emoticons.EMOJI_PATTERN.exec(message)) !== null) {\n if (emojiMap.has(match[2])) {\n message = message.replace(match[0], `${match[2].replace(/_/g, ' ')} emoji`);\n }\n }\n\n // Replace mentions with preferred username\n for (const mention of Object.keys(mentions)) {\n const user = mentions[mention];\n if (user) {\n message = message.replace(mention, `@${displayUsername(user, teammateNameDisplaySetting)}`);\n }\n }\n\n let ariaLabel;\n if (post.root_id) {\n ariaLabel = formatMessage({\n id: 'post.ariaLabel.replyMessage',\n defaultMessage: 'At {time} {date}, {authorName} replied, {message}',\n },\n {\n authorName: author,\n time: formatTime(post.create_at),\n date: formatDate(post.create_at, {weekday: 'long', month: 'long', day: 'numeric'}),\n message,\n });\n } else {\n ariaLabel = formatMessage({\n id: 'post.ariaLabel.message',\n defaultMessage: 'At {time} {date}, {authorName} wrote, {message}',\n },\n {\n authorName: author,\n time: formatTime(post.create_at),\n date: formatDate(post.create_at, {weekday: 'long', month: 'long', day: 'numeric'}),\n message,\n });\n }\n\n let attachmentCount = 0;\n if (post.props && post.props.attachments) {\n attachmentCount += post.props.attachments.length;\n }\n if (post.file_ids) {\n attachmentCount += post.file_ids.length;\n }\n\n if (attachmentCount) {\n if (attachmentCount > 1) {\n ariaLabel += formatMessage({\n id: 'post.ariaLabel.attachmentMultiple',\n defaultMessage: ', {attachmentCount} attachments',\n },\n {\n attachmentCount,\n });\n } else {\n ariaLabel += formatMessage({\n id: 'post.ariaLabel.attachment',\n defaultMessage: ', 1 attachment',\n });\n }\n }\n\n if (reactions) {\n const emojiNames = [];\n for (const reaction of Object.values(reactions)) {\n const emojiName = reaction.emoji_name;\n\n if (emojiNames.indexOf(emojiName) < 0) {\n emojiNames.push(emojiName);\n }\n }\n\n if (emojiNames.length > 1) {\n ariaLabel += formatMessage({\n id: 'post.ariaLabel.reactionMultiple',\n defaultMessage: ', {reactionCount} reactions',\n },\n {\n reactionCount: emojiNames.length,\n });\n } else if (emojiNames.length === 1) {\n ariaLabel += formatMessage({\n id: 'post.ariaLabel.reaction',\n defaultMessage: ', 1 reaction',\n });\n }\n }\n\n if (isFlagged) {\n if (post.is_pinned) {\n ariaLabel += formatMessage({\n id: 'post.ariaLabel.messageIsFlaggedAndPinned',\n defaultMessage: ', message is saved and pinned',\n });\n } else {\n ariaLabel += formatMessage({\n id: 'post.ariaLabel.messageIsFlagged',\n defaultMessage: ', message is saved',\n });\n }\n } else if (!isFlagged && post.is_pinned) {\n ariaLabel += formatMessage({\n id: 'post.ariaLabel.messageIsPinned',\n defaultMessage: ', message is pinned',\n });\n }\n\n return ariaLabel;\n}\n\n// Splits text message based on the current caret position\nexport function splitMessageBasedOnCaretPosition(caretPosition: number, message: string): {firstPiece: string; lastPiece: string} {\n const firstPiece = message.substring(0, caretPosition);\n const lastPiece = message.substring(caretPosition, message.length);\n return {firstPiece, lastPiece};\n}\n\nexport function splitMessageBasedOnTextSelection(selectionStart: number, selectionEnd: number, message: string): {firstPiece: string; lastPiece: string} {\n const firstPiece = message.substring(0, selectionStart);\n const lastPiece = message.substring(selectionEnd, message.length);\n return {firstPiece, lastPiece};\n}\n\nexport function getNewMessageIndex(postListIds: string[]): number {\n return postListIds.findIndex(\n (item) => item.indexOf(PostListRowListIds.START_OF_NEW_MESSAGES) === 0,\n );\n}\n\nexport function areConsecutivePostsBySameUser(post: Post, previousPost: Post): boolean {\n if (!(post && previousPost)) {\n return false;\n }\n return post.user_id === previousPost.user_id && // The post is by the same user\n post.create_at - previousPost.create_at <= Posts.POST_COLLAPSE_TIMEOUT && // And was within a short time period\n !(post.props && post.props.from_webhook) && !(previousPost.props && previousPost.props.from_webhook) && // And neither is from a webhook\n !isSystemMessage(post) && !isSystemMessage(previousPost); // And neither is a system message\n}\n\n// Constructs the URL of a post.\n// Was made to be used with permalinks.\n//\n// If the post is a reply and CRT is enabled\n// the URL constructed is the URL of the channel instead.\n//\n// Note: In the case of DM_CHANNEL, users must be fetched beforehand.\nexport function getPostURL(state: GlobalState, post: Post): string {\n const channel = getChannel(state, post.channel_id);\n const currentUserId = getCurrentUserId(state);\n const team = getTeam(state, channel.team_id || getCurrentTeamId(state));\n\n const postURI = isCollapsedThreadsEnabled(state) && isComment(post) ? '' : `/${post.id}`;\n\n switch (channel.type) {\n case Constants.DM_CHANNEL: {\n const userId = getUserIdFromChannelName(currentUserId, channel.name);\n const user = getUser(state, userId);\n return `/${team.name}/messages/@${user.username}${postURI}`;\n }\n case Constants.GM_CHANNEL:\n return `/${team.name}/messages/${channel.name}${postURI}`;\n default:\n return `/${team.name}/channels/${channel.name}${postURI}`;\n }\n}\n\nexport function matchUserMentionTriggersWithMessageMentions(userMentionKeys: UserMentionKey[],\n messageMentionKeys: string[]): boolean {\n let isMentioned = false;\n for (const mentionKey of userMentionKeys) {\n const isPresentInMessage = messageMentionKeys.includes(mentionKey.key);\n if (isPresentInMessage) {\n isMentioned = true;\n break;\n }\n }\n return isMentioned;\n}\n\n/**\n * This removes custom emoji reactions of a post, which are deleted from the custom emoji store.\n */\nexport function makeGetUniqueReactionsToPost(): (state: GlobalState, postId: Post['id']) => Record | undefined | null {\n const getReactionsForPost = makeGetReactionsForPost();\n\n return createSelector(\n 'makeGetUniqueReactionsToPost',\n (state: GlobalState, postId: string) => getReactionsForPost(state, postId),\n getEmojiMap,\n (reactions, emojiMap) => {\n if (!reactions) {\n return null;\n }\n\n const reactionsForPost: Record = {};\n\n Object.entries(reactions).forEach(([userIdEmojiKey, emojiReaction]) => {\n if (emojiMap.get(emojiReaction.emoji_name)) {\n reactionsForPost[userIdEmojiKey] = emojiReaction;\n }\n });\n\n return reactionsForPost;\n },\n );\n}\n\nexport function makeGetUniqueEmojiNameReactionsForPost(): (state: GlobalState, postId: Post['id']) => string[] | undefined | null {\n const getReactionsForPost = makeGetReactionsForPost();\n\n return createSelector(\n 'makeGetUniqueEmojiReactionsForPost',\n (state: GlobalState, postId: string) => getReactionsForPost(state, postId),\n getEmojiMap,\n (reactions, emojiMap) => {\n if (!reactions) {\n return null;\n }\n\n const emojiNames: string[] = [];\n\n Object.values(reactions).forEach((reaction) => {\n if (emojiMap.get(reaction.emoji_name) && !emojiNames.includes(reaction.emoji_name)) {\n emojiNames.push(reaction.emoji_name);\n }\n });\n\n return emojiNames;\n },\n );\n}\n\nexport function makeGetIsReactionAlreadyAddedToPost(): (state: GlobalState, postId: Post['id'], emojiName: string) => boolean {\n const getUniqueReactionsToPost = makeGetUniqueReactionsToPost();\n\n return createSelector(\n 'makeGetIsReactionAlreadyAddedToPost',\n (state: GlobalState, postId: string) => getUniqueReactionsToPost(state, postId),\n getCurrentUserId,\n (state: GlobalState, postId: string, emojiName: string) => emojiName,\n (reactions, currentUserId, emojiName) => {\n const reactionsForPost = reactions || {};\n\n const isReactionAlreadyAddedToPost = Object.values(reactionsForPost).some((reaction) => reaction.user_id === currentUserId && reaction.emoji_name === emojiName);\n\n return isReactionAlreadyAddedToPost;\n },\n );\n}\n\nexport function getMentionDetails(usersByUsername: Record, mentionName: string): UserProfile | Group | undefined {\n let mentionNameToLowerCase = mentionName.toLowerCase();\n\n while (mentionNameToLowerCase.length > 0) {\n if (usersByUsername.hasOwnProperty(mentionNameToLowerCase)) {\n return usersByUsername[mentionNameToLowerCase];\n }\n\n // Repeatedly trim off trailing punctuation in case this is at the end of a sentence\n if ((/[._-]$/).test(mentionNameToLowerCase)) {\n mentionNameToLowerCase = mentionNameToLowerCase.substring(0, mentionNameToLowerCase.length - 1);\n } else {\n break;\n }\n }\n\n return undefined;\n}\n\nexport function getUserOrGroupFromMentionName(\n mentionName: string,\n users: Record,\n groups: Record,\n groupsDisabled?: boolean,\n getMention = getMentionDetails,\n): [UserProfile?, Group?] {\n const user = getMention(users, mentionName) as UserProfile | undefined;\n\n // prioritizes user if user exists with the same name as a group.\n if (!user && !groupsDisabled) {\n const group = getMention(groups, mentionName) as Group | undefined;\n if (group && !group.allow_reference) {\n return [undefined, undefined]; // remove group mention if not allowed to reference\n }\n\n return [undefined, group];\n }\n\n return [user, undefined];\n}\n\nexport function mentionsMinusSpecialMentionsInText(message: string) {\n const allMentions = message.match(Constants.MENTIONS_REGEX) || [];\n const mentions = [];\n for (let i = 0; i < allMentions.length; i++) {\n const mention = allMentions[i];\n if (!Constants.SPECIAL_MENTIONS_REGEX.test(mention)) {\n mentions.push(mention.substring(1).trim());\n }\n }\n\n return mentions;\n}\n\nexport function makeGetUserOrGroupMentionCountFromMessage(): (state: GlobalState, message: Post['message']) => number {\n return createSelector(\n 'getUserOrGroupMentionCountFromMessage',\n (_state: GlobalState, message: Post['message']) => message,\n getUsersByUsername,\n getAllGroupsForReferenceByName,\n (message, users, groups) => {\n let count = 0;\n const markdownCleanedText = formatWithRenderer(message, new MentionableRenderer());\n const mentions = new Set(markdownCleanedText.match(Constants.MENTIONS_REGEX) || []);\n mentions.forEach((mention) => {\n const [user, group] = getUserOrGroupFromMentionName(mention.substring(1), users, groups);\n\n if (user) {\n count++;\n } else if (group) {\n count += group.member_count;\n }\n });\n return count;\n },\n );\n}\n\nexport function hasRequestedPersistentNotifications(priority?: PostPriorityMetadata) {\n return (\n priority?.priority === PostPriority.URGENT &&\n priority?.persistent_notifications\n );\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport emojiRegex from 'emoji-regex';\nimport type {Renderer} from 'marked';\n\nimport type {SystemEmoji} from '@mattermost/types/emojis';\n\nimport type {HighlightWithoutNotificationKey} from 'mattermost-redux/selectors/entities/users';\n\nimport {formatWithRenderer} from 'utils/markdown';\n\nimport Constants from './constants';\nimport type EmojiMap from './emoji_map.js';\nimport * as Emoticons from './emoticons';\nimport * as Markdown from './markdown';\n\nconst punctuationRegex = /[^\\p{L}\\d]/u;\nconst AT_MENTION_PATTERN = /(?:\\B|\\b_+)@([a-z0-9.\\-_]+)/gi;\nconst UNICODE_EMOJI_REGEX = emojiRegex();\nconst htmlEmojiPattern = /^

    \\s*(?:]*>|]*>[^<]*<\\/span>\\s*|[^<]*<\\/span>\\s*)+<\\/p>$/;\n\nconst FORMAT_TOKEN_LIMIT = 1000;\nconst FORMAT_TOKEN_LIMIT_ERROR = 'maximum number of tokens reached';\n\nexport function isFormatTokenLimitError(error: unknown) {\n return Boolean(error && typeof error === 'object' && 'message' in error && (error as Record).message === FORMAT_TOKEN_LIMIT_ERROR);\n}\n\n// Performs formatting of user posts including highlighting mentions and search terms and converting urls, hashtags,\n// @mentions and ~channels to links by taking a user's message and returning a string of formatted html. Also takes\n// a number of options as part of the second parameter:\nexport type ChannelNamesMap = {\n [name: string]: {\n display_name: string;\n team_name?: string;\n } | string;\n};\n\nexport type SearchPattern = {\n pattern: RegExp;\n term: string;\n};\n\nexport type MentionKey = {\n key: string;\n caseSensitive?: boolean;\n};\n\nexport type Team = {\n id: string;\n name: string;\n display_name: string;\n};\n\nexport interface TextFormattingOptionsBase {\n\n /**\n * If specified, this word is highlighted in the resulting html.\n *\n * Defaults to nothing.\n */\n searchTerm: string;\n\n /**\n * If specified, an array of words that will be highlighted.\n *\n * If both this and `searchTerm` are specified, this takes precedence.\n *\n * Defaults to nothing.\n */\n searchMatches: string[];\n\n searchPatterns: SearchPattern[];\n\n /**\n * Specifies whether or not to highlight mentions of the current user.\n *\n * Defaults to `true`.\n */\n mentionHighlight: boolean;\n\n /**\n * Specifies whether or not to display group mentions as blue links.\n *\n * Defaults to `false`.\n */\n disableGroupHighlight: boolean;\n\n /**\n * A list of mention keys for the current user to highlight.\n */\n mentionKeys: MentionKey[];\n\n /**\n * A list of highlight keys for the current user to highlight without notification.\n */\n highlightKeys: HighlightWithoutNotificationKey[];\n\n /**\n * Specifies whether or not to remove newlines.\n *\n * Defaults to `false`.\n */\n singleline: boolean;\n\n /**\n * Enables emoticon parsing with a data-emoticon attribute.\n *\n * Defaults to `true`.\n */\n emoticons: boolean;\n\n /**\n * Enables markdown parsing.\n *\n * Defaults to `true`.\n */\n markdown: boolean;\n\n /**\n * The origin of this Mattermost instance.\n *\n * If provided, links to channels and posts will be replaced with internal\n * links that can be handled by a special click handler.\n */\n siteURL: string;\n\n /**\n * Whether or not to render at mentions into spans with a data-mention attribute.\n *\n * Defaults to `false`.\n */\n atMentions: boolean;\n\n /**\n * An object mapping channel display names to channels.\n *\n * If provided, ~channel mentions will be replaced with links to the relevant channel.\n */\n channelNamesMap: ChannelNamesMap;\n\n /**\n * The current team.\n */\n team: Team;\n\n /**\n * If specified, images are proxied.\n *\n * Defaults to `false`.\n */\n proxyImages: boolean;\n\n /**\n * An array of url schemes that will be allowed for autolinking.\n *\n * Defaults to autolinking with any url scheme.\n */\n autolinkedUrlSchemes: string[];\n\n /**\n * An array of paths on the server that are managed by another server. Any path provided will be treated as an\n * external link that will not by handled by react-router.\n *\n * Defaults to an empty array.\n */\n managedResourcePaths: string[];\n\n /**\n * A custom renderer object to use in the formatWithRenderer function.\n *\n * Defaults to empty.\n */\n renderer: Renderer;\n\n /**\n * Minimum number of characters in a hashtag.\n *\n * Defaults to `3`.\n */\n minimumHashtagLength: number;\n\n /**\n * the timestamp on which the post was last edited\n */\n editedAt: number;\n postId: string;\n\n /**\n * Whether or not to render sum of members mentions e.g. \"5 members...\" into spans with a data-sum-of-members-mention attribute.\n *\n * Defaults to `false`.\n */\n atSumOfMembersMentions: boolean;\n\n /**\n * Whether or not to render plan mentions e.g. \"Professional plan, Enterprise plan, Starter plan\" into spans with a data-plan-mention attribute.\n *\n * Defaults to `false`.\n */\n atPlanMentions: boolean;\n}\n\nexport type TextFormattingOptions = Partial;\n\nexport class Tokens extends Map {\n set(key: string, value: {value: string; originalText: string; hashtag?: string}) {\n super.set(key, value);\n if (this.size > FORMAT_TOKEN_LIMIT) {\n throw new Error(FORMAT_TOKEN_LIMIT_ERROR);\n }\n return this;\n }\n}\n\nconst DEFAULT_OPTIONS: TextFormattingOptions = {\n mentionHighlight: true,\n disableGroupHighlight: false,\n singleline: false,\n emoticons: true,\n markdown: true,\n atMentions: false,\n atSumOfMembersMentions: false,\n atPlanMentions: false,\n minimumHashtagLength: 3,\n proxyImages: false,\n editedAt: 0,\n postId: '',\n};\n\n/**\n* pattern to detect the existence of a Chinese, Japanese, or Korean character in a string\n* http://stackoverflow.com/questions/15033196/using-javascript-to-check-whether-a-string-contains-japanese-characters-includi\n* recently enhanced to support some more CJK, Hangul, and Cyrillic characters\n* CJK punctuation: \\u3000-\\u303f\n* Hiragana: \\u3040-\\u309f\n* Katakana: \\u30a0-\\u30ff\n* Full-width ASCII characters: \\uff00-\\uff9f\n* Common CJK characters: \\u4e00-\\u9fff\n* Additional CJK characters: \\u3400-\\u4dbf\n* Hangul characters: \\uac00-\\ud7af\n* Hangul Jamo: \\u1100-\\u11ff\n* Hangul Compatibility Jamo: \\u3130-\\u318f\n* Cyrillic characters: \\u0400-\\u04ff, \\u0500-\\u052f\n* Additional CJK and Hangul compatibility characters: \\u2de0-\\u2dff\n**/\n// eslint-disable-next-line no-misleading-character-class\nexport const cjkrPattern = /[\\u3000-\\u303f\\u3040-\\u309f\\u30a0-\\u30ff\\uff00-\\uff9f\\u4e00-\\u9faf\\u3400-\\u4dbf\\uac00-\\ud7a3\\u1100-\\u11ff\\u3130-\\u318f\\u0400-\\u04ff\\u0500-\\u052f\\u2de0-\\u2dff]/;\n\nexport function formatText(\n text: string,\n inputOptions: TextFormattingOptions = DEFAULT_OPTIONS,\n emojiMap: EmojiMap,\n): string {\n if (!text) {\n return '';\n }\n\n let output = text;\n const options = Object.assign({}, inputOptions);\n const hasPhrases = (/\"([^\"]*)\"/).test(options.searchTerm || '');\n\n if (options.searchMatches && !hasPhrases) {\n options.searchPatterns = options.searchMatches.map(convertSearchTermToRegex);\n } else {\n options.searchPatterns = parseSearchTerms(options.searchTerm || '').map(convertSearchTermToRegex).sort((a, b) => {\n return b.term.length - a.term.length;\n });\n }\n\n if (options.renderer) {\n output = formatWithRenderer(output, options.renderer);\n output = doFormatText(output, options, emojiMap);\n } else if (!('markdown' in options) || options.markdown) {\n // the markdown renderer will call doFormatText as necessary\n output = Markdown.format(output, options, emojiMap);\n if (output.includes('class=\"markdown-inline-img\"')) {\n const replacer = (match: string) => {\n /*\n * remove p tag to allow other divs to be nested,\n * which allows markdown images to open preview window\n */\n return match === '

    ' ? '

    ' : '
    ';\n };\n\n /*\n * Fix for MM-22267 - replace any carriage-return (\\r), line-feed (\\n) or cr-lf (\\r\\n) occurences\n * in enclosing `

    ` tags with `
    ` breaks to show correct line-breaks in the UI\n *\n * the Markdown.format function removes all duplicate line-breaks beforehand, so it is safe to just\n * replace occurrences which are not followed by opening

    tags to prevent duplicate line-breaks\n *\n * The data-codeblock-code part is a fix for MM-45349 - do not replace newlines with `
    `\n * in code blocks, as they become visible in the message\n */\n output = output.replace(/data-codeblock-code=\"[^\"]+\"|[\\r\\n]+(?!(

    ))/g, (match: string) => {\n if (match.includes('data-codeblock-code')) {\n return match;\n }\n\n return '
    ';\n });\n\n /*\n * the replacer is not ideal, since it replaces every occurence with a new div\n * It would be better to more accurately match only the element in question\n * and replace it with an inlione-version\n */\n output = output.replace(/

    |<\\/p>/g, replacer);\n }\n } else {\n output = sanitizeHtml(output);\n output = doFormatText(output, options, emojiMap);\n }\n\n // replace newlines with spaces if necessary\n if (options.singleline) {\n output = replaceNewlines(output);\n }\n\n if (htmlEmojiPattern.test(output.trim())) {\n output = `${output.trim()}`;\n }\n\n if (options.postId) {\n // unwrap the output from the closing p tag and add a span that will serve as a\n // palceholder for `messageToHtmlComponent` function later on\n if (output.endsWith('

    ')) {\n output = `${output.slice(0, -4)}

    `;\n } else {\n output += ``;\n }\n }\n\n return output;\n}\n\n// Performs most of the actual formatting work for formatText. Not intended to be called normally.\nexport function doFormatText(text: string, options: TextFormattingOptions, emojiMap: EmojiMap): string {\n let output = text;\n\n const tokens = new Tokens();\n\n try {\n // replace important words and phrases with tokens\n if (options.atMentions) {\n output = autolinkAtMentions(output, tokens);\n }\n\n if (options.atSumOfMembersMentions) {\n output = autoLinkSumOfMembersMentions(output, tokens);\n }\n\n if (options.atPlanMentions) {\n output = autoPlanMentions(output, tokens);\n }\n\n if (options.channelNamesMap) {\n output = autolinkChannelMentions(\n output,\n tokens,\n options.channelNamesMap,\n options.team,\n );\n }\n\n output = autolinkEmails(output, tokens);\n output = autolinkHashtags(output, tokens, options.minimumHashtagLength);\n\n if (!('emoticons' in options) || options.emoticons) {\n output = Emoticons.handleEmoticons(output, tokens);\n }\n\n if (options.searchPatterns) {\n output = highlightSearchTerms(output, tokens, options.searchPatterns);\n }\n\n if (!('mentionHighlight' in options) || options.mentionHighlight) {\n output = highlightCurrentMentions(output, tokens, options.mentionKeys);\n }\n\n if (options.highlightKeys && options.highlightKeys.length > 0) {\n output = highlightWithoutNotificationKeywords(output, tokens, options.highlightKeys);\n }\n\n if (!('emoticons' in options) || options.emoticons) {\n output = handleUnicodeEmoji(output, emojiMap, UNICODE_EMOJI_REGEX);\n }\n\n // reinsert tokens with formatted versions of the important words and phrases\n output = replaceTokens(output, tokens) || text;\n return output;\n } catch (error) {\n if (isFormatTokenLimitError(error)) {\n return text;\n }\n\n throw error;\n }\n}\n\nexport function sanitizeHtml(text: string): string {\n let output = text;\n\n // normal string.replace only does a single occurrence so use a regex instead\n output = output.replace(/&/g, '&');\n output = output.replace(//g, '>');\n output = output.replace(/'/g, ''');\n output = output.replace(/\"/g, '"');\n\n return output;\n}\n\n// Copied from our fork of commonmark.js\n// eslint-disable-next-line no-useless-escape\nconst emailRegex = /(^|[^\\p{L}\\d])((?:[\\p{L}\\p{Nd}!#$%&'*+\\-\\/=?^_`{|}~](?:[\\p{L}\\p{Nd}!#$%&'*+\\-\\/=?^_`{|}~]|\\.(?!\\.|@))*|\"[\\p{L}\\p{Nd}!#$%&'*+\\-\\/=?^_`{|}~\\s(),:;<>@\\[\\].]+\")@[\\p{L}\\d.\\-]+[.]\\p{L}{2,5}(?=$|[^\\p{L}]))/gu;\n\n// Convert emails into tokens\nfunction autolinkEmails(text: string, tokens: Tokens) {\n function replaceEmailWithToken(\n fullMatch: string,\n ...args: Array\n ) {\n const prefix = args[0] as string;\n const email = args[1] as string;\n\n const index = tokens.size;\n const alias = `$MM_EMAIL${index}$`;\n\n tokens.set(alias, {\n value: `${email}`,\n originalText: email,\n });\n\n return prefix + alias;\n }\n\n return text.replace(emailRegex, replaceEmailWithToken);\n}\n\nexport function autoLinkSumOfMembersMentions(text: string, tokens: Tokens): string {\n function replaceSumOfMembersMentionWithToken(fullMatch: string) {\n const index = tokens.size;\n const alias = `$MM_SUMOFMEMBERSMENTION${index}$`;\n\n tokens.set(alias, {\n value: `${fullMatch}`,\n originalText: fullMatch,\n });\n\n return alias;\n }\n\n let output = text;\n output = output.replace(\n Constants.SUM_OF_MEMBERS_MENTION_REGEX,\n replaceSumOfMembersMentionWithToken,\n );\n\n return output;\n}\n\nexport function autoPlanMentions(text: string, tokens: Tokens): string {\n function replacePlanMentionWithToken(fullMatch: string) {\n const index = tokens.size;\n const alias = `$MM_PLANMENTION${index}$`;\n\n tokens.set(alias, {\n value: `${fullMatch}`,\n originalText: fullMatch,\n });\n\n return alias;\n }\n\n let output = text;\n output = output.replace(\n Constants.PLAN_MENTIONS,\n replacePlanMentionWithToken,\n );\n\n return output;\n}\n\nexport function autolinkAtMentions(text: string, tokens: Tokens): string {\n function replaceAtMentionWithToken(fullMatch: string, username: string) {\n let originalText = fullMatch;\n\n // Deliberately remove all leading underscores since regex matches leading underscore by treating it as non word boundary\n while (originalText[0] === '_') {\n originalText = originalText.substring(1);\n }\n\n const index = tokens.size;\n const alias = `$MM_ATMENTION${index}$`;\n\n tokens.set(alias, {\n value: `@${username}`,\n originalText,\n });\n\n return alias;\n }\n\n let output = text;\n\n // handle @channel, @all, @here mentions first (supports trailing punctuation)\n output = output.replace(\n Constants.SPECIAL_MENTIONS_REGEX,\n replaceAtMentionWithToken,\n );\n\n // handle all other mentions (supports trailing punctuation)\n let match = output.match(AT_MENTION_PATTERN);\n while (match && match.length > 0) {\n output = output.replace(AT_MENTION_PATTERN, replaceAtMentionWithToken);\n match = output.match(AT_MENTION_PATTERN);\n }\n\n return output;\n}\n\nexport function allAtMentions(text: string): string[] {\n return text.match(Constants.SPECIAL_MENTIONS_REGEX && AT_MENTION_PATTERN) || [];\n}\n\nexport function autolinkChannelMentions(\n text: string,\n tokens: Tokens,\n channelNamesMap: ChannelNamesMap,\n team?: Team,\n) {\n function channelMentionExists(c: string) {\n return channelNamesMap.hasOwnProperty(c);\n }\n function addToken(channelName: string, teamName: string, mention: string, displayName: string) {\n const index = tokens.size;\n const alias = `$MM_CHANNELMENTION${index}$`;\n let href = '#';\n if (teamName) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n href = ((window as any).basename || '') + '/' + teamName + '/channels/' + channelName;\n tokens.set(alias, {\n value: `~${displayName}`,\n originalText: mention,\n });\n } else if (team) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n href = ((window as any).basename || '') + '/' + team.name + '/channels/' + channelName;\n tokens.set(alias, {\n value: `~${displayName}`,\n originalText: mention,\n });\n }\n\n return alias;\n }\n\n function replaceChannelMentionWithToken(\n fullMatch: string,\n mention: string,\n channelName: string,\n ) {\n let channelNameLower = channelName.toLowerCase();\n\n if (channelMentionExists(channelNameLower)) {\n // Exact match\n let displayName = '';\n let teamName = '';\n\n const channelValue = channelNamesMap[channelNameLower];\n if (typeof channelValue === 'object') {\n displayName = channelValue.display_name;\n teamName = channelValue.team_name || '';\n } else {\n displayName = channelValue;\n }\n\n return addToken(\n channelNameLower,\n teamName,\n mention,\n escapeHtml(displayName),\n );\n }\n\n // Not an exact match, attempt to truncate any punctuation to see if we can find a channel\n const originalChannelName = channelNameLower;\n\n for (let c = channelNameLower.length; c > 0; c--) {\n if (punctuationRegex.test(channelNameLower[c - 1])) {\n channelNameLower = channelNameLower.substring(0, c - 1);\n\n if (channelMentionExists(channelNameLower)) {\n const suffix = originalChannelName.substr(c - 1);\n\n let displayName = '';\n let teamName = '';\n\n const channelValue = channelNamesMap[channelNameLower];\n if (typeof channelValue === 'object') {\n displayName = channelValue.display_name;\n teamName = channelValue.team_name || '';\n } else {\n displayName = channelValue;\n }\n\n const alias = addToken(\n channelNameLower,\n teamName,\n '~' + channelNameLower,\n escapeHtml(displayName),\n );\n return alias + suffix;\n }\n } else {\n // If the last character is not punctuation, no point in going any further\n break;\n }\n }\n\n return fullMatch;\n }\n\n let output = text;\n output = output.replace(\n /\\B(~([a-z0-9.\\-_]*))/gi,\n replaceChannelMentionWithToken,\n );\n\n return output;\n}\n\nexport function escapeRegex(text?: string): string {\n return text?.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&') || '';\n}\n\nexport function escapeReplaceSpecialPatterns(text?: string): string {\n return text?.replace(/[$]/g, '$$$$') || '';\n}\n\nconst htmlEntities = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n};\n\nexport function escapeHtml(text: string): string {\n return text.replace(\n /[&<>\"']/g,\n (match: string) => htmlEntities[match as keyof (typeof htmlEntities)],\n );\n}\n\nexport function convertEntityToCharacter(text: string): string {\n return text.\n replace(/</g, '<').\n replace(/>/g, '>').\n replace(/'/g, \"'\").\n replace(/"/g, '\"').\n replace(/&/g, '&');\n}\n\nexport function highlightCurrentMentions(\n text: string,\n tokens: Tokens,\n mentionKeys: MentionKey[] = [],\n) {\n let output = text;\n\n // look for any existing tokens which are self mentions and should be highlighted\n const newTokens = new Map();\n for (const [alias, token] of tokens) {\n const tokenTextLower = token.originalText.toLowerCase();\n\n if (mentionKeys.findIndex((key) => key.key.toLowerCase() === tokenTextLower) !== -1) {\n const index = tokens.size + newTokens.size;\n const newAlias = `$MM_SELFMENTION${index}$`;\n\n newTokens.set(newAlias, {\n value: `${alias}`,\n originalText: token.originalText,\n });\n output = output.replace(alias, newAlias);\n }\n }\n\n // the new tokens are stashed in a separate map since we can't add objects to a map during iteration\n for (const newToken of newTokens) {\n tokens.set(newToken[0], newToken[1]);\n }\n\n // look for self mentions in the text\n function replaceCurrentMentionWithToken(\n fullMatch: string,\n prefix: string,\n mention: string,\n suffix = '',\n ) {\n const index = tokens.size;\n const alias = `$MM_SELFMENTION${index}$`;\n\n tokens.set(alias, {\n value: `${mention}`,\n originalText: mention,\n });\n\n return prefix + alias + suffix;\n }\n\n for (const mention of mentionKeys) {\n if (!mention || !mention.key) {\n continue;\n }\n\n let flags = 'g';\n if (!mention.caseSensitive) {\n flags += 'i';\n }\n\n let pattern;\n if (cjkrPattern.test(mention.key)) {\n // In the case of CJK mention key, even if there's no delimiters (such as spaces) at both ends of a word, it is recognized as a mention key\n pattern = new RegExp(`()(${escapeRegex(mention.key)})()`, flags);\n } else {\n pattern = new RegExp(\n `(^|\\\\W)(${escapeRegex(mention.key)})(\\\\b|_+\\\\b)`,\n flags,\n );\n }\n output = output.replace(pattern, replaceCurrentMentionWithToken);\n }\n\n return output;\n}\n\nexport function highlightWithoutNotificationKeywords(\n text: string,\n tokens: Tokens,\n highlightKeys: HighlightWithoutNotificationKey[] = [],\n) {\n let output = text;\n\n // Store the new tokens in a separate map since we can't add objects to a map during iteration\n const newTokens = new Map();\n\n // Look for highlighting keywords in the tokens\n tokens.forEach((token, alias) => {\n const tokenOriginalText = token.originalText.toLowerCase();\n\n if (highlightKeys.findIndex((highlightKey) => highlightKey.key.toLowerCase() === tokenOriginalText) !== -1) {\n const newIndex = tokens.size + newTokens.size;\n const newAlias = `$MM_HIGHLIGHTKEYWORD${newIndex}$`;\n\n newTokens.set(newAlias, {\n value: `${alias}`,\n originalText: token.originalText,\n });\n output = output.replace(alias, newAlias);\n }\n });\n\n // Copy the new tokens to the tokens map\n newTokens.forEach((newToken, newAlias) => {\n tokens.set(newAlias, newToken);\n });\n\n // Look for highlighting keywords in the text\n function replaceHighlightKeywordsWithToken(\n _: string,\n prefix: string,\n highlightKey: string,\n suffix = '',\n ) {\n const index = tokens.size;\n const alias = `$MM_HIGHLIGHTKEYWORD${index}$`;\n\n // Set the token map with the replacement value so that it can be replaced back later\n tokens.set(alias, {\n value: `${highlightKey}`,\n originalText: highlightKey,\n });\n\n return prefix + alias + suffix;\n }\n\n highlightKeys.\n sort((a, b) => b.key.length - a.key.length).\n forEach(({key}) => {\n if (!key) {\n return;\n }\n\n let pattern;\n if (cjkrPattern.test(key)) {\n // If the key contains Chinese, Japanese, Korean or Russian characters, don't mark word boundaries\n pattern = new RegExp(`()(${escapeRegex(key)})()`, 'gi');\n } else {\n // If the key contains only English characters, mark word boundaries\n pattern = new RegExp(`(^|\\\\W)(${escapeRegex(key)})(\\\\b|_+\\\\b)`, 'gi');\n }\n\n // Replace the key with the token for each occurrence of the key\n output = output.replace(pattern, replaceHighlightKeywordsWithToken);\n });\n\n return output;\n}\n\nconst hashtagRegex = /(^|\\W)(#\\p{L}[\\p{L}\\d\\-_.]*[\\p{L}\\d])/gu;\n\nfunction autolinkHashtags(\n text: string,\n tokens: Tokens,\n minimumHashtagLength = 3,\n) {\n let output = text;\n\n const newTokens = new Map();\n for (const [alias, token] of tokens) {\n if (token.originalText.lastIndexOf('#', 0) === 0) {\n const index = tokens.size + newTokens.size;\n const newAlias = `$MM_HASHTAG${index}$`;\n\n newTokens.set(newAlias, {\n value: `${token.originalText}`,\n originalText: token.originalText,\n hashtag: token.originalText.substring(1),\n });\n\n output = output.replace(alias, newAlias);\n }\n }\n\n // the new tokens are stashed in a separate map since we can't add objects to a map during iteration\n for (const newToken of newTokens) {\n tokens.set(newToken[0], newToken[1]);\n }\n\n // look for hashtags in the text\n function replaceHashtagWithToken(\n fullMatch: string,\n prefix: string,\n originalText: string,\n ) {\n const index = tokens.size;\n const alias = `$MM_HASHTAG${index}$`;\n\n if (originalText.length < minimumHashtagLength + 1) {\n // too short to be a hashtag\n return fullMatch;\n }\n\n tokens.set(alias, {\n value: `${originalText}`,\n originalText,\n hashtag: originalText.substring(1),\n });\n\n return prefix + alias;\n }\n\n return output.replace(\n hashtagRegex,\n replaceHashtagWithToken,\n );\n}\n\nconst puncStart = /^[^\\p{L}\\d\\s#]+/u;\nconst puncEnd = /[^\\p{L}\\d\\s]+$/u;\n\nexport function parseSearchTerms(searchTerm: string): string[] {\n let terms = [];\n\n let termString = searchTerm;\n\n while (termString) {\n let captured;\n\n // check for a quoted string\n captured = (/^\"([^\"]*)\"/).exec(termString);\n if (captured) {\n termString = termString.substring(captured[0].length);\n\n if (captured[1].length > 0) {\n terms.push(captured[1]);\n }\n continue;\n }\n\n // check for a search flag (and don't add it to terms)\n captured = (/^-?(?:in|from|channel|on|before|after): ?\\S+/).exec(termString);\n if (captured) {\n termString = termString.substring(captured[0].length);\n continue;\n }\n\n // capture at mentions differently from the server so we can highlight them with the preceeding at sign\n captured = (/^@[a-z0-9.-_]+\\b/).exec(termString);\n if (captured) {\n termString = termString.substring(captured[0].length);\n\n terms.push(captured[0]);\n continue;\n }\n\n // capture any plain text up until the next quote or search flag\n captured = (/^.+?(?=(?:\\b|\\B-)(?:in:|from:|channel:|on:|before:|after:)|\"|$)/).exec(termString);\n if (captured) {\n termString = termString.substring(captured[0].length);\n\n // break the text up into words based on how the server splits them in SqlPostStore.SearchPosts and then discard empty terms\n terms.push(\n ...captured[0].split(/[ <>+()~@]/).filter((term) => Boolean(term)),\n );\n continue;\n }\n\n // we should never reach this point since at least one of the regexes should match something in the remaining text\n throw new Error(\n 'Infinite loop in search term parsing: \"' + termString + '\"',\n );\n }\n\n // remove punctuation from each term\n terms = terms.map((term) => {\n term.replace(puncStart, '');\n if (term.charAt(term.length - 1) !== '*') {\n term.replace(puncEnd, '');\n }\n return term;\n });\n\n return terms;\n}\n\nfunction convertSearchTermToRegex(term: string): SearchPattern {\n let pattern;\n\n if (cjkrPattern.test(term)) {\n // term contains Chinese, Japanese, or Korean characters so don't mark word boundaries\n pattern = '()(' + escapeRegex(term.replace(/\\*/g, '')) + ')';\n } else if ((/[^\\s][*]$/).test(term)) {\n pattern = '\\\\b()(' + escapeRegex(term.substring(0, term.length - 1)) + ')';\n } else if (term.startsWith('@') || term.startsWith('#')) {\n // needs special handling of the first boundary because a word boundary doesn't work before a symbol\n pattern = '(\\\\W|^)(' + escapeRegex(term) + ')\\\\b';\n } else {\n pattern = '\\\\b()(' + escapeRegex(term) + ')\\\\b';\n }\n\n return {\n pattern: new RegExp(pattern, 'gi'),\n term,\n };\n}\n\nexport function highlightSearchTerms(\n text: string,\n tokens: Tokens,\n searchPatterns: SearchPattern[],\n): string {\n if (!searchPatterns || searchPatterns.length === 0) {\n return text;\n }\n\n let output = text;\n\n function replaceSearchTermWithToken(\n match: string,\n prefix: string,\n word: string,\n ) {\n const index = tokens.size;\n const alias = `$MM_SEARCHTERM${index}$`;\n\n tokens.set(alias, {\n value: `${word}`,\n originalText: word,\n });\n\n return prefix + alias;\n }\n\n for (const pattern of searchPatterns) {\n // highlight existing tokens matching search terms\n const newTokens = new Map();\n for (const [alias, token] of tokens) {\n if (pattern.pattern.test(token.originalText)) {\n // If it's a Hashtag, skip it unless the search term is an exact match.\n let originalText = token.originalText;\n if (originalText.startsWith('#')) {\n originalText = originalText.substr(1);\n }\n let term = pattern.term;\n if (term.startsWith('#')) {\n term = term.substr(1);\n }\n\n if (\n alias.startsWith('$MM_HASHTAG') &&\n alias.endsWith('$') &&\n originalText.toLowerCase() !== term.toLowerCase()\n ) {\n continue;\n }\n\n const index = tokens.size + newTokens.size;\n const newAlias = `$MM_SEARCHTERM${index}$`;\n\n newTokens.set(newAlias, {\n value: `${alias}`,\n originalText: token.originalText,\n });\n\n output = output.replace(alias, newAlias);\n }\n\n // The pattern regexes are global, so calling pattern.pattern.test() above alters their\n // state. Reset lastIndex to 0 between calls to test() to ensure it returns the\n // same result every time it is called with the same value of token.originalText.\n pattern.pattern.lastIndex = 0;\n }\n\n // the new tokens are stashed in a separate map since we can't add objects to a map during iteration\n for (const newToken of newTokens) {\n tokens.set(newToken[0], newToken[1]);\n }\n\n output = output.replace(pattern.pattern, replaceSearchTermWithToken);\n }\n\n return output;\n}\n\nexport function replaceTokens(text: string, tokens: Tokens): string {\n let output = text;\n\n // iterate backwards through the map so that we do replacement in the opposite order that we added tokens\n const aliases = [...tokens.keys()];\n for (let i = aliases.length - 1; i >= 0; i--) {\n const alias = aliases[i];\n const token = tokens.get(alias);\n output = output.replace(alias, escapeReplaceSpecialPatterns(token?.value || ''));\n }\n\n return output;\n}\n\nfunction replaceNewlines(text: string) {\n return text.replace(/\\n/g, ' ');\n}\n\nexport function handleUnicodeEmoji(text: string, emojiMap: EmojiMap, searchPattern: RegExp): string {\n let output = text;\n\n // replace all occurances of unicode emoji with additional markup\n output = output.replace(searchPattern, (emojiMatch) => {\n // convert unicode character to hex string\n const codePoints = [fixedCharCodeAt(emojiMatch, 0)];\n\n if (emojiMatch.length > 1) {\n for (let i = 1; i < emojiMatch.length; i++) {\n const codePoint = fixedCharCodeAt(emojiMatch, i);\n if (codePoint === -1) {\n // Not a complete character\n continue;\n }\n\n codePoints.push(codePoint);\n }\n }\n\n const emojiCode = codePoints.map((codePoint) => codePoint.toString(16)).join('-');\n\n // convert emoji to image if supported, or wrap in span to apply appropriate formatting\n if (emojiMap && emojiMap.hasUnicode(emojiCode)) {\n // we typecasted here because we know that the emojiMap has the emoji with given emojiCode\n const emoji = emojiMap.getUnicode(emojiCode) as SystemEmoji;\n\n return Emoticons.renderEmoji(emoji.short_names[0], emojiMatch);\n }\n\n // wrap unsupported unicode emoji in span to style as needed\n return `${emojiMatch}`;\n });\n\n return output;\n}\n\n// Gets the unicode character code of a character starting at the given index in the string\n// Adapted from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/charCodeAt\nfunction fixedCharCodeAt(str: string, idx = 0) {\n // ex. fixedCharCodeAt('\\uD800\\uDC00', 0); // 65536\n // ex. fixedCharCodeAt('\\uD800\\uDC00', 1); // false\n const code = str.charCodeAt(idx);\n\n // High surrogate (could change last hex to 0xDB7F to treat high\n // private surrogates as single characters)\n if (code >= 0xD800 && code <= 0xDBFF) {\n const hi = code;\n const low = str.charCodeAt(idx + 1);\n\n if (isNaN(low)) {\n console.log('High surrogate not followed by low surrogate in fixedCharCodeAt()'); // eslint-disable-line\n }\n\n return ((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000;\n }\n\n if (code >= 0xDC00 && code <= 0xDFFF) { // Low surrogate\n // We return false to allow loops to skip this iteration since should have\n // already handled high surrogate above in the previous iteration\n return -1;\n }\n\n return code;\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport moment from 'moment-timezone';\n\nexport function getBrowserTimezone() {\n return moment.tz.guess();\n}\n\nexport function getBrowserUtcOffset() {\n return moment().utcOffset();\n}\n\nexport function getUtcOffsetForTimeZone(timezone: string) {\n return moment.tz(timezone).utcOffset();\n}\n\nexport function getCurrentDateForTimezone(timezone: string) {\n const tztime = moment().tz(timezone);\n return new Date(tztime.year(), tztime.month(), tztime.date());\n}\n\nexport function getCurrentDateTimeForTimezone(timezone: string) {\n const tztime = moment().tz(timezone);\n return new Date(tztime.year(), tztime.month(), tztime.date(), tztime.hour(), tztime.minute(), tztime.second());\n}\n\nexport function getCurrentMomentForTimezone(timezone?: string) {\n return timezone ? moment.tz(timezone) : moment();\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nconst latinMap: { [key: string]: string } = {\n Á: 'A', // LATIN CAPITAL LETTER A WITH ACUTE\n Ă: 'A', // LATIN CAPITAL LETTER A WITH BREVE\n Ắ: 'A', // LATIN CAPITAL LETTER A WITH BREVE AND ACUTE\n Ặ: 'A', // LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW\n Ằ: 'A', // LATIN CAPITAL LETTER A WITH BREVE AND GRAVE\n Ẳ: 'A', // LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE\n Ẵ: 'A', // LATIN CAPITAL LETTER A WITH BREVE AND TILDE\n Ǎ: 'A', // LATIN CAPITAL LETTER A WITH CARON\n Â: 'A', // LATIN CAPITAL LETTER A WITH CIRCUMFLEX\n Ấ: 'A', // LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE\n Ậ: 'A', // LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW\n Ầ: 'A', // LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE\n Ẩ: 'A', // LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE\n Ẫ: 'A', // LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE\n Ä: 'A', // LATIN CAPITAL LETTER A WITH DIAERESIS\n Ǟ: 'A', // LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON\n Ȧ: 'A', // LATIN CAPITAL LETTER A WITH DOT ABOVE\n Ǡ: 'A', // LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON\n Ạ: 'A', // LATIN CAPITAL LETTER A WITH DOT BELOW\n Ȁ: 'A', // LATIN CAPITAL LETTER A WITH DOUBLE GRAVE\n À: 'A', // LATIN CAPITAL LETTER A WITH GRAVE\n Ả: 'A', // LATIN CAPITAL LETTER A WITH HOOK ABOVE\n Ȃ: 'A', // LATIN CAPITAL LETTER A WITH INVERTED BREVE\n Ā: 'A', // LATIN CAPITAL LETTER A WITH MACRON\n Ą: 'A', // LATIN CAPITAL LETTER A WITH OGONEK\n Å: 'A', // LATIN CAPITAL LETTER A WITH RING ABOVE\n Ǻ: 'A', // LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE\n Ḁ: 'A', // LATIN CAPITAL LETTER A WITH RING BELOW\n Ⱥ: 'A', // LATIN CAPITAL LETTER A WITH STROKE\n Ã: 'A', // LATIN CAPITAL LETTER A WITH TILDE\n Ꜳ: 'AA', // LATIN CAPITAL LETTER AA\n Æ: 'AE', // LATIN CAPITAL LETTER AE\n Ǽ: 'AE', // LATIN CAPITAL LETTER AE WITH ACUTE\n Ǣ: 'AE', // LATIN CAPITAL LETTER AE WITH MACRON\n // CANNOT FIND APPROXIMATION FOR 'LATIN CAPITAL LETTER AFRICAN D' (Ɖ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN CAPITAL LETTER ALPHA' (Ɑ)\n Ꜵ: 'AO', // LATIN CAPITAL LETTER AO\n Ꜷ: 'AU', // LATIN CAPITAL LETTER AU\n Ꜹ: 'AV', // LATIN CAPITAL LETTER AV\n Ꜻ: 'AV', // LATIN CAPITAL LETTER AV WITH HORIZONTAL BAR\n Ꜽ: 'AY', // LATIN CAPITAL LETTER AY\n Ḃ: 'B', // LATIN CAPITAL LETTER B WITH DOT ABOVE\n Ḅ: 'B', // LATIN CAPITAL LETTER B WITH DOT BELOW\n Ɓ: 'B', // LATIN CAPITAL LETTER B WITH HOOK\n Ḇ: 'B', // LATIN CAPITAL LETTER B WITH LINE BELOW\n Ƀ: 'B', // LATIN CAPITAL LETTER B WITH STROKE\n Ƃ: 'B', // LATIN CAPITAL LETTER B WITH TOPBAR\n // CANNOT FIND APPROXIMATION FOR 'LATIN CAPITAL LETTER BROKEN L' (Ꝇ)\n Ć: 'C', // LATIN CAPITAL LETTER C WITH ACUTE\n Č: 'C', // LATIN CAPITAL LETTER C WITH CARON\n Ç: 'C', // LATIN CAPITAL LETTER C WITH CEDILLA\n Ḉ: 'C', // LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE\n Ĉ: 'C', // LATIN CAPITAL LETTER C WITH CIRCUMFLEX\n Ċ: 'C', // LATIN CAPITAL LETTER C WITH DOT ABOVE\n Ƈ: 'C', // LATIN CAPITAL LETTER C WITH HOOK\n Ȼ: 'C', // LATIN CAPITAL LETTER C WITH STROKE\n // CANNOT FIND APPROXIMATION FOR 'LATIN CAPITAL LETTER CON' (Ꝯ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN CAPITAL LETTER CUATRILLO' (Ꜭ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN CAPITAL LETTER CUATRILLO WITH COMMA' (Ꜯ)\n Ď: 'D', // LATIN CAPITAL LETTER D WITH CARON\n Ḑ: 'D', // LATIN CAPITAL LETTER D WITH CEDILLA\n Ḓ: 'D', // LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW\n Ḋ: 'D', // LATIN CAPITAL LETTER D WITH DOT ABOVE\n Ḍ: 'D', // LATIN CAPITAL LETTER D WITH DOT BELOW\n Ɗ: 'D', // LATIN CAPITAL LETTER D WITH HOOK\n Ḏ: 'D', // LATIN CAPITAL LETTER D WITH LINE BELOW\n Dz: 'D', // LATIN CAPITAL LETTER D WITH SMALL LETTER Z\n Dž: 'D', // LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON\n Đ: 'D', // LATIN CAPITAL LETTER D WITH STROKE\n Ƌ: 'D', // LATIN CAPITAL LETTER D WITH TOPBAR\n DZ: 'DZ', // LATIN CAPITAL LETTER DZ\n DŽ: 'DZ', // LATIN CAPITAL LETTER DZ WITH CARON\n É: 'E', // LATIN CAPITAL LETTER E WITH ACUTE\n Ĕ: 'E', // LATIN CAPITAL LETTER E WITH BREVE\n Ě: 'E', // LATIN CAPITAL LETTER E WITH CARON\n Ȩ: 'E', // LATIN CAPITAL LETTER E WITH CEDILLA\n Ḝ: 'E', // LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE\n Ê: 'E', // LATIN CAPITAL LETTER E WITH CIRCUMFLEX\n Ế: 'E', // LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE\n Ệ: 'E', // LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW\n Ề: 'E', // LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE\n Ể: 'E', // LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE\n Ễ: 'E', // LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE\n Ḙ: 'E', // LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW\n Ë: 'E', // LATIN CAPITAL LETTER E WITH DIAERESIS\n Ė: 'E', // LATIN CAPITAL LETTER E WITH DOT ABOVE\n Ẹ: 'E', // LATIN CAPITAL LETTER E WITH DOT BELOW\n Ȅ: 'E', // LATIN CAPITAL LETTER E WITH DOUBLE GRAVE\n È: 'E', // LATIN CAPITAL LETTER E WITH GRAVE\n Ẻ: 'E', // LATIN CAPITAL LETTER E WITH HOOK ABOVE\n Ȇ: 'E', // LATIN CAPITAL LETTER E WITH INVERTED BREVE\n Ē: 'E', // LATIN CAPITAL LETTER E WITH MACRON\n Ḗ: 'E', // LATIN CAPITAL LETTER E WITH MACRON AND ACUTE\n Ḕ: 'E', // LATIN CAPITAL LETTER E WITH MACRON AND GRAVE\n Ę: 'E', // LATIN CAPITAL LETTER E WITH OGONEK\n Ɇ: 'E', // LATIN CAPITAL LETTER E WITH STROKE\n Ẽ: 'E', // LATIN CAPITAL LETTER E WITH TILDE\n Ḛ: 'E', // LATIN CAPITAL LETTER E WITH TILDE BELOW\n // CANNOT FIND APPROXIMATION FOR 'LATIN CAPITAL LETTER EGYPTOLOGICAL AIN' (Ꜥ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF' (Ꜣ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN CAPITAL LETTER ENG' (Ŋ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN CAPITAL LETTER ESH' (Ʃ)\n Ꝫ: 'ET', // LATIN CAPITAL LETTER ET\n // CANNOT FIND APPROXIMATION FOR 'LATIN CAPITAL LETTER ETH' (Ð)\n // CANNOT FIND APPROXIMATION FOR 'LATIN CAPITAL LETTER EZH' (Ʒ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN CAPITAL LETTER EZH REVERSED' (Ƹ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN CAPITAL LETTER EZH WITH CARON' (Ǯ)\n Ḟ: 'F', // LATIN CAPITAL LETTER F WITH DOT ABOVE\n Ƒ: 'F', // LATIN CAPITAL LETTER F WITH HOOK\n Ǵ: 'G', // LATIN CAPITAL LETTER G WITH ACUTE\n Ğ: 'G', // LATIN CAPITAL LETTER G WITH BREVE\n Ǧ: 'G', // LATIN CAPITAL LETTER G WITH CARON\n Ģ: 'G', // LATIN CAPITAL LETTER G WITH CEDILLA\n Ĝ: 'G', // LATIN CAPITAL LETTER G WITH CIRCUMFLEX\n Ġ: 'G', // LATIN CAPITAL LETTER G WITH DOT ABOVE\n Ɠ: 'G', // LATIN CAPITAL LETTER G WITH HOOK\n Ḡ: 'G', // LATIN CAPITAL LETTER G WITH MACRON\n Ǥ: 'G', // LATIN CAPITAL LETTER G WITH STROKE\n // CANNOT FIND APPROXIMATION FOR 'LATIN CAPITAL LETTER GAMMA' (Ɣ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN CAPITAL LETTER GLOTTAL STOP' (Ɂ)\n Ḫ: 'H', // LATIN CAPITAL LETTER H WITH BREVE BELOW\n Ȟ: 'H', // LATIN CAPITAL LETTER H WITH CARON\n Ḩ: 'H', // LATIN CAPITAL LETTER H WITH CEDILLA\n Ĥ: 'H', // LATIN CAPITAL LETTER H WITH CIRCUMFLEX\n Ⱨ: 'H', // LATIN CAPITAL LETTER H WITH DESCENDER\n Ḧ: 'H', // LATIN CAPITAL LETTER H WITH DIAERESIS\n Ḣ: 'H', // LATIN CAPITAL LETTER H WITH DOT ABOVE\n Ḥ: 'H', // LATIN CAPITAL LETTER H WITH DOT BELOW\n Ħ: 'H', // LATIN CAPITAL LETTER H WITH STROKE\n // CANNOT FIND APPROXIMATION FOR 'LATIN CAPITAL LETTER HALF H' (Ⱶ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN CAPITAL LETTER HENG' (Ꜧ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN CAPITAL LETTER HWAIR' (Ƕ)\n Í: 'I', // LATIN CAPITAL LETTER I WITH ACUTE\n Ĭ: 'I', // LATIN CAPITAL LETTER I WITH BREVE\n Ǐ: 'I', // LATIN CAPITAL LETTER I WITH CARON\n Î: 'I', // LATIN CAPITAL LETTER I WITH CIRCUMFLEX\n Ï: 'I', // LATIN CAPITAL LETTER I WITH DIAERESIS\n Ḯ: 'I', // LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE\n İ: 'I', // LATIN CAPITAL LETTER I WITH DOT ABOVE\n Ị: 'I', // LATIN CAPITAL LETTER I WITH DOT BELOW\n Ȉ: 'I', // LATIN CAPITAL LETTER I WITH DOUBLE GRAVE\n Ì: 'I', // LATIN CAPITAL LETTER I WITH GRAVE\n Ỉ: 'I', // LATIN CAPITAL LETTER I WITH HOOK ABOVE\n Ȋ: 'I', // LATIN CAPITAL LETTER I WITH INVERTED BREVE\n Ī: 'I', // LATIN CAPITAL LETTER I WITH MACRON\n Į: 'I', // LATIN CAPITAL LETTER I WITH OGONEK\n Ɨ: 'I', // LATIN CAPITAL LETTER I WITH STROKE\n Ĩ: 'I', // LATIN CAPITAL LETTER I WITH TILDE\n Ḭ: 'I', // LATIN CAPITAL LETTER I WITH TILDE BELOW\n Ꝺ: 'D', // LATIN CAPITAL LETTER INSULAR D\n Ꝼ: 'F', // LATIN CAPITAL LETTER INSULAR F\n Ᵹ: 'G', // LATIN CAPITAL LETTER INSULAR G\n Ꞃ: 'R', // LATIN CAPITAL LETTER INSULAR R\n Ꞅ: 'S', // LATIN CAPITAL LETTER INSULAR S\n Ꞇ: 'T', // LATIN CAPITAL LETTER INSULAR T\n // CANNOT FIND APPROXIMATION FOR 'LATIN CAPITAL LETTER IOTA' (Ɩ)\n Ꝭ: 'IS', // LATIN CAPITAL LETTER IS\n Ĵ: 'J', // LATIN CAPITAL LETTER J WITH CIRCUMFLEX\n Ɉ: 'J', // LATIN CAPITAL LETTER J WITH STROKE\n Ḱ: 'K', // LATIN CAPITAL LETTER K WITH ACUTE\n Ǩ: 'K', // LATIN CAPITAL LETTER K WITH CARON\n Ķ: 'K', // LATIN CAPITAL LETTER K WITH CEDILLA\n Ⱪ: 'K', // LATIN CAPITAL LETTER K WITH DESCENDER\n Ꝃ: 'K', // LATIN CAPITAL LETTER K WITH DIAGONAL STROKE\n Ḳ: 'K', // LATIN CAPITAL LETTER K WITH DOT BELOW\n Ƙ: 'K', // LATIN CAPITAL LETTER K WITH HOOK\n Ḵ: 'K', // LATIN CAPITAL LETTER K WITH LINE BELOW\n Ꝁ: 'K', // LATIN CAPITAL LETTER K WITH STROKE\n Ꝅ: 'K', // LATIN CAPITAL LETTER K WITH STROKE AND DIAGONAL STROKE\n Ĺ: 'L', // LATIN CAPITAL LETTER L WITH ACUTE\n Ƚ: 'L', // LATIN CAPITAL LETTER L WITH BAR\n Ľ: 'L', // LATIN CAPITAL LETTER L WITH CARON\n Ļ: 'L', // LATIN CAPITAL LETTER L WITH CEDILLA\n Ḽ: 'L', // LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW\n Ḷ: 'L', // LATIN CAPITAL LETTER L WITH DOT BELOW\n Ḹ: 'L', // LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON\n Ⱡ: 'L', // LATIN CAPITAL LETTER L WITH DOUBLE BAR\n Ꝉ: 'L', // LATIN CAPITAL LETTER L WITH HIGH STROKE\n Ḻ: 'L', // LATIN CAPITAL LETTER L WITH LINE BELOW\n Ŀ: 'L', // LATIN CAPITAL LETTER L WITH MIDDLE DOT\n Ɫ: 'L', // LATIN CAPITAL LETTER L WITH MIDDLE TILDE\n Lj: 'L', // LATIN CAPITAL LETTER L WITH SMALL LETTER J\n Ł: 'L', // LATIN CAPITAL LETTER L WITH STROKE\n LJ: 'LJ', // LATIN CAPITAL LETTER LJ\n Ḿ: 'M', // LATIN CAPITAL LETTER M WITH ACUTE\n Ṁ: 'M', // LATIN CAPITAL LETTER M WITH DOT ABOVE\n Ṃ: 'M', // LATIN CAPITAL LETTER M WITH DOT BELOW\n Ɱ: 'M', // LATIN CAPITAL LETTER M WITH HOOK\n // CANNOT FIND APPROXIMATION FOR 'LATIN CAPITAL LETTER MIDDLE-WELSH LL' (Ỻ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN CAPITAL LETTER MIDDLE-WELSH V' (Ỽ)\n Ń: 'N', // LATIN CAPITAL LETTER N WITH ACUTE\n Ň: 'N', // LATIN CAPITAL LETTER N WITH CARON\n Ņ: 'N', // LATIN CAPITAL LETTER N WITH CEDILLA\n Ṋ: 'N', // LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW\n Ṅ: 'N', // LATIN CAPITAL LETTER N WITH DOT ABOVE\n Ṇ: 'N', // LATIN CAPITAL LETTER N WITH DOT BELOW\n Ǹ: 'N', // LATIN CAPITAL LETTER N WITH GRAVE\n Ɲ: 'N', // LATIN CAPITAL LETTER N WITH LEFT HOOK\n Ṉ: 'N', // LATIN CAPITAL LETTER N WITH LINE BELOW\n Ƞ: 'N', // LATIN CAPITAL LETTER N WITH LONG RIGHT LEG\n Nj: 'N', // LATIN CAPITAL LETTER N WITH SMALL LETTER J\n Ñ: 'N', // LATIN CAPITAL LETTER N WITH TILDE\n NJ: 'NJ', // LATIN CAPITAL LETTER NJ\n Ó: 'O', // LATIN CAPITAL LETTER O WITH ACUTE\n Ŏ: 'O', // LATIN CAPITAL LETTER O WITH BREVE\n Ǒ: 'O', // LATIN CAPITAL LETTER O WITH CARON\n Ô: 'O', // LATIN CAPITAL LETTER O WITH CIRCUMFLEX\n Ố: 'O', // LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE\n Ộ: 'O', // LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW\n Ồ: 'O', // LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE\n Ổ: 'O', // LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE\n Ỗ: 'O', // LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE\n Ö: 'O', // LATIN CAPITAL LETTER O WITH DIAERESIS\n Ȫ: 'O', // LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON\n Ȯ: 'O', // LATIN CAPITAL LETTER O WITH DOT ABOVE\n Ȱ: 'O', // LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON\n Ọ: 'O', // LATIN CAPITAL LETTER O WITH DOT BELOW\n Ő: 'O', // LATIN CAPITAL LETTER O WITH DOUBLE ACUTE\n Ȍ: 'O', // LATIN CAPITAL LETTER O WITH DOUBLE GRAVE\n Ò: 'O', // LATIN CAPITAL LETTER O WITH GRAVE\n Ỏ: 'O', // LATIN CAPITAL LETTER O WITH HOOK ABOVE\n Ơ: 'O', // LATIN CAPITAL LETTER O WITH HORN\n Ớ: 'O', // LATIN CAPITAL LETTER O WITH HORN AND ACUTE\n Ợ: 'O', // LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW\n Ờ: 'O', // LATIN CAPITAL LETTER O WITH HORN AND GRAVE\n Ở: 'O', // LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE\n Ỡ: 'O', // LATIN CAPITAL LETTER O WITH HORN AND TILDE\n Ȏ: 'O', // LATIN CAPITAL LETTER O WITH INVERTED BREVE\n Ꝋ: 'O', // LATIN CAPITAL LETTER O WITH LONG STROKE OVERLAY\n Ꝍ: 'O', // LATIN CAPITAL LETTER O WITH LOOP\n Ō: 'O', // LATIN CAPITAL LETTER O WITH MACRON\n Ṓ: 'O', // LATIN CAPITAL LETTER O WITH MACRON AND ACUTE\n Ṑ: 'O', // LATIN CAPITAL LETTER O WITH MACRON AND GRAVE\n Ɵ: 'O', // LATIN CAPITAL LETTER O WITH MIDDLE TILDE\n Ǫ: 'O', // LATIN CAPITAL LETTER O WITH OGONEK\n Ǭ: 'O', // LATIN CAPITAL LETTER O WITH OGONEK AND MACRON\n Ø: 'O', // LATIN CAPITAL LETTER O WITH STROKE\n Ǿ: 'O', // LATIN CAPITAL LETTER O WITH STROKE AND ACUTE\n Õ: 'O', // LATIN CAPITAL LETTER O WITH TILDE\n Ṍ: 'O', // LATIN CAPITAL LETTER O WITH TILDE AND ACUTE\n Ṏ: 'O', // LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS\n Ȭ: 'O', // LATIN CAPITAL LETTER O WITH TILDE AND MACRON\n Ƣ: 'OI', // LATIN CAPITAL LETTER OI\n Ꝏ: 'OO', // LATIN CAPITAL LETTER OO\n Ɛ: 'E', // LATIN CAPITAL LETTER OPEN E\n Ɔ: 'O', // LATIN CAPITAL LETTER OPEN O\n Ȣ: 'OU', // LATIN CAPITAL LETTER OU\n Ṕ: 'P', // LATIN CAPITAL LETTER P WITH ACUTE\n Ṗ: 'P', // LATIN CAPITAL LETTER P WITH DOT ABOVE\n Ꝓ: 'P', // LATIN CAPITAL LETTER P WITH FLOURISH\n Ƥ: 'P', // LATIN CAPITAL LETTER P WITH HOOK\n Ꝕ: 'P', // LATIN CAPITAL LETTER P WITH SQUIRREL TAIL\n Ᵽ: 'P', // LATIN CAPITAL LETTER P WITH STROKE\n Ꝑ: 'P', // LATIN CAPITAL LETTER P WITH STROKE THROUGH DESCENDER\n Ꝙ: 'Q', // LATIN CAPITAL LETTER Q WITH DIAGONAL STROKE\n Ꝗ: 'Q', // LATIN CAPITAL LETTER Q WITH STROKE THROUGH DESCENDER\n // CANNOT FIND APPROXIMATION FOR 'LATIN CAPITAL LETTER R ROTUNDA' (Ꝛ)\n Ŕ: 'R', // LATIN CAPITAL LETTER R WITH ACUTE\n Ř: 'R', // LATIN CAPITAL LETTER R WITH CARON\n Ŗ: 'R', // LATIN CAPITAL LETTER R WITH CEDILLA\n Ṙ: 'R', // LATIN CAPITAL LETTER R WITH DOT ABOVE\n Ṛ: 'R', // LATIN CAPITAL LETTER R WITH DOT BELOW\n Ṝ: 'R', // LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON\n Ȑ: 'R', // LATIN CAPITAL LETTER R WITH DOUBLE GRAVE\n Ȓ: 'R', // LATIN CAPITAL LETTER R WITH INVERTED BREVE\n Ṟ: 'R', // LATIN CAPITAL LETTER R WITH LINE BELOW\n Ɍ: 'R', // LATIN CAPITAL LETTER R WITH STROKE\n Ɽ: 'R', // LATIN CAPITAL LETTER R WITH TAIL\n Ꜿ: 'C', // LATIN CAPITAL LETTER REVERSED C WITH DOT\n Ǝ: 'E', // LATIN CAPITAL LETTER REVERSED E\n // CANNOT FIND APPROXIMATION FOR 'LATIN CAPITAL LETTER RUM ROTUNDA' (Ꝝ)\n Ś: 'S', // LATIN CAPITAL LETTER S WITH ACUTE\n Ṥ: 'S', // LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE\n Š: 'S', // LATIN CAPITAL LETTER S WITH CARON\n Ṧ: 'S', // LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE\n Ş: 'S', // LATIN CAPITAL LETTER S WITH CEDILLA\n Ŝ: 'S', // LATIN CAPITAL LETTER S WITH CIRCUMFLEX\n Ș: 'S', // LATIN CAPITAL LETTER S WITH COMMA BELOW\n Ṡ: 'S', // LATIN CAPITAL LETTER S WITH DOT ABOVE\n Ṣ: 'S', // LATIN CAPITAL LETTER S WITH DOT BELOW\n Ṩ: 'S', // LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE\n // CANNOT FIND APPROXIMATION FOR 'LATIN CAPITAL LETTER SALTILLO' (Ꞌ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN CAPITAL LETTER SCHWA' (Ə)\n ẞ: 'SS', // LATIN CAPITAL LETTER SHARP S\n // CANNOT FIND APPROXIMATION FOR 'LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL' (Ɋ)\n Ť: 'T', // LATIN CAPITAL LETTER T WITH CARON\n Ţ: 'T', // LATIN CAPITAL LETTER T WITH CEDILLA\n Ṱ: 'T', // LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW\n Ț: 'T', // LATIN CAPITAL LETTER T WITH COMMA BELOW\n Ⱦ: 'T', // LATIN CAPITAL LETTER T WITH DIAGONAL STROKE\n Ṫ: 'T', // LATIN CAPITAL LETTER T WITH DOT ABOVE\n Ṭ: 'T', // LATIN CAPITAL LETTER T WITH DOT BELOW\n Ƭ: 'T', // LATIN CAPITAL LETTER T WITH HOOK\n Ṯ: 'T', // LATIN CAPITAL LETTER T WITH LINE BELOW\n Ʈ: 'T', // LATIN CAPITAL LETTER T WITH RETROFLEX HOOK\n Ŧ: 'T', // LATIN CAPITAL LETTER T WITH STROKE\n // CANNOT FIND APPROXIMATION FOR 'LATIN CAPITAL LETTER THORN' (Þ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN CAPITAL LETTER THORN WITH STROKE' (Ꝥ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN CAPITAL LETTER THORN WITH STROKE THROUGH DESCENDER' (Ꝧ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN CAPITAL LETTER TONE FIVE' (Ƽ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN CAPITAL LETTER TONE SIX' (Ƅ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN CAPITAL LETTER TONE TWO' (Ƨ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN CAPITAL LETTER TRESILLO' (Ꜫ)\n Ɐ: 'A', // LATIN CAPITAL LETTER TURNED A\n // CANNOT FIND APPROXIMATION FOR 'LATIN CAPITAL LETTER TURNED INSULAR G' (Ꝿ)\n Ꞁ: 'L', // LATIN CAPITAL LETTER TURNED L\n Ɯ: 'M', // LATIN CAPITAL LETTER TURNED M\n Ʌ: 'V', // LATIN CAPITAL LETTER TURNED V\n Ꜩ: 'TZ', // LATIN CAPITAL LETTER TZ\n // CANNOT FIND APPROXIMATION FOR 'LATIN CAPITAL LETTER U BAR' (Ʉ)\n Ú: 'U', // LATIN CAPITAL LETTER U WITH ACUTE\n Ŭ: 'U', // LATIN CAPITAL LETTER U WITH BREVE\n Ǔ: 'U', // LATIN CAPITAL LETTER U WITH CARON\n Û: 'U', // LATIN CAPITAL LETTER U WITH CIRCUMFLEX\n Ṷ: 'U', // LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW\n Ü: 'U', // LATIN CAPITAL LETTER U WITH DIAERESIS\n Ǘ: 'U', // LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE\n Ǚ: 'U', // LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON\n Ǜ: 'U', // LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE\n Ǖ: 'U', // LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON\n Ṳ: 'U', // LATIN CAPITAL LETTER U WITH DIAERESIS BELOW\n Ụ: 'U', // LATIN CAPITAL LETTER U WITH DOT BELOW\n Ű: 'U', // LATIN CAPITAL LETTER U WITH DOUBLE ACUTE\n Ȕ: 'U', // LATIN CAPITAL LETTER U WITH DOUBLE GRAVE\n Ù: 'U', // LATIN CAPITAL LETTER U WITH GRAVE\n Ủ: 'U', // LATIN CAPITAL LETTER U WITH HOOK ABOVE\n Ư: 'U', // LATIN CAPITAL LETTER U WITH HORN\n Ứ: 'U', // LATIN CAPITAL LETTER U WITH HORN AND ACUTE\n Ự: 'U', // LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW\n Ừ: 'U', // LATIN CAPITAL LETTER U WITH HORN AND GRAVE\n Ử: 'U', // LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE\n Ữ: 'U', // LATIN CAPITAL LETTER U WITH HORN AND TILDE\n Ȗ: 'U', // LATIN CAPITAL LETTER U WITH INVERTED BREVE\n Ū: 'U', // LATIN CAPITAL LETTER U WITH MACRON\n Ṻ: 'U', // LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS\n Ų: 'U', // LATIN CAPITAL LETTER U WITH OGONEK\n Ů: 'U', // LATIN CAPITAL LETTER U WITH RING ABOVE\n Ũ: 'U', // LATIN CAPITAL LETTER U WITH TILDE\n Ṹ: 'U', // LATIN CAPITAL LETTER U WITH TILDE AND ACUTE\n Ṵ: 'U', // LATIN CAPITAL LETTER U WITH TILDE BELOW\n // CANNOT FIND APPROXIMATION FOR 'LATIN CAPITAL LETTER UPSILON' (Ʊ)\n Ꝟ: 'V', // LATIN CAPITAL LETTER V WITH DIAGONAL STROKE\n Ṿ: 'V', // LATIN CAPITAL LETTER V WITH DOT BELOW\n Ʋ: 'V', // LATIN CAPITAL LETTER V WITH HOOK\n Ṽ: 'V', // LATIN CAPITAL LETTER V WITH TILDE\n // CANNOT FIND APPROXIMATION FOR 'LATIN CAPITAL LETTER VEND' (Ꝩ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN CAPITAL LETTER VISIGOTHIC Z' (Ꝣ)\n Ꝡ: 'VY', // LATIN CAPITAL LETTER VY\n Ẃ: 'W', // LATIN CAPITAL LETTER W WITH ACUTE\n Ŵ: 'W', // LATIN CAPITAL LETTER W WITH CIRCUMFLEX\n Ẅ: 'W', // LATIN CAPITAL LETTER W WITH DIAERESIS\n Ẇ: 'W', // LATIN CAPITAL LETTER W WITH DOT ABOVE\n Ẉ: 'W', // LATIN CAPITAL LETTER W WITH DOT BELOW\n Ẁ: 'W', // LATIN CAPITAL LETTER W WITH GRAVE\n Ⱳ: 'W', // LATIN CAPITAL LETTER W WITH HOOK\n // CANNOT FIND APPROXIMATION FOR 'LATIN CAPITAL LETTER WYNN' (Ƿ)\n Ẍ: 'X', // LATIN CAPITAL LETTER X WITH DIAERESIS\n Ẋ: 'X', // LATIN CAPITAL LETTER X WITH DOT ABOVE\n Ý: 'Y', // LATIN CAPITAL LETTER Y WITH ACUTE\n Ŷ: 'Y', // LATIN CAPITAL LETTER Y WITH CIRCUMFLEX\n Ÿ: 'Y', // LATIN CAPITAL LETTER Y WITH DIAERESIS\n Ẏ: 'Y', // LATIN CAPITAL LETTER Y WITH DOT ABOVE\n Ỵ: 'Y', // LATIN CAPITAL LETTER Y WITH DOT BELOW\n Ỳ: 'Y', // LATIN CAPITAL LETTER Y WITH GRAVE\n Ƴ: 'Y', // LATIN CAPITAL LETTER Y WITH HOOK\n Ỷ: 'Y', // LATIN CAPITAL LETTER Y WITH HOOK ABOVE\n Ỿ: 'Y', // LATIN CAPITAL LETTER Y WITH LOOP\n Ȳ: 'Y', // LATIN CAPITAL LETTER Y WITH MACRON\n Ɏ: 'Y', // LATIN CAPITAL LETTER Y WITH STROKE\n Ỹ: 'Y', // LATIN CAPITAL LETTER Y WITH TILDE\n // CANNOT FIND APPROXIMATION FOR 'LATIN CAPITAL LETTER YOGH' (Ȝ)\n Ź: 'Z', // LATIN CAPITAL LETTER Z WITH ACUTE\n Ž: 'Z', // LATIN CAPITAL LETTER Z WITH CARON\n Ẑ: 'Z', // LATIN CAPITAL LETTER Z WITH CIRCUMFLEX\n Ⱬ: 'Z', // LATIN CAPITAL LETTER Z WITH DESCENDER\n Ż: 'Z', // LATIN CAPITAL LETTER Z WITH DOT ABOVE\n Ẓ: 'Z', // LATIN CAPITAL LETTER Z WITH DOT BELOW\n Ȥ: 'Z', // LATIN CAPITAL LETTER Z WITH HOOK\n Ẕ: 'Z', // LATIN CAPITAL LETTER Z WITH LINE BELOW\n Ƶ: 'Z', // LATIN CAPITAL LETTER Z WITH STROKE\n IJ: 'IJ', // LATIN CAPITAL LIGATURE IJ\n Œ: 'OE', // LATIN CAPITAL LIGATURE OE\n // CANNOT FIND APPROXIMATION FOR 'LATIN CROSS' (✝)\n // CANNOT FIND APPROXIMATION FOR 'LATIN EPIGRAPHIC LETTER ARCHAIC M' (ꟿ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN EPIGRAPHIC LETTER I LONGA' (ꟾ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN EPIGRAPHIC LETTER INVERTED M' (ꟽ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN EPIGRAPHIC LETTER REVERSED F' (ꟻ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN EPIGRAPHIC LETTER REVERSED P' (ꟼ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN LETTER AIN' (ᴥ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN LETTER ALVEOLAR CLICK' (ǂ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN LETTER BIDENTAL PERCUSSIVE' (ʭ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN LETTER BILABIAL CLICK' (ʘ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN LETTER BILABIAL PERCUSSIVE' (ʬ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN LETTER DENTAL CLICK' (ǀ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN LETTER GLOTTAL STOP' (ʔ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN LETTER GLOTTAL STOP WITH STROKE' (ʡ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN LETTER INVERTED GLOTTAL STOP' (ʖ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE' (ƾ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN LETTER LATERAL CLICK' (ǁ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN LETTER PHARYNGEAL VOICED FRICATIVE' (ʕ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN LETTER RETROFLEX CLICK' (ǃ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN LETTER REVERSED ESH LOOP' (ƪ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE' (ʢ)\n ᴀ: 'A', // LATIN LETTER SMALL CAPITAL A\n ᴁ: 'AE', // LATIN LETTER SMALL CAPITAL AE\n ʙ: 'B', // LATIN LETTER SMALL CAPITAL B\n ᴃ: 'B', // LATIN LETTER SMALL CAPITAL BARRED B\n ᴄ: 'C', // LATIN LETTER SMALL CAPITAL C\n ᴅ: 'D', // LATIN LETTER SMALL CAPITAL D\n ᴇ: 'E', // LATIN LETTER SMALL CAPITAL E\n // CANNOT FIND APPROXIMATION FOR 'LATIN LETTER SMALL CAPITAL ETH' (ᴆ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN LETTER SMALL CAPITAL EZH' (ᴣ)\n ꜰ: 'F', // LATIN LETTER SMALL CAPITAL F\n ɢ: 'G', // LATIN LETTER SMALL CAPITAL G\n ʛ: 'G', // LATIN LETTER SMALL CAPITAL G WITH HOOK\n ʜ: 'H', // LATIN LETTER SMALL CAPITAL H\n ɪ: 'I', // LATIN LETTER SMALL CAPITAL I\n ʁ: 'R', // LATIN LETTER SMALL CAPITAL INVERTED R\n ᴊ: 'J', // LATIN LETTER SMALL CAPITAL J\n ᴋ: 'K', // LATIN LETTER SMALL CAPITAL K\n ʟ: 'L', // LATIN LETTER SMALL CAPITAL L\n ᴌ: 'L', // LATIN LETTER SMALL CAPITAL L WITH STROKE\n ᴍ: 'M', // LATIN LETTER SMALL CAPITAL M\n ɴ: 'N', // LATIN LETTER SMALL CAPITAL N\n ᴏ: 'O', // LATIN LETTER SMALL CAPITAL O\n ɶ: 'OE', // LATIN LETTER SMALL CAPITAL OE\n ᴐ: 'O', // LATIN LETTER SMALL CAPITAL OPEN O\n ᴕ: 'OU', // LATIN LETTER SMALL CAPITAL OU\n ᴘ: 'P', // LATIN LETTER SMALL CAPITAL P\n ʀ: 'R', // LATIN LETTER SMALL CAPITAL R\n ᴎ: 'N', // LATIN LETTER SMALL CAPITAL REVERSED N\n ᴙ: 'R', // LATIN LETTER SMALL CAPITAL REVERSED R\n // CANNOT FIND APPROXIMATION FOR 'LATIN LETTER SMALL CAPITAL RUM' (ꝶ)\n ꜱ: 'S', // LATIN LETTER SMALL CAPITAL S\n ᴛ: 'T', // LATIN LETTER SMALL CAPITAL T\n ⱻ: 'E', // LATIN LETTER SMALL CAPITAL TURNED E\n ᴚ: 'R', // LATIN LETTER SMALL CAPITAL TURNED R\n ᴜ: 'U', // LATIN LETTER SMALL CAPITAL U\n ᴠ: 'V', // LATIN LETTER SMALL CAPITAL V\n ᴡ: 'W', // LATIN LETTER SMALL CAPITAL W\n ʏ: 'Y', // LATIN LETTER SMALL CAPITAL Y\n ᴢ: 'Z', // LATIN LETTER SMALL CAPITAL Z\n // CANNOT FIND APPROXIMATION FOR 'LATIN LETTER STRETCHED C' (ʗ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN LETTER TWO WITH STROKE' (ƻ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN LETTER VOICED LARYNGEAL SPIRANT' (ᴤ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN LETTER WYNN' (ƿ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN LETTER YR' (Ʀ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL CAPITAL LETTER I WITH STROKE' (ᵻ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL CAPITAL LETTER U WITH STROKE' (ᵾ)\n á: 'a', // LATIN SMALL LETTER A WITH ACUTE\n ă: 'a', // LATIN SMALL LETTER A WITH BREVE\n ắ: 'a', // LATIN SMALL LETTER A WITH BREVE AND ACUTE\n ặ: 'a', // LATIN SMALL LETTER A WITH BREVE AND DOT BELOW\n ằ: 'a', // LATIN SMALL LETTER A WITH BREVE AND GRAVE\n ẳ: 'a', // LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE\n ẵ: 'a', // LATIN SMALL LETTER A WITH BREVE AND TILDE\n ǎ: 'a', // LATIN SMALL LETTER A WITH CARON\n â: 'a', // LATIN SMALL LETTER A WITH CIRCUMFLEX\n ấ: 'a', // LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE\n ậ: 'a', // LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW\n ầ: 'a', // LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE\n ẩ: 'a', // LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE\n ẫ: 'a', // LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE\n ä: 'a', // LATIN SMALL LETTER A WITH DIAERESIS\n ǟ: 'a', // LATIN SMALL LETTER A WITH DIAERESIS AND MACRON\n ȧ: 'a', // LATIN SMALL LETTER A WITH DOT ABOVE\n ǡ: 'a', // LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON\n ạ: 'a', // LATIN SMALL LETTER A WITH DOT BELOW\n ȁ: 'a', // LATIN SMALL LETTER A WITH DOUBLE GRAVE\n à: 'a', // LATIN SMALL LETTER A WITH GRAVE\n ả: 'a', // LATIN SMALL LETTER A WITH HOOK ABOVE\n ȃ: 'a', // LATIN SMALL LETTER A WITH INVERTED BREVE\n ā: 'a', // LATIN SMALL LETTER A WITH MACRON\n ą: 'a', // LATIN SMALL LETTER A WITH OGONEK\n ᶏ: 'a', // LATIN SMALL LETTER A WITH RETROFLEX HOOK\n ẚ: 'a', // LATIN SMALL LETTER A WITH RIGHT HALF RING\n å: 'a', // LATIN SMALL LETTER A WITH RING ABOVE\n ǻ: 'a', // LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE\n ḁ: 'a', // LATIN SMALL LETTER A WITH RING BELOW\n ⱥ: 'a', // LATIN SMALL LETTER A WITH STROKE\n ã: 'a', // LATIN SMALL LETTER A WITH TILDE\n ꜳ: 'aa', // LATIN SMALL LETTER AA\n æ: 'ae', // LATIN SMALL LETTER AE\n ǽ: 'ae', // LATIN SMALL LETTER AE WITH ACUTE\n ǣ: 'ae', // LATIN SMALL LETTER AE WITH MACRON\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER ALPHA' (ɑ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER ALPHA WITH RETROFLEX HOOK' (ᶐ)\n ꜵ: 'ao', // LATIN SMALL LETTER AO\n ꜷ: 'au', // LATIN SMALL LETTER AU\n ꜹ: 'av', // LATIN SMALL LETTER AV\n ꜻ: 'av', // LATIN SMALL LETTER AV WITH HORIZONTAL BAR\n ꜽ: 'ay', // LATIN SMALL LETTER AY\n ḃ: 'b', // LATIN SMALL LETTER B WITH DOT ABOVE\n ḅ: 'b', // LATIN SMALL LETTER B WITH DOT BELOW\n ɓ: 'b', // LATIN SMALL LETTER B WITH HOOK\n ḇ: 'b', // LATIN SMALL LETTER B WITH LINE BELOW\n ᵬ: 'b', // LATIN SMALL LETTER B WITH MIDDLE TILDE\n ᶀ: 'b', // LATIN SMALL LETTER B WITH PALATAL HOOK\n ƀ: 'b', // LATIN SMALL LETTER B WITH STROKE\n ƃ: 'b', // LATIN SMALL LETTER B WITH TOPBAR\n ɵ: 'o', // LATIN SMALL LETTER BARRED O\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER BOTTOM HALF O' (ᴗ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER BROKEN L' (ꝇ)\n ć: 'c', // LATIN SMALL LETTER C WITH ACUTE\n č: 'c', // LATIN SMALL LETTER C WITH CARON\n ç: 'c', // LATIN SMALL LETTER C WITH CEDILLA\n ḉ: 'c', // LATIN SMALL LETTER C WITH CEDILLA AND ACUTE\n ĉ: 'c', // LATIN SMALL LETTER C WITH CIRCUMFLEX\n ɕ: 'c', // LATIN SMALL LETTER C WITH CURL\n ċ: 'c', // LATIN SMALL LETTER C WITH DOT ABOVE\n ƈ: 'c', // LATIN SMALL LETTER C WITH HOOK\n ȼ: 'c', // LATIN SMALL LETTER C WITH STROKE\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER CLOSED OMEGA' (ɷ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER CLOSED OPEN E' (ʚ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER CLOSED REVERSED OPEN E' (ɞ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER CON' (ꝯ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER CUATRILLO' (ꜭ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER CUATRILLO WITH COMMA' (ꜯ)\n ď: 'd', // LATIN SMALL LETTER D WITH CARON\n ḑ: 'd', // LATIN SMALL LETTER D WITH CEDILLA\n ḓ: 'd', // LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW\n ȡ: 'd', // LATIN SMALL LETTER D WITH CURL\n ḋ: 'd', // LATIN SMALL LETTER D WITH DOT ABOVE\n ḍ: 'd', // LATIN SMALL LETTER D WITH DOT BELOW\n ɗ: 'd', // LATIN SMALL LETTER D WITH HOOK\n ᶑ: 'd', // LATIN SMALL LETTER D WITH HOOK AND TAIL\n ḏ: 'd', // LATIN SMALL LETTER D WITH LINE BELOW\n ᵭ: 'd', // LATIN SMALL LETTER D WITH MIDDLE TILDE\n ᶁ: 'd', // LATIN SMALL LETTER D WITH PALATAL HOOK\n đ: 'd', // LATIN SMALL LETTER D WITH STROKE\n ɖ: 'd', // LATIN SMALL LETTER D WITH TAIL\n ƌ: 'd', // LATIN SMALL LETTER D WITH TOPBAR\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER DB DIGRAPH' (ȸ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER DELTA' (ẟ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER DEZH DIGRAPH' (ʤ)\n ı: 'i', // LATIN SMALL LETTER DOTLESS I\n ȷ: 'j', // LATIN SMALL LETTER DOTLESS J\n ɟ: 'j', // LATIN SMALL LETTER DOTLESS J WITH STROKE\n ʄ: 'j', // LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER DUM' (ꝱ)\n dz: 'dz', // LATIN SMALL LETTER DZ\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER DZ DIGRAPH' (ʣ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER DZ DIGRAPH WITH CURL' (ʥ)\n dž: 'dz', // LATIN SMALL LETTER DZ WITH CARON\n é: 'e', // LATIN SMALL LETTER E WITH ACUTE\n ĕ: 'e', // LATIN SMALL LETTER E WITH BREVE\n ě: 'e', // LATIN SMALL LETTER E WITH CARON\n ȩ: 'e', // LATIN SMALL LETTER E WITH CEDILLA\n ḝ: 'e', // LATIN SMALL LETTER E WITH CEDILLA AND BREVE\n ê: 'e', // LATIN SMALL LETTER E WITH CIRCUMFLEX\n ế: 'e', // LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE\n ệ: 'e', // LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW\n ề: 'e', // LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE\n ể: 'e', // LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE\n ễ: 'e', // LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE\n ḙ: 'e', // LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW\n ë: 'e', // LATIN SMALL LETTER E WITH DIAERESIS\n ė: 'e', // LATIN SMALL LETTER E WITH DOT ABOVE\n ẹ: 'e', // LATIN SMALL LETTER E WITH DOT BELOW\n ȅ: 'e', // LATIN SMALL LETTER E WITH DOUBLE GRAVE\n è: 'e', // LATIN SMALL LETTER E WITH GRAVE\n ẻ: 'e', // LATIN SMALL LETTER E WITH HOOK ABOVE\n ȇ: 'e', // LATIN SMALL LETTER E WITH INVERTED BREVE\n ē: 'e', // LATIN SMALL LETTER E WITH MACRON\n ḗ: 'e', // LATIN SMALL LETTER E WITH MACRON AND ACUTE\n ḕ: 'e', // LATIN SMALL LETTER E WITH MACRON AND GRAVE\n ⱸ: 'e', // LATIN SMALL LETTER E WITH NOTCH\n ę: 'e', // LATIN SMALL LETTER E WITH OGONEK\n ᶒ: 'e', // LATIN SMALL LETTER E WITH RETROFLEX HOOK\n ɇ: 'e', // LATIN SMALL LETTER E WITH STROKE\n ẽ: 'e', // LATIN SMALL LETTER E WITH TILDE\n ḛ: 'e', // LATIN SMALL LETTER E WITH TILDE BELOW\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER EGYPTOLOGICAL AIN' (ꜥ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER EGYPTOLOGICAL ALEF' (ꜣ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER ENG' (ŋ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER ESH' (ʃ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER ESH WITH CURL' (ʆ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER ESH WITH PALATAL HOOK' (ᶋ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER ESH WITH RETROFLEX HOOK' (ᶘ)\n ꝫ: 'et', // LATIN SMALL LETTER ET\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER ETH' (ð)\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER EZH' (ʒ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER EZH REVERSED' (ƹ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER EZH WITH CARON' (ǯ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER EZH WITH CURL' (ʓ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER EZH WITH RETROFLEX HOOK' (ᶚ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER EZH WITH TAIL' (ƺ)\n ḟ: 'f', // LATIN SMALL LETTER F WITH DOT ABOVE\n ƒ: 'f', // LATIN SMALL LETTER F WITH HOOK\n ᵮ: 'f', // LATIN SMALL LETTER F WITH MIDDLE TILDE\n ᶂ: 'f', // LATIN SMALL LETTER F WITH PALATAL HOOK\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER FENG DIGRAPH' (ʩ)\n ǵ: 'g', // LATIN SMALL LETTER G WITH ACUTE\n ğ: 'g', // LATIN SMALL LETTER G WITH BREVE\n ǧ: 'g', // LATIN SMALL LETTER G WITH CARON\n ģ: 'g', // LATIN SMALL LETTER G WITH CEDILLA\n ĝ: 'g', // LATIN SMALL LETTER G WITH CIRCUMFLEX\n ġ: 'g', // LATIN SMALL LETTER G WITH DOT ABOVE\n ɠ: 'g', // LATIN SMALL LETTER G WITH HOOK\n ḡ: 'g', // LATIN SMALL LETTER G WITH MACRON\n ᶃ: 'g', // LATIN SMALL LETTER G WITH PALATAL HOOK\n ǥ: 'g', // LATIN SMALL LETTER G WITH STROKE\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER GAMMA' (ɣ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER GLOTTAL STOP' (ɂ)\n ḫ: 'h', // LATIN SMALL LETTER H WITH BREVE BELOW\n ȟ: 'h', // LATIN SMALL LETTER H WITH CARON\n ḩ: 'h', // LATIN SMALL LETTER H WITH CEDILLA\n ĥ: 'h', // LATIN SMALL LETTER H WITH CIRCUMFLEX\n ⱨ: 'h', // LATIN SMALL LETTER H WITH DESCENDER\n ḧ: 'h', // LATIN SMALL LETTER H WITH DIAERESIS\n ḣ: 'h', // LATIN SMALL LETTER H WITH DOT ABOVE\n ḥ: 'h', // LATIN SMALL LETTER H WITH DOT BELOW\n ɦ: 'h', // LATIN SMALL LETTER H WITH HOOK\n ẖ: 'h', // LATIN SMALL LETTER H WITH LINE BELOW\n ħ: 'h', // LATIN SMALL LETTER H WITH STROKE\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER HALF H' (ⱶ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER HENG' (ꜧ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER HENG WITH HOOK' (ɧ)\n ƕ: 'hv', // LATIN SMALL LETTER HV\n í: 'i', // LATIN SMALL LETTER I WITH ACUTE\n ĭ: 'i', // LATIN SMALL LETTER I WITH BREVE\n ǐ: 'i', // LATIN SMALL LETTER I WITH CARON\n î: 'i', // LATIN SMALL LETTER I WITH CIRCUMFLEX\n ï: 'i', // LATIN SMALL LETTER I WITH DIAERESIS\n ḯ: 'i', // LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE\n ị: 'i', // LATIN SMALL LETTER I WITH DOT BELOW\n ȉ: 'i', // LATIN SMALL LETTER I WITH DOUBLE GRAVE\n ì: 'i', // LATIN SMALL LETTER I WITH GRAVE\n ỉ: 'i', // LATIN SMALL LETTER I WITH HOOK ABOVE\n ȋ: 'i', // LATIN SMALL LETTER I WITH INVERTED BREVE\n ī: 'i', // LATIN SMALL LETTER I WITH MACRON\n į: 'i', // LATIN SMALL LETTER I WITH OGONEK\n ᶖ: 'i', // LATIN SMALL LETTER I WITH RETROFLEX HOOK\n ɨ: 'i', // LATIN SMALL LETTER I WITH STROKE\n ĩ: 'i', // LATIN SMALL LETTER I WITH TILDE\n ḭ: 'i', // LATIN SMALL LETTER I WITH TILDE BELOW\n ꝺ: 'd', // LATIN SMALL LETTER INSULAR D\n ꝼ: 'f', // LATIN SMALL LETTER INSULAR F\n ᵹ: 'g', // LATIN SMALL LETTER INSULAR G\n ꞃ: 'r', // LATIN SMALL LETTER INSULAR R\n ꞅ: 's', // LATIN SMALL LETTER INSULAR S\n ꞇ: 't', // LATIN SMALL LETTER INSULAR T\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER IOTA' (ɩ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER IOTA WITH STROKE' (ᵼ)\n ꝭ: 'is', // LATIN SMALL LETTER IS\n ǰ: 'j', // LATIN SMALL LETTER J WITH CARON\n ĵ: 'j', // LATIN SMALL LETTER J WITH CIRCUMFLEX\n ʝ: 'j', // LATIN SMALL LETTER J WITH CROSSED-TAIL\n ɉ: 'j', // LATIN SMALL LETTER J WITH STROKE\n ḱ: 'k', // LATIN SMALL LETTER K WITH ACUTE\n ǩ: 'k', // LATIN SMALL LETTER K WITH CARON\n ķ: 'k', // LATIN SMALL LETTER K WITH CEDILLA\n ⱪ: 'k', // LATIN SMALL LETTER K WITH DESCENDER\n ꝃ: 'k', // LATIN SMALL LETTER K WITH DIAGONAL STROKE\n ḳ: 'k', // LATIN SMALL LETTER K WITH DOT BELOW\n ƙ: 'k', // LATIN SMALL LETTER K WITH HOOK\n ḵ: 'k', // LATIN SMALL LETTER K WITH LINE BELOW\n ᶄ: 'k', // LATIN SMALL LETTER K WITH PALATAL HOOK\n ꝁ: 'k', // LATIN SMALL LETTER K WITH STROKE\n ꝅ: 'k', // LATIN SMALL LETTER K WITH STROKE AND DIAGONAL STROKE\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER KRA' (ĸ)\n ĺ: 'l', // LATIN SMALL LETTER L WITH ACUTE\n ƚ: 'l', // LATIN SMALL LETTER L WITH BAR\n ɬ: 'l', // LATIN SMALL LETTER L WITH BELT\n ľ: 'l', // LATIN SMALL LETTER L WITH CARON\n ļ: 'l', // LATIN SMALL LETTER L WITH CEDILLA\n ḽ: 'l', // LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW\n ȴ: 'l', // LATIN SMALL LETTER L WITH CURL\n ḷ: 'l', // LATIN SMALL LETTER L WITH DOT BELOW\n ḹ: 'l', // LATIN SMALL LETTER L WITH DOT BELOW AND MACRON\n ⱡ: 'l', // LATIN SMALL LETTER L WITH DOUBLE BAR\n ꝉ: 'l', // LATIN SMALL LETTER L WITH HIGH STROKE\n ḻ: 'l', // LATIN SMALL LETTER L WITH LINE BELOW\n ŀ: 'l', // LATIN SMALL LETTER L WITH MIDDLE DOT\n ɫ: 'l', // LATIN SMALL LETTER L WITH MIDDLE TILDE\n ᶅ: 'l', // LATIN SMALL LETTER L WITH PALATAL HOOK\n ɭ: 'l', // LATIN SMALL LETTER L WITH RETROFLEX HOOK\n ł: 'l', // LATIN SMALL LETTER L WITH STROKE\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER LAMBDA WITH STROKE' (ƛ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER LEZH' (ɮ)\n lj: 'lj', // LATIN SMALL LETTER LJ\n ſ: 's', // LATIN SMALL LETTER LONG S\n ẜ: 's', // LATIN SMALL LETTER LONG S WITH DIAGONAL STROKE\n ẛ: 's', // LATIN SMALL LETTER LONG S WITH DOT ABOVE\n ẝ: 's', // LATIN SMALL LETTER LONG S WITH HIGH STROKE\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER LS DIGRAPH' (ʪ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER LUM' (ꝲ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER LZ DIGRAPH' (ʫ)\n ḿ: 'm', // LATIN SMALL LETTER M WITH ACUTE\n ṁ: 'm', // LATIN SMALL LETTER M WITH DOT ABOVE\n ṃ: 'm', // LATIN SMALL LETTER M WITH DOT BELOW\n ɱ: 'm', // LATIN SMALL LETTER M WITH HOOK\n ᵯ: 'm', // LATIN SMALL LETTER M WITH MIDDLE TILDE\n ᶆ: 'm', // LATIN SMALL LETTER M WITH PALATAL HOOK\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER MIDDLE-WELSH LL' (ỻ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER MIDDLE-WELSH V' (ỽ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER MUM' (ꝳ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER N PRECEDED BY APOSTROPHE' (ʼn)\n ń: 'n', // LATIN SMALL LETTER N WITH ACUTE\n ň: 'n', // LATIN SMALL LETTER N WITH CARON\n ņ: 'n', // LATIN SMALL LETTER N WITH CEDILLA\n ṋ: 'n', // LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW\n ȵ: 'n', // LATIN SMALL LETTER N WITH CURL\n ṅ: 'n', // LATIN SMALL LETTER N WITH DOT ABOVE\n ṇ: 'n', // LATIN SMALL LETTER N WITH DOT BELOW\n ǹ: 'n', // LATIN SMALL LETTER N WITH GRAVE\n ɲ: 'n', // LATIN SMALL LETTER N WITH LEFT HOOK\n ṉ: 'n', // LATIN SMALL LETTER N WITH LINE BELOW\n ƞ: 'n', // LATIN SMALL LETTER N WITH LONG RIGHT LEG\n ᵰ: 'n', // LATIN SMALL LETTER N WITH MIDDLE TILDE\n ᶇ: 'n', // LATIN SMALL LETTER N WITH PALATAL HOOK\n ɳ: 'n', // LATIN SMALL LETTER N WITH RETROFLEX HOOK\n ñ: 'n', // LATIN SMALL LETTER N WITH TILDE\n nj: 'nj', // LATIN SMALL LETTER NJ\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER NUM' (ꝴ)\n ó: 'o', // LATIN SMALL LETTER O WITH ACUTE\n ŏ: 'o', // LATIN SMALL LETTER O WITH BREVE\n ǒ: 'o', // LATIN SMALL LETTER O WITH CARON\n ô: 'o', // LATIN SMALL LETTER O WITH CIRCUMFLEX\n ố: 'o', // LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE\n ộ: 'o', // LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW\n ồ: 'o', // LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE\n ổ: 'o', // LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE\n ỗ: 'o', // LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE\n ö: 'o', // LATIN SMALL LETTER O WITH DIAERESIS\n ȫ: 'o', // LATIN SMALL LETTER O WITH DIAERESIS AND MACRON\n ȯ: 'o', // LATIN SMALL LETTER O WITH DOT ABOVE\n ȱ: 'o', // LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON\n ọ: 'o', // LATIN SMALL LETTER O WITH DOT BELOW\n ő: 'o', // LATIN SMALL LETTER O WITH DOUBLE ACUTE\n ȍ: 'o', // LATIN SMALL LETTER O WITH DOUBLE GRAVE\n ò: 'o', // LATIN SMALL LETTER O WITH GRAVE\n ỏ: 'o', // LATIN SMALL LETTER O WITH HOOK ABOVE\n ơ: 'o', // LATIN SMALL LETTER O WITH HORN\n ớ: 'o', // LATIN SMALL LETTER O WITH HORN AND ACUTE\n ợ: 'o', // LATIN SMALL LETTER O WITH HORN AND DOT BELOW\n ờ: 'o', // LATIN SMALL LETTER O WITH HORN AND GRAVE\n ở: 'o', // LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE\n ỡ: 'o', // LATIN SMALL LETTER O WITH HORN AND TILDE\n ȏ: 'o', // LATIN SMALL LETTER O WITH INVERTED BREVE\n ꝋ: 'o', // LATIN SMALL LETTER O WITH LONG STROKE OVERLAY\n ꝍ: 'o', // LATIN SMALL LETTER O WITH LOOP\n ⱺ: 'o', // LATIN SMALL LETTER O WITH LOW RING INSIDE\n ō: 'o', // LATIN SMALL LETTER O WITH MACRON\n ṓ: 'o', // LATIN SMALL LETTER O WITH MACRON AND ACUTE\n ṑ: 'o', // LATIN SMALL LETTER O WITH MACRON AND GRAVE\n ǫ: 'o', // LATIN SMALL LETTER O WITH OGONEK\n ǭ: 'o', // LATIN SMALL LETTER O WITH OGONEK AND MACRON\n ø: 'o', // LATIN SMALL LETTER O WITH STROKE\n ǿ: 'o', // LATIN SMALL LETTER O WITH STROKE AND ACUTE\n õ: 'o', // LATIN SMALL LETTER O WITH TILDE\n ṍ: 'o', // LATIN SMALL LETTER O WITH TILDE AND ACUTE\n ṏ: 'o', // LATIN SMALL LETTER O WITH TILDE AND DIAERESIS\n ȭ: 'o', // LATIN SMALL LETTER O WITH TILDE AND MACRON\n ƣ: 'oi', // LATIN SMALL LETTER OI\n ꝏ: 'oo', // LATIN SMALL LETTER OO\n ɛ: 'e', // LATIN SMALL LETTER OPEN E\n ᶓ: 'e', // LATIN SMALL LETTER OPEN E WITH RETROFLEX HOOK\n ɔ: 'o', // LATIN SMALL LETTER OPEN O\n ᶗ: 'o', // LATIN SMALL LETTER OPEN O WITH RETROFLEX HOOK\n ȣ: 'ou', // LATIN SMALL LETTER OU\n ṕ: 'p', // LATIN SMALL LETTER P WITH ACUTE\n ṗ: 'p', // LATIN SMALL LETTER P WITH DOT ABOVE\n ꝓ: 'p', // LATIN SMALL LETTER P WITH FLOURISH\n ƥ: 'p', // LATIN SMALL LETTER P WITH HOOK\n ᵱ: 'p', // LATIN SMALL LETTER P WITH MIDDLE TILDE\n ᶈ: 'p', // LATIN SMALL LETTER P WITH PALATAL HOOK\n ꝕ: 'p', // LATIN SMALL LETTER P WITH SQUIRREL TAIL\n ᵽ: 'p', // LATIN SMALL LETTER P WITH STROKE\n ꝑ: 'p', // LATIN SMALL LETTER P WITH STROKE THROUGH DESCENDER\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER PHI' (ɸ)\n ꝙ: 'q', // LATIN SMALL LETTER Q WITH DIAGONAL STROKE\n ʠ: 'q', // LATIN SMALL LETTER Q WITH HOOK\n ɋ: 'q', // LATIN SMALL LETTER Q WITH HOOK TAIL\n ꝗ: 'q', // LATIN SMALL LETTER Q WITH STROKE THROUGH DESCENDER\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER QP DIGRAPH' (ȹ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER R ROTUNDA' (ꝛ)\n ŕ: 'r', // LATIN SMALL LETTER R WITH ACUTE\n ř: 'r', // LATIN SMALL LETTER R WITH CARON\n ŗ: 'r', // LATIN SMALL LETTER R WITH CEDILLA\n ṙ: 'r', // LATIN SMALL LETTER R WITH DOT ABOVE\n ṛ: 'r', // LATIN SMALL LETTER R WITH DOT BELOW\n ṝ: 'r', // LATIN SMALL LETTER R WITH DOT BELOW AND MACRON\n ȑ: 'r', // LATIN SMALL LETTER R WITH DOUBLE GRAVE\n ɾ: 'r', // LATIN SMALL LETTER R WITH FISHHOOK\n ᵳ: 'r', // LATIN SMALL LETTER R WITH FISHHOOK AND MIDDLE TILDE\n ȓ: 'r', // LATIN SMALL LETTER R WITH INVERTED BREVE\n ṟ: 'r', // LATIN SMALL LETTER R WITH LINE BELOW\n ɼ: 'r', // LATIN SMALL LETTER R WITH LONG LEG\n ᵲ: 'r', // LATIN SMALL LETTER R WITH MIDDLE TILDE\n ᶉ: 'r', // LATIN SMALL LETTER R WITH PALATAL HOOK\n ɍ: 'r', // LATIN SMALL LETTER R WITH STROKE\n ɽ: 'r', // LATIN SMALL LETTER R WITH TAIL\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER RAMS HORN' (ɤ)\n ↄ: 'c', // LATIN SMALL LETTER REVERSED C\n ꜿ: 'c', // LATIN SMALL LETTER REVERSED C WITH DOT\n ɘ: 'e', // LATIN SMALL LETTER REVERSED E\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER REVERSED OPEN E' (ɜ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER REVERSED OPEN E WITH HOOK' (ɝ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER REVERSED OPEN E WITH RETROFLEX HOOK' (ᶔ)\n ɿ: 'r', // LATIN SMALL LETTER REVERSED R WITH FISHHOOK\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER RUM' (ꝵ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER RUM ROTUNDA' (ꝝ)\n ś: 's', // LATIN SMALL LETTER S WITH ACUTE\n ṥ: 's', // LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE\n š: 's', // LATIN SMALL LETTER S WITH CARON\n ṧ: 's', // LATIN SMALL LETTER S WITH CARON AND DOT ABOVE\n ş: 's', // LATIN SMALL LETTER S WITH CEDILLA\n ŝ: 's', // LATIN SMALL LETTER S WITH CIRCUMFLEX\n ș: 's', // LATIN SMALL LETTER S WITH COMMA BELOW\n ṡ: 's', // LATIN SMALL LETTER S WITH DOT ABOVE\n ṣ: 's', // LATIN SMALL LETTER S WITH DOT BELOW\n ṩ: 's', // LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE\n ʂ: 's', // LATIN SMALL LETTER S WITH HOOK\n ᵴ: 's', // LATIN SMALL LETTER S WITH MIDDLE TILDE\n ᶊ: 's', // LATIN SMALL LETTER S WITH PALATAL HOOK\n ȿ: 's', // LATIN SMALL LETTER S WITH SWASH TAIL\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER SALTILLO' (ꞌ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER SCHWA' (ə)\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER SCHWA WITH HOOK' (ɚ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER SCHWA WITH RETROFLEX HOOK' (ᶕ)\n ɡ: 'g', // LATIN SMALL LETTER SCRIPT G\n ß: 'ss', // LATIN SMALL LETTER SHARP S\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER SIDEWAYS DIAERESIZED U' (ᴞ)\n ᴑ: 'o', // LATIN SMALL LETTER SIDEWAYS O\n ᴓ: 'o', // LATIN SMALL LETTER SIDEWAYS O WITH STROKE\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER SIDEWAYS OPEN O' (ᴒ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER SIDEWAYS TURNED M' (ᴟ)\n ᴝ: 'u', // LATIN SMALL LETTER SIDEWAYS U\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER SQUAT REVERSED ESH' (ʅ)\n ť: 't', // LATIN SMALL LETTER T WITH CARON\n ţ: 't', // LATIN SMALL LETTER T WITH CEDILLA\n ṱ: 't', // LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW\n ț: 't', // LATIN SMALL LETTER T WITH COMMA BELOW\n ȶ: 't', // LATIN SMALL LETTER T WITH CURL\n ẗ: 't', // LATIN SMALL LETTER T WITH DIAERESIS\n ⱦ: 't', // LATIN SMALL LETTER T WITH DIAGONAL STROKE\n ṫ: 't', // LATIN SMALL LETTER T WITH DOT ABOVE\n ṭ: 't', // LATIN SMALL LETTER T WITH DOT BELOW\n ƭ: 't', // LATIN SMALL LETTER T WITH HOOK\n ṯ: 't', // LATIN SMALL LETTER T WITH LINE BELOW\n ᵵ: 't', // LATIN SMALL LETTER T WITH MIDDLE TILDE\n ƫ: 't', // LATIN SMALL LETTER T WITH PALATAL HOOK\n ʈ: 't', // LATIN SMALL LETTER T WITH RETROFLEX HOOK\n ŧ: 't', // LATIN SMALL LETTER T WITH STROKE\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER TAILLESS PHI' (ⱷ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER TC DIGRAPH WITH CURL' (ʨ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER TESH DIGRAPH' (ʧ)\n ᵺ: 'th', // LATIN SMALL LETTER TH WITH STRIKETHROUGH\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER THORN' (þ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER THORN WITH STROKE' (ꝥ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER THORN WITH STROKE THROUGH DESCENDER' (ꝧ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER TONE FIVE' (ƽ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER TONE SIX' (ƅ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER TONE TWO' (ƨ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER TOP HALF O' (ᴖ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER TRESILLO' (ꜫ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER TS DIGRAPH' (ʦ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER TUM' (ꝷ)\n ɐ: 'a', // LATIN SMALL LETTER TURNED A\n ᴂ: 'ae', // LATIN SMALL LETTER TURNED AE\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER TURNED ALPHA' (ɒ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER TURNED DELTA' (ƍ)\n ǝ: 'e', // LATIN SMALL LETTER TURNED E\n ᵷ: 'g', // LATIN SMALL LETTER TURNED G\n ɥ: 'h', // LATIN SMALL LETTER TURNED H\n ʮ: 'h', // LATIN SMALL LETTER TURNED H WITH FISHHOOK\n ʯ: 'h', // LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL\n ᴉ: 'i', // LATIN SMALL LETTER TURNED I\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER TURNED INSULAR G' (ꝿ)\n ʞ: 'k', // LATIN SMALL LETTER TURNED K\n ꞁ: 'l', // LATIN SMALL LETTER TURNED L\n ɯ: 'm', // LATIN SMALL LETTER TURNED M\n ɰ: 'm', // LATIN SMALL LETTER TURNED M WITH LONG LEG\n ᴔ: 'oe', // LATIN SMALL LETTER TURNED OE\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER TURNED OPEN E' (ᴈ)\n ɹ: 'r', // LATIN SMALL LETTER TURNED R\n ɻ: 'r', // LATIN SMALL LETTER TURNED R WITH HOOK\n ɺ: 'r', // LATIN SMALL LETTER TURNED R WITH LONG LEG\n ⱹ: 'r', // LATIN SMALL LETTER TURNED R WITH TAIL\n ʇ: 't', // LATIN SMALL LETTER TURNED T\n ʌ: 'v', // LATIN SMALL LETTER TURNED V\n ʍ: 'w', // LATIN SMALL LETTER TURNED W\n ʎ: 'y', // LATIN SMALL LETTER TURNED Y\n ꜩ: 'tz', // LATIN SMALL LETTER TZ\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER U BAR' (ʉ)\n ú: 'u', // LATIN SMALL LETTER U WITH ACUTE\n ŭ: 'u', // LATIN SMALL LETTER U WITH BREVE\n ǔ: 'u', // LATIN SMALL LETTER U WITH CARON\n û: 'u', // LATIN SMALL LETTER U WITH CIRCUMFLEX\n ṷ: 'u', // LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW\n ü: 'u', // LATIN SMALL LETTER U WITH DIAERESIS\n ǘ: 'u', // LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE\n ǚ: 'u', // LATIN SMALL LETTER U WITH DIAERESIS AND CARON\n ǜ: 'u', // LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE\n ǖ: 'u', // LATIN SMALL LETTER U WITH DIAERESIS AND MACRON\n ṳ: 'u', // LATIN SMALL LETTER U WITH DIAERESIS BELOW\n ụ: 'u', // LATIN SMALL LETTER U WITH DOT BELOW\n ű: 'u', // LATIN SMALL LETTER U WITH DOUBLE ACUTE\n ȕ: 'u', // LATIN SMALL LETTER U WITH DOUBLE GRAVE\n ù: 'u', // LATIN SMALL LETTER U WITH GRAVE\n ủ: 'u', // LATIN SMALL LETTER U WITH HOOK ABOVE\n ư: 'u', // LATIN SMALL LETTER U WITH HORN\n ứ: 'u', // LATIN SMALL LETTER U WITH HORN AND ACUTE\n ự: 'u', // LATIN SMALL LETTER U WITH HORN AND DOT BELOW\n ừ: 'u', // LATIN SMALL LETTER U WITH HORN AND GRAVE\n ử: 'u', // LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE\n ữ: 'u', // LATIN SMALL LETTER U WITH HORN AND TILDE\n ȗ: 'u', // LATIN SMALL LETTER U WITH INVERTED BREVE\n ū: 'u', // LATIN SMALL LETTER U WITH MACRON\n ṻ: 'u', // LATIN SMALL LETTER U WITH MACRON AND DIAERESIS\n ų: 'u', // LATIN SMALL LETTER U WITH OGONEK\n ᶙ: 'u', // LATIN SMALL LETTER U WITH RETROFLEX HOOK\n ů: 'u', // LATIN SMALL LETTER U WITH RING ABOVE\n ũ: 'u', // LATIN SMALL LETTER U WITH TILDE\n ṹ: 'u', // LATIN SMALL LETTER U WITH TILDE AND ACUTE\n ṵ: 'u', // LATIN SMALL LETTER U WITH TILDE BELOW\n ᵫ: 'ue', // LATIN SMALL LETTER UE\n ꝸ: 'um', // LATIN SMALL LETTER UM\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER UPSILON' (ʊ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER UPSILON WITH STROKE' (ᵿ)\n ⱴ: 'v', // LATIN SMALL LETTER V WITH CURL\n ꝟ: 'v', // LATIN SMALL LETTER V WITH DIAGONAL STROKE\n ṿ: 'v', // LATIN SMALL LETTER V WITH DOT BELOW\n ʋ: 'v', // LATIN SMALL LETTER V WITH HOOK\n ᶌ: 'v', // LATIN SMALL LETTER V WITH PALATAL HOOK\n ⱱ: 'v', // LATIN SMALL LETTER V WITH RIGHT HOOK\n ṽ: 'v', // LATIN SMALL LETTER V WITH TILDE\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER VEND' (ꝩ)\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER VISIGOTHIC Z' (ꝣ)\n ꝡ: 'vy', // LATIN SMALL LETTER VY\n ẃ: 'w', // LATIN SMALL LETTER W WITH ACUTE\n ŵ: 'w', // LATIN SMALL LETTER W WITH CIRCUMFLEX\n ẅ: 'w', // LATIN SMALL LETTER W WITH DIAERESIS\n ẇ: 'w', // LATIN SMALL LETTER W WITH DOT ABOVE\n ẉ: 'w', // LATIN SMALL LETTER W WITH DOT BELOW\n ẁ: 'w', // LATIN SMALL LETTER W WITH GRAVE\n ⱳ: 'w', // LATIN SMALL LETTER W WITH HOOK\n ẘ: 'w', // LATIN SMALL LETTER W WITH RING ABOVE\n ẍ: 'x', // LATIN SMALL LETTER X WITH DIAERESIS\n ẋ: 'x', // LATIN SMALL LETTER X WITH DOT ABOVE\n ᶍ: 'x', // LATIN SMALL LETTER X WITH PALATAL HOOK\n ý: 'y', // LATIN SMALL LETTER Y WITH ACUTE\n ŷ: 'y', // LATIN SMALL LETTER Y WITH CIRCUMFLEX\n ÿ: 'y', // LATIN SMALL LETTER Y WITH DIAERESIS\n ẏ: 'y', // LATIN SMALL LETTER Y WITH DOT ABOVE\n ỵ: 'y', // LATIN SMALL LETTER Y WITH DOT BELOW\n ỳ: 'y', // LATIN SMALL LETTER Y WITH GRAVE\n ƴ: 'y', // LATIN SMALL LETTER Y WITH HOOK\n ỷ: 'y', // LATIN SMALL LETTER Y WITH HOOK ABOVE\n ỿ: 'y', // LATIN SMALL LETTER Y WITH LOOP\n ȳ: 'y', // LATIN SMALL LETTER Y WITH MACRON\n ẙ: 'y', // LATIN SMALL LETTER Y WITH RING ABOVE\n ɏ: 'y', // LATIN SMALL LETTER Y WITH STROKE\n ỹ: 'y', // LATIN SMALL LETTER Y WITH TILDE\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LETTER YOGH' (ȝ)\n ź: 'z', // LATIN SMALL LETTER Z WITH ACUTE\n ž: 'z', // LATIN SMALL LETTER Z WITH CARON\n ẑ: 'z', // LATIN SMALL LETTER Z WITH CIRCUMFLEX\n ʑ: 'z', // LATIN SMALL LETTER Z WITH CURL\n ⱬ: 'z', // LATIN SMALL LETTER Z WITH DESCENDER\n ż: 'z', // LATIN SMALL LETTER Z WITH DOT ABOVE\n ẓ: 'z', // LATIN SMALL LETTER Z WITH DOT BELOW\n ȥ: 'z', // LATIN SMALL LETTER Z WITH HOOK\n ẕ: 'z', // LATIN SMALL LETTER Z WITH LINE BELOW\n ᵶ: 'z', // LATIN SMALL LETTER Z WITH MIDDLE TILDE\n ᶎ: 'z', // LATIN SMALL LETTER Z WITH PALATAL HOOK\n ʐ: 'z', // LATIN SMALL LETTER Z WITH RETROFLEX HOOK\n ƶ: 'z', // LATIN SMALL LETTER Z WITH STROKE\n ɀ: 'z', // LATIN SMALL LETTER Z WITH SWASH TAIL\n ff: 'ff', // LATIN SMALL LIGATURE FF\n ffi: 'ffi', // LATIN SMALL LIGATURE FFI\n ffl: 'ffl', // LATIN SMALL LIGATURE FFL\n fi: 'fi', // LATIN SMALL LIGATURE FI\n fl: 'fl', // LATIN SMALL LIGATURE FL\n ij: 'ij', // LATIN SMALL LIGATURE IJ\n // CANNOT FIND APPROXIMATION FOR 'LATIN SMALL LIGATURE LONG S T' (ſt)\n œ: 'oe', // LATIN SMALL LIGATURE OE\n st: 'st', // LATIN SMALL LIGATURE ST\n ₐ: 'a', // LATIN SUBSCRIPT SMALL LETTER A\n ₑ: 'e', // LATIN SUBSCRIPT SMALL LETTER E\n ᵢ: 'i', // LATIN SUBSCRIPT SMALL LETTER I\n ⱼ: 'j', // LATIN SUBSCRIPT SMALL LETTER J\n ₒ: 'o', // LATIN SUBSCRIPT SMALL LETTER O\n ᵣ: 'r', // LATIN SUBSCRIPT SMALL LETTER R\n // CANNOT FIND APPROXIMATION FOR 'LATIN SUBSCRIPT SMALL LETTER SCHWA' (ₔ)\n ᵤ: 'u', // LATIN SUBSCRIPT SMALL LETTER U\n ᵥ: 'v', // LATIN SUBSCRIPT SMALL LETTER V\n ₓ: 'x', // LATIN SUBSCRIPT SMALL LETTER X\n};\n/* eslint-enable */\n\nexport function map(x: string) {\n return latinMap[x] || x;\n}\n\nexport function latinise(input: string) {\n return input.replace(/[^A-Za-z0-9]/g, map);\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport React from 'react';\nimport {FormattedMessage} from 'react-intl';\nimport type {IntlShape} from 'react-intl';\n\nimport {getModule} from 'module_registry';\nimport Constants from 'utils/constants';\nimport {t} from 'utils/i18n';\nimport {latinise} from 'utils/latinise';\nimport * as TextFormatting from 'utils/text_formatting';\n\ntype WindowObject = {\n location: {\n origin: string;\n protocol: string;\n hostname: string;\n port: string;\n };\n basename?: string;\n}\n\nexport function cleanUpUrlable(input: string): string {\n let cleaned: string = latinise(input);\n cleaned = cleaned.trim().replace(/-/g, ' ').replace(/[^\\w\\s]/gi, '').toLowerCase().replace(/\\s/g, '-');\n cleaned = cleaned.replace(/^-+/, '');\n cleaned = cleaned.replace(/-+$/, '');\n return cleaned;\n}\n\nexport function getShortenedURL(url = '', getLength = 27): string {\n if (url.length > 35) {\n const subLength = getLength - 14;\n return url.substring(0, 10) + '...' + url.substring(url.length - subLength, url.length);\n }\n return url;\n}\n\nexport function getSiteURLFromWindowObject(obj: WindowObject): string {\n let siteURL = '';\n if (obj.location.origin) {\n siteURL = obj.location.origin;\n } else {\n siteURL = obj.location.protocol + '//' + obj.location.hostname + (obj.location.port ? ':' + obj.location.port : '');\n }\n\n if (siteURL[siteURL.length - 1] === '/') {\n siteURL = siteURL.substring(0, siteURL.length - 1);\n }\n\n if (obj.basename) {\n siteURL += obj.basename;\n }\n\n if (siteURL[siteURL.length - 1] === '/') {\n siteURL = siteURL.substring(0, siteURL.length - 1);\n }\n\n return siteURL;\n}\n\nexport function getSiteURL(): string {\n return getModule<() => string>('utils/url/getSiteURL')?.() ?? getSiteURLFromWindowObject(window);\n}\n\nexport function getBasePathFromWindowObject(obj: WindowObject): string {\n return obj.basename || '';\n}\n\nexport function getBasePath(): string {\n return getBasePathFromWindowObject(window);\n}\n\nexport function getRelativeChannelURL(teamName: string, channelName: string): string {\n return `/${teamName}/channels/${channelName}`;\n}\n\nexport function isUrlSafe(url: string): boolean {\n let unescaped: string;\n\n try {\n unescaped = decodeURIComponent(url);\n } catch (e) {\n unescaped = unescape(url);\n }\n\n unescaped = unescaped.replace(/[^\\w:]/g, '').toLowerCase();\n\n return !unescaped.startsWith('javascript:') && // eslint-disable-line no-script-url\n !unescaped.startsWith('vbscript:') &&\n !unescaped.startsWith('data:');\n}\n\nexport function makeUrlSafe(url: string, defaultUrl = ''): string {\n if (isUrlSafe(url)) {\n return url;\n }\n\n return defaultUrl;\n}\n\nexport function getScheme(url: string): string | null {\n const match = (/([a-z0-9+.-]+):/i).exec(url);\n\n return match && match[1];\n}\n\nfunction formattedError(id: string, message: string, intl?: IntlShape): React.ReactElement | string {\n if (intl) {\n return intl.formatMessage({id, defaultMessage: message});\n }\n\n return (\n \n
    \n
    );\n}\n\nexport function validateChannelUrl(url: string, intl?: IntlShape): Array {\n const errors: Array = [];\n\n const USER_ID_LENGTH = 26;\n const directMessageRegex = new RegExp(`^.{${USER_ID_LENGTH}}__.{${USER_ID_LENGTH}}$`);\n const isDirectMessageFormat = directMessageRegex.test(url);\n\n const cleanedURL = cleanUpUrlable(url);\n const urlMatched = url.match(/^[a-z0-9]([a-z0-9\\-_]*[a-z0-9])?$/);\n const urlLonger = url.length < Constants.MIN_CHANNELNAME_LENGTH;\n const urlShorter = url.length > Constants.MAX_CHANNELNAME_LENGTH;\n\n if (cleanedURL !== url || !urlMatched || urlMatched[0] !== url || isDirectMessageFormat || urlLonger || urlShorter) {\n if (urlLonger) {\n errors.push(formattedError(t('change_url.longer'), 'URLs must have at least 2 characters.', intl));\n }\n\n if (urlShorter) {\n errors.push(formattedError(t('change_url.shorter'), 'URLs must have maximum 64 characters.', intl));\n }\n\n if (url.match(/[^A-Za-z0-9-_]/)) {\n errors.push(formattedError(t('change_url.noSpecialChars'), 'URLs cannot use special characters.', intl));\n }\n\n if (isDirectMessageFormat) {\n errors.push(formattedError(t('change_url.invalidDirectMessage'), 'User IDs are not allowed in channel URLs.', intl));\n }\n\n const startsWithoutLetter = url.charAt(0) === '-' || url.charAt(0) === '_';\n const endsWithoutLetter = url.length > 1 && (url.charAt(url.length - 1) === '-' || url.charAt(url.length - 1) === '_');\n if (startsWithoutLetter && endsWithoutLetter) {\n errors.push(formattedError(t('change_url.startAndEndWithLetter'), 'URLs must start and end with a lowercase letter or number.', intl));\n } else if (startsWithoutLetter) {\n errors.push(formattedError(t('change_url.startWithLetter'), 'URLs must start with a lowercase letter or number.', intl));\n } else if (endsWithoutLetter) {\n errors.push(formattedError(t('change_url.endWithLetter'), 'URLs must end with a lowercase letter or number.', intl));\n }\n\n // In case of error we don't detect\n if (errors.length === 0) {\n errors.push(formattedError(t('change_url.invalidUrl'), 'Invalid URL', intl));\n }\n }\n\n return errors;\n}\n\nexport function isInternalURL(url: string, siteURL?: string): boolean {\n return url.startsWith(siteURL || '') || url.startsWith('/');\n}\n\nexport function shouldOpenInNewTab(url: string, siteURL?: string, managedResourcePaths?: string[]): boolean {\n if (!isInternalURL(url, siteURL)) {\n return true;\n }\n\n const path = url.startsWith('/') ? url : url.substring(siteURL?.length || 0);\n\n const unhandledPaths = [\n\n // Paths managed by plugins and public file links aren't handled by the web app\n 'plugins',\n 'files',\n\n // Internal help pages should always open in a new tab\n 'help',\n ];\n\n // Paths managed by another service shouldn't be handled by the web app either\n if (managedResourcePaths) {\n for (const managedPath of managedResourcePaths) {\n unhandledPaths.push(TextFormatting.escapeRegex(managedPath));\n }\n }\n\n return unhandledPaths.some((unhandledPath) => new RegExp('^/' + unhandledPath + '\\\\b').test(path));\n}\n\n// Returns true if the string passed is a permalink URL.\nexport function isPermalinkURL(url: string): boolean {\n const siteURL = getSiteURL();\n\n const regexp = new RegExp(`^(${siteURL})?/[a-z0-9]+([a-z\\\\-0-9]+|(__)?)[a-z0-9]+/pl/\\\\w+`, 'gu');\n\n return isInternalURL(url, siteURL) && (regexp.test(url));\n}\n\nexport function isStringContainingUrl(text: string): boolean {\n const regex = new RegExp('(https?://|www.)');\n return regex.test(text);\n}\n\nexport type UrlValidationCheck = {\n url: string;\n error: typeof BadUrlReasons[keyof typeof BadUrlReasons] | false;\n}\n\nexport const BadUrlReasons = {\n Empty: 'Empty',\n Length: 'Length',\n Reserved: 'Reserved',\n Taken: 'Taken',\n} as const;\n\nexport function teamNameToUrl(teamName: string): UrlValidationCheck {\n // borrowed from team_url, which has some peculiarities tied to being a part of a two screen UI\n // that allows more variation between team name and url than we allow in usages of this function\n const url = cleanUpUrlable(teamName.trim());\n\n if (!url) {\n return {url, error: BadUrlReasons.Empty};\n }\n\n if (url.length < Constants.MIN_TEAMNAME_LENGTH || url.length > Constants.MAX_TEAMNAME_LENGTH) {\n return {url, error: BadUrlReasons.Length};\n }\n\n if (Constants.RESERVED_TEAM_NAMES.some((reservedName) => url.startsWith(reservedName))) {\n return {url, error: BadUrlReasons.Reserved};\n }\n\n return {url, error: false};\n}\n\nexport function channelNameToUrl(channelName: string): UrlValidationCheck {\n // borrowed from team_url, which has some peculiarities tied to being a part of a two screen UI\n // that allows more variation between team name and url than we allow in usages of this function\n const url = cleanUpUrlable(channelName.trim());\n\n if (!url) {\n return {url, error: BadUrlReasons.Empty};\n }\n\n if (url.length < Constants.MIN_CHANNELNAME_LENGTH || url.length > Constants.MAX_CHANNELNAME_LENGTH) {\n return {url, error: BadUrlReasons.Length};\n }\n\n return {url, error: false};\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport {getName} from 'country-list';\nimport crypto from 'crypto';\nimport cssVars from 'css-vars-ponyfill';\nimport type {Locale} from 'date-fns';\nimport {isNil} from 'lodash';\nimport moment from 'moment';\nimport React from 'react';\nimport type {LinkHTMLAttributes} from 'react';\nimport {FormattedMessage} from 'react-intl';\nimport type {IntlShape} from 'react-intl';\n\nimport type {Channel} from '@mattermost/types/channels';\nimport type {Address} from '@mattermost/types/cloud';\nimport type {ClientConfig} from '@mattermost/types/config';\nimport type {FileInfo} from '@mattermost/types/files';\nimport type {Group} from '@mattermost/types/groups';\nimport type {GlobalState} from '@mattermost/types/store';\nimport type {Team} from '@mattermost/types/teams';\nimport type {UserProfile} from '@mattermost/types/users';\n\nimport {\n getChannel as getChannelAction,\n getChannelByNameAndTeamName,\n getChannelMember,\n joinChannel,\n} from 'mattermost-redux/actions/channels';\nimport {getPost as getPostAction} from 'mattermost-redux/actions/posts';\nimport {getTeamByName as getTeamByNameAction} from 'mattermost-redux/actions/teams';\nimport {Client4} from 'mattermost-redux/client';\nimport {Preferences, General} from 'mattermost-redux/constants';\nimport {\n getChannel,\n getChannelsNameMapInTeam,\n getMyChannelMemberships,\n} from 'mattermost-redux/selectors/entities/channels';\nimport {getPost} from 'mattermost-redux/selectors/entities/posts';\nimport {getBool, getTeammateNameDisplaySetting, isCollapsedThreadsEnabled} from 'mattermost-redux/selectors/entities/preferences';\nimport type {Theme} from 'mattermost-redux/selectors/entities/preferences';\nimport {\n getTeamByName,\n getTeamMemberships,\n isTeamSameWithCurrentTeam,\n} from 'mattermost-redux/selectors/entities/teams';\nimport {getCurrentUser, getCurrentUserId, isFirstAdmin} from 'mattermost-redux/selectors/entities/users';\nimport {blendColors, changeOpacity} from 'mattermost-redux/utils/theme_utils';\nimport {displayUsername, isSystemAdmin} from 'mattermost-redux/utils/user_utils';\n\nimport {searchForTerm} from 'actions/post_actions';\nimport {addUserToTeam} from 'actions/team_actions';\nimport {getCurrentLocale, getTranslations} from 'selectors/i18n';\nimport store from 'stores/redux_store';\n\nimport {focusPost} from 'components/permalink_view/actions';\nimport type {TextboxElement} from 'components/textbox';\n\nimport {getHistory} from 'utils/browser_history';\nimport Constants, {FileTypes, ValidationErrors, A11yCustomEventTypes} from 'utils/constants';\nimport type {A11yFocusEventDetail} from 'utils/constants';\nimport {t} from 'utils/i18n';\nimport * as Keyboard from 'utils/keyboard';\nimport * as UserAgent from 'utils/user_agent';\n\nimport {joinPrivateChannelPrompt} from './channel_utils';\n\nconst CLICKABLE_ELEMENTS = [\n 'a',\n 'button',\n 'img',\n 'svg',\n 'audio',\n 'video',\n];\nconst MS_PER_SECOND = 1000;\nconst MS_PER_MINUTE = 60 * MS_PER_SECOND;\nconst MS_PER_HOUR = 60 * MS_PER_MINUTE;\nconst MS_PER_DAY = 24 * MS_PER_HOUR;\n\nexport enum TimeInformation {\n MILLISECONDS = 'm',\n SECONDS = 's',\n MINUTES = 'x',\n HOURS = 'h',\n DAYS = 'd',\n FUTURE = 'f',\n PAST = 'p'\n}\n\nexport type TimeUnit = Exclude;\nexport type TimeDirection = TimeInformation.FUTURE | TimeInformation.PAST;\n\nexport function createSafeId(prop: {props: {defaultMessage: string}} | string): string | undefined {\n let str = '';\n\n if (typeof prop !== 'string' && prop.props && prop.props.defaultMessage) {\n str = prop.props.defaultMessage;\n } else {\n str = prop.toString();\n }\n\n return str.replace(new RegExp(' ', 'g'), '_');\n}\n\n/**\n * check keydown event for line break combo. Should catch alt/option + enter not all browsers except Safari\n */\nexport function isUnhandledLineBreakKeyCombo(e: React.KeyboardEvent | KeyboardEvent): boolean {\n return Boolean(\n Keyboard.isKeyPressed(e, Constants.KeyCodes.ENTER) &&\n !e.shiftKey && // shift + enter is already handled everywhere, so don't handle again\n (e.altKey && !UserAgent.isSafari() && !Keyboard.cmdOrCtrlPressed(e)), // alt/option + enter is already handled in Safari, so don't handle again\n );\n}\n\n/**\n * insert a new line character at keyboard cursor (or overwrites selection)\n * WARNING: HAS DOM SIDE EFFECTS\n */\nexport function insertLineBreakFromKeyEvent(e: KeyboardEvent): string {\n const el = e.target as TextboxElement;\n const {selectionEnd, selectionStart, value} = el;\n\n // replace text selection (or insert if no selection) with new line character\n const newValue = `${value.substr(0, selectionStart!)}\\n${value.substr(selectionEnd!, value.length)}`;\n\n // update value on DOM element immediately and restore key cursor to correct position\n el.value = newValue;\n setSelectionRange(el, selectionStart! + 1, selectionStart! + 1);\n\n // return the updated string so that component state can be updated\n return newValue;\n}\n\nexport function getDateForUnixTicks(ticks: number): Date {\n return new Date(ticks);\n}\n\n// returns Unix timestamp in milliseconds\nexport function getTimestamp(): number {\n return Date.now();\n}\n\nexport function getRemainingDaysFromFutureTimestamp(timestamp?: number): number {\n const futureDate = new Date(timestamp as number);\n const utcFuture = Date.UTC(futureDate.getFullYear(), futureDate.getMonth(), futureDate.getDate());\n const today = new Date();\n const utcToday = Date.UTC(today.getFullYear(), today.getMonth(), today.getDate());\n\n return Math.floor((utcFuture - utcToday) / MS_PER_DAY);\n}\n\nexport function addTimeToTimestamp(timestamp: number, type: TimeUnit, diff: number, timeline: TimeDirection) {\n let modifier = 1;\n switch (type) {\n case TimeInformation.SECONDS:\n modifier = MS_PER_SECOND;\n break;\n case TimeInformation.MINUTES:\n modifier = MS_PER_MINUTE;\n break;\n case TimeInformation.HOURS:\n modifier = MS_PER_HOUR;\n break;\n case TimeInformation.DAYS:\n modifier = MS_PER_DAY;\n break;\n }\n\n return timeline === TimeInformation.FUTURE ? timestamp + (diff * modifier) : timestamp - (diff * modifier);\n}\n\n/**\n * Verifies if a date is in a particular given range of days from today\n * @param timestamp date you want to check is in the range of the provided number of days from today\n * @param days number of days you want to check your date against to\n * @param timeline 'f' represents future, 'p' represents past\n * @returns boolean, true if your date is in the range of the provided number of days\n */\nexport function isDateWithinDaysRange(timestamp: number, days: number, timeline: TimeDirection): boolean {\n const today = new Date().getTime();\n const daysSince = Math.round((today - timestamp) / MS_PER_DAY);\n return timeline === TimeInformation.PAST ? daysSince <= days : daysSince >= days;\n}\n\nexport function getLocaleDateFromUTC(timestamp: number, format = 'YYYY/MM/DD HH:mm:ss', userTimezone = '') {\n if (!timestamp) {\n return moment.now();\n }\n const timezone = userTimezone ? ' ' + moment().tz(userTimezone).format('z') : '';\n return moment.unix(timestamp).format(format) + timezone;\n}\n\nexport function replaceHtmlEntities(text: string) {\n const tagsToReplace = {\n '&': '&',\n '<': '<',\n '>': '>',\n };\n let newtext = text;\n Object.entries(tagsToReplace).forEach(([tag, replacement]) => {\n const regex = new RegExp(tag, 'g');\n newtext = newtext.replace(regex, replacement);\n });\n return newtext;\n}\n\nexport function isGIFImage(extin: string): boolean {\n return extin.toLowerCase() === Constants.IMAGE_TYPE_GIF;\n}\n\nconst removeQuerystringOrHash = (extin: string): string => {\n return extin.split(/[?#]/)[0];\n};\n\nexport const getFileType = (extin: string): typeof FileTypes[keyof typeof FileTypes] => {\n const ext = removeQuerystringOrHash(extin.toLowerCase());\n\n if (Constants.TEXT_TYPES.indexOf(ext) > -1) {\n return FileTypes.TEXT;\n }\n\n if (Constants.IMAGE_TYPES.indexOf(ext) > -1) {\n return FileTypes.IMAGE;\n }\n\n if (Constants.AUDIO_TYPES.indexOf(ext) > -1) {\n return FileTypes.AUDIO;\n }\n\n if (Constants.VIDEO_TYPES.indexOf(ext) > -1) {\n return FileTypes.VIDEO;\n }\n\n if (Constants.SPREADSHEET_TYPES.indexOf(ext) > -1) {\n return FileTypes.SPREADSHEET;\n }\n\n if (Constants.CODE_TYPES.indexOf(ext) > -1) {\n return FileTypes.CODE;\n }\n\n if (Constants.WORD_TYPES.indexOf(ext) > -1) {\n return FileTypes.WORD;\n }\n\n if (Constants.PRESENTATION_TYPES.indexOf(ext) > -1) {\n return FileTypes.PRESENTATION;\n }\n\n if (Constants.PDF_TYPES.indexOf(ext) > -1) {\n return FileTypes.PDF;\n }\n\n if (Constants.PATCH_TYPES.indexOf(ext) > -1) {\n return FileTypes.PATCH;\n }\n\n if (Constants.SVG_TYPES.indexOf(ext) > -1) {\n return FileTypes.SVG;\n }\n\n return FileTypes.OTHER;\n};\n\nexport function getFileIconPath(fileInfo: FileInfo) {\n const fileType = getFileType(fileInfo.extension) as keyof typeof Constants.ICON_FROM_TYPE;\n\n let icon;\n if (fileType in Constants.ICON_FROM_TYPE) {\n icon = Constants.ICON_FROM_TYPE[fileType];\n } else {\n icon = Constants.ICON_FROM_TYPE.other;\n }\n\n return icon;\n}\n\nexport function getCompassIconClassName(fileTypeIn: string, outline = true, large = false) {\n const fileType = fileTypeIn.toLowerCase() as keyof typeof Constants.ICON_FROM_TYPE;\n let icon = 'generic';\n\n if (fileType in Constants.ICON_NAME_FROM_TYPE) {\n icon = Constants.ICON_NAME_FROM_TYPE[fileType];\n }\n\n icon = icon === 'ppt' ? 'powerpoint' : icon;\n icon = icon === 'spreadsheet' ? 'excel' : icon;\n icon = icon === 'other' ? 'generic' : icon;\n\n return `icon-file-${icon}${outline ? '-outline' : ''}${large ? '-large' : ''}`;\n}\n\nexport function getIconClassName(fileTypeIn: string) {\n const fileType = fileTypeIn.toLowerCase()as keyof typeof Constants.ICON_FROM_TYPE;\n\n if (fileType in Constants.ICON_NAME_FROM_TYPE) {\n return Constants.ICON_NAME_FROM_TYPE[fileType];\n }\n\n return 'generic';\n}\n\nexport function toTitleCase(str: string): string {\n function doTitleCase(txt: string) {\n return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();\n }\n return str.replace(/\\w\\S*/g, doTitleCase);\n}\n\nfunction dropAlpha(value: string): string {\n return value.substr(value.indexOf('(') + 1).split(',', 3).join(',');\n}\n\n// given '#fffff', returns '255, 255, 255' (no trailing comma)\nexport function toRgbValues(hexStr: string): string {\n const rgbaStr = `${parseInt(hexStr.substr(1, 2), 16)}, ${parseInt(hexStr.substr(3, 2), 16)}, ${parseInt(hexStr.substr(5, 2), 16)}`;\n return rgbaStr;\n}\n\nexport function applyTheme(theme: Theme) {\n if (theme.centerChannelColor) {\n changeCss('.app__body .markdown__table tbody tr:nth-child(2n)', 'background:' + changeOpacity(theme.centerChannelColor, 0.07));\n changeCss('.app__body .channel-header__info .header-dropdown__icon', 'color:' + changeOpacity(theme.centerChannelColor, 0.8));\n changeCss('.app__body .channel-header .pinned-posts-button svg', 'fill:' + changeOpacity(theme.centerChannelColor, 0.6));\n changeCss('.app__body .channel-header .channel-header_plugin-dropdown svg', 'fill:' + changeOpacity(theme.centerChannelColor, 0.6));\n changeCss('.app__body .file-preview, .app__body .post-image__details, .app__body .markdown__table th, .app__body .markdown__table td, .app__body .webhooks__container, .app__body .dropdown-menu', 'border-color:' + changeOpacity(theme.centerChannelColor, 0.2));\n changeCss('.emoji-picker .emoji-picker__header', 'border-color:' + changeOpacity(theme.centerChannelColor, 0.2));\n changeCss('.app__body .popover.bottom>.arrow', 'border-bottom-color:' + changeOpacity(theme.centerChannelColor, 0.25));\n changeCss('.app__body .btn.btn-transparent', 'color:' + changeOpacity(theme.centerChannelColor, 0.7));\n changeCss('.app__body .popover.right>.arrow', 'border-right-color:' + changeOpacity(theme.centerChannelColor, 0.25));\n changeCss('.app__body .popover.left>.arrow', 'border-left-color:' + changeOpacity(theme.centerChannelColor, 0.25));\n changeCss('.app__body .popover.top>.arrow', 'border-top-color:' + changeOpacity(theme.centerChannelColor, 0.25));\n changeCss('.app__body .popover .popover__row', 'border-color:' + changeOpacity(theme.centerChannelColor, 0.2));\n changeCss('body.app__body, .app__body .custom-textarea', 'color:' + theme.centerChannelColor);\n changeCss('.app__body .input-group-addon', 'border-color:' + changeOpacity(theme.centerChannelColor, 0.1));\n changeCss('@media(min-width: 768px){.app__body .post-list__table .post-list__content .dropdown-menu a:hover, .dropdown-menu > li > button:hover', 'background:' + changeOpacity(theme.centerChannelColor, 0.1));\n changeCss('.app__body .MenuWrapper .MenuItem > button:hover, .app__body .Menu .MenuItem > button:hover, .app__body .MenuWrapper .MenuItem > button:focus, .app__body .MenuWrapper .SubMenuItem > div:focus, .app__body .MenuWrapper .MenuItem > a:hover, .MenuItem > div:hover, .SubMenuItemContainer:not(.hasDivider):hover, .app__body .dropdown-menu div > a:focus, .app__body .dropdown-menu div > a:hover, .dropdown-menu li > a:focus, .app__body .dropdown-menu li > a:hover', 'background:' + changeOpacity(theme.centerChannelColor, 0.1));\n changeCss('.app__body .MenuWrapper .MenuItem > button:hover, .app__body .Menu .MenuItem > button:hover, .app__body .MenuWrapper .MenuItem > button:focus, .app__body .MenuWrapper .SubMenuItem > div:focus, .app__body .MenuWrapper .MenuItem > a:hover, .app__body .MenuWrapper .MenuItem > div:hover, .app__body .MenuWrapper .SubMenuItemContainer:not(.hasDivider):hover, .app__body .MenuWrapper .SubMenuItemContainer:not(.hasDivider):focus, .app__body .MenuWrapper .SubMenuItemContainer:focus, .app__body .dropdown-menu div > a:focus, .app__body .dropdown-menu div > a:hover, .dropdown-menu li > a:focus, .app__body .dropdown-menu li > a:hover', 'background-color:' + changeOpacity(theme.centerChannelColor, 0.1));\n changeCss('.app__body .attachment .attachment__content, .app__body .attachment-actions button', 'border-color:' + changeOpacity(theme.centerChannelColor, 0.16));\n changeCss('.app__body .attachment-actions button:focus, .app__body .attachment-actions button:hover', 'border-color:' + changeOpacity(theme.centerChannelColor, 0.5));\n changeCss('.app__body .attachment-actions button:focus, .app__body .attachment-actions button:hover', 'background:' + changeOpacity(theme.centerChannelColor, 0.03));\n changeCss('.app__body .input-group-addon, .app__body .channel-intro .channel-intro__content, .app__body .webhooks__container', 'background:' + changeOpacity(theme.centerChannelColor, 0.05));\n changeCss('.app__body .date-separator .separator__text', 'color:' + theme.centerChannelColor);\n changeCss('.app__body .date-separator .separator__hr, .app__body .modal-footer, .app__body .modal .custom-textarea', 'border-color:' + changeOpacity(theme.centerChannelColor, 0.2));\n changeCss('.app__body .search-item-container', 'border-color:' + changeOpacity(theme.centerChannelColor, 0.1));\n changeCss('.app__body .modal .custom-textarea:focus', 'border-color:' + changeOpacity(theme.centerChannelColor, 0.3));\n changeCss('.app__body .channel-intro, .app__body hr, .app__body .modal .settings-modal .settings-table .settings-content .appearance-section .theme-elements__header, .app__body .user-settings .authorized-app:not(:last-child)', 'border-color:' + changeOpacity(theme.centerChannelColor, 0.2));\n changeCss('.app__body .post.post--comment.other--root.current--user .post-comment, .app__body pre', 'background:' + changeOpacity(theme.centerChannelColor, 0.05));\n changeCss('.app__body .post.post--comment.other--root.current--user .post-comment, .app__body .more-modal__list .more-modal__row, .app__body .member-div:first-child, .app__body .member-div, .app__body .access-history__table .access__report, .app__body .activity-log__table', 'border-color:' + changeOpacity(theme.centerChannelColor, 0.1));\n changeCss('@media(max-width: 1800px){.app__body .inner-wrap.move--left .post.post--comment.same--root', 'border-color:' + changeOpacity(theme.centerChannelColor, 0.07));\n changeCss('.app__body .post.post--hovered', 'background:' + changeOpacity(theme.centerChannelColor, 0.08));\n changeCss('.app__body .attachment__body__wrap.btn-close', 'background:' + changeOpacity(theme.centerChannelColor, 0.08));\n changeCss('.app__body .attachment__body__wrap.btn-close', 'border-color:' + changeOpacity(theme.centerChannelColor, 0.2));\n changeCss('@media(min-width: 768px){.app__body .post.a11y--active, .app__body .modal .settings-modal .settings-table .settings-content .section-min:hover', 'background:' + changeOpacity(theme.centerChannelColor, 0.04));\n changeCss('@media(min-width: 768px){.app__body .post.post--editing', 'background:' + changeOpacity(theme.buttonBg, 0.08));\n changeCss('@media(min-width: 768px){.app__body .post.current--user:hover .post__body ', 'background: transparent;');\n changeCss('.app__body .more-modal__row.more-modal__row--selected, .app__body .date-separator.hovered--before:after, .app__body .date-separator.hovered--after:before, .app__body .new-separator.hovered--after:before, .app__body .new-separator.hovered--before:after', 'background:' + changeOpacity(theme.centerChannelColor, 0.07));\n changeCss('@media(min-width: 768px){.app__body .dropdown-menu>li>a:focus, .app__body .dropdown-menu>li>a:hover', 'background:' + changeOpacity(theme.centerChannelColor, 0.15));\n changeCss('.app__body .form-control[disabled], .app__body .form-control[readonly], .app__body fieldset[disabled] .form-control', 'background:' + changeOpacity(theme.centerChannelColor, 0.1));\n changeCss('.app__body .sidebar--right', 'color:' + theme.centerChannelColor);\n changeCss('.app__body .modal .settings-modal .settings-table .settings-content .appearance-section .theme-elements__body', 'background:' + changeOpacity(theme.centerChannelColor, 0.05));\n changeCss('body', 'scrollbar-arrow-color:' + theme.centerChannelColor);\n changeCss('.app__body .post.post--compact .post-image__column .post-image__details svg, .app__body .modal .about-modal .about-modal__logo svg, .app__body .status svg, .app__body .edit-post__actions .icon svg', 'fill:' + theme.centerChannelColor);\n changeCss('.app__body .post-list__new-messages-below', 'background:' + changeColor(theme.centerChannelColor, 0.5));\n changeCss('@media(min-width: 768px){.app__body .post.post--compact.same--root.post--comment .post__content', 'border-color:' + changeOpacity(theme.centerChannelColor, 0.2));\n changeCss('.app__body .post.post--comment.current--user .post__body', 'border-color:' + changeOpacity(theme.centerChannelColor, 0.2));\n changeCss('.app__body .emoji-picker', 'color:' + theme.centerChannelColor);\n changeCss('.app__body .emoji-picker', 'border-color:' + changeOpacity(theme.centerChannelColor, 0.2));\n changeCss('.app__body .emoji-picker__search-icon', 'color:' + changeOpacity(theme.centerChannelColor, 0.4));\n changeCss('.app__body .emoji-picker__preview, .app__body .emoji-picker__items, .app__body .emoji-picker__search-container', 'border-color:' + changeOpacity(theme.centerChannelColor, 0.2));\n changeCss('.emoji-picker__category .fa:hover', 'color:' + changeOpacity(theme.centerChannelColor, 0.8));\n changeCss('.app__body .emoji-picker__item-wrapper:hover', 'background-color:' + changeOpacity(theme.centerChannelColor, 0.8));\n changeCss('.app__body .icon__postcontent_picker:hover', 'color:' + changeOpacity(theme.centerChannelColor, 0.8));\n changeCss('.app__body .emoji-picker .nav-tabs li a', 'fill:' + theme.centerChannelColor);\n changeCss('.app__body .post .post-collapse__show-more-button', `border-color:${changeOpacity(theme.centerChannelColor, 0.1)}`);\n changeCss('.app__body .post .post-collapse__show-more-line', `background-color:${changeOpacity(theme.centerChannelColor, 0.1)}`);\n }\n\n if (theme.newMessageSeparator) {\n changeCss('.app__body .new-separator .separator__text', 'color:' + theme.newMessageSeparator);\n changeCss('.app__body .new-separator .separator__hr', 'border-color:' + changeOpacity(theme.newMessageSeparator, 0.5));\n }\n\n if (theme.linkColor) {\n changeCss('.app__body .more-modal__list .a11y--focused, .app__body .post.a11y--focused, .app__body .channel-header.a11y--focused, .app__body .post-create.a11y--focused, .app__body .user-popover.a11y--focused, .app__body .post-message__text.a11y--focused', 'box-shadow: inset 0 0 1px 3px ' + changeOpacity(theme.linkColor, 0.5) + ', inset 0 0 0 1px ' + theme.linkColor);\n changeCss('.app__body .a11y--focused', 'box-shadow: 0 0 1px 3px ' + changeOpacity(theme.linkColor, 0.5) + ', 0 0 0 1px ' + theme.linkColor);\n changeCss('.app__body .channel-header .channel-header__favorites.inactive:hover, .app__body a, .app__body a:focus, .app__body a:hover, .app__body .color--link, .app__body a:focus, .app__body .color--link:hover', 'color:' + theme.linkColor);\n changeCss('.app__body .attachment .attachment__container', 'border-left-color:' + changeOpacity(theme.linkColor, 0.5));\n changeCss('.app__body .channel-header .channel-header_plugin-dropdown a:hover', 'background:' + changeOpacity(theme.linkColor, 0.08));\n changeCss('.app__body .post .post__reply', 'fill:' + theme.linkColor);\n changeCss('.app__body .post .card-icon__container.active svg, .app__body .post .post__reply', 'fill:' + theme.linkColor);\n changeCss('.app__body .channel-header .pinned-posts-button:hover svg', 'fill:' + changeOpacity(theme.linkColor, 0.6));\n changeCss('.app__body .channel-header .channel-header_plugin-dropdown a:hover', 'border-color:' + theme.linkColor);\n changeCss('.app__body .channel-header .channel-header_plugin-dropdown a:hover svg', 'fill:' + theme.linkColor);\n changeCss('.app__body .channel-header .dropdown-toggle:hover .heading, .app__body .channel-header .dropdown-toggle:hover .header-dropdown__icon, .app__body .channel-header__title .open .heading, .app__body .channel-header__info .channel-header__title .open .header-dropdown__icon, .app__body .channel-header__title .open .heading, .app__body .channel-header__info .channel-header__title .open .heading', 'color:' + theme.linkColor);\n changeCss('.emoji-picker__container .icon--emoji.active svg', 'fill:' + theme.linkColor);\n changeCss('.app__body .channel-header .channel-header_plugin-dropdown a:hover .fa', 'color:' + theme.linkColor);\n changeCss('.app__body .post .post-collapse__show-more', `color:${theme.linkColor}`);\n changeCss('.app__body .post .post-attachment-collapse__show-more', `color:${theme.linkColor}`);\n changeCss('.app__body .post .post-collapse__show-more-button:hover', `background-color:${theme.linkColor}`);\n }\n\n if (theme.buttonBg) {\n changeCss('.app__body .modal .settings-modal .profile-img__remove:hover, .app__body .DayPicker:not(.DayPicker--interactionDisabled) .DayPicker-Day:not(.DayPicker-Day--disabled):not(.DayPicker-Day--selected):not(.DayPicker-Day--outside):hover:before, .app__body .modal .settings-modal .team-img__remove:hover, .app__body .btn.btn-transparent:hover, .app__body .btn.btn-transparent:active, .app__body .post-image__details .post-image__download svg:hover, .app__body .file-view--single .file__download:hover, .app__body .new-messages__button div, .app__body .tutorial__circles .circle.active', 'background:' + theme.buttonBg);\n changeCss('.app__body .system-notice__logo svg', 'fill:' + theme.buttonBg);\n changeCss('.app__body .post-image__details .post-image__download svg:hover', 'border-color:' + theme.buttonBg);\n changeCss('.app__body .emoji-picker .nav-tabs li.active a, .app__body .emoji-picker .nav-tabs li a:hover', 'fill:' + theme.buttonBg);\n changeCss('.app__body .emoji-picker .nav-tabs > li.active > a', 'border-bottom-color:' + theme.buttonBg + '!important;');\n changeCss('.app__body .btn-primary:hover', 'background:' + blendColors(theme.buttonBg, '#000000', 0.1));\n changeCss('.app__body .btn-primary:active', 'background:' + blendColors(theme.buttonBg, '#000000', 0.2));\n }\n\n if (theme.buttonColor) {\n changeCss('.app__body .DayPicker:not(.DayPicker--interactionDisabled) .DayPicker-Day:not(.DayPicker-Day--disabled):not(.DayPicker-Day--selected):not(.DayPicker-Day--outside):hover, .app__body .modal .settings-modal .team-img__remove:hover, .app__body .btn.btn-transparent:hover, .app__body .btn.btn-transparent:active, .app__body .new-messages__button div', 'color:' + theme.buttonColor);\n changeCss('.app__body .new-messages__button svg', 'fill:' + theme.buttonColor);\n changeCss('.app__body .post-image__details .post-image__download svg:hover, .app__body .file-view--single .file__download svg', 'stroke:' + theme.buttonColor);\n }\n\n if (theme.errorTextColor) {\n changeCss('.app__body .error-text, .app__body .modal .settings-modal .settings-table .settings-content .has-error, .app__body .modal .input__help.error, .app__body .color--error, .app__body .has-error .help-block, .app__body .has-error .control-label, .app__body .has-error .radio, .app__body .has-error .checkbox, .app__body .has-error .radio-inline, .app__body .has-error .checkbox-inline, .app__body .has-error.radio label, .app__body .has-error.checkbox label, .app__body .has-error.radio-inline label, .app__body .has-error.checkbox-inline label', 'color:' + theme.errorTextColor);\n changeCss('.app__body .btn-danger:hover', 'background:' + blendColors(theme.errorTextColor, '#000000', 0.1));\n changeCss('.app__body .btn-danger:active', 'background:' + blendColors(theme.errorTextColor, '#000000', 0.2));\n }\n\n if (theme.mentionHighlightBg) {\n changeCss('.app__body .search-highlight', 'background:' + theme.mentionHighlightBg);\n changeCss('.app__body .post.post--highlight', 'background:' + changeOpacity(theme.mentionHighlightBg, 0.5));\n }\n\n if (theme.mentionHighlightLink) {\n changeCss('.app__body .search-highlight', 'color:' + theme.mentionHighlightLink);\n changeCss('.app__body .search-highlight > a', 'color: inherit');\n }\n\n if (!theme.codeTheme) {\n theme.codeTheme = Constants.DEFAULT_CODE_THEME;\n }\n updateCodeTheme(theme.codeTheme);\n\n cssVars({\n variables: {\n\n // RGB values derived from theme hex values i.e. '255, 255, 255'\n // (do not apply opacity mutations here)\n 'away-indicator-rgb': toRgbValues(theme.awayIndicator),\n 'button-bg-rgb': toRgbValues(theme.buttonBg),\n 'button-color-rgb': toRgbValues(theme.buttonColor),\n 'center-channel-bg-rgb': toRgbValues(theme.centerChannelBg),\n 'center-channel-color-rgb': toRgbValues(theme.centerChannelColor),\n 'dnd-indicator-rgb': toRgbValues(theme.dndIndicator),\n 'error-text-color-rgb': toRgbValues(theme.errorTextColor),\n 'link-color-rgb': toRgbValues(theme.linkColor),\n 'mention-bg-rgb': toRgbValues(theme.mentionBg),\n 'mention-color-rgb': toRgbValues(theme.mentionColor),\n 'mention-highlight-bg-rgb': toRgbValues(theme.mentionHighlightBg),\n 'mention-highlight-link-rgb': toRgbValues(theme.mentionHighlightLink),\n 'mention-highlight-bg-mixed-rgb': dropAlpha(blendColors(theme.centerChannelBg, theme.mentionHighlightBg, 0.5)),\n 'pinned-highlight-bg-mixed-rgb': dropAlpha(blendColors(theme.centerChannelBg, theme.mentionHighlightBg, 0.24)),\n 'own-highlight-bg-rgb': dropAlpha(blendColors(theme.mentionHighlightBg, theme.centerChannelColor, 0.05)),\n 'new-message-separator-rgb': toRgbValues(theme.newMessageSeparator),\n 'online-indicator-rgb': toRgbValues(theme.onlineIndicator),\n 'sidebar-bg-rgb': toRgbValues(theme.sidebarBg),\n 'sidebar-header-bg-rgb': toRgbValues(theme.sidebarHeaderBg),\n 'sidebar-teambar-bg-rgb': toRgbValues(theme.sidebarTeamBarBg),\n 'sidebar-header-text-color-rgb': toRgbValues(theme.sidebarHeaderTextColor),\n 'sidebar-text-rgb': toRgbValues(theme.sidebarText),\n 'sidebar-text-active-border-rgb': toRgbValues(theme.sidebarTextActiveBorder),\n 'sidebar-text-active-color-rgb': toRgbValues(theme.sidebarTextActiveColor),\n 'sidebar-text-hover-bg-rgb': toRgbValues(theme.sidebarTextHoverBg),\n 'sidebar-unread-text-rgb': toRgbValues(theme.sidebarUnreadText),\n\n // Hex CSS variables\n 'sidebar-bg': theme.sidebarBg,\n 'sidebar-text': theme.sidebarText,\n 'sidebar-unread-text': theme.sidebarUnreadText,\n 'sidebar-text-hover-bg': theme.sidebarTextHoverBg,\n 'sidebar-text-active-border': theme.sidebarTextActiveBorder,\n 'sidebar-text-active-color': theme.sidebarTextActiveColor,\n 'sidebar-header-bg': theme.sidebarHeaderBg,\n 'sidebar-teambar-bg': theme.sidebarTeamBarBg,\n 'sidebar-header-text-color': theme.sidebarHeaderTextColor,\n 'online-indicator': theme.onlineIndicator,\n 'away-indicator': theme.awayIndicator,\n 'dnd-indicator': theme.dndIndicator,\n 'mention-bg': theme.mentionBg,\n 'mention-color': theme.mentionColor,\n 'center-channel-bg': theme.centerChannelBg,\n 'center-channel-color': theme.centerChannelColor,\n 'new-message-separator': theme.newMessageSeparator,\n 'link-color': theme.linkColor,\n 'button-bg': theme.buttonBg,\n 'button-color': theme.buttonColor,\n 'error-text': theme.errorTextColor,\n 'mention-highlight-bg': theme.mentionHighlightBg,\n 'mention-highlight-link': theme.mentionHighlightLink,\n\n // Legacy variables with baked in opacity, do not use!\n 'sidebar-text-08': changeOpacity(theme.sidebarText, 0.08),\n 'sidebar-text-16': changeOpacity(theme.sidebarText, 0.16),\n 'sidebar-text-30': changeOpacity(theme.sidebarText, 0.3),\n 'sidebar-text-40': changeOpacity(theme.sidebarText, 0.4),\n 'sidebar-text-50': changeOpacity(theme.sidebarText, 0.5),\n 'sidebar-text-60': changeOpacity(theme.sidebarText, 0.6),\n 'sidebar-text-72': changeOpacity(theme.sidebarText, 0.72),\n 'sidebar-text-80': changeOpacity(theme.sidebarText, 0.8),\n 'sidebar-header-text-color-80': changeOpacity(theme.sidebarHeaderTextColor, 0.8),\n 'center-channel-bg-88': changeOpacity(theme.centerChannelBg, 0.88),\n 'center-channel-color-88': changeOpacity(theme.centerChannelColor, 0.88),\n 'center-channel-bg-80': changeOpacity(theme.centerChannelBg, 0.8),\n 'center-channel-color-80': changeOpacity(theme.centerChannelColor, 0.8),\n 'center-channel-color-72': changeOpacity(theme.centerChannelColor, 0.72),\n 'center-channel-bg-64': changeOpacity(theme.centerChannelBg, 0.64),\n 'center-channel-color-64': changeOpacity(theme.centerChannelColor, 0.64),\n 'center-channel-bg-56': changeOpacity(theme.centerChannelBg, 0.56),\n 'center-channel-color-56': changeOpacity(theme.centerChannelColor, 0.56),\n 'center-channel-color-48': changeOpacity(theme.centerChannelColor, 0.48),\n 'center-channel-bg-40': changeOpacity(theme.centerChannelBg, 0.4),\n 'center-channel-color-40': changeOpacity(theme.centerChannelColor, 0.4),\n 'center-channel-bg-30': changeOpacity(theme.centerChannelBg, 0.3),\n 'center-channel-color-32': changeOpacity(theme.centerChannelColor, 0.32),\n 'center-channel-bg-20': changeOpacity(theme.centerChannelBg, 0.2),\n 'center-channel-color-20': changeOpacity(theme.centerChannelColor, 0.2),\n 'center-channel-bg-16': changeOpacity(theme.centerChannelBg, 0.16),\n 'center-channel-color-24': changeOpacity(theme.centerChannelColor, 0.24),\n 'center-channel-color-16': changeOpacity(theme.centerChannelColor, 0.16),\n 'center-channel-bg-08': changeOpacity(theme.centerChannelBg, 0.08),\n 'center-channel-color-08': changeOpacity(theme.centerChannelColor, 0.08),\n 'center-channel-color-04': changeOpacity(theme.centerChannelColor, 0.04),\n 'link-color-08': changeOpacity(theme.linkColor, 0.08),\n 'button-bg-88': changeOpacity(theme.buttonBg, 0.88),\n 'button-color-88': changeOpacity(theme.buttonColor, 0.88),\n 'button-bg-80': changeOpacity(theme.buttonBg, 0.8),\n 'button-color-80': changeOpacity(theme.buttonColor, 0.8),\n 'button-bg-72': changeOpacity(theme.buttonBg, 0.72),\n 'button-color-72': changeOpacity(theme.buttonColor, 0.72),\n 'button-bg-64': changeOpacity(theme.buttonBg, 0.64),\n 'button-color-64': changeOpacity(theme.buttonColor, 0.64),\n 'button-bg-56': changeOpacity(theme.buttonBg, 0.56),\n 'button-color-56': changeOpacity(theme.buttonColor, 0.56),\n 'button-bg-48': changeOpacity(theme.buttonBg, 0.48),\n 'button-color-48': changeOpacity(theme.buttonColor, 0.48),\n 'button-bg-40': changeOpacity(theme.buttonBg, 0.4),\n 'button-color-40': changeOpacity(theme.buttonColor, 0.4),\n 'button-bg-30': changeOpacity(theme.buttonBg, 0.32),\n 'button-color-32': changeOpacity(theme.buttonColor, 0.32),\n 'button-bg-24': changeOpacity(theme.buttonBg, 0.24),\n 'button-color-24': changeOpacity(theme.buttonColor, 0.24),\n 'button-bg-16': changeOpacity(theme.buttonBg, 0.16),\n 'button-color-16': changeOpacity(theme.buttonColor, 0.16),\n 'button-bg-08': changeOpacity(theme.buttonBg, 0.08),\n 'button-color-08': changeOpacity(theme.buttonColor, 0.08),\n 'button-bg-04': changeOpacity(theme.buttonBg, 0.04),\n 'button-color-04': changeOpacity(theme.buttonColor, 0.04),\n 'error-text-08': changeOpacity(theme.errorTextColor, 0.08),\n 'error-text-12': changeOpacity(theme.errorTextColor, 0.12),\n },\n });\n}\n\nexport function resetTheme() {\n applyTheme(Preferences.THEMES.denim);\n}\n\nfunction changeCss(className: string, classValue: string) {\n let styleEl: HTMLStyleElement = document.querySelector('style[data-class=\"' + className + '\"]')!;\n if (!styleEl) {\n styleEl = document.createElement('style');\n styleEl.setAttribute('data-class', className);\n\n // Append style element to head\n document.head.appendChild(styleEl);\n }\n\n // Grab style sheet\n const styleSheet = styleEl.sheet!;\n const rules: CSSRuleList = styleSheet.cssRules || styleSheet.rules;\n const style = classValue.substr(0, classValue.indexOf(':'));\n const value = classValue.substr(classValue.indexOf(':') + 1).replace(/!important[;]/g, '');\n const priority = (classValue.match(/!important/) ? 'important' : null);\n\n for (let i = 0; i < rules.length; i++) {\n if ((rules[i] as any).selectorText === className) {\n (rules[i] as any).style.setProperty(style, value, priority);\n return;\n }\n }\n\n let mediaQuery = '';\n if (className.indexOf('@media') >= 0) {\n mediaQuery = '}';\n }\n try {\n styleSheet.insertRule(className + '{' + classValue + '}' + mediaQuery, styleSheet.cssRules.length);\n } catch (e) {\n console.error(e); // eslint-disable-line no-console\n }\n}\n\nfunction updateCodeTheme(codeTheme: string) {\n let cssPath = '';\n Constants.THEME_ELEMENTS.forEach((element) => {\n if (element.id === 'codeTheme') {\n element.themes?.forEach((theme) => {\n if (codeTheme === theme.id) {\n cssPath = theme.cssURL!;\n }\n });\n }\n });\n\n const link: HTMLLinkElement = document.querySelector('link.code_theme')!;\n if (link && cssPath !== (link.attributes as LinkHTMLAttributes).href) {\n changeCss('code.hljs', 'visibility: hidden');\n\n const xmlHTTP = new XMLHttpRequest();\n\n xmlHTTP.open('GET', cssPath, true);\n xmlHTTP.onload = function onLoad() {\n link.href = cssPath;\n\n if (UserAgent.isFirefox()) {\n link.addEventListener('load', () => {\n changeCss('code.hljs', 'visibility: visible');\n }, {once: true});\n } else {\n changeCss('code.hljs', 'visibility: visible');\n }\n };\n\n xmlHTTP.send();\n }\n}\n\nexport function placeCaretAtEnd(el: HTMLInputElement | HTMLTextAreaElement) {\n el.focus();\n el.selectionStart = el.value.length;\n el.selectionEnd = el.value.length;\n}\n\nexport function scrollToCaret(el: HTMLInputElement | HTMLTextAreaElement) {\n el.scrollTop = el.scrollHeight;\n}\n\nfunction createHtmlElement(el: keyof HTMLElementTagNameMap) {\n return document.createElement(el);\n}\n\nfunction getElementComputedStyle(el: Element) {\n return getComputedStyle(el);\n}\n\nfunction addElementToDocument(el: Node) {\n document.body.appendChild(el);\n}\n\nexport function copyTextAreaToDiv(textArea: HTMLTextAreaElement) {\n if (!textArea) {\n return null;\n }\n const copy = createHtmlElement('div');\n copy.textContent = textArea.value;\n const style = getElementComputedStyle(textArea);\n [\n 'fontFamily',\n 'fontSize',\n 'fontWeight',\n 'wordWrap',\n 'whiteSpace',\n 'borderLeftWidth',\n 'borderTopWidth',\n 'borderRightWidth',\n 'borderBottomWidth',\n 'paddingRight',\n 'paddingLeft',\n 'paddingTop',\n ].forEach((key) => {\n copy.style[key as any] = style[key as any];\n });\n copy.style.overflow = 'auto';\n copy.style.width = textArea.offsetWidth + 'px';\n copy.style.height = textArea.offsetHeight + 'px';\n copy.style.position = 'absolute';\n copy.style.left = textArea.offsetLeft + 'px';\n copy.style.top = textArea.offsetTop + 'px';\n addElementToDocument(copy);\n return copy;\n}\n\nfunction convertEmToPixels(el: Element, remNum: number | any): number {\n if (isNaN(remNum)) {\n return 0;\n }\n const styles = getElementComputedStyle(el);\n return remNum * parseFloat(styles.fontSize);\n}\n\nexport function getCaretXYCoordinate(textArea: HTMLTextAreaElement) {\n if (!textArea) {\n return {x: 0, y: 0};\n }\n const start = textArea.selectionStart;\n const end = textArea.selectionEnd;\n const copy = copyTextAreaToDiv(textArea);\n const range = document.createRange();\n range.setStart(copy!.firstChild!, start);\n range.setEnd(copy!.firstChild!, end);\n const selection = document.getSelection();\n selection!.removeAllRanges();\n selection!.addRange(range);\n const rect = range.getClientRects();\n document.body.removeChild(copy!);\n textArea.selectionStart = start;\n textArea.selectionEnd = end;\n textArea.focus();\n return {\n x: Math.floor(rect[0].left - textArea.scrollLeft),\n y: Math.floor(rect[0].top - textArea.scrollTop),\n };\n}\n\nexport function getViewportSize(win?: Window) {\n const w = win || window;\n if (w.innerWidth != null) {\n return {w: w.innerWidth, h: w.innerHeight};\n }\n const {clientWidth, clientHeight} = w.document.body;\n return {w: clientWidth, h: clientHeight};\n}\n\nexport function offsetTopLeft(el: HTMLElement) {\n if (!(el instanceof HTMLElement)) {\n return {top: 0, left: 0};\n }\n const rect = el.getBoundingClientRect();\n const scrollLeft = window.pageXOffset || document.documentElement.scrollLeft;\n const scrollTop = window.pageYOffset || document.documentElement.scrollTop;\n return {top: rect.top + scrollTop, left: rect.left + scrollLeft};\n}\n\nexport function getSuggestionBoxAlgn(textArea: HTMLTextAreaElement, pxToSubstract = 0, alignWithTextBox = false) {\n if (!textArea || !(textArea instanceof HTMLElement)) {\n return {\n pixelsToMoveX: 0,\n pixelsToMoveY: 0,\n };\n }\n\n const {x: caretXCoordinateInTxtArea, y: caretYCoordinateInTxtArea} = getCaretXYCoordinate(textArea);\n const {w: viewportWidth, h: viewportHeight} = getViewportSize();\n const {offsetWidth: textAreaWidth} = textArea;\n\n const suggestionBoxWidth = Math.min(textAreaWidth, Constants.SUGGESTION_LIST_MAXWIDTH);\n\n // value in pixels for the offsetLeft for the textArea\n const {top: txtAreaOffsetTop, left: txtAreaOffsetLft} = offsetTopLeft(textArea);\n\n // how many pixels to the right should be moved the suggestion box\n let pxToTheRight = (caretXCoordinateInTxtArea) - (pxToSubstract);\n\n // the x coordinate in the viewport of the suggestion box border-right\n const xBoxRightCoordinate = caretXCoordinateInTxtArea + txtAreaOffsetLft + suggestionBoxWidth;\n\n if (alignWithTextBox) {\n // when the list should be aligned with the textbox just set this value to 0\n pxToTheRight = 0;\n } else if (xBoxRightCoordinate > viewportWidth) {\n // if the right-border edge of the suggestion box will overflow the x-axis viewport\n // stick the suggestion list to the very right of the TextArea\n pxToTheRight = textAreaWidth - suggestionBoxWidth;\n }\n\n return {\n\n // The rough location of the caret in the textbox\n pixelsToMoveX: Math.max(0, Math.round(pxToTheRight)),\n pixelsToMoveY: Math.round(caretYCoordinateInTxtArea),\n\n // The line height of the textbox is needed so that the SuggestionList can adjust its position to be below the current line in the textbox\n lineHeight: Number(getComputedStyle(textArea)?.lineHeight.replace('px', '')),\n\n placementShift: txtAreaOffsetTop + caretYCoordinateInTxtArea + Constants.SUGGESTION_LIST_MAXHEIGHT > viewportHeight - Constants.POST_AREA_HEIGHT,\n };\n}\n\nexport function getPxToSubstract(char = '@') {\n // depending on the triggering character different values must be substracted\n if (char === '@') {\n // mention name padding-left 2.4rem as stated in suggestion-list__content .suggestion-list__item\n const mentionNamePaddingLft = convertEmToPixels(document.documentElement, Constants.MENTION_NAME_PADDING_LEFT);\n\n // half of width of avatar stated in .Avatar.Avatar-sm (24px)\n const avatarWidth = Constants.AVATAR_WIDTH * 0.5;\n return 5 + avatarWidth + mentionNamePaddingLft;\n } else if (char === '~') {\n return 39;\n } else if (char === ':') {\n return 32;\n }\n return 0;\n}\n\nexport function setSelectionRange(input: HTMLInputElement | HTMLTextAreaElement, selectionStart: number, selectionEnd: number) {\n input.focus();\n input.setSelectionRange(selectionStart, selectionEnd);\n}\n\nexport function setCaretPosition(input: HTMLInputElement, pos: number) {\n if (!input) {\n return;\n }\n\n setSelectionRange(input, pos, pos);\n}\n\nexport function isValidUsername(name: string) {\n let error;\n if (!name) {\n error = {\n id: ValidationErrors.USERNAME_REQUIRED,\n };\n } else if (name.length < Constants.MIN_USERNAME_LENGTH || name.length > Constants.MAX_USERNAME_LENGTH) {\n error = {\n id: ValidationErrors.INVALID_LENGTH,\n };\n } else if (!(/^[a-z0-9.\\-_]+$/).test(name)) {\n error = {\n id: ValidationErrors.INVALID_CHARACTERS,\n };\n } else if (!(/[a-z]/).test(name.charAt(0))) { //eslint-disable-line no-negated-condition\n error = {\n id: ValidationErrors.INVALID_FIRST_CHARACTER,\n };\n } else {\n for (const reserved of Constants.RESERVED_USERNAMES) {\n if (name === reserved) {\n error = {\n id: ValidationErrors.RESERVED_NAME,\n };\n break;\n }\n }\n }\n\n return error;\n}\n\nexport function isValidBotUsername(name: string) {\n let error = isValidUsername(name);\n if (error) {\n return error;\n }\n\n if (name.endsWith('.')) {\n error = {\n id: ValidationErrors.INVALID_LAST_CHARACTER,\n };\n }\n\n return error;\n}\n\nexport function loadImage(\n url: string,\n onLoad: ((this: XMLHttpRequest, ev: ProgressEvent) => any) | null,\n onProgress?: (completedPercentage: number) => any | null,\n) {\n const request = new XMLHttpRequest();\n\n request.open('GET', url, true);\n request.responseType = 'arraybuffer';\n request.onload = onLoad;\n request.onprogress = (e) => {\n if (onProgress) {\n let total = 0;\n if (e.lengthComputable) {\n total = e.total;\n } else {\n total = parseInt((e.target as any).getResponseHeader('X-Uncompressed-Content-Length'), 10);\n }\n\n const completedPercentage = Math.round((e.loaded / total) * 100);\n\n (onProgress as any)(completedPercentage);\n }\n };\n\n request.send();\n}\n\nfunction changeColor(colourIn: string, amt: number): string {\n let hex = colourIn;\n let lum = amt;\n\n // validate hex string\n hex = String(hex).replace(/[^0-9a-f]/gi, '');\n if (hex.length < 6) {\n hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];\n }\n lum = lum || 0;\n\n // convert to decimal and change luminosity\n let rgb = '#';\n let c;\n let i;\n for (i = 0; i < 3; i++) {\n c = parseInt(hex.substr(i * 2, 2), 16);\n c = Math.round(Math.min(Math.max(0, c + (c * lum)), 255)).toString(16);\n rgb += ('00' + c).substr(c.length);\n }\n\n return rgb;\n}\n\nexport function getFullName(user: UserProfile) {\n if (user.first_name && user.last_name) {\n return user.first_name + ' ' + user.last_name;\n } else if (user.first_name) {\n return user.first_name;\n } else if (user.last_name) {\n return user.last_name;\n }\n\n return '';\n}\n\nexport function getDisplayName(user: UserProfile) {\n if (user.nickname && user.nickname.trim().length > 0) {\n return user.nickname;\n }\n const fullName = getFullName(user);\n\n if (fullName) {\n return fullName;\n }\n\n return user.username;\n}\n\nexport function getLongDisplayName(user: UserProfile) {\n let displayName = '@' + user.username;\n const fullName = getFullName(user);\n if (fullName) {\n displayName = displayName + ' - ' + fullName;\n }\n if (user.nickname && user.nickname.trim().length > 0) {\n displayName = displayName + ' (' + user.nickname + ')';\n }\n\n if (user.position && user.position.trim().length > 0) {\n displayName = displayName + ' -' + user.position;\n }\n\n return displayName;\n}\n\nexport function getLongDisplayNameParts(user: UserProfile) {\n return {\n displayName: '@' + user.username,\n fullName: getFullName(user),\n nickname: user.nickname && user.nickname.trim() ? user.nickname : null,\n position: user.position && user.position.trim() ? user.position : null,\n };\n}\n\n/**\n * Gets the display name of the specified user, respecting the TeammateNameDisplay configuration setting\n */\nexport function getDisplayNameByUser(state: GlobalState, user?: UserProfile) {\n const teammateNameDisplay = getTeammateNameDisplaySetting(state);\n if (user) {\n return displayUsername(user, teammateNameDisplay);\n }\n\n return '';\n}\n\n/**\n * Gets the entire name, including username, full name, and nickname, of the specified user\n */\nexport function displayEntireNameForUser(user: UserProfile): React.ReactNode {\n if (!user) {\n return '';\n }\n\n let displayName: React.ReactNode = '';\n const fullName = getFullName(user);\n\n if (fullName) {\n displayName = ' - ' + fullName;\n }\n\n if (user.nickname) {\n displayName = displayName + ' (' + user.nickname + ')';\n }\n\n if (user.position) {\n displayName = displayName + ' - ' + user.position;\n }\n\n displayName = (\n \n {'@' + user.username}\n {displayName}\n \n );\n\n return displayName;\n}\n\n/**\n * Gets the full name and nickname of the specified user\n */\nexport function displayFullAndNicknameForUser(user: UserProfile) {\n if (!user) {\n return '';\n }\n\n let displayName;\n const fullName = getFullName(user);\n\n if (fullName && user.nickname) {\n displayName = (\n {fullName + ' (' + user.nickname + ')'}\n );\n } else if (fullName) {\n displayName = (\n {fullName}\n );\n } else if (user.nickname) {\n displayName = (\n {'(' + user.nickname + ')'}\n );\n }\n\n return displayName;\n}\n\nexport function imageURLForUser(userId: UserProfile['id'], lastPictureUpdate = 0) {\n return Client4.getUsersRoute() + '/' + userId + '/image?_=' + lastPictureUpdate;\n}\n\nexport function defaultImageURLForUser(userId: UserProfile['id']) {\n return Client4.getUsersRoute() + '/' + userId + '/image/default';\n}\n\n// in contrast to Client4.getTeamIconUrl, for ui logic this function returns null if last_team_icon_update is unset\nexport function imageURLForTeam(team: Team & {last_team_icon_update?: number}) {\n return team.last_team_icon_update ? Client4.getTeamIconUrl(team.id, team.last_team_icon_update) : null;\n}\n\n// Converts a file size in bytes into a human-readable string of the form '123MB'.\nexport function fileSizeToString(bytes: number) {\n // it's unlikely that we'll have files bigger than this\n if (bytes > 1024 ** 4) {\n // check if file is smaller than 10 to display fractions\n if (bytes < (1024 ** 4) * 10) {\n return (Math.round((bytes / (1024 ** 4)) * 10) / 10) + 'TB';\n }\n return Math.round(bytes / (1024 ** 4)) + 'TB';\n } else if (bytes > 1024 ** 3) {\n if (bytes < (1024 ** 3) * 10) {\n return (Math.round((bytes / (1024 ** 3)) * 10) / 10) + 'GB';\n }\n return Math.round(bytes / (1024 ** 3)) + 'GB';\n } else if (bytes > 1024 ** 2) {\n if (bytes < (1024 ** 2) * 10) {\n return (Math.round((bytes / (1024 ** 2)) * 10) / 10) + 'MB';\n }\n return Math.round(bytes / (1024 ** 2)) + 'MB';\n } else if (bytes > 1024) {\n return Math.round(bytes / 1024) + 'KB';\n }\n return bytes + 'B';\n}\n\n// Generates a RFC-4122 version 4 compliant globally unique identifier.\nexport function generateId() {\n // implementation taken from http://stackoverflow.com/a/2117523\n let id = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx';\n\n id = id.replace(/[xy]/g, (c) => {\n const r = Math.floor(Math.random() * 16);\n\n let v;\n if (c === 'x') {\n v = r;\n } else {\n v = (r & 0x3) | 0x8;\n }\n\n return v.toString(16);\n });\n\n return id;\n}\n\nexport function getDirectChannelName(id: string, otherId: string): string {\n let handle;\n\n if (otherId > id) {\n handle = id + '__' + otherId;\n } else {\n handle = otherId + '__' + id;\n }\n\n return handle;\n}\n\n// Used to get the id of the other user from a DM channel\nexport function getUserIdFromChannelName(channel: Channel) {\n return getUserIdFromChannelId(channel.name);\n}\n\n// Used to get the id of the other user from a DM channel id (id1_id2)\nexport function getUserIdFromChannelId(channelId: Channel['id'], currentUserId = getCurrentUserId(store.getState())) {\n const ids = channelId.split('__');\n let otherUserId = '';\n if (ids[0] === currentUserId) {\n otherUserId = ids[1];\n } else {\n otherUserId = ids[0];\n }\n\n return otherUserId;\n}\n\n// Should be refactored, seems to make most sense to wrap TextboxLinks in a connect(). To discuss\nexport function isFeatureEnabled(feature: {label: string}, state: GlobalState) {\n return getBool(state, Constants.Preferences.CATEGORY_ADVANCED_SETTINGS, Constants.FeatureTogglePrefix + feature.label);\n}\n\nexport function fillRecord(value: T, length: number): Record {\n const arr: Record = {};\n\n for (let i = 0; i < length; i++) {\n arr[i] = value;\n }\n\n return arr;\n}\n\n// Checks if a data transfer contains files not text, folders, etc..\n// Slightly modified from http://stackoverflow.com/questions/6848043/how-do-i-detect-a-file-is-being-dragged-rather-than-a-draggable-element-on-my-pa\nexport function isFileTransfer(files: DataTransfer) {\n if (UserAgent.isInternetExplorer() || UserAgent.isEdge()) {\n return files.types != null && files.types.includes('Files');\n }\n\n return files.types != null && (files.types.indexOf ? files.types.indexOf('Files') !== -1 : files.types.includes('application/x-moz-file'));\n}\n\nexport function isUriDrop(dataTransfer: DataTransfer) {\n if (UserAgent.isInternetExplorer() || UserAgent.isEdge() || UserAgent.isSafari()) {\n for (let i = 0; i < dataTransfer.items.length; i++) {\n if (dataTransfer.items[i].type === 'text/uri-list') {\n return true;\n }\n }\n }\n return false; // we don't care about others, they handle as we want it\n}\n\nexport function isTextTransfer(dataTransfer: DataTransfer) {\n return ['text/plain', 'text/unicode', 'Text'].some((type) => dataTransfer.types.includes(type));\n}\n\nexport function isTextDroppableEvent(e: Event) {\n return (e instanceof DragEvent) &&\n (e.target instanceof HTMLTextAreaElement || e.target instanceof HTMLInputElement) &&\n e.dataTransfer !== null &&\n isTextTransfer(e.dataTransfer);\n}\n\nexport function clearFileInput(elm: HTMLInputElement) {\n // clear file input for all modern browsers\n try {\n elm.value = '';\n if (elm.value) {\n elm.type = 'text';\n elm.type = 'file';\n }\n } catch (e) {\n // Do nothing\n }\n}\n\n/**\n * @deprecated Use react-intl instead, only place its usage can be justified is in the redux actions\n */\nexport function localizeMessage(id: string, defaultMessage?: string) {\n const state = store.getState();\n\n const locale = getCurrentLocale(state);\n const translations = getTranslations(state, locale);\n\n if (!translations || !(id in translations)) {\n return defaultMessage || id;\n }\n\n return translations[id];\n}\n\n/**\n * @deprecated If possible, use intl.formatMessage instead. If you have to use this, remember to mark the id using `t`\n */\nexport function localizeAndFormatMessage(id: string, defaultMessage: string, template: { [name: string]: any } | undefined) {\n const base = localizeMessage(id, defaultMessage);\n\n if (!template) {\n return base;\n }\n\n return base.replace(/{[\\w]+}/g, (match) => {\n const key = match.substr(1, match.length - 2);\n return template[key] || match;\n });\n}\n\nexport function mod(a: number, b: number): number {\n return ((a % b) + b) % b;\n}\n\nexport const REACTION_PATTERN = /^(\\+|-):([^:\\s]+):\\s*$/;\n\nexport function getPasswordConfig(config: Partial) {\n return {\n minimumLength: parseInt(config.PasswordMinimumLength!, 10),\n requireLowercase: config.PasswordRequireLowercase === 'true',\n requireUppercase: config.PasswordRequireUppercase === 'true',\n requireNumber: config.PasswordRequireNumber === 'true',\n requireSymbol: config.PasswordRequireSymbol === 'true',\n };\n}\n\nexport function isValidPassword(password: string, passwordConfig: ReturnType, intl?: IntlShape) {\n let errorId = t('user.settings.security.passwordError');\n const telemetryErrorIds = [];\n let valid = true;\n const minimumLength = passwordConfig.minimumLength || Constants.MIN_PASSWORD_LENGTH;\n\n if (password.length < minimumLength || password.length > Constants.MAX_PASSWORD_LENGTH) {\n valid = false;\n telemetryErrorIds.push({field: 'password', rule: 'error_length'});\n }\n\n if (passwordConfig.requireLowercase) {\n if (!password.match(/[a-z]/)) {\n valid = false;\n }\n\n errorId += 'Lowercase';\n telemetryErrorIds.push({field: 'password', rule: 'lowercase'});\n }\n\n if (passwordConfig.requireUppercase) {\n if (!password.match(/[A-Z]/)) {\n valid = false;\n }\n\n errorId += 'Uppercase';\n telemetryErrorIds.push({field: 'password', rule: 'uppercase'});\n }\n\n if (passwordConfig.requireNumber) {\n if (!password.match(/[0-9]/)) {\n valid = false;\n }\n\n errorId += 'Number';\n telemetryErrorIds.push({field: 'password', rule: 'number'});\n }\n\n if (passwordConfig.requireSymbol) {\n if (!password.match(/[ !\"\\\\#$%&'()*+,-./:;<=>?@[\\]^_`|~]/)) {\n valid = false;\n }\n\n errorId += 'Symbol';\n telemetryErrorIds.push({field: 'password', rule: 'symbol'});\n }\n\n let error;\n if (!valid) {\n error = intl ? (\n intl.formatMessage(\n {\n id: errorId,\n defaultMessage: 'Must be {min}-{max} characters long.',\n },\n {\n min: minimumLength,\n max: Constants.MAX_PASSWORD_LENGTH,\n },\n )\n ) : (\n \n );\n }\n\n return {valid, error, telemetryErrorIds};\n}\n\nfunction isChannelOrPermalink(link: string) {\n let match = (/\\/([a-z0-9\\-_]+)\\/channels\\/([a-z0-9\\-__][a-z0-9\\-__.]+)/).exec(link);\n if (match) {\n return {\n type: 'channel',\n teamName: match[1],\n channelName: match[2],\n };\n }\n match = (/\\/([a-z0-9\\-__]+)\\/pl\\/([a-z0-9]+)/).exec(link);\n if (match) {\n return {\n type: 'permalink',\n teamName: match[1],\n postId: match[2],\n };\n }\n return match;\n}\n\nexport async function handleFormattedTextClick(e: React.MouseEvent, currentRelativeTeamUrl = '') {\n const hashtagAttribute = (e.target as any).getAttributeNode('data-hashtag');\n const linkAttribute = (e.target as any).getAttributeNode('data-link');\n const channelMentionAttribute = (e.target as any).getAttributeNode('data-channel-mention');\n\n if (hashtagAttribute) {\n e.preventDefault();\n\n store.dispatch(searchForTerm(hashtagAttribute.value));\n } else if (linkAttribute) {\n const MIDDLE_MOUSE_BUTTON = 1;\n\n if (!(e.button === MIDDLE_MOUSE_BUTTON || e.altKey || e.ctrlKey || e.metaKey || e.shiftKey)) {\n e.preventDefault();\n\n const state = store.getState();\n const user = getCurrentUser(state);\n const match = isChannelOrPermalink(linkAttribute.value);\n const crtEnabled = isCollapsedThreadsEnabled(state);\n\n let isReply = false;\n\n if (isSystemAdmin(user.roles)) {\n if (match) {\n // Get team by name\n const {teamName} = match;\n let team = getTeamByName(state, teamName);\n if (!team) {\n const {data: teamData} = await store.dispatch(getTeamByNameAction(teamName));\n team = teamData;\n }\n if (team && team.delete_at === 0) {\n let channel;\n\n // Handle channel url - Get channel data from channel name\n if (match.type === 'channel') {\n const {channelName} = match;\n channel = getChannelsNameMapInTeam(state, team.id)[channelName as string];\n if (!channel) {\n const {data: channelData} = await store.dispatch(getChannelByNameAndTeamName(teamName, channelName!, true));\n channel = channelData;\n }\n } else { // Handle permalink - Get channel data from post\n const {postId} = match;\n let post = getPost(state, postId!);\n if (!post) {\n const {data: postData} = await store.dispatch(getPostAction(match.postId!));\n post = postData;\n }\n if (post) {\n isReply = Boolean(post.root_id);\n\n channel = getChannel(state, post.channel_id);\n if (!channel) {\n const {data: channelData} = await store.dispatch(getChannelAction(post.channel_id));\n channel = channelData;\n }\n }\n }\n if (channel && channel.type === Constants.PRIVATE_CHANNEL) {\n let member = getMyChannelMemberships(state)[channel.id];\n if (!member) {\n const membership = await store.dispatch(getChannelMember(channel.id, getCurrentUserId(state)));\n if ('data' in membership) {\n member = membership.data;\n }\n }\n if (!member) {\n const {data} = await store.dispatch(joinPrivateChannelPrompt(team, channel, false));\n if (data.join) {\n let error = false;\n if (!getTeamMemberships(state)[team.id]) {\n const joinTeamResult = await store.dispatch(addUserToTeam(team.id, user.id));\n error = joinTeamResult.error;\n }\n if (!error) {\n await store.dispatch(joinChannel(user.id, team.id, channel.id, channel.name));\n }\n } else {\n return;\n }\n }\n }\n }\n }\n }\n\n e.stopPropagation();\n\n if (match && match.type === 'permalink' && isTeamSameWithCurrentTeam(state, match.teamName) && isReply && crtEnabled) {\n store.dispatch(focusPost(match.postId ?? '', linkAttribute.value, user.id, {skipRedirectReplyPermalink: true}));\n } else {\n getHistory().push(linkAttribute.value);\n }\n }\n } else if (channelMentionAttribute) {\n e.preventDefault();\n getHistory().push(currentRelativeTeamUrl + '/channels/' + channelMentionAttribute.value);\n }\n}\n\nexport function isEmptyObject(object: any) {\n if (!object) {\n return true;\n }\n\n if (Object.keys(object).length === 0) {\n return true;\n }\n\n return false;\n}\n\nexport function removePrefixFromLocalStorage(prefix: string) {\n const keys = [];\n for (let i = 0; i < localStorage.length; i++) {\n if (localStorage.key(i)!.startsWith(prefix)) {\n keys.push(localStorage.key(i));\n }\n }\n\n for (let i = 0; i < keys.length; i++) {\n localStorage.removeItem(keys[i]!);\n }\n}\n\nexport function copyToClipboard(data: string) {\n // Attempt to use the newer clipboard API when possible\n const clipboard = navigator.clipboard;\n if (clipboard) {\n clipboard.writeText(data);\n return;\n }\n\n // creates a tiny temporary text area to copy text out of\n // see https://stackoverflow.com/a/30810322/591374 for details\n const textArea = document.createElement('textarea');\n textArea.style.position = 'fixed';\n textArea.style.top = '0';\n textArea.style.left = '0';\n textArea.style.width = '2em';\n textArea.style.height = '2em';\n textArea.style.padding = '0';\n textArea.style.border = 'none';\n textArea.style.outline = 'none';\n textArea.style.boxShadow = 'none';\n textArea.style.background = 'transparent';\n textArea.value = data;\n document.body.appendChild(textArea);\n textArea.select();\n document.execCommand('copy');\n document.body.removeChild(textArea);\n}\n\nexport function moveCursorToEnd(e: React.MouseEvent | React.FocusEvent) {\n const val = (e.target as any).value;\n if (val.length) {\n (e.target as any).value = '';\n (e.target as any).value = val;\n }\n}\n\nexport function setCSRFFromCookie() {\n if (typeof document !== 'undefined' && typeof document.cookie !== 'undefined') {\n const cookies = document.cookie.split(';');\n for (let i = 0; i < cookies.length; i++) {\n const cookie = cookies[i].trim();\n if (cookie.startsWith('MMCSRF=')) {\n Client4.setCSRF(cookie.replace('MMCSRF=', ''));\n break;\n }\n }\n }\n}\n\nexport function getNextBillingDate() {\n const nextBillingDate = moment().add(1, 'months').startOf('month');\n return nextBillingDate.format('MMM D, YYYY');\n}\n\nexport function stringToNumber(s: string | undefined) {\n if (!s) {\n return 0;\n }\n\n return parseInt(s, 10);\n}\n\nexport function deleteKeysFromObject(value: Record, keys: string[]) {\n for (const key of keys) {\n delete value[key];\n }\n return value;\n}\n\nfunction isSelection() {\n const selection = window.getSelection();\n return selection!.type === 'Range';\n}\n\nexport function isTextSelectedInPostOrReply(e: React.KeyboardEvent | KeyboardEvent) {\n const {id} = e.target as HTMLElement;\n\n const isTypingInPost = id === 'post_textbox';\n const isTypingInReply = id === 'reply_textbox';\n\n if (!isTypingInPost && !isTypingInReply) {\n return false;\n }\n\n const {\n selectionStart,\n selectionEnd,\n } = e.target as TextboxElement;\n\n const hasSelection = !isNil(selectionStart) && !isNil(selectionEnd) && selectionStart < selectionEnd;\n\n return hasSelection;\n}\n\n/*\n * Returns false when the element clicked or its ancestors\n * is a potential click target (link, button, image, etc..)\n * but not the events currentTarget\n * and true in any other case.\n *\n * @param {string} selector - CSS selector of elements not eligible for click\n * @returns {function}\n */\nexport function makeIsEligibleForClick(selector = '') {\n return (event: React.MouseEvent) => {\n const currentTarget = event.currentTarget;\n let node: HTMLElement = event.target as HTMLElement;\n\n if (isSelection()) {\n return false;\n }\n\n if (node === currentTarget) {\n return true;\n }\n\n // in the case of a react Portal\n if (!currentTarget.contains(node)) {\n return false;\n }\n\n // traverses the targets parents up to currentTarget to see\n // if any of them is a potentially clickable element\n while (node) {\n if (!node || node === currentTarget) {\n break;\n }\n\n if (\n CLICKABLE_ELEMENTS.includes(node.tagName.toLowerCase()) ||\n node.getAttribute('role') === 'button' ||\n (selector && node.matches(selector))\n ) {\n return false;\n }\n\n node = node.parentNode! as HTMLElement;\n }\n\n return true;\n };\n}\n\n// Returns the minimal number of zeroes needed to render a number,\n// up to the given number of places.\n// e.g.\n// numberToFixedDynamic(3.12345, 4) -> 3.1235\n// numberToFixedDynamic(3.01000, 4) -> 3.01\n// numberToFixedDynamic(3.01000, 1) -> 3\nexport function numberToFixedDynamic(num: number, places: number): string {\n const str = num.toFixed(Math.max(places, 0));\n if (!str.includes('.')) {\n return str;\n }\n let indexToExclude = -1;\n let i = str.length - 1;\n while (str[i] === '0') {\n indexToExclude = i;\n i -= 1;\n }\n if (str[i] === '.') {\n indexToExclude -= 1;\n }\n if (indexToExclude === -1) {\n return str;\n }\n return str.slice(0, indexToExclude);\n}\n\nconst TrackFlowRoles: Record = {\n fa: Constants.FIRST_ADMIN_ROLE,\n sa: General.SYSTEM_ADMIN_ROLE,\n su: General.SYSTEM_USER_ROLE,\n};\n\nexport function getTrackFlowRole() {\n const state = store.getState();\n let trackFlowRole = 'su';\n\n if (isFirstAdmin(state)) {\n trackFlowRole = 'fa';\n } else if (isSystemAdmin(getCurrentUser(state).roles)) {\n trackFlowRole = 'sa';\n }\n\n return trackFlowRole;\n}\n\nexport function getRoleForTrackFlow() {\n const startedByRole = TrackFlowRoles[getTrackFlowRole()];\n\n return {started_by_role: startedByRole};\n}\n\nexport function getSbr() {\n const params = new URLSearchParams(window.location.search);\n const sbr = params.get('sbr') ?? '';\n return sbr;\n}\n\nexport function getRoleFromTrackFlow() {\n const sbr = getSbr();\n const startedByRole = TrackFlowRoles[sbr] ?? '';\n\n return {started_by_role: startedByRole};\n}\n\nexport function getDatePickerLocalesForDateFns(locale: string, loadedLocales: Record) {\n if (locale && locale !== 'en' && !loadedLocales[locale]) {\n try {\n /* eslint-disable global-require */\n loadedLocales[locale] = require(`date-fns/locale/${locale}/index.js`);\n /* eslint-disable global-require */\n } catch (e) {\n console.log(e); // eslint-disable-line no-console\n }\n }\n\n return loadedLocales;\n}\n\nexport function getMediumFromTrackFlow() {\n const params = new URLSearchParams(window.location.search);\n const source = params.get('md') ?? '';\n\n return {source};\n}\n\nconst TrackFlowSources: Record = {\n wd: 'webapp-desktop',\n wm: 'webapp-mobile',\n d: 'desktop-app',\n};\n\nfunction getTrackFlowSource() {\n if (UserAgent.isMobile()) {\n return TrackFlowSources.wm;\n } else if (UserAgent.isDesktopApp()) {\n return TrackFlowSources.d;\n }\n return TrackFlowSources.wd;\n}\n\nexport function getSourceForTrackFlow() {\n return {source: getTrackFlowSource()};\n}\n\nexport function a11yFocus(element: HTMLElement | null | undefined, keyboardOnly = true) {\n document.dispatchEvent(new CustomEvent(\n A11yCustomEventTypes.FOCUS, {\n detail: {\n target: element,\n keyboardOnly,\n },\n },\n ));\n}\n\nexport function getBlankAddressWithCountry(country?: string): Address {\n let c = '';\n if (country) {\n c = getName(country) || '';\n }\n return {\n city: '',\n country: c || '',\n line1: '',\n line2: '',\n postal_code: '',\n state: '',\n };\n}\n\nexport function generateSlug(): string {\n return crypto.randomBytes(16).toString('hex');\n}\nexport function sortUsersAndGroups(a: UserProfile | Group, b: UserProfile | Group) {\n let aSortString = '';\n let bSortString = '';\n if ('username' in a) {\n aSortString = a.username;\n } else {\n aSortString = a.name;\n }\n if ('username' in b) {\n bSortString = b.username;\n } else {\n bSortString = b.name;\n }\n\n return aSortString.localeCompare(bSortString);\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport React from 'react';\nimport classNames from 'classnames';\nimport {Modal} from 'react-bootstrap';\nimport {FormattedMessage} from 'react-intl';\n\nimport './generic_modal.scss';\n\nexport type Props = {\n className?: string;\n onExited: () => void;\n modalHeaderText?: React.ReactNode;\n show?: boolean;\n handleCancel?: () => void;\n handleConfirm?: () => void;\n handleEnterKeyPress?: () => void;\n handleKeydown?: (event?: React.KeyboardEvent) => void;\n confirmButtonText?: React.ReactNode;\n confirmButtonClassName?: string;\n cancelButtonText?: React.ReactNode;\n cancelButtonClassName?: string;\n isConfirmDisabled?: boolean;\n isDeleteModal?: boolean;\n id: string;\n autoCloseOnCancelButton?: boolean;\n autoCloseOnConfirmButton?: boolean;\n enforceFocus?: boolean;\n container?: React.ReactNode | React.ReactNodeArray;\n ariaLabel?: string;\n errorText?: string | React.ReactNode;\n compassDesign?: boolean;\n backdrop?: boolean;\n backdropClassName?: string;\n tabIndex?: number;\n children: React.ReactNode;\n autoFocusConfirmButton?: boolean;\n keyboardEscape?: boolean;\n headerInput?: React.ReactNode;\n bodyPadding?: boolean;\n bodyDivider?: boolean;\n footerContent?: React.ReactNode;\n footerDivider?: boolean;\n appendedContent?: React.ReactNode;\n headerButton?: React.ReactNode;\n};\n\ntype State = {\n show: boolean;\n isFocalTrapActive: boolean;\n}\n\nexport class GenericModal extends React.PureComponent {\n static defaultProps: Partial = {\n show: true,\n id: 'genericModal',\n autoCloseOnCancelButton: true,\n autoCloseOnConfirmButton: true,\n enforceFocus: true,\n keyboardEscape: true,\n bodyPadding: true,\n };\n\n constructor(props: Props) {\n super(props);\n\n this.state = {\n show: props.show!,\n isFocalTrapActive: false,\n };\n }\n\n onHide = () => {\n this.setState({show: false});\n }\n\n handleCancel = (event: React.MouseEvent) => {\n event.preventDefault();\n if (this.props.autoCloseOnCancelButton) {\n this.onHide();\n }\n if (this.props.handleCancel) {\n this.props.handleCancel();\n }\n }\n\n handleConfirm = (event: React.MouseEvent) => {\n event.preventDefault();\n if (this.props.autoCloseOnConfirmButton) {\n this.onHide();\n }\n if (this.props.handleConfirm) {\n this.props.handleConfirm();\n }\n }\n\n private onEnterKeyDown = (event: React.KeyboardEvent) => {\n if (event.key === 'Enter') {\n if (event.nativeEvent.isComposing) {\n return;\n }\n if (this.props.autoCloseOnConfirmButton) {\n this.onHide();\n }\n if (this.props.handleEnterKeyPress) {\n this.props.handleEnterKeyPress();\n }\n }\n this.props.handleKeydown?.(event);\n }\n\n render() {\n let confirmButton;\n if (this.props.handleConfirm) {\n const isConfirmOrDeleteClassName = this.props.isDeleteModal ? 'delete' : 'confirm';\n let confirmButtonText: React.ReactNode = (\n \n );\n if (this.props.confirmButtonText) {\n confirmButtonText = this.props.confirmButtonText;\n }\n\n confirmButton = (\n \n {confirmButtonText}\n \n );\n }\n\n let cancelButton;\n if (this.props.handleCancel) {\n let cancelButtonText: React.ReactNode = (\n \n );\n if (this.props.cancelButtonText) {\n cancelButtonText = this.props.cancelButtonText;\n }\n\n cancelButton = (\n \n {cancelButtonText}\n \n );\n }\n\n const headerText = this.props.modalHeaderText && (\n
    \n \n {this.props.modalHeaderText}\n \n {this.props.headerButton}\n
    \n );\n\n return (\n \n \n \n {this.props.compassDesign && (\n <>\n {headerText}\n {this.props.headerInput}\n \n )}\n \n \n {this.props.compassDesign ? (\n this.props.errorText && (\n
    \n \n {this.props.errorText}\n
    \n )\n ) : (\n headerText\n )}\n
    \n {this.props.children}\n
    \n
    \n {(cancelButton || confirmButton || this.props.footerContent) && (\n \n {(cancelButton || confirmButton) ? (\n <>\n {cancelButton}\n {confirmButton}\n \n ) : (\n this.props.footerContent\n )}\n \n )}\n {Boolean(this.props.appendedContent) && this.props.appendedContent}\n
    \n \n );\n }\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport classNames from 'classnames';\nimport React from 'react';\nimport {useIntl} from 'react-intl';\n\nimport {ChevronLeftIcon, ChevronRightIcon} from '@mattermost/compass-icons/components';\n\nimport './footer_pagination.scss';\n\nconst BUTTON_ICON_SIZE = 16;\n\ntype Props = {\n page: number;\n total: number;\n itemsPerPage: number;\n onNextPage: (event: React.MouseEvent) => void;\n onPreviousPage: (event: React.MouseEvent) => void;\n};\n\nexport const FooterPagination = ({\n page,\n total,\n itemsPerPage,\n onNextPage,\n onPreviousPage,\n}: Props) => {\n const {formatMessage} = useIntl();\n\n const startCount = page * itemsPerPage;\n const endCount = Math.min(startCount + itemsPerPage, total);\n const totalPages = Math.trunc((total - 1) / itemsPerPage);\n\n const prevDisabled = page <= 0;\n const nextDisabled = page >= totalPages;\n\n return (\n
    \n
    \n {Boolean(total) && (\n formatMessage(\n {\n id: 'footer_pagination.count',\n defaultMessage: 'Showing {startCount, number}-{endCount, number} of {total, number}',\n },\n {\n startCount: startCount + 1,\n endCount,\n total,\n },\n )\n )}\n
    \n
    \n \n \n \n {formatMessage({\n id: 'footer_pagination.prev',\n defaultMessage: 'Previous',\n })}\n \n \n \n \n {formatMessage({\n id: 'footer_pagination.next',\n defaultMessage: 'Next',\n })}\n \n \n \n
    \n
    \n );\n};\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport styled, {keyframes} from 'styled-components';\n\nconst skeletonFade = keyframes`\n 0% { \n background-color: rgba(var(--center-channel-color-rgb), 0.08); \n }\n 50% { \n background-color: rgba(var(--center-channel-color-rgb), 0.16); \n }\n 100% { \n background-color: rgba(var(--center-channel-color-rgb), 0.08); \n }\n`;\n\nconst BaseLoader = styled.div`\n animation-duration: 1500ms;\n animation-iteration-count: infinite;\n animation-name: ${skeletonFade};\n animation-timing-function: ease-in-out;\n background-color: rgba(var(--center-channel-color-rgb), 0.08);\n`;\n\nexport interface CircleSkeletonLoaderProps {\n size: string | number;\n}\n\n/**\n * CircleSkeletonLoader is a component that renders a filled circle with a loading animation.\n * It is used to indicate that the content is loading.\n * @param props.size - The size of the circle. When in number, it is treated as pixels.\n * @example\n * \n * \n */\nexport const CircleSkeletonLoader = styled(BaseLoader)`\n display: block;\n border-radius: 50%;\n height: ${(props) => getCorrectSizeDimension(props.size)};\n width: ${(props) => getCorrectSizeDimension(props.size)};\n`;\n\nexport interface RectangleSkeletonLoaderProps {\n height: string | number;\n width?: string | number;\n borderRadius?: number;\n margin?: string;\n flex?: string;\n}\n\n/**\n * RectangleSkeletonLoader is a component that renders a filled rectangle with a loading animation.\n * It is used to indicate that the content is loading.\n * @param props.height - The height of the rectangle eg. 20, \"20em\", \"20%\". When in number, it is treated as pixels.\n * @param props.width - The width of the rectangle eg. 30, '100%'. When in number, it is treated as pixels.\n * @param props.borderRadius - The border radius of the rectangle eg. 4\n * @param props.margin - The margin of the rectangle eg. '0 10px', '10px 0 0 10px'\n * @param props.flex - The flex short hand of flex grow, shrink, basis of the rectangle, under flex parent css eg. '1 1 auto'\n * @default\n * width: 100% , borderRadius: 8px\n * @example\n * \n * \n */\nexport const RectangleSkeletonLoader = styled(BaseLoader)`\n height: ${(props) => getCorrectSizeDimension(props.height)};\n width: ${(props) => getCorrectSizeDimension(props.width, '100%')};\n border-radius: ${(props) => props?.borderRadius ?? 8}px;\n margin: ${(props) => props?.margin ?? null};\n flex: ${(props) => props?.flex ?? null};\n`;\n\nfunction getCorrectSizeDimension(size: number | string | undefined, fallback: string | null = null) {\n if (size) {\n return (typeof size === 'string') ? size : `${size}px`;\n }\n\n return fallback;\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport React from 'react';\n\nimport {Coords} from '../common/hooks/useMeasurePunchouts';\n\nimport './pulsating_dot.scss';\n\ntype Props = {\n targetRef?: React.RefObject;\n className?: string;\n onClick?: (e: React.MouseEvent) => void;\n coords?: Coords;\n}\n\nexport class PulsatingDot extends React.PureComponent {\n public render() {\n let customStyles = {};\n if (this.props?.coords) {\n customStyles = {\n transform: `translate(${this.props.coords?.x}px, ${this.props.coords?.y}px)`,\n };\n }\n let effectiveClassName = 'pulsating_dot';\n if (this.props.onClick) {\n effectiveClassName += ' pulsating_dot-clickable';\n }\n if (this.props.className) {\n effectiveClassName = effectiveClassName + ' ' + this.props.className;\n }\n\n return (\n \n );\n }\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport type {Props as PunchOutCoordsHeightAndWidth} from '../common/hooks/useMeasurePunchouts';\n\ntype Props = {\n overlayPunchOut: PunchOutCoordsHeightAndWidth | null;\n show: boolean;\n interactivePunchOut?: boolean;\n onDismiss?: (e: React.MouseEvent) => void;\n onPunchOut?: (e: React.MouseEvent) => void;\n appendTo: HTMLElement;\n transparent?: boolean;\n}\n\nconst TourTipRootPortal = ({children, show, element}: {children: React.ReactNode ; show: boolean; element: Element}) =>\n (show ? ReactDOM.createPortal(\n children,\n element,\n ) : null);\n\nexport const TourTipBackdrop = ({\n show,\n overlayPunchOut,\n interactivePunchOut,\n onDismiss,\n onPunchOut,\n appendTo,\n transparent,\n}: Props) => {\n const vertices = [];\n if (overlayPunchOut) {\n const {x, y, width, height} = overlayPunchOut;\n\n // draw to top left of punch out\n vertices.push('0% 0%');\n vertices.push('0% 100%');\n vertices.push('100% 100%');\n vertices.push('100% 0%');\n vertices.push(`${x} 0%`);\n vertices.push(`${x} ${y}`);\n\n // draw punch out\n vertices.push(`calc(${x} + ${width}) ${y}`);\n vertices.push(`calc(${x} + ${width}) calc(${y} + ${height})`);\n vertices.push(`${x} calc(${y} + ${height})`);\n vertices.push(`${x} ${y}`);\n\n // close off punch out\n vertices.push(`${x} 0%`);\n vertices.push('0% 0%');\n }\n const backdrop = (\n \n );\n const overlay = interactivePunchOut ? backdrop : (\n <>\n \n {backdrop}\n \n );\n\n return (\n \n {overlay}\n \n );\n};\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport React, {useRef, useState} from 'react';\nimport {FormattedMessage} from 'react-intl';\nimport Tippy from '@tippyjs/react';\nimport {Placement} from 'tippy.js';\nimport classNames from 'classnames';\n\nimport type {Props as PunchOutCoordsHeightAndWidth} from '../common/hooks/useMeasurePunchouts';\n\nimport 'tippy.js/dist/tippy.css';\nimport 'tippy.js/themes/light-border.css';\nimport 'tippy.js/animations/scale-subtle.css';\nimport 'tippy.js/animations/perspective-subtle.css';\nimport {PulsatingDot} from '../pulsating_dot';\n\nimport {TourTipBackdrop} from './tour_tip_backdrop';\nimport './tour_tip.scss';\n\nexport type TourTipEventSource = 'next' | 'prev' | 'dismiss' | 'jump' | 'skipped' | 'open' | 'punchOut'\n\ntype Props = {\n show: boolean;\n screen: JSX.Element;\n title: JSX.Element;\n step: number;\n\n tourSteps?: Record;\n nextBtn?: JSX.Element;\n prevBtn?: JSX.Element;\n imageURL?: string;\n singleTip?: boolean;\n showOptOut?: boolean;\n placement?: Placement;\n pulsatingDotPlacement?: Omit;\n pulsatingDotTranslate?: {x: number; y: number};\n offset?: [number, number];\n width?: string | number;\n zIndex?: number;\n className?: string;\n hideBackdrop?: boolean;\n tippyBlueStyle?: boolean;\n\n // if you don't want punchOut just assign null, keep null as hook may return null first than actual value\n overlayPunchOut: PunchOutCoordsHeightAndWidth | null;\n\n // if we want to interact with element visible via punchOut\n interactivePunchOut?: boolean;\n\n handleOpen?: (e: React.MouseEvent) => void;\n handleNext?: (e: React.MouseEvent) => void;\n handlePrevious?: (e: React.MouseEvent) => void;\n handleJump?: (e: React.MouseEvent, jumpToStep: number) => void;\n handleSkip?: (e: React.MouseEvent) => void;\n handleDismiss?: (e: React.MouseEvent) => void;\n handlePunchOut?: (e: React.MouseEvent) => void;\n}\n\nexport const TourTip = ({\n title,\n screen,\n imageURL,\n overlayPunchOut,\n singleTip,\n step,\n show,\n interactivePunchOut,\n tourSteps,\n handleOpen,\n handleDismiss,\n handleNext,\n handlePrevious,\n handleSkip,\n handleJump,\n handlePunchOut,\n pulsatingDotTranslate,\n pulsatingDotPlacement,\n nextBtn,\n prevBtn,\n className,\n offset = [-18, 4],\n placement = 'right-start',\n showOptOut = true,\n width = 352,\n zIndex = 999,\n hideBackdrop = false,\n tippyBlueStyle = false,\n}: Props) => {\n const FIRST_STEP_INDEX = 0;\n const triggerRef = useRef(null);\n const onJump = (event: React.MouseEvent, jumpToStep: number) => {\n handleJump?.(event, jumpToStep);\n };\n\n // This needs to be changed if root-portal node isn't available to maybe body\n const rootPortal = document.getElementById('root-portal');\n\n const dots = [];\n if (!singleTip && tourSteps) {\n for (let dot = FIRST_STEP_INDEX; dot < (Object.values(tourSteps).length - 1); dot++) {\n let className = 'tour-tip__dot';\n let circularRing = 'tour-tip__dot-ring';\n\n if (dot === step) {\n className += ' active';\n circularRing += ' tour-tip__dot-ring-active';\n }\n dots.push(\n
    \n onJump(e, dot)}\n />\n
    ,\n );\n }\n }\n\n const content = (\n <>\n \n

    \n {title}\n

    \n \n \n \n \n
    \n {screen}\n
    \n {imageURL && (\n
    \n \n
    \n )}\n {(nextBtn || prevBtn || showOptOut) && (
    \n
    \n
    {dots}
    \n
    \n {step !== 0 && prevBtn && (\n \n {prevBtn}\n \n )}\n {nextBtn && (\n \n {nextBtn}\n \n )}\n
    \n
    \n {showOptOut && (\n
    \n \n \n \n \n
    \n )}\n
    \n )}\n \n );\n\n return (\n <>\n \n \n \n \n {show && (\n \n )}\n \n );\n};\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport {useLayoutEffect, useMemo, useState} from 'react';\nimport throttle from 'lodash/throttle';\n\nimport {useElementAvailable} from './useElementAvailable';\n\nexport type Coords = {\n x?: string;\n y?: string;\n}\n\nexport type Props = Coords & {\n width: string;\n height: string;\n}\n\ntype PunchOutOffset = {\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\nexport const useMeasurePunchouts = (elementIds: string[], additionalDeps: any[], offset?: PunchOutOffset): Props | null => {\n const elementsAvailable = useElementAvailable(elementIds);\n const [size, setSize] = useState({x: window.innerWidth, y: window.innerHeight});\n const updateSize = throttle(() => {\n setSize({x: window.innerWidth, y: window.innerHeight});\n }, 100, {trailing: true});\n\n useLayoutEffect(() => {\n window.addEventListener('resize', updateSize);\n return () =>\n window.removeEventListener('resize', updateSize);\n }, []);\n\n const channelPunchout = useMemo(() => {\n let minX = Number.MAX_SAFE_INTEGER;\n let minY = Number.MAX_SAFE_INTEGER;\n let maxX = Number.MIN_SAFE_INTEGER;\n let maxY = Number.MIN_SAFE_INTEGER;\n for (let i = 0; i < elementIds.length; i++) {\n const rectangle = document.getElementById(elementIds[i])?.getBoundingClientRect();\n if (!rectangle) {\n return null;\n }\n if (rectangle.x < minX) {\n minX = rectangle.x;\n }\n if (rectangle.y < minY) {\n minY = rectangle.y;\n }\n if (rectangle.x + rectangle.width > maxX) {\n maxX = rectangle.x + rectangle.width;\n }\n if (rectangle.y + rectangle.height > maxY) {\n maxY = rectangle.y + rectangle.height;\n }\n }\n\n return {\n x: `${minX + (offset ? offset.x : 0)}px`,\n y: `${minY + (offset ? offset.y : 0)}px`,\n width: `${(maxX - minX) + (offset ? offset.width : 0)}px`,\n height: `${(maxY - minY) + (offset ? offset.height : 0)}px`,\n };\n }, [...elementIds, ...additionalDeps, size, elementsAvailable]);\n return channelPunchout;\n};\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport {useEffect, useRef, useState, useMemo} from 'react';\n\nexport function useElementAvailable(\n elementIds: string[],\n intervalMS = 250,\n): boolean {\n const checkAvailableInterval = useRef(null);\n const [available, setAvailable] = useState(false);\n useEffect(() => {\n if (available) {\n if (checkAvailableInterval.current) {\n clearInterval(checkAvailableInterval.current);\n checkAvailableInterval.current = null;\n }\n return;\n } else if (checkAvailableInterval.current) {\n return;\n }\n checkAvailableInterval.current = setInterval(() => {\n if (elementIds.every((x) => document.getElementById(x))) {\n setAvailable(true);\n if (checkAvailableInterval.current) {\n clearInterval(checkAvailableInterval.current);\n checkAvailableInterval.current = null;\n }\n }\n }, intervalMS);\n }, []);\n\n return useMemo(() => available, [available]);\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport {useEffect, useState} from 'react';\n\nexport const useFollowElementDimensions = (elementId: string): DOMRectReadOnly => {\n const [dimensions, setDimensions] = useState(new DOMRect());\n\n useEffect(() => {\n const element = document.getElementById(elementId);\n if (!element) {\n return undefined;\n }\n const observer = new ResizeObserver((entries) => {\n if (entries.length > 0) {\n setDimensions(entries[0].contentRect);\n }\n });\n observer.observe(element);\n\n return () => {\n observer.unobserve(element);\n };\n }, [elementId]);\n\n return dimensions;\n};\n","\"use strict\";\n// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PostPriority = void 0;\nvar PostPriority;\n(function (PostPriority) {\n PostPriority[\"URGENT\"] = \"urgent\";\n PostPriority[\"IMPORTANT\"] = \"important\";\n})(PostPriority = exports.PostPriority || (exports.PostPriority = {}));\n","var map = {\n\t\"./_lib/buildFormatLongFn/index.js\": 16676,\n\t\"./_lib/buildLocalizeFn/index.js\": 70610,\n\t\"./_lib/buildMatchFn/index.js\": 50793,\n\t\"./_lib/buildMatchPatternFn/index.js\": 67563,\n\t\"./af/_lib/formatDistance/index.js\": 16154,\n\t\"./af/_lib/formatLong/index.js\": 2256,\n\t\"./af/_lib/formatRelative/index.js\": 16611,\n\t\"./af/_lib/localize/index.js\": 37269,\n\t\"./af/_lib/match/index.js\": 24922,\n\t\"./af/index.js\": 91079,\n\t\"./ar-DZ/_lib/formatDistance/index.js\": 98063,\n\t\"./ar-DZ/_lib/formatLong/index.js\": 51387,\n\t\"./ar-DZ/_lib/formatRelative/index.js\": 52288,\n\t\"./ar-DZ/_lib/localize/index.js\": 26242,\n\t\"./ar-DZ/_lib/match/index.js\": 41291,\n\t\"./ar-DZ/index.js\": 74237,\n\t\"./ar-EG/_lib/formatDistance/index.js\": 70471,\n\t\"./ar-EG/_lib/formatLong/index.js\": 79777,\n\t\"./ar-EG/_lib/formatRelative/index.js\": 3137,\n\t\"./ar-EG/_lib/localize/index.js\": 69359,\n\t\"./ar-EG/_lib/match/index.js\": 11109,\n\t\"./ar-EG/index.js\": 63843,\n\t\"./ar-MA/_lib/formatDistance/index.js\": 60065,\n\t\"./ar-MA/_lib/formatLong/index.js\": 97576,\n\t\"./ar-MA/_lib/formatRelative/index.js\": 92005,\n\t\"./ar-MA/_lib/localize/index.js\": 80484,\n\t\"./ar-MA/_lib/match/index.js\": 59858,\n\t\"./ar-MA/index.js\": 19384,\n\t\"./ar-SA/_lib/formatDistance/index.js\": 70160,\n\t\"./ar-SA/_lib/formatLong/index.js\": 85665,\n\t\"./ar-SA/_lib/formatRelative/index.js\": 58328,\n\t\"./ar-SA/_lib/localize/index.js\": 93398,\n\t\"./ar-SA/_lib/match/index.js\": 70627,\n\t\"./ar-SA/index.js\": 11825,\n\t\"./ar-TN/_lib/formatDistance/index.js\": 76141,\n\t\"./ar-TN/_lib/formatLong/index.js\": 85483,\n\t\"./ar-TN/_lib/formatRelative/index.js\": 69277,\n\t\"./ar-TN/_lib/localize/index.js\": 51773,\n\t\"./ar-TN/_lib/match/index.js\": 93473,\n\t\"./ar-TN/index.js\": 94961,\n\t\"./ar/_lib/formatDistance/index.js\": 3330,\n\t\"./ar/_lib/formatLong/index.js\": 80805,\n\t\"./ar/_lib/formatRelative/index.js\": 37445,\n\t\"./ar/_lib/localize/index.js\": 87631,\n\t\"./ar/_lib/match/index.js\": 3384,\n\t\"./ar/index.js\": 45292,\n\t\"./az/_lib/formatDistance/index.js\": 72957,\n\t\"./az/_lib/formatLong/index.js\": 90815,\n\t\"./az/_lib/formatRelative/index.js\": 39864,\n\t\"./az/_lib/localize/index.js\": 76308,\n\t\"./az/_lib/match/index.js\": 37255,\n\t\"./az/index.js\": 28647,\n\t\"./be-tarask/_lib/formatDistance/index.js\": 41770,\n\t\"./be-tarask/_lib/formatLong/index.js\": 22730,\n\t\"./be-tarask/_lib/formatRelative/index.js\": 65358,\n\t\"./be-tarask/_lib/localize/index.js\": 41003,\n\t\"./be-tarask/_lib/match/index.js\": 79149,\n\t\"./be-tarask/index.js\": 18748,\n\t\"./be/_lib/formatDistance/index.js\": 47787,\n\t\"./be/_lib/formatLong/index.js\": 79352,\n\t\"./be/_lib/formatRelative/index.js\": 61226,\n\t\"./be/_lib/localize/index.js\": 19216,\n\t\"./be/_lib/match/index.js\": 37814,\n\t\"./be/index.js\": 26856,\n\t\"./bg/_lib/formatDistance/index.js\": 76705,\n\t\"./bg/_lib/formatLong/index.js\": 77604,\n\t\"./bg/_lib/formatRelative/index.js\": 52551,\n\t\"./bg/_lib/localize/index.js\": 35176,\n\t\"./bg/_lib/match/index.js\": 51563,\n\t\"./bg/index.js\": 34595,\n\t\"./bn/_lib/formatDistance/index.js\": 39542,\n\t\"./bn/_lib/formatLong/index.js\": 79733,\n\t\"./bn/_lib/formatRelative/index.js\": 70840,\n\t\"./bn/_lib/localize/index.js\": 58785,\n\t\"./bn/_lib/match/index.js\": 24943,\n\t\"./bn/index.js\": 94024,\n\t\"./bs/_lib/formatDistance/index.js\": 57287,\n\t\"./bs/_lib/formatLong/index.js\": 65412,\n\t\"./bs/_lib/formatRelative/index.js\": 39343,\n\t\"./bs/_lib/localize/index.js\": 84676,\n\t\"./bs/_lib/match/index.js\": 9966,\n\t\"./bs/index.js\": 18967,\n\t\"./ca/_lib/formatDistance/index.js\": 91262,\n\t\"./ca/_lib/formatLong/index.js\": 2529,\n\t\"./ca/_lib/formatRelative/index.js\": 38258,\n\t\"./ca/_lib/localize/index.js\": 32346,\n\t\"./ca/_lib/match/index.js\": 99150,\n\t\"./ca/index.js\": 9546,\n\t\"./cs/_lib/formatDistance/index.js\": 27717,\n\t\"./cs/_lib/formatLong/index.js\": 78341,\n\t\"./cs/_lib/formatRelative/index.js\": 66618,\n\t\"./cs/_lib/localize/index.js\": 91596,\n\t\"./cs/_lib/match/index.js\": 6236,\n\t\"./cs/index.js\": 486,\n\t\"./cy/_lib/formatDistance/index.js\": 34727,\n\t\"./cy/_lib/formatLong/index.js\": 75389,\n\t\"./cy/_lib/formatRelative/index.js\": 23302,\n\t\"./cy/_lib/localize/index.js\": 39952,\n\t\"./cy/_lib/match/index.js\": 82787,\n\t\"./cy/index.js\": 80914,\n\t\"./da/_lib/formatDistance/index.js\": 7727,\n\t\"./da/_lib/formatLong/index.js\": 60578,\n\t\"./da/_lib/formatRelative/index.js\": 76708,\n\t\"./da/_lib/localize/index.js\": 10725,\n\t\"./da/_lib/match/index.js\": 68319,\n\t\"./da/index.js\": 70862,\n\t\"./de-AT/_lib/localize/index.js\": 26080,\n\t\"./de-AT/index.js\": 42525,\n\t\"./de/_lib/formatDistance/index.js\": 70826,\n\t\"./de/_lib/formatLong/index.js\": 68027,\n\t\"./de/_lib/formatRelative/index.js\": 69378,\n\t\"./de/_lib/localize/index.js\": 19451,\n\t\"./de/_lib/match/index.js\": 13937,\n\t\"./de/index.js\": 35444,\n\t\"./el/_lib/formatDistance/index.js\": 59894,\n\t\"./el/_lib/formatLong/index.js\": 65598,\n\t\"./el/_lib/formatRelative/index.js\": 91836,\n\t\"./el/_lib/localize/index.js\": 8340,\n\t\"./el/_lib/match/index.js\": 67626,\n\t\"./el/index.js\": 52598,\n\t\"./en-AU/_lib/formatLong/index.js\": 52899,\n\t\"./en-AU/index.js\": 99489,\n\t\"./en-CA/_lib/formatDistance/index.js\": 18165,\n\t\"./en-CA/_lib/formatLong/index.js\": 12397,\n\t\"./en-CA/index.js\": 58542,\n\t\"./en-GB/_lib/formatLong/index.js\": 46680,\n\t\"./en-GB/index.js\": 57142,\n\t\"./en-IE/index.js\": 85898,\n\t\"./en-IN/_lib/formatLong/index.js\": 25487,\n\t\"./en-IN/index.js\": 53373,\n\t\"./en-NZ/_lib/formatLong/index.js\": 72434,\n\t\"./en-NZ/index.js\": 2586,\n\t\"./en-US/_lib/formatDistance/index.js\": 79754,\n\t\"./en-US/_lib/formatLong/index.js\": 28061,\n\t\"./en-US/_lib/formatRelative/index.js\": 60705,\n\t\"./en-US/_lib/localize/index.js\": 89107,\n\t\"./en-US/_lib/match/index.js\": 69546,\n\t\"./en-US/index.js\": 24541,\n\t\"./en-ZA/_lib/formatLong/index.js\": 82191,\n\t\"./en-ZA/index.js\": 70893,\n\t\"./eo/_lib/formatDistance/index.js\": 32424,\n\t\"./eo/_lib/formatLong/index.js\": 70148,\n\t\"./eo/_lib/formatRelative/index.js\": 28216,\n\t\"./eo/_lib/localize/index.js\": 15685,\n\t\"./eo/_lib/match/index.js\": 78930,\n\t\"./eo/index.js\": 91248,\n\t\"./es/_lib/formatDistance/index.js\": 66417,\n\t\"./es/_lib/formatLong/index.js\": 34583,\n\t\"./es/_lib/formatRelative/index.js\": 33244,\n\t\"./es/_lib/localize/index.js\": 22758,\n\t\"./es/_lib/match/index.js\": 57991,\n\t\"./es/index.js\": 71638,\n\t\"./et/_lib/formatDistance/index.js\": 55341,\n\t\"./et/_lib/formatLong/index.js\": 35223,\n\t\"./et/_lib/formatRelative/index.js\": 36011,\n\t\"./et/_lib/localize/index.js\": 69643,\n\t\"./et/_lib/match/index.js\": 51111,\n\t\"./et/index.js\": 19126,\n\t\"./eu/_lib/formatDistance/index.js\": 4399,\n\t\"./eu/_lib/formatLong/index.js\": 97765,\n\t\"./eu/_lib/formatRelative/index.js\": 56744,\n\t\"./eu/_lib/localize/index.js\": 34649,\n\t\"./eu/_lib/match/index.js\": 25334,\n\t\"./eu/index.js\": 74529,\n\t\"./fa-IR/_lib/formatDistance/index.js\": 43303,\n\t\"./fa-IR/_lib/formatLong/index.js\": 96046,\n\t\"./fa-IR/_lib/formatRelative/index.js\": 61095,\n\t\"./fa-IR/_lib/localize/index.js\": 12834,\n\t\"./fa-IR/_lib/match/index.js\": 53248,\n\t\"./fa-IR/index.js\": 84324,\n\t\"./fi/_lib/formatDistance/index.js\": 97916,\n\t\"./fi/_lib/formatLong/index.js\": 74913,\n\t\"./fi/_lib/formatRelative/index.js\": 80400,\n\t\"./fi/_lib/localize/index.js\": 73137,\n\t\"./fi/_lib/match/index.js\": 24855,\n\t\"./fi/index.js\": 73611,\n\t\"./fr-CA/_lib/formatLong/index.js\": 56568,\n\t\"./fr-CA/index.js\": 16904,\n\t\"./fr-CH/_lib/formatLong/index.js\": 43812,\n\t\"./fr-CH/_lib/formatRelative/index.js\": 77350,\n\t\"./fr-CH/index.js\": 43401,\n\t\"./fr/_lib/formatDistance/index.js\": 10837,\n\t\"./fr/_lib/formatLong/index.js\": 73669,\n\t\"./fr/_lib/formatRelative/index.js\": 57883,\n\t\"./fr/_lib/localize/index.js\": 34095,\n\t\"./fr/_lib/match/index.js\": 85668,\n\t\"./fr/index.js\": 91482,\n\t\"./fy/_lib/formatDistance/index.js\": 16070,\n\t\"./fy/_lib/formatLong/index.js\": 10120,\n\t\"./fy/_lib/formatRelative/index.js\": 29503,\n\t\"./fy/_lib/localize/index.js\": 767,\n\t\"./fy/_lib/match/index.js\": 70677,\n\t\"./fy/index.js\": 49280,\n\t\"./gd/_lib/formatDistance/index.js\": 69400,\n\t\"./gd/_lib/formatLong/index.js\": 36777,\n\t\"./gd/_lib/formatRelative/index.js\": 22525,\n\t\"./gd/_lib/localize/index.js\": 36299,\n\t\"./gd/_lib/match/index.js\": 50531,\n\t\"./gd/index.js\": 13081,\n\t\"./gl/_lib/formatDistance/index.js\": 74931,\n\t\"./gl/_lib/formatLong/index.js\": 94981,\n\t\"./gl/_lib/formatRelative/index.js\": 15049,\n\t\"./gl/_lib/localize/index.js\": 45916,\n\t\"./gl/_lib/match/index.js\": 33624,\n\t\"./gl/index.js\": 16826,\n\t\"./gu/_lib/formatDistance/index.js\": 19793,\n\t\"./gu/_lib/formatLong/index.js\": 56754,\n\t\"./gu/_lib/formatRelative/index.js\": 21794,\n\t\"./gu/_lib/localize/index.js\": 16444,\n\t\"./gu/_lib/match/index.js\": 65483,\n\t\"./gu/index.js\": 14098,\n\t\"./he/_lib/formatDistance/index.js\": 47531,\n\t\"./he/_lib/formatLong/index.js\": 43895,\n\t\"./he/_lib/formatRelative/index.js\": 70177,\n\t\"./he/_lib/localize/index.js\": 90972,\n\t\"./he/_lib/match/index.js\": 48106,\n\t\"./he/index.js\": 46873,\n\t\"./hi/_lib/formatDistance/index.js\": 67078,\n\t\"./hi/_lib/formatLong/index.js\": 42543,\n\t\"./hi/_lib/formatRelative/index.js\": 19656,\n\t\"./hi/_lib/localize/index.js\": 33757,\n\t\"./hi/_lib/match/index.js\": 27730,\n\t\"./hi/index.js\": 9602,\n\t\"./hr/_lib/formatDistance/index.js\": 33372,\n\t\"./hr/_lib/formatLong/index.js\": 53750,\n\t\"./hr/_lib/formatRelative/index.js\": 13148,\n\t\"./hr/_lib/localize/index.js\": 1604,\n\t\"./hr/_lib/match/index.js\": 15068,\n\t\"./hr/index.js\": 67116,\n\t\"./ht/_lib/formatDistance/index.js\": 62454,\n\t\"./ht/_lib/formatLong/index.js\": 59055,\n\t\"./ht/_lib/formatRelative/index.js\": 11748,\n\t\"./ht/_lib/localize/index.js\": 10287,\n\t\"./ht/_lib/match/index.js\": 48083,\n\t\"./ht/index.js\": 875,\n\t\"./hu/_lib/formatDistance/index.js\": 14026,\n\t\"./hu/_lib/formatLong/index.js\": 28475,\n\t\"./hu/_lib/formatRelative/index.js\": 50284,\n\t\"./hu/_lib/localize/index.js\": 50804,\n\t\"./hu/_lib/match/index.js\": 84902,\n\t\"./hu/index.js\": 71633,\n\t\"./hy/_lib/formatDistance/index.js\": 93284,\n\t\"./hy/_lib/formatLong/index.js\": 28737,\n\t\"./hy/_lib/formatRelative/index.js\": 22143,\n\t\"./hy/_lib/localize/index.js\": 27224,\n\t\"./hy/_lib/match/index.js\": 45273,\n\t\"./hy/index.js\": 73520,\n\t\"./id/_lib/formatDistance/index.js\": 36472,\n\t\"./id/_lib/formatLong/index.js\": 22219,\n\t\"./id/_lib/formatRelative/index.js\": 13397,\n\t\"./id/_lib/localize/index.js\": 42594,\n\t\"./id/_lib/match/index.js\": 47057,\n\t\"./id/index.js\": 34594,\n\t\"./is/_lib/formatDistance/index.js\": 67688,\n\t\"./is/_lib/formatLong/index.js\": 27268,\n\t\"./is/_lib/formatRelative/index.js\": 30286,\n\t\"./is/_lib/localize/index.js\": 45363,\n\t\"./is/_lib/match/index.js\": 85603,\n\t\"./is/index.js\": 84593,\n\t\"./it-CH/_lib/formatLong/index.js\": 88876,\n\t\"./it-CH/index.js\": 63213,\n\t\"./it/_lib/formatDistance/index.js\": 53230,\n\t\"./it/_lib/formatLong/index.js\": 16764,\n\t\"./it/_lib/formatRelative/index.js\": 95672,\n\t\"./it/_lib/localize/index.js\": 8801,\n\t\"./it/_lib/match/index.js\": 47645,\n\t\"./it/index.js\": 31233,\n\t\"./ja-Hira/_lib/formatDistance/index.js\": 10854,\n\t\"./ja-Hira/_lib/formatLong/index.js\": 22507,\n\t\"./ja-Hira/_lib/formatRelative/index.js\": 7459,\n\t\"./ja-Hira/_lib/localize/index.js\": 17530,\n\t\"./ja-Hira/_lib/match/index.js\": 21533,\n\t\"./ja-Hira/index.js\": 45524,\n\t\"./ja/_lib/formatDistance/index.js\": 66782,\n\t\"./ja/_lib/formatLong/index.js\": 13499,\n\t\"./ja/_lib/formatRelative/index.js\": 20871,\n\t\"./ja/_lib/localize/index.js\": 59405,\n\t\"./ja/_lib/match/index.js\": 75927,\n\t\"./ja/index.js\": 52090,\n\t\"./ka/_lib/formatDistance/index.js\": 7435,\n\t\"./ka/_lib/formatLong/index.js\": 93413,\n\t\"./ka/_lib/formatRelative/index.js\": 41362,\n\t\"./ka/_lib/localize/index.js\": 66408,\n\t\"./ka/_lib/match/index.js\": 50577,\n\t\"./ka/index.js\": 5900,\n\t\"./kk/_lib/formatDistance/index.js\": 39763,\n\t\"./kk/_lib/formatLong/index.js\": 85253,\n\t\"./kk/_lib/formatRelative/index.js\": 63227,\n\t\"./kk/_lib/localize/index.js\": 91212,\n\t\"./kk/_lib/match/index.js\": 49599,\n\t\"./kk/index.js\": 11283,\n\t\"./km/_lib/formatDistance/index.js\": 26583,\n\t\"./km/_lib/formatLong/index.js\": 88591,\n\t\"./km/_lib/formatRelative/index.js\": 9372,\n\t\"./km/_lib/localize/index.js\": 21547,\n\t\"./km/_lib/match/index.js\": 31963,\n\t\"./km/index.js\": 49582,\n\t\"./kn/_lib/formatDistance/index.js\": 44315,\n\t\"./kn/_lib/formatLong/index.js\": 62584,\n\t\"./kn/_lib/formatRelative/index.js\": 44616,\n\t\"./kn/_lib/localize/index.js\": 88831,\n\t\"./kn/_lib/match/index.js\": 64273,\n\t\"./kn/index.js\": 6869,\n\t\"./ko/_lib/formatDistance/index.js\": 78451,\n\t\"./ko/_lib/formatLong/index.js\": 87459,\n\t\"./ko/_lib/formatRelative/index.js\": 27733,\n\t\"./ko/_lib/localize/index.js\": 64726,\n\t\"./ko/_lib/match/index.js\": 24665,\n\t\"./ko/index.js\": 27478,\n\t\"./lb/_lib/formatDistance/index.js\": 80521,\n\t\"./lb/_lib/formatLong/index.js\": 12101,\n\t\"./lb/_lib/formatRelative/index.js\": 11252,\n\t\"./lb/_lib/localize/index.js\": 19986,\n\t\"./lb/_lib/match/index.js\": 22862,\n\t\"./lb/index.js\": 23850,\n\t\"./lt/_lib/formatDistance/index.js\": 91267,\n\t\"./lt/_lib/formatLong/index.js\": 35706,\n\t\"./lt/_lib/formatRelative/index.js\": 70152,\n\t\"./lt/_lib/localize/index.js\": 18286,\n\t\"./lt/_lib/match/index.js\": 77174,\n\t\"./lt/index.js\": 66426,\n\t\"./lv/_lib/formatDistance/index.js\": 57999,\n\t\"./lv/_lib/formatLong/index.js\": 91006,\n\t\"./lv/_lib/formatRelative/index.js\": 84717,\n\t\"./lv/_lib/localize/index.js\": 21451,\n\t\"./lv/_lib/match/index.js\": 57982,\n\t\"./lv/index.js\": 41919,\n\t\"./mk/_lib/formatDistance/index.js\": 36083,\n\t\"./mk/_lib/formatLong/index.js\": 36325,\n\t\"./mk/_lib/formatRelative/index.js\": 35771,\n\t\"./mk/_lib/localize/index.js\": 18122,\n\t\"./mk/_lib/match/index.js\": 5718,\n\t\"./mk/index.js\": 1573,\n\t\"./mn/_lib/formatDistance/index.js\": 67680,\n\t\"./mn/_lib/formatLong/index.js\": 21480,\n\t\"./mn/_lib/formatRelative/index.js\": 37182,\n\t\"./mn/_lib/localize/index.js\": 68249,\n\t\"./mn/_lib/match/index.js\": 32034,\n\t\"./mn/index.js\": 87616,\n\t\"./ms/_lib/formatDistance/index.js\": 16634,\n\t\"./ms/_lib/formatLong/index.js\": 18747,\n\t\"./ms/_lib/formatRelative/index.js\": 19574,\n\t\"./ms/_lib/localize/index.js\": 33270,\n\t\"./ms/_lib/match/index.js\": 27567,\n\t\"./ms/index.js\": 7362,\n\t\"./mt/_lib/formatDistance/index.js\": 31272,\n\t\"./mt/_lib/formatLong/index.js\": 49437,\n\t\"./mt/_lib/formatRelative/index.js\": 7568,\n\t\"./mt/_lib/localize/index.js\": 91478,\n\t\"./mt/_lib/match/index.js\": 92463,\n\t\"./mt/index.js\": 34610,\n\t\"./nb/_lib/formatDistance/index.js\": 8960,\n\t\"./nb/_lib/formatLong/index.js\": 30323,\n\t\"./nb/_lib/formatRelative/index.js\": 93182,\n\t\"./nb/_lib/localize/index.js\": 99424,\n\t\"./nb/_lib/match/index.js\": 90530,\n\t\"./nb/index.js\": 46139,\n\t\"./nl-BE/_lib/formatDistance/index.js\": 27410,\n\t\"./nl-BE/_lib/formatLong/index.js\": 92659,\n\t\"./nl-BE/_lib/formatRelative/index.js\": 17058,\n\t\"./nl-BE/_lib/localize/index.js\": 28024,\n\t\"./nl-BE/_lib/match/index.js\": 3791,\n\t\"./nl-BE/index.js\": 51597,\n\t\"./nl/_lib/formatDistance/index.js\": 4683,\n\t\"./nl/_lib/formatLong/index.js\": 55630,\n\t\"./nl/_lib/formatRelative/index.js\": 61177,\n\t\"./nl/_lib/localize/index.js\": 79340,\n\t\"./nl/_lib/match/index.js\": 15144,\n\t\"./nl/index.js\": 83735,\n\t\"./nn/_lib/formatDistance/index.js\": 45145,\n\t\"./nn/_lib/formatLong/index.js\": 9547,\n\t\"./nn/_lib/formatRelative/index.js\": 22824,\n\t\"./nn/_lib/localize/index.js\": 49514,\n\t\"./nn/_lib/match/index.js\": 38916,\n\t\"./nn/index.js\": 85716,\n\t\"./oc/_lib/formatDistance/index.js\": 96738,\n\t\"./oc/_lib/formatLong/index.js\": 70821,\n\t\"./oc/_lib/formatRelative/index.js\": 58927,\n\t\"./oc/_lib/localize/index.js\": 52289,\n\t\"./oc/_lib/match/index.js\": 57647,\n\t\"./oc/index.js\": 16112,\n\t\"./pl/_lib/formatDistance/index.js\": 29761,\n\t\"./pl/_lib/formatLong/index.js\": 23046,\n\t\"./pl/_lib/formatRelative/index.js\": 55191,\n\t\"./pl/_lib/localize/index.js\": 1294,\n\t\"./pl/_lib/match/index.js\": 79545,\n\t\"./pl/index.js\": 83277,\n\t\"./pt-BR/_lib/formatDistance/index.js\": 69679,\n\t\"./pt-BR/_lib/formatLong/index.js\": 92840,\n\t\"./pt-BR/_lib/formatRelative/index.js\": 38487,\n\t\"./pt-BR/_lib/localize/index.js\": 68009,\n\t\"./pt-BR/_lib/match/index.js\": 65841,\n\t\"./pt-BR/index.js\": 14503,\n\t\"./pt/_lib/formatDistance/index.js\": 96452,\n\t\"./pt/_lib/formatLong/index.js\": 97748,\n\t\"./pt/_lib/formatRelative/index.js\": 43078,\n\t\"./pt/_lib/localize/index.js\": 34865,\n\t\"./pt/_lib/match/index.js\": 49569,\n\t\"./pt/index.js\": 52848,\n\t\"./ro/_lib/formatDistance/index.js\": 51686,\n\t\"./ro/_lib/formatLong/index.js\": 8707,\n\t\"./ro/_lib/formatRelative/index.js\": 29209,\n\t\"./ro/_lib/localize/index.js\": 29789,\n\t\"./ro/_lib/match/index.js\": 95114,\n\t\"./ro/index.js\": 49189,\n\t\"./ru/_lib/formatDistance/index.js\": 95551,\n\t\"./ru/_lib/formatLong/index.js\": 38534,\n\t\"./ru/_lib/formatRelative/index.js\": 22853,\n\t\"./ru/_lib/localize/index.js\": 97741,\n\t\"./ru/_lib/match/index.js\": 62711,\n\t\"./ru/index.js\": 41787,\n\t\"./sk/_lib/formatDistance/index.js\": 73686,\n\t\"./sk/_lib/formatLong/index.js\": 64573,\n\t\"./sk/_lib/formatRelative/index.js\": 31344,\n\t\"./sk/_lib/localize/index.js\": 89521,\n\t\"./sk/_lib/match/index.js\": 28029,\n\t\"./sk/index.js\": 95304,\n\t\"./sl/_lib/formatDistance/index.js\": 13989,\n\t\"./sl/_lib/formatLong/index.js\": 97888,\n\t\"./sl/_lib/formatRelative/index.js\": 43498,\n\t\"./sl/_lib/localize/index.js\": 21312,\n\t\"./sl/_lib/match/index.js\": 40146,\n\t\"./sl/index.js\": 84103,\n\t\"./sq/_lib/formatDistance/index.js\": 25806,\n\t\"./sq/_lib/formatLong/index.js\": 68823,\n\t\"./sq/_lib/formatRelative/index.js\": 1227,\n\t\"./sq/_lib/localize/index.js\": 78639,\n\t\"./sq/_lib/match/index.js\": 5834,\n\t\"./sq/index.js\": 92674,\n\t\"./sr-Latn/_lib/formatDistance/index.js\": 73691,\n\t\"./sr-Latn/_lib/formatLong/index.js\": 75189,\n\t\"./sr-Latn/_lib/formatRelative/index.js\": 37323,\n\t\"./sr-Latn/_lib/localize/index.js\": 60134,\n\t\"./sr-Latn/_lib/match/index.js\": 46639,\n\t\"./sr-Latn/index.js\": 62863,\n\t\"./sr/_lib/formatDistance/index.js\": 90167,\n\t\"./sr/_lib/formatLong/index.js\": 61625,\n\t\"./sr/_lib/formatRelative/index.js\": 39020,\n\t\"./sr/_lib/localize/index.js\": 2621,\n\t\"./sr/_lib/match/index.js\": 68158,\n\t\"./sr/index.js\": 23112,\n\t\"./sv/_lib/formatDistance/index.js\": 53623,\n\t\"./sv/_lib/formatLong/index.js\": 26135,\n\t\"./sv/_lib/formatRelative/index.js\": 56401,\n\t\"./sv/_lib/localize/index.js\": 67243,\n\t\"./sv/_lib/match/index.js\": 58153,\n\t\"./sv/index.js\": 43308,\n\t\"./ta/_lib/formatDistance/index.js\": 53508,\n\t\"./ta/_lib/formatLong/index.js\": 82112,\n\t\"./ta/_lib/formatRelative/index.js\": 88564,\n\t\"./ta/_lib/localize/index.js\": 12711,\n\t\"./ta/_lib/match/index.js\": 63163,\n\t\"./ta/index.js\": 67570,\n\t\"./te/_lib/formatDistance/index.js\": 46977,\n\t\"./te/_lib/formatLong/index.js\": 36054,\n\t\"./te/_lib/formatRelative/index.js\": 37919,\n\t\"./te/_lib/localize/index.js\": 2914,\n\t\"./te/_lib/match/index.js\": 25316,\n\t\"./te/index.js\": 75790,\n\t\"./th/_lib/formatDistance/index.js\": 16287,\n\t\"./th/_lib/formatLong/index.js\": 72363,\n\t\"./th/_lib/formatRelative/index.js\": 97471,\n\t\"./th/_lib/localize/index.js\": 71747,\n\t\"./th/_lib/match/index.js\": 81831,\n\t\"./th/index.js\": 32746,\n\t\"./tr/_lib/formatDistance/index.js\": 50985,\n\t\"./tr/_lib/formatLong/index.js\": 48428,\n\t\"./tr/_lib/formatRelative/index.js\": 85567,\n\t\"./tr/_lib/localize/index.js\": 77650,\n\t\"./tr/_lib/match/index.js\": 76503,\n\t\"./tr/index.js\": 38126,\n\t\"./ug/_lib/formatDistance/index.js\": 15282,\n\t\"./ug/_lib/formatLong/index.js\": 60630,\n\t\"./ug/_lib/formatRelative/index.js\": 89065,\n\t\"./ug/_lib/localize/index.js\": 67074,\n\t\"./ug/_lib/match/index.js\": 72934,\n\t\"./ug/index.js\": 87048,\n\t\"./uk/_lib/formatDistance/index.js\": 33057,\n\t\"./uk/_lib/formatLong/index.js\": 23500,\n\t\"./uk/_lib/formatRelative/index.js\": 53506,\n\t\"./uk/_lib/localize/index.js\": 2820,\n\t\"./uk/_lib/match/index.js\": 62082,\n\t\"./uk/index.js\": 12083,\n\t\"./uz-Cyrl/_lib/formatDistance/index.js\": 85237,\n\t\"./uz-Cyrl/_lib/formatLong/index.js\": 65936,\n\t\"./uz-Cyrl/_lib/formatRelative/index.js\": 26896,\n\t\"./uz-Cyrl/_lib/localize/index.js\": 36517,\n\t\"./uz-Cyrl/_lib/match/index.js\": 43011,\n\t\"./uz-Cyrl/index.js\": 77769,\n\t\"./uz/_lib/formatDistance/index.js\": 61590,\n\t\"./uz/_lib/formatLong/index.js\": 16911,\n\t\"./uz/_lib/formatRelative/index.js\": 11459,\n\t\"./uz/_lib/localize/index.js\": 48185,\n\t\"./uz/_lib/match/index.js\": 12904,\n\t\"./uz/index.js\": 1628,\n\t\"./vi/_lib/formatDistance/index.js\": 26747,\n\t\"./vi/_lib/formatLong/index.js\": 98521,\n\t\"./vi/_lib/formatRelative/index.js\": 91252,\n\t\"./vi/_lib/localize/index.js\": 35144,\n\t\"./vi/_lib/match/index.js\": 23557,\n\t\"./vi/index.js\": 13730,\n\t\"./zh-CN/_lib/formatDistance/index.js\": 2374,\n\t\"./zh-CN/_lib/formatLong/index.js\": 10872,\n\t\"./zh-CN/_lib/formatRelative/index.js\": 31482,\n\t\"./zh-CN/_lib/localize/index.js\": 85857,\n\t\"./zh-CN/_lib/match/index.js\": 14083,\n\t\"./zh-CN/index.js\": 2039,\n\t\"./zh-HK/_lib/formatDistance/index.js\": 81488,\n\t\"./zh-HK/_lib/formatLong/index.js\": 7073,\n\t\"./zh-HK/_lib/formatRelative/index.js\": 64171,\n\t\"./zh-HK/_lib/localize/index.js\": 78405,\n\t\"./zh-HK/_lib/match/index.js\": 65346,\n\t\"./zh-HK/index.js\": 61987,\n\t\"./zh-TW/_lib/formatDistance/index.js\": 20341,\n\t\"./zh-TW/_lib/formatLong/index.js\": 21289,\n\t\"./zh-TW/_lib/formatRelative/index.js\": 23514,\n\t\"./zh-TW/_lib/localize/index.js\": 41262,\n\t\"./zh-TW/_lib/match/index.js\": 86287,\n\t\"./zh-TW/index.js\": 27566\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 25836;"],"names":["openDirectChannelToUserId","userId","async","dispatch","getState","state","currentUserId","getCurrentUserId","channelName","getDirectChannelName","channel","getChannelByName","ChannelActions","trackEvent","now","Date","prefDirect","category","Preferences","name","value","prefOpenTime","id","toString","actions","type","PreferenceTypes","data","batchActions","savePreferences","_objectSpread","user_id","openGroupChannelToUserIds","userIds","result","error","getHistory","push","getCurrentTeamUrl","loadChannelsForCurrentUser","unreads","getUnreadChannelIds","getCurrentTeamId","getChannel","Constants","loadNewDMIfNeeded","loadNewGMIfNeeded","loadProfilesForSidebar","autocompleteChannels","term","success","teamId","err","server_error_id","autocompleteChannelsForSearch","addUsersToChannel","channelId","requests","map","uId","Promise","all","unmuteChannel","mark_unread","NotificationLevels","muteChannel","loadRecentlyUsedCustomEmojis","getCustomEmojisEnabled","recentEmojiNames","getRecentEmojisNames","EmojiActions","incrementEmojiPickerPage","ActionTypes","setUserSkinTone","skin","skinTonePreference","addRecentEmoji","alias","addRecentEmojis","MAXIMUM_RECENT_EMOJI","aliases","recentEmojis","getRecentEmojisData","emojiMap","getEmojiMap","updatedRecentEmojis","emoji","get","short_name","currentEmojiIndexInRecentList","findIndex","recentEmoji","currentEmojiInRecentList","updatedCurrentEmojiData","usageCount","splice","slice","currentEmojiData","sort","emojiA","emojiB","JSON","stringify","loadCustomEmojisForCustomStatusesByUserIds","getCustomStatus","makeGetCustomStatus","customEmojiEnabled","isCustomEmojiEnabled","customStatusEnabled","isCustomStatusEnabled","emojisToLoad","Set","forEach","customStatus","add","loadCustomEmojisIfNeeded","Array","from","loadCustomEmojisForRecentCustomStatuses","recentCustomStatusesValue","ReduxPreferences","recentCustomStatuses","parse","emojis","length","systemEmojis","EmojiIndicesByAlias","customEmojisByName","selectCustomEmojisByName","nonExistentCustomEmoji","entities","nonExistentEmoji","has","loadCustomStatusEmojisForPostList","posts","Object","keys","postId","post","migrateRecentEmojis","recentEmojisFromPreference","recentEmojisFromLocalStorage","LocalStorageStore","parsedRecentEmojisFromLocalStorage","toSetRecentEmojiData","emojiName","runMessageWillBePostedHooks","originalPost","hooks","plugins","components","MessageWillBePosted","hook","runSlashCommandWillBePostedHooks","originalMessage","originalArgs","SlashCommandWillBePosted","message","args","runMessageWillBeUpdatedHooks","newPost","oldPost","MessageWillBeUpdated","runDesktopNotificationHooks","msgProps","DesktopNotificationHooks","nextArgs","NOTIFY_TEXT_MAX_LENGTH","WINDOWS_NOTIFY_TEXT_MAX_LENGTH","getSoundFromChannelMemberAndUser","member","user","_member$notify_props","notify_props","desktop_sound","getNotificationSoundFromChannelMemberAndUser","_member$notify_props2","_user$notify_props","desktop_notification_sound","sendDesktopNotification","_member$notify_props3","_user$notify_props3","props","from_webhook","isSystemMessage","isUserAddedInChannel","userFromPost","getUser","missingProfileResponse","getProfilesByIds","mentions","followers","team_id","makeGetChannel","channel_id","getCurrentUser","userStatus","getStatusForUserId","getMyChannelMember","isCrtReply","isCollapsedThreadsEnabled","root_id","isChannelMuted","UserStatuses","channelNotifyProp","desktop","notifyLevel","_user$notify_props2","_member$notify_props4","text","attachments","appendText","toAppend","concat","attachment","pretext","title","footer","fields","field","e","console","log","allMentions","getAllUserMentionKeys","ignoreChannelMentionProp","ignore_channel_mentions","IgnoreChannelMentions","ignoreChannelMention","_user$notify_props4","mentionableText","formatWithRenderer","MentionableRenderer","isExplicitlyMentioned","mention","key","includes","pattern","flags","caseSensitive","cjkrPattern","RegExp","escapeRegex","test","indexOf","channel_type","config","getConfig","username","override_username","EnablePostUsernameOverride","displayUsername","getTeammateNameDisplaySetting","Utils","display_name","channel_display_name","channel_name","t","notifyText","msgPropsPost","image","fallback","image_url","strippedMarkdownNotifyText","stripMarkdown","notifyTextMaxLength","isWindowsApp","substring","body","otherFile","sound","activeChannel","getCurrentChannel","notify","isThreadOpen","views","browser","focused","soundName","updatedState","url","getChannelURL","getPermalinkURL","silent","hookResult","logError","notifyMe","isDesktopApp","isMobileApp","NotificationSounds","DesktopApp","showNotification","requireInteraction","onClick","window","focus","catch","ReactionLimitReachedModal","isAdmin","React","FormattedMessage","defaultMessage","values","link","msg","ExternalLink","href","linkAdmin","Link","onExited","to","GenericModal","modalHeaderText","compassDesign","confirmButtonText","handleConfirm","handleNewPost","websocketMessageProps","myChannelMember","getMyChannelMemberSelector","myChannelMemberDoesntExist","constructor","fetchedChannelMember","rootPost","PostSelectors","PostActions","getCurrentChannelId","amount","collapsedThreadsEnabled","isCRTReply","_post$metadata","_post$metadata$priori","shouldIgnorePost","markAsRead","markAsReadOnServer","isManuallyUnread","isFromWebhook","isActive","markChannelAsViewedOnServer","actionsToMarkChannelAsRead","actionsToMarkChannelAsUnread","metadata","priority","setChannelReadAndViewed","getThreadLastViewedAt","makeGetThreadLastViewedAt","thread","getThread","last_reply_at","updateThreadLastOpened","create_at","setThreadRead","completePostReceive","getPostsForIds","flagPost","getRhsState","RHSStates","addPostToSearchResults","unflagPost","removePostFromSearchResults","createPost","files","matchEmoticons","trimmedEmojis","rootPostId","UserAgent","StorageActions","submitReaction","action","isReactionAlreadyAddedToPost","makeGetIsReactionAlreadyAddedToPost","getIsReactionAlreadyAddedToPost","addReaction","toggleReaction","getUniqueEmojiNameReactionsForPost","makeGetUniqueEmojiNameReactionsForPost","_getUniqueEmojiNameRe","uniqueEmojiNames","Number","UniqueEmojiReactionLimitPerPost","some","openModal","modalId","ModalIdentifiers","dialogType","dialogProps","isCurrentUserSystemAdmin","closeModal","searchForTerm","RhsActions","results","search","reduce","acc","newResults","a","b","comparePosts","SearchTypes","order","index","pinPost","unpinPost","setEditingPost","arguments","undefined","refocusId","isRHS","pending_post_id","general","license","canEditNow","canEditPost","show","unsetEditingPost","markPostAsUnread","location","currentTeamId","threadId","ThreadActions","manuallyMarkThreadAsUnread","markMostRecentPostInChannelAsUnread","deleteAndRemovePost","getSelectedPostId","timestamp","getSelectedPostCardId","StoragePrefixes","getGlobalItem","removeDraft","toggleEmbedVisibility","visible","isEmbedVisible","resetEmbedVisibility","toggleInlineImageVisibility","imageKey","isInlineImageVisible","resetInlineImageVisibility","emitShortcutReactToLastPostFrom","emittedFrom","payload","loadStatusesForChannelAndSidebar","statusesToLoad","postsInChannel","getPostsInCurrentChannel","postVisibility","dmPrefs","getDirectShowPreferences","pref","loadStatusesByIds","loadStatusesForProfilesList","users","i","loadStatusesForProfilesMap","hasOwnProperty","call","getStatusesByIds","loadProfilesMissingStatus","statuses","missingStatusByIds","filter","intervalId","stopPeriodicStatusUpdates","clearInterval","removeUserFromTeamAndGetStats","response","TeamActions","getChannelStats","addUserToTeamFromInvite","token","inviteId","TeamTypes","delete_at","msg_count","mention_count","addUserToTeam","addUsersToTeam","switchTeam","team","selectTeam","updateTeamsOrderForUser","teamIds","teamOrderPreferences","join","getGroupMessageMembersCommonTeams","teams","Client4","SUPPORTS_CLEAR_MARKS","isSupported","performance","clearMarks","SUPPORTS_MARK","mark","SUPPORTS_MEASURE_METHODS","measure","getEntries","getEntriesByName","clearMeasures","HEADER_X_PAGE_LOAD_CONTEXT","shouldTrackPerformance","store","isDevModeEnabled","DiagnosticsEnabled","isTelemetryEnabled","event","isPerformanceDebuggingEnabled","getBool","entries","_ref","pageVisited","names","requestObserver","PerformanceObserver","entry","initiatorType","requestCount","observe","buffered","requestCountAtMark","updateRequestCountAtMark","name1","name2","duration","measurementName","performanceEntries","every","find","item","entryName","entriesWithName","mostRecentDurationByEntryName","getRequestCountAtMark","measurePageLoadTelemetry","timing","loadEventEnd","navigationStart","getEntriesByType","setTimeout","pageLoadTime","numOfRequest","maxAPIResourceSize","longestAPIResource","longestAPIResourceDuration","resourceTimingEntry","_resourceTimingEntry$","_resourceTimingEntry$2","_resourceTimingEntry$3","Math","max","encodedBodySize","responseEnd","startTime","split","checks","len","trackPluginInitialization","resourceEntries","Infinity","endTime","totalDuration","totalSize","plugin","filename","webapp","bundle_path","lastIndexOf","resource","r","endsWith","min","count","trackSelectorMetrics","_selectors$","_selectors$2","_selectors$3","_selectors$4","_selectors$5","_selectors$6","_selectors$7","_selectors$8","_selectors$9","selectors","getSortedTrackedSelectors","after","first","first_effectiveness","effectiveness","first_recomputations","recomputations","second","second_effectiveness","second_recomputations","third","third_effectiveness","third_recomputations","_requestCountAtMark$n","temporarilySetPageLoadContext","pageLoadContext","queue","PQueue","concurrency","loadProfilesAndReloadTeamMembers","page","perPage","options","doDispatch","doGetState","newTeamId","UserActions","loadTeamMembersForProfilesList","loadProfilesAndReloadChannelMembers","newChannelId","loadChannelMembersForProfilesList","loadProfilesAndTeamMembers","searchProfilesAndTeamMembers","searchProfilesAndChannelMembers","in_channel_id","loadProfilesAndTeamMembersAndChannelMembers","teamIdParam","channelIdParam","listData","profiles","reloadAllMembers","membersToLoad","pid","getTeamMember","userIdsToLoad","getTeamMembersByIds","loadProfilesWithoutTeam","loadTeamMembersAndChannelMembersForProfilesList","members","getChannelMembersInChannels","list","getChannelMembersByIds","Selectors","checkPreference","loadProfilesForDM","getChannelAndMyMember","loadProfilesForGM","loadProfilesForGroupChannels","groupChannels","userIdsInChannels","groupChannelsToFetch","size","getGMsForLoading","channels","getDisplayedChannels","General","newPreferences","collapsedThreads","userIdsForLoadingCustomEmojis","messageCount","getChannelMessageCount","calculateUnreadCount","showUnread","getProfilesAction","onEmpty","getMyChannels","profilesToLoad","profileIds","teammateId","replace","unreadCount","autocompleteUsersInTeam","autocompleteUsers","autoResetStatus","status","manual","PreferencesRedux","getDrafts","getLocalDrafts","makeGetDrafts","serverDrafts","draft","transformServerDraft","localDrafts","drafts","draftsMap","Map","currentDraft","set","setGlobalItem","rootId","fileInfos","uploadsInProgress","syncedDraftsAreAllowedAndEnabled","connectionId","getConnectionId","updateDraft","save","updatedValue","getTime","createAt","updateAt","setGlobalDraft","_draft$metadata","fileIds","file","newDraft","update_at","file_ids","upsertDraft","setDraftsTourTipPreference","initializationState","preference","isRemote","setGlobalDraftSource","_draft$metadata2","modalData","selectPostFromRightHandSideSearchWithPreviousState","previousRhsState","postRootId","updateRhsState","rhsState","openShowEditHistory","goBack","prevState","getPreviousRhsState","selectPostFromRightHandSideSearch","selectPostFromRightHandSideSearchByPostId","getPost","updateSearchTerms","terms","setRhsSize","rhsSize","newSidebarSize","width","innerWidth","SidebarSize","updateSearchTermsForShortcut","currentChannelName","getCurrentChannelNameForSearchShortcut","updateSearchType","searchType","updateSearchResultsTerms","performSearch","isMentionSearch","searchTerms","viewArchivedChannels","ExperimentalViewArchivedChannels","extensionsFilters","getFilesSearchExtFilter","extensions","ext","termsWithExtensionsFilters","trim","termsArr","Boolean","quotedUsername","userCurrentTimezone","getCurrentTimezone","timezoneOffset","getUtcOffsetForTimeZone","getBrowserUtcOffset","messagesPromise","searchPostsWithParams","is_or_search","include_deleted_channels","time_zone_offset","per_page","filesPromise","searchFilesWithParams","filterFilesSearchByExt","showSearchResults","getSearchTerms","showRHSPlugin","pluggableId","showChannelMembers","inEditingMode","setEditChannelMembers","hideRHSPlugin","getPluggableId","closeRightHandSide","toggleRHSPlugin","showFlaggedPosts","getFlaggedPosts","isOrSearch","showPinnedPosts","currentChannelId","getPinnedPosts","showChannelFiles","fileData","missingPostIds","file_infos","post_id","getPostsByIds","showMentions","getCurrentUserMentionKeys","_ref2","showChannelInfo","actionsBatch","toggleMenu","openMenu","closeMenu","setRhsExpanded","expanded","toggleRhsExpanded","selectPost","selectPostById","_getPost","fetchPost","getChannelSelector","highlightReply","clearHighlightReply","debouncedClearHighlightReply","debounce","selectPostAndHighlight","selectPostCard","openRHSSearch","clearSearch","openAtPrevious","previous","isChannelInfo","isChannelMembers","isPinnedPosts","isFlaggedPosts","selectedPostId","selectedPostCardId","selectPostCardFromRightHandSideSearchWithPreviousState","searchVisible","suppressRHS","unsuppressRHS","active","lastViewedAt","Threads","setSelectedThreadId","thread_id","updateThreadToastStatus","ConfirmModal","super","_defineProperty","this","setState","checked","target","_this$props$onConfirm","_this$props","onConfirm","_this$props$onCancel","_this$props2","onCancel","shouldComponentUpdate","nextProps","nextState","render","checkbox","cancelText","cancelButton","showCheckbox","className","onChange","handleCheckboxChange","checkboxText","cancelButtonText","hideCancel","handleCancel","Modal","modalClass","dialogClassName","onHide","role","closeButton","componentClass","autoFocus","confirmButtonClass","_pt","_href","useSelector","getLicense","queryParams","existingURLSearchParams","URL","searchParams","existingQueryParamsObj","fromEntries","utm_source","utm_medium","Cloud","utm_content","uid","sid","TelemetryId","queryString","URLSearchParams","_href2","anchor","hash","assign","rel","children","propTypes","utm_campaign","privateChannelJoinPromptVisible","focusPost","returnTo","option","skipRedirectReplyPermalink","postInfo","ErrorPageTypes","currentTeam","getCurrentTeam","has_joined_channel","isSystemAdmin","roles","joinPromptResult","joinPrivateChannelPrompt","joinChannel","threadData","getPostThread","first_inaccessible_post_time","isCollapsed","getChannelFromRedux","channelData","myMember","myMembers","membership","getChannelMember","getUserIdFromChannelName","getMissingProfilesByIds","isComment","getTeam","currentChannel","sameTeam","selectChannel","postURL","getPostURL","focusReplyPost","focusRootPost","languages","de","en","enAU","es","fr","it","hu","nl","pl","ptBR","ro","sv","vi","tr","bg","ru","uk","fa","ko","zhCN","zhTW","ja","getAllLanguages","getLanguages","AvailableLocales","l","getLanguageInfo","locale","isLanguageAvailable","getMissingChannelsFromPosts","membersInChannel","promises","getChannelMembers","params","isGettingMore","arr","getMentionsAndStatusesForPosts","forceLogoutIfNecessary","receivedPosts","isEnd","getMorePostsForSearch","current","newParams","getMissingChannelsFromFiles","receivedFiles","isFilesEnd","getMoreFilesForSearch","pinned","getCurrentSearchForCurrentTeam","createSelector","getMyGroupMentionKeys","userMentionKeys","groupMentionKeys","getCurrentTimezoneFull","currentUser","profile","timezone","useAutomaticTimezone","automaticTimezone","manualTimezone","timezoneFull","getUserCurrentTimezone","getCurrentTimezoneLabel","getTimezoneLabel","timezones","showDraftsPulsatingDotAndTourTip","onboardingTourTipsEnabled","getIsMobileView","draftsTourTipShowed","makeGetDraftsByPrefix","prefix","_state$storage","storage","flatMap","_item$value$fileInfos","startsWith","info","getDraftInfoFromKey","excludeInactive","getChannelDrafts","getRHSDrafts","getMyActiveChannelIds","channelDrafts","rhsDrafts","myChannels","makeGetDraftsCount","getCustomEmojisByName","EmojiMap","getShortcutReactToLastPostEmittedFrom","shortcutReactToLastPostEmittedFrom","getUserSkinTone","userSkinTone","usageCounts","_EmojiIndicesByAlias$","_usageCounts$get","emojiIndex","systemEmoji","Emojis","normalizedName","convertEmojiSkinTone","currentCount","normalizedData","normalizeRecentEmojisData","recentEmojisData","EnableCustomEmoji","getOneClickReactionEmojis","isDefined","reverse","getCurrentLocale","_window$location","localeFromParam","defaultLocale","I18n","DefaultClientLocale","currentLocale","getCurrentUserLocale","getTranslations","translations","i18n","getIsPostBeingEdited","editingPost","getIsPostBeingEditedInRHS","getEditingPost","previewCollapsed","arePreviewsCollapsed","imageCollapsed","makeCanWrangler","moveThreadsEnabled","_state","channelType","_channelType","replyCount","enabled","_allowedEmailDomains","WranglerPermittedWranglerRoles","WranglerAllowedEmailDomain","WranglerMoveThreadMaxCount","WranglerMoveThreadFromPrivateChannelEnable","WranglerMoveThreadFromDirectMessageChannelEnable","WranglerMoveThreadFromGroupMessageChannelEnable","permittedUsers","allowedEmailDomains","email","getBoolPreference","rhs","getRhsSize","getSelectedPostFocussedAt","selectedPostFocussedAt","getHighlightedPostId","highlightedPostId","filesSearchExtFilter","getSelectedPostCard","getSelectedChannelId","selectedChannelId","getSelectedChannel","getActiveRhsComponent","RightHandSidebarComponent","c","getSelectedPost","selectedPost","selectedPostChannelId","exists","PostTypes","localizeMessage","previousRhsStates","getSearchType","getSearchResultsTerms","searchResultsTerms","getIsSearchingTerm","isSearchingTerm","getIsSearchingFlaggedPost","isSearchingFlaggedPost","getIsSearchingPinnedPost","isSearchingPinnedPost","getIsSearchGettingMore","isSearchGettingMore","makeGetChannelDraft","defaultDraft","freeze","getDraft","makeGetGlobalItemWithDefault","getPostDraft","prefixId","suffixId","makeGetGlobalItem","getIsRhsSuppressed","rhsSuppressed","getIsRhsOpen","isSidebarOpen","getIsRhsMenuOpen","isMenuOpen","getIsRhsExpanded","isSidebarExpanded","getIsEditingMembers","editChannelMembers","defaultValue","getItemFromStorage","_storage$name$value","_storage$name","getTeamRelativeUrl","notificationURL","redirectChannel","getRedirectChannelNameForTeam","getCurrentRelativeTeamUrl","windowSize","WindowSizes","isUnreadFilterEnabled","channelSidebar","unreadFilterEnabled","shouldShowUnreadsCategory","getCategoriesForCurrentTeam","getCategoriesForTeam","makeGetCategoriesForTeam","memoizeResult","getAutoSortedCategoryIds","categories","sorting","CategorySorting","getChannelsByCategoryForCurrentTeam","getChannelsByCategory","makeGetChannelsByCategory","getUnreadChannelIdsSet","lastUnreadChannel","unreadChannelIds","getChannelsInCategoryOrder","channelsByCategory","showUnreadsCategory","isUnread","collapsed","flat","getUnreadChannels","getUnsortedUnreadChannels","getAllChannels","allChannels","unreadChannels","sortChannels","_","getMyChannelMemberships","crtEnabled","sortUnreadChannels","memoizedConcatChannels","channelsA","channelsB","channelsInCategoryOrder","makeGetFilteredChannelIdsForCategory","getChannelIdsForCategory","makeGetChannelIdsForCategory","channelIds","unreadChannelIdsSet","filtered","makeGetUnreadIdsForCategory","emptyList","getDraggingState","draggingState","isChannelSelected","multiSelectedChannelIds","userID","userProps","isCustomStatusExpired","CustomStatusDuration","expiryTime","moment","expires_at","getCurrentMomentForTimezone","isSameOrAfter","getRecentCustomStatuses","EnableCustomUserStatuses","showCustomStatusPulsatingDotAndPostHeader","hasUserCreationMoreThanSevenDays","isDateWithinDaysRange","TimeInformation","customStatusTutorialState","showStatusDropdownPulsatingDot","showPostHeaderUpdateStatusButton","getSelectedThreadIdInTeam","threads","selectedThreadIdInTeam","getSelectedThreadIdInCurrentTeam","_selectedThreadIdInTe","getThreads","_threads$threadId","last_viewed_at","isThreadManuallyUnread","manuallyUnread","makePrepareReplyIdsForThreadViewer","filterRepliesAndAddSeparators","makeGetPostsForIds","createIdsSelector","postIds","_ref3","showDate","out","lastDate","addedNewMessagesIndicator","postDate","currentOffset","getTimezoneOffset","zone","utcOffset","setTime","toDateString","DATE_LINE","START_OF_NEW_MESSAGES","CREATE_COMMENT","makeFilterRepliesAndAddSeparators","combineUserActivityPosts","makeCombineUserActivityPosts","getThreadToastStatus","toastStatus","getPreviousTeamIdKey","getPreviousChannelNameKey","getPreviousViewedTypeKey","getPenultimateViewedTypeKey","getPenultimateChannelNameKey","teamIdJoinedOnLoadKey","wasNotifiedOfLogInKey","getPathScopedKey","path","getItem","basePath","getBasePath","localStorage","setItem","getPreviousChannelName","getPreviousViewedType","_this$getItem","PreviousViewedTypes","removeItem","setPreviousChannelName","setPreviousViewedType","getPenultimateViewedType","_this$getItem2","setPenultimateViewedType","getPenultimateChannelName","setPenultimateChannelName","removePreviousChannelName","removePreviousChannelType","removePreviousChannel","removePenultimateChannelName","removePenultimateViewedType","getPreviousTeamId","setPreviousTeamId","getRecentEmojis","getRecentEmojisKey","getTeamIdJoinedOnLoad","setTeamIdJoinedOnLoad","setWasLoggedIn","wasLoggedIn","getWasLoggedIn","setWasNotifiedOfLogIn","wasNotified","String","getWasNotifiedOfLogIn","JoinPrivateChannelModal","onJoin","setShow","handleHide","handleJoin","handleExited","canManageMembers","haveIChannelPermission","Permissions","findNextUnreadChannelId","curChannelId","allChannelIds","direction","curIndex","isArchivedChannel","channelDisplayName","handleOnCancel","resolve","removeUserFromTeam","redirectChannelName","EmojiIndicesByUnicode","CategoryNames","CategoryMessage","CategoryTranslations","SkinTranslations","EmojiIndicesByCategoryAndSkin","EmojiIndicesByCategoryNoSkin","genSkinnedCategories","cat","indices","skinCat","memoize","EmojiIndicesByCategory","customEmojis","customEmojisArray","hasSystemEmoji","hasUnicode","codepoint","getUnicode","Symbol","iterator","systemIndex","customIndex","next","short_names","customEmoji","done","defaultRule","aName","bName","localeCompare","thumbsDownRule","otherName","thumbsUpRule","customRules","thumbsdown","thumbsup","getEmojiName","searchedName","compareEmojis","aPrefix","wrapEmojis","nodes","lastIndex","match","matchAll","emojiRegex","newSkinTone","_newEmoji","newEmojiId","skins","skin_variations","getSkin","variation","skinVariation","unified","replaceAll","toLowerCase","newEmoji","_emoji$skins$","_emoji$skins","emojiMatchesSkin","emojiSkin","emoticonPatterns","slightly_smiling_face","wink","open_mouth","scream","smirk","smile","stuck_out_tongue_closed_eyes","stuck_out_tongue","rage","slightly_frowning_face","cry","confused","confounded","neutral_face","flushed","mask","heart","broken_heart","EMOJI_PATTERN","markdownCleanedText","PlainRenderer","matches","handleEmoticons","tokens","output","replaceEmoticonWithToken","fullMatch","matchText","renderEmoji","originalText","cmdOrCtrlPressed","allowAlt","isMac","metaKey","ctrlKey","altKey","isKeyPressed","keyCode","toUpperCase","Renderer","marked","formattingOptions","heading","bind","paragraph","code","language","usedLanguage","TextFormatting","searchedContent","searchPatterns","searched","codespan","br","singleline","dimensions","input","exec","height","parseImageDimensions","src","PostUtils","proxyImages","xhtml","level","isUrl","outHref","scheme","getScheme","autolinkedUrlSchemes","isUrlSafe","html","m","n","charAt","fromCharCode","parseInt","shouldOpenInNewTab","siteURL","managedResourcePaths","table","header","tablerow","content","tablecell","ordered","start","listitem","taskListReg","isTaskList","txt","removeMarkdown","RemoveMarkdown","format","renderer","markdownOptions","sanitize","gfm","tables","mangle","inlinelatex","EnableLatex","EnableInlineLatex","convertEntityToCharacter","blockquote","hr","strong","em","del","notificationSounds","bing","crackle","down","hello","ripple","upstairs","callsNotificationSounds","calls_dynamic","calls_calm","calls_urgent","calls_cheerful","canDing","ding","hasSoundOptions","tryNotificationSound","_notificationSounds$g","Audio","play","currentRing","ring","stopRing","loopNotificationRing","addEventListener","pause","remove","currentTimer","currentTryRing","tryNotificationRing","stopTryNotificationRing","clearTimeout","_callsNotificationSou","audio","loop","requestedNotificationPermission","icon","icon50","iconWS","Error","Notification","requestPermission","permission","notification","tag","onclick","onerror","close","CHANNEL_SWITCH_IGNORE_ENTER_THRESHOLD_MS","fromAutoResponder","isFromBot","from_bot","isPostOwner","isEdited","edit_at","getImageSrc","hasImageProxy","imageAPI","encodeURIComponent","canDeletePost","_channel$team_id","_channel$id","canEditPostRedux","shouldShowDotMenu","Posts","shouldShowActionsMenu","PluginsEnabled","containsAtChannel","mentionsRegex","checkAllMentions","specialMentionsInText","here","groupsMentionedInText","groups","allAtMentions","ret","group","shouldFocusMainTextbox","activeElement","tagName","Keyboard","isWithinCodeBlock","caretPosition","sendOnCtrlEnter","ctrlOrMetaKeyPressed","isSendMessageOnCtrlEnter","inCodeBlock","allowSending","splitMessage","line","lastPart","withClosedCodeBlock","canAutomaticallyCloseBackticks","postMessageOnKeyPress","sendMessageOnCtrlEnter","sendCodeBlockOnCtrlEnter","lastChannelSwitchAt","isMobile","shiftKey","ignoreKeyPress","isErrorInvalidSlashCommand","isIdNotPost","PostListUtils","PostListRowListIds","getOldestPostId","combinedIds","getPreviousPostId","startIndex","itemId","getLatestPostId","makeGetMentionsFromMessage","getUsersByUsername","mentionsArray","getMentionDetails","usePostAriaLabel","intl","useIntl","getDisplayName","useMemo","makeGetDisplayName","getReactionsForPost","makeGetReactionsForPost","getMentionsFromMessage","createAriaLabelMemoized","createAriaLabelForPost","authorDisplayName","reactions","isFlagged","teammateNameDisplaySetting","author","formatMessage","formatTime","formatDate","ariaLabel","Emoticons","authorName","time","date","weekday","month","day","attachmentCount","emojiNames","reaction","emoji_name","reactionCount","is_pinned","splitMessageBasedOnCaretPosition","firstPiece","lastPiece","splitMessageBasedOnTextSelection","selectionStart","selectionEnd","getNewMessageIndex","postListIds","areConsecutivePostsBySameUser","previousPost","postURI","matchUserMentionTriggersWithMessageMentions","messageMentionKeys","isMentioned","mentionKey","makeGetUniqueReactionsToPost","reactionsForPost","userIdEmojiKey","emojiReaction","getUniqueReactionsToPost","usersByUsername","mentionName","mentionNameToLowerCase","getUserOrGroupFromMentionName","groupsDisabled","getMention","allow_reference","mentionsMinusSpecialMentionsInText","makeGetUserOrGroupMentionCountFromMessage","getAllGroupsForReferenceByName","member_count","hasRequestedPersistentNotifications","PostPriority","persistent_notifications","punctuationRegex","AT_MENTION_PATTERN","UNICODE_EMOJI_REGEX","htmlEmojiPattern","FORMAT_TOKEN_LIMIT_ERROR","isFormatTokenLimitError","Tokens","DEFAULT_OPTIONS","mentionHighlight","disableGroupHighlight","emoticons","markdown","atMentions","atSumOfMembersMentions","atPlanMentions","minimumHashtagLength","editedAt","formatText","inputOptions","hasPhrases","searchTerm","searchMatches","convertSearchTermToRegex","termString","captured","puncStart","puncEnd","parseSearchTerms","doFormatText","Markdown","replacer","sanitizeHtml","replaceNewlines","replaceAtMentionWithToken","autolinkAtMentions","autoLinkSumOfMembersMentions","autoPlanMentions","channelNamesMap","channelMentionExists","addToken","teamName","displayName","basename","channelNameLower","channelValue","team_name","escapeHtml","originalChannelName","suffix","substr","autolinkChannelMentions","emailRegex","_len","_key","autolinkEmails","newTokens","newAlias","hashtag","newToken","hashtagRegex","autolinkHashtags","highlightSearchTerms","mentionKeys","tokenTextLower","replaceCurrentMentionWithToken","highlightCurrentMentions","highlightKeys","replaceHighlightKeywordsWithToken","highlightKey","tokenOriginalText","newIndex","highlightWithoutNotificationKeywords","searchPattern","emojiMatch","codePoints","fixedCharCodeAt","codePoint","emojiCode","handleUnicodeEmoji","replaceTokens","escapeReplaceSpecialPatterns","htmlEntities","replaceSearchTermWithToken","word","str","idx","charCodeAt","hi","low","isNaN","getBrowserTimezone","getCurrentDateForTimezone","tztime","tz","year","getCurrentDateTimeForTimezone","hour","minute","latinMap","Á","Ă","Ắ","Ặ","Ằ","Ẳ","Ẵ","Ǎ","Â","Ấ","Ậ","Ầ","Ẩ","Ẫ","Ä","Ǟ","Ȧ","Ǡ","Ạ","Ȁ","À","Ả","Ȃ","Ā","Ą","Å","Ǻ","Ḁ","Ⱥ","Ã","Ꜳ","Æ","Ǽ","Ǣ","Ꜵ","Ꜷ","Ꜹ","Ꜻ","Ꜽ","Ḃ","Ḅ","Ɓ","Ḇ","Ƀ","Ƃ","Ć","Č","Ç","Ḉ","Ĉ","Ċ","Ƈ","Ȼ","Ď","Ḑ","Ḓ","Ḋ","Ḍ","Ɗ","Ḏ","Dz","Dž","Đ","Ƌ","DZ","DŽ","É","Ĕ","Ě","Ȩ","Ḝ","Ê","Ế","Ệ","Ề","Ể","Ễ","Ḙ","Ë","Ė","Ẹ","Ȅ","È","Ẻ","Ȇ","Ē","Ḗ","Ḕ","Ę","Ɇ","Ẽ","Ḛ","Ꝫ","Ḟ","Ƒ","Ǵ","Ğ","Ǧ","Ģ","Ĝ","Ġ","Ɠ","Ḡ","Ǥ","Ḫ","Ȟ","Ḩ","Ĥ","Ⱨ","Ḧ","Ḣ","Ḥ","Ħ","Í","Ĭ","Ǐ","Î","Ï","Ḯ","İ","Ị","Ȉ","Ì","Ỉ","Ȋ","Ī","Į","Ɨ","Ĩ","Ḭ","Ꝺ","Ꝼ","Ᵹ","Ꞃ","Ꞅ","Ꞇ","Ꝭ","Ĵ","Ɉ","Ḱ","Ǩ","Ķ","Ⱪ","Ꝃ","Ḳ","Ƙ","Ḵ","Ꝁ","Ꝅ","Ĺ","Ƚ","Ľ","Ļ","Ḽ","Ḷ","Ḹ","Ⱡ","Ꝉ","Ḻ","Ŀ","Ɫ","Lj","Ł","LJ","Ḿ","Ṁ","Ṃ","Ɱ","Ń","Ň","Ņ","Ṋ","Ṅ","Ṇ","Ǹ","Ɲ","Ṉ","Ƞ","Nj","Ñ","NJ","Ó","Ŏ","Ǒ","Ô","Ố","Ộ","Ồ","Ổ","Ỗ","Ö","Ȫ","Ȯ","Ȱ","Ọ","Ő","Ȍ","Ò","Ỏ","Ơ","Ớ","Ợ","Ờ","Ở","Ỡ","Ȏ","Ꝋ","Ꝍ","Ō","Ṓ","Ṑ","Ɵ","Ǫ","Ǭ","Ø","Ǿ","Õ","Ṍ","Ṏ","Ȭ","Ƣ","Ꝏ","Ɛ","Ɔ","Ȣ","Ṕ","Ṗ","Ꝓ","Ƥ","Ꝕ","Ᵽ","Ꝑ","Ꝙ","Ꝗ","Ŕ","Ř","Ŗ","Ṙ","Ṛ","Ṝ","Ȑ","Ȓ","Ṟ","Ɍ","Ɽ","Ꜿ","Ǝ","Ś","Ṥ","Š","Ṧ","Ş","Ŝ","Ș","Ṡ","Ṣ","Ṩ","ẞ","Ť","Ţ","Ṱ","Ț","Ⱦ","Ṫ","Ṭ","Ƭ","Ṯ","Ʈ","Ŧ","Ɐ","Ꞁ","Ɯ","Ʌ","Ꜩ","Ú","Ŭ","Ǔ","Û","Ṷ","Ü","Ǘ","Ǚ","Ǜ","Ǖ","Ṳ","Ụ","Ű","Ȕ","Ù","Ủ","Ư","Ứ","Ự","Ừ","Ử","Ữ","Ȗ","Ū","Ṻ","Ų","Ů","Ũ","Ṹ","Ṵ","Ꝟ","Ṿ","Ʋ","Ṽ","Ꝡ","Ẃ","Ŵ","Ẅ","Ẇ","Ẉ","Ẁ","Ⱳ","Ẍ","Ẋ","Ý","Ŷ","Ÿ","Ẏ","Ỵ","Ỳ","Ƴ","Ỷ","Ỿ","Ȳ","Ɏ","Ỹ","Ź","Ž","Ẑ","Ⱬ","Ż","Ẓ","Ȥ","Ẕ","Ƶ","IJ","Œ","ᴀ","ᴁ","ʙ","ᴃ","ᴄ","ᴅ","ᴇ","ꜰ","ɢ","ʛ","ʜ","ɪ","ʁ","ᴊ","ᴋ","ʟ","ᴌ","ᴍ","ɴ","ᴏ","ɶ","ᴐ","ᴕ","ᴘ","ʀ","ᴎ","ᴙ","ꜱ","ᴛ","ⱻ","ᴚ","ᴜ","ᴠ","ᴡ","ʏ","ᴢ","á","ă","ắ","ặ","ằ","ẳ","ẵ","ǎ","â","ấ","ậ","ầ","ẩ","ẫ","ä","ǟ","ȧ","ǡ","ạ","ȁ","à","ả","ȃ","ā","ą","ᶏ","ẚ","å","ǻ","ḁ","ⱥ","ã","ꜳ","æ","ǽ","ǣ","ꜵ","ꜷ","ꜹ","ꜻ","ꜽ","ḃ","ḅ","ɓ","ḇ","ᵬ","ᶀ","ƀ","ƃ","ɵ","ć","č","ç","ḉ","ĉ","ɕ","ċ","ƈ","ȼ","ď","ḑ","ḓ","ȡ","ḋ","ḍ","ɗ","ᶑ","ḏ","ᵭ","ᶁ","đ","ɖ","ƌ","ı","ȷ","ɟ","ʄ","dz","dž","é","ĕ","ě","ȩ","ḝ","ê","ế","ệ","ề","ể","ễ","ḙ","ë","ė","ẹ","ȅ","è","ẻ","ȇ","ē","ḗ","ḕ","ⱸ","ę","ᶒ","ɇ","ẽ","ḛ","ꝫ","ḟ","ƒ","ᵮ","ᶂ","ǵ","ğ","ǧ","ģ","ĝ","ġ","ɠ","ḡ","ᶃ","ǥ","ḫ","ȟ","ḩ","ĥ","ⱨ","ḧ","ḣ","ḥ","ɦ","ẖ","ħ","ƕ","í","ĭ","ǐ","î","ï","ḯ","ị","ȉ","ì","ỉ","ȋ","ī","į","ᶖ","ɨ","ĩ","ḭ","ꝺ","ꝼ","ᵹ","ꞃ","ꞅ","ꞇ","ꝭ","ǰ","ĵ","ʝ","ɉ","ḱ","ǩ","ķ","ⱪ","ꝃ","ḳ","ƙ","ḵ","ᶄ","ꝁ","ꝅ","ĺ","ƚ","ɬ","ľ","ļ","ḽ","ȴ","ḷ","ḹ","ⱡ","ꝉ","ḻ","ŀ","ɫ","ᶅ","ɭ","ł","lj","ſ","ẜ","ẛ","ẝ","ḿ","ṁ","ṃ","ɱ","ᵯ","ᶆ","ń","ň","ņ","ṋ","ȵ","ṅ","ṇ","ǹ","ɲ","ṉ","ƞ","ᵰ","ᶇ","ɳ","ñ","nj","ó","ŏ","ǒ","ô","ố","ộ","ồ","ổ","ỗ","ö","ȫ","ȯ","ȱ","ọ","ő","ȍ","ò","ỏ","ơ","ớ","ợ","ờ","ở","ỡ","ȏ","ꝋ","ꝍ","ⱺ","ō","ṓ","ṑ","ǫ","ǭ","ø","ǿ","õ","ṍ","ṏ","ȭ","ƣ","ꝏ","ɛ","ᶓ","ɔ","ᶗ","ȣ","ṕ","ṗ","ꝓ","ƥ","ᵱ","ᶈ","ꝕ","ᵽ","ꝑ","ꝙ","ʠ","ɋ","ꝗ","ŕ","ř","ŗ","ṙ","ṛ","ṝ","ȑ","ɾ","ᵳ","ȓ","ṟ","ɼ","ᵲ","ᶉ","ɍ","ɽ","ↄ","ꜿ","ɘ","ɿ","ś","ṥ","š","ṧ","ş","ŝ","ș","ṡ","ṣ","ṩ","ʂ","ᵴ","ᶊ","ȿ","ɡ","ß","ᴑ","ᴓ","ᴝ","ť","ţ","ṱ","ț","ȶ","ẗ","ⱦ","ṫ","ṭ","ƭ","ṯ","ᵵ","ƫ","ʈ","ŧ","ᵺ","ɐ","ᴂ","ǝ","ᵷ","ɥ","ʮ","ʯ","ᴉ","ʞ","ꞁ","ɯ","ɰ","ᴔ","ɹ","ɻ","ɺ","ⱹ","ʇ","ʌ","ʍ","ʎ","ꜩ","ú","ŭ","ǔ","û","ṷ","ü","ǘ","ǚ","ǜ","ǖ","ṳ","ụ","ű","ȕ","ù","ủ","ư","ứ","ự","ừ","ử","ữ","ȗ","ū","ṻ","ų","ᶙ","ů","ũ","ṹ","ṵ","ᵫ","ꝸ","ⱴ","ꝟ","ṿ","ʋ","ᶌ","ⱱ","ṽ","ꝡ","ẃ","ŵ","ẅ","ẇ","ẉ","ẁ","ⱳ","ẘ","ẍ","ẋ","ᶍ","ý","ŷ","ÿ","ẏ","ỵ","ỳ","ƴ","ỷ","ỿ","ȳ","ẙ","ɏ","ỹ","ź","ž","ẑ","ʑ","ⱬ","ż","ẓ","ȥ","ẕ","ᵶ","ᶎ","ʐ","ƶ","ɀ","ff","ffi","ffl","fi","fl","ij","œ","st","ₐ","ₑ","ᵢ","ⱼ","ₒ","ᵣ","ᵤ","ᵥ","ₓ","x","cleanUpUrlable","cleaned","latinise","getShortenedURL","getLength","subLength","getSiteURL","_getModule","_getModule2","getModule","obj","origin","protocol","hostname","port","getSiteURLFromWindowObject","getRelativeChannelURL","unescaped","decodeURIComponent","unescape","makeUrlSafe","defaultUrl","formattedError","validateChannelUrl","errors","isDirectMessageFormat","cleanedURL","urlMatched","urlLonger","urlShorter","startsWithoutLetter","endsWithoutLetter","isInternalURL","unhandledPaths","managedPath","unhandledPath","isPermalinkURL","regexp","isStringContainingUrl","BadUrlReasons","Empty","Length","Reserved","Taken","teamNameToUrl","reservedName","CLICKABLE_ELEMENTS","MS_PER_DAY","createSafeId","prop","isUnhandledLineBreakKeyCombo","insertLineBreakFromKeyEvent","el","newValue","setSelectionRange","getDateForUnixTicks","ticks","getTimestamp","getRemainingDaysFromFutureTimestamp","futureDate","utcFuture","UTC","getFullYear","getMonth","getDate","today","utcToday","floor","days","timeline","daysSince","round","PAST","getLocaleDateFromUTC","userTimezone","replaceHtmlEntities","newtext","replacement","regex","isGIFImage","extin","getFileType","removeQuerystringOrHash","FileTypes","getFileIconPath","fileInfo","fileType","extension","getCompassIconClassName","fileTypeIn","outline","large","getIconClassName","toTitleCase","dropAlpha","toRgbValues","hexStr","applyTheme","theme","centerChannelColor","changeCss","changeOpacity","buttonBg","colourIn","amt","hex","lum","rgb","changeColor","newMessageSeparator","linkColor","blendColors","buttonColor","errorTextColor","mentionHighlightBg","mentionHighlightLink","codeTheme","cssPath","element","_element$themes","themes","cssURL","document","querySelector","attributes","xmlHTTP","XMLHttpRequest","open","onload","once","send","updateCodeTheme","cssVars","variables","awayIndicator","centerChannelBg","dndIndicator","mentionBg","mentionColor","onlineIndicator","sidebarBg","sidebarHeaderBg","sidebarTeamBarBg","sidebarHeaderTextColor","sidebarText","sidebarTextActiveBorder","sidebarTextActiveColor","sidebarTextHoverBg","sidebarUnreadText","resetTheme","classValue","styleEl","createElement","setAttribute","head","appendChild","styleSheet","sheet","rules","cssRules","style","selectorText","setProperty","mediaQuery","insertRule","placeCaretAtEnd","scrollToCaret","scrollTop","scrollHeight","getElementComputedStyle","getComputedStyle","getViewportSize","win","w","h","innerHeight","clientWidth","clientHeight","getSuggestionBoxAlgn","textArea","_getComputedStyle","pxToSubstract","alignWithTextBox","HTMLElement","pixelsToMoveX","pixelsToMoveY","caretXCoordinateInTxtArea","y","caretYCoordinateInTxtArea","end","copy","textContent","overflow","offsetWidth","offsetHeight","position","left","offsetLeft","top","offsetTop","copyTextAreaToDiv","range","createRange","setStart","firstChild","setEnd","selection","getSelection","removeAllRanges","addRange","rect","getClientRects","removeChild","scrollLeft","getCaretXYCoordinate","viewportWidth","viewportHeight","textAreaWidth","suggestionBoxWidth","txtAreaOffsetTop","txtAreaOffsetLft","getBoundingClientRect","pageXOffset","documentElement","pageYOffset","offsetTopLeft","pxToTheRight","lineHeight","placementShift","getPxToSubstract","char","mentionNamePaddingLft","remNum","styles","parseFloat","fontSize","convertEmToPixels","setCaretPosition","pos","isValidUsername","ValidationErrors","reserved","isValidBotUsername","loadImage","onLoad","onProgress","request","responseType","onprogress","total","lengthComputable","getResponseHeader","completedPercentage","loaded","getFullName","first_name","last_name","nickname","getLongDisplayName","fullName","getLongDisplayNameParts","getDisplayNameByUser","teammateNameDisplay","displayEntireNameForUser","displayFullAndNicknameForUser","imageURLForUser","lastPictureUpdate","defaultImageURLForUser","imageURLForTeam","last_team_icon_update","fileSizeToString","bytes","generateId","random","v","otherId","handle","getUserIdFromChannelId","ids","otherUserId","isFeatureEnabled","feature","label","fillRecord","isFileTransfer","types","isUriDrop","dataTransfer","items","isTextDroppableEvent","DragEvent","HTMLTextAreaElement","HTMLInputElement","clearFileInput","elm","localizeAndFormatMessage","template","base","mod","REACTION_PATTERN","getPasswordConfig","minimumLength","PasswordMinimumLength","requireLowercase","PasswordRequireLowercase","requireUppercase","PasswordRequireUppercase","requireNumber","PasswordRequireNumber","requireSymbol","PasswordRequireSymbol","isValidPassword","password","passwordConfig","errorId","telemetryErrorIds","valid","rule","handleFormattedTextClick","currentRelativeTeamUrl","hashtagAttribute","getAttributeNode","linkAttribute","channelMentionAttribute","preventDefault","MIDDLE_MOUSE_BUTTON","button","isChannelOrPermalink","isReply","getTeamByName","teamData","getTeamByNameAction","getChannelsNameMapInTeam","getChannelByNameAndTeamName","postData","getPostAction","getChannelAction","getTeamMemberships","_match$postId","stopPropagation","isTeamSameWithCurrentTeam","isEmptyObject","object","removePrefixFromLocalStorage","copyToClipboard","clipboard","navigator","writeText","padding","border","boxShadow","background","select","execCommand","moveCursorToEnd","val","setCSRFFromCookie","cookie","cookies","getNextBillingDate","startOf","stringToNumber","s","deleteKeysFromObject","isTextSelectedInPostOrReply","_isNil","makeIsEligibleForClick","selector","currentTarget","node","contains","getAttribute","parentNode","numberToFixedDynamic","num","places","toFixed","indexToExclude","TrackFlowRoles","sa","su","getTrackFlowRole","trackFlowRole","isFirstAdmin","getRoleForTrackFlow","started_by_role","getRoleFromTrackFlow","_TrackFlowRoles$sbr","sbr","_params$get","getDatePickerLocalesForDateFns","loadedLocales","require","getMediumFromTrackFlow","_params$get2","source","TrackFlowSources","wd","wm","d","getSourceForTrackFlow","a11yFocus","keyboardOnly","dispatchEvent","CustomEvent","A11yCustomEventTypes","detail","getBlankAddressWithCountry","country","getName","city","line1","line2","postal_code","generateSlug","crypto","sortUsersAndGroups","aSortString","bSortString","autoCloseOnCancelButton","autoCloseOnConfirmButton","_this$props$handleKey","nativeEvent","isComposing","handleEnterKeyPress","handleKeydown","isFocalTrapActive","confirmButton","isConfirmOrDeleteClassName","isDeleteModal","autoFocusConfirmButton","classNames","confirmButtonClassName","disabled","isConfirmDisabled","cancelButtonClassName","headerText","headerButton","GenericModal__compassDesign","restoreFocus","enforceFocus","backdrop","backdropClassName","container","keyboard","keyboardEscape","onKeyDown","onEnterKeyDown","tabIndex","headerInput","divider","bodyDivider","errorText","bodyPadding","footerContent","footerDivider","appendedContent","FooterPagination","itemsPerPage","onNextPage","onPreviousPage","startCount","endCount","prevDisabled","nextDisabled","trunc","ChevronLeftIcon","ChevronRightIcon","skeletonFade","keyframes","BaseLoader","styled","getCorrectSizeDimension","withConfig","_props$borderRadius","borderRadius","_props$margin","margin","_props$flex","flex","PulsatingDot","customStyles","_this$props$coords","_this$props$coords2","coords","transform","effectiveClassName","ref","targetRef","TourTipRootPortal","ReactDOM","TourTipBackdrop","overlayPunchOut","interactivePunchOut","onDismiss","onPunchOut","appendTo","transparent","vertices","clipPath","overlay","TourTip","_ref4","screen","imageURL","singleTip","step","tourSteps","handleOpen","handleDismiss","handleNext","handlePrevious","handleSkip","handleJump","handlePunchOut","pulsatingDotTranslate","pulsatingDotPlacement","nextBtn","prevBtn","offset","placement","showOptOut","zIndex","hideBackdrop","tippyBlueStyle","triggerRef","useRef","rootPortal","getElementById","dots","dot","circularRing","alt","Tippy","showOnCreate","animation","trigger","maxWidth","aria","allowHTML","reference","interactive","useMeasurePunchouts","elementIds","additionalDeps","elementsAvailable","intervalMS","checkAvailableInterval","available","setAvailable","useState","useEffect","setInterval","useElementAvailable","setSize","updateSize","throttle","trailing","useLayoutEffect","removeEventListener","minX","MAX_SAFE_INTEGER","minY","maxX","MIN_SAFE_INTEGER","maxY","_document$getElementB","rectangle","useFollowElementDimensions","elementId","setDimensions","DOMRect","observer","ResizeObserver","contentRect","unobserve","exports","webpackContext","req","webpackContextResolve","__webpack_require__","o","module"],"sourceRoot":""}