/* This file was generated automatically by unicode_gen */ #include "wcwidth.h" /* This table was generated from unidata/EastAsianWidth-15.0.0.txt */ /* Using a 3 level lookup table: 7137 bytes */ static const unsigned char wcwidth_00[16 * 202] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 2, 1, 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 2, 2, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 0, 0, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 2, 2, 1, 1, 1, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 2, 2, 1, 1, 2, 2, 2, 1, 1, 1, 1, 2, 2, 2, 2, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, }; static const unsigned char wcwidth_01[64 * 47] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 4, 5, 0, 0, 0, 0, 6, 0, 0, 7, 1, 0, 8, 0, 0, 0, 0, 0, 9, 10, 0, 0, 11, 0, 1, 6, 0, 0, 0, 0, 0, 12, 8, 0, 0, 7, 13, 0, 14, 15, 0, 0, 16, 0, 0, 0, 17, 0, 0, 18, 1, 19, 1, 20, 0, 0, 21, 1, 22, 23, 0, 24, 0, 0, 25, 26, 27, 23, 28, 24, 0, 0, 25, 29, 11, 0, 30, 24, 0, 0, 25, 31, 0, 23, 18, 24, 0, 0, 25, 26, 32, 23, 0, 33, 0, 0, 34, 35, 27, 0, 0, 36, 0, 0, 25, 37, 38, 23, 0, 24, 0, 0, 25, 37, 38, 23, 39, 20, 0, 0, 40, 37, 27, 23, 0, 24, 0, 0, 0, 41, 42, 0, 23, 0, 0, 0, 43, 44, 0, 0, 0, 0, 0, 0, 45, 46, 0, 0, 0, 0, 47, 0, 48, 0, 0, 0, 3, 49, 50, 1, 51, 52, 0, 0, 0, 0, 0, 7, 53, 0, 54, 55, 56, 57, 58, 0, 0, 0, 0, 0, 0, 59, 59, 59, 59, 59, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 0, 62, 0, 23, 0, 23, 0, 0, 0, 63, 1, 13, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 38, 0, 65, 0, 0, 0, 0, 0, 0, 0, 66, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 68, 1, 69, 0, 0, 0, 1, 53, 0, 0, 0, 36, 0, 0, 63, 36, 0, 7, 20, 70, 0, 71, 0, 0, 0, 12, 20, 0, 0, 63, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 74, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 81, 0, 0, 82, 83, 0, 84, 0, 85, 86, 80, 87, 88, 89, 90, 91, 0, 92, 0, 93, 94, 0, 0, 0, 95, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, 100, 0, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 59, 101, 59, 59, 59, 59, 59, 83, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 102, 0, 103, 59, 59, 104, 105, 106, 59, 59, 59, 59, 107, 59, 59, 59, 59, 59, 59, 108, 59, 59, 106, 59, 59, 59, 59, 105, 59, 59, 59, 59, 59, 83, 59, 59, 105, 59, 59, 109, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 0, 0, 0, 0, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 110, 59, 59, 59, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, 112, 0, 34, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 0, 114, 0, 0, 0, 0, 0, 100, 0, 0, 63, 115, 0, 1, 116, 0, 0, 117, 0, 118, 20, 59, 110, 20, 0, 0, 119, 8, 0, 120, 0, 0, 0, 121, 122, 123, 0, 0, 124, 0, 0, 0, 125, 11, 0, 7, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 0, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 127, 1, 59, 59, 128, 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 59, 59, 59, 59, 59, 130, 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 133, 0, 0, 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 136, 0, 0, 0, 0, 60, 0, 0, 0, 0, 12, 8, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 17, 122, 0, 0, 137, 70, 0, 0, 6, 33, 0, 0, 0, 70, 0, 118, 36, 38, 0, 0, 39, 70, 0, 0, 119, 138, 0, 0, 0, 0, 0, 139, 140, 11, 0, 0, 0, 0, 0, 0, 0, 0, 99, 6, 0, 20, 0, 0, 40, 26, 27, 141, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 142, 122, 28, 0, 0, 0, 0, 0, 1, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, 143, 8, 144, 0, 0, 0, 0, 0, 1, 8, 0, 0, 0, 0, 0, 7, 72, 0, 0, 0, 0, 0, 60, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 145, 146, 0, 0, 0, 0, 0, 0, 0, 0, 147, 148, 0, 149, 0, 0, 150, 27, 151, 0, 0, 18, 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, 153, 0, 0, 0, 0, 0, 154, 50, 122, 0, 0, 0, 0, 0, 0, 0, 155, 156, 0, 0, 0, 157, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 160, 0, 0, 161, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 162, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, 3, 1, 1, 163, 70, 0, 0, 0, 0, 164, 100, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 109, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 102, 0, 0, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 167, 168, 0, 169, 170, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 172, 1, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 173, 174, 175, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 176, 1, 1, 51, 120, 177, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 178, 179, 0, 0, 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, 0, 0, 0, 0, 0, 0, 180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 181, 182, 0, 0, 0, 0, 0, 0, 167, 59, 59, 103, 165, 183, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 59, 184, 185, 59, 59, 59, 186, 59, 83, 59, 59, 187, 83, 59, 188, 59, 59, 59, 105, 189, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 190, 59, 59, 59, 191, 192, 59, 109, 89, 0, 193, 88, 0, 0, 0, 0, 194, 59, 59, 59, 59, 59, 0, 0, 0, 59, 59, 59, 59, 195, 196, 97, 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 59, 59, 199, 185, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 0, 0, 0, 0, 0, 0, 0, 110, 165, 59, 59, 200, 201, 103, 165, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; static const unsigned char wcwidth_02[897] = { 0, 1, 2, 3, 4, 5, 6, 7, /* 00000..01C00 */ 8, 9, 10, 11, 12, 13, 13, 13, /* 02000..03C00 */ 13, 13, 13, 14, 13, 13, 13, 13, /* 04000..05C00 */ 13, 13, 13, 13, 13, 13, 13, 13, /* 06000..07C00 */ 13, 13, 13, 13, 13, 13, 13, 13, /* 08000..09C00 */ 13, 15, 16, 13, 13, 13, 13, 13, /* 0A000..0BC00 */ 13, 13, 13, 13, 13, 17, 18, 18, /* 0C000..0DC00 */ 18, 18, 18, 18, 18, 18, 19, 20, /* 0E000..0FC00 */ 21, 18, 22, 23, 24, 25, 26, 27, /* 10000..11C00 */ 18, 18, 18, 18, 18, 28, 18, 18, /* 12000..13C00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* 14000..15C00 */ 18, 18, 29, 30, 13, 13, 13, 13, /* 16000..17C00 */ 13, 31, 13, 32, 18, 18, 18, 18, /* 18000..19C00 */ 18, 18, 18, 33, 34, 18, 18, 35, /* 1A000..1BC00 */ 18, 18, 18, 36, 37, 18, 38, 18, /* 1C000..1DC00 */ 39, 40, 41, 18, 42, 43, 44, 18, /* 1E000..1FC00 */ 13, 13, 13, 13, 13, 13, 13, 13, /* 20000..21C00 */ 13, 13, 13, 13, 13, 13, 13, 13, /* 22000..23C00 */ 13, 13, 13, 13, 13, 13, 13, 13, /* 24000..25C00 */ 13, 13, 13, 13, 13, 13, 13, 13, /* 26000..27C00 */ 13, 13, 13, 13, 13, 13, 13, 13, /* 28000..29C00 */ 13, 13, 13, 13, 13, 13, 13, 13, /* 2A000..2BC00 */ 13, 13, 13, 13, 13, 13, 13, 13, /* 2C000..2DC00 */ 13, 13, 13, 13, 13, 13, 13, 45, /* 2E000..2FC00 */ 13, 13, 13, 13, 13, 13, 13, 13, /* 30000..31C00 */ 13, 13, 13, 13, 13, 13, 13, 13, /* 32000..33C00 */ 13, 13, 13, 13, 13, 13, 13, 13, /* 34000..35C00 */ 13, 13, 13, 13, 13, 13, 13, 13, /* 36000..37C00 */ 13, 13, 13, 13, 13, 13, 13, 13, /* 38000..39C00 */ 13, 13, 13, 13, 13, 13, 13, 13, /* 3A000..3BC00 */ 13, 13, 13, 13, 13, 13, 13, 13, /* 3C000..3DC00 */ 13, 13, 13, 13, 13, 13, 13, 45, /* 3E000..3FC00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* 40000..41C00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* 42000..43C00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* 44000..45C00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* 46000..47C00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* 48000..49C00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* 4A000..4BC00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* 4C000..4DC00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* 4E000..4FC00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* 50000..51C00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* 52000..53C00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* 54000..55C00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* 56000..57C00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* 58000..59C00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* 5A000..5BC00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* 5C000..5DC00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* 5E000..5FC00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* 60000..61C00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* 62000..63C00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* 64000..65C00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* 66000..67C00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* 68000..69C00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* 6A000..6BC00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* 6C000..6DC00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* 6E000..6FC00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* 70000..71C00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* 72000..73C00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* 74000..75C00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* 76000..77C00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* 78000..79C00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* 7A000..7BC00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* 7C000..7DC00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* 7E000..7FC00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* 80000..81C00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* 82000..83C00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* 84000..85C00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* 86000..87C00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* 88000..89C00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* 8A000..8BC00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* 8C000..8DC00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* 8E000..8FC00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* 90000..91C00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* 92000..93C00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* 94000..95C00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* 96000..97C00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* 98000..99C00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* 9A000..9BC00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* 9C000..9DC00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* 9E000..9FC00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* A0000..A1C00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* A2000..A3C00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* A4000..A5C00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* A6000..A7C00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* A8000..A9C00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* AA000..ABC00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* AC000..ADC00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* AE000..AFC00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* B0000..B1C00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* B2000..B3C00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* B4000..B5C00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* B6000..B7C00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* B8000..B9C00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* BA000..BBC00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* BC000..BDC00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* BE000..BFC00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* C0000..C1C00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* C2000..C3C00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* C4000..C5C00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* C6000..C7C00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* C8000..C9C00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* CA000..CBC00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* CC000..CDC00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* CE000..CFC00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* D0000..D1C00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* D2000..D3C00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* D4000..D5C00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* D6000..D7C00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* D8000..D9C00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* DA000..DBC00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* DC000..DDC00 */ 18, 18, 18, 18, 18, 18, 18, 18, /* DE000..DFC00 */ 46, }; int qe_wcwidth(unsigned int cp) { if (cp - 0x300 > 0xe01ef - 0x300) return 1; return wcwidth_00[cp % 16 + 16 * wcwidth_01[cp / 16 % 64 + 64 * wcwidth_02[cp / 1024]]]; } /* This table was generated from EastAsianWidth-15.0.0.txt */ /* Using a 3 level lookup table: 5260 bytes */ static const unsigned char wcwidth_variant_00[16 * 169] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, }; static const unsigned char wcwidth_variant_01[16 * 128] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 3, 0, 0, 5, 0, 6, 6, 0, 0, 0, 7, 0, 8, 0, 0, 9, 0, 0, 3, 0, 10, 11, 7, 12, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 6, 0, 0, 0, 0, 6, 6, 6, 14, 6, 6, 15, 16, 6, 17, 18, 6, 16, 19, 6, 6, 6, 6, 6, 6, 7, 0, 0, 20, 13, 21, 0, 22, 7, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 24, 0, 25, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 27, 28, 29, 30, 0, 0, 0, 0, 0, 7, 0, 0, 31, 0, 0, 32, 0, 33, 29, 34, 35, 0, 0, 0, 0, 36, 29, 37, 35, 0, 38, 39, 40, 41, 29, 6, 24, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, 9, 46, 13, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 48, 0, 0, 0, 46, 49, 0, 0, 0, 0, 50, 51, 0, 5, 6, 6, 6, 6, 0, 0, 52, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 57, 36, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 59, 25, 0, 9, 6, 6, 6, 6, 60, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 9, 0, 0, 0, 0, 6, 6, 6, 16, 6, 61, 62, 62, 15, 6, 16, 0, 0, 0, 6, 6, 6, 6, 63, 6, 6, 16, 6, 6, 6, 6, 6, 6, 6, 64, 6, 6, 6, 65, 66, 6, 6, 6, 67, 6, 6, 14, 68, 6, 6, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 6, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 5, 70, 0, 71, 0, 0, 0, 72, 0, 0, 73, 0, 42, 7, 0, 48, 7, 0, 0, 0, 0, 53, 74, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 76, 0, 0, 71, 77, 0, 3, 0, 78, 79, 1, 6, 6, 6, 6, 80, 0, 59, 0, 81, 82, 7, 0, 0, 21, 0, 83, 34, 0, 48, 0, 0, 69, 6, 6, 6, 6, 6, 84, 6, 85, 6, 6, 6, 6, 6, 6, 0, 0, 3, 0, 0, 3, 6, 6, 0, 0, 0, 0, 0, 0, 12, 77, 0, 0, 52, 0, 0, 0, 86, 83, 0, 0, 0, 0, 0, 0, 6, 6, 0, 87, 6, 6, 6, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 6, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 88, 0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 68, 0, 34, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 18, 89, 0, 1, 0, 0, 90, 62, 6, 6, 6, 68, 6, 6, 6, 6, 91, 62, 6, 6, 6, 6, 6, 6, 6, 92, 0, 0, 6, 6, 6, 6, 93, 94, 6, 16, 6, 6, 6, 95, 15, 96, 6, 6, 6, 6, 6, 6, 74, 12, 6, 95, 97, 98, 99, 6, 6, 6, 88, 6, 6, 6, 6, 6, 6, 6, 15, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 100, 6, 6, 88, 0, 0, 13, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 5, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 74, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 13, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 23, 63, 7, 0, 0, 6, 6, 15, 0, 0, 0, 0, 0, 0, 0, 0, 6, 63, 6, 6, 6, 7, 6, 88, 0, 3, 53, 0, 0, 6, 6, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 101, 6, 88, 6, 6, 68, 6, 6, 6, 92, 102, 102, 103, 104, 105, 0, 0, 0, 0, 6, 6, 6, 95, 6, 60, 68, 0, 85, 6, 6, 106, 0, 0, 0, 0, 0, 0, 0, 0, 6, 85, 6, 6, 6, 16, 34, 0, 0, 0, 6, 107, 6, 108, 6, 109, 0, 0, 0, 0, 6, 6, 6, 110, 6, 1, 6, 6, 0, 0, 0, 76, 59, 0, 6, 6, 6, 6, 0, 0, 6, 6, 100, 95, 6, 6, 6, 111, 6, 112, 6, 113, 6, 114, 115, 0, 0, 0, 0, 0, 6, 6, 6, 6, 67, 0, 0, 0, 6, 6, 6, 74, 6, 6, 6, 116, 6, 6, 68, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 16, 6, 6, 117, 118, 0, 0, 0, 53, 6, 6, 68, 6, 6, 62, 0, 6, 62, 0, 0, 6, 88, 0, 6, 95, 6, 6, 6, 6, 15, 1, 6, 119, 6, 6, 6, 6, 120, 6, 67, 62, 6, 6, 6, 121, 68, 6, 6, 95, 6, 6, 6, 6, 6, 6, 122, 123, 6, 104, 6, 6, 118, 0, 0, 0, 124, 93, 62, 6, 6, 6, 18, 62, 125, 126, 127, 128, 129, 130, 131, 123, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 6, 6, 132, 118, 0, 6, 6, 6, 6, 68, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 112, 6, 15, 0, 0, 6, 6, 6, 6, 123, 62, 63, 0, 6, 6, 6, 62, 62, 0, 0, 0, 6, 14, 88, 6, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 88, 0, 0, 0, 0, 0, 0, 6, 6, 6, 6, 6, 133, 134, 135, 6, 136, 95, 62, 0, 0, 0, 0, 137, 6, 6, 137, 123, 0, 6, 6, 6, 6, 68, 6, 6, 6, 6, 6, 74, 6, 6, 6, 6, 67, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, 6, 6, 138, 60, 6, 63, 6, 6, 1, 139, 95, 0, 0, 0, 0, 140, 6, 6, 141, 68, 62, 142, 6, 16, 143, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 67, 6, 144, 6, 145, 6, 62, 0, 0, 0, 0, 0, 7, 6, 6, 6, 146, 6, 6, 6, 6, 6, 6, 6, 6, 6, 62, 0, 0, 0, 0, 0, 0, 6, 6, 6, 6, 6, 6, 16, 123, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 6, 6, 6, 74, 6, 6, 6, 6, 6, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 6, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 67, 6, 16, 94, 6, 6, 6, 6, 16, 62, 6, 15, 60, 6, 6, 6, 6, 60, 147, 104, 148, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 6, 6, 18, 0, 0, 0, 0, 0, 0, 6, 6, 6, 6, 149, 6, 6, 6, 150, 6, 0, 0, 0, 0, 123, 118, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 68, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 60, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 1, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 74, 151, 0, 152, 153, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 88, 6, 6, 6, 6, 6, 6, 18, 63, 67, 96, 77, 0, 0, 0, 0, 0, 6, 6, 15, 6, 95, 6, 6, 6, 6, 6, 6, 6, 77, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 77, 6, 77, 0, 0, 0, 0, 0, 0, 6, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 6, 6, 6, 6, 6, 6, 6, 6, 88, 12, 122, 0, 0, 0, 0, 0, 6, 16, 154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, 155, 156, 6, 6, 6, 15, 0, 3, 0, 0, 0, 0, 0, 0, 0, 6, 6, 63, 15, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 16, 0, 6, 6, 6, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 157, 16, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 158, 95, 0, 0, 6, 6, 6, 6, 88, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, 6, 6, 6, 123, 0, 0, 0, 0, 122, 6, 6, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 6, 160, 161, 162, 163, 164, 165, 147, 88, 166, 88, 0, 0, 0, 118, 6, 6, 88, 6, 6, 6, 6, 6, 6, 77, 16, 122, 122, 122, 6, 60, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 15, 0, 0, 0, 42, 6, 0, 0, 0, 167, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 110, 63, 63, 6, 6, 6, 6, 6, 6, 6, 100, 6, 6, 6, 6, 6, 62, 88, 7, 88, 6, 6, 6, 68, 62, 6, 6, 68, 6, 15, 118, 0, 0, 0, 0, 6, 6, 6, 6, 6, 77, 15, 63, 67, 6, 6, 6, 91, 88, 67, 67, 6, 6, 6, 6, 6, 6, 6, 6, 6, 168, 6, 6, 18, 0, 0, 62, }; static const unsigned char wcwidth_variant_02[508] = { 0, 0, 1, 2, 3, 4, 5, 6, /* 00000..00700 */ 7, 8, 9, 10, 11, 12, 13, 14, /* 00800..00F00 */ 15, 16, 0, 17, 18, 0, 19, 20, /* 01000..01700 */ 21, 22, 23, 24, 25, 26, 27, 0, /* 01800..01F00 */ 28, 29, 0, 30, 0, 31, 32, 33, /* 02000..02700 */ 0, 0, 0, 34, 35, 36, 37, 0, /* 02800..02F00 */ 0, 38, 39, 0, 0, 0, 0, 0, /* 03000..03700 */ 0, 0, 0, 0, 0, 0, 0, 0, /* 03800..03F00 */ 0, 0, 0, 0, 0, 0, 0, 0, /* 04000..04700 */ 0, 0, 0, 0, 0, 40, 0, 0, /* 04800..04F00 */ 0, 0, 0, 0, 0, 0, 0, 0, /* 05000..05700 */ 0, 0, 0, 0, 0, 0, 0, 0, /* 05800..05F00 */ 0, 0, 0, 0, 0, 0, 0, 0, /* 06000..06700 */ 0, 0, 0, 0, 0, 0, 0, 0, /* 06800..06F00 */ 0, 0, 0, 0, 0, 0, 0, 0, /* 07000..07700 */ 0, 0, 0, 0, 0, 0, 0, 0, /* 07800..07F00 */ 0, 0, 0, 0, 0, 0, 0, 0, /* 08000..08700 */ 0, 0, 0, 0, 0, 0, 0, 0, /* 08800..08F00 */ 0, 0, 0, 0, 0, 0, 0, 0, /* 09000..09700 */ 0, 0, 0, 0, 0, 0, 0, 41, /* 09800..09F00 */ 0, 0, 0, 0, 42, 43, 44, 45, /* 0A000..0A700 */ 46, 47, 48, 49, 0, 0, 0, 0, /* 0A800..0AF00 */ 0, 0, 0, 0, 0, 0, 0, 0, /* 0B000..0B700 */ 0, 0, 0, 0, 0, 0, 0, 0, /* 0B800..0BF00 */ 0, 0, 0, 0, 0, 0, 0, 0, /* 0C000..0C700 */ 0, 0, 0, 0, 0, 0, 0, 0, /* 0C800..0CF00 */ 0, 0, 0, 0, 0, 0, 0, 50, /* 0D000..0D700 */ 43, 43, 43, 43, 43, 43, 43, 43, /* 0D800..0DF00 */ 43, 43, 43, 43, 43, 43, 43, 43, /* 0E000..0E700 */ 43, 43, 43, 43, 43, 43, 43, 43, /* 0E800..0EF00 */ 43, 43, 43, 43, 43, 43, 43, 43, /* 0F000..0F700 */ 43, 0, 51, 52, 0, 53, 54, 0, /* 0F800..0FF00 */ 0, 55, 56, 57, 58, 59, 43, 60, /* 10000..10700 */ 61, 62, 63, 64, 65, 66, 67, 68, /* 10800..10F00 */ 69, 70, 71, 72, 73, 74, 75, 76, /* 11000..11700 */ 77, 78, 79, 80, 81, 82, 83, 84, /* 11800..11F00 */ 43, 43, 43, 85, 86, 87, 0, 0, /* 12000..12700 */ 0, 0, 0, 0, 0, 0, 0, 88, /* 12800..12F00 */ 43, 43, 43, 43, 89, 0, 0, 0, /* 13000..13700 */ 0, 0, 0, 0, 0, 0, 0, 0, /* 13800..13F00 */ 0, 0, 0, 0, 43, 43, 90, 0, /* 14000..14700 */ 0, 0, 0, 0, 0, 0, 0, 0, /* 14800..14F00 */ 0, 0, 0, 0, 0, 0, 0, 0, /* 15000..15700 */ 0, 0, 0, 0, 0, 0, 0, 0, /* 15800..15F00 */ 0, 0, 0, 0, 0, 0, 0, 0, /* 16000..16700 */ 43, 43, 91, 92, 0, 0, 93, 94, /* 16800..16F00 */ 43, 43, 43, 43, 43, 43, 43, 43, /* 17000..17700 */ 43, 43, 43, 43, 43, 43, 43, 43, /* 17800..17F00 */ 43, 43, 43, 43, 43, 43, 43, 95, /* 18000..18700 */ 43, 43, 43, 43, 96, 97, 0, 0, /* 18800..18F00 */ 0, 0, 0, 0, 0, 0, 0, 0, /* 19000..19700 */ 0, 0, 0, 0, 0, 0, 0, 0, /* 19800..19F00 */ 0, 0, 0, 0, 0, 0, 0, 0, /* 1A000..1A700 */ 0, 0, 0, 0, 0, 0, 0, 98, /* 1A800..1AF00 */ 99, 100, 101, 0, 0, 0, 0, 0, /* 1B000..1B700 */ 0, 0, 0, 0, 102, 0, 0, 0, /* 1B800..1BF00 */ 0, 0, 0, 0, 0, 0, 0, 0, /* 1C000..1C700 */ 0, 0, 0, 0, 0, 0, 0, 103, /* 1C800..1CF00 */ 0, 104, 105, 106, 0, 0, 0, 107, /* 1D000..1D700 */ 43, 43, 108, 0, 0, 0, 0, 109, /* 1D800..1DF00 */ 110, 111, 112, 0, 113, 0, 0, 114, /* 1E000..1E700 */ 115, 116, 0, 0, 117, 118, 119, 0, /* 1E800..1EF00 */ 120, 121, 122, 43, 43, 43, 123, 124, /* 1F000..1F700 */ 125, 43, 126, 127, }; int qe_wcwidth_variant(unsigned int cp) { if (cp - 0x242 > 0x1fbf9 - 0x242) return 0; return wcwidth_variant_00[cp % 16 + 16 * wcwidth_variant_01[cp / 16 % 16 + 16 * wcwidth_variant_02[cp / 256]]]; }