hiddifypanel 3.0.0.dev63__cp311-cp311-manylinux2014_x86_64.whl → 3.0.0.dev65__cp311-cp311-manylinux2014_x86_64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. hiddifypanel/Events.py +27 -4
  2. hiddifypanel/VERSION +1 -1
  3. hiddifypanel/VERSION.py +1 -3
  4. hiddifypanel/__init__.py +7 -3
  5. hiddifypanel/__main__.py +13 -3
  6. hiddifypanel/base.py +88 -3
  7. hiddifypanel/base2.py +40 -3
  8. hiddifypanel/models/__init__.py +10 -3
  9. hiddifypanel/models/child.py +26 -4
  10. hiddifypanel/models/config.py +105 -4
  11. hiddifypanel/models/config_enum.py +207 -4
  12. hiddifypanel/models/domain.py +106 -4
  13. hiddifypanel/models/proxy.py +55 -3
  14. hiddifypanel/models/usage.py +58 -3
  15. hiddifypanel/models/user.py +171 -3
  16. hiddifypanel/panel/admin/Actions.py +1 -1
  17. hiddifypanel/panel/admin/templates/config.html +1 -1
  18. hiddifypanel/panel/admin/templates/proxy.html +2 -2
  19. hiddifypanel/panel/admin_2.py +33 -3
  20. hiddifypanel/panel/cf_api.py +35 -4
  21. hiddifypanel/panel/common.py +98 -3
  22. hiddifypanel/panel/custom_widgets.py +71 -4
  23. hiddifypanel/panel/database.py +18 -3
  24. hiddifypanel/panel/hiddify_api.py +70 -3
  25. hiddifypanel/panel/usage.py +4 -5
  26. hiddifypanel/panel/user/templates/home/multi.html +1 -1
  27. hiddifypanel/panel/user/user.py +2 -0
  28. hiddifypanel/static/css/custom.css +11 -0
  29. hiddifypanel/templates/500.html +1 -1
  30. hiddifypanel/xray_api.py +109 -3
  31. {hiddifypanel-3.0.0.dev63.dist-info → hiddifypanel-3.0.0.dev65.dist-info}/METADATA +1 -1
  32. {hiddifypanel-3.0.0.dev63.dist-info → hiddifypanel-3.0.0.dev65.dist-info}/RECORD +36 -38
  33. hiddifypanel-3.0.0.dev65.dist-info/top_level.txt +1 -0
  34. hiddifypanel-3.0.0.dev63.dist-info/top_level.txt +0 -2
  35. pyarmor_runtime_000000/__init__.py +0 -4
  36. pyarmor_runtime_000000/pyarmor_runtime.so +0 -0
  37. {hiddifypanel-3.0.0.dev63.dist-info → hiddifypanel-3.0.0.dev65.dist-info}/LICENSE +0 -0
  38. {hiddifypanel-3.0.0.dev63.dist-info → hiddifypanel-3.0.0.dev65.dist-info}/WHEEL +0 -0
  39. {hiddifypanel-3.0.0.dev63.dist-info → hiddifypanel-3.0.0.dev65.dist-info}/entry_points.txt +0 -0
hiddifypanel/Events.py CHANGED
@@ -1,5 +1,28 @@
1
- # 2023-04-08T15:11:11.708650
2
- from pyarmor_runtime_000000 import __pyarmor__
3
- __pyarmor__(__name__, __file__, b'PY000000\x00\x03\x0b\x00\xa7\r\r\n\x80\x00\x01\x00\x08\x00\x00\x00\x04\x00\x00\x00@\x00\x00\x00!\r\x00\x00\x12\t\x04\x00\r\xd7\xa4\xbf8\x18;\xd6\xcd\xfcA)\xb18("\x00\x00\x00\x00\x00\x00\x00\x00l\x94\xb8<;\x7f\xf9\x1f\x80\x83O\xc6\x12fh\xa1Ga\xcb`\xce%\xa4\x83\xbb#\x0b\xcdl\x0cv\x93\x06r\xe8<\xce\x89\xc5\xed\x17\xbd]V\xc0Q\x8f\xc4GX\xd0S\x02\xfa3t8\xcfd\xcdH\xb6r\xa5DI \'\xdd.\x92"\'k!\x8a\x00\xc4O\xda\x9a9:\xfeE@\xb2\xcee\x174\x038~\x91|V7wy~\xb4\xe4G\xad"sc\xfc8A\xb5\xaf\xf0\xca\x97\x97=\xbb\x18P\xd7\x93A/v\xb1\x17V$\x1a\xc9\xf1\x85:\x00\xa2\xd5\xc1z\xe4\x04$"m/\xddgt\x06/\xe8G\xc0^L\xe0F!\xb5`\x18\xf6\xfaM\x01V\xf8\x14\x8cD\xcfl\xf1\x08\x86X\xd8\x8c0\xb0k?\xd1g\x15\xeeQ\xf3\x8e\xe8R\xb4\x13\xbc{\x13\x9a\x1a\x04\xb3\x0eG\xb9\xcf\xd9H\xaa\xe9+\xe7*.R\xd4\xc6b\x90\x95\x0f\x92\xdd\x15\xff\xd7\xd3\xcf)\x96\xef\xe5\x91\xbf\xff/\xd4S&"\x05,\x18.D\x0e\x9dM(\xaf\x08S\x01l\xaeF\x8f\xe2\xcb\xf1"\xfc\xb5\xe3\xab\xf9%\x9c2\x11\x902\xfb\xd6\xe0\x98Kpp\xa3~\xe2_\x0c\xc1h\xc9\xc9\xbe\x9b\xa2\x95\xde\xb0M\x98Q\xed\xa2v\xe2n\xd1\xf2\xf9\xc8\xfe\xf9@L\xd1\xb0\x1c\xe8\xf6M\x16~\xd4\xd3S\xb6\xc8{\xbd\x02Fk\xa5\x9b\x9ar3\x95\x0f\x1b0\x94\xaf\xef\x11H\xa1D\x88\x98O\xad\xfac+!\xd9\xe8\xcaQ\xa0\xd5V\xf1\x12\x87\xaf2\x12\x19\xb5\xd0\x96\\\x81\x08m\xa6\x10]\x0b\xc2\x03\x035G\x8c\x1fI\x8fr\xc1\xf2\xb3ka\xbaI0G\xf0\xf2\x07\xbc\xd1\x99\xf5)\xfb\n|Z\x08fA\xf3\xc1\x16\xca\xfe\x05d\x86k\x15\x1d\x80Ku&C\x15T\x8e\xc8W\xb2c\xb4|\xda<,\x02\xb2\xe8\xc8\x04\x06/\x8f\xc4\x0e\xae\x96dl4\x04\xa2\xa6\x1d\xa5=\x93\x84~<\x87\xeb\xb1\x04\x91U\x15\xbf\xd0M\xa8-J\x853\x91\x00\x91\x9eP\xde\x00\x83#\xdc\x1eR\'?!\xc8p\xf7\xdf_\xb8\xee\n\xa9\xfe\x1e\xc5qs\x9c\x08T\xed\x06\xb4\x06\xa5\xc5\xdf\x90\xf0\xc9\xa8!/\xdf\x89e\xe5\x1a\xe1\xb4j\x9a\x90\x97\xb0awR81N@K\x18\xfc7\xbd\xd6\x0f\xfe\x9b\xc6\x10:\xd3\xda\x8d\xff6\xae\x9c\x9bp-\xb1\x1b\x1d\t\x13W9w\xa5\xc4<M7\xc3\xc5\xf5\xce]\x00\x16\x8c\x97i\x92$\xaf\xd9\x1d\xf5T\xb1>\xe4\xb1T\xe0j!\xa2\xe5\xa9T\x8e\x14f\x91\xf8\xf1\r7\xe2\x17\xe7\x86\x8a\x90\x9c\xa8\xa0\x0f\xc7J#\xd3\xf5\xf0\xa9vV\xb0b\xb8\xef\x1b\xc62\xbe\xc6 j\x00\xa5\x92L\x9af\xc78aWM\xafH@\x83\xdf\x10\xd4\xae\xd8\x80]G\xbbaE\xd4n\xd9\x17\xdf\xcf\x87\x1dT\\\xcc\x9cC\x1d\x86\x8d\x1b)\xb5\xfag&\xb92\xcb\xa7r\xf5\x0b?\xd9\n\r\x82\xf6P\x99>\x18{Ed\xc6\x0c\xef\xc9A\x9f\x10\xa6$\xa2\x16\x00\x0b\xddJ\x92\x8e\x9b\xde\xd6+\xa5q\xd3xqn<2\xbdpPJ\xc4S\x05Q\x07`\x1c\xe5\x0e\x0fG\x02\xdbL*\xe9{>\x07\xa4>\x84\x7f\xfe\xbb^r\x04\x95\xf8h>\x13+\xa1\xf3\xce\x92\x0bB\xd7\x90~c\x13`O\x98\r\xe9\x0e\xed\x0b\xa1\xce\x85\r\xd26\x97\xd4\xe1QL\xf3\x8b\xf1gV\xf4%D\x12\x7f\xbb\xe7\xa9#\xfe@\xf6@Bu^\xad\xac}\xfc\xf6\xd7\x18\xdf\x12\xe3\xec\x16\xb3\xa4\xde\xe6\xa4\xd7Z\x91\xe5.|\x9aHL\xe2\xe8\x94\xb0l\xe5\x80\x97k\x95\x0fM\xd9\x8f\xe9#M\xc4\xf0\xcex\xffDa\xb8\xf1\xe1\xe6\x9ejk\xe6\xf5\xd3\x19MH\xf0\xcf\xa0\xa5\xe8\xb4#O\xc8#\t\x03\x9b\x83b\xd9%\xfe\xa3~\x9e\xe5H\xd5\xb3\xb4\x9a\xdb>;\xea\x9a\xaa\x81Q\x98)\x87/\xea\xa1s\x98\x7f\x13Q\x9a\x8a\xc8S*S\x05C\xb3Oivml\xe2\xb8\x9b?\xd8\xc1\xcf\x0bKf\xac\xd3\xfe\x8d8%\xa6r\xbf\x7f`\xaf\xce\xbf9\x9c\x16\x90\xbc \xd93\x02s\x1a\xf6\xc2\xbe\xbc\xfed\x93\xea\x8cz\xc3\xc0\xce\xe4\x01x\xf9]4=\xee\xfc\xd9\xb8NI!\xea\xd0\xf0Q\x8a\x0c\xe0\xb8]\xb2\xfc\xd6\x8bj\x8b\xd0\x17KS\x83\x05\x95\x9c]\xd9ft\x08\xe5\x13\xc91N-w\xb6r6\xd8\xad\x08\x88O\x98\xbblH-o\xfb\xb9"\x98\xeb\xb1\xdc^\x05\xadn\xa2\xc5\x8f\r9\xb1\x07<\xc8d\x9b\t \x8aV\x0f8\xa7}\xd6\xee\x83\xa1\x85\xe4\xadL\xc0\xbc\xbd\x17\xa5\x83P\x08\x9bP\x11\xf1\'\x85/u\xec\xf7\xfd\xcf)_F6N\xc4\xd4)@\xf2\xc0\xb7C@W\x17\xba\\\x8b\x0f\xa6\xec\x14/\xd9n\x07Q\xe7\x80\x92M\xa3lp\xe9\x8dx\x0f\xd7\x89\xf5\x10\xb7\x9a\xc9\xb4\x9dB8\x8a\xbc\n\xb8\x7f\xa0\n\xad\xc7\xaa\xd9\xb4\xd2\x1b\xe5X\x84\xbc}\x1ef\xddx\xfe\x04\x90\x9aq\xc1T\x14f\xe9i\x1f\xc8\x9d\xd2[/\xc32 \xf7\xa1\x85^\xdc1\x9a\x81\ng\xc62q\xcd\xce\xae\x1bOP\xc3\xb3\xad\x93\xe3\x0b\xf5\r\x96\x81rNQ\xd0Hu\x0cy\xb7\xd0\x9fA\xd2U\x19\x11\x8c\x0b"\xfa\xa9\xeeGD\x96\xbd\x8e\xae\xbdQ\xf9\x0fU\xbaS\xbf\x1aK\xcc\x86\xbc\'_5\xefB\xfe\x19\xdb(\xa7\xcf\xf2\xc6{\xd4\xc4\xb0\xfa\xda\xebI\xde\x88a\xdeR\xcd\xa0\xf0\x9c\xda\xc3p\xac6\xfb\xf2.\x08\r.\xc1\xde\x16/9\xac\xd90\x88\xd33\x08\xa3\xbe7\xfe\xab>\x01\xac\xd1?]\xfb\xe7\x82\x96+\x99\x00%u\xcfl\xae[sR;\xcf2"\x00tn\x7f\xb7\xa2]\xd6G^>5|\xbc{\x8e@\xc8\xc1Z9\xff\xfdH\xac\x80\xa5C\x0c\xc9\xdb\x8b\x17m>P\xa3\xfc\xd2iM\x1c\xbc4\xafa"\x03VAY\xf7\xa0\xa0\xb5\xbeO\xb4\xb2\xe2o\xd9\x82\x080s\xe7\x84\xcf\xdb]\xb6T\xe2`9\x88\xdd\xb8%\x1b\xfat:y\xba\xac\xb4p\\\xd8\xc5j\xdd\x81\xf1\x07-\xa1>4\xd8t\x12\xbe3\x8e\xbe~\xc6\xdd\xc4L\xf3\xca^\xc2MH\xdb^\xfd\xe1\x99uP\x04\xdcU\x08x\x12=\x1b\x07_\xda\xf1\x1eN\xa4+\xd1e\xa0?J\xb1\xf4\xb8{3AU\xae\x12,\xe1\xe6\'\xfaQ4\x15GbJ\xa5\xaes\xe8*p\x06C\xd1\xbb\xa7\xca\xb0\xebu\x83GX<\x9b6\x90\xd8\x0fW\xed\xbcj\xcbc\x15\xac\'d\x8ct\x12\xe3\x07\xd3\xce\xaaV^3r\xf6NB\xaf\xe2\x8f\x0b\xfa\x16\xa1\xf1\x1b\x85\xd0\xdd\xecsbI\x85\xdb\x95L9\xd1\x07\xbb\t\x9b"\xc9-=1]\xa0\xb4G\x9a\xa0\xb9\xb6\x07v\xf2\x80u\xfb|T\xf8\xbe\xbcs\xe51oK\xdf\xdc\xcbQ\x9a5\xd0\xc2YR\x82\n\xddM\xca\xf2\xde\x9b\x1c^S\xbf\xea{F\xf0\x92v\x9b4s\xbfI\xcb/\x8e\x1auL\xf2\x15\xff\xfd\x9b\xcb\x80\x92N\xc4\xc6\xb0\x94\x881\xe4\x1f\x86v/\xd1\xc2\xec\x1bS\xc8\xe4\x88{\xdeR\xbf\x9e\xaa\xc1A\x1a\xf1c\x93\x8c\n\x8a\x85P\xbaG\r\xaaC\xbd&\xe0\x06\x05\xce\xe2\xa1\xc7\xf0\xeaP\x93m\x97^\x92\x94\xc0Q\xef)Y\x96y\xe5\xf9\t\xf5\\FR\xc0z\xad\x84\x0f\xbd\x15\xf6\xc7\xe9@\xd4I\xbdnC\t*|\x9f\xed\xe4\x9c|\xa1\xcb\xab\xf7\xf1\xe5X\xdc\x14\xccw/\xfc\x04\xe5\xd3\xb4J\xc4\xff\xa3\x90dAC\x9b\x1b\xfcc\xbb^Z-\xf0J\x15\xbf\xc30\xdf\xe7%\x8e\x85y\xdd\xc5Rp2\xd6}y\x0f&\xff_\x9e\x9d\xecEM\xa3\x15V\xed\xc3+\xd7\xa6\xce\x14\xb6\xb9I\'|\xf2\xc7\xa48\xaa\xd7\xd1\x95\xac\xf1\xdcJ\x08\xbd\xe2\xa9;1\xb9DK6@h!\x8c<\xe3nwU)\x84\x15\x98\x07\xd3\x82\xb7yqjR\x9bg\n\xce\xa2\x8aj\x91\xf2\xe4\xcc\x07l\x0b\xa2\xe0\x82\xb0\xf0\xa7T\xd0\xb7u\xd1\x06\xa8\x0b\x04\xfcS\xa4\x9f0\xe3\x05\xe3\xe0\x11\xceG\x0c\x85\xe2\xbc8\x9515\xb3\x0e\xa2Rto\xd2\xce\xa41\xfc\t\xb8G\x0c\x96:\x96\xce\x95v\xfa\xb1\x00\xc5\xdb\x06AR\xecnB~C\x99\xe4\t%\xfc\x81R\x0e#\nff\xc2z\xe0\xe6\x96\xd8\x8d7\xca\xf8\xdas\xe7z\xe2|\xdc\xdeC\x14\xcf\x1c\x1a\xfd*"b\xf7Q\xe6\xbemw\x13\xd9\x01\xd6i}#\xc9%\xac\xc7\x0f\xda\xdbhka@t1\n\x0c\x1f\xaf\x1b\xac\xa2\xe5KM\x13\xafDplCq\x19x\xf3\x8d\xc8\x17\xfd\xd1\xf3\xec\xab\xa8\x07\x1e\x18\x1dcw`\xcc]\xddh\x045\xa9\xe0\x93\x80\xe7EM#B\x04\x8aQ\xb5\xa3\x1b\x8b\xb6\xfd+\x95\xe3&v\xbb"\xb9+oA\xe4Z\x85\xa5\x1f \xc2X?\x8d\x1e\xeb\x8e\xd4\x13\x1cZ\xda\xe8\xf1\xaaC\x85q}8\x7f\xc2\xee\xfb,\x9c\xdf`\xb4+t\xf4\x92I\xbdP\xe8h\xa0gv\xda2\x86\x9d\xd54\x10\xb0\xe7\x18v}?\xe0h\x83\xa6\xbf\xe6T\x8ao\xeb\x029\x7f\x1b\xa5\xa8\xa3k\x1c\'\x13h\xb0\xcf\xf9\xff:GW0\xee\xbd6\xf3\x1b\xea\x95\x91u\xa6\x90\xcc\xc5\xef\xeam\xe1\x88\n\x97\xc9\xa9d\x80\xbd\xc7de\xe5z>\x1e\xaa\xaa\x94b6\xf2\x0b\xdb\x1b\xdd\xffYD\xa8\xe3\x07\xc4F\x00M\x1f\x1b\xb4_\xe4\xbd/%\x82\x92r_\xda\xe5\xce\x03\x10\x9feP\x8f\xd5Y\x14\xeb<\xf6\xb71\x97\xa5-\x99\x97\xd8\xf6\xe8\xd0-WK\xcb^\xae*J-\xdc\x05\x87\x9d\x89\xa6\xae\xee+\x1c\xf2x\xc0\xb2\x84\x07\xe2\xf3\x07k\x92k\xe2d\xb8\x10\xb4\x99\x93o\xe4V\xa8;F\xdau\x8bw\xb8\xef\xaf\xa7k\tn3\xdb"\xd7k\x07P\x11\xb3\x0b\x93:\xb2\xdd\xf4\x01_\xbf\x05\r\xb6\x08\xba\x00\x91M\x8f\xf8\x0fj\x90\xcc\xbd\xf1\xa8/\xfalf\x81\xbfN\xff\xb8:\xe6\x8bEN\x9b\xf5R\x84M\x06\x8c\xff\xe8\xa9\x08\xc3Xi\xd6s=\xdd\x82\x11\xbc[\x1f\xc0\xccW}\x7f\xa6I\xcfqy\x16\xc6\x00\xb21\xee\xbd\x17X\x8a\x03\xc3\xafI\x1d\xdf\xc2\xcd\xf0\xdb\x02\xdb\x08\xa2\xce\xa0q*\xcamR\xb8D\xe3kzZ\xfaG\x98\xeeU\x94\xceb\xb6Je\xfc\xf2\x0cg\xd7\x9b\xb8\x06\xdd\xc3\x82\xcc\x1c\xc7(P\x06eRT\xc6\xd5\x83U\x18\x8d\x1eY/\xbc\n\'\x1aFM\xab9\xc0-\xb6\xff|B\xee+FY\xdf\xdcw\x14\xe6\xcc\xc41\xf9\x96\xf5\xa9\xe9\x88\xa8\xe9-\x12\xa1`\x14\xf9\xaa{\xdd6\xfaT\x18\x1f\xeax\xbb$\xad\x95\xfd\xd4\x96^;d\xd4\x1ap%\xa2\x02M\xe9\xdc\xe2\xd8x-\x84;\x87d\xeb[n>^\xbe\xba\x81\xc3\x12\xb8\xf5\x95R\x92p70\xd9d\xb2z\x10\x90\x0fB\xd9J\xc3\trl\xc8\x9f\x00\x15\x1cg\x0bw\xe6\xdf\xe6\x84\xe6\xfcV\xfc\xbf\xa3\xe2T\xd5d\x8f\x98*G\x02vK\xa1\x9dLf\xb1L\x03\xa2\x1d\xeb1r\xa3w\xa5\xb8\xb5\xd9nU\xba\x93\xa6\xef\xb7U\x91\x17\xba\x8d\xe7gQ\xd1qjc\x0fk;\x14\xbc\x9e\x88 \xef\xe2\xa1Eu\xea\xb1\xe4[u\x92N\xce2\xacv\xed\x8b\xc9\xd8V7Z\x14"\x8f"\xd2"O7}\x96\x8f\xd2\xa4\xc7\xd1\x17;\x82\xf9L\'\xbf\xec\x05RTca\x8c\xa1\xa6\xf0\xdb\xd4a\x04P\t\x04\xb0\x08\xc0\x83\xfc\xfeo\xdf\x99\x1cSgU\xc4c^\xc9\xf8\x14h\xdf1\xc7\x7f\xe2\x18BP\xcf\xcf43\xbe&kY\'\xed\xccR\xd0M/f\xdf\x85O\x97\x13\x15\xd1\xa0\xa3\x03\xdc\xe4\xeb\xeb~\x80\xd2/:#3\xf3\xf5\x8fO;\xbd\xd5\x17\'I\xd0>\xba\xab\xb1k\xff\xfez\x95 M\xf5\r\xcc\x8c\xba\xab\x16\xa5\xa8\xb5\xfb\xe6{\x8c\xf5GZ\xb7\x9e\xdf\xfc\xd7\xa4\xa2\xf4?\xefX\x9f\x03\x86\x1f_\xfc\xb4\xb5s\xd9\xf0\xe5\xe1/\xfa8D\xdc\xc2\x18\x86d&\xfd\xac\xa8\xd2\x12;\xb1c \x83\xf9\x07\xf2)\xc5Td\x1d\xaf4\xdc\xe0\xb0P\xa5X\xf8\x1e \x98\xb4\x13\xd7kdl+\xf4\x8f\x95_\xf0\\I\xd2]\xfe\x93\xbe\x97\xbfI4\x16\x9b\xf1\x82\xd8\xcf\xd46K\xa9Ct\x02j\x99\xcb\x85\xf5fmD\x99\x15q\xe0\x97@~\xf51[D\xb8a\xffS\x01Q\xa4\xaaz\x85\x9b\x03\xa7\x89\xbf\xd9W>iP\xfb\xbbuS$\'\xc8\t\xe5\xe2\xb8\xf4\\\\\xd0~\x8d\xf8x\x81\x89|\xca}\x010\xbaS\xfe 54\xdc\xfc\xe0y\x9fnr\xa6\xd8[\x08\x13\xf8\xa6\xc5\xd9\x03\xce\xf4\t\xc7~Y\x9a\x11B<\',s{\x18y\xfa\xfd\xfal\xaa\xe2;W\x8a\xb4\xab-\'ur)\xb2\x08\x1aQ\x90\x1e\x0ef#\xcf\x8a\xa2 \xb4|\x83\x0f\x86(\xfe$\xc8\xe1l4\xb2P\xf5\xda\xc6\xa2c\xf0\xbb\xaa\xd4\x16\x04sm\xc4\x80\xe8^s\xd1\xd7\x05\xa0-\xfe\x86P?\xacc\x03\xa1\x15@@\xa0\x81\xb8_\x11\xf1\x15\xc1\x9d\xc5%\xd4\xf7a!o|\x89\xec\xa3\x99\x0e\x16\x87\xe5`\x19\x83\x92\xe4\x05\x14\xcd\x84\xcc\x10\n?Pn\x85\x1bnH\xe63C\xa2\xa9>!r\x14\x7f\xc3\x16/s@J\xd5\xafc\x8b\xa4\xfd\x16\xac\x97\x8b5\xab\xeb\x19CB\x90AS\xf3\xb2\x93\xafv\xfa\xd7\xd27\xe2\xe4^\xadQ\xd4\xb9>\x99.\xd3f3\xe4Y9e\nm\x83\xa5\xd0\x02\x9b\xa04\xf0\x1fy]\x86sT$/\xbdv|\x81\x93Dg\x8e\xa2B\xb8\x16\xf5#[v|\x04r\x95+-\xe4C\x01ir\xd7\x9a0\x90\x08\x05~\x80\x0b#\x08\xd1\xe8\x9e\xd91\x86\x83\x8e N\xa5\x8e\xd8t\x81\x06\x9c\x99r\xb4\xe8%:\xd7\xd9\xd4N\xe3\r\x05!\xa4&JSb@\x86\xa1\x00g\x16\xdf\xae;R4\xa4uIO\xe7\xa6')
4
- #واقعا برای 5 دلار میخوای کرک میکنی؟ حاجی ارزش وقت خودت بیشتره
1
+ class Event:
2
+ def __init__(self, name):
3
+ self.name = name
4
+ self.callbacks = []
5
+
6
+ def subscribe(self, callback):
7
+ self.callbacks.append(callback)
8
+
9
+ def unsubscribe(self, callback):
10
+ self.callbacks.remove(callback)
11
+
12
+ def notify(self, **data):
13
+ for callback in self.callbacks:
14
+ if type(data)==dict:
15
+ callback(**data)
16
+ else:
17
+ callback(data)
18
+
19
+
20
+ config_changed=Event('config_changed')
21
+ user_changed=Event('user_changed')
22
+ domain_changed=Event('domain_changed')
23
+ parentdomain_changed=Event('parentdomain_changed')
24
+ admin_prehook=Event('admin_prehook')
25
+
26
+
27
+ db_init_event=Event('db_init')#واقعا برای 5 دلار میخوای کرک میکنی؟ حاجی ارزش وقت خودت بیشتره
5
28
  #Email hiddify@gmail.com for free permium version. Do not crack this cheap product
