\
+\x10\x80\xc5\x1b\xbfD\xdf+\xe7)\x03\x80 5\xf3\x17\
+V\xec\xde\x0b\xc0\xa3\xb7G\x1a/H)yd\xf9Z\
+\xe2O\x9e\xc6\xe6\xe3\xcd\x07\x0f\x8d7^[\xb0y;\
+\xf7\xbc\xbb\x86\xac\xc2\xa2*\xd5E\xa5\xe0Zb\x80\xb8\
+\xe3\xc9\x0c\x9a\xfe<\x07\x92R\x8d\xdd\xb1\xcb\xfe\xfa\x08\
+\xa1\xcd\x9b\x91|6\x83\xbb\x17\xfe\xc7\xa8\xb9B\x08\xba\
+\x04_Ox\x9b`\xb2\xf2\x0bX\xb9s\x0f\xfa:\xf9\
+\xf20\x80@0\x7f\xfd\x17\x00D\xdd\xd4\x85\xd6\xda\xd6\
+5!\x049E\xc5\x0c{\xf5]\xb2\x0a\x8b\x08k\xdd\
+\x92\x19C\x06\x18\x8e\xe5\xc6\x84#\x0c\x7f\xe3\x7f5\xdf\
+\x08\xae\x15\x06\xd8\x7f<\x99A\x7f\x7f\x8e\xf8\xa4T5\
+\x1a$#o\xf9\x03w\xf6\xee\x09\xc0\xd8\xf9\xaf\x92S\
+Pd\xd4\x5c)%\x13\xb5)\xe9\x0d{\xf7\x93SP\
+X!\x06\x90HNff\xb3\xf3\xc8q\x00\xee\xeb\xfd\
+\x07\x8b\x1e\xb2\x0b\x8b\x98\xbcb-\x00\xb3\x86\xdfN\x9f\
+\xb6!Z>\xfcSk\xf7\x9f_\xf5\x09\x07\
+SN\xa2Uq#=\x13\x06\xf4\x01`\xfd\xde\xfd\xe8\
+\xd6Z\x11\x06\x90HV~\xbd\x0f\x80\xfb4\x833\xeb\
+!\xfa\xc0O\xac\xd8\xa3\x8e=\xbc8f\xa89\x19$\
+\x9cIg\xdc{\x1f\xd5\x5c&\xa8\xe9\x0c\x90\x95\x97\xcf\
+\xd8g_\x22[\x1bt\xd1C\x9fv\xd7P\x83\xfa_\
+_\xff\x05\xf63t\xd4\xeb\xf0\x9e\xe1\xd8\xfc|\xc9\xca\
+/ \xfa\xfb8tk\xad\x08\x03\x08\x04\xd1q\x09\x00\
+\x844iD\xebF\x0d-z\x00\xf8\xc7'1jS\
+p}K\xc6\xf5\x0a\xc7\x9e\x1cIZv\x0e\xc3\x97.\
+\xaf\x99FP\xd3\x19`\xd0\xdf\x9e%5\xfd\x1c\xe6\x0a\
+\xeb\xef\xe3\xcd\xb4\xbb\x86\x020o\xf5\xa7Z\xd7N\xab\
+r\xda\xb5_\x97N\x80J\xff\x9aI_\x11\x03\xe4\x16\
+]0\x9a\x81\x91\xe17Z\xf4\x00\x90[\x5c\xcc\x82\x98\
+\xaf\x00\x989\xd4\xee\x0b\x08-\xde\x83g2\x98\xfc\xe1\
+\x86J\xd5M\xa5\xa0&3\xc0___F\xfc\xf1\x14\
+5X\xed7\x09<6j\x18\xb6\x06~$\x9f\xcd`\
+\xc5\xb6]\x96\x1d/z\xd5\x8b\xd4\x0c`g\xc2\x11\xbd\
+j_\x11\x03H$\xd1q\x87\x00\x88\xe8\xd0\xd6\x89\x01\
+\xa4\x84\xa5;\xf7\x90\x92\x99EHc\x1b\xf7\xf6\x083\
+\xe2\xd3\xe3\xdfx\xf8\x18\xf3\xbf\xd8Yi\xfa\xa9\x14x\
+\xc8\x00upa!\xf6\x9a\xa4\x1e;\xa2\x09TZ\xda\
+^\x99\xfa\x00\x8f\x8d\x19Aj\xfa9\xb2\xf3\x0b8\xa0\
+9\x80z\xed_\xbf\xe7{\x82\x9b6!\xf5\xfc/&\
+\x06P\x08j\xda\x88\xf06\xc1\x00D\xef\x8bS\x0bY\
+\xd1\x18@\xd1\xd2\xad\xefw.\x93\x01\x14\xcd\x08\x14b\
+\x8f\x9d\x00 \xaa{\x17kM\xd1\xc4\xbb\xb4lN\xf4\
+\x81\x9f\x98:\xa073\x87\x0e \xb8\xb1\x0d\x84 B\
+s\x0c\x83l\x0d\x09i|u\x86\xca\xdd\xc2U\xb9b\
+b\x00\xed\xde\xe3\xb9\x80\xca\xf6\x01B[\x04\x12\xaaM\
+1\xdf\xd5\xd7\xba\xd4\xec\xf1Q\xc3x|\xd40\xa7w\
+\xe24C\x01\xf8p\xfa\xa3\xf6BE\xf5\xda\x0f\xa4\x9e\
+\xc4(y\xd3\xb3Yw\x0dQw\xcd\x22@@D\xa7\
+\xf6N2:\xbe\x9e9\x8d\xb0\xa0Vn\xd3\x1d\xd2\xd8\
+\xc6\xac\xa1\x03\xca\xcc\xdfU\x87\x87s\x01\xd5\xca\x00\xcf\
+\xfdw\x0d\xf3V|L\x80\xaf\x0f\xe1\x1d\xda\x10\xe0\xeb\
+Kx\xbbP\x10\x82\xd9\x13\xc6\x02\x10w<\x85\xe0\xc0\
+&\xd8\x1a\xf89\xbd\xaf\xd7~\x80\xfe];;=\xbf\
+\xd3\xcd\x92\xb5g\xc6x\xbe\x85\xcd]\xe1\xa7df\x01\
+\xaa\x01\xa4df\xb1\xfa\xfbx@\x10\x9b\x94\x0a\x08\x12\
+\xce\xa4\x93]|\x81E#\x07\xf1hD/\x8f\xe3\xab\
+2\xd44\x06\xc8\xca\xcbg\xf1'\xd1H)\xc9)(\
+dg\xdc!\x10B\xa5\xfb\xc0\xa6\x86\x01\x8c}\xe1_\
+\xa4\x9e\xcb\x04\x01\xfa\xf9\x03amCh\xe8\xeb\xc3\xcb\
+\xff7\x9e\xf06\xc1\xbc\xf0\xc1:v\x1d:J\xbf\xae\
+\x9d@\xab\xd5\x96\xab\xa6\x00\xbd\xe0\xe7\x7f\x1aca\x00\
+\xc7wb\x8f&1\xbew\x0f&\xf4\xe9\xc9\xce\xa3'\
+X\xb8q\x1b\xd9E\xc5$\x9c>\xabz\x0a\xda18\
+][\xb7`\xcf\xf4)\x844\xb6\xf1\xfa\x8e=\xe4]\
+\xfcU\x8d\xcb\xd8\x86\xa5\xb0pk,\xe3\xfe\xd0\x0d\x9b\
+O\xfd+\xd2\xd7\x15\xa3\xa61\xc0S\xaf/#'\xbf\
+\x00a(\x0b}i2QZ\x1f<\xeex2i\x19\
+\xe7A\x08\xcc\xe7\xe9\x1dHN\x05\xa1\x10\xdc\xac\x09\xa0\
+:\x80\xbb\x7fJ$\xf6\xf01\xbb\xf2\xb5L\x19g\x16\
+)v\x03\x98\xf7\xd9&\xcb\xefj\xfc\x8a\xfd\x04S\xa1\
+\xf6@&\xf4\xe9IC\xef\xfa\xc4&&\x19\xbf\x9b]\
+\x87\x83?\x9f%\xfe\xe73\x84]\xdf\x82\x91];\xb3\
+\xfa\xfb\x03V\x1f\x04I\xee\x85\x8b,\xfdz\x1f3\x07\
+]\xe5\xf3\x12j\x12\x03$\x9fNg\xf9\xe6\xaf\xec\x16\
+\xa8\x19\x19\x9a\x11L\x1c\xdc\x1f\x80\xe5_\xee\xc48'\
+O\xf7\xd2\xa5j\x84\xfe\xde\xf5\xb1\xf9\xf9\x02\xb0\xfb\xf0\
+1{aK\xa9}iC\xda\x1dA\xcdo4t\x01\
+\x96|\xf8\xfb\xf8\xd0-\xa8\x95\x9a\x0e\xcd\x08\x02\xb4\x1a\
+\x1b\x16\xd4\x8a\xbe\xed\xd5\xc9!\xd5H\x85\xe9 ,H\
+\xfd%\x9b\xb0\xeb[0\xbeg\x18\xa9Y\xda\x07^o\x19\x893\x8f\xb0\x01D\x86\xdd\x08\xc0\xce\
+\x03\x87\xd5\xdf\xb5\x98\xad\xe7\xea\x0b\xc3\x0143@y\
+F\x02\xfbth\x0b\xc0\x81\xb4S\xe4\x14\x15[F\x02\
+\xedu\xdd}:\x1d\x06$]\xc7o\xe8\xcb\x9e\x10c\
+\x04\x0ek\xc2\x8cX\x8d\x9f]\x8f\xd8\xadIp{\xd0\
+w\xe9\xa8)s\x01\x07O\xa48\x8c\xac\xd9\x19\x00\xa0\
+\x7fx\x17\x00c4\xd08-\xdb\x81\x01\x82\xb5e\xe9\
+\x07RNb\x9c\x06\xae\xf3\xa7td.\x5c0\x80E\
+;F\xe1\x9b\x88\xd8I\x0f\xe6t\xea\xcd\x8a\xfd\xea\x22\
+~C_\xf6\x84\x185\x0fk\xc2\x9c\xe8\xdfE\x8dE\
+Jr\xf5\xaefy\xe1\xaa\x5cM\xe1\xea\xd1V)\x03\
+d\xe5\xe5\x13\x97\x98\xe4\x96\x01\xcc[\xcd\xcc\xeb\x01\xf4\
+\xab\x99\x01\xf4\xf8\xb3\xf3\x0b*\xc4\x00\xd6\xe4[\xe7\x02\
+j2\x03T\xd8\xf7\xaa\x09\x0c\x10\x9f\x98d\xb5<\xcb\
+U\x1d\xe0\x01\xd5\x01\xb4\xd7\x0f\xd7\x0c\xd0\xbf\xdb\x0d\xf6\
+\xf4\xfd\x8e\x18\xa0\xa2\xcc[#\x18`\xe7\xfe\x83V\xcb\
+\xb3\x5c\xed\xbb\x8dR\xcff\x98\xea\x87\x1b\x06\xd0\x90\x9a\
+q\xbe\x96\x01<\x81\x87\x0cP\xa5\xbd\x80\x943\xe9\xa5\
+2\x80\xbe\xdb\xc8\xba.\xc0u/@G\xda\xb9L\xbb\
+\x97.)G/\xc0\xa2\x1d\xcc\xb3\x81 \x991b0\
+\x11\x1d\xdb\xb0\xfbX2\x0bb\xb61s\xf8\xedDt\
+\x08%61\x99\x85\x9bw0\xfe\xe6p\xc6\xf7\xea\xce\
+\x81\xd3\xe9\xc4\x1eO\xe1\xd1~\xb7\x90\x9a\x95\xc3\xd3\xeb\
+\xb7\xd0\xb5esf\x0e\x8e$5+\x87\x19\xd1\xdb\x08\
+\xb2\x05\xb0h\xe4@r\x8a/\xb0t\xcf\x0fL\xee\xfd\
+\x07@\xb0h\xfb\x1e\x10\x82\xa7\x07\xdc\x8a\x00\x16\xee\xfa\
+\x8e\x939y,\x89\x1aD@\xfdz,\xda\xbd\x8fo\
+N\x9e\xb12\x80\xde\xab(/<\xec\x05T\xe98@\
+\xea\xd9s\xd6\xfe\xa7\xe5j\x92K?g\xaa\x87\xea\x7f\
+\x8e\xe3\x00F\xd1i\xf7\xe5\x1f\x07\xb0h\xc7(|\x89\
+dDX\x17\x9e\x89\x1a\x0c@\xbf\x8e\xed\x90\xc0\xac\x11\
+\xea\xaa\xe3\xc8\x0em\x09\xf0\xf1f\xaa\xb6\x0c-\xb2C\
+\x1b\xa6\xf6\xbf\xd5\x08)\xa7\xa8\x98\xf1=\xc3\xec;\x88\
+\x04D\xb4\x09&D\xdbI5\xf2\xc6\x0e\x86l\x90\xcd\
+\x9f\xb4\xec\x5cFvn\x07@\xd7\xe6M9\x90~\x9e\
+\x11\x9d\xd4\x1eJ\xd7\xc0&\x84\xbc\xb2\xcc\xae'E\xb9\
+2\x06p,WS\xb8\xd5\xc2\x00\xba\x0f\xe1\x96\x01L\
+\x1bN=e\x00{[[y\x0c\x10\xe00q\xf3\xcc\
+H\xeb)hz\xe1\xbb\xc2\xd4~\xb7X\xee'\xf4\x08\
+s+\x1b\xd6\x22\x900\xd3.\xeb`[\x00\xc16\xeb\
+\xd7S\x9c|\x80*f\x80*\xf5\x01v\xc5\x1f*\xdd\
+\x070m8-\xcd\x07\x88\xb8\xb1\x93]\xce\xdc\xd6V\
+\x92\x0f\xb01\xeep\xb9\xf2\xa5O\x0d{$\xfbK\xb6\
+\xc7\xb2\x1b\x8f%\xff\xb6|\x80K\xb1\x9e\xad\x95\x9b3\
+\xf1n\xe6L\xbc\xdb#\xd9\x0b\xeb\xde/w:\x0aW\
+,v\xf8\xc5\xca\x009EE\xac\xdf\x9f@T\xf7.\
+e\x86\x15\xff\xf3\x19V\xed\x8d\xe3\xa5\xd1C=\x8a\xfb\
+\xd1\xcf6\xb3\xf1\x81{<\x92\xddx,\xf9\xb7\xc5\x00\
+5\x17\xce\xbd\x80\x0d\xda\xea\xe0\xb2\xb0\xf2\xbb\xfdl\xf4\
+ptn\xc3\xa1c\xc4&\xa5\x11\x7f:\xbdL\xd9\xec\
+\xa2bb\x12\x7fc\x0cP\xa7\xef\x08\xd3<\xbd\xe3\x18\
+\xb9`\xcb?\x9f\xa3\x7fx\x17\x9e_\xfe\x11\xf3V}\
+\x02\xc2:\x16\xae_#\xbatb\xeb\xc2Y\x00\xd4\x1f\
+u\xbf\xf5K\xa4\xa5\xac\x07(Z\xb5\x04\x00\xef\x09\xd3\
+\x88\xe8\xdc\x8e-3\x1f\xd7\xb5\xe3\xd4\x0b\xd8\x18w\x98\
+\xac\x82Ble\x9c\x83\x14s\xe8(i\xbf\xe4\x18\xeb\
+\x02JC\xf4\xe1D\x84\x10\xac\xda\x9f@X\xcb\xd2O\
+X\xd9x,Y\xcd\xc7o\x89\x01\x22\xc3\xbb\x96\xea\x03\
+\xc4\x9fH1dK\xf3\x01b\x0f\xd9k\x5cU\xf8\x00\
+\xa0\xee\x0e\x8e\xd6&\xa4\xdcaWb\x12\xa9\x99\xd9 \
+\xe0\x0d\xd3\x09$\xae\x90UT\xcc\x9a\xfd\x09H)\xd9\
+\xf4\xd3\xf1Re\x016\x1e=a\xca_\xf51@\x15\
+\xcf\x05\x94\xde\x0b\xc8\xce/0$\xcd\xbd\x00\xfdZz\
+/\xc0\xc5H\x9c4%\xb3\xcc^\x80\xf3H\xe0\xaa=\
+?\x98\x85\x98\xbe\xd6\xfa\x11\xee\x95\xdf\xc5\x19]\xcc\x98\
+\x84\xa3\x96\x0d!+\xf7\xc5[\xee7\x1e>f\xa47\
+5;\x97]I\xf6cl\xe2\xcfd\x10m2\x8a\xd4\
+\xec\x1cb\x12SL\xf931@\x15\x8f\x04V\xe98\
+@p\x8b@v\xc5\x1f*s\x1c 8\xb0\xe9U\x1d\
+\x07\xd0\x9b\x81\xd8cI\xcc\xdf\xf0%\x11\x1d\xdb\x12{\
+,\x89%\xdb\xbf\x01\x04#\xc3n 61\x99\xd5\xfb\
+\xe2T\xad(j\x9b=\xee\xfd\x8f\x989\xb8\x9f1 \
+\xb4t\xf7>\x16E\x0d\x22-;\x97\x19\xd1\xdbL\xe9\
+\x15\xcc\xd8\xb4\x9d\x19\xb7\xa9\xdd\xc9E;\xbf%-;\
+\x0f!\x04\xfe\xf5\xeb1\xf3\xcbXK\xbf\xfd73\x0e\
+\x10\xd2\xbcY\xa9\x0c\x90zV]:\x15\x1c\xd8\xd4\xe3\
+q\x80\xe0fMH=\x9fY\xa9\xe3\x00Z@\x00,\
+\xdc\xb8\x8d\x051\xdb\xd0\xe7\xef\x97\xec\xf8\x86%;\xf7\
+h\xe9P\x0b_\x8fo\xf7\xf1T\x86%\xad\xd0~\x17\
+\x1c8\x93\xce\xf0wV\xabQ8\x9c\xd7\x9fp\xf6<\
+\xe3\xd7|\x8ey=\xc0\xb8\x8f\xa2\xd5p\xf5?\x87r\
+\xb8\xe6}\x80~\xddK\xf7\x01R\xd2\xcf\x01\xea\x90p\
+i>\x80\xb94\x83\x9a6\xae\x12\x1f@\x7f\xe1\xf76\
+\x17P\xa5>@X\xbb6\xa52\xc0\x01\xcd\x09\x0cm\
+\xde\xacL\x1f`\xc7\xc1\x9f\xec\xe9\xab\x22\x1f\xc0Q\x0f\
+\xe6l\xebDd\xbf\xba\x88\xdf\xd0\x97=!\xbf\xeb\xd9\
+@\x9b\xbf\x1f]\xdb\x04\xbbe\x80\x1c\xd3ql}\xb5\
+\x8d\x1ee\xad\x07\xa8e\x00\x0fQ\x13\x18\x00\xa0\xdfM\
+\xdd\xdc2\x00\xc0\x0e}{\xb66/\xe0\x8e\x01R3\
+\xce\xabr\xcd\x9a\xfc\xae\x18\xc0\xbf^\x05?\xceQ\x13\
+\x18\x00`\xe2\x90\xdb\xdc2\x00\xc0N\xad\xef\x1d\xa9-\
+\xf8p\xc7\x00\xba\x01\x04\xf8\xfaT\x88\x01b\xb5-\xe0\
+\xdd\x82Z\xe1\xef\xed}\xcd0\xc0\xbd]\xec\xb3\x89\xe5\
+\x82\x87\x0cP\xe5\xab\x82\xbbwhK\xeb\xc0\xa6\x9c\xd4\
+\xce\xea5\xd7,\x89\xdd\x0f\xe8\xa7-\x0eu\xd7\x0b\xd0\
+\x0f\x92\x08\x0b\x0d\xa2\xa2\xab\x82\x17o\xde\xce\xb4!\x03\
+\xf8\xe9\xe5\xd9\x1cH;\xa5\xc9\x98\x04\x859~\x9c\x9f\
+;\xe9A8=v\xd2\x93\x9b{\x01\xf6\xedj\xa6\xe0\
+\x1c\x03\x8c\x08v\xbfQ\xb5Tx\xd8\x0b\xa8\x96}\x01\
+\x8f\x8f\x8d\xe2\xa97\xde\xc3i\x1c@\xd8W\x03\x876\
+oFP\xb3&\xa4\x9d;\x8f\xa5\x8d\x96ja\xeb\x8b\
+F\x83\x9a5\xb1\xff^\xce}\x01\x0b>\xff\x02\xa1\x08\
+\xa6\x0e\xeeO\xbf\xce\xed+\x9c\x9fk\x02\xae\xca\xd5(\
+\xdfj\xde\x19\x14\xd5\xf7\x16\xfe\xb6\xe4\xbfFV\xe1\xbd\x819E\xc5\
+\xec:z\x1c\xf3&\x90\xe1\xda\xa2\x90\xf8\xb4S\xc4&\
+&\xa9\xb9\xd7\xbf\xa2n\x9a`Z:~\x14\x00+\xf7\
+\xc5\xb1[?\xaf\xc0\xb4;X\x0a\x981\xb0\x06|H\
+\xbb&1\x00\xc0cc\xa3x\xed\x93hr\x8b\x8a\x8d\
+\xe0\xf4\xb6v\xc3\x9e\xef\xf9\xf7\x94\xfb\x09o\x17Jp\
+\xb3\xa6\xa4\x9e\xcb4\x18 R?\x07@\xa8\x8e\xa0\xcd\
+\xcf\x97\xfbn\xebc\x1c\x15cv\xd3\x03|}\x08\x0b\
+i\xad\xdd\xdb\xe3\xde4c\x9aQ\x83ug\xd0\xea\xde\
+CD\xc7\xb6\x86|\xdf\xf6\xa1\x08\x04\xd9\xc5\xc5$h\
+S\xb9B\xc0\x8d-\x02\x09i\xac\x9e'\x18\x93p\xd4\
+\x99\x81\x90\x04\xd4\xf7fr\x9f\x1eW\xa4\xabJAM\
+b\x00\x00[\x03?\x1e\xfb\xe3H^X\xfe\x11am\
+C\x08h\xe0GX\xbbP\x1a\xfa\xf9\xd2P\xdb\xf5\x0b\
+\xb0\xe5\xc5\xd9\x84\x96q4\xfd\xa4\xdb\xcaW\xc3\xfa\xdd\
+`\xf7\xa4\xcbj\xfb\xc3\x82Z\xb9\xdd\x1c\xaaO\xf6d\
+\x15\x1619\xe2f\x10\x82\xb4\xaclR\xb3sI\xfb\
+%\x87\x9fs\xf2X8\xf2\xf6\x9aq\xc2xMc\x00\
+\x80g\xef\xbf\x97g\xef\xbf\xb7T\x19W\x85\x9f\x9c\x9e\
+AZF\xa6z\xb2\x88\xb6Kxq\xf4\x97\xda!\x91\
+\x0e\xe3\x14\xa6\xabq>\xc0\xa71\x86\xef\xe1J.\xc0\
+\xa7>S\x07F\x02\x10{,\x09\x09t\xbd\xbe\x85S\
+A\xea\xf76\x1f\xef\x9a\x7fLLMc\x00G\xecO\
+L\x22\xb7\xb0\x88\x94\xb3\x19\xa4e\x9cG\xa2\x1e\x12e\
+k\xe0\xc7\xf3+\xd72o\xcd\xa7\xe8'\x84\xe8\x8bI\
+\x02\x1a\xf8\x91\xa1-\xf2x\xfe\x83u\xe4\x15\x17\xa3\xb7\
+\xcd\x966[\x08\x8b\x01,\xf8lS\xa9\x1bA\xbb\xb6\
+n\xc5\xd4\x81\x91d\x15\x142\xe4_o9\x87\xa7\x08\
+\x96\x8e\x1f\xcd\x84[nR\x8f\x87\xd9\x17\x0f@\xb7V\
+\xcd\x09\xf0\xaeO\xebF\x0d\x8dU\xc05\x065\x91\x01\
+t\xfc\xf5\xf5e\xbc\xb1.\xc6RXz\xf8s&\x8c\
+e\xc2\xc0H\xe6\xaf\xf9\xcc\xd2\x0b@(\xe4\x14\x14\x10\
+\x97\x94Jx\x9b`\xfau\xe9\xa4\x9e\x14V\x09\xa7\x84\
+Evl\x03\xa8\xb5\xdfy\xee\x02\xfc\xeb\xd7cD7\
+\xd5\x17Y\xb8y;\xab\xf7\x1dp\xda\x1d\xbc\xe8\xceA\
+<\x1aQ\x83\xbe\xab\xe8!\x03\x5c\x955\x81\xafL}\
+\x80\xae\xa1*\x95\x9b\xc7\xc7\x16\xaf\xdbDV^>\xa1\
+\xcd\x9b1\xfe\xf6\xbe\x96\x91@\xbd\xdb\xb0+\xe1\x08\x00\
+#{u\xd7\xdd{<\x19\x09\xb4\xe6\xc3:\x17\x10\xd1\
+A]\xa7\x1f{\xec\x84\xcb\x91\xc0G\xfb\xf7\xc6\xe6\xe3\
+MJf\x16\xab\xf6\xc6\x1b\xf1\xe9\xf1\x0f\xbb\xb1C\xcd\
+*|\xa89s\x01\xee\xb0\xf5\xdf\xcf\xd3M\x9b(\x02\
+5\xbe\x9c\x82B\x16\xaf\xdb\x04\xc0\xecqch\xe0\xe3\
+mb\x00\xf5\xbaK[\x1e\x16\xd5\xab{9\xe7\x02\x1c\
+\x19@\xf3\xda\xbd\xbd\x89\xbaI]\x0d\x1c\x1d\x7f\xd8\xa2\
+\x07\x80\x00\xefzL\x19\xa0\xee\xcf_\xb0i;\xf6\xe4\
+\xa8\xf1vi\x19\xc8\x9b\x7f\x1aY\xa9\xba\xa9\x14\xb8*\
+WL\x0c\xa0\x89]\xb5U\xc1\xb6\x06~\xac}n:\
+\x0d|\xd4E\x98z\xe8\x8b?\xdfD\xf2\xd9\x0cB\x9b\
+7\xe3\xb1;\x8781\xc0\x86\xef~$%\xfd\x1c6\
+?_F\xf4\x0a\xbfb\x06\x18\x11\xae\x0eA\xc7\xa7\x9d\
+\x22-3\xcb\x89\x01\xde\xbco\x0c6\x1fo\xe2O\x9e\
+f\xf5\xbe8\xcb\x5c@\x97\x96\x81\xc4L\x9eX3\xbc\
+~G\xd4t\x06\x00\xf5\xb0\xc8m\xff\x9a\x8b\xbf\x8f\xb7\
+a\x91\xb9\x05E<\xf8\xca[\x00\xcc\x19?F;\x1a\
+\xc6\xce\x00B\x08\xd6\xef\xfd\x11\x80\xa8\x9e\xdd\xaf\x98\x01\
+\xee\xeb\xa3\x9eP\xb6R\xfbT\x8cY\x0f\xc3\xbbv&\
+J3\x90\xa7?\xdbdN\x06][5g\xcd\xfdw\
+\xd7\xcc\xc2\x87\x9a\xcf\x00:\xc2\xdb\x85\x92\xb8\xe2\x0d\x93\
+O \xd9u\xf0'\xd6}\xa3\x1e\xe3\xfe\xf1\xac'\xf0\
+\xf7\xf1\xb1\xd7\x5c)Y\xb9\xfd\x1b\x00&\xde\xd6\x17\x7f\
+\xef\xfa\x15f\x80\xa0\xc6\x8d\xe8\xd7Im\xff\xf5\x15\xc1\
+\xba\xdc\xf5\xb6\x00\xde\x9c\xa8\x0e\xe7\xce\xdf\xb8\x8d\xd8\xc4\
+\x14\x83\x88\xba\xb4\x0a$f\xca$cP\xa8F\xe2Z\
+`\x00\x1d\xb6\x06~l}y\x0e\x11];\x1b\xb3c\
+\x0f\xbd\xfa\xb6\xd1\x14|<\xf3q\x0b\x03\xc4\xa7\xa4\x19\
+\xc7\xc6N\x1b>\xb0\xc2\x0c0S\xdb\x10\xba\xfe\xc7\x83\
+\xa4ef\x1b\xf9\xf7\xaf_\x8f\x0f\x1f\x99`P\xff\xc2\
+\xcd\xf6\xb6\x7f|\xaf0b\x1e\xfds\xcd\xad\xf9:\xae\
+\x15\x06\xd0ak\xe0\xc7\xb6\x97\x9fe\xd6\xb8\xd1\x00d\
+\x17\x14p\xf7\xfcW\xc9\xca/\xa0\x7f\xb7\x1bx{\xda\
+\x03Fz\x04\x82\xc5\xd1_\x020u\xf8@\xfc}\xbc\
+\xcb\xcd\x00\xd77n\xc8\xc4\xbe\xea\x91\xaeK\xb6\xed6\
+^\x90R\xf2\xd6\xa4\xb1\x84\xb5nIVa\x11\xf7\xbc\
+\xbd\xcaxm\xd1\xa8!\xbc5~t\xcd/|\xb8\xb6\
+\x18\xc0\x8c9\x13\xc6\xb2e\xe1,\x82\x9b6!>9\
+\x8d\xbf\xbf\xab\x16\xc0\xa4\x81\x91\xbc=\xed/\xe8+o\
+V\xed\xdcc8\x83\xd3\x86\xdd^n\x06x\xe6\xce!\
+\x00\xec\xc4\
+\x84\xde\xeaD\xce?>\x8e&5\xf3\x17\x16\x8e\x1e\xc6\
+\xe6\xc7\xff\xaff\xb7\xf7\xaep\xad2\x80\x19s\xc6\x8f\
+!\xf1\xbdW\xf1\xf7\xf5\xe6\xc9wV\x020\xe9\xf6\x08\
+\xb6\x9dn!\xadY\xb9\xe3\x1bv&\x1c\xc1\xe6\
+\xe7\xcb\xc7\xd3\xa7x\xc4\x00\xfe>\xde\xbc\xf5\x80:\x1f\
+\xb1|\xf7^v\x1fM\xa2o\x87P\xf6\xcc\xfe+\xfd\
+:\xb6#\xab\xa0\x90\x07\xff\xf7\x11\xc1\x8dm\x1cza\
+:\xd3ns\x7f6@\x8dFe3@\xeeU\xfa\xa0\
+\xb2\xcd\xcf\x97\x7f?8\x81\xd9\xf7\x8e2\x96\x86\x87\xb7\
+\x09f\xcb\xf3\xd3\x99u\xf7H\xfe\xf6\xdf\x0f\xc8\xca/\
+\xa0\xdf\x8d\x1dy{\xf2\xa42\x19\xe0\xa5{G\x11\x1e\
+|=)\xe72Y\xb0~\x0b\x8b\xfe4\x92/\xfe>\
+\x85\x90&\x8d\x00H\xcb\xcc\xe2\x9dIw3k\xc4\xc0\
+k\xa3\xadw\x81\xcc\xc2\x22\x8f\x19\xc0\xe3\xb9\x80Tm\
+\x13\xc7\xd5\x82\xcd\xcf\xd7\xf2\x8d\x00\x9b\x9f/\xb3\xfft\
+\x17S\x87\x0f\x22\xf5\x5c&6?_&\xf6\xefM\xea\
+\xb9L\x16|\x1a\xe3\xc4\x00\x01>\xde\xbc4n\x0c\x13\
+\xb5!\xdb\x03'O\xb3\xe7\xd9'\x9dv\x03\x97\xf6\xb1\
+\x88k\x05\xe9\xf9\x85\xb8,W\x9c\xe7\x02<\x9e\x0d<\
+[\x8eS1\xaa\x136?_\xe3\x14q\x80\xd9cG\
+2\xb2g8\xafo\xfa\xca\xf8\xed\xbe\xbe\xbd\x985z\
+\x18!\xdag\xe6A\xfdp\xf4o\x15\xe9\x05\x85T\xfa\
+l\xe0\xd9,\xcf\x8f:\xb9\xda\x08\x0fi\xcd\xbb\x93'\
+\x19\xf7\xef<<\xe1*\xa6\xa6\xfa\x91\x91_\xe01\x03\
+x\xec\x03\xc4'&Uw>jQA\x1cL?_\
+\xf9\xbd\x80\xd4\x8c\xf3\x1c=y\xaa\xfarQ\x8b\x0a!\
+13\x8b\xb4\xec\x5c\xcf{\x01\xb2D\xa6\x83g\xe3\x00\
+_\xec\xdd_}9\xa9E\x85\xb0\xf5D*\xe6\x01\x91\
+R\x19@\x92\xa1 \xc4Y\xf0l\x1c`g\x19G\xa8\
+\xd4\xe2\xeac\xeb\x89TLN\x5c\xa9\x0c \x90g\x15\
+!\xe5Y\xf0\x8c\x01v\xc6%p\xa1\xa2\xc7\x97\xd7\xa2\
+\xcaq\xe1\xd2ev\xa5\xfc\xec9\x03\x08R\x14)\xf0\
+\x98\x01r\x0a\x0aY\xbee{\xb5f\xaa\x16\x9ecu\
+\xfca~\xbd\x5c\xe21\x03H\xc4Y\x05\x89\xc7\x0c\x00\
+\xf0\xdc\xfb\x1fR|\xf1b5f\xab\x16\x9e\xa0\xf8\xd2\
+%\xe6\xef\xf8N\xab\xd9\x9e1\x80\x90\x9cUJ\xa4\xf2\
+\xad\xfa\x8egs\x01\x19\xd99\xbc\xf6\xe9\xc6j\xcbX\
+-<\xc3\x9b\xdf\xc5q\xbe\xb0P-7\x0f\x19\x00\x88\
+S\xb8X\xb4]\x22/x\xca\x00RJ^\x5c\xf3\x19\
+9\x05\xf6#\xdejqu\x91{\xe1\x02\xff\x8c\xdd\x07\
+\x08\x8f\x19\xa0DrQH\xb6+\xfc\xb05G\xc0\x0e\
+O\x19@\x08AnA!S\xff\xf3n5f\xb1\x16\
+\xa5\xe1\xb1\x0d\xdb\xc8\xff\xf5W\xd4\x95Nx\xc6\x00B\
+n\xcfz\xfa\xe1\x1cE\x93\xdf\x5c\x1e\x06\x00\xf8`{\
+,/\x7f\xb8\xaezrX\x0b\xb7x\xe5\xeb\xefYw\
+8\x11}\xf5\xb4\xa7\x0c\x00b\x1dh\x87\xe3\x95\x94(\
+\x9b\xcb\xc3\x00\xa0N\x14\xcdZ\xb6\x9a\x98\xef~\xac\x86\
+l\xd6\xc2\x15\xbeLL\xe1\xf9m_[vPy\xcc\
+\x00%r3\xe8\xa7#\xee\xd9p\xa4\xa4D\x1eU\xdf\
+\xf5\x8c\x01\xf43o&,\xfc\x0fGj\x87\x88\xab\x1d\
+\x89\xe7\x7f\xe1/\x9f\xc4Pb\xae\xd9\x1e2\x80\x14\x1c\
+\xcd\x9e19\x05t\x03\x00\x84\x22\x9eV\xdf\xf5\x9c\x01\
+\xa4\x94\xe4\x15\x15\xd1\xe7\xb1Yl\xdb\x7f\xb0\xaa\xf3\x5c\
+\x0b\x0d;\x93\xd2\xb8\xed\x9d\x0f\xc8\xbdp\xd1Z\xb3=\
+d\x00\x81|Z\x0f\xcbK\xffG\xa6\x1d;\xa2\x04u\
+\x18\x08\x04\x99w\xd9:/\xa8\xd4\xae\x02\xf4\xdd\xbb\x17\
+/]\xe2\x83\xafvS\xaf\xeeu\xf41}\xdd\xa3\x16\
+\x95\x8f\xd7\xbe\xfe\x9e\xc9\x9f\x7fA\xf1\xa5K.\xa6|\
+\xf5\x13O\x5c\x94\x97&W\x02\xdf\xe4<=e\xba\x1e\
+\x9e\x979p\x19\xd4!\xd9KQ\xfel\x14\xbaV\xc8\
+\x8e\x81X\x22\xd5e\xe0\xa2N\x00\x00\x044IDA\
+Tv\xc7J\xe0\xab\xfd\x09$\x9e>\xcb\xf0^7\xe1\
+\xe5U\xc13nk\xe1\x12\x17/]\xe6\x81\xb51,\
+\xf9\xf6G\xb5\x82+.\xdav\xd3\x15\xa7o5\xabr\
+R\xc8{.n\x8d9\xa9\x87k1\x00\xd2\x8e\xa5\x88\
+\xa0\xf6\xb7\x0aE\xb4+\x0f\x03\x98\x9f'$\xa7\xb1\xf2\
+\xabX\x84\x22\xe8\x12\x12D\xdd:u*]\x19\xbf'\
+\x14^\xfc\x95e{\xe3\xf9\xcb\xda\x18\xf6\x9e<\xa3\xb6\
+\xcd.j\xb6g\x0c\xc0\xe7\xb93\x1e}\xd9\x1c\xbe\xc0\
+\x11}F\x04)\x8a\xb2OQ\x84z\x80\xaf\x0b\x06\xb0\
+\xac0\xd1\xf7\xc9\xbbHTC?_\xa6D\xdd\xc1\x9f\
+\x07\xf5\xb3|!\xac\x16e#-+\x87\x15?&\xf0\
+\xf6w\xfb\xc9.*v\xd0\xaf\xe9k\xe5\xee*\xa9\xc3\
+i\xe5\x08\x91qAx\xf5,~\xfa\xe14s<\xce\
+\x06\x00\x10\x19\x15\xa9 \xb6+\x8aP\xca\xcb\x00\xd6\xe7\
+v_\xa2\xc3\xf5-\xb9\xa3G\x18w\xdc\xd4\x8d\x88.\
+\x9d\xa8_\xf7\xba+T\xd1o\x0b\xc5\x97.\xf1u\xf2\
+I\xb6&&\xb3-1\x85#\x19\xe7\x1d*\x9b~\x98\
+\x06\xe5f\x00\x09%%\x92\x01\xf9\xcfL\xdd\xe5\x18\xaf\
+k\x03\x00\x94\xc8;\x9fV\x14\x16^\x09\x03\x18r.\
+|\x89NA\xad\xe8\xdc\xba\x15\x9d[\xb7\xa4S\xeb\x96\
+\xb4\xb05\xb4/\x91\xa3\x15E1\xa7\xb2\x96\x01\xaa\x89\x01\
+\xa4\x10\x12\xe4\xa7\x92:s\xf2\xe7>V\xbeO\xa0k\
+\xa8\xb8\x01\xe8\x188\xa6{\x1d\xa1\xcc\x15\x8a\x12\xe56\
+\xf1\xc2\x94IW\xf4\xe5`,.\xe5<\xf0\x01\x5c*\
+\xd5\xa5Q\xba\x09\xc7\xa4\x5cs8\xee\x8d\xd2\x85\x91;\
+\x19\x9b\x0b#\x17.*\x83\xd9\xc8]\x1a\x9b\x83q*\
+b\xfd%\xa5dn\xe1\x9c\xa7\xaeh\xb7\xce\x95\x1b\x80\
+\x8e\xc1\x13|\xbd\xc4\xc5\x81 \x87(B\x19\x8a \xb8\
+\x96\x01*\x93\x018!P6K\xd8\x9cW\xc7\xef\xab\
+\xb2\xbc{OQy\x06\xe0\x88A\xe3\xda{)\xb2\xbb\
+\xf0\xa2\xad\x806\x08\xa5\xad\x10\xa2-B\x04\xa91\xd7\
+2\x80\xb3\x9c@@J\x89 I(\xe2\x04\x92\x13R\
+\x88$\xe5r\x9d\xfd\xb9\x8b\x9e,\xfb\x0b\xd4\x15\xc0\xff\
+\x03\xacS*H\xf17=\x8e\x00\x00\x00\x00IEN\
+D\xaeB`\x82\
+\x00\x00\x05~\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00 \x00\x00\x00 \x08\x03\x00\x00\x00D\xa4\x8a\xc6\
+\x00\x00\x00\x09pHYs\x00\x00\x0e\xc4\x00\x00\x0e\xc4\
+\x01\x95+\x0e\x1b\x00\x00\x02\xbePLTEGpL\
+\xd7`*\x17\x0a\x04\xa0G\x1fO#\x0f\x04\x01\x00\xf7\
+q4\xf6n0\xdfd,\x00\x00\x00M\x22\x0f\x14\x09\
+\x04\x02\x01\x00\x9eG\x1f\xd8a*\xddc+-\x14\x08\
+Q$\x10\xb5Q#\x22\x0f\x06\x06\x02\x01\x17\x0a\x04\xa1\
+H\x1f\xf7}E\xdbb+\xf6n0\xf5n0N#\
+\x0f\xafN\x22\x15\x09\x04_*\x12\x02\x01\x00\xa9L!\
+\xe4f-X'\x11}8\x182\x16\x09&\x11\x07\xe0\
+d,\x9fG\x1f\x09\x03\x01\xe3f-\x0c\x05\x02b,\
+\x13\xb8R$m1\x15Q$\x10b+\x13z7\x18\
+\x04\x01\x00W'\x11\xf8}E\xf4\x85S\xf7\x86R\xa1\
+H\x1f\xa7K!\xbeiB \x0e\x06)\x12\x08\xd5u\
+I\xd3_)\xd5`*W'\x11\xcdrH\xc6mD\
+\xf2\x82O\xf7~G\xa0G\x1f\xf7x>\xb6e@\xcc\
+\x5c(\x98D\x1e\xf8\x7fHK!\x0e\xe6|K\x97R\
+4\xf7w=\xcf])\xf6\x83O\xf7|C\xf7v;\
+\xf8\x80I\xee\x82Q\xf7|D\xe8\x7fO\xf7\x7fG\xd0\
+tI\xe4~O\xe8h.\xddxI\xf7u:\xdf{\
+N\xe9i.\xf7y@\xf7y@\xf7o1\xff\xff\xff\
+\xf8}E\xf6n0\xf5n0\xfe\xfe\xfe\xfe\xf0\xea\xea\
+i.\xf7p2\xfa\xf0\xec\xfc\xf6\xf3\xf7x>\xfe\xf3\
+\xee\xe3{K\xdfg0\xf8\x8d\x5c\xfb\xbd\xa1\xf6\x7fI\
+\xfc\xce\xb9\xf8\xeb\xe5\xfe\xfc\xfb\xf4m0\xe6\x83V\xe3\
+\x81T\xe3\x81U\xfb\xf5\xf2\xf9\x9cr\xe2\x89`\xfb\xf5\
+\xf3\xfb\xc9\xb2\xf1\xa8\x86\xefm1\xf0\xd4\xc7\xfc\xf5\xf1\
+\xe5r>\xfd\xf9\xf8\xf9\xf0\xeb\xe6\x82U\xe5\x90i\xfc\
+\xd8\xc8\xf6o1\xe5r=\xf6n1\xf1\xd6\xc9\xf9\x9a\
+n\xfd\xfa\xf8\xf1\xa5\x82\xe4\x91j\xf0k/\xe2\x89a\
+\xf0l1\xfb\xc7\xaf\xe9\xba\xa4\xf0l/\xe3\x97t\xe2\
+|M\xfc\xd6\xc5\xe4g/\xf7\xe8\xe1\xf8\xeb\xe6\xf9\xc2\
+\xa8\xe2}N\xf8\x81K\xe4\x9ay\xf7v<\xf8\x85Q\
+\xe9\xb8\xa2\xe4g.\xfe\xfa\xf8\xf7v;\xfe\xf7\xf4\xfc\
+\xf7\xf4\xf8\xbd\xa3\xf7\xe7\xe1\xfe\xfa\xf9\xe4\xaa\x8f\xf8\xec\
+\xe6\xfa\xae\x8c\xf7o2\xe5\xac\x92\xfe\xf9\xf7\xf7{C\
+\xfc\xcd\xb8\xfa\xa6\x80\xfa\xb7\x99\xfc\xd2\xbf\xf7zB\xf9\
+\xa3|\xfd\xea\xe1\xf5\xe3\xdb\xfd\xec\xe3\xfc\xd7\xc6\xfd\xdd\
+\xce\xfa\xaf\x8d\xfe\xf2\xed\xfc\xd9\xc9\xfa\xae\x8b\xe1\x96s\
+\xe3\xa9\x8e\xfe\xf2\xec\xdfxH\xfd\xfa\xf9\xe1\x97t\xdf\
+vF\xf6\xe7\xdf\xf9\xa4}\xe3\xa8\x8d\xfa\xf1\xed\xfe\xee\
+\xe7\xe2\x8bc\xfa\xb5\x96\xfe\xfc\xfc\xe2\x8ce\xfe\xed\xe6\
+\xfd\xfb\xfa\xf2\xad\x8d\xfd\xdf\xd1\xfe\xf8\xf6\xfe\xef\xe9\xe2\
+\xa5\x8a\xed\x95l\xf1\x82O\xf4\xc2\xab\xf9\x95g\xf8\x8c\
+Z\xed\x97p\xef\x98q\xe2\xa3\x87\xf8\x8c[\xe0\x89b\
+\xfd\xe0\xd2\xf1\x81N\xf2\xac\x8c\xf9\x96i\xf4\xc3\xad\xfc\
+\xcf\xba\xef\x99q\xfe\xf9\xf6\xe0\x89a\x19\x07\xe4\xa6\x00\
+\x00\x00_tRNS\x00\xe1$\xb1c\x08\xfc\xfe\xe9\
+\x12a#\x07\xaf\xe2\xe2\x03d\xa0\x02\x05%\xb2\xfe\xe1\
+\xfd\xfdb\x94$D\x08\x93\xebC\x89\x06\x05\xea\xb0\x02\
+\xea\x028\xa2CeB\x87\x056\xfeY[\x88\x89\x11\
+\x01\x01\x14\xd7\xd9-;\x13\x5c\xcc~\xe3\x10\xce|\xcf\
++2\x01\xe4\xcf^\xc5\xf6\xcd9\xc37\xca<.\xe0\
+1\xf7-\xdf\xe8\xe7\xfe\x08\x05\xdf\x00\x00\x01\xfbID\
+AT8\xcbc`\xa0\x220\x11O\x84\x02cSl\
+\xf2!\x01\xf1p\x10\x15\x84.\xeb\x1a\x16\x1d\x17\x8f\x04\
+b\xc3\xed-\x90\xe5\x1d\x02\x97d\xc5\xa3\x80\xac\xf9\x1e\
+\xd6H\x0aB\xe3\xb1\x00'$\x051\xf1\xf1[\xb7\xef\
+\xdb\x9f\xb7mcvv\xe1\x89\xbc=\xbbwn\x88\x8f\
+\x8f@\xc8G\xb2\xc5\xc7oI@\x01\xbb\xd6\xc6\xb3y\
+\xc1\x15\x04\xc7\xc7o\x02\x0a\x16\xa7@e\x8f\x00\x19k\
+\xe2\xe3\xfd\xbd\xa1\xf2\x8e\xe9\xf1s\x97&\x1c?\x9a{\
+\xecdQBB\xd1\xc1\xc3\xb9\x07v$,^\x10\x9f\
+\xee\x07U\xe0\x12\x1f?\x1d\xa4\xf1P~\xc1\xe3\x84\x84\
+K\x05\xf9{A\xbc\xb6\xf8x\x1f\xa8\x02\xb7\xf8\xf8\x06\
+\x88\xd9\x0f\x0b\x13\x12\x9e]\x86\xb03\xdb\xe3}\xa1\x0a\
+\xdc\xe3\xe3[\x9b\xc0\x82O\xaf&$\xa4\xde\x043{\
+\xfa\xe2\xe3\x9d\xa1\x0a<\xd9\xe3\x93\xab*@\xa2wA\
+\xc4s\x10Q=!9\x9e\xdd\x0e\xaa\xc0\xd2&>>\
+\xa9\xac9!!\xe5\xc6\x83{\xd7^>:\x97\x90\x90\
+Q\x9e\x14\x1fok\x05\xf3\xa6\x190\xdc\x92Z\x80\xfa\
+R\xef\xc7\xc7\xdfN\x052J\x81\xf2\xf1\xe6\xf0p0\
+\x02\x85l7\xc8\xe4\x17On]\x01\xd1\x95 \x11m\
+\xb8\x02a\x09 w\x12H\xa2\xf8\xce\xf5\x8b \xba\x06\
+(\xc0/\x80\x08k\x05 \xbf\x17(~\xea|I\xc9\
+\x99\x0c \xa3\x16( \x83\x14Y\xfa@\xfe\xc4\x85\xab\
+\xd7\xe5\x9c\xbdpzs\xce\xaaY\x93\xeb\x80\x02\xbaH\
+\x0aT5\x81\x02S\x16-_\x0f2~\xe5\xec\x19\xfd\
+@\xae\xa2\x0ar\x8a\x11\x029*i\xde2p\x10N\
+\x05y!^\x07%\xc9)I\x81\xc4\x92\xe7\xacHH\
+\x989-\x19\xc4\x96\x94CQ\xa0a\xc0\x0e6\xa3\xa3\
+\xbe\xab\xb1\x13\xc4bW\xd6BM\xb5\x86,\x1c\xe0t\
+\x96\x96\x06\xa6\xd4\xf4D0\x92\xbd\xac:;,5\xb2\
+\x8b\x89b\xcb\x18\xf2\xd2\x10C\xe29\x04Yq\xe4-\
+n^\xa0!\xec\xccL\xb8s\x1f\x0f\x17#\x1f\x0b+\
+\xde\x0c\xca\xc9Ij\x96\x06\x00\xfd\x98\xe6y\x07\xbeQ\
+(\x00\x00\x00\x00IEND\xaeB`\x82\
+\x00\x00\x05}\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00 \x00\x00\x00 \x08\x03\x00\x00\x00D\xa4\x8a\xc6\
+\x00\x00\x02\xe2PLTEGpL\xfc\xceI\xfc\xce\
+I\xec\xc1D\xdcJ=\xdcJ=\x0f\x93S\xfc\xceI\
+\xfc\xceI\xfc\xceI\x9e5,\xdbI<\x0f\x98V\xf4\
+\xc7F\x0cvC\x96{+\xdcJ=\x0buB\xf6\xc9\
+G\x10\x9dY\xdbI<\xcf\xa9<\xdbI<\x10\x9dY\
+\xdcJ=\x9f\x82.\x0ac8\x86-%\x9e5,\x10\
+\x9dY\xbc\x996\xdcJ=\x0f\x99V\xbd\x9b7\x10\x9d\
+Y\x0d\x81I\x0f\x98V\x10\x9dY\xb7=2\xdcJ=\
+\x10\x9dY\xb7=2\xf5\xc8G\x09]5\xdbJ<\xdc\
+J=\xb6=2\xdbI<\xaa\x840\xf0\xa0D\xdaJ\
+<\xb6=2\x0bk=\x10\x9dY\xdcJ=\xc3A6\
+\x5c9(\xdcJ=\x10\x9dY\xc3A6\xdcJ=\x18\
+\x98W\x10\x9dY\xdcJ=\xdcJ=\xf1\xc5E\x0f\x9b\
+W\xf9\xcbH\x10\x9dY\x9d4+\x0ac8\xdcJ=\
+\xd9I<\xc3A6\xd9I<\xc3A6\x9d4+\x10\
+\x9dY\xfc\xceI\x0d\x82J\x0e\x91R\x0d\x80H\x0e\x90\
+R\x0e\x95T\x0ah;\x8f\xcc\xae\xeb\xed\xee\xfc\xceI\
+4\xa1hE~L\x13\x9bX\xa5\xa2\x8c}gC\xa0\
+\x83.`rG\xa8E3\xbdA3\x1d\x96V\xe8\xbd\
+C\xd1\xab<\xa7\x880\xcd\xa8;\xea\xbfC\x0f\x9cX\
+\x0f\x9cX\x94y+\x09\x5c4\xbf\x9c7\xdc\xb4?\x0c\
+wC\x10\x87L\x9a\xa6D\xd9\xb1?\xdcJ=F\x87\
+\xf3\xfc\xceI\x10\x9dY\xfb\xcdH\xc7\xd7\xf1\xe9\xb5\xb0\
+\xddTH\xde\xe5\xf1F\x87\xf2\x0e\x94T\x0f\x9bXG\
+\x85P\xed\x96?\xeb\x94<\xb9WA\xee\x9aB\xdbI\
+<\xf6\xde\x97\xf9\xc9D\xdaH;\xf6\xde\x99M\x8b\xf2\
+\x15\x9e\x5c\x9b]A\xb4\xda\xc8\xdfcX_\x96\xf2\xc1\
+\xd3\xf1\xf6\xc2>\xc0\xd2\xf1\xcf\xdc\xf1\xf8\xd9\x81\xef\xef\
+\xf0\xea\x91:\xe5\x96\x8f\xfb\xd0S\xf8\xd8|\x84\xc8\xa7\
+\x16\x9f]\xd9G:\xcc\xda\xf1/\x8eS\xe9\x908\xe8\
+\xae\xa9\xaa\xc5\xf1\xe8\x8e7\xf2\xba7\xe8\xb0\xa7`\x97\
+\xf2\xcdA5\xe1\xe7\xf1\xf1\xef\xea\xfb\xcfO\xe6\x91I\
+\xe7\x8b4\xad\xc6\xf1\xc2\xd4\xf1\xf0\xef\xed\xef\xd5\x9b\xee\
+\xb45\xe8\xa5\x86\xd8\xe2\xf1\xd0\xdd\xf1J\x89\xf2\xd8F\
+:\xdb\xe3\xf1\xf0\xb73\xf4\xbf>\xe7\x8c5U\x90\xf2\
+\xa1\xbf\xf1\xe6\x8a3\xed\xd2\xd0\xf6\xe0\x9f\xef\xb41\xf8\
+\xc7Bn\xa0\xf2x\xa6\xf2\xf0\xe0\xbd\xc66-\xd7E\
+9\xcc<1\xde\xa6\xa2[\x94\xf2\xd9\x8b\x86\xbf\xd2\xf1\
+G\x88\xf2h\x9c\xf2\xe7\xed\xea\xa0\xbf\xf1\xed\xee\xf0\x1e\
+\xa2b\xf1\xee\xe5\xd9^T\xdd\xa3\x9f\xc6\xd6\xf1\xc99\
+/\x91\xb4M\x1c\x95Q\x0e\x95T[\xb8\x8b\xe8\xc9I\
+\x15\x8cSy\xc3\x9f\x0f\x98V\x10\x8cN\xe1\xe9\xe5\xb7\
+\xcd\xf1{\xc5\xa1\xd2\xdd\xf1\x0d\x8bN\xdf\xe6\xf1L\x9b\
+L\xf2\xdc\x92Z\x93\xf2p\xb4\x93o\xa9M\x0f\x9cX\
+R\xa8~\xd2\xc2J\xb4\xcb\xf1~\xa9\xf2\xda\xe3\xf1\xb4\
+\xb8J\x0e\x8eP\xf7\xcdJ\xbf\xd3\xb3y\xa6\xf2\xf6\xcc\
+I1\x9fS\xb3\xbdMN\xa9TT\xbb$\xa6\x00\x00\
+\x00qtRNS\x00\xb4\xf6l\xde||\xa5\xcc\xdb\
+\x09aZQ\x11\x04\xbe\x10Q\xe6e\x14j\xd6\xe6\x04\
+\x09\x02\x0c\xd5\x0b\xeaa\x0b\xb0\x1be\xb4\x17\xb4\xe1\x11\
+U\x06\xbe\xc4\x17k\x06\xe1Z\x10\x0c\xea\xd6\x22\x02\xd5\
+\xc4\x1b\xb0k\xfc\xc9\xfcUk[\xc9\x11\x11\xfdkH\
+jE\x14\xfd\xb9HkEj[\x14\xfe\xfe\xf8\xfd\xfe\
+\xfe\xfe\xfe\x07\xfe\xfe\xfe\xfeZ8\x096[\xb9\xf8\x07\
+\x096l8\x5cmZFt#+\x00\x00\x01\xd9I\
+DAT8\xcbc` \x05\xf8xz\xb0\xb2zy\
+\xbbb\x97\x95\xd1\xb7w/\x04\x03\x07]\x11.\x0ci\
+i1\xf9B$ \xc1\x8d&\xaf&P\x88\x06\xd45\
+\x91\xe5\xcdY\x0a1\x80\x995B^\x0f\x8b|a\xa1\
+\xa51L\xdeB\xa7\x10+\xb0\x81)\xb0mh\xc2\xae\
+\xc2\x08\x22obZ\xdb\x0a\x15\xe9\x9e2w\xe1\xba\xe5\
+;Wl\x9b?gr}]\xa3\xa1\x01X\x81SI\
+I\xe7L\x90tE\xf9\xa4\xb2y+7\xac^\xb3v\
+\xcf\x96\x05}-\xa5\xa5\xc5\xce`\x05.%%\xb3\x17\
+o\x02\xca\xef*\xeb)\x02\x82}\xeb\x0fl\xdd[Z\
+\x0c\x02~ \xf9\x10\xdf\x92\x92\x92\x98\xc3\x87\x0a\xcb/\
+n,\x02\x83\xed\x9bw\x17C@x\x0aP\x81?P\
+\xbe$1\xe1\xd2\xf93G\x8b\xa0`\xff\xd2\xa9P\x15\
+\xc9@\x05\x01 \x05%q\x07\x8f\x1d\x87\xc9\x17UU\
+N\x84*H\x03*`\x03+\x88\x8a?r\x1a\xae\xa0\
+\xa8\xbf\x0d\xaa\x80\x19\xae\xa0$\xf2\xc2\x0e\x84\x82\xdef\
+$\x05A\x10\x05%\xd1\xab\xe0\xf2'\x96L\x83*H\
+\x02*\x08\x84*\x88\x08[\x04S\xf0\xfa\xdc2\xa8\x82\
+T\xa0\x027;\xa8\x8a\xd0Y\xed\x10\xf9'\x0f\x1fC\
+\xe5\x99bA\x01a\x05U0\xa3k\xc2I\x90\x17>\
+V~x\x0fU\xc0\x08\x0eI\x15\xa8\x82\x92\x8e\xe9\xa7\
+\xee\xbf\xba\xfb\xe6\xce\xd3\xb7P\xf9b-\xb0\x02)a\
+\x98\x8a\x92\xb3\xd7\xee\xdd|q\xe3\x11L\x9eS\x12\x12\
+\x9d\x0a%H\xe0\xd6\x83\xdb/a\x0a\x84`\x09B\x15\
+I\xc1\xd5w\xcf`\xf2\xec\xf0$\xc7'\x8ePP}\
+\xe5:T\x9eC\x11\x91(\x95ea\xf2\xcf\xab/\xc3\
+\xe4E\x91\x93\xb5\xa0\x12TA\xcd\xe7OP\xf3\xe5\xd0\
+r\x06\x8f\x06D\xc1\x17\x88\xfby1\xb3\x9evpz\
+FI\xc9WP\xf81:\xf2c\xcf\x9eY\xb9y\xf9\
+9\x05\xd9\x99$\xe5x\x00\xfe\xa1E\xc6\x0b}\xa2(\
+\x00\x00\x00\x00IEND\xaeB`\x82\
+\x00\x00\x06v\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00 \x00\x00\x00 \x08\x03\x00\x00\x00D\xa4\x8a\xc6\
+\x00\x00\x00\x09pHYs\x00\x00\x0e\xc4\x00\x00\x0e\xc4\
+\x01\x95+\x0e\x1b\x00\x00\x03\x00PLTEGpL\
+C\x96\xbbs\xdeB'W\x9e#[\xa70\x81\xd51\
+\x84\xdb!U\x9f9tr%H\x8c)E\x8c*G\
+\x92`\xbb>'H\x8f.~\xda(E\x87f\xc5D\
+1\x83\xdb5\x83\xbcP\xb1\xe20WuV\xc0\xf03\
+}\xb0 J\x8a N\x94s\xdeBS\xa4Rs\xde\
+C/\x80\xd2,z\xdar\xdaD,E\x901\x84\xd8\
+\x22C\x86o\xd7K+s\xcfX\xc2\xe4,x\xdaY\
+\xb9\x95h\xce{h\xd2\x83d\xcd\x97g\xd0\x8b-y\
+\xc9Z\xbe\xad#O\x96'L\x95P\xb3\xe4$K\x92\
+p\xdaU_\xc8\xbeZ\xb0NU\xa48e\xc39$\
+O\x99d\xcd\x9e,y\xcd0\x81\xdbq\xdaG\x22Q\
+\x9at\xdeAt\xdfBq\xdbO^\xbaZo\xd9Z\
+`\xc2yk\xd4v'K\x92b\xcb\xab-y\xd1V\
+\xbf\xf3(P\x9f!J\x8a)>~t\xdeA(G\
+\x8bV\xbf\xf2'I\x8c+P\x9b*r\xc8\x22J\x8c\
+)H\x91#Q\x9d)H\x91/}\xd1'g\xa6&\
+d\xb4/|\xd1(i\xb8a\xc5~-M\x9f&c\
+\xb1,v\xce0J\xa26\x85\xba&U\xa2^\xc7\xc4\
+!\x5c\xa2V\xbf\xf1?\x90\xa1c\xca\x8e+t\xc1+\
+u\xc1\x5c\xc3\xb9E\x9b\xafV\xbf\xef^\xc3\x9c.|\
+\xdaF\xa1\xcb1j\xb7=\x90\xba-v\xb8V\xbf\xf2\
+K\xa6\xba<\x8e\xc1m\xd6jU\xbb\xdcK\xa8\xd3W\
+\xc0\xed.w\xbaX\xc1\xe71}\xbb,x\xd4W\xc0\
+\xeb>\x93\xc6V\xbc\xe0Q\xb4\xd9 P\x960{\xba\
+T\xb4\xbc$a\xa0n\xd7cY\xc1\xe3%h\xbaS\
+\xb8\xd9[\xc4\xd47\x87\xbfq\xdbM-/qp\xda\
+ST\xbb\xe9Z\xc3\xd83\x86\xdaW\xc0\xecW\xc0\xe9\
+Y\xc2\xdcP\xae\xc3L\xab\xcc;\x8e\xc00~\xc74\
+\x82\xbf,y\xda%Z\xa9(m\xc4!S\x9a'g\
+\xbe'h\xbe+x\xda*r\xd1+x\xda+w\xd9\
+2\x86\xdb3\x88\xdb0\x83\xdb3\x87\xdb\x1fK\x8c2\
+\x85\xdb\x1fN\x93/\x80\xdb\x1fQ\x99t\xdfA L\
+\x8f M\x91\x1fI\x8a\x1fO\x95q\xdbPX\xc1\xe5\
+ J\x8b1\x84\xdb\x1fP\x97.\x7f\xda R\x9an\
+\xd8dq\xdcLo\xd9\x5cp\xdaV-|\xdar\xdc\
+J\x1fK\x8dY\xc2\xe1Y\xc3\xddk\xd5tl\xd6n\
+g\xd1\x8aa\xcb\xb0b\xcc\xabd\xce\x9d_\xc9\xb8i\
+\xd3\x82h\xd2\x86m\xd6jc\xcd\xa5`\xca\xb4s\xdd\
+Cp\xd9Y3\x88\xdap\xdaSs\xddFX\xc1\xe9\
+/}\xc8,z\xda3\x87\xdak\xd5rj\xd3|j\
+\xd4xi\xd3~W\xc0\xeff\xd0\x91g\xd0\x8e_\xc8\
+\xbcf\xcf\x94m\xd7ge\xcf\x96c\xcd\xa1s\xdcG\
+^\xc7\xc1n\xd8an\xd8_W\xc0\xea]\xc7\xc7\x5c\
+\xc6\xcc]\xc6\xc9W\xc0\xec\x5c\xc5\xd1\x5c\xc5\xce[\xc4\
+\xd53\x86\xd5Z\xc3\xda[\xc4\xd3/~\xceZ\xc4\xd7\
+1\x83\xd12\x85\xd8e\xce\x99s\xddD R\x9ca\
+\xcb\xa7_\xc8\xbf0\x80\xcd,w\xc4^\xc7\xc4/|\
+\xc5-x\xc01\x83\xd53\x88\xd9.{\xc2|7\x1f\
+\xe1\x00\x00\x00\xa1tRNS\x00\x16\xc1\x1a\xfd\xfe\xfe\
+\xfd\x04\xc12\x8d3\x80\xf8I.\xb7\xfd7\x09\xfd\xfd\
+\xfe\xfc\xcd\x0d\xa8g\xa0\xd9g\xbe\x0fX\xfd\xc9\xfe%\
+H\xfcXhG;\xd8\x9f?\xe3\xf7\xa5B\x1b$\xcc\
+\xf4B\xect\xe7\xb0\xec\xf4P\x84\x91\xe7\xae\xb8N\xac\
+\x91\xf5)\x80_\xe4v[:\xf4\x9a\xdf\x87\xfdF\xfd\
+\xfd\xfc\xf7o\xfc\xfdh\xfd\xbb\xf3\x12\xf2\xf9\xfd\xa2`\
+\xfd\xfc\xec\xfd\xe3\xfdm\xfd\xfd\xb6\xfd\xfd\x89\xfd#\xcd\
+\xfe\xf3\xfd\xfdz\xfc\xfe\xfd\xfd\xfdC\x1f\xf0\x86.\xe8\
+y\xfc\xca\x1f\x9b_\xa2\x9d\x93\xb6\xbdG\x8a\xbc\xcf\xd5\
+\xf5\x99Q\xfd\xba\xfc\xb2\xc9\x8b\xc8u|\x80\xe1\x00\x00\
+\x02oIDAT8\xcbc` \x010\xf6\xf4O\
+PQ\x99\xd8\xdb\xde(\x82MZ\xbf@\xf4\xc5\x85\x0d\
+{\xf7}x\xf7\xeay\x82\x91\x0e\x86n7\xd1\x1bO\
+\x80\xd2o_\xbf|\xf6\xf4\xe1\xed\xa3\x87\x5c\xd4P\xe4\
+\x85}n\xc0\xb5\xff\xfa~\xf4\xd4\xa1\xc3'\xcd5\x91\
+\xe5\x93P\xb5\x1f>y\xff\xc8\xbd\x9bZp\xf9\xd2L\
+t\xedG>\xdf\xb9uPC\x1d*\xcfQ\x86\xac\xfd\
+\xd4\xe1o \xed\x07\x8f\x1f\xbb\xea$\x05QP}a\
+CIN\x91\x90P\x5c^a:H\xfb}\x90\xf6c\
+\xd7\xaf\xed?P\x0c\xf1@EmM\xf9\xff\x8b?~\
+\xfc\xb8\xf8'?\x03\xae\xfd\xda\x95\x03w\x9b\xc1F\xb4\
+\xd4U\xfe\xfe\xf8\xe6\xdf\xbf\xb3\xff>\xfd}\xffS,\
+\x0b\xa8\xfd8H\xfb\x89m\x8fv(\x81\x5c\xd0\xd6p\
+\xf1\xcd\xd9E@\xb0d\xc9\xc2O\xac?\xc5R\xa0\xda\
+\xb7=>\xb3\xb3\x1b\xa8`R\xc7o\xb8\xfcBA\x99\
+\xb4\xd4d\xb0\xf6\xbb\x8fv\x9c9\xb7\xbe\x13\xa8`\xf2\
+\x9f\x8fg\xa1\xd2\xac\xb9 +C#\xc1\xdaw\xec<\
+\xb7~\xb7\x1c\x90?\xe5\xe2'\xa8|H<\xc4W\x8e\
+`\xed;\xd7o\xdf}^\x12\xc8\x9d\xf6\xe3\x1fXz\
+\x19+{\x14D\x81=D\xfb\xf6\x07_NK\x03\xb9\
+S?^\x06\xcb/\x8b\xde\x1a\x0bQ`\x0c\xd1\xfe\xe0\
+\xcb\xaaU _(|\x02Ko\x0a_\xf9\xd5\x1d\xa2\
+\xc0\x01\xa4}\xf7\xf9\xd3\xabV\xc9q\x00\xb9}\x0b\xc1\
+\xf2\x8b#V~\x0d\x02\xf1\x19\x04\x0c\xc1\xda\x81\xf2\xb6\
+\x02 \xbe\x0cHz\xd3\xe2\xc5,[\xb7n\xf5\x03\x09\
+\xf0\xd8A\xb4\xafb2\x05\x1b\xd8\xc4\x06\xd4\x0e\x04\xec\
++\xb7n\xb5f\x06\x89\x98XI3I\xdax\xf1\xc0\
+\x22[\x01,\xbf\x02\xa8`\xe5J3E,\x89Q\x9b\
+\x0d(\xbdb\x05\xcb\xe6\x95+7o\xd6\xe5\xc2\xa2B\
+\x10$\xbf%l\xdd\xe6\xcd\x9b\xd7\xad\x93\xd0\x83)\x11\
+\x91\xe7\x86\xb2\x98-\x81\xf2[b\xd6\xac\x03\x82\xe5\xcb\
+\xd7\xac1p\xe6\xe6\x0d\x0e\xe4\x0c\x10\xe7\x87\x19a\xc1\
+\xb7e\xcb\x96],k\x96/\x07\xc9\xafY\xbdz\xcf\
+\x9e\xa5\x1b7\x8a\xfb\x22,q\xe5\xdb\xb5kWU\xfd\
+\x9a5\xcbA\xd2\xab\xf7,\x05\xc9\xf3\x22;\xc3?\x1b\
+\xa8BYb\xcf\xea\xd5P\xed\x1b=\xbcQ\x1d\x9a(\
+\xbb\xeb\xd2%e\xf6\x8dKA\x00\xa8\x9d\xd3\x13\xc3/\
+\xad\xb2\xd3UU\xe7\xcc\x12_\xbbv\xad8'?\xd6\
+\xcc\xab8s\xfe\xdc\x05\xf3f\xcf\x90\xef\x22%\xcb\x03\
+\x00/\xab\x8c\xa71\xf3a\xb4\x00\x00\x00\x00IEN\
+D\xaeB`\x82\
+"
+
+qt_resource_name = b"\
+\x00\x06\
+\x07\x03}\xc3\
+\x00i\
+\x00m\x00a\x00g\x00e\x00s\
+\x00\x14\
+\x0e^\x13\x87\
+\x00p\
+\x00o\x00l\x00i\x00c\x00i\x00e\x00s\x00_\x00g\x00e\x00n\x00_\x001\x002\x008\x00.\
+\x00p\x00n\x00g\
+\x00\x08\
+\x09n\x91\xb3\
+\x00b\
+\x00r\x00o\x00w\x00s\x00e\x00r\x00s\
+\x00\x0c\
+\x0fTN'\
+\x00b\
+\x00r\x00a\x00v\x00e\x00_\x003\x002\x00.\x00p\x00n\x00g\
+\x00\x0d\
+\x01\x97\x91\x87\
+\x00c\
+\x00h\x00r\x00o\x00m\x00e\x00_\x003\x002\x00.\x00p\x00n\x00g\
+\x00\x0b\
+\x02\xb2\x0c'\
+\x00e\
+\x00d\x00g\x00e\x00_\x003\x002\x00.\x00p\x00n\x00g\
+"
+
+qt_resource_struct = b"\
+\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00@\x00\x02\x00\x00\x00\x03\x00\x00\x00\x04\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
+\x00\x00\x01\x90\x5c\xbe[\x16\
+\x00\x00\x00t\x00\x00\x00\x00\x00\x01\x00\x00*\x0c\
+\x00\x00\x01\x8dk\xd3\x84\x86\
+\x00\x00\x00\x94\x00\x00\x00\x00\x00\x01\x00\x00/\x8d\
+\x00\x00\x01\x8dk\xd3\x84\x87\
+\x00\x00\x00V\x00\x00\x00\x00\x00\x01\x00\x00$\x8a\
+\x00\x00\x01\x8dk\xd3\x84\x84\
+"
+
+def qInitResources():
+ QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
+
+def qCleanupResources():
+ QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
+
+qInitResources()
diff --git a/templates/brave.json b/templates/brave.json
new file mode 100644
index 0000000..f3bcbc1
--- /dev/null
+++ b/templates/brave.json
@@ -0,0 +1,225 @@
+{
+ "SingleValues": [
+ {
+ "name": "AutofillAddressEnabled",
+ "values": {
+ "0": "禁止使用“自动填充”功能填写地址",
+ "1": "自动填充地址信息"
+ },
+ "default_value": 0,
+ "display_name": "自动填充地址信息",
+ "allow_recommend": true,
+ "enabled": true
+ },
+ {
+ "name": "AutofillCreditCardEnabled",
+ "values": {
+ "0": "禁止使用“自动填充”功能填写信用卡信息",
+ "1": "允许使用“自动填充”功能填写信用卡信息"
+ },
+ "default_value": 0,
+ "display_name": "允许使用“自动填充”功能填写信用卡信息",
+ "allow_recommend": true,
+ "enabled": true
+ },
+ {
+ "name": "DefaultGeolocationSetting",
+ "values": {
+ "1": "允许网站跟踪用户的地理位置",
+ "2": "不允许任何网站跟踪用户的地理位置",
+ "3": "每次网站尝试跟踪用户的地理位置时都询问我"
+ },
+ "default_value": 2,
+ "display_name": "默认地理位置设置",
+ "allow_recommend": true,
+ "enabled": true
+ },
+ {
+ "name": "PasswordManagerEnabled",
+ "values": {
+ "0": "禁止使用密码管理器保存密码",
+ "1": "允许使用密码管理器保存密码"
+ },
+ "default_value": 0,
+ "display_name": "允许将密码保存到密码管理器",
+ "allow_recommend": true,
+ "enabled": true
+ },
+ {
+ "name": "PaymentMethodQueryEnabled",
+ "values": {
+ "0": "始终告诉网站,没有任何已保存的付款方式",
+ "1": "允许网站检查用户是否有已保存的付款方式"
+ },
+ "default_value": 0,
+ "display_name": "允许网站查询可用的付款方式",
+ "allow_recommend": true,
+ "enabled": true
+ },
+ {
+ "name": "PrivacySandboxAdMeasurementEnabled",
+ "values": {
+ "0": "为您的用户停用 Privacy Sandbox 广告衡量设置",
+ "1": "允许用户在其设备上开启或关闭 Privacy Sandbox 广告衡量设置"
+ },
+ "default_value": 0,
+ "display_name": "选择是否可以停用 Privacy Sandbox 广告衡量设置",
+ "allow_recommend": true,
+ "enabled": true
+ },
+ {
+ "name": "PrivacySandboxAdTopicsEnabled",
+ "values": {
+ "0": "为您的用户停用 Privacy Sandbox 广告主题设置",
+ "1": "允许用户在其设备上开启或关闭 Privacy Sandbox 广告主题设置"
+ },
+ "default_value": 0,
+ "display_name": "选择是否可以停用 Privacy Sandbox 广告主题设置",
+ "allow_recommend": true,
+ "enabled": true
+ },
+ {
+ "name": "PrivacySandboxPromptEnabled",
+ "values": {
+ "0": "不向用户显示 Privacy Sandbox 提示",
+ "1": "允许 Google Chrome 确定是否显示 Privacy Sandbox 提示"
+ },
+ "default_value": 0,
+ "display_name": "选择是否可向用户显示 Privacy Sandbox 提示",
+ "allow_recommend": true,
+ "enabled": true
+ },
+ {
+ "name": "PrivacySandboxSiteEnabledAdsEnabled",
+ "values": {
+ "0": "为您的用户停用 Privacy Sandbox 网站建议采用的广告设置",
+ "1": "允许用户在其设备上开启或关闭 Privacy Sandbox 网站建议采用的广告设置"
+ },
+ "default_value": 0,
+ "display_name": "选择是否可以停用 Privacy Sandbox 网站建议采用的广告设置",
+ "allow_recommend": true,
+ "enabled": true
+ },
+ {
+ "name": "TorDisabled",
+ "values": {
+ "0": "开启 Tor",
+ "1": "禁用 Tor"
+ },
+ "default_value": 1,
+ "display_name": "Tor",
+ "allow_recommend": false,
+ "enabled": true
+ },
+ {
+ "name": "BraveRewardsDisabled",
+ "values": {
+ "0": "开启 Brave 奖励",
+ "1": "禁用 Brave 奖励"
+ },
+ "default_value": 1,
+ "display_name": "Brave 奖励",
+ "allow_recommend": false,
+ "enabled": true
+ },
+ {
+ "name": "BraveWalletDisabled",
+ "values": {
+ "0": "开启 Brave 钱包",
+ "1": "禁用 Brave 钱包"
+ },
+ "default_value": 1,
+ "display_name": "Brave 钱包",
+ "allow_recommend": false,
+ "enabled": true
+ },
+ {
+ "name": "BraveVPNDisabled",
+ "values": {
+ "0": "开启 Brave VPN",
+ "1": "禁用 Brave VPN"
+ },
+ "default_value": 1,
+ "display_name": "Brave VPN",
+ "allow_recommend": false,
+ "enabled": true
+ }
+ ],
+ "ExtensionSettings": [
+ {
+ "id": "cjpalhdlnbpafiamejdnhcphjbkeiagm",
+ "name": "uBlock Origin",
+ "description": "一款高效的网络请求过滤工具,占用极低的内存和 CPU。",
+ "modes": {
+ "blocked": "阻止安装",
+ "allowed": "允许安装",
+ "force_installed": "强制安装",
+ "normal_installed": "默认安装",
+ "removed": "移除"
+ },
+ "default_mode": "normal_installed",
+ "update_url": "https://clients2.google.com/service/update2/crx",
+ "enabled": true
+ },
+ {
+ "id": "cfnpidifppmenkapgihekkeednfoenal",
+ "name": "TrafficLight",
+ "description": "Bitdefender TrafficLight adds a strong and non-intrusive layer of security to your browsing experience.",
+ "modes": {
+ "blocked": "阻止安装",
+ "allowed": "允许安装",
+ "force_installed": "强制安装",
+ "normal_installed": "默认安装",
+ "removed": "移除"
+ },
+ "default_mode": "normal_installed",
+ "update_url": "https://clients2.google.com/service/update2/crx",
+ "enabled": true
+ },
+ {
+ "id": "ghgabhipcejejjmhhchfonmamedcbeod",
+ "name": "Click&Clean",
+ "description": "当浏览器关闭时,这款应用程序删除你的浏览历史,防止他人跟踪你的网上活动。",
+ "modes": {
+ "blocked": "阻止安装",
+ "allowed": "允许安装",
+ "force_installed": "强制安装",
+ "normal_installed": "默认安装",
+ "removed": "移除"
+ },
+ "default_mode": "normal_installed",
+ "update_url": "https://clients2.google.com/service/update2/crx",
+ "enabled": true
+ },
+ {
+ "id": "aapbdbdomjkkjkaonfhkkikfgjllcleb",
+ "name": "Google 翻译",
+ "description": "浏览网页时可轻松查看翻译版本。由Google翻译小组提供。",
+ "modes": {
+ "blocked": "阻止安装",
+ "allowed": "允许安装",
+ "force_installed": "强制安装",
+ "normal_installed": "默认安装",
+ "removed": "移除"
+ },
+ "default_mode": "normal_installed",
+ "update_url": "https://clients2.google.com/service/update2/crx",
+ "enabled": false
+ },
+ {
+ "id": "mlpapfcfoakknnhkfpencomejbcecdfp",
+ "name": "IP Domain Country Flag",
+ "description": "Shows country flag and other IP / domain information in the location bar.",
+ "modes": {
+ "blocked": "阻止安装",
+ "allowed": "允许安装",
+ "force_installed": "强制安装",
+ "normal_installed": "默认安装",
+ "removed": "移除"
+ },
+ "default_mode": "normal_installed",
+ "update_url": "https://clients2.google.com/service/update2/crx",
+ "enabled": false
+ }
+ ]
+}
\ No newline at end of file
diff --git a/templates/chrome.json b/templates/chrome.json
new file mode 100644
index 0000000..5f35e1b
--- /dev/null
+++ b/templates/chrome.json
@@ -0,0 +1,181 @@
+{
+ "SingleValues": [
+ {
+ "name": "AutofillAddressEnabled",
+ "values": {
+ "0": "禁止使用“自动填充”功能填写地址",
+ "1": "自动填充地址信息"
+ },
+ "default_value": 0,
+ "display_name": "自动填充地址信息",
+ "allow_recommend": true,
+ "enabled": true
+ },
+ {
+ "name": "AutofillCreditCardEnabled",
+ "values": {
+ "0": "禁止使用“自动填充”功能填写信用卡信息",
+ "1": "允许使用“自动填充”功能填写信用卡信息"
+ },
+ "default_value": 0,
+ "display_name": "允许使用“自动填充”功能填写信用卡信息",
+ "allow_recommend": true,
+ "enabled": true
+ },
+ {
+ "name": "DefaultGeolocationSetting",
+ "values": {
+ "1": "允许网站跟踪用户的地理位置",
+ "2": "不允许任何网站跟踪用户的地理位置",
+ "3": "每次网站尝试跟踪用户的地理位置时都询问我"
+ },
+ "default_value": 2,
+ "display_name": "默认地理位置设置",
+ "allow_recommend": true,
+ "enabled": true
+ },
+ {
+ "name": "PasswordManagerEnabled",
+ "values": {
+ "0": "禁止使用密码管理器保存密码",
+ "1": "允许使用密码管理器保存密码"
+ },
+ "default_value": 0,
+ "display_name": "允许将密码保存到密码管理器",
+ "allow_recommend": true,
+ "enabled": true
+ },
+ {
+ "name": "PaymentMethodQueryEnabled",
+ "values": {
+ "0": "始终告诉网站,没有任何已保存的付款方式",
+ "1": "允许网站检查用户是否有已保存的付款方式"
+ },
+ "default_value": 0,
+ "display_name": "允许网站查询可用的付款方式",
+ "allow_recommend": true,
+ "enabled": true
+ },
+ {
+ "name": "PrivacySandboxAdMeasurementEnabled",
+ "values": {
+ "0": "为您的用户停用 Privacy Sandbox 广告衡量设置",
+ "1": "允许用户在其设备上开启或关闭 Privacy Sandbox 广告衡量设置"
+ },
+ "default_value": 0,
+ "display_name": "选择是否可以停用 Privacy Sandbox 广告衡量设置",
+ "allow_recommend": true,
+ "enabled": true
+ },
+ {
+ "name": "PrivacySandboxAdTopicsEnabled",
+ "values": {
+ "0": "为您的用户停用 Privacy Sandbox 广告主题设置",
+ "1": "允许用户在其设备上开启或关闭 Privacy Sandbox 广告主题设置"
+ },
+ "default_value": 0,
+ "display_name": "选择是否可以停用 Privacy Sandbox 广告主题设置",
+ "allow_recommend": true,
+ "enabled": true
+ },
+ {
+ "name": "PrivacySandboxPromptEnabled",
+ "values": {
+ "0": "不向用户显示 Privacy Sandbox 提示",
+ "1": "允许 Google Chrome 确定是否显示 Privacy Sandbox 提示"
+ },
+ "default_value": 0,
+ "display_name": "选择是否可向用户显示 Privacy Sandbox 提示",
+ "allow_recommend": true,
+ "enabled": true
+ },
+ {
+ "name": "PrivacySandboxSiteEnabledAdsEnabled",
+ "values": {
+ "0": "为您的用户停用 Privacy Sandbox 网站建议采用的广告设置",
+ "1": "允许用户在其设备上开启或关闭 Privacy Sandbox 网站建议采用的广告设置"
+ },
+ "default_value": 0,
+ "display_name": "选择是否可以停用 Privacy Sandbox 网站建议采用的广告设置",
+ "allow_recommend": true,
+ "enabled": true
+ }
+ ],
+ "ExtensionSettings": [
+ {
+ "id": "cjpalhdlnbpafiamejdnhcphjbkeiagm",
+ "name": "uBlock Origin",
+ "description": "一款高效的网络请求过滤工具,占用极低的内存和 CPU。",
+ "modes": {
+ "blocked": "阻止安装",
+ "allowed": "允许安装",
+ "force_installed": "强制安装",
+ "normal_installed": "默认安装",
+ "removed": "移除"
+ },
+ "default_mode": "normal_installed",
+ "update_url": "https://clients2.google.com/service/update2/crx",
+ "enabled": true
+ },
+ {
+ "id": "cfnpidifppmenkapgihekkeednfoenal",
+ "name": "TrafficLight",
+ "description": "Bitdefender TrafficLight adds a strong and non-intrusive layer of security to your browsing experience.",
+ "modes": {
+ "blocked": "阻止安装",
+ "allowed": "允许安装",
+ "force_installed": "强制安装",
+ "normal_installed": "默认安装",
+ "removed": "移除"
+ },
+ "default_mode": "normal_installed",
+ "update_url": "https://clients2.google.com/service/update2/crx",
+ "enabled": true
+ },
+ {
+ "id": "ghgabhipcejejjmhhchfonmamedcbeod",
+ "name": "Click&Clean",
+ "description": "当浏览器关闭时,这款应用程序删除你的浏览历史,防止他人跟踪你的网上活动。",
+ "modes": {
+ "blocked": "阻止安装",
+ "allowed": "允许安装",
+ "force_installed": "强制安装",
+ "normal_installed": "默认安装",
+ "removed": "移除"
+ },
+ "default_mode": "normal_installed",
+ "update_url": "https://clients2.google.com/service/update2/crx",
+ "enabled": true
+ },
+ {
+ "id": "aapbdbdomjkkjkaonfhkkikfgjllcleb",
+ "name": "Google 翻译",
+ "description": "浏览网页时可轻松查看翻译版本。由Google翻译小组提供。",
+ "modes": {
+ "blocked": "阻止安装",
+ "allowed": "允许安装",
+ "force_installed": "强制安装",
+ "normal_installed": "默认安装",
+ "removed": "移除"
+ },
+ "default_mode": "normal_installed",
+ "update_url": "https://clients2.google.com/service/update2/crx",
+ "enabled": false
+ },
+ {
+ "id": "mlpapfcfoakknnhkfpencomejbcecdfp",
+ "name": "IP Domain Country Flag",
+ "description": "Shows country flag and other IP / domain information in the location bar.",
+ "modes": {
+ "blocked": "阻止安装",
+ "allowed": "允许安装",
+ "force_installed": "强制安装",
+ "normal_installed": "默认安装",
+ "removed": "移除"
+ },
+ "default_mode": "normal_installed",
+ "update_url": "https://clients2.google.com/service/update2/crx",
+ "enabled": false
+ }
+ ]
+}
\ No newline at end of file
diff --git a/templates/edge.json b/templates/edge.json
new file mode 100644
index 0000000..f8bcce8
--- /dev/null
+++ b/templates/edge.json
@@ -0,0 +1,271 @@
+{
+ "SingleValues": [
+ {
+ "name": "AlternateErrorPagesEnabled",
+ "values": {
+ "0": "不会调用 Web 服务,并且将显示标准错误页",
+ "1": "使用 Web 服务针对网络错误生成 URL 和搜索建议"
+ },
+ "default_value": 0,
+ "display_name": "找不到网页时建议类似页面",
+ "allow_recommend": true,
+ "enabled": true
+ },
+ {
+ "name": "AutofillAddressEnabled",
+ "values": {
+ "0": "不会建议或填写地址信息",
+ "1": "使用以前存储的信息自动填写 Web 表单中的地址信息"
+ },
+ "default_value": 0,
+ "display_name": "启用地址自动填充",
+ "allow_recommend": true,
+ "enabled": true
+ },
+ {
+ "name": "AutofillCreditCardEnabled",
+ "values": {
+ "0": "不会建议、填充或推荐新的付款方式",
+ "1": "允许用户使用以前存储的信息在 Web 窗体中自动完成信用卡或借记卡等付款方式"
+ },
+ "default_value": 0,
+ "display_name": "启用付款方式自动填充",
+ "allow_recommend": true,
+ "enabled": true
+ },
+ {
+ "name": "AutofillMembershipsEnabled",
+ "values": {
+ "0": "无法在使用 Microsoft Edge 时自动保存其成员身份信息并用于填写表单字段",
+ "1": "自动保存其成员身份信息,并在使用 Microsoft Edge 时用于填写表单字段"
+ },
+ "default_value": 0,
+ "display_name": "保存和填充成员身份",
+ "allow_recommend": true,
+ "enabled": true
+ },
+ {
+ "name": "ConfigureDoNotTrack",
+ "values": {
+ "0": "不会发送请求",
+ "1": "始终向要求跟踪信息的网站发送 Do Not Track 请求"
+ },
+ "default_value": 1,
+ "display_name": "配置 Do Not Track",
+ "allow_recommend": true,
+ "enabled": true
+ },
+ {
+ "name": "ControlDefaultStateOfAllowExtensionFromOtherStoresSettingEnabled",
+ "values": {
+ "0": "无效果",
+ "1": "启用来自其他商店的允许扩展"
+ },
+ "default_value": 1,
+ "display_name": "配置“允许来自其他商店的扩展”设置的默认状态",
+ "allow_recommend": true,
+ "enabled": true
+ },
+ {
+ "name": "DefaultGeolocationSetting",
+ "values": {
+ "1": "允许网站跟踪用户的物理位置",
+ "2": "不允许任何网站跟踪用户的物理位置",
+ "3": "每当网站想要跟踪用户的物理位置时询问"
+ },
+ "default_value": 2,
+ "display_name": "默认地理位置设置",
+ "allow_recommend": true,
+ "enabled": true
+ },
+ {
+ "name": "DiagnosticData",
+ "values": {
+ "0": "关闭",
+ "1": "必需数据",
+ "2": "可选数据"
+ },
+ "default_value": 1,
+ "display_name": "发送有关浏览器使用情况的必需和可选诊断数据",
+ "allow_recommend": true,
+ "enabled": true
+ },
+ {
+ "name": "EdgeShoppingAssistantEnabled",
+ "values": {
+ "0": "不会自动针对零售域应用价格比较、优惠券、折扣和快速结帐等购物功能",
+ "1": "价格比较、优惠券、折扣和快速结帐等购物功能将自动应用于零售域"
+ },
+ "default_value": 0,
+ "display_name": "已启用在 Microsoft Edge 中购物的功能",
+ "allow_recommend": true,
+ "enabled": true
+ },
+ {
+ "name": "EdgeWalletCheckoutEnabled",
+ "values": {
+ "0": "用户在 Microsoft Edge 上购物时无法使用电子钱包结帐",
+ "1": "可以选择在 Microsoft Edge 上购物时是否使用电子钱包结帐"
+ },
+ "default_value": 0,
+ "display_name": "启用电子钱包结帐功能",
+ "allow_recommend": true,
+ "enabled": true
+ },
+ {
+ "name": "PasswordManagerEnabled",
+ "values": {
+ "0": "无法保存并添加新密码",
+ "1": "可以在 Microsoft Edge 中保存并添加其密码"
+ },
+ "default_value": 0,
+ "display_name": "允许将密码保存到密码管理器",
+ "allow_recommend": true,
+ "enabled": true
+ },
+ {
+ "name": "PaymentMethodQueryEnabled",
+ "values": {
+ "0": "禁止检查可用的付款方式",
+ "1": "可以检查用户是否保存了付款方式"
+ },
+ "default_value": 0,
+ "display_name": "允许网站查询可用的付款方式",
+ "allow_recommend": true,
+ "enabled": true
+ },
+ {
+ "name": "PersonalizationReportingEnabled",
+ "values": {
+ "0": "禁止将浏览数据发送给 Microsoft",
+ "1": "允许将浏览数据发送给 Microsoft"
+ },
+ "default_value": 0,
+ "display_name": "允许将浏览数据发送给 Microsoft",
+ "allow_recommend": true,
+ "enabled": true
+ },
+ {
+ "name": "PrimaryPasswordSetting",
+ "values": {
+ "0": "自动",
+ "1": "使用设备密码",
+ "2": "使用自定义主密码",
+ "3": "自动填充关闭"
+ },
+ "default_value": 3,
+ "display_name": "配置要求用户在使用密码自动填充时输入设备密码的设置",
+ "allow_recommend": true,
+ "enabled": true
+ },
+ {
+ "name": "RelatedMatchesCloudServiceEnabled",
+ "values": {
+ "0": "可以在受限网站上的“查找页面”中接收相关匹配项",
+ "1": "可以在所有网站上的“查找页面”中接收相关匹配项"
+ },
+ "default_value": 0,
+ "display_name": "在“在页面查找”中配置相关匹配项",
+ "allow_recommend": true,
+ "enabled": true
+ },
+ {
+ "name": "ResolveNavigationErrorsUseWebService",
+ "values": {
+ "0": "使用本机 API 尝试解决网络连接和导航问题",
+ "1": "使用 Web 服务执行网络连接测试"
+ },
+ "default_value": 0,
+ "display_name": "启用使用 Web 服务解决导航错误",
+ "allow_recommend": true,
+ "enabled": true
+ },
+ {
+ "name": "ShowMicrosoftRewards",
+ "values": {
+ "0": "禁用 Microsoft Rewards 体验",
+ "1": "开启 Microsoft Rewards 体验"
+ },
+ "default_value": 0,
+ "display_name": "展示 Microsoft Rewards体验",
+ "allow_recommend": true,
+ "enabled": true
+ },
+ {
+ "name": "TabServicesEnabled",
+ "values": {
+ "0": "不会向选项卡组织服务发送任何数据",
+ "1": "用户创建选项卡组或激活某些“组相似选项卡”功能时,Microsoft Edge 会将选项卡数据发送到其选项卡组织服务"
+ },
+ "default_value": 0,
+ "display_name": "启用选项卡组织建议",
+ "allow_recommend": true,
+ "enabled": true
+ }
+ ],
+ "ExtensionSettings": [
+ {
+ "id": "odfafepnkmbhccpbejgmiehpchacaeak",
+ "name": "uBlock Origin",
+ "description": "一款高效的网络请求过滤工具,占用极低的内存和 CPU。",
+ "modes": {
+ "blocked": "阻止安装",
+ "allowed": "允许安装",
+ "force_installed": "强制安装",
+ "normal_installed": "默认安装",
+ "removed": "移除"
+ },
+ "default_mode": "normal_installed",
+ "update_url": "https://edge.microsoft.com/extensionwebstorebase/v1/crx",
+ "enabled": true
+ },
+ {
+ "id": "dacknjoogbepndbemlmljdobinliojbk",
+ "name": "Click&Clean",
+ "description": "当浏览器关闭时,这款应用程序删除你的浏览历史,防止他人跟踪你的网上活动。",
+ "modes": {
+ "blocked": "阻止安装",
+ "allowed": "允许安装",
+ "force_installed": "强制安装",
+ "normal_installed": "默认安装",
+ "removed": "移除"
+ },
+ "default_mode": "normal_installed",
+ "update_url": "https://edge.microsoft.com/extensionwebstorebase/v1/crx",
+ "enabled": true
+ },
+ {
+ "id": "mhjnajgcbhkdhnfgcfjimgdddjjondoc",
+ "name": "IP Domain Country Flag",
+ "description": "Shows country flag and other IP / domain information in the location bar.",
+ "modes": {
+ "blocked": "阻止安装",
+ "allowed": "允许安装",
+ "force_installed": "强制安装",
+ "normal_installed": "默认安装",
+ "removed": "移除"
+ },
+ "default_mode": "normal_installed",
+ "update_url": "https://edge.microsoft.com/extensionwebstorebase/v1/crx",
+ "enabled": false
+ }
+ ],
+ "SearchEngines": [
+ {
+ "number": "1",
+ "name": "Google",
+ "keyword": "google.com",
+ "is_default": true,
+ "search_url": "{google:baseURL}search?q={searchTerms}&{google:RLZ}{google:originalQueryForSuggestion}{google:assistedQueryStats}{google:searchboxStats}{google:searchFieldtrialParameter}{google:iOSSearchLanguage}{google:prefetchSource}{google:searchClient}{google:sourceId}{google:contextualSearchVersion}ie={inputEncoding}",
+ "enabled": true
+ },
+ {
+ "number": "2",
+ "name": "Bing",
+ "keyword": "bing.com",
+ "is_default": false,
+ "search_url": "{bing:baseURL}search?q={searchTerms}&{bing:cvid}{bing:msb}{google:assistedQueryStats}",
+ "enabled": false
+ }
+ ]
+}
\ No newline at end of file
diff --git a/utils.py b/utils.py
new file mode 100644
index 0000000..c226dbb
--- /dev/null
+++ b/utils.py
@@ -0,0 +1,10 @@
+# coding: utf8
+import json
+from pathlib import Path
+
+
+def read_template(browser: str) -> dict:
+ filepath = Path(__file__).parent / "templates" / f"{browser}.json"
+ if not filepath.exists():
+ return {}
+ return json.loads(filepath.read_text("utf8"))
diff --git a/wg_browser_page.py b/wg_browser_page.py
new file mode 100644
index 0000000..d377178
--- /dev/null
+++ b/wg_browser_page.py
@@ -0,0 +1,98 @@
+# coding: utf8
+from PySide6 import QtWidgets, QtCore
+from utils import read_template
+from gbx_setting import GbxSetting
+from gbx_extension import GbxExtension
+from gbx_search_engine import GbxSearchEngine
+
+
+class WgBrowserPage(QtWidgets.QWidget):
+
+ def __init__(self, browser: str, pre_path: str, parent=None):
+ super().__init__(parent)
+ self.browser = browser
+ self.pre_path = pre_path
+
+ self.vly_m = QtWidgets.QVBoxLayout()
+ self.setLayout(self.vly_m)
+ temp = read_template(browser)
+
+ self.gbx_settings = []
+ self.gbx_extensions = []
+ self.gbx_search_engines = []
+
+ if "SingleValues" in temp:
+ for setting in temp["SingleValues"]:
+ gbx_set = GbxSetting(setting, self)
+ self.vly_m.addWidget(gbx_set)
+ self.gbx_settings.append(gbx_set)
+
+ if "ExtensionSettings" in temp:
+ for extension in temp["ExtensionSettings"]:
+ gbx_ext = GbxExtension(extension, self)
+ self.vly_m.addWidget(gbx_ext)
+ self.gbx_extensions.append(gbx_ext)
+
+ if "SearchEngines" in temp:
+ self.bgp_search_engines_default = QtWidgets.QButtonGroup(self)
+ self.bgp_search_engines_default.setExclusive(True)
+
+ for search_engine in temp["SearchEngines"]:
+ gbx_search_engine = GbxSearchEngine(search_engine, self)
+ self.vly_m.addWidget(gbx_search_engine)
+ self.gbx_search_engines.append(gbx_search_engine)
+ self.bgp_search_engines_default.addButton(gbx_search_engine.rbn_default)
+
+ def get_recommended_settings(self):
+ recommended_settings = [f"[{self.pre_path}\\Recommended]"]
+ for wg_set in self.gbx_settings:
+ if wg_set.isChecked() and wg_set.allow_recommend and wg_set.cbx_recommend.isChecked():
+ recommended_settings.append(f"\"{wg_set.name}\"=dword:0000000{wg_set.bgp_radios.checkedId()}")
+ if len(recommended_settings) == 1:
+ return ""
+ else:
+ return "\n".join(recommended_settings)
+
+ def get_settings(self):
+ settings = [f"[{self.pre_path}]"]
+ for wg_set in self.gbx_settings:
+ if wg_set.isChecked():
+ if (wg_set.allow_recommend and not wg_set.cbx_recommend.isChecked()) or (not wg_set.allow_recommend):
+ settings.append(f"\"{wg_set.name}\"=dword:0000000{wg_set.bgp_radios.checkedId()}")
+ if len(settings) == 1:
+ return ""
+ else:
+ return "\n".join(settings)
+
+ def get_extensions(self):
+ path_head = f"{self.pre_path}\\ExtensionSettings"
+ extensions = []
+ for wg_ext in self.gbx_extensions:
+ if wg_ext.isChecked():
+ extensions.append(f"[{path_head}\\{wg_ext.id}]")
+ mode = wg_ext.cmbx_modes.currentData(QtCore.Qt.ItemDataRole.UserRole)
+ extensions.append(f"\"installation_mode\"=\"{mode}\"")
+ extensions.append(f"\"update_url\"=\"{wg_ext.lne_update_url.text()}\"")
+ if len(extensions) == 0:
+ return ""
+ else:
+ return "\n".join(extensions)
+
+ def get_search_engines(self):
+ # 只生成推荐的
+ path_head = f"{self.pre_path}\\Recommended\\ManagedSearchEngines"
+ search_engines = []
+ i = 1
+ for wg_se in self.gbx_search_engines:
+ if wg_se.isChecked():
+ search_engines.append(f"[{path_head}\\{i}]")
+ is_default = "1" if wg_se.rbn_default.isChecked() else "0"
+ search_engines.append(f"\"is_default\"=dword:0000000{is_default}")
+ search_engines.append(f"\"keyword\"=\"{wg_se.lne_keyword.text()}\"")
+ search_engines.append(f"\"name\"=\"{wg_se.lne_name.text()}\"")
+ search_engines.append(f"\"search_url\"=\"{wg_se.lne_search_url.text()}\"")
+ i += 1
+ if len(search_engines) == 0:
+ return ""
+ else:
+ return "\n".join(search_engines)