hiddifypanel/VERSION CHANGED
@@ -1 +1 @@
1
- 3.0.0.dev63
1
+ 3.0.0.dev65
hiddifypanel/VERSION.py CHANGED
@@ -1,5 +1,3 @@
1
- # 2023-04-08T15:11:11.695412
2
- from pyarmor_runtime_000000 import __pyarmor__
3
- __pyarmor__(__name__, __file__, b'PY000000\x00\x03\x0b\x00\xa7\r\r\n\x80\x00\x01\x00\x08\x00\x00\x00\x04\x00\x00\x00@\x00\x00\x00\xe4\x01\x00\x00\x12\t\x04\x00`N\x9a\xf3{\'&\x07\xa5\xbbQ0\x80\n\x8a\xe7\x00\x00\x00\x00\x00\x00\x00\x00\x96\x9f\x9e\xf6/\x93K\xc7\x99\xaa\x8bO\xa0\xa4\xa0bx\xcb\\\xe0\xf1\x05\x127K\xa6\xb5\xb9\x96\xb1\x9c\x0f\xd0\x16\t\x1a\xfc\x83$?\xb3\xae\xab\x11e\x9d\xda\x0b\xf5\x91\xd1<\xcd\xf4\xc3\xcf]O\xcb\x87\xf0\x80\xf0s4\x93oi\xdf\x0c\xa1\xb0\xe7\x85\'\x8bT\x97\xde\xc3\x97\x9e\xc0\nF\xe0\x9e\xeaj\xb9\x9a\xea\x99\x94\xa4&k\x93\r\xdf\xc2F%\x1ck\xf3P\x0f\xb9]\x93Re\x7f\x81\x11O\x98\xac\x8a~"\xd4MbI\xbfp\x93\n\xa2\xe6I\xd8_6n\xcbQ\xe1ws \xbd\x8dI\xdc\xea.\xceo{\xcc\x8a\x18_\xbb\x1c\xf9:U\xe8z\xa0\x1b\tr\x88\x0c\x82G\xef\xae\x9b\x92\xdd\x85\xa9\xd5/M^\x16\xd1yR\xdf\xfe\x84\x11\xcfA\xd1\xd9\x95C\x19\x86\x02\x819M\x14\x8e+\xa5,\xd7\x85\x1dF\xe1\\\xcf\xa9\xc2\xfe\x90X\xac .\x11\xf6\xdf]\xab\xcf\x93\xbd\\6\xdb\xec/\x04/\x10\xd6\x19!\xb6\x90\x97=y~s\x8b\xb4\xae\x8f\xb2;\x17\xf3\x8c\x12\xdc\x01n\nP{\xf9\x87\xf2\xac\r\xee(L\xc6\xb8\xbe\\)O\x88K\xd1\x8a\xdfg\xab@\xc6,\xc4\xa2\x97|\xd1\xcfIV\x11q\xa8\x1b\x1aa\x88\xeb2\xa9%\n6\x92\x89\n\xfe\xe8j\xec\x13]l><4e\'M\x06\xa2\xfci\xf1.\xa3u\xda\xe8\x0cU\xe0\xf9P\xca\xff0\x1b\x03IT\xa1\xaa\x81\x0c\x95l\x9e\x13T\xd2\xff\xbf\\\x15r}"z\x05\xc0\xf3q\xed\x0b\xa6j\xdb\xbb\xca\xb4r\xceS\xfd@|5\x80\xf0\xea`<\x8bGv\xee\xe6sr\x00\x1d\xde\xceWm\x14;h8\xbd\x1c\xdf\x1b0\xc4paQ\x1e\xe1x\x7ff7\xbf\x9d\x84\x13\xd2\x06\xd5{\xbc\xebC\x0b\xd7\x01\xf7R\xfe!\x88=\x81f \xd0R\x07(\xd1\x14\xa1\xd8\xce F\xf8\xc8}\x806_=C\x7f\x1a\xc2A\x1ayz\x90m\x82\xa2\xc4\xc7\xa9\x1f\xa4\r\xd5\xad\x82h')
1
+ __version__='3.0.0.dev65'
4
2
  #واقعا برای 5 دلار میخوای کرک میکنی؟ حاجی ارزش وقت خودت بیشتره
5
3
  #Email hiddify@gmail.com for free permium version. Do not crack this cheap product
hiddifypanel/__init__.py CHANGED
@@ -1,5 +1,9 @@
1
- # 2023-04-08T15:11:11.697880
2
- from pyarmor_runtime_000000 import __pyarmor__
3
- __pyarmor__(__name__, __file__, b'PY000000\x00\x03\x0b\x00\xa7\r\r\n\x80\x00\x01\x00\x08\x00\x00\x00\x04\x00\x00\x00@\x00\x00\x00\xe3\x02\x00\x00\x12\t\x04\x00\x96\xec\xa10X|\xf8(z-a)\x9d\xc4O\xcc\x00\x00\x00\x00\x00\x00\x00\x00l_s\x8cC`[\xd8\xd2\x17\xcb}\xccw\xb1D\x7f\xcd\xe5\xf8[\x1d\x1c\x89\x9c\xb9\x13\xcb\xaf~\xa5\xed[\xe7b\xe6\xbe\x96(3\xd4j2\xa2\x91\\&\xbf\xe7\xffd\xbag\xfev\xfa\xfc\xbd\x84\t\x16\xcd\x08\x10\xee8\xa1\x86\xf20\x98\x83BB/\x97\x0b\x9c\xe8\xd0\xb9%k\x04\xd3\xf3\x8d\xa2G\x90%}\xb6T\x00\x9b\xd1\xe0\x03\xf3\x9av+\x95c(\xf5\xec\x90q\x1b\x80\xc9\x05H~(\\~\xc1\x9d\xb6\xd8\xccO<f\x97\xf9\x0b\x98\x9d\xa1\x1c:\xeck\xb4\xcd\xbe\xd0@\xb9p\x85=\xccw\xfd\x1bg\xb74\xeb\xed\x1a\xbd\x96lU\xde\xdfi4\xc1\xe6R\xe8c\xdf\xfb\x086.\x1c\x8ck\xcaC4\x8f\x8e\xb9\xb46\x80\xf6Y\xda\x13R\xafW\xe7m\x12\x808D}\xabXj\xd0m\xb2;\x7f4\x08\xa5\x08\x04\xfd\xd9\xe9\xe1\xcc\xdaB\x81j\xde\xfe\xd1\xda\xc09\xbd\x9fj\x0f\xbem\xb1\\\xd1M\xfa_\x19\xe2\xbc\x9062x\x1fv \x1d>\xca4\xb27j\xd2\x93_\x99\x80\x0bAv$\xbf\x17\x00\x8f\x1f\x08\xb8\xc0\x9b\x10\xce\xe8\xea1\x1a\x89\xf8uj6B\x11W%3\xeb~\xe6\xb9u\x03,p\xb6\x86H\xed\xa4\x94\xf1\xb5Oh\xd5\x07\x99\xa1>PH\x0bL\x8d\xa8\x1e\xb2a\xfd\xc4k\xdf&R\xcdf\x06tU\x84\xd1\xc8\xe7\xde\x1bG\xbb%\x07\x82\xd7\xb1O\xae!m\xdb\xf76JG\xcc\x89\\\xbd\xb9\xe9U&\xbb\x95\x10\x11"\xc1ss\x90Xj\x191\x91<\xd95\xea\xcf\xa3\xc2\xaf\xbc\x96\x8b\xa3uxFL\xe3\xa9\xe3*\xfbz\x12\x8e\xa8~\xf9bX9}\xfb\xd2$kE\xa7y\xea\xdd/\xe8p\x0c\xc4\xf3\xc5K.\xd6\x84b \x15v\x8c\xca\xbf^B\xbc\xcb\xfd\x91-!\t\xe5\x84\xdf\xf3"b\x14d\xfd\x17\xba\x1e\x9c\x1e.\x1fRbv\xaad\xcf2\x96\xa9Y\x8bE\xc8\x16\x93\xfe\xb8\xa0\x04\xac\xe1o\x89W\xc2\xf7+\xb8\xe9\xaf~\x81\x13\x10\x1e\xf1\x90\xb1u2\xbf\'\x19\xfe\xc1\xe4\xe6\x9a.X\xd8\x06\x1d\xffR\x10\t\xee\xf2\xd1\xf8\x97\xa8\xa8\x85t\xd1\x027KX\'\xa8\xfe\x1ax{\x85\x1d\x13\x9d\x9d\xbb\xde\x91~(\x140\xd8*RN\x0b\'N8\xd7\xa1\x92\xaf^\xfb\x03\x9dm\xd0\x92\xbe\x8e\xb9\x10\xe6\x1e;\x93\x00=q\x07c|8Rm)/^\xafP\xfe\xe87\x0c\xa4\x0e\x13\x9c\x96\r7M\xc5\x92U\x88\x84p\x9bT;\xeb\xf1yC\xb4\xef\xcf{\x02\xd0#\xef\x06\t\x15=\x7fe\x9f\xde\xb0\x81\xe2\xe1\x9c\xba\xc8y\xf3\xd0r\x02H\x8cT\x9e\x98\x9e\xe6\xa4bp\x96+G\x18\x8c:\xe4\xb1\xd8\xf5\xc9lLM\x04\x13\xac\x1f\x17\t\xd2\xfarz\x0e\x1f\x9c\xd9\x7fi\x9f\xa2\xe6\xb0\xa4\x83\xfb\xfa\xab\xb9:\xbbo\xacv\x1c\xed\x8f\x928F$\xd9o\xdf\xd3\xf9\x16\xf5_\x04mi\x98\x8d^\xbd\x18\xad7\tLk\xed\xc0BBC\xa7\xbdW\x1c\xbb\x9f\xa1')
1
+ from .VERSION import __version__
2
+ from . import Events
3
+ from .base import create_app, create_app_wsgi
4
+ from . import panel
5
+ __all__ = ["create_app", "create_app_wsgi","create_cli_app"]
6
+
7
+ # application = create_app_wsgi()
4
8
  #واقعا برای 5 دلار میخوای کرک میکنی؟ حاجی ارزش وقت خودت بیشتره
5
9
  #Email hiddify@gmail.com for free permium version. Do not crack this cheap product
hiddifypanel/__main__.py CHANGED
@@ -1,5 +1,15 @@
1
- # 2023-04-08T15:11:11.700973
2
- from pyarmor_runtime_000000 import __pyarmor__
3
- __pyarmor__(__name__, __file__, b'PY000000\x00\x03\x0b\x00\xa7\r\r\n\x80\x00\x01\x00\x08\x00\x00\x00\x04\x00\x00\x00@\x00\x00\x00\xb6\x03\x00\x00\x12\t\x04\x00\x1c(\x10\xb6\x15o0{=h\xed\xed\x86\xa1YY\x00\x00\x00\x00\x00\x00\x00\x00\x9eXO\x0c\xd4\x01\x95L\xbdL\xba\x83\x85\xc9x\xd2\xb4\xea\xd9\xe4\x92o\x8aw\xc0L\x9dz\x12h\xbanl\x0f\xb1c\xdc\x99\x036\x9b\xd2\xf9\n\x06\xff\xa5/\xb0$]\xdd\xe06J\xfb\x9a\xf64~Y\xdd\xf2\xf8\xdeK5\x165\xd3Z\xae\x9b\xf5\xb8)\xca7l\xd9fr\xb7\xa5\x9f\xb7\x10\xc6\xdb\xa8\xc7\x88\xe9\nOk\xb4:\xbe<\xc0\x9e\xf6\xc1\xf8{\xaag\xcf\xf2\xc3\x18fq\x1c/\x9d\x91l\xd3}\xf8\x067\xbc\x87\xda\x8e}\xfc\xd9\x0f\xa5\xe8\xf9j\x11\xc7\x86\xbb\x06py\x17!\xa6\xb2\xaeNN]\xde\t\xfc\xe398\xc0\x86\x9d\xb8\x0e2\xdeK\xa87yF\x1b\xe3\xe2t/k\x11:")\xac\xee>.(\xc4\x01b\'\x0c\x0f>=\xc0v\x92(\xf5\x19)\x1a\xd7F\xbc,\x9a\x90\xa9\x0eY\x9c\x1a\x8e\xde\xd8\x0eR\xcc\x06z\xd7\xcfr\xe4\x0f\xfe\xb2\'i]\xb3&\x07\xd8\x94W\x84\xff\x8d92\xa9"TEd\xc5\x8c\xfd\x1c5\x04DSzi:\xc7\xcf\xb0\xc2y\x82\xaf\xeb_\xb7\x19\x93\x89\x85\x83\xe8\x0f\x18\xbd@\x19\xf228\xb9\xd0]\x80y=\xc5\xf7`\x10J\x03D\x10\xd8f\xbb\xb8\xb4\x9dR\xb8@ni\xdb\x06\x8f^\xffd\xd80!\x87%\xec\xfd\xb2`b\x19\xf7\xa0\xf9q\xbb\x1e\xc3\xfc\x8d\x8b>\x95\xf6~\xc0\x17o\xba7\xf0\xa3\xd0w\xda\xc2\x98\x04\x1d\x0fA\x08\x88j\x8e\xb64\xcb\xc3\xe3kV\xd8>\xfb\x18x\xf3x\xaf\xa6!\xe3\xbb\xff\xa1z\xe1\x1e\x8e\x95\xddW*\x10z\xab3_(\xc02Ak\x83X\xe1vD\x9453\xa4\x83"M\xa8\xa89\x89\xe1\x8c\n\x18\x9cak\xd8\xe2\x8a1\xff){\xd4\xc5\x92J\x10\xdc\xc2\x1e^\xdd\x87\x04\xbbt\xb3\xc2\x9cA\x87\xc4Y\xdcV:\xd5\xda\xbc\xa5\x9aIN\xa3\xc8s\xa7W\x94\xe0\xab+\t\xfa\x06p\xdc\xad\xbb\x18\xf6<\xb5d]\xf7A\n\x0f.4\x0e\xff\xc5(\nt\x8a\x91TL\xc9\xda\x11%\xdd\xa4\xe5\xcf\x92\xe3\x86G\xd3\x9f\xfb-2\x99\xad\xbe\x85\xc3\x88\xfe\xb6\xd3*\xbb\x8f\xe6\xcc\xebQ\x9c9\xfa&v\x8b\xc8ch\x81\r\xb3g\x12f\xb9lQ&\xe2\xe3\xebU\xef\xa8Fh\xe5S\x8ef\xf8\xd7\x82\xa5\x1d/\x16\xf8Im\xddT\xb7&f\xd4\x86\x12\x14\xfdu:q\xbb\x02\xf0\x00\xe2XQ\xf8\x92\xe3\x11E\r\x19 \xf6\xba\x0c\xe8(_\tv\xafy\xd7\x9c\x8a\x87\x87\xdaF\xd3\xc0\xe2\x1e/\x8bQ\xa4/\xbeV\x16\xb3v\x94P\x11\x10\x91/\xd1^S@\xe2\xa2\x0bS\x1c\xc4\xa6\x1ah\xbbb\xe2\x7f\xffIT\x8f\x94\x7f]m\x16\x1d\x93\x9b\x0f\xcf\xab\xf1o\x10\xf8\xb6yl\x1a\xc3\xbc\x14\x1a\x8a:\x86\xe4\x9b\x05\xfe\x1d1\xa3g\xf3\x0c\xd8|\xc5\xc5\x15{\x0c\x98\x91\xf8\xc0)\xff\xd2\x1b\xed%+H\xc8\xe7\t\x8d\xc3\x87un\xce\xc6\xc8k\x13\x04g\xb7\xe6\xd7\xf9\xe9\xf4sg,\x8a\xbe\xeeX\xe2XIw<\x8aL=\xac\xce\x0e\x0f\x01\xb3\xb7\xcb\x80\xb2d\x96\x1e\\\x16=\x8e>\xfa\xb1\x9d\xb1\xed\x02\x0e\xa6H\n,\x93\x86\xe7\x859\xf9\x8c\\4\xce\x00\x12?\x96\x0c#w\x92a\xb0\xc9\x15\xe0\xfb\xb5\xa0kW\x92i\xe5\x17H+\xdf\x1d\xfb?\x97D\xff\x9c^\xc0\xa5x\xdd\x80\x8c\x14<5%\x0f\x08\xfc4\xff\x1a\n\x84\xab\xb4\x98 #\xa4\xba\x1e[\x8a\xf8\xfc\xe7\xb1S\xebq\xd4\xe7\x05\xf1\xf9?L\x8e\xae\xe1\x1f\x0e1\x16\x85\ns\x18]\x04\x12\x7fL\x18\xce\xb8V\x84d7\x00\xc5\xf1m&m}s\x85\xb5\xb4\xda\xc6\x88\x18\x82+\x98\x9eeUQ\x93\xd2\xfe\xfe\xcf\xae\xb8^tH\x05/@\xfc\xd2\xfa{\x98\x0c\xea7\xa8\xd0\x1c\xf4\x11\xa31\r\xaa\xb9\xeb\xeft\x94\x97T>\xf3\xbfm\x98e\xf7\xb9{')
1
+ import click
2
+ from flask.cli import FlaskGroup
3
+
4
+ from . import create_app_wsgi
5
+
6
+
7
+ @click.group(cls=FlaskGroup, create_app=create_app_wsgi)
8
+ def main():
9
+ """Management script for the hiddifypanel application."""
10
+
11
+
12
+ if __name__ == "__main__": # pragma: no cover
13
+ main()
4
14
  #واقعا برای 5 دلار میخوای کرک میکنی؟ حاجی ارزش وقت خودت بیشتره
5
15
  #Email hiddify@gmail.com for free permium version. Do not crack this cheap product
hiddifypanel/base.py CHANGED
@@ -1,5 +1,90 @@
1
- # 2023-04-08T15:11:11.721883
2
- from pyarmor_runtime_000000 import __pyarmor__
3
- __pyarmor__(__name__, __file__, b'PY000000\x00\x03\x0b\x00\xa7\r\r\n\x80\x00\x01\x00\x08\x00\x00\x00\x04\x00\x00\x00@\x00\x00\x00\x9d\x19\x00\x00\x12\t\x04\x00v\x94\x1e`\x10\xf7\n[\xd13\xf48(y\n\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x99j\xfd\x96\x98\'M\xb1\xf2\xde\x03\xcb\xf3b\n\x80\x97\x94\xf56f\xf9\xfd\xc9\x16\x05p3}\xf6\xb4\xca\xc5\n\x0e\xa7\x9e\x85<AV9\x85\x07)\xd5i\xac%>\xf9*\x08\x03\xba\xd6\xf9\xea\x8a*qNg\x9b\x187q\xfe\x0e\x11\xbbX\x10\xab\x1e\xdc\xa3\xa0\x9a8\xd1K\x8c%Y\x16\x18\xe0U*\xf3\xdaH\x12!\xef\n\x14\xa3\xb3\xe7\xc7m\xa5\xc8-A\xa1\x08\xe6\xd2x\x16;\x06\x07\xeb\xae\xd7b\xdeYQ\x139\xad\xe2\x1eG\x97\x11B\x1d\xc1\xb1\x9a*&\xad\xbdmx\xdb\xe9\x90\x17\xa9\xeb\xb29\xe5\x04\xfb\xd5\x82\\\xfbgR\xae\x91\xd1Q\xc6\xbd\xfa\x01w:\xef\xe8\xb0\n:\xe8\xbb4\x96D-)H1\xff\r_d\x16*\'\x93\xe4\xea6R\xda\xbaA-\x84\x8a\xff,\x8c\xc2\xf4\x83\\2\x01N>\x12v\x8b0"N\xe1\xb1,\x8b6\xe7\x84\xb3\xdalH0\x19?\xda-\x86\xfb\x81\xe1p\xf1\x8ajs?\xacf-U\xf5\xce\xfa\xb4\xfd\x02hi\xd9\x8f?A\x98Q\x18I\x83OV\x95?b\xd3U\x9bGb\xaa\x0c\r\xad\xc4\x86\xfd\xb9\x96K\xd7\xb4\x98JV\xd0+\xaa\x14Y\x97\xb4\x8e%\xa4\n\xe16\xca\xd1\x0b\x92\x86\xed\rif4F\xf5 \t\xeaQ\xfc\xfe\xc2u\x80\xf6\xc3&+\xfa\xcd\xed\xcet\xe7\xe4\x14\xb5f1\xd0%2\xfc5=6\xbe\xcb\x7f\x85;\xe5\xac\xddg!\x9c\xae\\UW\x13`;\xfb\xae\'^\xa0\x81\x05c\xef\xbb@,f\x9a\x96\xcbM\t\xe3\x90\x0e\xd9\xf0\xc2\xca\xb1\x19\x821@"\xf9\xfdK\xef\x07.\xf6\xac\xe1\x9d\xd9~\x1c\x08\x1c_\x8e\xba\xdd\x01\x94\xe5!\x939&d\xe0\xc0`)\xba4\x1f\ra\xc4\x0c\xfeX\x94TB\x0c::g\x9bOP\xd2\xb3x\x8b\xa5\x15\x91\x98\xfcdQ{L4a\x8ag+Sp\xe14Mim\xc4\xfc_\xdc7\x08\xbf\xd3\x8a;\xe5>\xe7>\xf6\x00\x1e\xe3k\xb6\x97\x9c\xdeLl3\xeaw\xc7\xde\xd6>\xb1\xcep\x88\xc42v\xc0uj,nQ\xe5\xb5*a\xb72\x14\xf6\xcb\xfbBj\x89\xbcO\x02+Y\x95\xb2\xf8\x9b\xebZ\xa3c\xb5=\x83\x89\x18\x02h\x96\xa4\x16?\xf7\x8d\x83\xb6p\x0c\t\x8e\xde\xb7i^\xab\xcb\xa6~A\x19\xab+\x94\xd9+l\x0bd"\x17.\xc1\xaf\x84%\xa0\xf4\xf8\x81\xaf\xa6\xf0\xa5V:^\xf4\xa7`pd\xdf\x11\xd6\xd1\xcd\xe5\x00D\xc1\xa0c\xac\x9d2%\x1c}<\x08@&4O\x06l\x90\x17_b\x9c\xa6_\x954\x04\xf2f\xe4\x0c\xd0\x05n\x0e\x81t\x90\xf2\xbf\x10\x04y%\x11\x0f\xb8\x1f\xf9E\xaa\x0f\xa5\xddWek\xe7;\xd0\xc7\xc4\xd1a\x1c\xa8\xbcc\x9ffJN \r\xcb\x94\x16\x01\xb5\xf1a\x99\\\xbc)\xa5\xf6\t2\x97%\x1b\x85\xf7\x98\x83\x05\xa0\x9dD\x82:2?\xe60m\xae\xc8\x1b`\xbc:\xda\xfc\x1f\x8a\x8c\x99\xc7\x06\xc9@\x98\xa2!\x0c\xffE_\x17&\x0b\x04\xe1?\xcc\x08;\xb4w-\xd0\x7f\xf0\xae\xb0\xda5r\xc6O|\xa2\xc1;\x8a\x83\x1ev/\xafi\x9dk\xb5\x07\x00\x9d\xa4\x86zouH\\\x11\\\x93\x18\x89\xb8\xed\xc5\x19e\xdbF\xc2\x81\xf0u\x85X-1$\xa7\xb1\x8e\xfa\xb9\x06\xaaS<\xb6S;\xd4\xeb\xa6r\re\xfd&#\xd1}P\xe6\x0b~\x9a{\xf1\xb2\xd0vF\xee#\xda5\x94\xf0>\x9cP\xe8oh\r6G\xdc\xc1mr\x0f\x8d\x056\xf7\xe9\xe8\x9cC\x94\x92.\\r\x19\xf3L\x92\xb8z\x81T\xa4\xb6F\xa9\x16\x1b\xc6%\n\x8c\xfd\xf9\xd7\xb4\xa6\x90\xa5\x9e\xeb\n\xd1\t\xb8\x7fvu\x8dh\xd3\x04w\xf8\xd0\xac{#\xb8\x9f\x0b\xd0H\xc4e\x15\x03\x9dQ\xbf \x0e\x07\xb1f\xd6}\x17\xfd:\xbb\nC\xbb_\xecw\x12=\'\xfe\xf8)\x82\x02\xbe\x98\x8e\xbd<;-\xe8\x9e\x97$-\x9a3\xb5A\x7f#\x12N\xb2z\xd8\x89\x9al4\xad\n9\x82!\xda\x12B\x05"\x89\x18\xdd\x1el~\xfd\xc6G\xf9\xa6\xb6w\x9e\xd3\xcf\xbc\x94\x8am\\\x8f\xc1\x9a\x05\xa1\xfc9\xb8Q\xf7\xa4\xeav\xcf5B\x1b\x1d\xd4\xd2\xb0\x19\xa3\xd9\xe5\x88=\xb3\x8bqH\xb7\xf8g\xe1+\x0c\xca\xb4\xdb.\x10Cj\xb9\xec\xabA\xa6\xbb\xf8\xc7",\xf7%\xbb+\x87@_\xfdNM\x81\x83G33\xd5\xe7\xd0\xd27|\xf5*\xc2\xb7?\xf5\xe2\xe6\x81\xbe\x91\xa4X\x84\x0e\x07\x13\xff\xba\xee\xd1\xe6\x8c]\xa5\xee\xf6D1@\xa9\x83\xfe\xac\xf2\x0eK#\xe9r\xd1e\xed\xffs\xc7,B\xbb\x92\xc8\x11\x8c\x83\xe2\xb4\xfd\xcf\x99lt\xa9Kl\x98\x88\xc2\x9b\xbb{\xd1\xe3jiC\xa3[\xec\x10\xc90l\x9b"\xdf\xe9\xb8\xa5\x95\x86uf\xf2\xb1\x97\xf0{^t0A\xd11sL7\xcaqu.\xfe\xbe\xfc#G\x0c\x97\xbb\xf7\x8d\xd6*\x9e\xc6\x1ej\xca\xf7\xe3\x9b\x85H\n\x1b\x82\xbe\xeeF\xdd\xd0D\x9e<\xa0[\xad\x83\xc7?\xfd\x98Q\x02\xaa\xbb\xdc\xef\xf7\xd2i_]\x8d\x8a\x14\xb0\xe0\xb1\xae\xed\xb9\xd6d.\x9c\xc5b\xfb\x0c\x18L\xe2f\x0eN\xbbG\x06\x12j\x871\x1d\x95\x92j@E9\x82\x9eU4\x7f\xf9fo)\xf4!\x9b\x96\xb5\xc8p\x8e\x15#Um\xfen\xe3\xbd\xdb\xf1\xfaE\xb6\xa2\xfe\x1f\xa6\x01ax\x1b\x91\xb9 \x02\xfcJ\xbb\xe1%\xb6L\xcf[\xc8\t\x14\x9b\x18\xe9v\xe2\xf3\xd3d\xc9~\xc0Z&\tX\xf3\x01\x1c\'i\xab\x04\xc0:4\xa3\x8e\xef\xdeI\xd5\xc2\x8e|\xf7^[\xe6\x07\xb3M\xda\x9c\x1e\xf2\xc1K\xe9o\xe3\xe5\xe1\x87\xc8\xf07\xf0\xf2\xafjf\x1a\'\xbf\x03\x03\xec\xdcl\x98@p*M\x10KT\xec\xf2\x94\x01\xf2#\x01;\xb8;\x8d\xd7#\xf2\xe5\xb7\xe5\x0b9\x1a\xe5,\rL\xc6\xe8\x13i\xbbU\xa6$r\x88\x885\xf7\xc9\xa4\x89[\n\xfe7\xb3\'\xca\x95B0\xfbY\x84}r\xd2\xe6Z\x91a\n\x0cJ\xaa2\x114\xbc\xc9\xe4\xc8)\xe4\x01.c8G\xe2h;)\x84\xf0\xc7$pG\xe5f\xc0\xb3\x84\xa9mu:=|Nwy\xd1\x80 \xde\xb9\xe1\xa6v\x0b\xd2/*\x9d>\xd23_|\xb2\xd6jB\xf8\x01\xc6\x04,Sj=\xf5\xe1U\xd3K.||\xa4QC\xe2c\xc0\x1fP4M\xdbE\xf7\xf4\x88D\xabh\xe05Pb\x91\xfciEq\xd3\xd4\xae\xfcF\x01\xd7\x10s;r\xb21\x8e\xde>^\xe9\xcc\t\xf0lL\xe4\xac\x87\xc1\x1b\xa4\'iq\x0fiH_w\x13p\xd8\x04&\xdbv\x88\xe6\xb94C\\R\xb2/\x7fM\x8fr\x99\xfd,\x11\xd1\x92\x89KJ\x9e\x1b\xd6\xc34z~\x91,\xe2\xa8:\xdb"xUX\xac\xabK\xa4\xb1\x99\x88\xc8A\x84\x15\'\xac%\xec\x89\x12\xe8\x05\xa5 z\xecx{\t`\xae\xce=%\xc0\x1b7\x05\xe5\x16\x19V\x0f\x8b\xb5m\xe2\x9ao\n\x1c\xa3mS!\xe7zST_\x81s\xbe\n\xfe\xefuBwUf\x7f\xb8\xef\x9a\xe2\x03\xb7\x03+@\x92\xb1}H\xdfB\xcd\x8eftNd\xdd\xecb\xa3:#\x96\x83Wd\xd2\x9e>c\r\x9c\xd0*\x1f8\xaa\xb8\x12\xcf\xdb\xb6`\x9aX]\xb2&\xd6\xd4\xa4\x89K\x80\xf7\xca\xef\x01yd\x12u\xf1\xf1\x14|g\xb5\x87\x82\xeeY\x8d!\xda\xc1\xf8?\xb2\x8fMK\x18\xcf\xc8\xff\x86`\x93\x99\x84L\'\xcd\xd5\xae\xb0\x8e\x11\xe9\xec\xe2\xdd!3hT\xf3\xa4\xeb)\xc1C\xc1\xe1\xda\x15\xf7\x9c\xa1;\x0b\xe9M\x1f)\xb6\xc8\xc5\tm\xb5\x11\xa5\x15p\xbdr8;\x82\x8ffg\x814\xe4{\x06\xc9#;z\x03Z\x0f)r59\xb4\xc7\xf1Z\x90m\x0b\xd2$\t}0-\x7f\xeb\x99"\xd2\xfc\xbfC\x07\xa5C\x08 h\xd7,\xcb\xc3\x96h\x1cq\xe2\xb6-\xee\xc2\xa8\x9e.\xfb|?\x8b\xaa\'\xaeO\x8d\xca_gTV\x92\x01\xa3\xaa\x17\xf9\xec\xe4\xb0Y\xa0(h\x00\xc7\x9d\xeb\x8a\xee9\x01\xdbVjE\x1a\xae\xb2\xf8[ \x10\xbb\xbd\xb4\xf0\xd9\xd5v\x9c\x15$\x0c\x83N/{\x81[\xc2\xcc\tn\xd4\x04\xcb2Mo\xff\xe6\xd0\xfb0t\xc5\xaenb\x05y\x9e\xf5\xc5\xfa\x15\xb0\x10\x85\xa3d\xe4\x86\xd5\xce!(\xd1\x00y\xcc\xdc1T\xa87\xc0\xe7\xf1\xe3\xa2\xa8|\xca\xfa\x15\xdc\x15.\xf0S\x99\x10\xba\x8a\xe1 w\xe9+\xb3\x18t>d\xa8\x013Ng\xfb^8G\x17V\x7fXo\xf7j_\x13\xc6\x03\x8d\xba8I|\nI\x94\xcc\x9c\xab\xcf,\x04i*\xb4\xc2\xce\xf2\x9cK\x19$\xd0M\t\xbb?\x1c\x9cM\xf4S\x95\xcd\xa4\x84\x85\x1bY\x8d\x81\x85%\xa2A#\xfa\xeaW\xd1k\x91\xaf\xfd\xc6&\xde\x12\xc0\x12\xf2,j<\x07\xf42Al\x97 q\x10Q\xc3\xb7\x94_KM\x06\xaf\xf2\xde\xe5\xf5\x1b\xe5Mz\xf6\xc9\x8b\xf1\xb9\xdf\x97\xe1`\xfe\x02(\t\x8b\x17\xb4\xe5\x01\xd2\xd60\x9f=\xe4\xb5#\x16n\x12\xcb\xb5\x1f\xae\x89\x82\xb9\x85\xf5\x1a~\x91p\x00\xf0[\xe9T\x18L\xa6(\x1f\xb1\x90\x91\xcf\nR\xfaU\xe3\x98\xd8\x18]!\xc4R\xd7\x1d\xfb\xec\x84\xc6`$\x1f\xc4mm\xa0\x1d\xe9P\xcb\xbf(3lL\x13\x93\xf1\x9f\xb1\t5\x03\xeb#\xbf\x04<\xee\xe7\x00\xfa\xed\xe6\xaf\xd48\xe4\rz@ o*ON~/\x9b\xa68QZb\xfc*f\xa5\xc1\xc6L| \x8eu\xb8\xb1\x0b\xa0\x00\xc1<E\xd1,\x9f\x8ede\x80;\x8bml\xbe\xc0\xfc\xa0\x0b\x07\xf3qE\xc6~M{^@yJ\x84\x07\xe5m[y[N\x8f\xa7\x10Y\x10\xbe%\x1c\xceOd\xae\x83\x1318\x99L\x82VBp\xe1\x0f\x04@v\xee`KQ\xb82\x9e\xc2\xdai\xaa.\xb0\xce\x99\xdb|%\xb8\xd0\x18-\xf3\xb4M\xa8\xb2\xe3\x93\xa9}\xc65\xdd\x16)n\x18\x10\xb8\x17D\xcc\xb2\xb82\x89\xcc:\xdb\x1c\x92\xa69\xdaL~\xe0\x9f\xf7\x99\xeb\xf9\xcb\xa8y:{\xfd)\x9b\x82i\xf5\x0cd\xc4\x81\x1eG\xc7\x93v]/@\xd0\n\xd2|G\x02^\xcc$\xbf\xf6\xe7Y\xef\xf7\x83t\tm\xf0\x8a\xbb\xce\x15\xc7Uk\x9f\x83\xfeQ\xe8}/\xe69A\xf5\xc5I\xc4\xe5d\xb4\x8e}\x81{P\xccr\x9f\xcb\x93:\x1d\xa9\x87\xf1ea\xcaQ\x9f\x07\xe9\xb5n\xe44\xac\xb4\xebJ/\x9f\x84(\tP<\xca\xe0\xa21\xfb\xb4\xf3K\xba\xfd\xf3s\xde\xe1\xa6\x15\xe6\xce\xc1\xca\xaa\xf0\xd0\x9e\x05\xec0\xf39>x\x1b\xc4b\xf4Brc\x11\xa30\x0635\x9b\x93\x0c-\xf4\xbdk\x8a,Qt\xc4\x95\x94+\x13\xab\x18!\x15M\xc4jB\xd3!4\x89\xb2\xc2X\xbc\xc1\xf9\x9c\x10\xb7DRjTgq\xd9\x881\x8b\xd9\xe0\xfe1\xdb\xf3\\\xf8\x97\x01c\xeeI\xc2,n\xb6\xef\x8ae\x9a\x0e\x96ia\xcf\x97\xdd\xc5\xb5)\xd4Y8\xe5\x81\x13\xd28\xbfn,\x016.\x03O\xc2\xfb\x93\xaer\x8bb\xd3\xdf\xe4\xa7\xb0\xa5\xd9fP\xbb\xe6N[\xe2\xe9\r\xa2\xeb\xf7}\x9e\x8dg\xf1\x86\xd4\x8b\x01 \xd9\xeb%1\x90\xbe\xc9\xd3\xe6V%\xc0\xde(\x16r\xa5\x07\'\x9e\x93c\x9e]\xcd\xb2\xbd\x9d\xff\r%\x81\xb0M\xe0GOI\x06\xe9)\xc5-\x14\xc5W\xa5Z\xa1\x16o\xca\xdcwv\x08^\xd9\xd4rw\xa5\x194\x80\x17\xc4Y.\xd7\xf2\xd8\\\xf9\xc0A\xb6#\x88\x1bt\xe5<\x9cO\x86\x97\xe0\x0f\xbfc\xdf\xac\xb5\x87\xdb\xef\xceE\xc7\xb9\x08\xfa\xd1\xf2\xc3\x87\x93\xfb\x15\x94:\xf2\xe4\xfcV\xcf\x04\xf4\x9c\x94\x95\x0bbP\x1c\xb0\xc9\x9c\xb5)\xef\x1az\x19\xb7\x81\xec\xbb\xc5\xa0f\xf5\xc9\xc3\xf2Z\xa4\xce\x03A\x9a+.`n7\x8e\xdcN\xd8\xf9\x1a\xff\x8b\x84\xf1,\x88\xd9!\t\xf1\x92\x17\xa6i \x01\x14\xd2\xdbja\x8cUm\x18o\xe9^\xb3\x1e\x10\x08\xa8\xc9\x83F\xf2d\xd7\x91\xaem\xdf6R\xf0w\xb2\xb6\xb0D?\x84\x1aVj\xae\xce\x16r\xfejA\xd1\xa0\x05\x07\xf5uX\xa9\xf0\'\x15\xe67\x16\x0bb\x08Wi)j\xb0\xae{\xe8k\xd8\x98\xa3\n\xb8\x95\xe6$\xc7hj\x07\\|\xad\x12o|5D\xbe\xa8\xb2\xefi\x1e\xf6G\xa9\xe5\xa4\x9e\xfc\xfan"\x9e\x1fj\x8et\x95\x9fg\x19\xa4\x96teq\xb9\xb8\x0c"\x01I\x8ca\xa3\xa3\xe0a\x1cP\x02\xf7"\x01\xe7J\xd5\xb0Ot\xc3\x7fI\xa5-\x07\x90\xdeGn\xaa\xc8\xae\x06\xeb\x1ao\x88zIY\xf3\\p\xda\xa0!\xc0\xd1\xc93i\xfbL\xb5\xce\xf7@\xb1\xa6\x8bw\xe7{5\xc0\xb8\xf5{\xdct\x82\xa03w\x10]@B\x865\x85>\x8d\x8d\xe4?\xfd7|\x05\xb9\xef\x98CTlB/P`\xfc\xc2\x87\x1e\xb8Z\xcb\xd5\x1a\xc6i`\x8e(u\x97\x86\x91"h\xba\x00\x0e\x0e\xd1HkEv\xe1\x11}\xaf\x97\xd4\xbas\xfb!DQ\x07}3t]&\x11x\x996\r\xc1\x00\xbe\xdb\xcaRyZ.Q<\x06,]\x90\xdf*\xc4zJ\xd9\xc1\x14\x8ff~\xbe\x84=\xceTX\xf8{\x84w\x80\xe64\x0e\xf8Y\x94*\xb2\xda[\xfc\x84\xee\xd5\xef\x08\x97\x00\xc1\xf3\xae}\x95z\xee]\xb8~\xbe9\xa1\x81\xf4\xf8\xa7B\xbe\xfe\x88\xbb\x93B\xab\x10\xb5&\xf2x\x07\xa8\xc4\xeal\\\xda?\\\x7f\xa0;\rX\xbd\xf9\x1e.Sy\x87\x8e1V\x04\x87\xcb\x7f\xfcR\xb8\x880\xc4\x9c\x027i\x18\x8b\xecG\xb5\x16\t\xea\xff\x00\x0e\xe53?\xd5\x1c\x04E\xde\xcfz\xe9\x03\xcb_m\xe9Q\x01\x1a\xca\xb2\x1c\xe9\xce\xc6h\x7f\x8e\x81\x8f\xda\x10\x93S*G\x9f8\x1c\xc1\xae\xe4\xb6\x17\x87%k?\r8\xd0\xa4\t\xe3\x81\x82\x93\x14\xbaV\xec\x1c,\xbb\x94\x03kC\x8ff\x07?X\x10\xdam\xca\xae\x82\xeb\xd5\x14\xa6_\xe2l%As\xd2n\x8cK\xc4p\xae\x9f\x7fi\xea\x84\xad~F\xe5\x8d\x13\x93j\x9c\xa5\x8d\xe0\x92\xf1\x8bd\xee\xba\xa6\x82\xcd\xdb\xebks\xe2\xdbg\xcf\x08Y?n\xd2\xb3\x03\xe6vK\x99[\xa9\xc5\x02\xb1T\xba\xdb\x03{\xc5B\xdfNa-\x81,e\x08-\xf1\xe6\x0e8W\x1c\xde\x7f\xedQG%\x04\x008\xe0Af7\x9cW\xbf\x982\xac\xe6\xa9\x05\xb1\x0f=\xff\xae\xd9F\x05\xec\xeb^\x0fEl\xd7a\xe3\x07\xf8V\x94H\x8c\x94WiO\xc0[\x8a\xd9\x13\x11e\x9b\x8az\xe8\xdb\xfb\xfbD \xba\x9c\xa9!\x9b\x18@\xa3\xd6q\xcb\x84\xd0&\x90\x8b\x9e\x00#\xbf\x14\xeaR;\xc0\x99j\xd4\xb59\xe7\x1a\xeb\x99\xac\xd5\x04>\xc5fi\x8f3\xab\xef\xa5U\xdc@\xeb\xb2\xe6a\xbe\r\xdf\xd0\xa6\xa2\xea\xba\xd4\xde\xde\xc43\xe3\xd2\x86e\xf9\xcc\xad\xb6\x85Mf\x1a\x0fBeU\x05\xf4\x15\x8aeC\xbaO\xb0\x95}\xd8vc\x0f\x18\xfb]\xe8\xff\x14\xfb\\\x0e\xf923\xaf\xe5\xf41d6aM\xb0\xba\x98d\x02\x98v\xd7\xf8[\xa5\xc4\xbc\xea\xd5\xe8\xf2`\x1e)\xa5\xa8!\xbc\x9b.SuO,\x90a*\xde\xe8\xf6\xc2\xab\x8a;\x83p\xda\xfd\xe4\x88\xe2\xe8h!#\\C+_\x05f\xffc\x0f1\xd1\xbe\x82{\xf0X\x0e\x8f\xee\xad\x01K\xa27H\xa2\xe9\x0b\xad8\tD\n\xad\xe1\xb9\xfen\x80M\xb2\xb1\x0c\xb6\x8bn\xcb4\x80\xfc\xa2(\x04\xb7\x1bz\xa0[\xbb\x98e\x0f\xf4C\xd1\xa2\xae=E\x82\x14\xf7\xe6\xed\x02\x8e\xf9\xe9\x98\x8e\x92\xf3\xe6\xfeO^;\x03\x0fy{\xdcYF\xfc\xe6M6Gr\xae<\x08\x0bgjS\xe2\xa4\x85\xf9\xfe%\xec\xddK\x90YT\xc1;\xcd\xa89\xa8\xcb\xee\x92\xcb\x1d!f\xd8a\x07\xcds\x80\xeeUjSm\xa2\xbb\x9b\x0c\x0f\x1a\x94\x187WK\xb1\xd5X\x96\xdb\x8a\x00\x97\x08\xbb\xac\xc81F\xc8\r\xb3\x0f>\x07\x80\x89\'\xe1\xca\x95\xbe\x1fi\x8a\x8e\xe6#\xa8\xfam\xd4u\xebk]>\x87\x84\x8fNz\x9c\x11#\xd1g\xbd\x9f\x96\x98\xffl9\xe4\xe6\x81w\x181\x10\r\x8c\xfd\xcaTT/\x0b\x14\x8d3\x9an%\xb9\'\xce\x9d\xfeU\xa1\x07\xcbz\x17\x85\x1f\xf8\xd8\x84 \xcc{\x12Q\xbd\xce\xa3\x9a$%\xf3i3\xd8N\xce\xfc1\x12\xe5M\xee}\x0e\xed-JLxz\x02\xf3f\xb5M\xd6\xbc5\x8eK\xd4\x97I\x8f\x86\xa7\x87\xe6SiKb\xf8\x87\x96#\xa0\x8d\x19|\x87\xeb\x05\xb1{y-\xbf\xf1L\x1d\x06\x90\xf2\x1e\x1e\xdd\xf4\x01\x0f:R\xaeE^_\xb1\xd5\xa7\x1b0\x86\xd5\xad\x96Z\xfbr\xd9\x1f?\xfc\x91\xf9\x957\xc2\xab\x8f<\xc0/\x14\x1a\x932/[\x87\xaeE\x89\x82!*\xf7Tp\xed\x1f\xedw\xda,l\xefJ}\x080\xea\xd1f\x161\xcd\xb4\xea\xc81\xf2\xb1-\xf1[\xf4ZWV\xef\x1a\xe2s@(\xc5G\xf7\xa9\xf0\xf8\x1b\x19@\x07$\xcb\xf3\x1e\x1aG\xda\xcf\xa1Nu\xa5\r\x1b\xd1\xf19sR\xc6l\x87F\xea\x8aR<\xc8\x1dN\xdfB\x00K\x12\xd5\xa9!-\xb5P\xf0\xc9]\xccO\x1c\xcfx\xc0\xe2)\xd6\x18\x9b\x87S^:\r\xd7W\xdc\xd0\xd0RS\xe7\xb3y \xee\xce\xfc#\xc4=Q\xaf\xefE\xb9"(IJ\xfdO\x0b\xb6\x1d\xff\x9d\xf1\x01\xa4\xc4\xc6\xce\r\xbf\xde\x04\x87}\x8a\x1a\x9e\x9d\xd8\xd1\xfbR\xc6\xaf\x14*H\xab\x8b\x1c\x1cR\xc3\x9a_N\x85~\xc7P\xf6\x01\xea\xa1\xa4\x86\xed\xa5=\\.\x05?>\x89\xe96!\xc1R\x19<\x0f\xa4K\x18o\x10\xd9\x1f\xfc\x1c\x886\xcc\xc3\x19%\x14\x11\xa7Q\x86y\x86\x9d\x95\xce\xc8\xc5\xaa\x9c\x07\x7fj\xbf\x81\xd9\x8efE\xad\'\x95\xfe\x9e\x93\xed\xb7\xca-\xd3pi\xb9\xa6\xdd\xea\xfe\x03J\x8f\xcbu\x1c\xa7n\xea\xf4l\xb3\xa2[\xe0\xc5\xf3E\xbf\x9e\x89\xc0\x8a\xa2\xae#\x91\xd2\xba\x15~gTFW\xb0,O\xa4U8\x9d\xbb@g2<\x95\x7f\xdd\xe6\x08\xb0pr\xce\xf1\xfe>\xfbpG\x83\xb1\xc6V\tl/\xb7\xc38\x7f\xcf\x97\xc4B\xd8\x0c\xae\xf3\xd0\x00+i\xfbc\xd03\xda\xa0\x8c\xa58\xb9$?\x85)\xc7\x8c\xea\x91|\x8eE\x84\x96\xdb\x90-/g[\x94=\xb2?\xa2\xb8\x13R&p\x1e\xa3\x83xc\x135\x92\xaa+\xc1S\x90\'\xc7\xefw\x99\xd56\x17\x00m\xf9\x8ad\x13$\x17\x85\x1b\xb0O\xf4.\xc9\x94\x80\x9f\x8ak\x95Q\x84\xeb\x04\x9c\xdab\t\xaf\x84\x05\xf8D\xc3q^|\x85\xd0\xc2W\t\xbco\xdc)\x9bR\x12\xd0\xab\x03O\xdc\x05%\xe2\xe1\xb6\x10P\xe0\t\x03\xb6\xec\x00\n\x9e\x96\xb1\x18\xc7\x91\xbf{\xcd\xa2\x0czc\x9f.\x87\xe4\xa80\x811\x94\xbb\xe7\xbc\xf0L\xcc\xcb\x19\xc2\xeb\x87\xcd#\xca\xf8\xb42\xd6\x96\x96`@\xa2QW\xe4\x8f\x00&{\xc1\xb3d\x81]\xa3\x96$\xdf_\x01\xe6\xadW!2c\xd0\xde2\xcb\x96N\xfe\xfds\xf2\xdf\xb8\xb8\xfa_c\xeb\xa2pa\xb9\xdc(\xafUe\xcb7\xda\xea\x11\x98\xbc\xd2[t\x01\x03p+\x0f\xe5\xd4}\x17\xfe\x03\x1e5\xcc\xdf\xf6_gn`\x0e\xa6\xeb\xcf\x80\xe7\xa0\xb7\x19\x89\xae\xda}\xe0Bm\xf1\xa0\xa8\x92\x15\x81H\xc6\x06M\x9c\xc0\xdc)\x8d\xee>\xb7S_\xf8\x97#\xb3sA%"\x87/\xdc\xb7\x14\xef\xb6\xa7\xb7$\r\xb6\xc9a\xfc\x14\r\xe5\xcby\x1b\xf1n\x8a*\x9e&\x80Kr\xdd\xa5\xf5m\x9c>\xc2L\x0b\xcf\xe8:\x01\xe1\xdf\x13\xa4\xc4\x89\xcc\xd0V\xe6e\xbb\xe5\x88\x02\x89<E\xad\xb1\xd3&MR\x8c?\xcb\xe5\x19\x95\\\xbf\xf4\xc9\x0c\x11"0\x1aG\xc1$\xcdG\xd8r\xafGn\x91\x8c2\x16\x82\xe5e\xc2\xf6\xbc\xe8|\xc0\x06\x7f\xe7\x08\xc2Q\xee=\x9a2`j\xc1\x86\x84\x8a\xc1\xf5>Hz\x17Hr\x00\xfb\x06N\x07\x17b\xd9\xa6\xc7w9\x16\xaa\x8bca\x0e\xde&\xa2\xd1\x1e\n\xe3v\x8d\x89\x0e\xc2\x9c\x81\xe9`\x99\xa4\x03\xb7\x87\xb0<\xbd\xe5\xa8(\x8eA9T(\xad\x08\xc0\x05:\x0f<\xd2\x1e\x8d\x00\x03<K"\x93\xf4\xbb\x94\x14\x96\xae\x90\xec\xe9\xea\xa1\x98\xd1\xf9\x8f\xf6\xeb2\xc2\x1e\xb4\x92E\x8e$\x0f,\x8c\xc3\xdey\x1d\x9d\xc6R7"\x9e$\xda\xcc>-i\xf1\x8a\x1a\xcd\x98\xe7)\x06\xb3\x06\xaaB4K{\xf7\xdfe\xcd\x0f\xf1\xb8\xa8\xcc?M\x84\xf7fP\x86\x86\xf57\x01\xdb\x96\x00d)\xd1s\xde\xdfhOk\xe7\xaa\x06\xe4\x7f\xa1\xfe\x02l\xd4\x12\xc6\xbd\xff\xfcLm\xaeJ\xc7\\\xa4u\\8\xaf\x8cC\xfabG5\xe2\x8a\xf8\xeb\x9e\xb1\xbb\xbf#\xe4m-\xc1{`\x1f\xecb_\xe4\xc3*\xe7\xee]\x80\xe5\x17\xbaQh^r\xd3\xce\x1b\xf2i\xe7B\x0f=\xffa\x03ja\xfd\xdbm\xf4h\xfe\x9d9\xc5\x88\x1b3\x87\xff\x80\x9e\x9a\x8d\xcai\x10\xee\xb5\x8f^\x92\xb9\x86\x02\xa8\xe7\x01\x8f\x94\xcc\xcf5\x156\xed\x95\x8c\x8d\x89\x9b(X\xca\xf1\x86\x01\r\r\r\xb5\x05\x7f\'\xf5Z\x00\xa6\xb8"\xe1\xb5\xa5-:s[\xa7\x8a\xea\xae\x94\x9f\xb8\xff\xf06\xb9\xbe\x12\x08\x90\xdc\xc2z\n\xbc\xe0\x92*\x98\x13\xa1\xf9\x95i\xccaD\xf1\xb7\xc4\xcc\xda\x00\x88\xf4d\x7f\x85}y\x85s\xec`#\xf4\x14\xb31\x01!\xc0(D]m\xfd\xa0Oq\x08\x91\x02\xcf\xc0\x10Q\xcf&\x9c\xa3\xbf%bQ\xa2\xd7S\x93\xd2\x01\x96f\x107mps\x04\xf3d\xee\x01{?o\xbalY\x1e\x1f $T\xe1R~\xbf\xe9\xdf\xbd\xa6\xb8\xf9w\xe5>\xa0\xabP,#Da\x8f\x8e\xa9\xf1u\xc4]\x1f\x0c e(\xd3\x83O\x97\xb6\x98\xe2\x90\x86O\x8a|\xf3\xfeP\x89\xd7\xdf\xfc;\xa0\xfc\x89\xcd\xfa)\xb8A\xf2^\x11"\x0b\x16xE\x16\x98\\Z\x8d\x86\x85P\xe9\xdb\xec\x98^\xc29\xe9d{\x1d\x9c\x9b\xc4\xc2P2w*\x11\x8for}6\xf4\xfc\xa4K\xcdj\xe2_\x03^^\x9c]ad\x9e\xd8jL\x1a\x8b \xb7#\x00\xb0\xd0\x9c\x85\xae\x7f\xa90\xc6\xc9\x04o\xfbY\n\x8c-\x16\x12.\x84\xad\xa7\x7f\xac)\xb3\xf3\t#\xffpTH<8\x85\x91w\xc0\x93\x04Uh\xcb\xa5)\xafl"T\xcd^\x0c\x81h\xef\x8d\x01\xac\x06\xdd\xa6"lw\xff~C\xa6\xd4;\xa8ZC\x8bl]`\xad\x04v\xd6\xc7\x02\x05\xfa\x14\xf8&\xae\xe1\xc4\x00?\x07\x02D\x83\xf3\x90\x96\x83\x11\xa4\xb4\x89\xb8R\x17\xf6p+\x99=r\xfb\xabG\x19\xb2N\xfd\xcd-\x1fo@\xcf\x7f\xc6.\x0f\xbc\x81\xc1z,L\x84G+\x03\x88\x8c\x11}\x82f\xc4\xe7g\xf7OK\x08\x91\x1e1\x1b$6\xd8\t\x05v\x0c\xe8*\x8e4\xcb\'\x06\xb1W\xb6\xd5\x17\xa9+g\x85u\xec\xbb$@jL\x04\xaao-Y\r\xfd*\xd0\x8e\xa1\xcf\x8d\x8b\xfd/\x11\xb5\x8c4\xb61\xb5vL\x11%z\x80\xd4o\x02\xcd\xc6\xf4\xeaQ5X\xff%\xe3\x19\xf5=\xc3*\x12\xbb\x01\x95B\xf8\x96\x83\x0f\xc2\xed\x17\x97(/\xd7Qp?\x0eH\xaf*\xc2L/G\x07b\xf5f\xf2g\xfcx\x8a%\xcfc*Z\x1c\xbe\x98\xff\x94\xf8\n\xd8\xc3\xb9\xa3\r\x91\x93\xb3\xfc\x0en\x15\x80\xdc+\xc4:\x0f\xb6\xd9\xe1\x9e\xcbJArWiB\xe0u\xe3\x93xn\x0e\x08q\xbe\x93\xde\x83\xb4\xccZG\x06l\xb3\xbde:\x96\xed\x8e\xf9D\x92K\xc5\xe1>@#\x03\t\xe0@\x03\nk\x95&?\x07\xd7\xf9g\\-\r^\xb0\x93\x96J@\x8eU\xc7\xbe\t9\x8d\xff\x99\x8br\xd4\xff#\xf4p\x08\xad\x07\xff\xb6\xb3>0\x9a\xb2\x0f\xf9\xb4\xdb5/t\x07\xe0\x0f\xfez\xa4\xcc\xa2\xf2\x88\xf5\xe2\xe3\xd4\x98\x95\xe7\x08\xab\x93\xf2\x85\xe8\x87\xdf\x8cz7\x8d@\nPr\xf6\x7f\x03Q\x9d\xb5jvf\x87?\xba\x91\x0bps\x8e\x7fS\xc1\xda\x18O\xeb\xed\xf3L\x8b\xd0d\xea6\xb9f\xb8\x0b\xe3L\xc0RJ\xcam\xe5\x17\xed7\xdf:\x10\xe3\xf3\xcc`\x0b\xf7\x1f@\xa6%l\xbe\xa9\xbd\xed*\xe3C\xbd[\x8f\x0e\xdd\xd7:\xeb\xbb\x1c\xbe\x93\xd6\x8c5Dt.\x8c\x08\xa1\x05\xea0)\n\x1d\xee\xd4\xee1[Pzg\xc0\xc3\x86\rZ[Y\x17Wt\xab\xce\xb5\\\xa2\x98Di:\xe8nb\xea\xa6\x00\xc3\x86\x0f\xfd.F\xad0o\x96=\xee47\xaap\xbe\xa5xE_\xf2{\xd5\x86I\x0cF\xb8\xe6\xabtD\x9f6^\xc0\x7f\x9f}q\xa4-C\xb3f\x15,\xd5\xf7\x87\xc5WO\x07\x84\xac\xc2|\xea\xecjE\xb9\xc1\xf8.rb\x89\x07H\xbd\x85\xba\xda\x0fU\xa6\x87\xd8\x07\'\xe2N\xd2\xa1_\x95p3\x0b\xe3;$\xd0\xb3\x8f\xd7Q\x9f\x1e\x0f"48#\x0bQ;\x0b\x82\t=\xc8d\x9d\xdc\xd7\xc4\x9a\x96\xd8pjL\xa3\x92\x1cb\xa6\xd4\x8e1\xe7\xa6\xdd\xf6\x18{\x98\x1b\xfb\x15\xa4;\x88\xd0\xfc\xb7\xd4\xe5Z\xa3\x05xdW\xf5\xfaE\xb4\xf5\xbcM\xaa\xae\xe8\xf1\x1a(\xe0\x0c\x87\xd3\xb2\x7f\xba07\xa9z\xdd\xd3\x87\xa8\x9b\x92\x86\x95\xff\xa0\xd92QMG\xb5\xff;\xe8o!x\x1f\x0f&\xa0\xe6\x86zty\x98\xce[\x88\x91\x9ex\xc7\xa8{\xc8nG~YwqN\xf8\xec\x88e-\x95\xbf\x1e\x1bB\xccY\x81`\x89\x07\xdd\xbc\\H}]\xcc\xab\x9a\xfa\x96\x9a\x87\x0c7\xf3\xbd\xa9@jPRZ\x08\xfc\xb3\xf8\xbcN\xca0BO\xb8m^2\xee\xee\xa7\xad[\xb5\x9b\xad>\xbb\xcc\xf9\xa7\xba\x93\xd4\xea;\rPmf\xaf\x94u>,B6h6\x88l\xf5\x96\x14\xd0\x8f\x89YA\xd9]h\xf1c\x0b\x94O\xccb\xe5\x17\xc3\x8b\xbb\xba\xda\x01\xc8\xcc\xcc{\xe1{\xd8z\xb0\xfb\xac:c(\x91\xeb\x97\xfd\xbc\xb9^D\x89\xfb\x17@\xca\xe7\x80\xbb\x1f\xfc\xe6\x98\x08\xcd\xb2\xe7\xa6\xceDm\x05\xbc`"\xae\xfbA\x15YcyS~fty\xa2\\\xdfU\xc3\n6&\r*\xa0\xef\x83<\xac\xe7[0[TC\x9b\x08\x9a)\x9f\x06\xab\xbd0\x1f\xbd\x88?\x14\x84,\xf5\xe2\xb2\x19\xda\xb7\x06D\x98.+\xe8J\xfbf\x97\x90\x86/y\xfc{\xdc\x96\xd5CT<u>\x9d\xe6BD\r\x9cK\x01v\x08Nt0d\x1b\x15Z\x8a\xb6\xd9*\xd2&\x02~\xa3\x1c\x7f\xaaQ\xa8\xf2P\xf4E\x81\x06\x86L=\x1c3\x17\x8f\xc4\x17\xf9\xcc\x19Tq\x84\x9d\x97\nv|\xcbAw\x10\x17c\x9c\xca"\xe1\xf8\x14B\xce\xfa\x94T`;?EY\x80p\xc0\xa0\xd1<5\xdb\x90fA\xdf\xc7')
1
+ import flask_bootstrap
2
+ import hiddifypanel
3
+ from dynaconf import FlaskDynaconf
4
+ from flask import Flask, request, g
5
+ from flask_babelex import Babel
6
+ from hiddifypanel.panel.init_db import init_db
7
+ import hiddifypanel
8
+ from hiddifypanel.models import *
9
+ from dotenv import dotenv_values
10
+ def create_app(cli=False,**config):
11
+ app = Flask(__name__, static_url_path="/<proxy_path>/static/", instance_relative_config=True)
12
+ import os
13
+ # os.environ['DOTENV_PATH']="/opt/vscode/workspace/HiddifyPanel/"
14
+ # FlaskDynaconf(app,load_dotenv=False)
15
+ for c,v in dotenv_values('app.cfg').items():
16
+ if v.isdecimal():
17
+ v= int(v)
18
+ else:
19
+ v=True if v.lower()=="true" else (False if v.lower()=="false" else v)
20
+
21
+
22
+ app.config[c]=v
23
+
24
+
25
+ app.jinja_env.line_statement_prefix = '%'
26
+ app.is_cli=cli
27
+ flask_bootstrap.Bootstrap4(app)
28
+ hiddifypanel.panel.database.init_app(app)
29
+ with app.app_context():
30
+ init_db()
31
+
32
+
33
+ hiddifypanel.panel.common.init_app(app)
34
+ hiddifypanel.panel.admin.init_app(app)
35
+ hiddifypanel.panel.user.init_app(app)
36
+ hiddifypanel.panel.cli.init_app(app)
37
+ hiddifypanel.panel.commercial.init_app(app)
38
+
39
+ app.config.update(config) # Override with passed config
40
+ app.config['WTF_CSRF_CHECK_DEFAULT'] = False
41
+
42
+ babel = Babel(app)
43
+
44
+ @babel.localeselector
45
+ def get_locale():
46
+ # Put your logic here. Application can store locale in
47
+ # user profile, cookie, session, etc.
48
+ from hiddifypanel.models import ConfigEnum, hconfig
49
+ if "admin" in request.base_url:
50
+ g.locale = hconfig(ConfigEnum.admin_lang) or hconfig(ConfigEnum.lang) or 'fa'
51
+ else:
52
+ g.locale = hconfig(ConfigEnum.lang) or "fa"
53
+ return g.locale
54
+
55
+ from flask_wtf.csrf import CSRFProtect
56
+
57
+ csrf = CSRFProtect(app)
58
+
59
+ @app.before_request
60
+ def check_csrf():
61
+ if "/admin/user/" in request.base_url: return
62
+ if "/admin/domain/" in request.base_url: return
63
+ if "/admin/actions/" in request.base_url: return
64
+ if "/api/v1/" in request.base_url: return
65
+ csrf.protect()
66
+
67
+ app.jinja_env.globals['get_locale'] = get_locale
68
+ app.jinja_env.globals['version'] = hiddifypanel.__version__
69
+
70
+ return app
71
+
72
+
73
+ def create_app_wsgi():
74
+ # workaround for Flask issue
75
+ # that doesn't allow **config
76
+ # to be passed to create_app
77
+ # https://github.com/pallets/flask/issues/4170
78
+ app = create_app()
79
+ return app
80
+
81
+
82
+ def create_cli_app():
83
+ # workaround for Flask issue
84
+ # that doesn't allow **config
85
+ # to be passed to create_app
86
+ # https://github.com/pallets/flask/issues/4170
87
+ app = create_app(cli=True)
88
+ return app
4
89
  #واقعا برای 5 دلار میخوای کرک میکنی؟ حاجی ارزش وقت خودت بیشتره
5
90
  #Email hiddify@gmail.com for free permium version. Do not crack this cheap product
hiddifypanel/base2.py CHANGED
@@ -1,5 +1,42 @@
1
- # 2023-04-08T15:11:11.693270
2
- from pyarmor_runtime_000000 import __pyarmor__
3
- __pyarmor__(__name__, __file__, b'PY000000\x00\x03\x0b\x00\xa7\r\r\n\x80\x00\x01\x00\x08\x00\x00\x00\x04\x00\x00\x00@\x00\x00\x00\x8a\x07\x00\x00\x12\t\x04\x00j\xfd[\xf9\x0f\x05\xde\xc6I\xc5\xaev\xd16\xdeS\x00\x00\x00\x00\x00\x00\x00\x00\xfa\xbe1\xe1Q\x99N0\x11\x1f\xb7aS\x89\x05\x10Q\x02q\'\xd7\xfdS$\xb5n\xb3\xb7\x0c\xff\x9b~\x1e\xad0=\xc4\x0c<T\x9e\'\x1a\x9a\\F\xd9w\x07=\x94\xf58\xb3\xb0\xe7\xa5\x10\xa6+\xe9\xdda~\x98\xf5\x0b\xe8\xdc\x8c\xc7\'7d\xb7>\x0cq\x96P\xb5\xe1\x9bX\xbe^\xe02\x9e\x18^\x82\xb5T}\xdb\x96\xa4x\xcbs\xba\xa3\xcdT}\xc7\xe8%\xf92\xf0,+:\x0c$F\xb6-\x8f"\x9d\x01G0\xcd\xfc\x87\x93\x8b\xe67\xca%\xc1\xaa0\xbe\x03\xc9<\xda\x15^\xdbu\x17\x11\x88\x9f^\xaf\xd7\x12\xd4\xec\xb2\xa6\xe8D\xd6/W}}\xce\xeb\x8d\xd3\x01\xab\xd4\xad8\xb7 \x18xp\x8c\xbb\x1ap\x93\xa7\n>*\xda\\Tu\xba\xe1\xf8\xe8a\xa2W:\xc6\x96\xac\xaf\xad88C\x98\\\xbd\xb2 \x15X\xbc\x941\\\x9c\xde\xde\x83\x11\xcc\xcf\xe6\xea/\xfdT\xe8:\x8eql\xae\xdd~\xd9\xe3\xce\xeaD\xe3\x1e*\xea\xe3\x95kd%\x9edZ3\x18\xd0\xdemD\xb5\x1a\xf8\xfe\x0b\x04\xc7\xa2\xfa\x90\xb9\x19\xe1\xbf\x93j\x03\x9d\x8a\xfb\x96\xf2Q\xd4\x12\xa9\xc6\x16\xa8Qhf\xe6\xa8\x0b|7]V\n\x0f\x11\xb0\x0f\xb8\xb7g k\x89\xdf2\xdbO1\x13\xb385\t\xc3\n\xb5%\x9f\x16\xc9"\x15\x80)\xe2{3F\xac\x87#x\x8bk\x03\xbea\xff\xbcu*\x18GT\x01\x9f\x1c\xfap\xd7\xd6\x0e\x13\xd8\xe7\xd8/8%\x12\r\x0e\xec\xee\x1e\xef\x0c\x91f[\xac{y\xeb\xa0\x9b\x1f\x97\xa7o\xfa\xb8\t\xc5\xc4\xa69\xf0\x8b\x12\xf0\xb6\x80<\x86\xa5n\xa2\xf8\x82=7;i\x0f\xdb#"\xcd\x89\xdc\xa4\xc6\xc2B+a\xdc\xe2\xd8\xd2T\x1b\xa4y\xe7\xec\xd3\x80\xd1\x01N\x00N\x0e(\x9eW\x18/\x15\xc2\xd7,\xb3\x15\xb9.\xb0\xc42\xdc\xab\xeb\xe8e\x96\x16\x87\xbe\x1d<\x8f\x9b\x10wF\xed\x8b\xae~2\x84\x91\x17a[\xca"\x84\xc9\xf41)\x02i\x93%\x93\xa2\xe8F\x1f\x9b\xc4=\x04\x9e:\x95\x8e\xa6f\xb9d\x17\x1f\r\xf8\x81\xcd\xfaZY\xd70\x08\x0c\xb5\x1f3!\xb2\x8d7_\t\xf2\x82"\x94\xac|\xae\xb2\xc0NUS\xd0/\x92j\xd4\x84\xf4-\xd3\x1681J\xc6\xe5\x89\x07Bc\xd4\xd5n\xd9\xc0\xe9\xd7\xaba3-2\xd0\x1d\xb8\xcb\xecpfW\xab\xa7\t\xdb#R.\xadE\x07\xa7m\xddC\x90PWP\x95\x83\x82S\xc9%\\\x97\x86\xe9\x8dA\x11\xec\x16\xc6ibj\xbf\x84\'\xca\xfe\xcf:\xda\x03\xa3\x9c\xb1\x15\xa7\xd75\x01\xb1\xbe=\xe1\xe9\r\xbd\xd1\x81fG4\x94\x03c\xadv[$ p\x10\xe9\xba\x1c\xca\xa6\xb1\x97\\ \xb5A\xcc!\xe6\xd6\x06\\\xfaC\xb4\xd3\xe1\xeee\xd4gK\xb9}\xde\x9e\x8a\xf29i\x0edi\xc9[s\x0c\x9d\xa8\xc7\xd0\xe7>C\x99w\x0f&{\xef\x8522\x99S\r\xd8\\\xe5^\xbdB\xd38\xcb%\xb8\xe8\xed\x1d\xd8\xeb\xa4\x90\x17\xf5\xfeD\xd7\xad\x89\x04\xd9E\x86\n\xfb\xfb#u1e@y6\x94\x81\xdeH\xd8\xa4\xa2\x995;V\x1c\xc1@\xf5-@\xa1\xbfF\x8c)\xe4\xc3\xbdF\xd0\xa2]\xbf\xb5B\x9a\x9a\xdd\xf1\x18\xe6\x81\xe3k(n\xd2\x8f<)\x9f\xafJ\xcb\x1e\xf5\x1c\\\x98m~\x06\x8d\xd5\x84\xb4\xda\x10\xbd\xb4\x06\xb0iz\xbc\xde-r\x0b\xc4\xd3\xa6\x8d\xf8\\;\x81\x91\xf9B\x00\x9d2To\xd5\x05\xa4l\xf5\xe6\xf2\x8c1\xde"\x85,\x1f\xa3\xfa\xe5)_\xae\xe7\x00\xae\x9a\x7f\xc0\x93\x08-6\xbe"\xf7\xe2*o\xff\x17\xff\xad\xf0i\x90\xadY\xadz\x8b\xc4\x1d/\x1d\xab\xe8\x96\x9fl \xa8\xf5V\x02y230 >\x9deW|\xea\x1f\xccdT\xad\xd7\xa8\xc9\x84c\x87\xfa\xba)+\x1b\xdczZ\x85\xc1\xd4R\x1b\xd2\xf7A\xccp\xaf\xf3\xd5K\x1e\xd5\x04\x12\xb0fW\xd0:f`5\xeb\xde\x18\xc17\x8c\xfb~F>N\x1c79\xfb\xc8\xe9Aw\r=6\xb1\xe7\xbb\xddE\xda\xe6\xf2\xf2w\x83|p\x17\\d7\xad\x15^\'#]\xd3mO\xb3\x01\xaf\x8ab\x15\x12w\x82\xf4\xaa\xad\raWY\xa5\xac$\\\x12\xdd\x13\x1e\x18\xe6\xef\x81\xb9\xb5\xc0\x07J\xa3\x1d_\xa1\x1a\xcf\xee\xd5,\xa9%\xa3\\\xcb\xf0\xde^\x1a`\xd9r\x9f\xc8Q\x9dtBFi\xd7n}\xe4\xea\xc8KaP.\x9aF\x8d\x88\x87\xfb\xbc\x88tO,\x1f\x0b\xd7\xb5\xb2\xe2C\x1asq\x9d,\xb2\xa1\x1b}5\xceb\x1a\xc52\xd2;\xcc@1\x9bX\xdc]\x12\xe7)\xfa\x8d\xee?D\xb3\xa2\x0f[\xc2\xb5]]\xad1\x19\xaf\xb8\xb5\x1d\x11\x17\xb9j3\'\x94~\x06\xc9p\xe3&\x88\xd7!\xae\xe8\xd3v\x9c\xd50\x0c\xe9\xfe\x82&p(4\xd6\xd4\xbdp\xf0i\\\xc4\xda\xb8\xaas>\xf4\xeaQ\xd5{\xb8\x19,VV\xbb\r^\xdf\xac\x84aVd\x81\x91<\xcd\x18ps\x95+r\x80khu78Y\x99\xd7/6u|Y>@\xc4wM9\x9f\xb2\xd7)\x94\xc0\xca\x9b\xb12]\xd0j\xcak%\x19\xea\xda@\xb3\x0eVN\xf7\x97\xf2\xd6^\xd9\r\x8b\xf1\xd3\x1b\x87\x93D\xbb\xd12\x85\xc4\xe4;\x07\xf5]\xa9\x80U-\xa5\xa9\xa1\xa8\x8a\xf3\xc3\xc904\xee\xb4\xf8a\xe2\x87\xc5x\xf9\xdd\x1d\x9de\xd0H\x86\x82\xc8\xa7\x8e\xfdu\x9c\x9e\xc3\xa6\xe4\xefDq/ \x80@\xc1\xb5\xbf\xdc\x8b\xd2\xd2\xd6\xe3\xd6x\x15\xc2\xbdG\x83r\xf3\t\xaf\xfa\x89*D\xa6\xb3\x1f\xfe;qa1JK\xe3\xe3\xad\xe0n\xa3\x8c{\xf5\xc9\xb9\xfc\xa4\x0cd\x16Z\x8f%\x8a\xf0e#\x10\x81Y\xee\x18U\xc98ag\x03\x082\xdb\xcfk\xfa\xc3\x8e\x17\xf8\x0f\xd0\x92\n\xa3\xba\xafx\x12\xd8R)Q\xf5Q\xbc[\x9d3G\xda\xf6Cfy\xc1\xc6d\xd6\n\\\x00iG\x03`\xd7Cc\xda\xa2{\x12\xd6\xe4\x14\x820\xfe\xdc\xdbr\x80*\x03,t\x1d\xe6\xde\xfctC-\xf9\xf2\xf9\x05\t\x19\xd9Bg\x7f\xe7\x0bg\x9d\x83\xfa}>\x00\x1c\xe2Sy\xfe0\x82n\x9d\xd6\x88o\xf6\xe0H\xfe\x8d\xf3G\x99g\xc2\x01\xd8\x88\xc8\x8e\xc7\x06\x021a\x15@/:\xec\xd0Fo\n\xdaC\xebcD!\xd4":G\xa7\xfd\x07\x84\xe8u\xc9SW\x12m\x1d\xda%\'\x95\xed\xb3\xf4?\xe5\x1c\x14\x14\x1d\xce\x05X\xb6`\th\xe9U\xd1\x00\xba\xffi,\xf2\x9cS\x90\x8d\x1d\xa0+\xb5cj\x11\x1a\xf0\xedsM\x0f7s\x0fb\xa9\x0f\x81\x12\r\x9f\xbc\xa2\xd9Dz\xe6G\x0b\xd0\xfb\xfa2\xf6{\x9b\x82\x81\x9dO\xf6gAQm\x92\xe1\x81P\xc8\x1b\x0c\xbc=M\xc1\xa1\xb5\xec5\x84d\xa0\x94\xcd\xf2&\xaek\xf0\xb6\xfbC\x08\xcazl\xf2\x92A\xd5\\\xb1.mH\xafi\xa1.\xbfIFpu_\x12\x0f\xdb\xad\x8c\xc8\xffM$\xe2\xfc\xfa\xf6\xef\xaeO\x8d\n\x80\x87\x85fn\x19\xf6T\xa6\xaab\xc7\xeab\x9bk\'m\x968\x8b\xe5G\x14\x8c\x8a\xfc\x11\xfd\xed\x9a|f\x1aVNwB\xd0r\xdf\x03\xa9ND\xb3\x1d6"\x02\x8e\xf6\xdbo \xb6\x8fS\xf1\x95\x8ai\xe1\xf7N\xbc!4\xce\xd3P\xb7\xdf\xfd\x16*\xa7$3\xa3.Oeb\xa6\x0c1kOq\xe2\x1c\x9b\xbe\xa4\x1a\xf1\x99\xff\x10^-(k\xa1\xf0+\xd6\x86\x85a6\x7f\xebM\xe9\x96>\\V@\xca\x0e\xe6wK\xa1]\x10,!\xd7\xa3\xa6+\x13\x9c\xe3,\xfd\xb8\xb1\x9d\xd9\x97\x0f%\x89\xfdI\x01\xc7\xbf\x80D8wS\x9c\x13!\xc2\x15\xc8\xcf\xa6N\xe4\xff\xfb\x1c\x87\xb3F\x94\xddM\x12G\xa7\x0b&\x9aS\x86\xcbn\xd4\xb3\xd4\xb4C\x1b\xc8\xe2\xfd\xd7\xb2\xff\x8a\xaaf\x8e=\x10\xb4&\xbfj')
1
+
2
+ import os
3
+ import json
4
+ import sys
5
+ from datetime import datetime
6
+ from flask import request
7
+ from hiddifypanel.panel import hiddify,hiddify_api
8
+ from hiddifypanel.models import *
9
+ def init_app(app):
10
+ if hconfig(ConfigEnum.parent_panel):
11
+ hiddify_api.sync_child_to_parent()
12
+ @app.before_request
13
+ def test():
14
+ print(request.base_url)
15
+
16
+ pass
17
+ # print(f"{app}")
18
+ # print("Hello {}, the inference function has been successfully started".format(name))
19
+ # attribute = str(datetime.now().strftime('%m-%d-%Y'))
20
+ # response = "You license has been expired, please contact us."
21
+ # year_to_expire = int(2022)
22
+
23
+ # try:
24
+ # assert int(attribute.split('-')[-1]) == year_to_expire, response
25
+ # except AssertionError as e:
26
+ # print(response)
27
+ # sys.exit()
28
+
29
+ # # Replace your main code to operate here.
30
+ # # if the above assertion is True, it will reach until this point, otherwise it will stop in the previous line.
31
+
32
+ # if tag:
33
+ # print("inference function has been completed successfully")
34
+ # return True
35
+ # else:
36
+ # return False
37
+
38
+
39
+ # if __name__ == "__main__":
40
+ # _ = inference(name="Bala")
4
41
  #واقعا برای 5 دلار میخوای کرک میکنی؟ حاجی ارزش وقت خودت بیشتره
5
42
  #Email hiddify@gmail.com for free permium version. Do not crack this cheap product
@@ -1,5 +1,12 @@
1
- # 2023-04-08T15:11:11.794166
2
- from pyarmor_runtime_000000 import __pyarmor__
3
- __pyarmor__(__name__, __file__, b'PY000000\x00\x03\x0b\x00\xa7\r\r\n\x80\x00\x01\x00\x08\x00\x00\x00\x04\x00\x00\x00@\x00\x00\x00\xb4\x06\x00\x00\x12\t\x04\x00K\xfbQ\x0bS\x8e\x16\x8f\x0f3V;r.e$\x00\x00\x00\x00\x00\x00\x00\x004\xbc\'\xcf\xca\x87\xc0\xeel\xe8?11\xab>z\xe1\xf2\x1c\xe4\xab\x16\x9bJ\r\xcf\xb5\x0e\xa8u\xdb\x04\xe8\xb9+tH?\x7f\x9c\x18\x80\x13\xf6r\x81\x8fz\xc7\x12mtD\x1c\x1b\xc9\x7f\xad2apCk\xbel&\xec}\xa7\xb9\x1e\xcb\xbf\xd2\t\xb0\xf0A\x07E?\x87 \xf0\x87Ffl\x98\x10\x00\xdf,\x19?JYu]\xd2\xacQV\xd0\x18\xac\xac\x1f\x89\x0cL\xdc\xcd\xf7\xa7\xf6\x89\xd2\x0f\xb0>\x816>\x18>\x0f\xa6\x93\xb6\xc8\x0b\xb8E\xbc\xea\x1d\xb5`\xd5\xca\xeeK\xe5\x0f\x0fa%G\x92\xa7 \x8aN\x1d0\xf0U__\x99\xf1Uz\xc6\x9d\xe6M6l\xc2\x032\x8dh\x17h\xff)\xfdt\xd5\xd9\x03%\xc8\xf9\xdf\xe4\xb9\xc3PLOW\xa3\xb2(f\x02\x1d\x8e{`\xc1ha\xc7\xc18Q\x9c\xa7\x97D\x85\xbf~)\x0f\xf7G\x02\xcfe\xba\xfb\x99s\x9b\r\xe0\x18\x10\xd3\xbc\x16j\xbc\xcf\xcdO\x0c\x9b\xa7#\x80\x8al\x85$\xd4\xd0\xe4\xce\x00\xcc\xa1\x89\x05\x12\xd9\x9c\xd1\x06\x1b\x08!\xcc\xafw\x9cW\x86F0\x00Di\x16Hq\xdd\xc4Mc("{#:\x13\xb0\xb37\xc3%\xe2\xd9XL\xbd=;\xb6&M\x7fJ\x90\xf9.\xe0\xd6\xdf\x01\xc2\r<m7\xb4\x02ou\x12\xaf\xd4\xe8\xb7\xb0\r\xa0\xde\xfcw\xcf\x91\xf22YUk\x11#Jy\x8d\x80\xcdN\xe8\x9f\x1c*jmZ\xc1\xac\x1dPp\xb5\xf1\xa3\xd9\x89\x1b\x9b\xa3\x87B\xae\xa5A\xc6z\x8fl0\xfa\xa14\xd2k\xc3\xee\xbc}\xd5^#p\xa2\xa3\xccQ:v\xd3\x062\t\x7fZ\xa3\xffy\xc9\x93\'\t\x94l:jE\xf7pJ\xf8-\xe9\x01\x01\xfc}\xfbA\xe5\x04\x81\xf9\x88\x16\'\xcdc\x06t]3\xb0 p\x92\x9c\xa6Y\xbb\x01\xf4\xf8^b\x9bTJ\xae,$\xb5\x1f\xe1\xc3\xce\x1cx\xe1~\x87F\xc6\xa1\xc2\x8b2v\x97\xe3\x8e\xd1\xc9$\xf8y\xa5x\xca\xa2\x99\x89D\x9f\x1a>\xd3\x07\x99/\xd1?\xbaQ\x95\xb8w\xddg\x0f1Nj\xc7\x90&\r\x07\xb5\xee\x7ft|u\xf3\xda\xc4\xc6T8O\x1b\xb6)4\xe6\xee"N7*\x1bY%U\xcbR\xedlv\x95Tg\xa4h\x14n\xdaC\xb2\x1cUZT\x82;zn\x8c\xa62\xc2]X\xc22\xdb\x85\xeb\x18\xdcT\x19\x15\xec\xff\xe8Bw\xe1l@\xdbJR\xb31\xac\xa6\x0b\x9e\xb5\x08\xf2a\x99\xa2\x82\'6\xf6.?\xf6\xb02\xc1<d>o\x18\xc8\x9a\xd0\x83\xf6\xcfy\xf7g&\x11\'\x90\xb8^u\xafWZ\x9f\x83\xed\xaf\x94\x96I\x15\x87\xdduD\xaa\x12\x8e\x02\xca,1\x15\xadVN=r\xf2)\xb2\xe2\x836h\xba\xf5\xf4ia!\xbf\xea\xce\xa1\xb5,O\x9cN?\xfc\x10\x9aB\xb0\xc6&\x0bz\xee\x11\xf2\x91\xbd\xf8\xa6\xe0r\x95}\xf3\x12t\x1c\xc0\xc2\xba\x8b\xf8\xae\xbd)\x05c\x8e\x91\xde-\x0b\xe4\xca-\xb2\x85\xad\xd7j-B\xf6\x05\x03\xa5tp\xcdy\x9f\xe4\xc2\x9bd\xc5@\xa4r\x9f&\xeee\xdaL\xb2\xc3b\x13\xc1\xdb\xed\x1b\x1bl>;\xf2VJ\xad5\xda+\xd2.3\x12\xb0\x8b\xe9\x7f\xbc\xefI\x1f_\xe2B\x16G\x91\x17\x0e\xb8-\x8db\x82\x8be\xe6\x83Rc\xf0\xc5\x8aw\xc0\xeb\x11\xe5\xab\xf2\xf8\x8b\x10%\xd6\xe8\x0c\xa4\xee\xec\x02\x80s\xf8\xccL\x1a\x1b\x96=\x16){\x85\xb0x\x14L\xea\'\xdb\x18\x91\x1f\xaaT\xacdPQY\x02\xe2\xec\x11\xd4\x07B\x1c\x9f\xd2\x11\xa5\'\xaa\x12\xc5\xedy\xab|\xe4\xc1\'\xfb\xe8\x95M2\x0b/\xcb\xcb#\xae\xd5\xa3q\xae\xa5\xdb<EC{\x9d\xc1\xed\x11!2,4`\x94\xd0\x8f>\xad!\xeaW\xbc\x89\x0b\xf71\xbb\xe6\x9b7\xbfB\x0f#\x9c(\xaf/\xea\xddf\x85jL\xd9\xe97\x0b\xbb\xc0\x1b=\x01(\x93\x88\x14.\x8f\x15\x82\xf6\x19\xf9-^\x05\xe3\xf5\xe3\x8a\xfe\xfd\xb6\x1ao\xc5\x14.\x92\x8d\xa8[\xe2)\xbc\xc8\xd4+\xfc;y\x9a\x98\x0e\x07\xe0\xf0:Fw\x11Q\xcc\t\xc4h/\xfd\xb6\xf7\xcc\x05\tk\xdb\x03_\xa7\x8d\xf2LjV\xa5\xe6\xb9\xc8I\xfc\xec\x1d\x93\xfc\x8b\xc0\x8c^S\x86\xac\xa7K<\x1c}}\xc7\x9e*\xb1\x08!\x1b\xd5\x0e\xb3QiU\xf3\r0\xdb\x1c\xb9~|>oJ\x04\xb7\x01\xa7\xe0\x11\xd8K;\xd9\x85\xdb\x15U\xb3.=\xa2E\x17\x08|[W\xe3\xaas7%\xc2\xe0\xc4\xd6\xf3\xaa\xbb"\x93C\xb0\x87\xa0\xf3\xeb\xc2r\xde2\t\xd0D\x98\x07\x02{H\x90*\xf5\xb5\xc9M%\xaaw\xf0\xa5\x9a\xecD\xdd@\xfb\xb5\x08t"W\x1d\x8f\xd1\x85\x1dN\xc4\xa2z\xb2d\x03\xe1`\x0c\xe4q\xce\xcd\xbb\xe1o\xc4\xa4\x1d\xa1(\xf7\x07x\xdc\xef\xf1`T\xe9T\xc5\xd9\xc7,b\xc5UA\xe0\xccU\xcev\xdc6B\xa9\x94\xf3\\q\xd5w\xb6y\xd3\x0e\xf6;\xe8\x9f\xe29\xf2\x84\x19t\xb4*\xd0F\x93\xb5\x8c\xf8\\\x97\xd1k\x8d\xb4)\xc7~)\x9e\xb8"\x90\xe5{\x91\xcf]R\xdd1\x97\xf8\xaf\x9fnt\xectO\xcd\xda\xa7\x1a\xd3V\xb7p\xcep\xfb\x8b\x1c\xe5\xfb@\xc9IC\xa0\xfc\xe5\x0f^\xf3\xee}\x8a\xbe#\xaa%r1p\x84\x9d\xac\xf2\xcf\x81\xfd\xe2ov\xd5 \xae\x17\xcf\xf5Bb\x89\xd5sA$>\x0f\x81\xf41Z2\x92\xd3\xb8\xf9i"\xb2I\x00\x83\x81\xbc\xfb\xd1F\xa0G4\x9a\xf2\xa3\xb3\t\xb9\xe6v\x0eW6.\x9d\x92b&\x9de\xba3\x81\x94\xa1\xc3h\xd0g\xb0\x80\xcfP\xea\xf7.\t\xeaO\xbb;\x88\x8eY#\xec\xc8\xfb[<\xc6\xc5\x84\xbb\xea\xa5\xf5p\xa5&Z\xa3\x0f\xaf\xe5\x7f<\x94\xbb\x8d\xa66\x0e\xd2\xdd\x18d\x1f\t\xc1yf\xd7c\xf3\x08\xd0\xb0zm\r\x8f:\xcaf\\A\xe4\xb1\xd0\xae\xbc\xed\x85\xa1\xd2p\xa3\x1b\x9b:K\x86Ba\xc9m\xd0K\xd43\x1abZv\xe1@&\x15\xe1\xd5\x86/\xc4\xc3\xc1`\x97\x15\xf5\xd1cJ\xb1u\xe9\xce\xc2t\xab$\\\x02\xc6\xca\xa6\xe0\xd0\x0b\xc8r\x0c\x03\xa5\xc0xgT\xf3\xbc\xde\x80\xcdVIY\xeeY\x88\xd8\xbe\xa2\x15\xd8\xa7\xa5-4\xfa5\xc5\x05*|\rFV\x07\x0e\xf0m\x84\xf0y\xd3tfe\xab\xaaV[Km\x9d\xe4\x86\xe2\x0f\xee`\xcf-o\xa3\xeaf\xf7s\x114\xa6\xa5\xcb\x8d\xc8\x8b@,\xa5\x1b\xc6K\xcc\xca=\xf89\xd9\x1f\x8c\x1a~\xbe\x15\xae\xfb\xffPo\xe9\xe39\x96\xf6\xba\xff\xec\x04qN\xf9\x842\xa1 \x08\x1f\x82*N\xd9\x0e\x96\xb9\t\xe6\x01\xbc\xfd\x1f&\xfbL\xa8Ho\xb1B\xdeGS\xb0u\xf5\x9d\x19\xd9\xb9\xdag\x86\x9c\x14\x8f\n\xd0\xa8\t\xaeO]\x14\xe7\x02dy\xd6\xd7\xb3\x1bL\x7f\x8f\xf0\xff\xb1Z\r\x90BS\xfd=#\xc9\xc8\xffG\xae\x90\xd4\xb8\xdb\x88\x01C\x995\x0cN\xbfF&\xb6\xe5=g\xdd\xb4')
1
+ from .config_enum import ConfigCategory,ConfigEnum
2
+ from .config import StrConfig,BoolConfig,get_hconfigs,hconfig,set_hconfig,add_or_update_config
3
+
4
+ from .domain import Domain,DomainType,ShowDomain,get_domain,get_current_proxy_domains,get_panel_domains,get_proxy_domains,get_proxy_domains_db,get_hdomains,hdomain
5
+ from .proxy import Proxy,ProxyL3,ProxyCDN,ProxyProto,ProxyTransport
6
+ from .user import User,UserMode,is_user_active,remaining_days,days_to_reset,user_by_id,user_by_uuid,add_or_update_user,user_should_reset
7
+ from .child import Child
8
+ from .usage import DailyUsage,get_daily_usage_stats
9
+
10
+
4
11
  #واقعا برای 5 دلار میخوای کرک میکنی؟ حاجی ارزش وقت خودت بیشتره
5
12
  #Email hiddify@gmail.com for free permium version. Do not crack this cheap product
@@ -1,5 +1,27 @@
1
- # 2023-04-08T15:11:11.727115
2
- from pyarmor_runtime_000000 import __pyarmor__
3
- __pyarmor__(__name__, __file__, b'PY000000\x00\x03\x0b\x00\xa7\r\r\n\x80\x00\x01\x00\x08\x00\x00\x00\x04\x00\x00\x00@\x00\x00\x00\xb1\t\x00\x00\x12\t\x04\x00\xaf\xfc\xf5/\xc6\xc6\x8aS\x83kE\\\xc4\xd8\x97\xdd\x00\x00\x00\x00\x00\x00\x00\x00\x03K\xe8}\x98\xbaQ\x17\x0f\xd3\x7f\xe19\xe6\xcc\xc0y\xbdP\xce\xdc\t\xda\x8806\x83N\x13 \xb9bd|X\x91\xa4\'\xd5\xfcRS\x85z\x85\x16\x05\xc5\xac\xf9\x0f\xbf\x9b\x80\x99\\\x0f \x84\xebw\xa2\xa4\xdc\x96\xeb\xe6\xedK\x0f\xc91\xe2z(\xc5\xa8U\xbc\xa1\xe5\xcaTK\xe3\x1d\xd9\xddF}\xe5\x1a\x95\x1b3\x8c\xf0\xa1\xa4XF\xa0"\x0c\xe1\xe2\x1fI\xa3a\xefT\x82IVDz\xc8\xe4\xb1\x8do/{\xc7A\xe4f\xd0$\xe5\xad\x05\x92\xf9\xd6!\xc1\xcf-F\x99\x99\x97aCte\xc3\r\xe0\x17\x1d\xe8\xfd\x87\xe6\xcd:\xb4^\x8b\xcc %\xe2\x02I\xa6-Hb\xb5h\xd6\x97\x16\x11\xeb\x988\x973[\x05\x8c\x05\xf1\x8cex8\x9f\x03\xed\x90\x9f\x87\xee\xcc\x8d\x8a{ ^-\xbf\xd0\xbew\x07\xa8\x93\xc9\x8e\xcc\xdb\xfeD\xb95K\xb3-\x05\xc6WC\x8a\xd1\xe1\xde\x18\xf8\xd8\x93%\xe7\xca\x90\xc2\xd7K\xa4\xbb@x\xc0\x13\xb2{\x98\xcf/\xea\xb6X\xe7I\xfa\xd5\xfb\xec\xbdh\\\xec\xd1\'\xef\xc68\xc4\xf2\xdej\xebc\xaeY\xf2v\xd9k\xe3eJV\x91\xf7\x82\x1fI\xc0\xdf\xb0\xc3\xaao_\xefcr\xa0\xfe\x17$\x12\xfb\xff\xa1\x03I\x8c\xedce\xe0S\xd2E\xf4\xf0\xa0\xc0\x8d\xfe\x0f\xbdJ\x8d\xba\xaf\x13\x87\xe3\xdf\xdd0\xd4\xe3\x05D\x0eE\xa2%<\x95\x07\xd2\xa0X\xaf\x92Lu\xc7M\xeaIws\xc8\xb8\xa4\x0f\xbd\xe05\x08/\xa2\xee?\xc0\x86\x97\xcd\x02\x95\xae,\xdc8C\xbd!\x14^\xf93\x0e,\x81[z\xdf7\xa81\xb1\xec#v\xcf\x82\x91\xb6B.\x96\x18|\x01\x04\xaet4*\xef\x16C?+\xad&1D\x0e\xa3sA\x0e&[\x8e\xf9 \xa6~;\xcc\xf6cR4\xaa=~_T\xb2\x15\xe3d\x84)\xb9\xaf5\x0e\x84?!\xc5\xe4\xf0\xeb\x90\x11\x0ca\xd8\x99\xc4\x8ba\x1e`\xe1\x94\x81=\x9c\xd6%\xbdJ?\x98O\xd6\x11\xcf|\xc7\x93/\xf0\xf0D\x14\x0c\xe4E2>/\x9c\xd0M>\xb3o\xecv.\xa9\xaa\x08L\x98\xbf\xfd\xbd,\x1c%Mx\xd0\xd9\xc5\x10\x87\x08\x00\x83\x037\x10\x90\xf0U\xbf\xc7;\xcd\x08\x11\xd3\x8d\xff~%T\xde\xe2\xc3|^\xd4[hwO\x08\x8b\x14\x06\xb5\'\xba\xbf3s\x83\xe2\x15\xac_\xf6\xa7\xbf+.\xbc\x0e\x87\xdd\x0e\xf7\xffZ\x8b"\xfc\xf5y\xbc\xca\xb6b."\x1dO8~\x1a4)\xdd\xcf\xbeV\xd9+C\x8e\xcd\xf4\xed\xb4\x0f\x17u\xad\x92\x96\xb1\xd2\x05,\xd7\xf8\x17?\xab\xaf\xe8\xf5\xc5\x06*[S\r\xcc\xb5\x02\x9c\xae\xf6B{\x1d\xcaIZ\xe2\x11\xccb\x99\xa7\xde!\x04\xef0$:\x7f\xe2\xc6<`\xe3\x8c7^\xd45\xeb\x19\'\x14\xf8\xfb\xf5\xe9\xa5f\xf8v\xfba\x06\xfd\x93\x84Cy\xc4b^\x0b\xc3n\x13\xe1i\xcf~x!\x01\x85?\xd0\xb7\xfc\xeb;}W\xe3oU\x06\xba\x15\xe7\x01g\x0f\xc8\xab\xf3<K\xcc,\xf0\xbb\xdfR\x12\x1b\xe1\xaa\xc8\x83-P\xc5\'\xe1w\x0e\xb8\xa7\x9e&9 \x08\xadr\xd1+\xee\x9e~\x9aP\x18\x08\x01\x14\\\xc25\xc0B\xdfJ\xb2\xc0.\xef\x89a\x0c\x18\xe8{l\xf3>\xba,\xf9\x93K\nt\x051\xbe\x07[\xb5\x96\xfe{jp\x19H\xdf\x1c\x86=w\x0foN\xbez\xb8\xde\xa7l.\xe3\x82\x94\x1b^\x9d<e\x13\x14\xf0js\xeb\xf0X\x94\xf2\xab O\ru\xd1\xc3\xf8aP\x1d\xa9S\xed\xa2\xbf\x92!\x0b\n\xba\xb7r\xa8\xbbyY\x02[\xae\x8d\xfc\x8c\x88\xaa\'\xf3k,!,qv\xd14\xf8\x9bW\xa5\xce.\xd5\xf5>\x81\xc8\x1a\x93\xa7db\xa8}i\xaeO7\x06Qh\xa0\xfaH@O\xfb\xe8NV\x1b\x06n\x85\xd2\xc5/\xa8C\x99,\x82\xfa\n\xf22\xe2\xf9\x87\xa1\xebr8\xde \x11FQ!\xf9X\xe4\xe72\x8c\x94\x1a\xdd\x9e\xe1\x82\xbehk\xce\x13\xca8\xe4D\x06aV.\x8e\xac*\xf6\xefK\xc5\xe3\x0c\x7f\xa7\xf2\xe6\x8f\xedro\x94\x0ec\xc0K\xf4\xf7\x14\xbc\x94\x8d\x84\xee \xf7\x1a\xc2\xc9\x0e\x0b\xa2\xd3\x99\x13a*\\`\x82PX\xf8Zf\xef\xc4\x9e\xa8+hLl\xd7Y\x13\x7f\x03\xc4>Hf\xde\xe4\xb4\x0c\x96\xb3"\x9b\xc3\x8a\xf4\xf0\x18\xe7{\x9f\xf1/\xdd}\xce\x97\xf5\xc4\rC\x1f\xdc\x8a\x92\x81\xddf\x182\xf1\x9c9\x0e\'%\xc6\x0c.\xf7\x03\'Z\xb4\xe3<q3\xe1\x11p\xb5\xd5\x98\x87\x95O\x14\xc8\xf1>\x07\xf5*){>\xa1(M\xda\x96x\xed\xc9\xe5\xe2\x11\xb0\xac\x97v3\xcf\xdbt#\x9b\xd9\x08lI\xf9\x95/\xf2\x1a\xa5\x9a6\xaca\x03Qw\x93i\xaaTU\x11O)\x0f\x0b\x80\x0e1\xe9\xba\\\x9f\xc9\xd4\xd57Y8\x10B\x16\xbeqW\xcf\xc8p\xca\x88\x9b\x9d\x86\xb6JM-\xb3\xa3\xafVU%J\xd8\xf5G\xa5\n\xd6\n\xd1\xec\xb6\xd4TL\xe4,\x12\xc9\x13BLh\xb6\x96M\xa4\xfd\xcd\xb0\x88p\xdf\x03C\xe4\x84\xe1\x1e1\xbd\x86\xbdjt]\xd3\xe2U[\xcam\x83\x87\xffyeE\xf6\x8d\x8b\xc8\x92#\x02\xefp\xe7\x1a\xe3(\xe72\xf0|\x8a\x01\xd0\x95\xac\xd1n\x19+\xdb^\xd8>V\xbe6\x1d\xa8\xe0\xcf,\xc6\x88N\x0c\x18\xa5\xf0\x1en\x18-\xe7\xa2\xd2\x8bF\x16BX\xbbH\xd4\xe3\xcb\x9d+\x1d\x18k)\xd8h f\x9c\x0b\nwW\xd6\x85\xf9\x15w\xea2zJX\x8f\xbe#\xceF\x04\x00\x04A)\xaeK"\xa9\xc7 \xda\r2\x0b\x8eI\xd3cE\xa2\x0c\xcf\xcf\xaeW\xdf\x08D\xad(\x8f\xf7\xf3.(fE\xacbP\x94\x9e\xb9\x8b?\xb5\x8b\xa9uv\xe3\x9e\xeap\x90\x00\xc1\xa7Vn\x1fBM\xf2\x98\x8b\xdb\x8e\xba"\xfc\xc8\xed\xfb\xd5\xcb\xb6\xb8]\x19\x12%\xd7\xb8X\x86\x89\xa4p(\x813\xeeS\x95\xe3\x05\xca^\xc3\xc5d\x0fC3|\x06K.\xb2\xbe\xde$\xa2\\@\xfaV|\x8b\x06\x9e\xebmx\xaaKe\x13Z\xc2\xb7H\xfb\xa8\xab]\x8e\x12=\xd0\x81\t\xa3\x18|\xe2\x06\xf1\x16\xff\xbf,\xddB\x13V+\xab\x0c\x1c\xdb\xac\xcd{\x13\xeb\xd8f\x7f?d\xa1\xb0[?\xb9\x9f\xd4\x83<4\x99\x8e\x83\xa2f\xf4\xf5\x91U\xa07\xd3l?rn\x88\x9b+\x12c!\xf9\x05\xcb|\xe3\xa1e\xe6x\x05\xb9k\xc6e\xd4\x91Y\xce[Ki\x95y\x8d\xb7\x07\x0b\x88.9\x9e\xbd\xed\x07\xbeB\x1a\x19\xe2\x80\x88e\xab\xa5\x19\xe9h\x8d7f\xe9yq3\x02U\xfb\xc8b\xc7\x8dL@\xc4Z1&\xec\x0e\xe3e|\xfes\x8e`\x1ds|U\xc6\'\xab\x87\x1e\xf1I\x86\x0bk\xeb\xb2\xce\x89\xb7>\x1d\x97`\xf5Y6\xb1q\xa4h\xb9\xbc\xe9\xe4\x9c\xea\x01\xa1i\x02\rc\xc7\xdfZ?\xaa\x1e\xc7\x12\xac\xc6\x98n\x95H\xe1\x03\xf3\xc8\xd5\xd0i\xa8\xb6\xb7\x12\xe9\xf9!Kmu\x95\x80\x01\xd1\x9f\x98\xd17}r\xd0\x85\xb1\xef\xe8\xfei:\xf3_v\xe7h\r\x9e\x1b\x1e;\x1az6\xaf\x8f\x95\x8e\xe8\xfd*\x0f\xcaX\x00\xe1\xcd]\x9a\xa71\xeb\xc5\xfehG)\xbe\x89\xfc\xa8\x95\'TF/\xfe\x1a\xfd{\x1b\xc6\x9c\x1a\x7f.|U\x9e h\x8aB#C\x8fE\x8e\x9b\xf4\x1aj\xa3\x8b\x91H\xce\x86\xbb\xd6\xdeS\x8f\xab\xa4\xb3Z\x85\x05\xc7W\xeb\x94\xeda8hE\xc5\xbcm\'\xc9r\x97\x19\xb4.\x19\x1a?\xb8\xc0F\x13\xc0B\x01\xc9e\xdfR7\x1d\\\xb9\xb0tNjU\x15\xc9`u\x03\xc6\x03LC\xe7\xa9M\xd3\xd1$K\x99\x87\xb9\xcd\xb1s\xaf\xa6)\xce\xe2\xe6\x81\x9a5!DY\xc4\x11>\xe08C\xf0#\x7f\xb40\xfa8\x0b\x95\xab\xbe\x91\x80\xedB4\xf5\xa4\r\'\xe4\xee\x0b\x0c\xf2\x84nG\xb5\xdd\xff\x1dcH\x7f-)\x85D\x9d\xbe4\x9f\xfdH\xf5Qg\xe3(\x87\xad\x0b\xe4\xf1\x07\xce\x86oh\xab\x9d\x86\xeeH\xa9G\x99-8j]\xff\rOF\xc7\xe0z@k4\xe4\xd3\xf3\xe4\x9b);\x10F|r\'\xb0\xd9\xbc\xa3\x9e\x8e+\xae\xc1\x15\'nT\x07\x1d3\xdbs\rq\xdb~.\xb0\xee5\x92\xbbY\x8a}f\x8e\'7Q\x15Y\xcb\xdb\xca\xc1J\xe9Q\xe1\x02\xc4G\x1e\xfa\x189\xc0Y\x05\x96]\x89E\xd5\xd3\xf3v\x8b\'\x12\xfe\xe4\x0e\xd1\xcf\x81X\x16\xc2\xc8\x8f\xd6d#\xa58\x00\xc6$\xf7;\x98\xa6\xdc$\xab\x1b\xa3\x95\xf6\xa8/\xbf\xed}\xa1#\tSZ\xcf\x0b\xac\xa1\xd1%\xcf9]\x1c\x1a\x92\xfb<\xc6\xd9\x05[ \xfd\x1fq\xd2)b\xe8\x96\x1c\xda\xeb\xda\r\x15`Z~A[d\x1f\x9ac5\x12\x14"oE\x99\x98+\xf5\x85]\x18\xfa>:]9,\xc2\x99T2\x1a\x19\xa1o<I\x8a\x80+\x05\xdb\xd3\xa2\x88\xe6o\xeb\xdf\x91D\xa0\xbaw!\xe3\x82\x03*2\x95\xeb%\x0en\xd53\xfd\xea\x1c\xa55]U\xd3\xb3\xaa\x95>\xf1l\xc5I\x1fdFNAh}\x12K\xf0@k>\xf3@\xcc\xa9B\x18\xa9\xee\x84T\xac?\x94uNYE.J\x0f\xd7\xf3\xfbs\xca\xdapAe\xf6\xcf\xbf*\xf2E8\xc4r\xc8\x0e\x1a\xe0Eoo\x03W\x0e^\xe7 \x9c\x83]\xc0\xca\xc3`\x86r\tN\t\xf5\xec^\xe3\x02\xa9\xd8c\x1a\xa4\x05\xba\xd6`;tox\xa78\xe3\xdb\xde\xf3q<\x91\x04\x15\xd7\n!\xe0G\x8b`yTv\xc9/Bo\xa6kF\x180\xbd\x18\x10\rI{b\x085B\xe8\x18\x16\xe9\x89.\xe5r\xba\xc1\xa2\x07D\x95V\x82\xc2\x82\x9a^w]\xb9!$\xd9\x96\x14\x9f\xe5;a\xf0\x18j\xb2\x00b\xe5\xd7\xa9`\x95\xe8\x10\x1co\xc2}k\rD.\x1cq\xdbbkK\x97\x87\x13\xa3r\xfa\x89#\xe3\x10t\x08@\xb1$\x7f7Y\xcc\x83\x96\x95k\xcd\x1b\xef0\'\x94\xc3\x02,\x01\xb7$\x8b\x13b\x1d ~\xdb\xdd\xa5\x89\xf8\x94\x84 T\xf0\xa9\xf5t+\xff\x1f\xb3\xc7\xa5\x05\x02\x97\xa3\xcdM')
4
- #واقعا برای 5 دلار میخوای کرک میکنی؟ حاجی ارزش وقت خودت بیشتره
1
+ from sqlalchemy_serializer import SerializerMixin
2
+ from flask import Flask
3
+ from flask_sqlalchemy import SQLAlchemy
4
+ from flask_admin import Admin
5
+ from flask_admin.contrib.sqla import ModelView
6
+ from wtforms import SelectMultipleField
7
+
8
+ from sqlalchemy.orm import backref
9
+
10
+ from flask import Markup
11
+ from dateutil import relativedelta
12
+ from hiddifypanel.panel.database import db
13
+ import enum
14
+ import datetime
15
+ import uuid as uuid_mod
16
+ from enum import auto
17
+ from strenum import StrEnum
18
+
19
+ class Child(db.Model, SerializerMixin):
20
+ id = db.Column(db.Integer, primary_key=True, autoincrement=True)
21
+ # ip = db.Column(db.String(200), nullable=False, unique=True)
22
+ unique_id=db.Column(db.String(200), nullable=False, unique=True)
23
+ domains = db.relationship('Domain', cascade="all,delete",backref='child')
24
+ proxies = db.relationship('Proxy', cascade="all,delete",backref='child')
25
+ boolconfigs = db.relationship('BoolConfig', cascade="all,delete",backref='child')
26
+ strconfigs = db.relationship('StrConfig', cascade="all,delete",backref='child')#واقعا برای 5 دلار میخوای کرک میکنی؟ حاجی ارزش وقت خودت بیشتره
5
27
  #Email hiddify@gmail.com for free permium version. Do not crack this cheap product
@@ -1,5 +1,106 @@
1
- # 2023-04-08T15:11:11.811512
2
- from pyarmor_runtime_000000 import __pyarmor__
3
- __pyarmor__(__name__, __file__, b'PY000000\x00\x03\x0b\x00\xa7\r\r\n\x80\x00\x01\x00\x08\x00\x00\x00\x04\x00\x00\x00@\x00\x00\x00\xb6!\x00\x00\x12\t\x04\x00/\xbdjU,\x9d\x1d\x94\xcf\xfb\x81\n\x971t\xb6\x00\x00\x00\x00\x00\x00\x00\x00\xb3\x7f9\xc2)\x007 \xf8\x91^\xdf\x12\xcc\xe2\x7fN\x89re\xd6X\x86C\xb7\xf3\xe7v\xdeM\xd6\xdb\x83\x12b\x0cG^\xf7?=E\xc0=\x1e1\xc5B\xe2=(\xca\xbf>\x89\x88\x9eL\xe8\xd9\x02b\xc9W\x06\xcf\xd3\xa3M"\x97\xf86\xc2Soi\x02\xbe\x89\xe6\xf8+s\x80\x9d\x9e\xaf\xd3y\xee+4\r\xbd\xb6@\xc3\xab\x02 `2\xc3\x01\xad5%\x03N\xd6\x16q\xf9L\xa7\x93\x8eU\x84\xaf\xaf\xb04\xb3\xfe!`\x87\x82H\xedRM\x1f\xa4\x9f\xf5\xc3\xd2\x84\xcb\x1eU\xf2\xc7F8\xdb\xbd\x03\x1b\xf0\xb3\xe0d\x8aQ\xd5PD\xe7xY\xacu/\x89\xd6\xba$\\\xder\xee\xb9\xb7\x87\xb4\x16\x1e\xc3\xce\xc7\x8a\xbb(\xcb\xd09\xd5D4\xc0\xa1\xf5x[\xdb\xd8\xfd\xf1\xbac\x1b6\xfd\x93"\xf7\x80\xc6\xbcB\xbaB\xf8\xf73|,\xaa\x9fh\xc5\xb34\x055\xef\xef\xa9\x8e\xe3\x9a\xb0\xdd\t\x91\x0e\x169S\x9aBZ\xbd~\xd7\x03q\xb0\xaf\x8c\xcf-\xf4rk:\xce#\xc46\xacF`&\\\x9a\x1b*c\x12\xa6\xe9\xe6\x92\xb5\xfe\xefTNL\xe9\xe5\xcaVo\x8d\xf7\xd6\x11\x8d\x17\xdf\x85\xee\xbcx-\xd5#\x11\xad\xb7~\xbc\x03\x83^\xb2\xee\xd6\xaa\xec\xf4\x98\xb5\xb4\x101\x9b\xc9\xa8\xf1\xab\xe6\x1b\xc8\x1cY`a&\x87\x0f\x0f\xe9,\r\x9aE\xablv$\xbbz\xe30\x8b\xd1\x01\xdd\xcb\xaa\x92\xd5&\xf0j\x96~\xba\xf8ud^F\xbc\xc4\xae\x152x\x97\xef\xb1\xddV\xf3Z\x1f\x9e\xf3\xbc\x1c[q\xce\x1f[\x1a\xcc5\x17\xcfP\xc6\xb5\xf8Z\xba@\r0\x1587\x02\x0eE^I\xac\xd2%a\xd1\x88\xa4\xb3s4\x94eC\x0b\xa4\x84\xb6\xc3\xd1\xd0I\xd1\xe5\xccL\x98\x07|\x9f\x96\xfem\x16\xf8n3\xfa\xe0d\xcd\xb8\x12\xe2\x1e\xc0\x9c\x83\x04H\x882 \x12\x83\x1cqXn\xe1UA\xdd\xdeU\x98 \xb6\x90=\xfb\xfc\x12\xc5\xba\xf3g|eB\xaf\xb7O\xbb\x97\xa3\xa8\xb3\xf4e\xad\x8ac\'\xa9"8:zyL\x85\x02\x0c\x8b"ze\xe2a\x9f\x94\xa1\xaa\xac]\xfa\xb4v\xa6\'mO\xe1\xa9j\xc1\xc7/)\x83\xe4\xd6|\xa92DH\n1\xd8\xfad\x97\xed\xc3\x8f(\xb5\xb8eNP>\x86cr\xc9\xbf\r\xc5\xfc\xe8Ed\xf5t\xfc]fG\xbe\xb2Z\xba\x1c\xfd\xde\x85\x7f=\x0f\xa0\'\xdf\x08\xe4\xe8\xcb\x0b@\x1a\xb93\x82G\xfdW]<\x0f?\xf6a\x14\xa1\xf6M\x83\x98\xd6\xa7\xe28SN\xfe\xb4\xcd\xbd""n\xf5\x9f4\xe6\x11\td"\xb6\xc1\xe1\x11s\xdbS\x0b!\x14\xe2\xb34\x1c\xa8\x95\xab\xc7\xc6)\x05\xbd\xff\xad\x9b\x13*\x82\x85\x0b\x9e\xad\x01\xc7\xb792\x06\x9b\xac\xcdKr\x90T\x0c\xa8\xbdX\xc5\\\xf2\x03Y\xe6-\x86\x88\xac\xe6\x84y#\xbe\\~f\xc8\x06\xf1{\xd0o\xd9\x8c\xb1\xd8\x8c\x06\xc9BwC7\xc8\xf5\x15\xcc\xa9\xa2\xb7\xafo\xa0K\xd6k\x88I\x99\x84\x8d\xda\xe0.\xafC\xea\xd2\xf6\xdd\xa6\n\xa0\xc1\x92\xc0n\xd3\xd0XI)\xd4\x83\xd1\x03\'\x06w\xcfR<\x1d\x7fE\x03zG&\x0f\'\x13\xeb\xb7i\x07\xc5\xed\x1d\xef\x0e\xaem\xf6\x9bA\x8f\xd2\xc1 p\xa8,j&\x0b!\\\x07B\xb8\x8b\xd2\xf8Y\xc3\xec\x12@g\xb3|[\xe1\x1c6\xb6\x1e\x16\xad\xb9\xf6\xec7\x0f2\xe4\xec\xf685^\xbebj\x84\xb7\xbc\t\xeao\xed\x8a\xd4p\x97\x00O/)\x00\xa7\xeb&~\xbb\xe87\x03\xe6\xa1\x8e\xf2z7\xb0\x9dg\xbd:\xa8N+\x1c\xed\xf6b\x97\xce\xd2u\xe0d\xfc\x89\xe3G\xa3\xf6S\x0e\xfe\xff\xf9\x15\xb2\xac\xfe\xf0\xde\xbf\xa1#\xb2\xf2\xc2\xd4S\x181\x8a\xdc\xac\xfc\x14)\xae|t\x9b\x0e1A\xc2\x01\x93\x06X0]\xbe\xb2\x023\xdd\x10\xffGo\xc9sN\xeeb\x12\x92\xed\xed?\x91\xdc\xf4U\xac\x01\x00\x00\t\xd6\x94\xb9\xa3\xc6a\x0cq\xa9\xc7e\x06\xd2\xf7j\xf2%\x16Gb\x08Kje\xefB@\xc8\xf9\x12\xee\x14\xa1\x9e\xdd\xaaU\xa9\xe56\xaf\xb2\xd3w\xa4. \x97\xa3\xbb\xf6\x8e\x993\x90^\t.{I~^M\xbe\x85g\x8ff]\x0c\x1e<\x17\x05\xeah\xe4s\x8b\xbfVv\x9eU%\x90>\xebc+:\xe3 \xd8\x17\x03Sk\x07\xb8\x7f\xeeZ\xd2\x91\xe4n\xbfP\x86\xd2\x86\x90\xe5\x0fX\xd6z\x1f\x85\xd7\xb1:\xdftj 35T\x80+\x84Q\x0eE\x1e\x90\x07\xd8\x80C\xe2\x1fT{\xe4\xa7\x93\x00\xd8l\x16{y\x9d\r\xd1\xe9\x12A\x8bEO\x16\xa1\xc0Y\x9d\xef\x89E\xca\x10\xa0h0\xd3\xf42\xc7L\x8f\xe6\xbf\xe2\xfd\x02x\xa0g_\xafK\x1b\xa22Q$F\xb5\xeb\x94\xbc\x19\x8d\x91\xe6\xed\xfb#\x04v\xe1E|{\xcf\'n\x01\x08@@\xd36D\xdbg\xffV\x8dOy\xc6\xc3R>3\x08y\xc2*\xbbs`\xfa\x05K\xb6D\x0c\xad\xb0\xca\xd7\x1e\x98`\xe0U\xa3\x8e\x1d*\xf9\xc5\x7f\x86\x00(\xdap\x8b\x1b\xecp{\x1b\x90\xd9\xce\x95\x96Ce\xed_\xdb\x00n\xda\x85\x05-\xb5\xceN(R\x9d\xd1.\xc52\xa4v"\xa5\x01\x05\xdfx\xa3$\xc7\xc38\xd7\xfd7\x9d-ta<R\xae\xbb\x16\xff?\xc0\x1c\xca\x0e\x94\x0c\x10<\xf1u\x1c\x84\x92\xb8v-\xb6%\xc7\xfa\x7fY\xe1\xf8\x1bb\xb9r,T\x92\t\x94\xa3!\xd7\x15a\xfb=\xbf\x87\xd6\x88\x06\xd2O\xcf\xede\x1e\xe2G\x13\xc7\x1f\x8fZ\xbcO\xd6\xb3%\xc5u\xces9\xca\x800\x10\xfc;\x87\xd0 \xe07++\x9bq5e.\xee\xa8\xe9z\xfaD=hF\x7f\xfa[`\x84\xaa5\xe2W?\xcb\xc7\x17D\xd1\xd1\xd1\xa3v\xf65\xed\x928\x84\xc4\xd5-~\x8d\xd6\x1ej\n \xe7=\x96\x9d\xea]\xbd\xf5\xab\x899\x1b\x18\x14\xde\x98\xe0o\x0f\xc1\xbd\xe15\xe9\xe5\xec5\xe3\x99\xb9\x1eF\xb0\xb0F\xe3V\xdb\xdc\x1b>\'\xc35=N\x07\xc2\xaa\xd0\xd3\xff\xa9\x12\xb1\xb6\x15:\x95\x81\x083\x03Vb\x1b\x8d\xbe\xf5,"4\xdc\xb7\xab\xac\x04\xc0\x1e\xd1@\xd6_\xfd\xaau\xb2\x96\x17\xb6\x86\x95{\x9f\xb8\xd8=\xe7A\xb2z6E\xea\xe1\xe0\xd6D\xf9\x15w\xb0f\xdd\x8e\x1cN\xfa\xd8\xdbq\xde\xb2,WOwa\x99\xf7\xca\x0e\xfa\xe9\xd8}\xf5\xe8\xb1nk\x7f\xa3%\x19M${\xc7#\x1c\xf7\xe5\x94>\xdd\xd8\xce\n\xb1\x01\xfb\x1d\xdc\x08\x07,\xf2\xb2zv\xa8\x994\xc2\x0bH\x00\x9a\x92\xe6\x8a\x14p~8\\\x80\xf5\xad\xdcnas\x14\x1cR\xe8\x1e\xb7\xd8167\xe5\xb2gL\x97\xe0\x03j\xde\xc0\xaca\xf8o\x81\xb9\xcf\x11\xb6\x11\xa4\xdf_\xef\x90\xfb0\xb2U\x05emd!<\xa4C"\rA\xb5?4o\tj\x07\x8e\x9bKh\x07\x87\x1bIO\xcer\xb515\x08(\x16\x1f.\xd5\x95\xfd\xcd\xcb\x13kw\xf7{D\x17\xf8%\xeb\x1a\xc4\xc9\xa3kA@\x866\xf2\xd7|\xa9o\xa0\xc0;6z\x95\xb4t\xb4\x0eD\x06*q\xc5mI\x92\rQ0oi\x9b\x10\xfc,\xe3\x90\xee\xcc\x9aH\x87\x0b(\x7f\xc8$\x18A\xf8\xf1\xa2jIY\x19,\xcf\x08\x90(\x05\xac\x83\x03V\x0fl\xc3N\x00u\x1d\x0cSZbu\xed`x|\xc2\xe35>\xa4n]4u\xb1\x86\x18\xb5"\xa1\xf7\xec\x00t[{\x82\x0bE\x9c~\xf8\x1b\xa4l\xd1E,\x9b\xdc\xf3\x81!N\xafc:p\xf2\xcbn\xb2\x97\xea\xe7\x0bl\xcc\xe4\x8a\xc5\xb5\xa5l\t\x9fV\x86yk_\x16\xdee\xab\xc4o\xe4\xe7\x18c\x1df\xd3H\xc7\xc8\xbd\x9e)\xe3\x17K\xd6i\x1a\xa6\xb6\xbbSe\xf9\x9f\xa0\xfb\xb6\x91\'PAD\xa1P\x13<\xc5r o\x01H6\x89\xbc\xa4\x94\xd0\xfb\xd5\x9b\r)X\x8ciBg\x00\xb5\x982\x19?\xf1\xf5#I\x84E\x91L\x91\xbfp7\xeen\xa1\x99$`\x83\xb0)\xd7\xd2\x8a\x03\r\xb5\xda\x1c#\xba\xca\xed$\xa6\xbb\x1c\x8b\x97:g\x8d\xcbn\x8f\xc8\x04\xb2\x07\xf4\x9f\xe3\x12\x13\xdc\xe7\x8a\xccfg4\x81\tS\x1cj\xbb\xfd>d\x17k\x18\x1b\x15\x88\xc5H\x0f\x1bkU\x88-X\xc3\x1b\xd5\x9b\x02\x1c\xa4\n/-[C\xeeo\xdb\xbf\x02\xe9\xf9&\x08\x95-\x8e<\xc3\xff\rh\xf8\xa4Y\xda\x16\xcf5\xd3^\x1f@s\x98\x0bh\xc27\xc4h\xb48\xf5\xc3\xd2\x03\x15\xcc\x1e]\xf7f\xe3k4\x07\xbcc\xe2\x9c>a\xab\xe2\x10\x94\xe1b\x8et|H\xce\x88\xe1W\xeb>\xe6y\xf6\x01\xaf\xc5\xd6t\xc6q\xcb\xa4\t\xab\xf3\xcd\x9f\xba\xfdq\xb5\x8f\x8d@\x94Zc\x19Q\xd2}\x0c2F\x85m\xfa\xb7\xd1\xa3\xdc\xdc\xb4p4DY>\x95\x9c\xf7\xb6\xcfV\xb8\xafzS\xdd\xc5\xfa\x08 C\xa6\xe2S\x14#+b\xd09\xd4R\x82\x9a{\xc5+\xa5.\xaaY\xfb\xdb\xfa\x11`\x11V9\xdf]+\xdc\xbfi4X/\xf2ts\x9c\xdb\x80#\x18\xf1\x93Y\x9f\xca\x8c,\xb0~\x03\xcb\r\\1\x16\x9f\x91(\x1b|B\x0f\xcf^n\x9ep\xc8e\xeb}\x7f\xac\xbe\xc5LU\x1f\x96R\xfdx<\xc8k\xe6\'\xe7\xa41)To\xd8\xf9Kx7\xf12\x19\x95\xf1Q\tx\xa9\xac+\xe9p:z}-\x95 z_\x1d`\x11V!\xe9\x13N\xe7)\xce22-*\x01\xbaP\n\x1c`\xe1\t4ei\x8dJ\xb7\r\x1b\xfeG\xd8\xe2\x0c"\xcd\xaeW\xfa\xfe?=\xfe\xa5d\xba>\x93\x83\xd0t\xd1\xedh\xae\x8fq\xbc\xd8\rG\xc8B\x1a\x8c\xf4#D\xb2\xcb\xa2=\xd5X\xc4\x1b\xb7\xf7\x11O\xd5l\xad\xf0\xe1\xde\xdc/\x0ciG]\xe1\xf0}0\x99\xa8\x0fUb\xffx@\x08\xab:\xceK\x0c5\xa2D\x80\x1bv&~^\xf2i\xc3\xcf\x16\xd3.\xabo\xa4\xd1^d\x83\xb6\xff]\x0e<\x82\xbdBuk\xb7\xe0\x81;\x15\x87\xa1Ao\xc1e\xc8\xceX\x0c\xe3d5\x8b\xbe\xd5-\x15j\x14\xd3\xc5\x19\xd2\xac\x87n\x7f\x067\xc7$\x19\xed\xe6\xe4\x80\xb1\x04\x8e\xbaGz\xc7\xf1\xe9\xe7\xd7\x9a\xa6H\x10_\xd5`;\xe4\x03o\x17\xa627<S\x91\xa8\x89g\x1d\x92\xb1\xab\x86\x04 \x94M<\x19=\xfa\xa7\x19(@Y\x9a\xbe\xa4n\x0b\x00\xa0\x1a\x05\xf0\xbbwv+\x90\xe1\xb6!\xb7\x14jr\tQa%\x1eP\xbcO\x10\xd6\x1fh\xce\x94\x8d\xac(\x10\x01\xb4\xfb\xf2\x84%\xd8\xcc\xe9\x81L\xda\xf4:~yZ?^\tW\x91\'\xe5r\xb2\xff\xdc\xbe3\xaaS\xbf\x80\x81\x83\x8e\xfe\x9cfB\xe4\xec\xb1\\\x92E\xb5+\x85)`Up\x12\x15\xcc\xc9z\xff:\xa1B\xcc\'\x83\xf9&Mh\x91\xc9\xae\xf5r\xac\xbd\x13\\\xa7\xcf\xa5"J\xbc}\x95\xc1\x0b\xd9\x16\x9b\xc9\xcc\xed#\xdf~\xcc$X\x1e\x91\xb9\x15\x9d\x87\x07\xe2\xef\xa6)\x0c\xf1\xa8\xafu\xf6\xeeN\x01\xd6.\xb5\xd2K\x92\xc4\x98\xddi\xd3gv\x19Z\xb4\xda\xc6\xf6\x7fiI\x8e\xc8b\xa2\x92\xf2\xe4\xed}\xbd\x0ep\x18\xa6\x8d\xa9\xb4^\x85\x00\xdc\x93\x11\x8f\xf9\xc5\xef\x86\x823u\xc6\xf6J#\xcc\x94\x8b\x15q\xe1\xf6\xe6\t\xea+x"J\xdc&,5D\x1a\xb5\xffU9\x0c%\x84\x1f\x02\\\x8c-%\xe3\x8c\t\x9d\xb3\xb7\xaa\x98\x1eF\xc0V\x81\x18e\xdd*\x7f\xc8h\x0c3\x95\x04\x94 n&\x93\x1f\xe4\xbcAn\xc0\xe1\xd6\xd0\xd6i3\t\xfa$\xfa\xf1\xce\xdaI\xd2\x95G\xded\xe4\x9aop0\x96\xc4\x1c\x0c\x12\xc3\xdc\xa5\xa5m\x8b\x8b\xca-\xde\xff\xf4\x10\xecp<V\x10#\xeaV\x80\x19k0\xeb\x10\xb4HLc\x16\xf3\x86\xe8\x95\xea\x07\x8d\x04/\xff\x05\xa9\x0c= \xad\x85~\xc9\x85_K/Q\xb8\xa6\xd7$Lmt{^\x0c\xf4I\x88H\x8eS_\xb2\xd3\xc9\xc2y\x01\xa8\x82\t\x1dqJk\x8a\xef\x9d5\x7fk\xdb\xc0\xe2\x92c\x03xNk\xd4V\xa9"6^\xe2|v\x91\x17\xa9\x86\xec=1M\xc2]K\xd4\x95\xd6:\x14\x82n*\xda5Z\x16%p\x9c\x9a\xfb\xa0\x87\x7f]\xc3\xe6\xdaW \x0e\x7f\t\xe3\x84Y\xd1\xd1\xcao\xba\xdd\x9eF\x14\x97\xbc\xc4\x84\xd1cu\xfb\xa5\xf5\x9c\xaa6$\xdfU\x05\xd2\xe5\x9a\xeb<H\x89\x9cO\xfa\xdbU\xf7\xd5\xd8~\r\xce \r\xca\xfe\xce\x9e\xca\x940\xeb\x92\xe2\x94=\x94\x99\x8ftT\xccd$M\xb8\x94\xbe\x96\x92~\xe2\xcf\xe6\x05\x1a\x93n\xa0Q\xea\xfe5\x15l\xf1\xcd\xcb\xae\x0e\x0c!\x81\xf1\x11/hk~\xfcy\xe9\x8f#p\xf3\x90H\xa3\xdfCC.#L\xf7\xa6\x026\x12q\x80\xf0\xa0$t\xf6\xce\xe5\x83\xa2\x06\xbe\xdfZ\x06\x8a\\\x9aJ}\xf4\xca2\n\x98\xa6\xff:\x88\x05\x0e\x84T\xe5Y\x0fF\xbd\x02\xeb``\xa9N\xaf\xed\xa1\r\xcd\xdf\xa3s\xd5%"M\xe8\x13<LQh|\x13\x9eb\x9f\xe6v\x03\xe9\x02/l\x01\xd4i2\xd6\x16\x82\x83\xd2m\x10=\x07P\x18W\x01\xf8\'e\x01\xf9\xed\tV\x15\x04\xc8\x12\xf7\xc0\xf0\xc1\xfe\xecW\x95\xc1\xdb\xddD\xb82\xa3\xf1\r\x96\x868_\xb3\x06\xd3\x8c>\xc8\xf7\x15\x0c8\xb3tk\x1b\xe9`\x04dsBSz\xbb\xc6}\xca\\\x85#D\x85\x8b\x17o\x8e\x9b\x9b{\xd2X\xfb\xcc4(\x90\xc8\x88\xe5\x12N\x9ej\xc5\xf0\xf4l\tkX\x8f\xc8\xb2\xef%\xdf\x87\xcc\xb8\xa4Qc\xf6\x1ag\x90\xa3\xf8C\xda\xa1*\xcf1\x82\xe3\'\x18\xf1\xd1=\xe2\x16\xb3\xa6\x88\xdfE\x03\xd5\xe1\xcd\x16\xe7\xfe\x18s\xc7\xd1\x1b\x9b"\x9c\xc1yq\x1bB\xc2\x03\x16\x91\x9b\x91\xf7\x1bpR)B\xb3\xd7D\xa3,\x13\xd86\xc4\xb0I\xbf\xf9m~,\xb6Q\x9a\xe0=\x8d\x03\xd3\x02\xab:V\x00\xee/KGz\x12+\x82o\xcf\x03\xbe\xc0\xfb\xae\xedv\xa4\x08\x18+\xa6j`\x8f&\xcd\xdbn\x83\xbe\xec\x07\x91\x9d\x82A\xbc\xcc\xf9\xf1\xfa\xf2u\x02\xa9\xa3\x87Z\x0e\xa0hZ\xe2\x99\x16\xc7\x06\x11\x04\xf2\xad\x0c\xb1\xed}I\x8d\x05Z\x19\x94/\xdeb\xc2O\x9f\x08\x8c\x18\rm\xddz\xdaJ\x81\x80\xc0%u%!\xf2\xa7\xa1Nd\x0f\xbaF\xcf^E\xf7}@ZZ\xab\xadAf\xe3\x94O5\xa1\x0f}\xac\xe3\x8b1\x82\xb0K\x07\xc6S\x10\x1a\xb1{\x0c3f\xc5b\x14\x8b0\xa2\x01z\x10\xdc&$\xf0(\x18\x12\xd0M\xea.\xf8\xd5\xb4\xd1\xff\xe1cU:8\r\xcf~\xd0\x9a\xb6$\x80h\x00\xa4\xbc\xdc\xd0R\x98>W7\xe3[\xc3\xf3Y\xdde\xd1\xca".\x7f\xe4R \x0c%\x96b\x90n\xd0Us\xa4G\xd7\xe4-\xf9\xd3\xf6\\\x16\xea\xa6\x16\x00_(,\xf8\xe1\x9d\xa8\xb0g\x13!|\x07`\x0e\xbaDH\x98Q\xa7\x00v\x0b[.\xc0\xe2\xd7\x00\xcdct\xcej\xd1\xc5m\xfd\x92\t\xbf\xa1\x7f\xe6"\x80RbI\x8d\x85\x92\x98\xdbzA\t(\x14\xf3TY@\xf2Q(n\xb3\x9aSo\x0b\xd3\xcf\x80\xb9\xc1a\x10\x88\x95j[e\x14\x81\x80\xcc\xdc>\xb5""`\xbd\x9f\x8ax\xe09K8\xea&\x05\x17\xdb-\x0e#\xd6\x17\x1f\xb0\xf7\x12U\x1f\x90O\xecF\xbd\xd2k-\x1ep\xb8_\x8f\xbb\x89\xa4C\xd7\xc7b\x10\xb9 @\x06\xdc`+\xad7\xe1\xc2\x07*\x05\xfc(\x90\xeb\xda\xb7!\xe1\xa5<\x94\xa3\x8a\x83\xa2\xa55ErY\x88v\xd1\x9e.\xbff\xb2t\x0f\xa8\xa8B\x18\xbd\xb9JE\x08\xc9\x9d\x11\x99\x92^\x15\x95y\x8c$e>>\xb1\xb0\xa1,\xc8d\xecU\x92?\xa2O{U\xd3l\x82#\x01\xaf\xbf`\xac\x9a\xef\xf9\xd7\xebY\xcd\xa1\xea)\x18A\xf8M=\x81\x85\xa7\xbcZ`\x95\xf9%\xe0\x9d\x19\xa7`\x95f\x03\x1c\xbb!\xafq\xf0\x9c\xb7&\xfd\x03\xec[u\xb2\xe9\x81\xfdR\xd3\xf8G\x15\xf2+\x88\xc2\xb8\xcbG\x1b\'\xc7\x1c\xc9(LI\x18;\x96\x01\xc6\x93\xb4\xf6\x11\x9c1\xdbW?K\xfc\x13\xc3\xd1\x1c\xc0\xbc+YX\xa0\xcf\x9fwgc*\xc5\xfe\x86\xda\x88\xf5\x1d\xf0b\xc0\xc3\x161\x84\xf3\x85pr\xf6fEe&\xebS:\xc7\xe6\xe0u,\xdd*8RV\xf8\x02{\xba3\x08\xa7\x80\xa3\xfb\xf0\tV$r\xbf\xe0\xaek\xeb\xd0\xb5\xd6\xcc(z\x89t\xe6\xd7\xech0\xe8q\x10\xecS\x7f2\xc5\x16\x8an~n\xaf\r`!;7\xa3;Mc\xcd\xb1.\xd8\x94\xb0H\xe7\\Y\x148\xee\x9c\x9e\x14\xb8\xf2X\xaa$L\xea\x92\xa0\x90\x92\'\t~>@\xbf4\xb7\xfd\xa1\xb2\xe6\xebj \xf3\\\xc4\x9c/\xa0B\x17\xef\xb3#\x92\x8d\x99\xbdt\xc1xt\xec\xa4\xbe\xe9\xc5\x15T\xb8\x10\xa3\x10-\xb4\xfe\x1eF\xfd\xfc|\'\x99\xbe\x9d-ks\x16\xdd-uz\xf0M\xb60\xa4p\xc2\xb5\x94 \xe0@\'\x97\xba\xbf~,\xdc"\xd7>\xd0-\x01\xeb\x06h\x99k\\\x8d\x1c\xfc\xbeo\xd5\xfe\xead\xdf\xb1\xa7\xdcL\xfcf\xf2\x8b\xbcQk&\xbbT\xe1\xbb\xae@R\xde_\x9a\xb5}vr,\xca\x941\xbd\x8f\x0e\x0f8\x15\x1b*\x1e\xc7\xf9\x84R\x937\xea\xbb\xd4\xb4:nE$\xbd4\x97\xf4\x97\xea\x8b~p \xc6\x1d\x05f;\xfa\xca\xdcB\xaa\xef\xdc\xb6\x05^\x9eS\\3uCX\xaa(L\xcb\x14%]\xaaJV\x05&\x06\xa5a7\x06_\xf2>\x05\xd2C\x03M\x94\xb6~V\x94c\x89\xa6\x91\xa2\xe4\x15\xe3o\x00UE\x16\xc7\xf5\xc1\xac\xea\x11\xf4\xf1\xfa\x96\xe6\xc6\xdb\x1b*lc\xcc\xc8\xf5\x90\xbcM\x99q\x91\xbc\xe1R\x9a \x9e)\x95\x0e\xdb\x14\xd3\xf0Jr\x1c\xdbQ\xfe\xb0sx\xab\xc9\xda\xd9\x0c\xd3\x86\x9aBoV\xc7\xb6\xd4\xba\x97\xd4\x9bE\xce;\x08%!!E\xc8\xb0\x046za\x8dZh\xce\xf2\xbb\xc0\x92uv\xff\xdb\x0f\xebS\xe1\x01&\xcc\xa6"p\xe2R_\xf5\xd7Z\xb5:!r[\xa0A\xb8\xde\xba\x9cUc\x905\xdd\x08fp\xe7\xe3g"7\xd3\x0cy\xab\xfa<\x07c\xe9{f\x9b<\xcfax\xd4\xfaf#~\xd9~\xfd\xb1\xb8p\x9ai\xff\xb5\x92\xc1#\xad#\x18\x0f\xd4e\x8e\x12,Z\x0c8\\\x16\xfd`\x84\xa1\xc6v\x12\x9ex\xe4\x88\x1e\x8cu\xc0\xbf\xe7k\xa2\xb9_\xc0\xed\x8c\x80w\x13\xf1knA\x94\xb7{]|\xfe\x00\x8f\x02g\xb8x@G\x13-6x5\xd1\xdd\xd6\x8a\xe3\xc5\x99\xe6?cX\xb9]V\xc0\xb4B\xe6\x1cL\xc0\x10\xd4\xbb\x1f\xdd@\xe9\xdd\x19\xff#\xb9A\xb6\xdbm\xa6\x9d:F\x0b\xb6\xbb\xccl&\x85\xc1\xe8\x06RD!Q7%\xc8\x93\xe3\xc6\xb0\xa4\x10\xeb\x8eS\n\xb9\xa1\xce\xc36M\x97]`\x1fx\xc4\x89\x97\xa6\x00\x19.\t\xbf\xc0I\\\x94\xa5\x93z\x08\xde\xa0&\xa1#l\x91\x1e\x8f\xe4\x07\x02\xc7\xc6\xe9QQ\xfb{\x8f\xf4\xb6\x9b\xdc\x83\xe8x\xbb\\k\x97\xd2\x80\x14\xde"\xac\xaa\x16\x8fD\t\xa6\xc3\xa2\x1962\xe0\x83\xbe\xf6\xc1\x0b1\xdc\xcaV]S\x0c\x04\xde\x03\xae\t\xf1\xaf\xa5\xeb\xf5\xe9L\\\xc5\xe1\xb6\xf6\x83I\xf4\xfb+&\x8f \xf9\xcd\x82\x84#\xfd4\xa5W\xb0\xaf\xf9YT\xc1\xc3 \xc8\xb7\\7X\xab\x96Y\x93\x06\x05\xbf<m\x93\t\x17\xb3\xc3*h#\'x\x8f4\xbc\xb6\xe9C\x9f\xea%R+z\xb1l\x0e\x1e9Q\xf1\xbd]E\x0f\x8b`\xf2\x8c-4w\x19\xdewF\x8a\x02\x16|\x98\xbc\xa8=\t\x7f\xbc\x1c\xab\x9b\x91o\x0fXL\nb\xbe\x86=\xb8\xfe\x8bqs\x81\x96.\x0b\xde\xf0%>\xdf,\xdf8a\x92\xb6\xec\xba\x99\xe8\xb6vV\xe4O\x03\xa8?\xb7\xc5\xf8\xb0?u\x94\x81_\xe7\xfey/\xdb\xfea_B\xff\xc3\x85F\n\xab\x8f\xb4\x04Q)k\xa3+\x9cG\x11\xce\xe3\x90\x92\xb5\x89B\x1e\x85\xc9~M<a!][df\x0cL/\xabO\xa5@\x86G\xf76\xfa\xd7\x93\xb2wV\xddf\xbe\xb4\x92\x10\xa42\\\x15W\x1d\xfcU\xc2-\x93n\xbc\xa80hRD\xfa\xac\n\xb6\xe6\xb9\xbd\xe1d\x15-P\x98\xbaXt\x9f\xfa%c\xfb:\\\x13\x0c\xfc\xb6d\xe7\xe6K\x8dw\xff\x8f\xa7\x05\x05\xf1\xdfo\x1ec\x8dK\xe4\x01\xe1\x90\x11H@\x9e\xa2\x96\x81@\xc6\xf1\xf5\x86\xb4&y\xf9\xd6\xe9\xcf9\xc3j\x97\x86)\xea\xddr\xe5^ \xcex\x9d\x9f\x0c;V\xff\xfa\x1c7\xb1\xd7\xdaf\x83\xa1\xa5@\xf2\xec\x1e\xa8">X\xda\xcc\x9f\x1c\x9c)\x15\xeb.2\x89~\xac\xff\xf7cY\xe6~\x97\x8f\xb8\'l:\xce\xee\x1a\xfb\x14&\xb9\x13bpu\xc1\xdb2\xc8\x99\x8ekgx\xd9\xc1\xaa\xcd%\x94)\xe8\xa3\xd2\x8cI\x1crY\xbd\xbe\x13\x1e\x0f\xdbJ\x97\x90y\xac\xd4\x89\xcc\x90\xaffgP\xc5\x8f\x93\xaf\xdf*\xe4\xf2\'\xe3\\\x8d9\xa7\x01\x19&*\x7f$\x10@\xd9\xc1\x0c4\xf70\xf5\x1cL\x9e\xd7\xc4\x83\xab,\xad\x8e\x0c\t\x97\xda*L\xe1\xf5\tm\x0b\x80g\xab\xc7i\xf3\xa0\x129\xf9\r\x81\x8f\n:\xac\x9bY\xa5G\xe1\xa2\x1e\xf4\x17\xf0\xe1\xfc-\xa7\x90\x1a\x95W\xb2\x9d\xd2\x80s\x8bG\xbbg6M7x\xcf2?\xf5\x9eTHB\xfbI\xa7\xf5*\xba\t\x1b\xcev(\xe2\\\xfc\x03E\xfb\xd9\x82\x88\xfb`\x83e\x8b\xa4\x84\xf1:_\xa3\xd8\x8d\x7fe9\xa0\xff\xd4_\x0e\x9f\xa8\x9a\xe7\xee\x07\xcb]w\xb0\x0eWi\x82\xa8\xc4\xbf?\x8cc\xcb\xde\x90\x07\xda8\x83\x8bS+\x91@(\xb4\xcfrB\x93\xc6\x08\xc8\xd6+\xe9uwo"_\xc2\xb8\xeb\xc1\xec=\x12\x17\x15\x1c\xe5j\xe2\xa8`K\'\x99\xcd\x8d\x9a\x0e\xd4pG\x8c\xa8\xa9\xe2\x89\\upX\xd3\xe72\x1f\x03\x00\x1c\x076\x8b\xcc\x1d\x02R\x04\xa2\xb0\xd3\x1c\x1bo\x15L\xf3,\xc9\x8b\x1d|\xedG\x17$\xe7$!D \xcb\x88:\xbb\xdf!\r\xa6\xb6\xb7\x91\xca+\xf0\xf9Y\xe4`\x1b\x81\x9c\x11$m\xe1z\xdc\xc5\x8a\xb9W\x81\xa3!A\x8f\xf3?nP\xf9\xa2i$\x15\x8f\r\xd9\xeaXY\x80\xd4L\xc4)\xde:\xda\xab\xd5K\xba,%\x13+\r\x8c\xac\xe6\n\xcf\xc4\xad\xe9\x87\xac-y\xc2Q\xe7:>}\x86\x94\x11Z;_&rB\xac\xb1f\x10\xee\xc0Q\x13\xd2\xfel\x13.T\xbe\xe9\xc6U\xb0\xf7\xd4\xd1\xe0\xc0p\x99\xd3&-\x06\x13\xa37\xfc{\x08\x19\x8e\xb46S\xf3\xf3\xa9c\x90\xb4\xa0\xeb\x01\x1c\x90\x1e\'\xcd\x1a\xdc\x137m\xc07\xc3z\xd6\xeb\xd9$%d\x00\xba\xc2\xc9\xdc\rC\xd65\xbf\xf7l8\x98\n*\xd6\x06\x97f0\xbe\xf8\x1d\xb7\xa0\t\xbd\x06XL\x01\x8c\x94|\t\xf5\xaa\xd3\xb6\x8du\xdax\xc2\xa4\xf9`q\xd1\xb5\xb8\xc1J\xdd\x9051\x0f\x81\xbb\xa5\xe4\xday\x90\x04\xecD\xef\xbf\xa1Y\xf0\xa4\xe9\xa4\xdf.W\xe7?\xb2\x1c5\x12\x1f$]m\xa4O\xe7\x8bp)\x1d\xb7\x86Z \xfb_\xf5\xedi\xa6\xcf\x18?$t\xb7\xfdJ5\x9d\x91\xcc\x99s\xf5>\x13N\x9b[P\xb8\xc3\xfa\xe2\x89Z\xc3a\x05\xf6\xc6k>\xbc\xd9\xef\x87\x89\n\t\x06\xec\x84\xf5\xf4=;I\xc2\xf4\xf4c\x93\xa2\xfa\x92\x9ev\x838\x8c\xab\xaf`\x9f\xb8\xbbX1\xbd\xb5\xe2\xb2\xd6\xf3\x92\xe8o\xa7\x95\x12\xaa\xaa\xd8\x90\x93\x871\x9ao\xdd\x12\xd2\x10\\\xadF\x92g+\xb0\xa9G\xcbV\x14\x12%\xfc\xba\xea\x8d\x13\x18,\xa7\xa7\xc0\xe0M\xf2\x8f\x1fT\x94.\xba\xe9\xce\xab\x80\xb0=Lv\x11\xe40\xf5\x8a\xb5\x06-\x1d\x06[\x7f\x11r\xd3x-\xed\x82\x98Z~\x9f\x05O\xf0\xfcP\x0ec\x98\x0e\xf2g<\n\x9d\x87\xd0\xe0\xb7\xcd\xa9F\xe5\x97\xb9\xa5z\xae\xd5PF\xf3\xb0\xcf\x81\x85\xe4\x14\x8a\x19\xae;\x9a\xa2A\xcb\x08\xd6s\xdaPJ\x96\xaf\x92\x85RY]P\xe0\x13\x8e<\x13i\xaa\x08n#g\xb6\xe0d\xdd^\x18\xaas]\x8cw\x8d\xf6\xf9\x88\xfc\xbf\x80\x181\x90\x95\xa2\x0f\x83U\xaf\xa8\x0e\xd9R*^\xdaX\xaf\xb6\x84\x0b@p#\x12\x8bR[\x14\xf6\xd9G\xa9\r\x9e\xa9h1\xf0>t+\x19\x02yj\xb2C\r\x00\x9fz2\x99z\xf6V\xb2\xfb\x96U\x97\xeb\xf0U~K\xaf\x1fz0fc\x89\xb8\xcds\xea\xad;Dl\x0b?\xa4Pj\x1bq\x8c*\xa8\xb2|\xaewG\xcc\x1d\x83tt\xc6\xbd(\xaf?\x92\x9cT\xfbI]X\xc7\x88%\xb7\x04\x04\t_\xa9\xbe\xed\xd0\xa1y3C[\x90*\xea\xf3P,Z\xd0\xde\xd7>sK\xde\x06\x95\x8a?\x8c\xb2=\xc7\x99\x18\x85\x8c\xce\x0f\x8e\xd0?\x1a\x9b\xc2H\xd84K2-\x9c]\xcf\xe2\xd0\xa7\xc8/NL\xf3\x83\x1e\xbf\x1a,\xfd\x1d\x94\xaco\xe7\x9d\' \xde}\x84\x9b\xa5\xa4\x91\x85\xe3Ee\xc4\x16\xce\x11\xa1\\\x86E{\x98\xb6\xf4\xff\xf4\x01\x80\xa3\xae\xb2\x14\xa2\x97~z\x96\x1d\x0c\xba,\xf7?\xea\x84Y\xd6\xf0\xbc;\xdf\x8ca\x92\xad|\xbbU\xf7u!\x0eJ\x0c,\xbfR\x8bL-\xa1\xcdF\xab\xd1_\xa9\x1aM\x1f\xb9\x9c\x97\xb8 G\x9b\x14#|\x05\xeekr?\x05m\xee\xdd\x08\xa8\xac\xc0\xb9\xa2#\x7fsy\xcb\x11\xfb7\x0b\xfc\xbbm\xb7\x97r\xcbH\x00mzS6\x95#\x806U\x81~v^\xd1\xf1\x1f\x1c\xb7\x89\xda\xde\xe4\x85}\xdcI\xda\x02R\x13\x93\x81#Vh\xdc\x05\xf4dW\x05\\\xf2\x95\xa7\xa7\xcd\xc8\xc7X\xde\xb8\xf1\x94\xc8\xcag\x16I\xeeL\x18\xfa\xc5 \xdfc\x00\x1e\xdb\xae\xce\xff\xc65L\xe9`8\xfcv\xd5[\x9d3\xba\r\x9e\xa4E>9?\x8f\x88\xec\xcd\x1e\x13\x84\xe2\xdeCs\x96\x05\x1du@\xeaio2\x1d\xcf\x1c\xe2\x0b\x01H\x80\x06\x8c\x8ew\xf8k*\xa5\xa9F8\x14\x0bO\xc6&\xfa\xb4\x03\x08\x92\xb9B[\x97"\xb1\xf6\n]\xb0\xe1\xa8Q\x80\x89\x93\xc6\xd5@e\xc2\x9fu\x92\xe3\xdc*E\'7\xdc0\xbf\xafk\r\xdeScX\xf8\x98\x16\x8fQ\x94K1\xfe\xbc\xeeF1\xddA~WG\x1e\xbe \x1a\xb2H\x95=\x87\xb7g8\x05\xa0\xf2\x93\x95\xda7\xa2\x0f\xb9<\xbf\xf3\x8eA\x9a\x08m\xd9\xb2\x0bR\xc1X\x03xA\xdf\xa6\xed\xac#\x91\xb7\xeae\x17\xd8\xb1Aa\xb1\xf6\xded\xb00\x05\xcaw8\x89@\xdbF\xb6~\xcc\'\x1a\xcf\xb9\xa5Z\xe2x\x0f<@\xd6\x89\x14\xed\xc3n|?\xf7;\xc0\x167)\x1c\xd9\xec#>xU\xc4\x17\x1b\xba\xa7\x98\x06Y\x8d\xff\xbfw!\x83\x99\n\xaf\x14G#\xb0"\xcc7\xc2\x8f\xe9\xd6\xbac\xcc\x01\xd3G\xea\xb2\x8b\xaf\x1dA#T}*\xd3\xff\x0e;g\xb6Db_=\xca\x98P\xb2\xde%O@iV\x85!\xd9\x90}>:C\xf5\xa1\x9a?3\xc0\'\xff\r\n<_\x1a\x02\xbe\xe4\xa0\x96\xda\xa85,\x0e\xef\x1at\xfa\xd4\x84\xb41\x94\xa6$\xa5\x05\x05]\x0c\xa7\xcf<b\xe2\xa1\xa7\xd4\xe8\xc4\xfcAS&\x90\x10C\xf8\xe8W\xa78\x07v+\x081\x12\xa2\xc1\\\xb8\xe5\xaeBa%F\x08Knr\x9d\x92\xf5r\xa3\xea\xd5<\xfe;\xea\xbd\n\xbfz\xd5\xf9}8\tOF\x10\xe5\'Bk\x81\xe5z\xdfn\x86\x81\xc9\xa1<\x83\x9d\x03a\x19\xf2k\xa8\x1f\x7f\xbf\xfb;k\x82\xd3\xb2\x9c1\xa7\x18\x1aP\xcaJ\x81\xd2<\xef$y\x18K@\x88\x86\xab\xe8\r/m\x03\xe7\xacG\x03l\xc8\xfa(J\x11\x0e9C\xc6z\xb7\x0e,Y\x95\xf9\xe0\xfd\x8d~\xe5I9\x05\x8a\xd7\xa1\x16\x0e*]O\x8ev\x81\x9f1U\xa2\xb4\xcd\x1a\xd9M\xe1\xae\x9f\x82\xd6\xd4\xb6\xde\xb6"\xb2\xc2\xbe\t}`\xe8\xab/\xd1\xf1zj\x96\x96\xed\x8b\xc8z<\\GG\x05|\xafc\xe1u\xe8\xa9a5\xe7\xc1\x01!\xea}\x90\xf5hq\x16\xe1\xb4\tzA\xf0\x8e\xf8\xfc\xea\x83&\x0f\x03a\xac\xaa;\xdc+\x876\x0b\xfd\xf4\x13YE\xe9J\x8b3;\xd6\xde\xf3\xa4\x10\xe0\x11\xc3\xb0\x0b\xdd\x1eAC\xf4\n\x03L\xef\xbc\xdb\xf3F5\x13\xda)\x19\x15SA\x93\xee\xe8\xa7\x9c\xfd3p\x8e \rI]\x17\x10W\xfc.8^\n\xaa\x941\x7f9\x0c\x81j\xed2GueS\xa1\xc9H0?\xd3\x88\xbdY\x0c\x10:\x80\x16n\xbdX\x10\xe9\xcd\x0f\xa4\xb4\xfeF\x04\xad\xc2Xc\x06L|U\x92Wd\xc8[gD\x80^~c\xd5-\xa34J\x17\xf4 @\x97\xb2\xfe\x94\xa4\x9c\x1d\xc4L\\\x82\xeb9gc7\xeb\xfc\xda\x8b\xdc\xc9\x84\'\r;\xe5i\x01y37\xaa\xe1\xff\x87E\x00\xa6\x90^\xc8o\x18\x89H}\xdd\x9b>p\x87\x03\x845\\\xa17\xc1\x8cB\x93\xb4=\\\xf2\tf\x1b\xf9/\x99\xa1b\xaf1\xc7\x1c\xa5\x17\xe6t\xcf\xe09he\x9d\xc4\xae\xe1\xc2\xce\xfa\x89\x1b\xd2\xef\x17;\x0e\xe1\x9f\xa0Bp\x07\x13\xc7\xee}fu\xec$\x1c@v\xd3\xb5=)\xc3NU\x00\xa30\x17\xd2\x87\xab\xa9r6\xca\xfe\x95}(\xc0\xc0\xf2~\x94\x07;\xbf\xe0\x9b\n,\x1e\x1dn^\xc6oP}\x86*\x08\x03\xb6\xc41\x80\xd2\xd0\x0b(j\xc4\xad\xd3\xb9S\x8b%\r*\x85=r\x87.\x1e\xe1\x85\xaa\x98\xdf\xddk\xa9`M\xfe\xc2V\xd1"``j\n\x15h\xf4\xaf\xe5=\x8f\x93\xc9\xe0\xe3W\xa2X \xb4\'\xd7~*n\xde\xb4-\'\x88\xac\xb2\x08\xe3\to TNk\xa6|\x81p\xe9\xd7\xc9\x83\xeb\x1er\x81j\xa2\xd8\x1e\xef\xd8\'6\xc9\x90\x01\xd4|Jh\xdd_\xee)m\xdd\xaaD\x18\xcc\x8c\xc3\xd5^\xc6\xc2#\x92!\x80H\x1c\x90k\xfb[\r\xda\xa6Sm\xb5%\xcfBd\x10\x89#g\xdb\x7fE\x13\xdfA"\xcf\x82\xe2\x13`j:\xc7\x19\x0e[z;q\xc5\xfa\xc0\x7f>\x98\xecwa\xe8\xe0\xf2S>P\xcaU\xde\x97\xec\x9e\xc5T\x90\xb7\xd3\x83\xf6\xc8\x0eX\x8c\xc9\x16\x0fD\r\xd4\x8a\x92\xca\xad\xb3a\xe4\xf08y\x15S\xcc\nP?\xbc\xc5\x07+!\xab\x06\xd3X`\xf4\x89\xb9\xe4l\xb8\xaa\xee[_\x807\xe3\xad7\x81] \xbf\x9eG\x1b1\xb8\x95S\xf7\x92f\x9b\xa8A\xa6\xca\x93\xbb=\x1c\x1f\x00h \xed\xd3\xaa\xc6\xa9\xaa\xc8\xac\xf1*\xca\xcc\xad\xf1\xd02\x1d\xefw\x1d\x90M\x8d0\'X\xe1\xddm\xfa\xc8\xb8\x9b\x0ecv\xbfy\xa3\xe5\xab\xb4<\xd5\xb0\xfa\xf8\x8c\x05\xfb\xc2\xf4\xb4\xdeVN o\xcc\xc3\xde\xc7\xed#z]\x86\xc4T\x92W\xe2\x9a\xf1(v\xf2N\xea\x0e\xbbL\x00\xa0\x12=X\xaa}\xb4\x9ah\xe6=\xb0\xa8\x16\x9b\x01\r\xa0\x06|X\xff\xe0\x9cf\xc1\xfe\xf9L\xc2\x9ct\xedq\xdd0\xb5\x8d\xd2\xa5S\x0b\x80\xccV\x95\x14\x8f\x86\xf3\x11\x88Si:M=pm3.c:\xa2\xfc\xfb:\xc4\x1f\xbe\x97|\xb8I\xee\xba+\xd8\xb9\xfe\x92\xdc\x88W\x96u]|=\xbbZx41\xb8`\r\xb4\x8a\x02\x072\xf2\xdbk\xe3\xc4>\x96\xd7\xd7.\x9e6\xf6\xf6m%\xc6O\xf7&K\x1f\x8dx\xd8=\xeb\x8c\x19L\xe57\xea.\xc6o\x7fc\xab\x10#\x80\xe5\xc8\xb7\xf0\xcf\xf7x\xc4\x0f\x9f\xceA\xdb]\x89\x1e"6}\xf3`\x8f\x9d\xfe\x17|z\xc5\xb7Z\x06\x10\x15\xa0\x0cAo\xaeh\x7f\x8e%\x02\x9dv\xb8\xf4\x8e\xcazhk\x9a\xca\xc5G\xb1e\xfd\xbb3\xc4\x03A\xfc\xfd\xf0\xf9\xa4\xf1u\x87\xe8\xd3\xaa\x90\x91\n\xfb\xc2\xc7D\x91\x90"9\x9b=H\x9a-\xf6S\x9e.\xe64\xec.A`\xe6\x88\xcaV,\\\xf7\xaa\x04\xa0\x8c\x96I\x05\xec\x84\x95P\xbfJ\xc2.3Y\x13\x9b\xc7R\x9e\xd9\xc39\x1e\x8d\xdb\xdb\xbcQ\'\x02\\\xfb;\x8ay{Z\xbb\xab\x8ct.\x16\xd2\xa4\x87V]\xde\x15B:S6\xfar\xdc\xdf\xd5\x00\xda\xfd]_\x0b\xd1\nT\x92\x17\xba\x16f\xcf\xd4|\x1b&\x1c\x16\xc5\xe1\xe8%p\xfcB\xa4\\\xd9K\xfe\xcfH\xa5\xd9\xaei8\x14i\xbc,Y\'\xba8\x1aah<0\x9f\xed\xdb\xd7\xf9\x9c\xbc\xd8\xed~\xc4\xb1w\x9a]p\x07\x85\xd00yP\xf2\xf1\x99d\xac\x84\xf3xj\xe3F\xc1*\xb7\xe6mw\xae7\x9f\x98\x15\t<O,\xc6\x99\xc4lw\x96W\xb2\xb3*9\x9e\xc9 \x84WS\xdc\xa4[\xd6\xc3\x93\xccD\xcaD\xc5\x1d\xac\xd6\xe0\x0f|\x0e\x97\xbb\xb8\xe7\x86\x8f\xc0\xf2\x9d+<s\x18F\xe8\x0f\x1e\'\xf0\x86k\xa2\t\xfeJV\xab\xba\xf0\xe4\xb2\x83\x0c?Z\x89\x0c\xb0\x81\xc4.7W\x08e\x01Cj\x8c\x0e\\\xba\xe3qg\xee1`\xf6\x9e\xb9!ax\x1aPcE\x8f\xbb\xbfn\xac\xd0\xb5\x84\x12\xf2eP\xe0\xb01\x95\xa3\t\xaeC\xf5\x0e\xfe\xff\xcf%\xa1e^i\xc5x\xec\xa6\xa0\xe5\x96>xl\x98\xa7\x9d6r\x9a\xfa,=,\xc2"\xf2\x1d\x88\x86\x81\x8b>\xefy\x1dD\xc0\x1b\xadl\x96\xd4K\x93[\xa6\xa6\xf2\xff\xd8\xffVq\x8a\xbb\x8f2Q.\xaa\'|7\xa8\x7fM\xef#\xeeq\xb8\xdc\xd4\x1a9#\xbd:\xe2(\x8c\xcb\xbc\xccL\xf1\xa6h@\x89\xad\xff\x99/Z\x1avGEJ\xd4\xa3\x01\xe8Y\xf3\x91\'Z\xc0YL\xe09#\x9b"\xc1?\xfb\xc7\x04qFz\xf5\xbf\xd75\xa5\xe1\x91Z\xde\x94\xdc/*\x85\xf6\xf9\xcb\xfeC\xf8\x0b\xa1\xca\xb3\xd3\xac\x8c>\x99\xe9\x04\xc6\xa7\n\xea\x0e5\xd2\xe7\xa0\x8a@\xcdk\xbaj\x96i\xdaq\tp\xd3\xeb\xcbT\x11\x8e\x9dv%\xbe\x7f\x86A\xa5/#\xc9!D\x0c\rs\x12\xb2\xacTVL\x88\x17%]<G H\xbe\xb2\xb0#R\xe7\x86\x8a\x01\x07*\x08\xdb\xea\xead\x92\xc7\\\xe0\x83\xe1\x15\xa2;b\x14Y\xc3Eru\x82\x87t\x15\x96\x853<\xddp\xd5\x83\xb2\xbft\xd1\xae\xcc\x99_R*\x90\xd8\x91dT\xc7e\xe1\x80:+\xae\xd5.\xd6\xba\x81\x0ez\x86\r~\xb0Yw\xf9F"\xeb\xb4\xd6P\xa2\x98+\xce\x9fNY\xcd\x19\xa2~\tPqs\xb1\xf2\xc8e\xa3\xef\xe3\x9a\xb8B\xec\x88\x03\x1c*\xc1\x88l!\xdd\xb79\x05\x02\xa8\xd8\x10Y7\x81N\x9c\xca\x92\x9c\x0bl\x82u&\x1f\xe7\xb7n \xd8Mk\n\x94\x96\xdc\xc44 \'\xcfp\xb4\x14\xce\x9d\xfa\xa4w\xd5 ns\x0e\xe3w\xb6K\xfc\xba\xc4N\xaf\xfd(>B\n.\xc2\xce\xa2\x82\xa2\x9c\xd5\x1ba\xa8\xa3N\t\xa2`\xed\x98<3\xf8\x06\xb1:\x8a\xbd\xf1\xeaUyZ\xee\x8e\xcbaW~\xc2\x81\xa8\xe7\n\xd5\xc0\x00\xf6\xc0\x84\xffB\xb8\x06\xc0\x9d\\MM\xd8TC\x0b\\\xdf\xcb\xcd\xf1Lb}\xec\xd8\rAS5\xfd\x96H\xab\x1ai\xb8\xb3\x1b\x94\xaf\xba%yV\x9d\xa4W\xa2%\x0c_\x81\x91\xb0M\x08\x1e\xb2\x0e\xf1\xb1\x8e\xc3\x9b#b\xd1)h\xeeEIX\xd9\xef=\xe4')
4
- #واقعا برای 5 دلار میخوای کرک میکنی؟ حاجی ارزش وقت خودت بیشتره
1
+ from sqlalchemy_serializer import SerializerMixin
2
+ from flask import Flask
3
+ from flask_sqlalchemy import SQLAlchemy
4
+ from flask_admin import Admin
5
+ from flask_admin.contrib.sqla import ModelView
6
+ from wtforms import SelectMultipleField
7
+
8
+ from sqlalchemy.orm import backref
9
+
10
+ from flask import Markup
11
+ from dateutil import relativedelta
12
+ from hiddifypanel.panel.database import db
13
+ import enum
14
+ import datetime
15
+ import uuid as uuid_mod
16
+ from enum import auto
17
+ from strenum import StrEnum
18
+ from hiddifypanel import Events
19
+
20
+ from .config_enum import ConfigEnum,ConfigCategory
21
+
22
+
23
+
24
+
25
+ class BoolConfig(db.Model, SerializerMixin):
26
+ child_id= db.Column(db.Integer,db.ForeignKey('child.id'), primary_key=True,default=0)
27
+ # category = db.Column(db.String(128), primary_key=True)
28
+ key = db.Column(db.Enum(ConfigEnum), primary_key=True)
29
+ value = db.Column(db.Boolean)
30
+
31
+
32
+ class StrConfig(db.Model, SerializerMixin):
33
+ child_id= db.Column(db.Integer, db.ForeignKey('child.id'), primary_key=True,default=0)
34
+ # category = db.Column(db.String(128), primary_key=True)
35
+ key = db.Column(db.Enum(ConfigEnum), primary_key=True, default=ConfigEnum.admin_secret)
36
+ value = db.Column(db.String(2048))
37
+
38
+
39
+
40
+ def hconfig(key: ConfigEnum,child_id=0):
41
+ value=None
42
+ try:
43
+ str_conf = StrConfig.query.filter(StrConfig.key == key, StrConfig.child_id==child_id).first()
44
+ if str_conf:
45
+ value= str_conf.value
46
+ else:
47
+ bool_conf = BoolConfig.query.filter(BoolConfig.key == key, BoolConfig.child_id==child_id).first()
48
+ if bool_conf:
49
+ value= bool_conf.value
50
+ else:
51
+ # if key == ConfigEnum.ssfaketls_fakedomain:
52
+ # return hdomain(DomainType.ss_faketls)
53
+ # if key == ConfigEnum.telegram_fakedomain:
54
+ # return hdomain(DomainType.telegram_faketls)
55
+ # if key == ConfigEnum.fake_cdn_domain:
56
+ # return hdomain(DomainType.fake_cdn)
57
+ print(f'{key} not found ')
58
+ except:
59
+ print(f'{key} error!')
60
+ raise
61
+
62
+ return value
63
+
64
+
65
+ def set_hconfig(key: ConfigEnum,value,child_id=0,commit=True):
66
+
67
+ if key.type()==bool:
68
+ dbconf = BoolConfig.query.filter(BoolConfig.key == key, BoolConfig.child_id==child_id).first()
69
+ if not dbconf:
70
+ dbconf=BoolConfig(key=key,value=value,child_id=child_id)
71
+ db.session.add(dbconf)
72
+ else:
73
+ dbconf = StrConfig.query.filter(StrConfig.key == key, StrConfig.child_id==child_id).first()
74
+ if not dbconf:
75
+ dbconf=StrConfig(key=key,value=value,child_id=child_id)
76
+ db.session.add(dbconf)
77
+ old_v=dbconf.value
78
+ dbconf.value=value
79
+ Events.config_changed.notify(conf=dbconf,old_value=old_v)
80
+ if commit:
81
+ db.session.commit()
82
+
83
+
84
+ def get_hconfigs(child_id=0):
85
+ return {**{u.key: u.value for u in BoolConfig.query.filter(BoolConfig.child_id==child_id).all()},
86
+ **{u.key: u.value for u in StrConfig.query.filter(StrConfig.child_id==child_id).all()},
87
+ # ConfigEnum.telegram_fakedomain:hdomain(DomainType.telegram_faketls),
88
+ # ConfigEnum.ssfaketls_fakedomain:hdomain(DomainType.ss_faketls),
89
+ # ConfigEnum.fake_cdn_domain:hdomain(DomainType.fake_cdn)
90
+ }
91
+
92
+
93
+
94
+ def add_or_update_config(commit=True,child_id=0,override_unique_id=True,**config):
95
+ print(config)
96
+ c = config['key']
97
+ ckey = ConfigEnum(c)
98
+ if c == ConfigEnum.unique_id and not override_unique_id:
99
+ return
100
+
101
+ v = str(config['value']).lower() == "true" if ckey.type()==bool else config['value']
102
+ if ckey in [ConfigEnum.db_version]:
103
+ return
104
+ set_hconfig(ckey, v,child_id,commit=commit)
105
+ #واقعا برای 5 دلار میخوای کرک میکنی؟ حاجی ارزش وقت خودت بیشتره
5
106
  #Email hiddify@gmail.com for free permium version. Do not crack this cheap product