hiddifypanel 3.0.0.dev64__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 (37) 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_2.py +33 -3
  18. hiddifypanel/panel/cf_api.py +35 -4
  19. hiddifypanel/panel/common.py +98 -3
  20. hiddifypanel/panel/custom_widgets.py +71 -4
  21. hiddifypanel/panel/database.py +18 -3
  22. hiddifypanel/panel/hiddify_api.py +70 -3
  23. hiddifypanel/panel/usage.py +4 -5
  24. hiddifypanel/panel/user/templates/home/multi.html +1 -1
  25. hiddifypanel/panel/user/user.py +2 -0
  26. hiddifypanel/static/css/custom.css +6 -0
  27. hiddifypanel/templates/500.html +1 -1
  28. hiddifypanel/xray_api.py +109 -3
  29. {hiddifypanel-3.0.0.dev64.dist-info → hiddifypanel-3.0.0.dev65.dist-info}/METADATA +1 -1
  30. {hiddifypanel-3.0.0.dev64.dist-info → hiddifypanel-3.0.0.dev65.dist-info}/RECORD +34 -36
  31. hiddifypanel-3.0.0.dev65.dist-info/top_level.txt +1 -0
  32. hiddifypanel-3.0.0.dev64.dist-info/top_level.txt +0 -2
  33. pyarmor_runtime_000000/__init__.py +0 -4
  34. pyarmor_runtime_000000/pyarmor_runtime.so +0 -0
  35. {hiddifypanel-3.0.0.dev64.dist-info → hiddifypanel-3.0.0.dev65.dist-info}/LICENSE +0 -0
  36. {hiddifypanel-3.0.0.dev64.dist-info → hiddifypanel-3.0.0.dev65.dist-info}/WHEEL +0 -0
  37. {hiddifypanel-3.0.0.dev64.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-08T16:23:30.335870
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\xfc\xfe\xdayi^_\xfc\xf3\xa8\xd8\\1\xa6=v\x00\x00\x00\x00\x00\x00\x00\x00\xc6\xefHA\x96\x18\x1dm\xc6\xa1\x0c\x90@ntP\xees\x8d\xbb\xe74\r\x12\xed\x15\xd6\x95\xa5_\xbf\xa6\xe7JG4\x1dJ$\xf3nR\xc4\x835\\\xae-\x8a\x1eF\x9c\xac\xdc\x05\x93\x9f\x92\xa6\xe4z"B\xc9\x99\x82\xca\xc3N\'\x1b\x9b\xc0s\xba\xb5\x9aZl\x04S\xb2*s\x91\x89xQ\xe5\xfb\nu\xd8\xe9\xab\xa7\xf7!\x10$0=\xfa\xbdU\xba\x9d\x84\xdb\xbf\xb0\x1a\xd84\x93\xeb\xe8bcKA\xefO\xe1lW-\x94\xdc\x05\xf8\x89\x98\xf1ra\x8d \xfb\x95\xa6\xf4}$xA\xd9\xfc\xab\x05\x85\x02\xfa\xdd\'\x93\xa4\x80$\xbf\xeb5]\x0b\x80m\x82\x80)\xcd\x7f-\xc8LP~ZB\xce\xa4\xd6\x06Lw\xcaXX\xb3\xfeUO\xd9\x13\xc2\xa2r\xad\xb0\xf0R\x18#N\xa1e\xc1\xc1N\x9e\xc2+\xd0a8\xcd\x10\x9bC\xda\xa3W\xd3\xa7\xb8\xc5\xd3l\xe4\xf0\xbe\xf5\x17\xe2\x02\xe9%F\x95\xcaj}\xc3\x18\xe9\xc3\x18\x9dP\x8b\x11\xd9\xed\xcd\x92\x85\x0f\xe3\xf2gdMMMa"\x04\x02\x11M\x0ex\x03h\xaa\xebhG\xb4\xcfD&\xf1\xdes\x93o%\x9c^\x9a\x96\tK.L\x1d\x854\xe1\r\xf2\xde\x0c7\xf3\x1dA[]ht\xff\x18\xa5\x8b39\xd6\xe2y?\xdb\x0b\xb69\x8c\x8b\xd8`\xcdCgLJ\xa8[\x0b@\xdacT9\xaa\x04\x9b\xfd\x01\xc1\xactQ1X\xe4\x86\xb6\xf3\x81S*U%\x88\x848\xf15(\xed7\x01\x90\xac\xe8\x9c\x17R\xea\x03\x1f\x966\xbf\xb7q\xad}k,l~\x82K\xaf\xf8x\xe5l\x1b\xe4\x16\x9f\t\xb8\x07\xbe\xbd\xdf\xd8\xf2\x16\xa9\xdd2G\xe7\xc36\xb7Pn\xce\xe1-`\x9eF\'\xee{\xa6\xcc\x9exRs\xa9@\x91W<\xa1{i\x8e\xfc3,S++\xcd\xe05-\x9c\x99\xdc\xd71&|02\x8c\xc6\xe7\xce\x00\x18\xf0>\x91V|\xc5\x88\xb2\xd8@\xa4\x16w_\n"H\xd6\x9c$\xae\x13\x8aI\xc6V\x98s\x9d\x0c\xf3>Pd\x94MS\x8e\'(\xb4\xf1\xdaf\xd7b\xb2Do\x10\xa9.LX\xf1\xa4\x83\xc8\xf0*\xde\t\xd0\xf1\x8f\xe8o\xe7\x14\xbd\xf2t)\x96]Mr\xbbv\xb4.o2\x8b\x95"\xef\t\xba\xed\xe1_\x18\x92\x07\x80\xfb[\x0f\xc9E|i\xb1\xe5\xc2\x06`\xb1\x17\xcfdN\x08\x1a^\x94\xe3$hp\xe8\x19\xf1\x83j\xa94\xe7\x83\\\x87\xb9\xa1\x95\x81\x93\xb5\xc6\xe3\xd9\x14\xa5\xabmre\x022D)`\xd0\xcf\r\xdf\x9f\xed\xcfwmW\xdaW\x1e"\xe6K\xcer\xee\x9d\xafz\x98 \x0c\x10\x1a*K\x04\xebt3\x10\xf7\xeb\xa3\r6\x03\xf2\xe0\x02\xb8,\x98\x85sl\xea\xc0z\xack\x16\x19\x03\x7fWhF\x84\x89I^%\xc7\xab\xa0\xdfG%2\x0e\xea|i\xf0\x81]\xa9\xf6\xc0\xda\x9e\xcaE9E\xdc\x00T\xd4\x83)\x97\xf2\xbd\\_\xa3\xc7\xce\x1bQF\x05\xb5\xdfw\x8e\x15\xc8\x00\x01\x95T\x83\xb3\xd5*\xdbE\x05]xv\x00\x1ew S\xe5\xf71xI\x01!Q\xb7C[\t\xd9\x9b\xae\x0eA~\x83?\x14O\x82\xc8\xa3\xa7\xb2\xa9\x18R^~gh\x95\x02l\xd0O\\\xda\x9b2\x99(\xf7\xfbnf\x94\xa2\xec&v\xdf\xe4\xd1\xb6\x14R\xecD\x05\xcd\x04L\n\xfdX\xc2\xa0%\xee;\xf4\xdcNc\xe0G\xc6\x11\x13,\x00D\xe5q\'(J\xef\xc5xvS1\xbb\x16\x7f\xcbNe\x96\x1e\x1f\xb0}Q\x80Gv6R\x117\x17\xd5i\xaaE\x7fw\x08\xe9^\x1b\x1cm\x80%\xf5\x89p\x12N\x9a%\xf4\xa5\x16\xdb-[\x0bP\x9arS\xd2\xa2\\\x156G=1\xf7\xd5\xd0]\xb4\x7f\xa38\x06\x9cf\xed\xa1\x00N\xd0\xffN\xa6\x8d\x98\x88\x9d\x93\xa0\x87\xbb!\xc8\xbe\x92\x10r\xa0\x1a\xa0!\xac\x19\xdd\n}\xe5}O\xca\xcbz\x8e\xeeLL\x1f\xdf\xbd]H\x92\x83\xd6\x10\\\xdcp\xff\xe7\x1f\x9dzJ\xec\xc73wZK!\x11Q\xc7\xa2\xd2\xbdm\x9f\x85\xfd1F\x1f\xfar\x0e)$\x04eG\xb1\xa9$\xdd\xa1N\xf9\xd2\r\x15m\x1f\xdd\xba\xaf-\x07-\x0b\xb7\xeb\xaf\x9f\x9d\xf1\xbd!\xa5v\xc6\x8fSp\x9d\xeb\xa5\xfdl?\x8b\x85\xc5\xa9\x9c?s\'\xc4\x82\x18\xed\xc5\x85\x01\x83\x9c\xcc\xa2\\\xd3\x19\xf5\x9807\xa2\xf7\xb9J}i7\xb3\t\xc0\xd5\x12"/\x9cPM\x15\xf3\x9e \xd9\xd2\xf2\xc4\xa23\x8azJ>5\xd8f\r\xd7\xcf\x00\xe5v\x98ZY\xae6\xa6l\x16\xb3\xd0D\xd8J\xe7f\x8f\x7f\xb2y\x15\xf8\xfcy\xf3\x18<y\xf0\xe2\xb5\xecQ4+\xf9\xf3\x08\x0e\xb4\xe0(\xd3\xfaJ#\x99\x9e)\xa8\x80\x9a?-&\x05\x129\xeey\xc5!P\x84\x17\xd6\x01/\x93b}\xb3\x85\xd4d\xc6\x80Z\x10\x11/=\x1e\x10\x9c\xf7\xb0\xbb\xc0\x10\xaf\r0\xc7\xa4Qc\xb0\xa2\xfe\x10\x02\xa8\xb8j\x1e\'"\x03\xf1|\xad|c\xff\xafS\x97\xbe\xfe\xa2\xdd!\x1a\x14c\xc3\xa5c,\x14_\x12\x9d|\x89T<2(r\xc0$~+\x9e%[DhV\xa8Z9\xd5\xf8&h\xca?\x17#\xc1\x18h\xdd\x97\x93\x87\xf5Mlo\xfd/\xaah\xd7j"\x1d\x99\xd4\x96\xa0\xf4K\xfbi\xa6r\xaa\x1a`\x99\x9e4\r\x9e\x0cL\x8b\x86\x15\xd9\xd4\xc1ZS`\xce\x9bmZ\xb6\xe9\x96\x17\xc0\x8cG\x0e7\x90\xadv\xf4\x06N&\x86\xfd|\xdf\\\x99\xed!\xfe\x06_\x90\xf6#(\x8f|\x94\xfb\xac\x84\xf6\xa6T\xa4\x96\x8f\x0f6\x87\xe7\xa8o\xb2\x95k\xc0\xee\xbd\xc3\xaa7G\xa5t\x12i^5B\xff\x8f\xc3\x16\xd5\x82\xcf\xc0\xda\xfdl?x\x88"\x91f\xbc\xb1\xf4V;3\x16\xefR\xe3\x0es:=\xd5.\xfcO|\xe5\xd6O\x88$\x10W;Y\xe9\x97\xd0\x9b\x81\x97J\x93b\x1d\x04=J\x10\x11\xe7)\n\xe7z\xa2{\xde\xb4\xc0&\x01\x9c2\x8e\x7f\xeb\xed\r\x06\x97\xfc^\x9de\x12\x08\xe1a\xd0H\x82\xa41\x94\xed\x13\xed\n\x08\xf7\xc1Po\x8ay\x7f\xb6\xab\xa8~\xaa\x14\x1du\xc8PM)\xc7\x86\x1b>\xd8\xbd\xbc\xe7\'\x9d\x89\xc6J\x12m\x0e\x05WM\x99\x1aw\x03\x88\x1e\xe2=C\xe2\xc2\xd0\x90\x07\x87\x00\nt\x14YF\xeeN\x8d\x95\xfc\x17z\xde\xafOb\xecqHc\x1e\xff\\\x00\x04\x1e\x8c\x14\xe8\x8bo\x81Y\xad\xcc\xa9~\xcd\xd8\xff#\xbf\x99\xb1[\r\xbd:\x1a\x0b\xed\xe4\xd5\xa3\x8c\xedAI\xde\x8a\xf1\x81\xda\xa0\xd9[\x99w\xf9\x86\xc9T\xc5q\x10\xe6.s\x89#r\x9c\'\x93\xect\x12\xc3\xe10\x8f\x8c\x80}\x9b\'b\xab\xab\x88\x12\xf2}\x8b\x9d,\x87"\xb1\xa9\xdd8^\xdd)\xcb\xd5\xb3m\xbaR\xc8\xf6b\xcf\xb7\xd8{\x12\x0b{\xfb\xa77}\x9f\x18\x9a?\xd9\x10\x90\xefy}\xd1z\x87\xcc\x836\xc7Du\xd7\xdar\xd5\xb3\xd4\x9d\xb5w\xb6\xf0\xb6]\xc0 \xe1\xfe\x96;\xa6\x96O\xad\x9f\xa8\xaf\x9d\xc3ay\x14\xb9\x1fF@\x86U\xdd\x9a\xbbJ\xda\x7f$\xb1y\x95\x07(\xd9|`\xa0Q\x19WU\xf9\xfe\xdd/ud\xfd\x8d@\x18K~\xe0\x1d\x9d4\x0e(#\x8f~\xca\x88D\x1aD\xfd\xe3\xbe!\x8aX(\xba`r\xc9\xbf\x01D\xe8\x96\x11mP4\x87o\x832\xe4\xd9\xd7\x8c^\xdb8~$\xc2\xfd,<l0\xa6\x08\xcb\x90\x1aH\xa7\xdc\xbfC\xa2\x9e\x13WiQ\xf6\xf2KG@\xdb\xf0@\x11(\x10\x0e2\x03\x97\xf4\xdf8T\xb3\x96\xb3@8\x0f\x9e\xa0?{\xc2\xdc\x05 w\xf4\x9f\\n)\xf0j\xd2rT\x898\xecrc\x00\x86v\xf9Rd\x0b6\x9db\x1d-h\xe8\x1c\xca`\xa8\x03$:\xa4\x929\xd0l\xa6ERL?u\x85\xa6\xe8\x1c\xfc;\xa9\xa4\xbb\xbb9Xt?H\xee\x06-\xe3\x1a\x00\xc2&\xd2\xee\\k?\xc9a\xaf\x8a\xdf\x7fy\x8a,\xf6\'B\x83L\x0c\x91\xcfb\x98\x11\xbc\xf3 \xc8\x12\xdd\xd6\x11d\xb7b-\x9c\xdc\xb49\x86\xc6\x1c[;3\xd0\xf1\x88\x0f\xdf{9\xb5\x0c\xc9*\x0c.\x15\x831\x8e\xc6\xbf\nc\xf9A\xb6\xefIy\'\x82Q\xaf.\xfdD\xcb\xa1\xbcy\xcf\xc0[#\xf3\xd6k\x1a\x0c>I \xa2>\x8c:\x06\x90\xdc\x07\xca\xec\n\x96\xbf\xa0\xba)=6F\xddO\x13\x01\xad\xb6\xeaC\x11{"T\x81\xee\x17?\xf6\xfb\xbd\xb9\xec\x057\n\x8e/Y\xa8:_[\x913\xab\xd0\xee d\xdf>\xca\x95\r\x8e\x05z\xe1\xd4\xea\x9c\x13\xed\xa49\'\r\xfeA\xde\xe6\xa6.c!L\x94SU\x03,tN\x96w\xc2\x1e"p\xab\x8bb\xb7\xe1\x84\r(\xf7\xda^\xe0dv\x01U\xebf\x88p\x13\xf3\xe8i\xbe\x9c\xbbb\xe3^\x9bJw\x81\xfb\xcf!\xb3\xc3\xce\xa0,\xb8\r\xa0[\xfb-\x9dd8p\xccA\xdb*\xd81\xd0\xcc\xf2U\xc0kq\x8bx\xff\xd5\xd2\xde"\x03\xb8\xf0V)\xe1\x9f\xf2kX\x9f: \xae\x0f\x81\xc3\xd2\x9a\xd2\x0b\x13\x80\xf9\x93\xc5\x93H\xb9H\x86\xde49\xa5B\x881\xd7\xb0\xa8UY.\xd0\xb4h\xb1\xc3~\xa2m\x88\xfd\xae\xc7k\xb3A:\xbe\xe4\x16Y\xff\x1e\x7f\x84\xef\x1fI\x0bJ\xa2\xbd\x1f}V\x9cC\xbaq]Rw"o\xa4N\xd9G\xb1\x97E\x17F\xaap\xf1\x8f:GH\x92\xbf\xf0\xb6\xa7\x19\x03Bpl\xb7\x1c\xd9\x02s\xee\xbfu\xb8\x98\x88\xa0\xe0\xd0e?\xbfqcw|\x16\x81u\xee\xd8O\xe7\xec\nMTTI\x0f\xca\x82\x14Z2\x91G\xe7w]\xc3n\x13\'\xe1\t3\xbbkI\xf4P_r\x16\xd4\xa2\xd9\x94\xb5Zn\x15\x10\xe5\xfe\xd2\x10\x04\x18\xdb \x17\x95|\x86\xce\x8a#&\x84\xd1\x1ct1\x98i\xeeo\xe8\xb8\x9a\x8f\xadd\x82\xe3_\x1e\xe8\x9a\xf8\xb8\xd5\xbe\x9b\x16w$_\x1an\x89\xd9\xbe\x85\xe0{\xeb\xa9@SZ\xb1\x7fjEZ\xbdU\xa0(\x15\xcb\x07\x0f\x14`\xcb}D\xbb\x02oD\x1a\x08(S\xe5d\x03\x9a\xb8\x90\xe9\x04t\x07\xd8z&\xf26{u\x86\xb3JZ\xd8\xd5\xd5\xa8\x0b\xe54uV6\xec\xd7\x86~\xb2l\x07K~\tKTh\x07\xb4hh\x04f\xceZ\xcd\xf4\xd7\xb2\xcb6f\x06\xcc\xf3\xb4O\xc7\x9aeX\xd9\xc3Lj\x97\xff\xea\xfeo-\x97R\x84g\xef<u\xbd\xf1\xf5\xbf\xff\xba$\x1c\xae\x0b\xfa\x03\x8d[\x02M+\xa7%m\xa7\xfa\xd8\xf2U\x87q9KZw\x17+\x13\x8c\xb0\x82\x8e\x8aK\xe7\x019\xf8\x8eG\xc3"J\xbc\xeb\xf0\xfb\x84\xce\x03\xf0\xe0\xf1\x87\xf1\x1a(2Jx\xa9\xe7\xe0\xf7M\xbe\xef0\x07\x1f^\xc4\xfe/\x11\x1dg\xf7\x89Uk\xc9\x90\x19\x80\x19IW\xcb\xfc\xba\xf1\xabb\x84O\xb4\nU\xc2XZ\x8c@\x99p\xd3\x0b\xd4\x1f\x81YK\x89\xae\xd9&s@\xe2\xdc\x8a\x02\xca\x81[\xa7}\xa7\x92\x08F\xa8\x93\x8el\xf3Ab\xfa\'W%&X\x07\xc3\x9b\xd3MVLW\xd5\xc2\x97G \xec\xe7|q\xf1\xf1\xbb&P_\xf0e4\xbb\xf3O\x87\x1f\xa2p\x7f\xba\x13\xd9\x13$\x16!\xc2\x89B\xab\x12\xc2M\xa9bS\xe5\xa5\x0f\x817\x9e@-\xfa,\xd4\xfbA\xa4\x88\xaa\xc7]\xdb)`\xf4\xd1F\xb8o\xc0\xe6\x8dl\xab\n\xe6\xfa\xeb\x99\x85\x15\xf7`E_\x80\x1d\xb8`\xdf\x85\xc9x\xc7S\xb8\x11\xe2\xe2(\xd32\xf1\xa1\x08\xe2\x87\n\xa0\x03+\x9f1;U\xff}\xce\xb1\xc6\xc0&\x1b\xe1\xf4[\x9a<w\x12\xbe\xc07\x99\xfc\xdc\xd0N\xa4\xf5\xf9\xc3G\x10B\xe8\\tO\x05\x94i\xdf\xe2\xdd\xe1\xfa\'f\xb0\x83-\x87r \xcc\xbc\xa9\xc4\x04:\xe8|\xb9\xe1\x84\xd0u\x823\x17\xc9Z\xe3\xd4\xe74\r\xf1\xbc\xfc\x84LT\x03%\x03<]\xdff\xf9q\x9c\x8b6\xa9\xd1\x87z[h\xc4\xc2\x1a\x94I\x00\x8b\xbb\x02\x9e\xa2c\xb0\x0e\x93\x1d{\xc5tC5\x91\xdb\x1b&Y\x86\xdf\x1c\xce\xf4\x9c\x08\xac7#\x98\x8ffL2E\xa7\xad\x08\xa40\xd0\x88\x97\xb7\x08b;\xfb\xe9\xaa\xff\xd7\xbb%\x1en\xda\xfd\xa0\x00\xef\xf6\xd3&v\xb6X\x07\xc9\x13/\xc25O\xa2G,p\'\x17[u\'\xe6\xdc\x19\xb5\xf5\x82\x9b[\x91\x03v\xb7\xb6l\xafz\nQ\x0fR\xfbu\x81\xff[G\xcc\xa4\xd8\x15\x84C.5P\xae@\x91\xfc\x91\xc1\x9a\xe0\xd5\xde\x80b\x87\xfdz2\xd9\x06!\x81\x85\x97\x03N\x93\\\xcd?.\xfb\x80\x18\x8e9\x9cf\xfa\xa0\x8c]x\xaev\x9f=.Kb9\x82\x0b=6-\xb9\xd5F\xf2\tQ\x81\xae6\xf8\xfb\xb8\xb4\x97\x01\x88\xc44t\x82j\xbdp\x1b\xbdbS\xfe\xa6\xae\x95\xbf\xd3i\xf9\xb1\xd0\xb7tg\xcc\xf3N\xe7\x02ca\xbd#\xa4\xa0i\x8a\x99\xa5m\x01a@{\xb4+\xb3\xa32\x89M\x9b\x1c\xf6\xc2}\xa3\xb8\xfa\xd6\xef\xf4\xe0\x0br\x8f\xaf\x9e mx1^\xbe\xadU.\xaeqs\xc6}\x84%!)vU\xadE\x03\x85\x823\xd5\x8e\xb0\x9f7\xbc\xfb\x1e\xcd#CBA\x80Z\x08\xaf\xbcj\xcc\xecU\xb1\xd5\xc5\xd1\x07N5\xb2GF\x17\x93#\n\xc6.\x8eO\x81S\x8d\xe5\xaaYM\x91\x1d\xe2\xd5;Y\xef\xc7\x8aiat\xee\xa2\xa3br\x8e\x8b\x12\xdf\xcf\xd6\xe3S.\x14*\x948\xa1!^\xa7\xa4\x97+\xce(\xbaH\x17I>\xef\x94\x15KyM\x13\x1a\xca\x17\xe5=\x82\xbc\xc47\x8f\x93X\xf3S"h\x86yW`C\x02\x02\xc3\x9e\xd7I\xa7W\x14&8Ny\x8cP=U\x9fJ\x0b9')
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.dev64
1
+ 3.0.0.dev65
hiddifypanel/VERSION.py CHANGED
@@ -1,5 +1,3 @@
1
- # 2023-04-08T16:23:30.322693
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\xb1\xabD\xb3\x95!\x8a\xb9\xdf\x9fJG\xc7\x1ax\xd6\x00\x00\x00\x00\x00\x00\x00\x00\xf9\x82q\xb5\x07\x03\xad\x0c>\xad\x88_*\x8cn\xc5\x17\xc4I\xf8\xedK\xe6\xb8\x84\xb3\xf6\x89g\x9d\x91tJzJ\xa8\xfaR@X\xea\xd8?\xd2(\xec\xee\x9a\x17\x15\\\xbf\xc4T\x8f\xe8`Y\xf4G\xc9\xdb\r\xfc\x02c'\xcf\xee\x16\x07\x89\xac\x97\xbb\xe4\xa6\xc3U1\xbf\x89 \xa3\xdf\x82\x195\xc7\x12[+\xac\xed\xad\x0c\xe9\xcd\x94q\x8b9J\xcf\xea\x98\xad\xf7iE\xab\x01\xdb#\xdc\xe0\x88t<\x83\xc0\x86\xb1\xa3\xb7\r\x90/\xf9Zj\x8f\xfb\xc6\xfeIx\xce@\x11w+,\xd0LR=\x1b\xd7\xf4}\x1f\xf7\xc4\xe1f\x9c \x98\xadAuVj\xae\x07\xcbj\xbbX\xde\x9d[\x04{\x83\x88\x80\xd36\xbb\x11\x14g8\xbaK\t\x80\x87\xdc\x06n\x1f&\x17\xcde\xb4\xaf\x81\xf4\xf1\xfaE\xbd\x82\x11;\xafS.\xf5l\xe15@\xbc\x82\xb9\xbc\xff\xda\x7fi\r\xe5\xb1\x97\xfdg\x19\xb6%\xd3ceC\x19\xe3O\xc0B~\xb5\xdb&\x96d\x96\xc0o\x91\xd1\xba\xa7\xe5TQ\x85Q\xcd\x80M\xde\xc2\xb4r\n\xca\xc6\xc5Q\xb5\x17{O\xd8\x18\x15R\xbb\x018\x0c\xc34O3E\x0e:\x1cJQ3\x19\xe9+\x1a\xda)\xab\xc68}\x7f\xb9\x02Q&(\xc4h\x8b\xca\x9dNP=\x03E\xfe\x9e\xa8\x03B\xfc\x0e\xb8\x03\xc1u\x8a\xd0\xea\xf0-\x0cH\xe6\xa6x\x7fI\xfa\xda\x07\x88\x92\x12\xa8\xe3W\xbf\xa1W\xfbv\x0b\xfc\xf7k\xb3\xce+\x1f\xcd3*\xbb\x98\xc0\x1b\xfemy\x12\xb9\xadD\r\xdd\xced\xa6Z\x90\x1e\x9aB\xc4\xd7\xcf\xca@\x9dn\x0f\xa5x\xccY8d\x89\x8dL4\xd4I\xbdX`\xb3\x88\xe4\x1e9\xde\xc2\xc4\x16D\x9eG\xa2\x001K\xb2\x04\xf7\xaa\x05\xeduc:j\x06\xaa\xec\xe4\xd5\xd2h\xaf\x7f\x9d\xb9`\t\xbd.\xce\xd7o\xdf\xc7\x8e\xfc\x11\x0e/\xf78\xb2?,\x0c\x14\x98jA^\x07\x96h\xfca,\x9f\xf0")
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-08T16:23:30.325353
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\xbd\xc2\x93\x8c=\xc2\x8c\x0b>\xe4\xf0\xe8\xbe\x06\xfex\x00\x00\x00\x00\x00\x00\x00\x00$\x050\xf3\x9e\xfa\x10\xd8\x9cK-\x89k|\xf5\t\xfe\x99cc\xe1\x935\x9bc\x16+\xdaN\xc6\xc8\xcd\xa1\xbe\x1e\xe3\x9d\x12J\xe5u\x0c\xa5o=\xf27\x8c\xd34\xc1\x17S9^\xe0!\xac\x8d\xe6\x1f\x00\xa2\xc2#\x8ap?\xef\xdb\x91\x90k S\x11\x9f\xaeD<\xacK\xcb\x87\xa2\xe6\x99\x15\xfd6\'\x00)\xef\xb9BY \x92\xe6:\xc5t4\xbb\x98\xf3n\xf9\xa3|\xd9I\x1bN;\xee^Q\'\xc7S\x88eq\xf4\x9e\n\x16D\x7f\x8d``\x19\x86\x8b\x94\xfe\xd3\x19J8er\x08^\x9b\xfaZ\xfaRd\x85m\xbf\x1aNA\x00Y\x1eAzg\x81s\xfa:\xcat\x9c\xd1\xed\x90\xea\xbb\xe3\x01z\xc7\x11\xb8\x80\x9as\xfe\x13\x1e}\x85\xce^\xec\xe6\\\xf0\x98o\t\xabw\xa6\xf4\xd1\x934\xac\x1f\x1a\xd4\x1aU7\xed\x1d\x10L \xad\x02\x85m\xefS\x81"\x7fmZ\'\r\xfam\xf5\xba\xf9\x8d\xf9\x87\x1b,\xc34\xf4$3\xdd2\x8e\xfb\x9cT\xcf\xef[\xe6\xa8\xf1\xaa\xa8\x9do\x9b\x1fH\xef\xe6/_<\xe1I\xda9\xf5\x81]\xb8\xfc\xbc\t\xb90\xa7\x81\x0b\xf8d4\x90\xab!\xe4\xee\xd5\x15\xcf\xc8\xc3B.\xf2\xa0\xdaUL$\r<\xfey\x15tc>C\xef\xd6\xca\xb0\xff\xa9\xb7\x1d\xcb\xb8\xc2\x07\xcd8\x83\xeai\x83\xaf\x0f\xb6\xbc\xc4\x10\x1aG~E\x8c^H\xeb\x18\xb4&\xebw\x8c%-\xa0\xe3\xf1\x1e\xd3\rt\xb3\xac\xaa\x94\x0b\xbe\x13\xe5\xd2s\\:\xf2\\\x84\x8ch4\x12\x7f\x96\xd4qMw\xdc\x82\xb7\x05\x0b\x19\x1baE6?\xb5e\xe8\xb8[\x1ew\xa3\x14<qC\x11\xd5(\x90V\xbc\x06C\xc0E\xba_ub\xf60 \xbadys\xcc\xf2e\x16\x0e(\x86P\xce=\xb6\xc7\x19\xd7\xd7\xcb\xd1\xc1\xd7d\xc7\x7f9\xb6\xa9\xcb\xd7\xa9DCQH\xc2\xeeN\x89\xe3_O\x8d:H\x9d\xf1\x97\x02S|,\xd7\x94\x03\x17\xb7\xb0RLY\x9a"s\x1d\x80M\xd96 \xc6\xfb\xe999\xba\xb6\xb1\xfb\tL[\xdf\xe7\x97\x17\xd3\xb9!\xe4l\xce\xcc\x0c\x9d\x95\xa0\xa7\xfe\xfd\xcc\xe1[\'\x97!\xef\x98\xf4\xdcn\xd7\x11e%\x8cI>\xe6Q\x08\xf4\x8b\x9d\x94\xa79\x8f6<\x93\xdbJ:v\xcb\x04v\xfd\x9d\xc0\x1d\xd4\xaepB3)\xcf\xec\x03\xab1G\xae\xbfPz.\xeb\x91\xfc\xa2p[@W;\r+\xa2\x97\x16\x87i\xa9\x87\x07\x19\x15$\x88\x85\xbfg0\x94\x90\xfbX\xf5\x95\x1e\xf8\xb2\xa8k\x8f\xc9\x1f\x8a\xc4\x12\xf6\xacN\xf0\x8aW5p=t\x87\xd1Z\xc7\xb4\xf4\x1b>\xf2\xf1\xf6k\xf33F\xf64\x01\x8a\xac\x19+\xca\x14=\xdc\x99a\xc3}&\x969\xf1\x13q\'\xbd\xa7Z\xc6\x90X\xebME\x0b\xf9q\xd9\xe2k<\xf3\xea%B\x1b\x9e\x9b\xd2\xe7B\x96E\xb5\xd7\x0c\xef\xd1Z\xa8\x06\xf7\xa8\xd9\x82NX\x8d\x9eqg\xca\'u)1\x81\x81\xb8t\xfb\xb2\x1a\xeb')
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-08T16:23:30.328185
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\x00v\xe4%s\x18x\xa0\xaft\xe1\x08\r\x0f\x86\xadd\x00\x00\x00\x00\x00\x00\x00\x00\xc9\xad{o\t9s\xf2\x01\x83\x180R\xab*\xd5C\xe9\xad,)oI\xaf\xebr\xa4Q\xb9S&\x8fF\x1d\xdf\xf2\x1d\xe5\x03gh4\xe5\'ml\xd9\xa8\x13C\xd4\x9c\xe2\xa7\x8f\x87{z\xe9\xa3\xe9\xa1p\xc1n\x8a\xff\x06\x96\x0bc\xdf\x82\x855\xc9\xa8u\x02\xb6\x86\x86B\x99c\xd7\xd4\xe1\x1e^\xfa\xc9\xbcQ)\xa8\x8arT\xbcX \x9c\x89"\x0e\xc4\x1a\xc3kX\xde7D\x03K\xae\xd6\xaeB\x07\x95UL\xda MJ\x12\x10\xca\x9c\x86\xae\xb6\xefK\xd2\x81\xf3\xb6\xfaTc\xa9p\xfa\x11\xce\xc5\xacK~\xac\x18gg\x83kr\x9f\x1a\x83\xce\x96Bi3\x97\xee\x1c\x06\xb7\xa3\xb1N\x90\xabC\xfb\x18>\xd45\xa3G\xdf \xed\xbe]p\xeb\xf0*\xc0\xd9xtE\xdf\xcd\xb3U0\x85\x1dP(\x84\\\x87\x05\xd8,\xc8\xfbq\xf3D\xfa\x04\xb9J\xd1\'\xfb\xf8\x8f\xe2O\x04\x9f/}?\xa5\x83i.\xb5y\xea\xc9ff\x03\x86\xd5\x81\xa6\x8d+hg\x08+\xd3\x9d:\xa3\x7f3\xcdy\x00L\x83\xad\xad"j}\x190\x15\x03 \x81\x8b\x17|Y\x8dh\xdc\x91/n \xc4\x92\x17\xde\x81\x1f_\x06\xd3\xd5\xf8cK}\xe4D5\xd9?Fo\x13\x98\x8f\xf9\xa0\x92\xe6\xf7\xea\xfd6\x08W\xfd\xe7o\x12\x97\xf0\xa3w\xbb\xd1\xc9\xb6){T\x05\xde\x01"F\xbd\x1f\xdb\x08\xe0\xb6\x16\xd4\xf9\x1bCk\xa9\x85w\xbc\xc5;\xc3/\xef\xce\x87\xb6\x14\xf5_\xc5\x1e\xfda/s\x92\x93\x98H\x9e{\xc2\x0eb7\xd4R\xb4[N\xe1|[m\x93\xe4\xdcAH\xb8\x9a}\xe8&\x06\x8f\xeb\xcf;P\xb4b\xcb\x19\xea&"\xff\'\xb3Y\x8a\x9an7\x83\xd5\x86\xba5\xcb\xb7\x80\x1c\xc9\x18\xe6\x8d*@\xe1p\xe4nU\x08\xb2\xef\xf7\xc7ltK\x1f\x1f\xc4m\xf6z\x00\xe5g\n\xc7\x95\xd8[f\x9b\x0e\xd3Q\xb7\x0bs\xa4\x91\xb5\xc0M\x9eG\xc6Z\xb5Y%S\rG\xf8\xfc`\x12\x0c\xee\xb3\x95#\xcf\xd0p\x8c\xf8!>n\xd7Z\xc3*\xc5G\xd7\xa6\xd4\x07P1\xa2\xe0\x8d\x83\xeb\xe1\xc1\x8dF/\xc8\xb0\xddIO\xfe\xc5\x9b`\xa5e|\xab\x92\xa6$j\xbdn\xdb\x05\x16\xd3/w\x0b\x84\x11\xf2xe%\xc8\x8f\xaf\xc3\xa6\xdc\xe1,\xb0\x93\xff^\r\xee\\\t\x915\x9b\xd3\xf9(\xe4d\xe6\xa8\x1am\x0fq\xeap\xc2P\xdb\xa8\xcb<\xc7\x18\xa1\xb2z\x19On\x99\xcb\xa8\x1d\x9e\x84L\xfd\xf2\xcaHF\xd8\xdd\x9e\x8c\xec<\xbcDx\xa8k5\xfb\xaf\x9f\xcdqqAq\xa4\xa9\x05ih\x82\x02#\xf2\xaanl$[9Ge\xb4\x94a\x88G\xc8n\x1dn\x90\x80\xb0#\xe7#\'I}3\x01\xf4^ai\\\xaalnU\xc2M\x0f\xe8-P\xae\xde\xf7e\x1c6o\x9f\x83\x8f\xd9NS\xab\x12~/\xbc\xb8\xc5~\xcfs\xbf3\xc8\n\xeb\xaf(\xfeF\xb3\x1f\xcbX\xe0\xb0\xe1\xd5\x1boP\xc5\x8f_R\xda\xb7\xfe\xb4~\xbf`\x14y[uu\xb4\'t\xa1\xb0\xd5)A\x90\x99\x8f\xc8{\xd4a;\x7fE\xdd\xd2\xad|\xe5\x83\xe3\x04\xc4Zb\xe4\xc7\xaf.\xf6\x87\x1cP\xe33\xb0\xdc\x92\n7\xa5\x14\xc7\xbc\x03W\xe8\xef\xedj\xfesZl\xd6\x1e\xb8:;\xc5\x01\xc1\xc1\x9dz\xf2e\xd58\xdf\xd3\x1f\xa3Vbr\xd8\x14\x1c\x8e\xf3\x96\x85\xb0\xa0\x86\n\xbd&\xd4\x9a1\xd4[d\x00n\\0-F\xa3\x14\x8bzF\xb6\xb0\xc9\xa7q\xc9bW\xc0\x1c\xd5\xce\xb3\x98\xf7hl\xb3\x85y\x8f\xd5\xb0"\x80\x16\tl\xf5o\xe2\xe4\x1e\x13N\x840i6bu*9\xfb\xad\x87V,\xfe)\xe29(\xe3~\xb7\x9f0\x00\x12\xc3k\xe8\xefr<FIYh\xa0\xfe\xdb\x04{\xf0\xd3\x91O\x14fV\xc6G\x9f\xa0\x82o')
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-08T16:23:30.349703
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\x00\xad\x8a2\xf2\xef\'\xf1wn\xc7\xf7\x8b\xaa\xca\xd3c\x00\x00\x00\x00\x00\x00\x00\x00\x89\xca(\xe3\xc1n\xb2\xd1]a&x\xabQro;\xc6`\x8e\x15\xc0\x7f\xb9\x1b\xb9{\x0fe\xc1\xd4\xde\x9b\xf2+\t\xd7\xe6\xe8\xc4RI;<\x0f\xfa\xea\xcb\x17\xf6HGr\x14\xdfr\xc6]\x7f\x1am9\x03J\xff%\xf9\xb5\xfa\xcc\x16m\x7f\x86|\xb2\xfei\xa9\xfbRn\xf6:\xe9\xaa\x19\xc3)\xf6d\x9d\xbb\x15\xc8\xb3\x95S\x85\xdf\xbd\x8c\xccJ7A\xed&\xa3\tvO8\xaae\xcfk\x82\xda\x06\xf8]\xec\x10\x1b\x1c\xac\x08\x01HB\x9e(5\xc0\x87\x02\xe4\xcf\xc3\\H\xc9\xc9I\x01\x1e\x01\xf6y\r\x9ez)\xc1\xb5\xc7{7u$\xb9\xcf:\xc3\x9e\xeb\x1f\xaa\xcewU\x1c\xf8\x1bW\xe1\x95\xefq\xe1\xc7\xf3\x0bXQ\x80\xb2\t\xd0\x8b\x0e;\xd2\xfce\xd0?_\xba\x92\x0e\xe9\xbdR\xba\x7fGL\xc1\xa2N\x892\xb9z}|>\x05T%\x99P\x07\xf7\xa2\xab\xadM\x97\xd2\x078EX&\xc8\xa5]\xe0%\x82\xa0E(-TQ]\x80\xa3\x87\x07\xad<tW\xe4\xab\xf8?R\xe2n_\x0c\xa7\xfd\xa4\xbf\x97\x01\x9a\x1a1Fn\x0e\xac\xa7,\xedD)\xfa\xc2\xf3\xc1\xd2h7\xff\xd5\xf2\x1bD\xbfc\xf8\xfe?q\xb0\xd9\xa7\xf1\x9bN\xe4k\xf46^O\x9d[$\x8b\xfcb\xf8\x1b\xc1\xed\x8f0\xac\xee@V\xa4\x99O\xbf\xce\xb9\x9am\x1f\x89\xa3\xac8\x17\xe8\x83I\xd8\x1d[\x9cU)\xe4j\x1d\xde\xce\xa3!\x9a\xe2-\xd0c\xf6\t|\x9e\xa1\x86\xac\xd9\xec\x1a\xf0\x91P\x0b\xe0\x19\x8d\xdd(\x92\xdan\x1c\x1c/\x90\xff;\x90\xc1\xea\xbe\xfd&\x8e`\xb91\xc3\x1d\x84\xf3\xb9\x95\xc0\xd1\x04\xc9g\xb4v/\xe1{ew\x93\x040\xfe\x88\xb3X\xc3\xaf\x08\xe8\x9d\xafUo\xfco!\xf1%,\xd8H\x16\n\x87\xf1\xfe}\xda\xf52\xff{b!\x88u\xa2\x8e\x86L=8;^\x1b\x05\x87\x05%/\x91j\x98\x9e6Q\xf8\x1dkK\x80~\xeb\xf5\xb4\xe9\xef\xd8\xd6\xc3\x984\x82\x9dK\xef|\xc2\xe3}\x1c\xbd\xb7\xb7\xfc\x1b-\xa5\x88\xf6\xb9\xa7l\xdf3\x85\xb9\x83\x94\x8f\xb8(\xe5\x1e*%\x9a\xcc\xee\xfb\xe5\x15#\xa6\xb7%\xb5\xa5\x81\xd5-\x9bZLh(\xac\x9c%T|\xb3wE\xb1\x87j\xa6=\xbc\xf1qDU\xb2\xdc\xa6\x06\xd84\x8f.A\x8d\x14\x19\xaa\x04\x9b\x8csB\xd6\th\xddiL\x82Q;\x82<\\ w\xb2o:\x134\xac\xdeM\xd7]\xb0l\x96\x11U\x7f\xe1\xba\xff`\xdfX\xc7\xee\x08\xe3\xf5jocA\xa6U\x8fcH\x96\xe3s\xb0\xa7\x08\xdbY\xa2~`\xb0\x8b\xd5\x94\xec\\\xcef\x18\x19\xab\t\xaf\xb1;W\xe2\xeeT\xf5\t#\x0e\x9c\xbf\xa4\x80u\xc2\xba\x9c6*\xd9\xee\x88\xae)e\xa6\x16\x1f*\xfd>d\xe79\x1eR\xa6i\xf0A\x82y\xf7w\x89\xd0\xf1\x80m\xd2\xe2\x82\xc1\x8aoI\xe7\xc8\xbf\\\xfb\xfe\xd5\x99z\x05\xc4=R7\x06\x99\x86O\xd9XJ\'\x0cq\xaf\xe9\xf40\xcaelU\xca\x19:\xf4\xa1\xbd\xb0\x8d\x87\x8f\xfa\x0bw\xdc\xc8\xfc\x08\x07\x8e\xf7\xa3Y\xec\x87\x1c\xfa\xe9\x0b%\xc4H3\xd401\xb1s\xcc\xb6h\xbe?\x14\xae\xc4\xe3\x7f\x07Z\xdfs\xd7\xfd7\t\xf6c\x84\xbe\xee\xedR\xd6\xeb\x81\xcd\xef\x1eE\x8d\xd3j\xed\xfb\x92R\xb7\xe4y \'/\xa6/q\x1ad\xcd\xf2!?\x9d\xbeD\xc1N\x1c\xba\xff\x14\xcd\x0e\x81h`I\xea\xa3\xfb\xa3V_Y\xa7zG>{\xc1.\xa6!\xad\xb95\xec\xb1/\x10\xf8\xb2\x05\x81/\xcf\\V`\x98\xba\xc6 \xc7\x81 \xd9\xb1ru\x86\x1e\x08"\x9bf\x7f\x0f|\x93F\xf7\x0b\xdf99\xd5\xba"W\t\x8e4\xa3\x1f!\x0e\xadfU\xb5\xe6\x06g\xbez%\xbf\xd0\xd1\x11w\x13a\xaf\xef\xc7\x03\xf8\xbeB\x88&\xa6\xb3)v`\xb9G\x87.3w\\\xbdy2\xb1W\x17P\x86=,\xc4\xb8w\xb7\x05\x92\xeb:\x1el\xde\xe9p\x1c\x1c.d\r\x87\xf4\x88Q\x98\xe5<\xe7!q}\xe0~\xff\xf9\x96-3\x8f\xbb\xd7MJ\xf8\x8dS\x0c&\xd03G\x9e`\xe2\t;\xb4Q>\xec\xdfyf&\xa9\x00>\xd4\x8f\xac\xafj\x92Hz;\x13\xc3W\xf0Yz\x92[So\xbf^\rD\xf4W\xeb\xc1>@\x0e0\x89\xe0i\x02\x8c2n\x07\xbe\xe5\xa7\x98i\x96\xe1\xf9lVa\r\xe49\xb2\x8bP\xf4\x0f\xe8\x93\x9bpF\xa1q\r\xa6k&\xbf\xda\x9f\xca\xcca&\x1d\x1e<bss\x94\xc0\xe1Z\xcd\x8e\'\xec\x05r\x81\xe7\x80p\x07T\x80\xae\x97\x02L\xc0\xb8\x99\xc9#\xe9\x8b\xf1\x06\xed\xa0\x81\x9a\x85D\xbd*9\xe2\x03\x81\xa9\xf6\x04#\xf4\x83R}\x90\xe9\x08\xe7r\xd1\x0crI?\xdd\xde6\xc4\xc1\x92\x8b\x1d\xb4\x13\xb3\xcb\xc4\xb59\x1f\xe6)\xf6\x06\x8c\xc1i3[\x84j\xdcp\xf6i\xa1\xdf.L\x17\x19S.\x8a\xd1\x02\xa2@\xda\xf3\x0bqn\x7f\xf5\x99P3\xf9\x01\x05\xaa\x8d\xbf\xa1c\xfe\xd05M\x8f\x88\xe7\x16"\xee\x1e\x8b\t\xa2\xde\x97\x0c\x95,P\xd4\x8b\xddg\xc7\xa2\xff\x8c\x1c\x91\x9a\xb2\xa0\x00\x11\xc3\x08\x89\xdcsM\xe9\xd4\xc8\xcc\xde\xd3\xde\xbfw\x1a]\xc9\xccz\x01\xdf\xcd^]w\xec\xc3\x120\xd6\xee:LI\xf5\x8bh\xa1\xea\x9aU\x05d\xeeWl\xd0%?\x05\x96~\xa7_\xe9\xa4\x18\xcci\xd8\ri\xc3\xf6\xe6\xd3\n\xf1\xc5\x14\xafP(\xe9N\xcd\x15H$\xf8\xdam\x93\xaeD\xd0\xde\xb4\xad?\xd3`\x1eSG\xc0\x8b|\x85(a\xbb\x8b\x8a\xe4\x03wH|\x075!\xb6\x8cth\x91\x9c\x05\xbe\x8b\x07\xdbt\x05\x10\xefQ\xc4\xbcw\xfb\xd4\x07s\xees\xad\xa16\x99\xc8\x84\xb5m\x92\xdd5\xa2A\x88\x15\xc5Qvh\x91\x8at\xc9/Mn\xfc\xff9\x1e\xe7\xad\xa8 w\x1c\x1c;\x84\xcd%\xab}\xcb\xdb\n\x17\xf6z\x1eV\xbd\xed\x154\xca~91\xbcg9!y\x01\x1b\xcf\xc2Bkkbk\xf5\x06~\xa9F\xda\xdd@\xa4Ee\\\xce\xa7\xaa\xb2\xd3\x1cl\x83\x84\xc9$\x1d8\x07\xafW2\x17\xaa{^\x12\x96\'T0o\xfd\xd6\xb2\x04\x85I\x00\x19-8a\xad\x08\x8c=\xcb\x03\xb1j{\xa0\x88\x03u\xa8\x1d\xcdE\x8b\x0e\xa0R\xb4\x97n\xf1\xdbns\x9a\x8el\xa1\xe2\xb7\x7f\x1b\xa7\xbc\xf41uSbT\x00\xda\x0b\xb5GE\xd9u\x95(VGg\x14\xe9\xef\x1eA8\xce\xf9M|I\xde\xc4\x9e\xa8\xa5\xad7DO\xb3|&t\x8f\xcbR\xdc\xd5\xfb2\xc6\xbb\xe1TZ\xa4/O9\x1e0\xd8\xd0\xb6\xd4\xde\xc4\xa8[\x0bw\x80h\xde\xb0\xfd\xc7\x86\x08\xde\x8e\xb2#\x96\x8f\xb3\x87\xc8o\xdaQQ*M\xe7\xac\xb6\xc3l(\xaf\x87Q\xf6\x0c:|\xae#\xd7\x15\x94\xd7\x0f\xcaH\xa8Ys\x00\x8fB(\x98R\xe8\x8e\xc87\xed\xdc\xb9\x97K\xf8"\x04\x8e\xfb\xb31`"\x1b\xe2\xa2O\xc9\x16)&\xecb[1z\xd5\xe2\xc7\xc9\x84\x1c\xf4\x93\x9f\x9a\xddq\xea\x8c\x0f\xf7\x03\x0c\xa6\x87\x8b\xc2s\xdfW\x96\xeb\xcd\xae\x0e\x1c?\xed\x83\xb1\x84\x1d\xc6\xa7\xc8\xcf\xe5N\xe2\xce\xe4\x80\xc99\xcf\x8f\x82\xab\xcd\xb5jn\xeb\xfc\xe6R\xc9\x83\x03\xe6[\x06c\xf6>^\x07\xf0p\x90\xad{Q\xa3\xc2\xc8\xea\tc\x0c\xc9q\x0e\xb4\x00~\xd3R\xda.\n\xbe\x1e\xf7\xd1\xab\xe3\xf8W\x96\x8a\xe2$\xf0\xa9m\xaa\x16\xaa\x90\xbcn\xb1%\x8a\x1fe\x14\xdb2a\xe7Mbz\xed\xfc\x83\xf5\xcb\x02n\x12\xe4\x18\x07\x8e\xe7\x8a6\x94\x10\xd8Wb;\xae-\xd2g\xed\xf6y\xcb,\xd5\x89\xdd\x04\x15\x0c\xfeU\x83\x8e\xb3\x9c\x97\xcb\xb7\xf3>\x87\xe4\xbe\xf8\x06LT]DD"S\xda.\xe1\xc1\x97W\xbc\x9d\x07c\xc4\xf6\x1f\xbdf7\xa0/r9\x841%\xd7\x15\xc8\xf8O\xff\x9a_L\xaa6x\xca\x95\xabO\x80lkPX\xe5w\xea\xfb\xcb{.(\xd3\x9e\xc5\xd0\xf1t\x98\xb3\'\x85i^\xe9\xeb\xdc\xe4\x89\xbc\xe1\x17\xce\xbb\x05a\xb3i\x8d\xb5\x10bD\x1b\x00|\x85\x98\x1b\xf9U\xc7F\xcf\xd0\x95\xefN|2%*\x9c\x19\xb1a\x18\x1d\xe6\xa2\xbc\xf6\xdf\xack<J\xcd\x90\x81\xe4\xc7\x89\xe5\x87\x17O\x80\x0c\xa7\x96\xd8\xeb*\xc5\x83\x07\x1a!d2\xa3\xdf\xf1c\xb5\x85UU\xf2\x07\xa1\xb0\xea\x81i\xac*\xd91\x8f\xba\xdc\x8b\xf5\xd7T\xb93n\x8d\xde\xe8E\xdd=\xd1\xcc\x036\xd4\xe9]\xa9\xba9G\xec\xe7\x05/\xec\xe2M\x85\xe6\xb1\xe4\xb7\xe3\x05\xf3\xebc\xbcB@6\xa5/E\x9c\x1d\xdb#+\x81T)\xdd\x19\xbc;5?\xf6\xf1\x8d\x9a\x9f6\xe8f\xfd\xba5\x98\xa3\xf7;\xbb\x1e\xc3\x1f\x1a/6$\xbe\x98\x9bbW9\xc5|\x9b*\x95\xe6\xe0\xdd\xa0(\xc3\xe1\x84\x19OfDZ\xb8G\xc8\xe6\xd7"?\x84\xdc\xe4_8\xcb*jN~\x95\x9f\xd2\xa1\x03\xba5\xe4\x0fC\x14q\xbc\xacm\xd3\xb57\xa4\xbf\x10\xb5\xf2\xf3\xba\xafP~\xa6x\xabM\x86\xa6a\xe8Yt\'\r\xabT\xf6\xbe\x95\xcb\xf23\xb8G\xdf\xf3j:\x9b\xf5\x9b0N\xc2\x85\xfb\x9b_\xfc\xd6o\xf2:\x06\xb7v\xceE<\xfbJ\x0f\xec\xdbR;u\xe36\x10\xa7\x19\x87\xd0;\x99\xe0\x85\x03\xbc\xf2\xb5~\x9f\xd4h\x16\xb6j[N\xd1_\x9e|\xbd\x9e\xb1\xa3!\x1d\xc7\x8fPf\xd4\xfc*\x13\x16\xa6\xe5\x05\xce\xecv\x0c\x05\x7fp\x04\x15<nz#\xfbS\x1a\x96#\x89?#\xe1\x9c\x16\x8bG\x10/\xe9P\'\xcaG\xa0\x15\xf8,\x87\xedr0\xba(\xcb5\xa8q\x80\xb8\xcc\xa6\x81\x1c\xfb p\xf9\xbf;(\x01\xcd\x0f\xf8\x19o`\xc0\xe4\xf7\xddTH`\xed>\xa6Xw\x95V\xae\x93\xb5u8ss\x15\xba\xc4\x90!\x0c=5\xb8K\x12\xd8 N\xfb\xfb}\xe4\x1c\xa9\x19\xb3L\x82\xee\x03\xc2\xab\xa1\x9a9\x18\x05\xe0\xad\xc7\xbdl>{\x94T\x925-\xac \xdb\x00Da\x9c~r\xaf\x10j\x8b\xc2\xe7D0\xa0V@\xa8a4uu,\x9f\x15\xdc\xf8]\xafL%\x1a\xda\xed\xb1\x94\x12\xaa\x9dZ\xe1P\x91\x86 \xc9\x9d}+\xcc\x94{\xb3\x99\xee\xdfb\xc3\xfb\xf4\xa4\xa8\xc8\xda\x83\x9e\xdf\xab\xf4\xf2\xb9>\x98jI\xe1\x1c\x03,#\xabO:\x9biw\xb1vS\x04mE\xdb\x18:\xa4=<ZFj[\x84\x9c\x9av\xc6?1K\xdc\xc3P\xa1\x07}\xc03k\xb5!\x8e\xc1\x8c\x8fxE\x03\xc7qQ\x0f\xde3S\xfe\xb0\xad\xc3\xb0\x80\x1c\xd1"u6+\xe8]\x13\x862\x1b}\\\x8d&\x87\xc2\xcc\x88\xda;T\x8b\x98\xc4q\xf6\xb7U\x9d\x12\xf1\xba\xa0\xc2\x91\x96\x84\x13\xe9\x19\x02V\xeb\xfa\xb0\xde\xcca\x87o\xd33\x91\xb6MK\x06\x0f\x88\x01$3\n3+\x8f\x9e\x85\xad\x9c\xc6+\r\xc15:q\xae\xaa\xf8\xac\x84^\x8f\xd4sI\x95\xd3\x08Rw3H\x1b\x0bp\xd7T\x1f0"\x13\x105\xe7qw\xbb\x87\xcb\xa9v\xfe\xdcv\xcd>\xc1\xa8\xe6]3\x8ej\x02x8,\xc2s\xa6%\xc75T\xe1\xe3\x886d\xb1(\xd5\x83\xcf\tC2\xf5~\x9f5\x8f\xb3\'H\x83\xd9`ED\x7f\xb4q\xfa\xf5\x80,r\xea\r\xfe\xee\xb3\x1a\x13\x8b\x84QW\x90\xcfF\x05\x03\x82L\xfe\x9b\x94\x81\xc6*\xcd\'\xfb\xbf\x94(,_QBN\x1f\xc1\x8a\x94\xa6\xe4\x96\xcb\xa5\x14\tT\xe7\x7f^XY\xc0\x96\x9eh\xbb \\SZG{\x17\x03\x1d!\x10\x05\x98\x03\xc3\xb0;\xac\x04\x83\xd9\x80l\x0f\t4\xcb.\xfa\xf0@\xfe\t"z\xa9D\xe8|\x83"8\xea#\xbd\xb2\\\x0c\xb4\xf4{o\xdc\xc0\x83\x8c4\xc7^\xaa0\x94\xb0\xdd\x0ek \x0f3\x93\xb0\xd4\xbe\x1f\xef\xc9\x81>\xe6\xe6\x86\x93;\xea\x94\x05+\x12U}=7!r\xf1\x80B\x86\xa3\x81S=\xd5\xf1\x15\x8ae\x03Q\x86{\xc9\x81#\x1e\xc6y\x1b\x89\xe8\xb3\x0b-\x16\xe8y\x82{\x1d\xec\xb0\x1a\xc8O\x01\xa0\x1d\xbe\xdb\x92\xe7NP.\xefw\x8b\x99Wm\x05\x97o\xda;Z\xb9jS\x98K\xff\xa9\x86\xdf\xc0\t\xda\x80\x97\xec\x1c\xa9\x7f46K7\xc2E\x8e\xfci\xac>V\xca\xfe)\xa1\xc4U\x16\xa9s\x8a\xccB\xca\xa3\x89Gh\x84E"^\xa49ZB@4\x16c\x1dc\xd9\x8avk\xe6\xd0\xc5\xdb\xa1\xeb\xf9.\xbe\x84v@E\xe2\xe1\xd8\x91-0\xdd~\x80\xe1\x1f!T\xa43\xecu\n\x9e\x9a\xa0.\r\x07\\\xcf\xbf\x9d\xf0\xc0\xa0\xb9\x03_5\x13U\xe5\xa1\xe4\xd2f\xa3\xed\xaa\xdd\x10\xd3\xbc\xe2\x81\x18\xd0\xfe\xff\x95\xcc\x91\xce\xa9<\xd0\x03\x9c^\xd1\xb3\xbd\x06\xa0a\x97\x99\xa0;\xb1\xc8\xfe0\xc2$\x07s\xd3*LlF\xd9\xa6\'\x89\xe0Z\xab\xc0V\x15\x14Tf$\x87T\xe0\xcaeV\x98\xa18H\xb43\xbbp\xf7k\xea\x86"8\xe2r\xd3AO\x95\xac\x97\xb2\xb6\xd5(\xdf4X\x14\xe2Qp\x05\x80\xe0Nn|B\xd0\xe0\xae\x9c\xf7\xf9\xa03\x06\xe7\xb2\xebJ\xd7\xd9w8\xd1\x96\xad:?\xe2\'\xb1\x12y\xeb\x9cm\xf6x\x17\xedH\x12\xede\'(\xa0s\x94)f\xc87\xdd5-F\x88\xb1a<S\x91\x0c\x80\x1b\xc4\x9f[\xf0\xf1U\x9e\xc5\xd8\x8b~r\x9c\xe1\xe3+\xc9CWkD=\xbe\x0c\x0e>\x8b^\x85:\x98ui\xad\xd9~Q3;v2\xcc\x87\xc3<4\x17\xcf\x14\xbb\x08\xc1r\xf6`\x1e\xb4\x004\xf0DWn\xd61\xcb<e\xd0C\x14\xe9\x0c]X@\x97A\xeax\xc15;\xb9\xbd\xd8\xcf&)\xe9!\xf6\x8dsO\xb3\xb6\xb6\xb8)\x91\xeb\xfd\ng\xf1OQ:\xdb\xc6\xc0\x19\xb5\r$\x1c6\xcc)\xa63\x8b\xec\xbe\xbd\xcd\xbd\x84\x97X2\xbc-\x907\x8e\x1d\xa8\x05>\x05\xb2\xad\xa8/<\xbe*\x9a\xbe\xad\xaf>\x13<\x98\xd6\xe2\xed\x8ccbQYw$.Zp\xaf\x1at\xc9&o\xe1q\xfaGl\xf1\xd9\x9c\xf8\x97Rf\xa0\xb3\x0e\xf90\xd7\xd3\x140SP\xf4\xa1\x12\xe8|\xd0J\x92\xb3Ke\xb0P\xd5\xd0\x12\x19\x9e\xe8zz\x90\xdc\x0cC\xb2,\xe4\x8fC\xcc}\x93\xdd\xfcZ\x88\xf5\x12\xd85l\x7f@\x8a\xc94\xd1\xdd\xde\x93R\xbb\xe3\xa1\xf8?\x96\xeb\x9c\xad0\xf5,\x15 $\xa20`\xa0\xdaT!\x16\xdd\x9d\xa8\xfc\xdc\xd69l\xaf\x14,\x00\x15g$\xa0h5\xc3\xb1.\xc89"]\x1dT\xf9\xe9u\x07I+\x85\x1d\xe7\xf8\xaf\xfc\x8c\x9a\xf6&K\x01\xfa/0\x0e\x0e\n\x01\x9cpG\xfeL\\{\xc0\xd9\xb3\xb6kS#\xce;\x95\xf4\x8c\x02E\xc5A\xa1&}\xfc\xf8\x89\x08\xc5\xff\xc0u\xa1\xed$W\xb3\xe8>U\xe8r\x02\xce\xcf\x01"\x1c\x9bi\xc5\xf08\xc2\xdd$\xeb>\xd7\xe5KPn\xd7CO\x11\x98\x1f\x00@\xe3}\x85y\xf1\x16V\x1aO\xf6\x9bte\xb2\x14${\x90I\xaa\x05\x96|Lw\xb1\xdcU\xc7BZ\x1cS\xd9\xef\x07\x8c\x7f.\xb5hK7\x96z\xf3\x8e\x13\xf8/\x9f\xa89j\xa1\xc1\x8d\x04\x13\x93\x05-{\xa8\x1c\x99\xdb\xf2\x0f\xe6ch\x92ix\xd4M\x9ey\xe3\xb4\xf5\x7f\xa7\x11K\x95y\x00\x0b\x9bLf\xc6f\xcf\xbe\x13\xb9\x8a\xf8\xfb\x81\xca\x0bj\x8b\x9e\xf4z\xfb\xb8\xa2\xb6\x05p(\xa3\xdc.\xa7Z8\xe4\x08\xb2\\\xfb\xa6\xfa\x95\x8aF\x97\x9c^f\x87\x93(\xe0`\xcf\xfd\xb9\xf0\xb9\xa6\xa0\xd0\xd8l0\xc9\x96\xf9^\x83S\x9a,\x92\x82.\x1ea\xd3\x1dA\xdf\x95\xce\x9c\x89d\xbe\x15\xbb\xa7\x05T\x0e\xb6!\x1fC\x8c\x03\xf7#\xc4\xca\x98\x89UJ\x16jO\x9fg:\xdb\xc5\x81\x9f\x91|\xad\xe6\x11\x16\xf2u\x13\rv\xb7lnD\x1d.\xed\xbcn\x8a\xdd$\xc9\xf6\xab\xeb\xa3\x189\xd0\x84Q\x85\xeb&YB\x8e\xaf\xd6U\xa5\x7f+23\xd3M\xddbE\x92\xc6X\xbc9\x7fd\xa2\xc4\x1e\xef\xea\xff\x89\xf3\x1c8\xdeh9\xe2~\xd46Am\xd7T\xaa\x91\x89\x9f\xa2\xa5\xf1\x81\x0f\xa8a\x83/\xf6T5\xc7\xdd.Q\xeevz\xec\xed\x17J\xfe\xea:\xeem\x19\x87\x052\xc9\x06-o\xf6\x1ah\xf8\x92\x06e\xccf%\x88\xdfl"Vx\x07Z\xd6\'YTD\xc7\x1e\xe3\xeb\xeeY\xe5\x10X\xc1@{Q\xe74\xbc\x0e\x83Z\x0b\xcfl\xe4w0sH\x06\xdd\x98\xd36_E5Q\xab\xaa\xd4\x9ep\xd1\x8e\xbd\\\xa3x\xbc\xf4\x9b~\x89Z\x06P\xf4\x16\xd84\xed\xf21\xc7\xffI\xd7\x08\xaa\x05z\x1c\x825\xc1WHC(\xca\xb16\xf8\r\xbd_=\xcb\xa6_\xb7\x919\xc8\x87\x18V\xd3\xa0\xf5\xd2\x9b\x08\xac\x8a\xcd\xf7\xce\xd4\x8eQ\x10\xad\xff\xc2\x10\xb7\xe5\xfetR#\xcbb8\x15\x83\x0f\'\x91y\xf1sa\x91:\xac\x1f\xc6>`z\xac\x0b\xaf]\xef\xf20~\xc9GK\xac\xa4\xc2\x9f\x01\xc3\x88\x92\x96\xed\x0eN\xe6\x9e\xe5\x17\x1fZ\xbb*\x7f\x07\xd8\xa2\xef\x90\x01\xab\xa8\'{\xe84\x0f\x9et/\xb8-\xeeY\xb3\xb9\x19Q\xe6\xca\xden\x018\xa5\xd0\xe7$\x95\x9d\xc3J@\n\xc5\x12\x14\x85\xb2\xad\xc1EU\xedQ\x0c\x82hi\xfa\xb6\xb2P\xc1\xe8Y\xd8\t\xd2\xe1\xec\xbfbH\xa3;\xe7\xd4\x9e\xa5\x93=\xcbv\xdd\x86b\xb7\xce\x9f\xda.\x9d\xdf\x8c\xa5$\xce\xb8>\xc2i\x91\xe9\x04\\C";\x18\xf7\x7f\xf7\xf8gUe\x1f\xed\xbf\x12\x08\x97\x10\xff\xf4\x91\xe8\xf0|\xaa\xff\xe4<\x93\xe8\x18O\x9e\xfc\xdbB\xc1\x04\xe1l/[\x16p9\xbaC\xee\x01#R\x81!\xf2\xfe\x97-W~\x02z<"\xec\xc9l\xae\x9eR\x0f-Y\xbc\xa1\xcf+\x8d\xaf;\x17c]\x85\xcc\x1d\x82\x87]\xe6\xd9\xeb\xe8g\xc9\x07\xa4Q7\x04\'T`\xd1\xa6\xe03\xd1\x04^I3\xd0/J5\xc6\x83m\xe7\xe9\xa3H*\xa2\x83W\x00\x9a|\xe7\xc5\x9d\xbf\xf9\x10Tx\xaf\xeeB\x0c\xc4\xdb\xd0\x03\xce01\xc4\x1f\xfbj5\xc9u\xdfc\xbf\xbe\xb0f\xe9\x95d\x19\x92\x16\x0c\xce\xecO\rhv\x0167\xe9\xd1\xb6\xb9\x1a\x08_\xcd~ w\xef\xa7\x089\x80\xd63\x8b\x823[\xaa\xf3\xc1\x15\xde\xfe\x83U\x17du\xb2\xe5\xe2\xd3Q^\x8fXc\x15\xe6\xcc\xf0m\t\xbdpc&\xdb\xa6^\x80^\xe9\x89\t?\xe2+\xbdb\x08\x10\xf47\t\xf1H\x067Y\x1f\xb5\xd6bE\xf9\xfc\xcdQb\x9c\xc3\xab\xd8]\xdb:\xef\xeb\xc8\xb4\x7f?\xcc\xa6\xa9\xe5k\xbb\x17\x85\xb6\x8cN\x1e\xd1f2\x9b&\x08\x12g\xe5U${f\xab\x81e\x07\x9d\xe9\xee_O\xe2~x\xf0\x05G]\xac\x94\xa4\xf1\xdd,K\xfa\xe0w2\xbf\xc70\x9b0\xe8\xa8\xffZ\xa5\xe1\xcd\xee\xc6\xe3O.\xc0\xc2\xc0G\x1a\xc6\x84\x84\x02\xa1$ \x9c\x15\x7f\x9by\n\x14[\x18^T\x80\xa9u?\xa7@/JR\xb2j1\xb2\x8fCA\x9d\xcf\xfb\x87\x98\x1bsI\x1e\xe0\xb8\xe1\xe0\xf7\x88\xa0\x12\xfc@8\x9c\x90\x86\xdblC\xe2\xb31:\xb9=\xf4\t\xa2f\xdf\x96\xf0s\xe7\xfcS0\xed+MlyxC\xa5\xe6\xbelUs\xcd\x99b\xa6\xe7\x96\x15~\xc7\t\xeac\xd39\x16\x9b\xf2\'.\xba\xaa\xa2H\x0fW\x95\xc4\xa8P\xfa\xf9\x99V\xc0\xbb\x05)\xee-\x89\x8a3!,\xd2\xcci\xbd\x89\x13}\xb4\x81\xbb\x81PI\x91]#=@\xd5\x1f|\x12\xfc\xec\x82\tB\xcbw\x8b\xdd\x9b\x85\x7f\xe0\xb5mT\x8a\x0b\x1c\x18\xb3\xab\xce \x98[\x0f!\xd3\xf0$!P\x8cx#h\xf4=\xedt\x1fJ*YuS8\xe0\x99=\xcc\x85\x95\xb8\xbcy"-lW[m\x14c@\xe9\x05\x8fdT\xe1\xc9\xb9\x13N\x8f\xb2\xb5\x8c\xb3\x8a\xf1\xd2!\xe9\x1f\xff\xe3Fm\x1e\x96\x01O\x0e\xc30l#\x19B\x8aB\xfbm>\xb02\xd7+\x1e \xc2V\x93\xfc;Y\x98Y\x96\xc4q\x8f\xe0\xab\x1aY\xf8\x8c2\xbe\xec\xdf\xdbJ\x91\x80\x16\x0f\xefs\x0b\x1b\xed\xe1\xddN\x0fny~nL\x1c\xec!,\xce\xa5W\xd3$~\x8b\x02`\xd4\x85\x93\xea#`\\\xc6a\t\x10\x1d\x0e2\x8b\x05\x00=[\xce1u\x80\xd3U\xab\x85\x1d\x8e\xe2\xd0\xa7\xc3%n\xc6\xd7\x19]\x81;\x86r\xb1\xc1\xd9Qo\xb3\xd3\xccF\x1c(zcP\xcc\xf7\xad\x93*{\xc3\x18\x11\xda4c\xb3\xef[\xdb\xbe\x0b\x13\xf4)$\xddo\xf7\xf5\xd1\x83[\xae\x9f\xdd\x1b\x81\\u\x03\xa9i\xfc&\xe5\xef6\xd2\x87a;\xf1\x9a8\xd7\x7f\x06\xc8-\r\xdb\xe3p\xe7V\x06~\xeb\xd0\xfb\x85<\xd1\xa6=,\x04AI\x1a\xf1qa^\x8b\x8eYa\xf7\xde\xce\xae\xcf\xdfp\xe0o\xfeH\x83\x16g\xf4]\xf0c{\'v\xaaD{4\xce\x02\xa3\xb820sG\xbau.\xef\x88{1\xcf\xfa#\xc6m\x14\x1e;\xd5Tg5G\xda\x8f\x8c\xeeh\xbb\xd1\xedb\xf0\xf6\x97\x1d\x06Wm\xd8\x03_\x9f\xfbD\x8f\x89\xc4\x89\xb7\xf9\xf08\']\x9dZ\xe9\x8c\x14\x02\x10\xc5\xdf\xce\xd7\xdfWh\xf6/\x1cxh\x910\x01\xbeil\xe2\xec7_*\xac\x12\xd0\xdf\x9f`\x1b\xc4(\x80P\x16\xed\x86\xda\x92,\xbd\x9a\x0b\xf7\x8b9\x7f`f\xb8\x17\xe7\xadh:e\x88\x89}\x13\xcb\xeb\x1b\xa0`9X~\xc6T\xd7\xfe@pP_I\xc9\xf5O9\xb9r\xa4\xee\xc2\x9dX\xc6\x8c\xcc\xe6\xaa\x9b\xad\xc1\x1c\x01/\xfc\x862Xf\xe7\tR\xa1\'\xcd\xb3:gy\xe1W~\xc7K5\xc8\\\xb1\xf1J\xeb1\xe9\xa0\xa1\xc5\xca\xdb\x15\xf9\r;\xed\xe5\xce@)\xa12\\\x7f\t\xe3<\xf7\x86\xd7,\xfe\x18\x1dZg@c{\xb5\x1c\x98J\xa1L\xfd\x9b\xae\x0c\xefe_$\xe3\x0b\x12t\x89+\xa56\x1b\x85\x8a*\xa2\xfb\xb2g\xd8\x7f\xad\x8e\x9c\xa3Q\x0e\n\xb0\xa2\xb33L!\x92\x0b\xa3\xc5S\x8b2\xc0\xa9\xbb0\xe9\xf8\xe7\xca\xd6\xd5\xbd\xd4\xb4m!\xcbQ|\xfc#g\xf79\xaf\\R\xe8$\x84\xb9W\'\x9d\x99T\x7f\x16\xcd\xf51\xc7\xb2;,\x17\xde\x8d\xa1u-\xe0\x99\xc6\x91gR\xe9\xa1!h\xda\x94\xdb\xef\xefy\xff\x99\x99\xe9\xff_gx\xb8\x03ph(\xde%\xa4\xad\x01\xf8\xf2\xa0b\xd8`\xd2\xcd}\x08*;\x13\xff\x1a\x83\xbd\xf4\xf6\xad\x97\x80N\xa7\x8e\x18\xf7Z\xd8]\x07_\x1d\xb9OB\x1a\x03\x15\xb2;\n\x1b\xc5\x81\'\xd1a\xda\x17\xce\x8di\xa9\xa9\xfc\xb9\x91n\x883\xb6\x94\xc8\x8e\x8f\x1f\xad\xab\x06\xc8\xa5\xfe\xa4\x0e:\x8e\xd5\xbc@\x08\xd4\x15c@l\xedN\xaa\xe2\x95\xa1\x04\xb85u\xe2\xbf\xe1\xb3g-b\xa8\xe9\xe1\x95\xbdT\x98\xe8\xeafz\x13L\x88z\xa6\xfe\xb7\xacJa\x7f\xd0\xb1cF\x92\xa8\x801S\xfd[\xf7F\xcaN\xca\x14\xbf\x06f\xd4G\xa0\xf7BY\xb5Vmy\xe7\x8e\x04\xbe\xba\xc5\xaf\xcef\xa2|\xe9P\xa9\xb8\xc7\xef\x9b\x9a\x01\x9b\x08\xbf:\xa6\x1f\xdb\xc8\xe4\xe6\xaa7\xd1\xaf\xef\xcb\x8dAk\x00\xb7\xe8\xfd\x01}\xa1\xbcR\x11\xc6\x8e\x7f\x90`L$?KBT\xf3\x82R\x807l\r\xf8\x83\xb1\xfd\x9f\xe00\xd9\xfc#\xc4\x95UrK\xaa\xffO]\x04\x8eK?\r\x12v[9Mu2\x83U\x81\xcb\x85\xf5\xe8\xc8n\xac\x96\xf4\xa08z:,Vf\xf8\xfd\x0c+\xa1zK\x97\x13\xc5\xff\x90\x122\xe3\xfc\x06v\x9c\xff\x19g\xb76\xfc~U\xe7\x10\xce\xe6\x19<B6\x94\xdd\xf7g\x08\x1b^w=\xe66\x19\xdd\xb3\x9a26\xa1&\xe7h\xb3\xce]I{i9;\xbf\xdb\xdc\xe3!\xb3\xf5g\xf5\x0e\xb8~\x01`\x87\x18\n\xff\x05\xa1+<:\x82\x0c\x0f\xa6\xbd\xc8\xfc\xc1\xe5\xc6$^/\xd5\x1e\xe9\xefBo\xfe]v4>\xcdcS\x81\xf6\x86h\xf8\xc8\xb6\xfd\xf6\x92dp\xd1\xc5\x83\x11\x9eG\xe2\x84\xad\xc3\xa7E\xfb\xdb\xae\x95\xde\xe1\xd4N\xbf\x83\x15\x06\xf2\xcd\xc9\xd4\xaa\xc5\xef\t\x1e\xaa\x07\x7f\x0c\xf4%\xd4{\xd5}L*y\x16\xa61\x15\xbcH\xb2\x07\x9e+\x02\xd6P \xb0s\x1b\xf0\x7f\xe7\x00\x8al\x80i(\xf4\x8e[\x84\x1c\xcdEY\xfa\xfc\xec\x9a\x020t\x08\xd5p\x82\xb4O\xc5\x0f>\xdb\x02\x98.\x89b0\xaf2?\x92\xcd\xea6\x14\xbc\xc0\xd0L\xb2\x9c\x86\xd5\xca\x95%\x8c\x84\x94[W\xf1\xc9\x95C\xc8\xeb\xcaK^r\x9e\x0f\xf7o/\x0f\xb3\xa3g\x19\x06\xe9\x92n\x0e\x08\x9b\x83\x7f\x87B\xc9\xc9\x108\xc4J9a\xbe\x02\n\xce\x8cK\x02\x17\xf7\xd4A\xf4H\xba\xb8"(\x9f\xa6\xd3\xfd[[Z\xa4\x03\x91\x1dj\x82\xa4\x7fJ>\x1aw\xdfS\xd9X\x16?\t8\xa4\xf4P\x10sh!\xf7}$\x8b\xf3\xc4\x10ZuO\xa5\xddU\x8f\xc7\xd5\xa5\x97\xe4\xf9\x19\xf2\x97LV<\xc6&k\xbf\xc7k\x10\xb6V\x01\x07m\xe0\xcal:\xb3\xf9W\x85*\x85\xc0Mu\xdd\xc5\xf4\x13\xef\x0b\xbb|\xd8Ze\x8a}\xf0\xca\x0c~\xbc\x14\xd1\x1d\xed\xb6\xbb\xfd3i\xb4\x8aN\x128\xff\xd5`\xb0\t$\x13\x19\xed\xf4i8\\B\xd8\x08\xe3\xecY\xdf!\x8e\x14\xce\x86[\x80\x92\xc4/q}{\xccb0<\xe9!\xf3i\xb4\x1d\n\xce\x11\x8f\x91e.\xd7+>\x9c&\xad\x15\nh\xa5\x17\x0e\x1d\xc2\xde\xc2e\x7f\xfe\x0bH\xa5\x9e%\xc2\xad\xa9\x88\xd789F\xd4T;\xc6{LM\x0e\xc68z:\x89O\xd9\xb3\xdbQ\x8e\x06\x0f\xef\x14x\x89p;\xffQ9\xa7]\xba\xe5\x1f]d{h\xae/+\xed;EH\xaeE\xadX7.\xd4\x13\x0c\xe4\xfc\xa1\xaf\xdf\x82\x17\xf6\xcfb\x81\xf0&v@\x99\x04\xbbW\xe4\x96{\xd9}#/E\xf4\x8fB^\xa2\xeb\x1e\x9a\x94rF\xe7u\xdfv\x9d"B\xe6\xc4\xe4\xca\xac\x8bv\xf2\xae^wt\x1c\xae|\xae\xa7\xc4\x15\x8c\x16\x07\x9b\xf7\x96\xb3K\x00\x18\x1d\xc4+\xe7\x167#7\x7f\xf0c\xe3>\x1fF\x996\x93\xb3sx\xaf\xed\x06\xe0\x7fx\xc9az\xbc\xb4\x8bv\xb1\xc0p\x0e\x11\xda\xbd\xa5\xdd\xednb9\xfe\xee\x9f\xb4\xc5\x16D7!\xe28A!\xe49\x9c\xfcIXv\xbb\x9f#\x94wxFb\x93\xf4\x07\xbe\xd8\x19\xff\r\xef\x1e\x0e\xddnV8)\xc8\xff\xbf\x90c\xcd\xa9\x8eiz4\xd1\xeao\x93!\xe4\xff\x83\xdc\xf1 i\xf6#\x8cw{\x1f\x1b\xd4\xadn\x00\x88\x96~\x864<\xfe')
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-08T16:23:30.320428
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\x00\x85-\xe5C1.\xc8\xc4XV.\x96T\xac|y\x00\x00\x00\x00\x00\x00\x00\x00,\x94\xec\xd4\xb6M\xf5H|\xef\xcf\xc6\xfdL\x0e\xf0\xce\n\x17\x1c\xd1\re%*\x9c\xbbC\'\xeb\xa3,\x08PR{s\xbed|\r\x00z\xecE\x8b\xed$\xc1u3\xb1&\x8c\xd4\\\'\xbf\xd9\x15I(\x10[+\xb6\x05\xbb\xba$\x7f\x0fZ\x9fM\xffa\x1d\x9f\x9fi\xbcPYwF\xa5\xa1\xb6\x84\x1b\x92\xda\xf03\x12TS\x9a;\xf1\xea\x8a\xbc\xda\\8\xef}`2\xc2\xdf\xb9\xaa\x0e\xcc\xc3"\xc5w\x1cE@\xf4\x07%\xc1h\x93\xc5\x87rG\xdb\xf2\xb1T`DL\xc4\x0f\xcb\xfd8\xf8\xa7W\xfc\xe8U<~x\x1dr\xa6\x90\xd4\xcb\xad\xd5d\xebu\x07\xdd\x0b\x81\xd1\x03\xa9\xbc4\x00b\x0f+F7k\x97^\xc2\xdb\xca\r\x16\xf1\xa7{m\xf1~NV\x08Q\xa4|Q\xb1Fs\x17\\\x9f5\xe5\x8a\xe4\x13\x17/r\x8f\xd9\xb1V\xe03\xbe\xa6E\xca\xf8g<[\xb6\x98\xf0\xad\x9a\xb6\xe7U\xa4\x94\xa0\xd6\x19\x8d\n\x80\xfcW\xf5\xc4\xf0&~$\x81P\xf8\xb2\xfc3&\x92=8\t\xc0F\xebX\x04\x99\xb6O\xa9\xe9\x14&\xa5Kab\x14\xa6\x93B\xc8\xf6t\xabj\x0c\x8b\x1aq\xc8\xa6\xd2&(1\xf4\x9a\xc3\t\x19\x96\x13\xfa\x8b\xd9\x19I\xf1\x9cg\x8bL\x86IOr\xdfB\x82\xc2\x16\x00\x1c\x93\xd6\xdf\x96\x0f-\x9c\xf4\xcatu\x03\xb5\x84\x95jQ\x00\x986\xc8l\xfc\x9b3\x1d|\x8b1\xf1\x932\x9d\xce\t\xaa\x10\xc50\xae\x17\x96\x8f\xd1\x82\x87\xa9C+~\x8b\x1f\xbdoM@\xd6\x80\xa4\xce\xee\x97\xc3z\xed\x94:\xf9\x1a\xb2\x03\x8f\xd0\xf4\xcb\x13\xe9\x13^\xf0\x82\x90B&\xdb\x95Z(\xee\xce\x1c\x96g]\xdb\t~()\xcf{\xf0\x13\xbaK\x82\xb3\x153FU\x17\x15[\xcdR;!.\xd6\xdb\x19u\x8a5\xe1Q\xcd\xbd\xee\xfe\ty\x7f\xae\xb3B0\xeeX!\xca\xc2\xb9\xea>\xcd\xa3\xbe\xa0}C\xd9%\x1c\xc8\x02\x1a\xa3\x03\xc1\xf6k`\xab\xf4<\xcd\xa3\xb2\xcc\xfbY\xdb\x17\x0cA\xa4\x1b\xd3yO(\xa7S\xce\xc3\x80\xa3\x94\x12V\xfb\xfb]\xbb\x17\xee\xab\xca\xca\x9b\x9bR^\x85\xf1\xedh!\xe0\x83}E\x90\xfc\x02\xfe\xfb\x19+ K\xcd\xa1"\xca\xa4\x9a]\x8f1\xf6\x88U\x8e\xe5\xca\xc1\x90\x93\xb9\xfe\xb1[..}\xf6\xdc\x1c\x90\xc7\xbe\xcf\xc4.r\xe0\x8a\x06\xd8U\x9d\xb7A+\r\xef\x92\xee)\xb4\x0b\x14 \xa4\xc3\xe17f\xa9\xd5\x82c<t\x83c-\x1bX\xeb\xed\xf8\x06\xf9z\x1c\xeaV\xa0w)Wsj9\xbbN\x04\xc8\xc4\n\x8a\xb37[<1\xb8}\xef\x04z\n\x7f\xf8\xa4\x8c5\xf4\xb2!\xf6b*/\xe6f\x81\xee)BO\x14\xb1\x15\xf5TV\xed1\xfe\x1f\x02\xedP\xd6e\xea\x00b\xb4\xf6\x96\x1e\xea]8y\xab-\xafj\x80\xb1&q.W\xf7u\x1d\xcdE\x99J\xab\xac\x82\x1a\'.\x0c\xd5\xe1p>\x03\xc4(\xc6\x91\xd0\x17\x9a+\x99\xd6\x8d\xd01\xa9h\xd6\xd2\x81\xa2\xdbP]F\x97\xde\xccS\xecZ\xe2\x98\x07:#I\x900\x0e\x9b#\x92\x00/.&\xb0\xff]\x8f\x03K/>\x1fQ\x1f\xab\xaf;\x8f\x07\xa7\xc8\xa2u\x01Qp\xbe\xc4Sg\x01\xf1\x8c\x94\x8adiH^\x99~>U6\x1f\xef\xd3\x1e\x1c|\xd1\xb2E`\xe1Z\xc6tEpB\x8cP\xe8\x98\x1e\x88\xa0\xb50\x95Pe\xfa\xd8\xa3\xba\xab+\xb8\x0e\x08O\x025EM\'^\xf1\x85:/\xb3\'\x8c\x8f\x15\xe9.nH\xc8$X\xd4\xfcvx\x1bI\xef#\xb0\xf00)~\x10]K\xa0\xe1\x8ac\xfb\xeb{]s7xL\x7ftF\tn\xbe\xdf\x00\x94q\xea\xfd=\xcb\xd1;\xb4\x89\xb1bZmraB\xf0r\x82\xd2L:\x81\x08\x11?h\x1a\x9be\xbc\xdb\x00j\x10\xde\xd5\xc5.\x91[+L\xf5R\x08&\x9e\x9a\xc1\xb7\xee\x0e\xf1\xa8\xeck\xbf\xfd\xb6L{\xb7*\x8e\x1e\x11N\x1e\x13\x19d\xf7\xe8\xc2\x91\x84\x0c\x01\xee\x12\xfe\xda\x1b\x96 \xe6\rF\xdaJ\x91\xa9\xfb\x1dc\xc3>\xc7y\xee^\xf4g\xb3\xc3\xd28\xc3\x8c\x1f\xd0+SC\xf0H{\xbd\x1a\x7f\xee\xc2\xda\xbf\xe2aiq\xfb\xf9\xd9,mR59\xba\xabV&\xe8G_\x18p\x19\x84\x82\x19\x86\x86;;n\x0f\x89\x1foX\xc2A\x83\x13\x84\x8e\xa5*\x84s\xe7\x99\xd3\xf0\xc0\x0c)\xa0\xf4\xca\tY\xc7\xebf\x1b\x02\xb0?#[h\x7f\xa1\xee\xb2\xd3N\xa6\xea\xd9wS\x00Y\xebnKZG\n2b\x92:\x88e\xef\x16<5q\xce\xef\xe7\xdcq\x89\xa8\x9f\xd6\x8486S[\xb8\xe3p\xe7\x83L\x94MO5\xd3J\x0e\x02R\x0f\x81_\x85\xe5\xf2sdF\x95\xe20\xd4MYe{\x91\xb5\x90y0r\xd7l\x99\x1c{\xc5l\x19\xefp`\xbd\xed\xdd5\x16\x9e\xbe\xff\xc9\x95\xa0H\x172\xa4SR\\a\x84h\xac\xdb\xc3\x8e\x89&C\x89\x89$x\x14:h#\xf2%s\t!\x87\xa9\x88-\x1a\xbe\xa8g\x08\xc3\xbb\xb4p\x94J\x19\xc8\x1b\xe4\xcd\xd2\x83\x14\x1f\x0e\xab{\xc3: S\xcd\xa3\xfb\x13\x9f%\x14\xed\xc9m8R\xbfC\xcbz\xe14\xfd\x89\xa0\x85\xb1\xb2\xf9h\x82\xff\x9b,\r\xa7\xaa\x1a\xe0Aj\xbd\xe4\xea!K\x02d\xbd/\xe4\x94/\x18i\xd7\x05\x92\xb7\t\x18\xf5\xd7\xee\x12\xafp/<\xac\x18\xc4\x90@\x81\x98\x01\x07!\xa5\xee\xa4\xce\xf4vr\x15)$\x1e\xf5j\xcc<\xf8\x08\x10\x1dL\x1f\x8fk\r\xab\xd4^\xbeD%H\xc2\xb6qS\xa9\xe7\x0b\x80\xc0\xc3\xbf\xbf\x18\xeaO\x7f\xf9^5\x92lvR\x88\x11\xd3\xea\xf1\xf8L1\x89p\xf0\x16D\xd0\x16\xcc.\xaa[\x99?\x81\x0c\x01\x07\xf4\xdddfQ\x05)]\x11\xfbn9\x00\xd1\x86\x8e\xe5\xf2\xfb\x9b19]5\xfe\xb1\x07\xb5qp\x04\x86\x93]\xd1\xd0z\xc2\xe9\xf0\x07\xfa\xf6W\xd1(I\x9a\x92\xb0\xcf\xc1\xcbD\xad\x15+\\E0\t\xb1\xf8\x0f5\x8e\t\x00\xd5\x03\xa0e\xb0\xf5]5I\xc7\xca\x8b\xe4\xfc\xbc[O\xfag\x80\xb6\x91f3\x8a;o\xe1\xaa=2\'\x08\xa0<\xa5\xed\xb9\xc79xl\xd5\xb6\xccq\xd2L\x85\x83\x0b\x1a#\x94\xf2\xcf\x81Q\xbc\xd0\x9a\xc5y\xb0\xf7\xbc\xad\xf1\xafL\xd5!E\x8f\xdb6 K>\xfeC\xbf\xa1\x8e\xa3;V\x8dz\x93\xe92\x1f\xbc\x89\xff\x18\xb5h/\xe9&\xe5\xc9[\t\x86\xafM\x85v\x19\xfd\\\xa7\x00x\x974O\xd9{\x908R\x19\xafp\xcf?\xe7\x91|\x81\x8a\x8a\xd6U\xb0\xc28\xed\x08\xa5\x9e\'\xbfG\xf7F\x18\x0e\xa8\xf9r\\\x7fGX\xb6\xa8\xd6\'\x14\xd8\xa1t\xfa\xaa~\x03\xfb\x1b\xd5\x9a\x19N\xae\xca\xdb\xf9~\x0e/Z\x028\xd9\xddU\xcbK\x15\x8f\x13\xf3G\x07\xd3\x96\x1c\xbb\x10:A\xaf\xe0C>\xa1\xe7\xcfX\xa31\xb2\xdb\xc3\xab7\xf7r\xaa\x96\xc9\xdf\x90l\xc3\x82\x08\x8aj\xa2\xaf\xc4b\x07\x99\xe7\xe0BCu\xf0\xa2\xf7\x0bg\xda\x0eQ\t\x82\xf39/\xb5\xdb\xe7\xd6\x10`7 \xf5\xd16\xb8\xa4\xb4G\x92D`%\xba\xc4Zq\x0cT\x83\xa5\x19\xaa\xee\xac5\x83=\xbc\xb8\x01\x12\x1d\xddZ\xfa\xadU\x82\xc2\xbdv\x0c\x06\x9a\xafz\xd4\x16&\x1b\xcd\xbc\xdcm?\x8btC\x00\xb39V\x8as\xc3\x18\xd5\xe5\x90\xe5\xb0\x0e\x7fv\xfa\x8f\x96-H\xbf\x1c@\x95\xff\xdc\xd2\x1dk\x1a\xe9L\xe3\xcd\x84\x10t%$\xa0wZ\xc4*\x06\xcds!\x0f\xdf\xd5a\x82\xf6\xa78p\x9b+d\x150S\x8d[#\xc9\x98\x93/\xa7u\x91,\xda\x82\xc9\x03\xeb\xae\xabN\xa7\x80\xffh\x1e\x88D\x0b\x88`\x8e\x8b\x87\xaa\xf4\xdd\xda\xe3\xfd\x9c\xdd\xb5&\x04y\x9c\x94\xd3\x02<<\x1f\xed\xb7')
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-08T16:23:30.424537
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\x00\x0c\xeb\xcb\x13\xeaw\xdbJ\xc9\xd0\x1a\x9b\x17\xe1\xad:\x00\x00\x00\x00\x00\x00\x00\x00W\xcf\xdb\x1ech\xffF\x132\x1f\xed\xb6\xbb\xc8\\@\xb7\xf3\xb8\xc0\x1f\xc0\xe4\xc1}\x14:\xc2U\xf2\x99\x8f-n\x80\xd1Vs\x98 \x03G\xc0,\x83i\x181\xc4\xbc\x80\xaf\x8e\x19\t$\xb3\xdd\t"\xf8\x8c\rC\xcdf\xec\xeeT\xd9\xc8\xa5[H\xc7\xe2\x10\x16\xb0\xa3\x8f\x9cW#\x9c\x91\x1e_k^\x14\\%\xc1m\x82pR\xdf\xbd2\x9dNFL\xd5\x92\x8b2\xf1\x07\xcdY\x9b\xea\x8e\x028\x0e\x89\xb3\x86\xd4q\xe4\xe7\xc4\xe7\xee\x16\x0e\\\x1cU{c\xfaI\xc3\xd7\x03PB\x89\x9b\xa2\x8c\xa5a\xcbtG%\xf4\xe8^\xf0\xa0\x8c\x1c\xc8\xab\x97\x99\xe8\xf3\x03\x84\x12\x80\x9c\xa3\x1e\x8b\xa5G\x04\xadWv\x89\x83\xc7=\x1a+\x08\x1e\xed:;a\x98I\xae~\x18\x85\xd2\xc8\x0e\x8e\x93?\x8cfa\xfc<\x13\xa7\x19\xe2A\xa3~\';\x0f\xcf\x18\xcf\xca0\xb3k\xdcZ\xd2\xe3.\xb2\t<\x99dG\xc8\x8cU\x0c\\\xa31\xeb{Z\xc5f$\xbb\xce\x91gu\x1d\xfa\xce\xa3w\xc9\xaak\x93SV6n\xf1\xa4\xf1\x08\xffj\xd2\xd7\x80\xa7\xa0\xf1Mw27\xee\xf0\xf6\'\xefc!mKl7Q\xc0\x13\xef\xf7\xaaOM\xbc\x90\xdco\xfdI(\x06\x06])\x7fc\xaeI\xad\x1c\xb3mQ\xd7I=\xb1!17\x9f\xf0}\x9ch\xbc\xcb\xe4:D\xa3\xc4e\xfe\x10\xc7.\xfe\x9e\x1e[]\xf2\x06\xff\xdd\xba\x91\xf9 YJ\x16c\xdd0\xf8W&\xee\xe8\xd4\x10\xb1>2\xe7\xeek\xfe\xa2\xe3\x05\xb7fJ\x00\xb8\x0b\x96&63\x1c\xcbL\xb5^\xd3\xa3l\xceu\xc4r\xe0\xd4\x1c\xa0Gs\xee\x86}\x907\xae\xdb\x89`\xe5O\xc2_->\xe0s\xe5l\xf14\xae\x08,W\xfd>\x1e\xd4\xf1*\xdaQ\x05\xb2\x99\x98\x96\xaf\xb6\x89\x1d:\xaa\xd2|l\xdaj\t\xcb\xb8\xae\xf13\x92\xd8\xd8Q~\x0e\n\x12\xcf\x96\x84\xeed\xac\x0c\r\xf8\xd9\x92\x81\xd9\xed\xbb\xec\x8b\x8e\xc3j\x19\xeb\xa7\xdc\x11\x08_\xfaPO\xd4\x12f\x90c\x02\x1d\xacV\xa9g\xfcRC\xc8\xf8\xad\xaa\x11\xc2\x85\xb1\xd0\xd0\xa4_G\nn\xa8\x96\x9e\t\xfc\x8e\x0e\xc3\xc0J\xbeI$\xe9\x832Y\xa8kN\xbf\xbe\xfdA<\xa9\x14\xef(\xd3\x88\xf3\xa0\xe4"2\xdcW\x18\x1a\xd9=\xb2\x1f\xaa\xbb\xd9\xb6N\x04c\x01\xb0\xf1\xa4$\x14\x19\xd1\xac\xde\x96\x07\xb0\xec\xa0x\x12\x19H\x11\x9aM\x8d\xe4U[?\xa3\xad\xe1\x19\x024\xfbC\x07\xedA8\x1b \xbd\n\xb7j\x93\xaeL\xa21<\xaf\xa0\x83\xfbis9\xd6\x8dh\x9f\x91L/\x9e\xb9\xa1[\x8f\xd9\xfc"\xd7^1!\xb6d*pa\xd4#\x04\x824\x11b(1\xd6r\x88 y\xe2-J\xb0.\xe5\x87\x05\x1b\xe2\xf6\x1e\xc2\x0b\x16\xaf\x1d\xc4\xf1]J\xba\x92\xe1\xec0\xbe\xdal\xdd\x99\xc4\xc5x\xcb>\x9e\xe5\'\x9d"\x17\xb1qI\xc0\xb9\xe9\x0b\xe8\xfa\x95\x93w}\x08\x89N\xeb\xe3\x88\t&w\x9c\t\xb0B\xff<\xc1K\xce^\xb9\xbd\x8e\xd3\xeb\xbb]?\x19ou\xfa\xa4\x11\xd7c>\x825\x80\xce\xda\x1f\x8f\xcd\xc2Y\x01t\xdeQ\x88\xc3O\xc4\'K\xef\x82\x86\x9bm\x91\xef;\xd0\xe5\xb5\x9c\xdbx\xdb\x88m\xc3\xc2\xb1\x14\x03\x81\xf6\xbf\x99l\xd6\xea\xce\xe4\x0c\xd7|\x18v\xe4\xe7O\xbb\x87m\xd8C\xa9\xf3"\xa4..T\x9d\xc0+,\xd2F\xd9\xe4\xad&\xfcvX\xeayC\x8c\xef\xaa\xd5T\x03\x9aE\xbeS\xdfV\xadRS5\xf2\xbc^G|\xed\xde\xd5\x1a\xbd\x7f\xa3Z\x15\x9b_]\x1b\x1e\x9ar\xba\x9f\x1c\xac\xae\x13\x0c\x8c\xf2\xec.dc\x86\xae8\x8cQ\xf1\xb1)"\x1e9a\xce5\x8f\x98[\'[\xf8X\xee\xa1\xf3n\xa9\x85\xef\x1a\xefJG\x1a\x04e\xbbS\xe2\x86\xbb"\x06\xad\xf3]\\i%\xbb\xdf\x8a\xa28\x96\x14\xe1?T7\x0f\x8b1(AWV\xad_\xd2i\xaa{\x15\xe2\xb1\xc2\x1b#\xde\xcc}\xf2\xf6\xa0\xd2\xc2\xf1lVpOnq$\x01\xb1\x90\xb5K\xc4A\xcf\xb0\xc8\xf3J?\x194\xb5{\x99\t\xbch\'\xe7\x9a\xa6\x11\x17#3\xbf_\xde=\xf0A\x02\x97\x1d\xb5\x80\xa0\xc3\xcd\xceS`\xfd\x9eJ\xda\x84D\xf8\xb2W\xcc\x12c\xfc\x02\xe6\xfd\xea\xa1\xd5/3\x81/\x0b7\xec\x83\xca\xae\x8b\xd1\xafF\xa4\x1a\xe0\x8a\xee\x9f\xd8\x8d \x81\xa9\xb0\xda\x10\xf5r\xac\xf5dW}Uc\x9c\x9bO\x19\x13M+\xdf@6\xaa\x1c\xeb\xb8`*EY\x86i\xcf\x1c7\x89\xd2\xab\xb37\x90\xc7\xa6\xf5\x90\xd3z=\xec\rgR\x92\xd0\xb7d\xb9\xd7\xe2\x9b\xcep\xadZ\x80\x8az\xb8{\x81\xf9\xf2crq\x11\'TO> \xaeB\x02W\x00b\xe7l\x03\x17{dOf\xa7 v\n\'\x7f\xa4iey\xa4y\x95dl\xf3\x9f\x05\x1b0\x11.\xe51Q\xc4\x811\xe8\x1a9\xff\xe0E\xbf\xd4!\x0c68\xbdv\xe2\x9b\xb9\xd3\x00\xe6\xa9z\x94\xd7\xf8?\xaa\x1d\xbc\xea\x8c}\xbb\xe4\x8e\xabr\xae\xc6\xb7\x18\xc2t\xa9B\xf531t\x979-\xe2M\xc3\xc9`\xcf\xbbG\xad?V\xf1\x03j\xbc\xa3s_j\xb4\x84-:\x10g<\x04\xde\x8f\xc8\xf5\x98\x8c\xbd[\xd5rl\xd8@\x9dG\xf22\xa50F\x9f\x9f\xdd\x1d;\xe8\x86V\xadM\xaa\xc5\xc4+\xc8\xc7\xa3v\xf2\x02\xc7\xe1\xbf\x0c\xd7\x1e\xb4\xe3\xa3r&q\xbb=\x0f\xbe\xde\r;\xa3\x05\x8e\xc2_%r\x99\xeb\x1a!\xfe\xcf\x86\x94\xe4\xff\xf2`\xe0\x89-\x88v \x15\xb3\x80\xad\xa7\xc5\x18\xa9\xebE\xdaL\xc9\x8d$\x84\x11\x18p\xef\x01\x85\xb80\x12]m\x13\xa3`\x03f\xddzP\xb4\xe3\xce\xbe8\x10\xa1!e*\xe6%\x80NR\xcb\xde\xb1\xf4?X\xb1\xe7\x1f\xd2\x808C\xc70hj\x17\x87;\x16\x99\xc2\xbc\x99 \x19\x88\x15D\xb1\xf9\xe2\xe4W\x18\xd9)\xe7o\xb7\xee\x01\x90\xe3\xcc\xd2c\xd5\xb5\xcb\x193%\xa3\x8f\xf5k\xa3\x0cL\xe2\x02r\x9d\x9d\xde\x8d\x1b\x0b\xf3\x0f\xebF\xe5b[\x13\xc5{yu1\xa6x\xbe[\x8d\xe4\xbb\xae\xc4\x14\x06\x04\xf8\xd6\xcc\x8c\xeb\xef\x7f\xb8\x9b\xb4c!\xfc\xb4Q]SB\x89\xac\x7f@\xf5M\x9f~\xa2\xad\xe3\x85\xef\xa4k\xe5v\x96S\xfa3\x03{L15\xe3N\xff\xad\xcf[\x8bH\r\x82\x06h\xd6\xb7Y\xfc\xe8\xb8\x1d\xf0Q\xa3\x08\xf2z\x08\x17&\x07\x1a\xdc\x93f9FD\xfc\xe2\xa8b\xbd\x1b\xf5\x15XB\x08\x82\xfd\x8fk\xc8\x9a\x0c\x92cA:\x96k\xc4R\xdd\'1\xbd \xe3\xbe9`Vy\xee\x97\x0b\xb8\xf7\x04\x9dad\xf2\t\x8a\x10/\x8a\xb2\xe2\xe0\xc07u\xed\xdf\x9f\xbb:\x8d\xad\x07b\xf6s!\xcd5\xd0\xb1&\x89E\x0e\x91\x18\xca\xc3+d\xe1\xdc\x82\xcf{\x9b\xc0\xe1*\xe3\xe0Ap\xa8#^\xa0<\x9c\xdd\x86\xea\xeeBgaa\xc5')
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-08T16:23:30.355487
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\x00z\x8f+w\xfb-\xa0\x8b\x82\xa2k\xd3\xd5lx\x08\x00\x00\x00\x00\x00\x00\x00\x00l\xb8\xce\xcb\xefHp`7{\x08\xb9a9\x94X7u\x18\x8a\xee\xbe]o\x01\x84 \xe8\xcd\xba\xdcT\xaan\xa5\x9aL\x84\x13~r\x0b\xe7o\xb0Z;n\x03\r\xb4\x9b\t<\xc1:\x95\xc8\x13\x8f\xa6\x89\xac\x05\xe5\x1bj1:\x82\x9c\xc5\xa8\xa4z\xf9\x19\x9b\xc0\x8f\x1d\xb3$\x1c\xbc\xa6g\x9f\x16\xaaG+\x0e\xff\xe8\x8e\x06,A\xb3\x01R%F\x94\x00\x05\xbd\xc2\xefa\xd6f\x8a\xce`\x96\xc7\xc1<\xd6\r5\x98\x18\xf1)\xedEX\xde\xb0\xf3\'\xb3}|~\xa9\xda\x15Nv\x80\xe6\x1a\x180b\xe8\xbaW*==\x0c\x9dgo",d\xec\x84\x8d\x90\xe1Rw\xf3\x13m-X\xa3\xc1\xf5\x91\x05H\xef%\x06\xbbf\x15\x17\xe1\x06:\x11\x8f\xcd\xb1\x82|+JQ\xa3dt\x02\x9f8\x11l\xe9\xb6I`xfF8\x05v\r\x8f\x9c;\x9db\x1c\x80*\x1ag\xc2\xb83\x05\x89\xb8\xcd\x1e,m\xc6\x18#c\xa0^\x1b(\\?K\xf8{\xdd!\xa0WCy\x85\xf3\xc0\xdb\n\xe5G\xd3\x1c\x85\x14\xf5\n{R/bMq\xb8\x8b*\x84y\xa6$\x94!B&\xdb\xfe\xdd\xe4\x00}\xe3\xf1\xacl\x8b\xdf\xada,\xdec\xfax\xbb\x0b\xe6\xaaK\x92\xf4@\x99D\x1f\xd1\xac\xc2o3\xfaP\x83\xf9\x836R\xef\x801\x94N\xa4\xe1?\x83\xacO\xe4\x0e\xebZ\xf3\x10>p\x1f"u\xd5\x88.\xab\xb7D\xa6o\x88\x16\x84\xb6\x1b\x8e\x9a\xe6\xca:~T\x1c?\xc0\x82\x9f\x96\xf5\x11j\xd7\xa8\xdf\r\xb1\x00\xb8F\x1e\xcfy\x9e\xd5 \x875\xb9z|y\x01\xf5\xc0\x80V!\x12\xbc\xe6\xca\xaa-\xf6(\xde\x02E?\x04\x01\xcc\xe41\xc3\x0f\x16|+^Xb\xda&l\x08\xdf;7~?s\x1aG\x83\xaa\xb46V@KoU[\xc7j\x83N\x90d\x18q\x8c\xe8\xfc@[\xdd\xbf\xd7\xf8\xb7\xe1\xd9\xaa+\xb4\xbe\xe8-\x10\xc2UD\xc8F\xe2\xb1\x93ewQ\xd7z8\xd8_Zg\x8e\x0f\x801\xb2i\x97\xe1B}\x04#\xa4\xda\x01,\x93\x0f\x8b\xd8\x9az\xe88R9\'5\x0f\xe8\xa3\xe7J\xa0f7\xb5\r\x81~u9\xe3\xe1=\xd1\xfeeP\x97\xd0\xbe\xb1\xd0\xa0\x8b\x0b\x93\x053\xcb\xa1_(\x0b\xa2\x0b\xb6\xb6{)s\xba\x1d\xc0\xbd\x85\x954\x19\xe1/9l\x1d9\x83\xfa$\xd5\xeac\xf0>\xdecF\x9ey\xd9%\xbc\x9a\x92\xda\xd9x\xa9\xe6\xea|\x9e\xcc\x8445\xd8z\x16\x84qn\x9d\xd4\xf5\xc4=\xb4B\x84\xa4\xc4\xc8\xa9\x86\xad\x14\x9f\x8f\xce]\xbc\xbe\xb4q[\xc4\x10\xfe\xddg0RGd=P\x07.\xfc\x1c\x07\xf9^\xa7B\x1e\xc86\xf2x\x10)\x93>\x87i\xbc\xd5:\xb5\x13\xc8\xde\xd2\xf0\xed\xc9\xf6&M\x87\xcdT\xc4D\x87D\x07\t\x14+\xbc\x94\xb5\xa3\xcdhk%\xe7\xb9\x0b\x03\xdf\x89\xbf\xfc\x97\x8c\xf6\x01U\xba\xf7\xd3{\x83;Yg\xd4\xf0\xad\xc4\x8e\x07\x88\x86+0\x89\x7f\x0c\x83\xbc\xa2\xa2\xbfM\x84d\x96FuQ\xb3c\x87\x9c\t\xce.#o@9\xefT\xc2\xd0+\x03\x89e\\\x98\xaa5~\x83&&(\xf5\xbai:CG\n\xff\xef(H\xf1\xfc\x95\xdd\xffo@B\x0e:\xa4Az\xf6vLP\x90\xb1\xaa\tl\x7f\x88\xa1`\xc9e\x83\xed\x90\x92\xab\x19\x9e\x1fa\xce5B\x9b\xd8\x97\x17\x81`\xd3(\x8b\xb6\xf9\xbb4I\x9ffE\xa6\xa0\xdb\x853\xf0\xf6\xc8O\x1eT\xa1\xbao/\x1a\x860\xf9ZI\xe4t\xdd\xdb\xd3\x8f\xcc\xfd\xafK\x81\xc1\x86\xbe\x84\xf11x\x83\x8a\xc4CR)\xf5\xcdv\x17\xa0\r#\xb4\x9a\xb3\x98\x0e*\n\xd5\xf1b-\x17\xb4\x16\x19\x89\xf9\x15u\xa6\xc5\x87rc\x97\xca\x11V\x03jK\xdb\xa3\xe8\xa8\xb6\xae\x92\x17\x053R\xb2\xa6\xdd\x8f \x9b\x8f\n3\x0b\x12h\xd2\xb6\xe4\x04\xfd\xff\xa7\x0eG4r)Q\xa8!\x8a$O\x05\x0f\xa3\xc5Uk\xff\xe7\xd2\xbd\xfc\xf9\x02"\xfa>\xd1\x84\xf2\x92\xcb>A\x80} \xe7\xe5 \x87\xda\xdc\xae\xf6}\xff \x1eN62\xd3\xfcE\x98\xd6\x9a\xb4\xe73\xc3\x18\xb2)\xbbS%\xc9Ck\xeb\x0f<z3\r\xa4k\xd0\xb1T\x0e\xd9Na\xef\xa4@@\x9b\xb9\xaa\x99<y\xaeB;Zu\xf8\xe9\xab\x91\x1e\xb2\xb0\xefM\xc8\xb2?\xa8\x1e+\xf5\x95\xcf\x9d7f\x05 \xf3\xdc\xf4h\xe6\x9c.Q\x11\n\xf9\xcb\x8b\':\x15CS\xd8\xd6\xbbN\xe1d\x8a\xd4BD\x84\x13S{\xba\xce\x92\xf5kK\xab\xbc\x92\xce*\xcf\xdb\xadv\xfdh\xb1\x10\x9c8qp\xdd\x1c\x0c\x16+\xdeH\xcb^E^#e\xd0\xb9\xe1\xd5(\x11\x97+\xe3\xd6u\xc2ZB\x9f\xe1\t\xff\xd2\xbd\xdd\xc3\x1e\xc8\xbf\x074)\xe7 \x17\x16\xc8\xa6\xb5S\x86\x1a%r\xfe\xc5\x90\xbc\x98\xca\xea\x7f0\x84\x85\xc6\xa2\x13\xfc\x01\xd5n\xca\x849(\xf4\x18^\xad\xc7\xc9\x8d \xbfn\x9e\xdd\xdb\x17\x00ZB\xc2\xccV\x81\xcc\xcdl\xf1\xa9\xa8\x06\xa5R\xa1\x7fT\x7f\xc5.y"\nX\x04CM\xed\x12\xc8O1B3\x08\x19\r_?;.o\xee32I\x9b\xbd\xf3\xff\xc5\xb6>\rk\x9e\xca\xa6A\x8c-vZ\x8f\xc9\xc5\xdb\x8c\xa0r\x0eR4\xe0\x9au\x98\xb0\xc9pBw\x01\x19\x84\t7\xcbX37D}T\xf6I4#u\x91\xe4\xe1\xb329\x8bd(\xe7\xc3\xdb\xd2\xe9\xa8\x89%\xe1\xb7\xd8\xf7\xe2#1\xf8\x92E(\xab\xad\xb6vEk)\x7f{\xd3\xe7py\xbb-Mv!\xb6\x87\x7fPn\x05\xb5\xa8. \r\x85\x18P\xea\xdf\xf1\xe7h\x9e\xc4\x96D\xa5\xf7\xf4\xb2\\J \r\xf4\xfb\xb8QU|Q\xe3A\x9a\x17\tR\xc4U\xc1`\xc8\xc1\xc9\xea>`Ndx\xe9\xbb\xfd\xdb\xc4)\x05#W\x85\n\xe5\xfdB\xbe\xc3\x15D\xfdU\xdd\x06O\x10\xdb\x1ac\xbbg\xc4\xc1T\xf7Bc (\x81\x19\xafu\xd6\xe1o=\xb3\x82\xfe\xf8\xc0\xa4\xa2\xe7s.\xea\xbaD!\x18\xed=A\xe1Y&\xdcjQ\x8f\xe6\x10?W\t.\xa5\xd9\xc0+\tQ\xe9\xccE\xd6\x94k\x04\xea\x18\x8d\xd2\x9e\xfd\x17\xc4\xd1\xe6\xa8\x18\xa5\x83\x84\x94\xa4\x92\xeb4I\x99\x05\xfc\xc9\x94*,g\x84}\'I\xd0\x90]O\xb6\xa5m\x9e\x9f\'W\x16\xf6K\xdf\xb4\xc3\x1c\x83\x15\xb2[\x0fq\xf7\xac\xab/\xbanZ\xd8_Tb\xf1iKC\xb2VC\x0f\x80\xe4\xa9\xee\xbd\x9c\xe2\x92\xb5I|V+Y\x86\xc0\xfd\xe3\xcd\xc3O\x0c\xe0\xd1\x87\xfdzm\xf3\x1aUGM\xa7d\xa9\xda3M)X\'v\x89\x91\xf3\xea\x0c\x17\xc2\xa1\xc3\xf9\xcf\x1e\x03Y?m*6\xdd\xa8r\xcb\x03\xce\xacp\xa4\xcc\xaeq5@\xaa\xaa\xcfc\xa4\xe3,\x0b\xbfN \x1d5\xe3/\xa7\xe7\x03o\x17\rJ^g\xa0\xdcE[\xa1\xa04\xdb\x1e\x9a\x91\xe5O\xae(e\xff\xdcP\xca=e\xe4\x0eu\x16\xe37\xbdS\xb9g\x0b\x93&\x19\x8e\xff\xf8\xd0\xcb3\xb3^\x8d\xb0\x95*\x81\x93\xacZS\xedI\x0f\x96\x9a\xa7\x970\x98E\xa7}E\x9c\x027:\x0eY&>\xeb\xb99\xa3\x96\xa3\x16\xc5\xf9\xdf>\xfb\x0euw\x93\xfaMp\xc1\xf2,\xac\xb3L\xd5\xe65\x89XB\xdb.\x0c\'y\x98\x87\xa3L;\xc7\xe2\x1b\xbbp\xe3L!\x98*`@M\xdaf\x1d3\x87!\xca\'\x1e\xf5u\xb1\xde\xe3\xa3\xf1N]K\xe5m\x96y\xf5\x8c\x1dY\x9a#\x80#\xe8\x08k\xf0\x81P\x9f6\xaa\xbb\xcb"\x82\x7f6\xcd!\\\xe1\xc5\x91\xbd\xbei\xa9"\xc0\xd08\x0eI\xb1Z\x00&\xa3\x157Y\x8ek\x0e\xc4M\xf6\xcb\x18!\x0bij\x12\x81\xf7\xcb\x89\xd2\xe9G\x8a\xf6\xadM\xc2T\xfe\x9e\xaf\xcf*\xa8oX\xe0\xb9\x07\x0c\x9b\xb9\x1f\xa2H\xd5\x0cn\x88\xee}\xf1\x13W\x00\xa8\x04\xc1l\\\x13\xee\xb0%\x900\xcf 0\x7fT\xa50w-\xa3\xd5\xd0\xf8$\x03S\x84\x1f\x85\x88`Z\x15\xa0\x18\r\xd0\xe7~Y*;\x03\x1bY\xaf\xd4U\xe9(x>\xa7mB\x0f\nJ=\x1a\xe4\xc8\x9f\x8d\xaa\x89\xcap\xb4j\xdd\xf8\xb0\xc59\xea\x8bo\xf7W1<\xad\xfb5\xe4k\x8a\x07\xd6@..\xa2\xd7?\xe2q\x90/\x12\xecd\x9cn\xee\x8e\xe5d\xc3\xf0\xf4"\xe1\xae,7\xbaR\xf2f\xa88h\xac\xc7\x0bb\r,\x86\xda\xdc\xca\x04\xa1\x11\xa8\x04\x7f\x16\x87@\x9d\xf3\xaf\xe0r\x84\x0f\x81Uhd\x7fP\x14\xde\xd3\xeeY\x07\x1ag\x8b\xcf\x0f\xd5\xa5X\xc8\xb2\xf7dD-\x15\xa4\x86\xbf\xd2\xe3LT\xf9\x048m\x18\x93\x9eS\xa7\xaa\xcf\xa5\xbd\xa0.\x08Q\xa2\xe8\xa1D\x00~\xf9\xbc\xd2\x9f\x0fo1\xa0\xd0\xa3\xb1\xdfU\xc6\x91\xff/\xf4\xadU\x80\xf4\xb9787\x85\xb7OB\xf8\x92\xa6!IC\xd5\x96\xa88\xd5t\x99\xaek3"$\xe5\x83\x10\xd0\t\xe2\x7f\x8f\x80M\xe1\xc7\x96\xae\x9d\xea<+\xc8\x1b\x9b\xc6y]\xa6_\xbe\xa7\xcf;\x8a&T\x81zD\xba\xc6\xa6\x12\x87\xd0\xf2\xcb\x91\xee\xe5\x15\xf5\xeas\xce\xf6\xedJh\xe0f\xd2\xc5\xd5\xf0\x0c\xaa\xcd\x82v\xbe\x17\x8d-UIg\xf3\x19\x0e\xef:\xf4\xa5\xa3\x92\xbfW\x13b\xbc%\x84\x88\x13\x9f\xf0\x97\x94\xf7=x\xcd\x8a\xcb\x8bB\x14\x9b\x02\xd3v\xab(\x9d!\xb9~F\xd1R\x12\xeb\x94\x80\x19\x83h\x83b\xf2e\xe3\xd8\xb6\xd9:\xf8M\x16\xc5\xa0\xac\xeb\xb5\x05o\xeb\xe2\xea8\xfa\xb8\x98\x15\x16`S\xdb\x8fz\xa8o\xafv\xd0\xf5/z\xc2\x10\xeb\xf4\xe6\x85\x81?\xd8\x11\x8f8#\xd9\xab\x8f\x0c\xeb\xce\xda\x11\x89\x8dZ\xca\xd4>\xe4<;\x17=\xbb\x86VOB\xe2@\x1bu[\x9c\xf5\xd5\x86\xb6J\x9f`R\xef\xd3\xc5\xcc\xb1\xec35\x00\x90\xd5\xc1\x9d*\xdd\xa53\xc8j\x0b\xe6}\xa3\xdd\xa9z\x97\x82\xa0GYy\xf1\xb5a{0\xc17\xd17\xeeS\xcd\xd3^!\x06\x88\x14n\x8b\xaa\xb2T\x14(\xd9')
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-08T16:23:30.443545
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\x00c\x15\x9d\xbbQ\xf7\x86\x14]\xd3\xb5\xcd\xd4(1s\x00\x00\x00\x00\x00\x00\x00\x00\xa2]\n\x0feH\xac\x1eC\xde\xd3>\xd59\x8ez\xc1:\xb8gUO\xa6\xa84\xaf\xdc\xf1y\x10gv\x17\x95*v\xe6\xaa\xd8\x1f\xc1\xf6R\xe4\xbfF\xb2B\x94\xd4\xb8\x14\xb8\xd1\xa5\xb5w\x8a$}\xc4\xb3\x10\xb1h4\xa5\xc2\xd1Vr\xe6\xc9B\xdf7$\x16\'w\xf0L*\\\x94\x8a\xa1mM\xdf\x84O\xd3\x05"\xcd*\xe6l\xe4c\xb6\xd4\xe7\x88\xdd\xdc\xa9\xd7\x9b\x90_f\xa7\xa0\x13\x83\xd4\xc4\xf4\xd5{p\x83\xab\xc7h\xf3\x7f\xa5}u\x10\xcd\x19#\x1cZ\xd8z\xb5\x1f\xeaODN\x1ce"&\'\x8c\x7f\x859\xf6\x88eE\xbc\n\x85\xcb\x89\x00\x97\x8b\xba\x8b|pC\xad\x16MzJ\x04i\x1c\x0b\x87h\t\xd3\x82z\xf13\xd2\x1f\xec+\x1d\x93\xf4\x89\xf0\xaet\xe5\x8cp\x95\xfe\xc6Gt\x9fr?\xdcx\xc02^0\xa0>\xce7\'K"\xe5Bv\xf0\xf9\x05\xe3\xfe\xc3s\xf5\xad2\x9bPjk\x9b\x1a\xc1\x02\x9d\x02e\r\xfe8\xab58\xd7\xe6%\xdc\xbbN2\x15\x04\xc7\x08\xd6\x9d\xd7\x15\x1f\x81sR\xd9\xb3_><!\xbb\xaf6C\x1e\xa3\x1d)\xf5\x1e\x9e\xcc\x0c\x8d\xd1q\'ya\x04\xb0\xca.\x9b\x87\x1cx\xf06\xc3\xcc\x02\xb9}\x04\x8c`dH\xbd #\xbcx\xdbz \x83\xc7O\xafa=\xe9$_\xbau~\x1b%\x88\xf4?\xc16\xde\xc4\x8fabI\xc6\x89E\xab\xab\x8e>\xeb\x18Y\xff<\x04{N8bQ\xb0\xc7\xa8\x15\xd6\xc8;c\xc6tI\t\xe3\x852*z\xf3\xde\xd5\xdd\xb3\xf7\xf3\x1a\x86zB\xc1V\x88*\x1e\x96/\xc8\x9a\xbb\xfd\xc5\xef\xc0\xf1r\x14\x9aL\xd4\xdd<\xc9\xfa\xb86a\x9a\xf9\x8aA\xb6`\x0f\xb4\x1c\xfc+\xa9\xca\xbdMh\x8d\xa8\xe7\xa0\x89\x8d\x16\x10\x87\xb1\xd7\x837\x10\x8c\x83\xb3\x808x\xb5\x86\x9e5\x82\xb1*]}\x1a\xe1t\xb7R\x1d)\xe9\xa6%X\xa3\x88\x15\xa8\x93\xa3\x80\x93vR\xb0\xab\xe4T\x05R\xbc\x1e\xaa\xec\xab\xe3\xd9\x89P\x14\xa2h\r\xcd\xfa\x9bm\xd5a\x05bZRZ\x93b\x0cg\xf0\x9a:\x8dC\xde\x88\x04\xcc\xd3W\x93SS\xd2-\xb0\xf7\xdcz}\x88\x17\x0cm\xe3\x1c\xd6\xc5h\xe4 \x05\xad\x8c\xbb\xbc\t\xe3<\xdf\xcc#]\xda\x97c\xbe\x17\x9c\x05\x910\x07B\xec A\xea=@\xc3\xa6\xd7\x171\x8eez\x95yo\xaf\x9cg\x1a\xd96\xa2\xdc^\xbbK<\x18\xbc\xaaH\x08\x18$\xe0\x9c\xe8\xfc\xfc\xbb\xcb\xa5\xb3\xda\x8f\xb1\xe9\x1du\xf3\\\n\xfe\xb9\xd1\xfaNy\xf1C-;\xee\xa6|\xc1z\xa5\xbf\x1f\xe27\xbf\x15&|\xd7\xc3\xa8z\xac \xd3}<\\j\xee(@\xa2\x06Q&\xa867Z\xd6\xe4s\xa1\x92,\x1f\xe2\xb7\x1b\x01q\xf8@V\xa4\'\xcf\x9a\xb9\xe2Hq\xc7od\x9e\xf7(g\xb5\x8b\xff\xa6Y\xacP\xd4\xa8L\xae\x9b\xda\xd6\x05\x7f\xc2\x9dLJ}+X\xbc\xa2\xab\xfe\xe1x\x17Qm\x1c\xb0\x04\x11\x1f\x88\x10\x86\x919\xf6\xca.\x97\xe04\xcc\xa7\xbfZ\xd1[%\xb7\x915\xe1+x4\xc5\x1bC\xab\xb0\xd0\x89\xb0MG\xdes\xcc\xd5\xaa\xa7\x87"\n\xf3\xae\x19\xbc\xed\xa8\x00M\x80\xf4\xf9\x8b\xdb\xf9\xfb(\xc1\\-WP*\xe0o\x05\xaa\x83\x90\xc3BQ\xd9\x86\xe9\xfaz\x04\xfd\x7f\xc7\x12\xa4\xd5\xdd\xf1\xe0:\xa8T\xd3\x91\xed\xd9\xe3;\x06\xf8\x01J\xb3]`\xa8_\x8dG_? Y\xee\xd2[s\xc4\xdcb0\xe4\xed-\xd2U\xf5\n\x10\xe2\x9d\x9e9\xc7u\x03I\xdc\xf59\xef\xdc\xf2w\xd4\x80\xca,\x15\xc7/\x18\x17\xa6\xc9g\xa3\xd1\xac\x94\xacv\xd9\xc2\x04\x13\xa0\xc7(\x90\xf0\xab\xc3E\xea\n\xb7\xa9\x865m6\xc7\x9e\xc1\xb1\xcf2\xa5\xdfT;%\x15\xa5\xdd\t\xebz3\xfe\xa3VK.})gq\xfa\x07\x1e{\xff\xd8Y\xee$\x98\xe5h\x1dv\xb2~\xceA\xf1\x97\x1f\xfbyA\x17\xe4}\x0cv\xb3B\xa4\xd5\n\xaaE\x80t\x85\x9fD\x98\x82-\x86\xca\x11\'\xdeg)\xd6y*\x0es\xc79\x94\xd1\xacSs\'c\xc1\xabW\x16)9\xc4fAP\x99\x0bzW\x8e\xd7f\xa1\xc13+ \xe7\xcb\x11\xe3J\x1c?\xee\xf15\xf3}\x9cn\x8bG>\xbe\xf8/\x877p\xf5\x11\xaf\xb8\x8cM\xf5\x19S\xe8\x8dfb3\xce\x7f1\xe8\x19\x12\xf0V}a\xd6\xe2K~\xdf)o\xec\xb9\xba\x9d}>r\xda;\x9f\xfbza\xd9m\x94%\xd0\xd9}\xb0\xe2Z\x04\xc4}\xbc\xd4l\xa6\x00\xd1\xdfC\x1d\xef\x8a\x1f\x83\x8cF}\xfa\xd8\xfdB\xc3\xe5%\x97\x8aWC\x16\xea\x06\x05\'%VU*,C\xae\xed\xe4tz\xde\xfe\xba\xf3\xb3\x02v\xd3\x15J\xa3\xfazn\xc1\xcd\xa5[\x7fL[\x1e\xad\x9a\r=\x96\xe5\xc5,%p\xbaVX\xcf.Y-e\x8aXK\x00b/>$b\xbe\xfa\xa2\xd4\n\xc8:\xb1"\xad\x18D\xcfj\xef\x12\x1f\\\r\xa7\xf0\xb0\xc5\x92\x81\xf2S\xe1P m\x13\xb4\xfal\xb2\x9b\x04\x14v\xaf\x9d\x8e4\xd5S-\'B(\x0c\x9e\x8e\n\x7f\xd5\xe2\x952\x9d\xfe\x9em\xfd\xa4)\xda\xd0U\x80-\x86\xa8Mk\xfe\xa4\xf6}\x02\x12\xc5\xa6I|)\xdb\xd1\x94\xc3\xdc\xef\xa2\xd5\x9b"s|\xfd\x07\x86\x01G\x00\x9f\'\xee\x0e\xbd\xdf\x88\xd3\xbb*\xc7?~{wYy[w\x02xZ\x14\x92\xe4\xf2\xa4\xba_\xb7\xef\xf0\x1cC\x94\'\x1b\x12\xe2\xed\xfa\xec\x0b\x16!\xd0\xe7Iz\xb3\xb0\xcat\xaa\xe0\x93UB\x92\xa0\xd6\x1c4\x8d\x93`\x0e\x86\xdd\xc3\xbcZ\xc9\xe1\x03^U\xb74\xcaf\x1f]\xd6z\xb1wS\xa3\xb2\xd3\xc78wb\xb28\xf6\xa2\xa4\x1dK:\xeej\x8a\x1d\x9c#(\xb8\xba\x10\x1e\xa9\xe7\xd0I\xfc\xd4\x14\x93!Nv\x93S"\xfc\x9d\xe0\x05p\x11\x92\\\xcc\x87\xe7G\x1c\xbf\x99\x03\xce,\x84\xb9\xfc_\xbc\xbdm\xe6v\xea\xc5HFh\x01\xcal\xca1\x0b>\x90\x8cW\xedf]\x15\xe2\x86\x99\\g\xefDA\xe1 \xd0\xfb\xa9+f\xc9\x87\x9a7=\xc0(\x18"O\x1cJ\x1d\xc2\xa6%\xc9\xee\x1bGC\x07oB\x06\x1bm\xd4\xfb\xf6U\x19\xf6\x0c\x85u?~\xbe\x85\xb2\xd4\xdc\x9f\xebL\x05u5\xbd\xfd\xd5\xa7~b\xdd\xb2;\x7f\xc1k\xdd\xbb\xf7\x95\xca\xabs|\xbd\x0c\'\xb1O\xf1\xae\xfd\xd5.p\xb8\xf2\x15(\xfbG~\x86\tv\xbf+\xf8\x19\x067NP\xa7\xfez\xfb\xc2<\xb1{\x95U\xa4\xa3=A\x83\x9d\x0b\x18\xed\x06\xf3\xbajDb\xeb\xefm\x17\xdbW\\\x99\xff\x03\x0f\xcd.\xb4\xe8\x1er@\xfd\xe0\xe5T)\xabM\xcc\xfa\x07\x85+\x89\xbc\xdd\x18\xc5I\x14j\xf1_\x90r\x1e\xa3_\x96\x95\xe9\x9cBp=\x0b\xcam/L-\xa4\xf7\x08\x8a\xeb{\xe2cHT\x9b\x14*|\xacx\xd3\xb6\xdfr\xe8\xa6\x11\xef\x7f\xbfL\xeb\x14\xca\xf7\xec\x12\xc0\x8ef\xdb\x93\xb3\x16\xa1\\\xd1\x80\x1e\xc2\x14\xb8\x91\xb31w\xaf\xe9\x19\x984\xb3E\x00\xf7\xfe\x12\xdd>\x91&\t\xa8\xd2\x8e\x0b\x1f\xa9\xe6\x8e\xfb\xbb>]\x88\x1eQD\xa2\xe6\xaf\xf3\xbe\x89R\xbb\xea\x0b;\xdd\xb8\xf4Vj\xf9\x0c\xd5M\xb9?\xd1\x19\xee\xad\x87;\x87$\xf8\xbde\x87\x0e\xae\xdb\x1c\xe0\xc0)\xfc\xee\x8c\xf7\x12\x8d/<I}Zx\r\x99\xc1k\xa4&\xe7z\xf4\x8f\xf4\xa2(.[=<\xdf0\xeb\xbc\xde9\xf3\xf0\x85\xf6\xf8p\xc4\xbc"\x0bfG\xf1e\xda\xa1W\xac\xc3\xa0\xfb%f\xd5\xce`\xc1\xab\xde\xbcU\xab\x97\x94\xb7\x92\x92\xd1&\xd0\xc1\x06 n\x06e\x13E\xdf\x9f\xc1\xe75\x13\xc9\xe3Q^\x9eq\xf1\xa3\x9ay\xb4i\xf5\x8b\x0c\x18\xac\x88P\xb4&\xd5\xf7Q\x1co\x14\xef\x82,\x9f\x05\x8a\xf6\x04\xb4k\x8e\x0fc\xd0\xa8-c\x95WD\x9d\xf4\x17\x10\xabxk\xc2\x9d\x19\x97\xbf\xf6E\x18\xff0B&\xec\x8b\xf5\x12\x15\x04A\xa1\xe2\x87\xb1\x98\xdb`\r\xbd\xf2k\x17\x85\x13p\xc9\r\x02^\xaf;\x0f\x03\xd4H\xcaF7E\x99\xdf\x04r\xee\xaaJ\x1c\xc12\x98r\xd2\xee\x15L\xfc\x1f\xb6\xad\xdc\xac=\xcb\xd4\x84\xc8\xa6\xbb\xb79\xd3\xef\x1a\xd2x\xb2\xden7A\xa8\xbe\xa02\x14\x0c*\x04\xae\xf5\tY\x85y\xc35P|\x03\xa8r\x12\x85\xded\xd9\\^O\x0b\x93hQ\xe1Z\xa0wv\x8b\xd7\xc5\xac\xfe6\x95|\x7f\xaa\x16\x91\x05\xc7\xa2\x13\x02\xc2@E2\x04\xe9\x1e\t\xc0X4,O&4*\xd0\xe8\xd2T}3\x87\x1aD\xb4\x02B\x01L\xa8\x8bU$\xab\xb25b"\x15d\xee\xbc\xf3\x80Y\xff\xb2\xc4U\x81\xb2V\xdd\xa52Q\x84\xa2\x1aN\x9an\xd5\x9d\xcd\xa7\x1dv\xc2\xac\t\xcdA\x94\xf0^7k%\x85\xe8\xfd\xc7\xbb\x90\xc5\xc3\xbd\xb8M@\xb0,A<\r-^b{4\xb8\xa36\n\xec\xc6;4\x1d\x9f\xd6-\x1aY\xbf\xc1\xb6\x17\x10\xb1\xed\xa7\xe3\x97S$L\x12\x17(\xf5f\xcbX\x94\xee\x88\xe5\x15D\xb4\xe1\x00\xe9X\xed\xa4\x02L\x18\x8d5\x04\x988\x96\xc2\x88\xaf!\xc3\xe6G%\x9a|\xde\xfbk\xabL`~|W\xd6&\xc0D\xabL\x9f\xd6\xc2\x9f\x9c20H6\x12>k\x06\xe0*\xccw\x00\x18\x8e\xc7\xe1\xdb\xd6\xae\xe6O\xf1\xc7\xa9B>\x04\xff\xc5\xfaJ\x1d\n;\xf7\x86\xcc1\xe1a\x12#T\x8e\xa7;j\xc6\xeb[\x1b\x00\xcb\xdb\xc7\xafd\x93\xc2u`^\x08\xce\xcbp\x8a\xefv\xd3u>LX\xec\xd2\x9f\xc9\x82\xf1\xda\x07l\x9a\x00\x12\x10\x18\xf6\xc8\xf0}\xbdN\x1c\x10\xf3\xfd\xa4\xf5B\xc0J\xb1-\xfb\x96\x87\x98\x8e#&\x14\xe0I\xed<\xaa\x93,\xc0\x1e\x9b\xa4|D\xa4\xb2\xb4\xd6x\xb3E\xd9\xff\x1f\xd7M\x8c\xde\xbb z2b.\x8ed\x8e\xa0h\x02\xde\xf5\xee\xf0\xb6\x849\xa1\xd2\xc2&\x98U\xaaxV\x97\xe4\x1d\xcf\'|\xe6\x9e\xa5?\x93\xbc/\x05\\\x9a\xbe\x81"x\xe5\xfc\xd18N\xe0,o\xe4\x93\xadm\xffa\x99E\xe0\xabY4BE\xc2mg\x8fd\xce\xfa\xe2\xc5K\x9aN\xdb\x04_\x96\xff"q\xe7Q$]\xa9\xc9\xf6W\x88\\\xc9\xe5\x10\xc1T\x0c\x07O\xa0h?\xfe\xea!\x91T\xff\xe0\xb3\xa3~\x9a\x04\xe0\xc5\xf2#\x14\x10\xd0\x10]\xc7]\x07\x86JZC?_\x8e~\xb5p\xa0q\xb6Z\xaaZ)x\x88~\x84\x1c\n\x98\x13dt\x13\xb5yO\xd7L7(\xb2C\xa3\xb7\x0b\xfb\xb5yi8\xabS\x1a\x08\x00[8S\xccv\xa2y\x899\xad`\xc9\x87I\x90\xbby\x0f\x90\x1a\x01\xb76\xa0\xaa\x86\xe2\x98M\x0ed\xe8\xd3\xd2C2-\xcd\x18)\x93\xfe\x13y\xc0H\x80b\x8a\x924\xc9\x16"\xb9\xd9\n\x9er\xb2\x1aChN\xb0\x19\xdf\xce#\xf3n\x86\xd3\x0f\xaaH)R-\xe0\x0e\x1a\xd3\x01+\xf7\x91~r\xc5\x1c2\x9f\xebR\xef\x80\x0f\xcab\xbe\xadlX\x83{0\xff\xb1\x00mQu(_q\xf4(\x0f3\xa0J\xe7\xda\xa8\x9c\xf84\x06f\x87\xf6\x8a\xa8=k}f$\xf9\x98$\x0c\x96\xbd\x8cPL \'\xa8\xcd3\xc9K\xc5\xf2\xf3]\xae\x81\x18\xbb7D\xab\xcb\xcf\x14;\xb9R\xee\xdd\xb5h\xc3d\xbf\xd1|J\xd4A\x1fU\xa1\x8f\xa2~S\x0c\xca\xe0\xde}\x02f\x96\xd6W\xff\xf5VH\xb8oY-9\xb0D\xfd$nT\xfd\xfe\x0c?\xb6\xd9U&SNj\x8f\x9d\xaf\xc1?\x17\xb0\xeb\xf0\xe9#\xa3\x00\xa6:d\xf3y9FT\xe2F?\xae \x00A\xf4\x85\xef\xec*\xcf\x95H.]s\xb9\x8a\x8c\xdfO\x98\xb1W\xf4Y\xb2/\xea\x92\xacEW\x1b\xae\x07h\x9e\xe0L\x99\xfdS\xe7\xfd|\xa3\x0bF\n\x7f\x0e\x8e\xe7"\x11\xb6M7\x07\xc75\xe3\x10~\x8f\xaf\x9e\xd7\xda\xaf\x9c\xf6)\xbb\xe5\xa1\xa4\x1b\x13\xb9\xeeC\xe9\xccu\xfd0?^\x1d\x03\x98\xef\xac0\xc6\x11H\xc6\xa7\xa9\xf6\x94\xec\n=w\xbc\x98/\xa3[sJZ\xd3C\xb0;\xd05\xed\xe9\xbe\xc4\'\x89F\xad\xbeV|\xb1\x8dr\xd8\xd8\xceT\xc8dN\x90\x91\xf0xSK\xdd!\xa8}\xd4fO\x19\xd0\x90\t!\xfe\xf2\x85f\xe89\x86 \x97\xfbd\xc2\x8e\xfb\xd55\xa2\xdc\xea\x94\xcc\xe4Rn=<\xbf9\x8e\xf7\x06\x0c\x8cZ\x0f\xcb\rA\xc8\xf0~\xd1g0\xba\xe5\xd3\xea\x00^\xfd\xc4\xac\xc2\x15fw/\xa0\x1anU\x11(\xbe\xf7%\x93U\x16\xf1\xdd`\xd4.\xef\xd7e\x00\n\xe8\x94\x1cYI<7\xe1\xef;\xe5\xe4pw\xa2!f\xb2f-\x83b\xa9\xea\x05\x10Q\xf8\x85+\x06\x02U\xe5\x10a\xcc\x00\xef\x0b\xb1t)2\x98\xd4P\xea\x8f\x8ch\xd6N\x7f\xee\x1f\xca\x85\x91\xdf\xd5"_\xaft\x17P\xa3(]\xe1\x07\xe7n\xf6\xcf\xda\x81\xb3\xfa\xf2v\x00f8\xb22\xc6\xb2\xb5\xbb\x8fpD`\xafA\x00w*\x87\xc2\xed\xba\xbc\xed\xe2\xca\xebW*\x92\xd9G\x8f&\x1fY\xc0tE\xdd1\x8b\x1b{Y\xc2\xa3f\x0b\x87u\x92\xf9\xd2K\xb2\x1f\x06.\xbbn\xfbA\xd1Sf\xde\xc0\xf0\xaa\x92\xc9\xca4M\x06\xa9\xa7\xa6\x93L"r\xe4\xc5\x10*\xf7\x1e!\xdfyY\xf7\x18:\x82\x9fw\xae\x1b\xce\xdfdO\xf2\xad\x01\xdcY\x10O5\x04\xe2G\x0c.\xf6\x00\xcd@\xbcD\x1c\x9b\xe7\x19\x1e]\xe9\xdc\xd6V\x96\x94aA5\xfe:H\xbe\x9d\xae*\xd0\x10C\x8a\x82\xe6\x8d\x0c\xf0L\xe8\xad\x04\xcd\xc5\x992\xedza\x98$\xfb\xdc\xc4\xba\x10\xdc\x80\x91\xe9Oc\x80\xf9\xab\xf8K"\xd1\xfc[c\xe7\xda\x07\xef\xeb\x9c\x82\xfeu$\xf6\xb6\xd2\xbbR\xaa\xd6u\xa8^\xfc\xbbZ\xf4,P\xda\xcf\xd5N\x8eJA\x0b\x06u\xbb\x9bg\x9f|\xa1?7(\x9c\xcf\xfc\x86r\x93\xf5[a\x90\x18(\xe3\xda\x1d\x0e4\xbb\x83E\x0b`\x82#\xbe\x0b|x\xce6\xb8\xd6g\x80/\xe9/\x88~\x81_!g\xcfn\xbb!T\xdc5a\xe0\xa0fR(K\xcb\xc8F\xdb\x13\xe1\\\x81t?\xbf\xaf\xe2W>Y\xb55]O2\x9b%\x10{f\xdb\xc9X\xab\x9f\x83W\xcfZ\x81\x18\xf3\x91s[\x80a\xdb\x8cq\xabu\x85\xcfP\x0e\xeb\xe3\x03\xbf\x82`\x0e;\xaf\xa0 \xdf\xb1\x05#G*\xf6\x8c\xaeq*1dh\xedy|wX\xfaE5!\xd6q\x05\x8a\x1b\x9d\x11_S\x01\xe4\x90\xb5E\xf5(Y\xdbR\xfb\xf5%d\xbe\x88\x1d\xd8z\x0b}=\xa3s\xcd\x7f\xfa\x88\xe2mb\xfe!\x1c=\xcf!\xab\x10\xa3!\xf3@\x0bH\xf5\x7f.\xd5|!\t\xc2O\x9c\xc6\x85\x82\x8c\xeaM\x9fs\xeb\xdf\xa1\xb9\x82\x06\xb2\xf1Q\xf9*`\x01\xba\xabw\x0b\xd8\xc3A\xe4\x84\x81-g\x12[Cf)|\x11\x06\x1e\xb4A\x18b\xad\xdb\r\xa7\xa7\x06-\xcf\x08h\xa1\x023\xac\x07\x99\xa6\xc5\xfb ?\x9a:N\x13\x8a\xf2\xa4A\xd1\xe2\x9c\x87eaK\x18\x18\xf3\xe1\x9521W>\xc5o\xb5\xe9\x96\x9f\xc9\x92\xc4\xea6\xa0\x00)\xc7\xb6\xe5\xa60Q\x0f\x91\x93\x81\r\xc8\xe6\xb6\x86;\xe8j]m\x9b\xc7l0\xed)\xb5d\x19\xa9\xb6\x0c\xc3\x05\x1a\x08\x9bLK\xbf\x80\x9a?b\xa2\xab\xd0\xe4\xde\xd0\xa4\xe1L\xc2~\xbc\xb7\xff`_$\xe8Y\x08\xbe\x93Tv# \x02\x12oJ\x0b\x90\x0bs\xb8,\xa5\x8fU\xd0\xc7.}d\x13\xf3I\xea+\x13\x9e\x0fB\rK+\xfd&Xy.Y\xea\x8d\x19%y\xc5\xcd\xb5\x15\x95\xd5\xe9\xf8\xd5\x10\xf1%\xf7s\x07/\x87%wLj$f3|\xe6\xd1T\xcf1f\xe3\x95\x83\xd3\xaf\xa6\x17X}\xd7\x8ckk\xb6\x1d\xb5\x0b\xe8\x93\xdc5\xdb!0\x19"\xbd\xbe\x8d\x02M\xf4\xd6\x8e\x11B\'7|\x95\xca\x90\xd3H\x8f\xa9\x1eX\x18\n\xe6\xbf\xf6\xfb\xd4\xe2\xd0\n\xda-\x0e}\xd2+Dw\x9b\xbf\xa4\xc9Z\xfd\xce6\xd2\xc8Bo`\x15\xea\x87\x1aJ\x9a\x87J7\x1c\x1f\xc0\xaa\x0e\x19tM\xb2\xc7\xad\xa2r\xf2\xee\xafI(!\x9d\xefYq\xd4FX\xba\x11\xfa\xd1\x11d!\xa5p\x9a\x0b[\x1b\\\xac\x0f\xce\x9f\xd9\xf5U\xd3U\x08P\xe1\xa6\xcc\x8bK\x8e&\x14lz/\x85\x08\xdc\xa46\xebJ\xff\xe2\x14\x993\x9e7\xe4"\r\x7f$}\xab\xa8\xc9\x1f%\x08\xdac\x10~\xd4\xba\x85\xdc\x86h\xb8\xf7\xbb\xdd\x94\xa9\x0b\xf8{\x14\x0b\x7f\xb5\xd5Rta\xa4\x93\x00\x8dO\xae\xbb\x1f\xa9\xd1\xd6~\x9f\xd0$YIK]\x9fq\x0b\x1a\xfc\x87\t\xec2N+\xad\xcd\xa3\xc5Z\x01Z\xb5\x00\x9d4\xc0[\xe4;?\x18\xfc\xa2\x99N\xe5\xca\xe3E\x8d\x07\xb4\xe7O2\xd6\x988\x15\xe7\xf5\xe6\xb5\xb1^hY\x05N\xee\xe3w\x90\xecn\xc2\x95\x87bv\x17\xef\x9b0\x8d\xf2\xf3$0\xf1p\xb7\x03JzW!%\x9b=RL!>X\xf3\xb7\xda K\x9f\xd7\x9dR;=\x83O\x82\xc9\xab\xe8\x84\xdf\x8b\x9d\x82\xder\x0f\xa4\\_\xa42\xa0!tQqRvS\x93.\x84HL\xab\x86\xeb\xe9\x94J\xd9ox\x07-\xc0\x00\xc8\x9dEzz\xfc\x8d\xea\xa7\xd6\xb4\x18\x852\xc3KX\xef\xe2\xff\xd3\xfa\xbfo\xd2Fx\x1f\x8d\\\xbeO\xf1\xfe\x91W\xe8\xd8g\t9;\xb5\xd5\x0c\xa8\x16r<\xba\xfb\xf9\xb4\xe0\xbfO\xc8\xc1FS\xc1Bq\x1c\xeaR\x96 \xacg\x93\xccq\t+&\x90\x14t\x89c_\x82w8p\x9e\x89\xc5[\xfd\x93v\xe6U \xd2\xe0^\xefWq\x11\x18\xb3G.\xda\xa3\xcf\x11\xf7\xab\x08V\xa60\xcc\xbem&D\xca@z\x0e\x12\x91}\xac\xe5\xcd},\xf0\x01}^T\xb9\x0b\x05\x15;\x15\x04{\x7f\x10K)\xe3\xb9\xaa\x06\xe0i\xa4\x0eh\xe43\x8f\xa4\x99;\x88~1b\xdf\xa13[\xbe\x95\xb4\xc0\xe4;<\\\x83\xe9\x1c\x05O\xff\x9d\xbf\x08%\xc2\x9a\t\xff\xb9S:Yl}5\xa2/\xdc\xdd\xe0\x8f\xdc+|{\\\xd2GZ\xfc\xb3}\x0b\x07HA\xdd\xd8z\xb6\x90\xc5\xfc\x87\xd4\xac\x9b\xa1v\x85\xd4yc\xbf\x19\x14r\xbd\x9fh\xcb\x04\x87\x9f\xcd4\xff\x92mru\x8e\xaf{\xe7\xa1\x885\x10\xd9f\x95\xe2\xf7\xb2k\xcdj\x16C,+\xc0\xc4\xb0>\xde\x98H>L\x02I\xa0V\x94\xab\x16\x94\xeb\xa1\xb9)+l\x17\x99\x0f\x9d\x122?W\x17\xac\xc3\'\x1a\x1ck \xc5$B\xbf\xf49~+xn\xf2}\xaf\xd6\xd1-\x85\x1b\xce\xad\xce\xf0\xe0\xdb\xf5=Yz>?\xd0\x02\xb7\x0b\x01\x90\x11\xfe\xa8\x08\x8e\xe6t\x00\xa0=\xac\x9dnD\xa3\xcb\xa9\x11\xd9D\x90H\x14"\x1c\\\x8e\xb5~\x15|\xab=\xaek#\xff\xe0\xc3\x0e\xe6\xe2\xab\x91\xb6y\x1b\xcf\xee\xf2J\x0e\xf0\xa4\x85\x94\x08)\xbd\xaa\xf2\xe4R\xcf\xe2\x14\xc7_\xd8|+\x1fu\x1e\x96\'\xce\xa4\x01_\xbf\xc3\xb0\x8e\xec\x0e\x02\x81\x05?L\xe1\xaf\xba*~O\xc3aJ\xf3\\W\xd3\x9b\xa3\x14Cvp\n\\J\x16!\xabel+|\x81!\x8c\xd6\x9b\xb8KM:%\xe8}A\x97\x1fD|^\xd7\xa6Ixq\xb9{\x03A\x8e.\xff;\x92\x7f\xc1\xb2\xbe\xf0\x02\xaf"\x17\x03\x92\xaf\x14(\xc7/j\xd2\x13\xac\xdf\xe8F-\xb7BJ\xd9N92S\x18\xac}\xd1_\xf0=\xe7P\xb7\xb2\xa1\xa7\xba5\xf5B\xb8]Z\x01\xf3\xba\x9f\xa2\xdd\t\xea8/\x01C\xd0\x0f\x06;%F\x92\xfcE\x82-\x1a\\\x08\xdb\xfcx\xbf\xe9-\tr2\x0f\x8fM\xdar\x0e@\xd9(Ux\x81\x1b1\xb8\xf8\xbb\xf9#\x92M\xa4\x98j"V\xff\x938\xc8\x15\x07\\\x9b\xcd;\xdc\n\xe16>\xc0y\xd5Y\xc9\xa0^\x03\xb7\xbax1b\xdf\'q\x88\x02\x9arm\x02\xf8\xf8<7i\xdfK\x19X\x97`\xb3\xf8^\xf0\x95\x9cCs\x1aG\x9cj\x16\xb8\x11\xa7rY\xd2\xf8u\xe0\xba\xa4(\\\xb4\x9b\xb8y\x9a+\x08\xb5I\x83\xd2\x9b\x94z\xc6\xea\xd4w\x9d\xa2\xac\xdele\t}\x0c\x9bh\xebc\xd6y\x1b\xa2\x87\xb5\x9a\xddz\x82\x9c\xbb\x00\x7f\x80\\\xbeH}\xd9Q4\x1bE(\xdf\xe8lR4o\x97\x98tbY\xc2\xa93 \xb6.]6\xbf\x87\'\xeeZ\x0c\xbd\xb2\x12\x93"\xd5\xed}\x9fy\x9ex\xf4\x17\xcb\xd1\xac\x92J\x9f\xbd"\x15\x7f\x99Q\x11W\xa9\xf5\xce3\x13ve\x07\xeb5O\xab\'\xd2\xc5\x17\x81w\x13\xb5\xc7\xf3\x19\x00!\x93+\xd8\x04t/\x91\x07\'\xeeP^\x92\x81\xec\xc3\xb5{N\xbcb\xe5 :\x1f\xe8\xf4\x9e\xa8\xcd\xe1M\xde\xfb\x15u\xdf\xd0\xbe^\xf7\x08\xfc\xa7\'~\xe5\xe8\xba\xef\xe0\x8b\xcb\xe4\xf3\xe7]\x19\x8b\xa3\xd1\x82\xb1yY6\x8fT\xc5G\x9fX9\xd8\x11z\xa7\xecS\xfe\x81Ot~\xfcw\xd4N\xb7\x9a\xbc*\x1brat\xa21\x8d\xc0\xc4\xcc_2\xef\xd2\xa4u.\xf0\x17\x1b\x0b\xbc\xce\xf4r\xbd\xf6\x16\r\xa0\xad j\xa9\x947\x84\xbf\xa1\x9f\xbd\x9c\xc7\x01A\x1dc\xcb%\x17\x9dx\x02\x1a\x8aG\xa7\xf1FGy\x9b\x1c\x02\x12\xcc\xbfQ\xda\xb4L\xecS\x9e~\x07\xc5f\x86W\x05\x11b\xaci7\x0e\xcf\xf0\x16 \xa9\xd0\x91\x1c\xdf]\r1[\x03\x87|\xc2\xc1%\x88m:\xb0\x85v.G8O\xbd\x98\x8cH\xbd.\x81\xf3\x8f\x1fV\xb5\x15\xfd\x07\xc7\xd8u\xfb??\xb9O5F\xea8\x88\x1fTB\x16)\xea\xcc\xe4R\xa4H\x0f_\x1c\xa5\xe1\x89\x03\x93\xaaC\xfa14\xf2\xf3\xfa\\m\xc6(*\x87\xe6KV\x13\x98\xe7;k\xb4\xbc\xf4\xd3J8\xd8\x92\x08\xf8\x02\xd1ZJ\x8e\xf94\\-0\x8b\x1b\xf0kLS4\xa2\x86unpu\xd9\x12\xa6i)\x94\x00\xa3/\xd0\xef#\xbd+=0xn\x86\xef\xc2\xe4\xd7\x0e%N\x89b\xb8\xb1X\xc4[\xb5\x84\xc3\xb3\x1b\xf1\xdd\xc2\x9d0CB\x85\xaeW\xf7\x9f\x83G&\xd9X\x9d\xec\x86\xe8Sm\x98\x04\xd2\xcd9\xa596\xabK\xd0\xe5W\x91-\x01\xf8#\xb7g\xc9\xaf\x80\xb3\x05\x1dW\xa2\xc2\x87\xe1\x81\xd9\'\xd1\xd9\x87,\xdfA\xda\x9f\xa2\x03\x8aG\x0cg\xd61\x85\xc9\xd9\x84#\t\xb3\x93\xfem\xf5\xec\x16T\xeb\xbeF\xd1\x8a\x03%\xd8!\x80\xa1D#`n\xf8o\xa5\xf1vHkS\xd7"\xa4\xe6l\x80P<\xa3\xdf\x14\xecV\xadr\xc5\xb6\x07\xc7\'~\x0c\xfe\x86\x1c\x89\xec\xd9\x9f\x04\xf3\x87-\xabGo\xba\xac\xd6\xf1\x94z\xc0U\xfb\xf4u\xc2F\xe3\xbe\x06T\xd6aU|\xc2\xd9\xc5\x1b\xb4\xb1\x08m~v\xe4D\x82\rc\xc2\xee\xba\x8bf\xb4\xbc;\xf6e\xef\xbdMr@ZF\xa7\x9d_jk\x98\xa25\xee\x9e\xd7\xb9\x04\xd9J\xe0\xd0\xf4\'\x8bo2\x86\xb6aK\xf3\x85L\xa8\xa24\n\xaa\xf7<\xcb\r\xbe\xa9\xef\x1e\xdd\xd3\xacz\x85\x93MK\xa8\x12N\xf1y\x81J\xcb\xbbzR\x94l,z\xe3H>}\xf8{\x8b\xe4%\x98a\xb05\xf4b4I\x8br\xdc\xbcm\xde\x7fp\x1eb\x08\xf1\xc9\xfdR\x16\xad\x05\x12\xba@\x89\x19\xcdO\xb4\xafJ\x01-,\xfc\xf2A\xe0\xf8\x00\xc8:g;\xa9\x96\x19\x01W\x08b\xdd\x86QIi\x18(_\xbe\xd1\x0b\xee\x02\xb4\r\xa0w\x12\xc7\xe7Wi\x82\x06F\x1frs\x9d\xb7}\x1c\xd0\x82I\x13\x15\xad\x0f\x8c\xecZ\xdf\x83\xde\xd3?\xe58\x151v\xb8\xd0ld\xc1\xc6\x80?\x90\x83\xa6\x83/\xaeq\x07\x02\xcdK\x89\xcf\xc9;\n\x03c\x17\x01\xae\r\x0e\x88\xb9\x8e\x85\xc2UR\xb4\xe3\xcf\xd5(\x95\x88\x8dL\n\xc2\x10PL\xc9\xf5[\t)\xe4\x9a\xf5F\xf9\xc6\xd0S\xe1\xc4Z\x18\xc0\r7\x8eB\xc8\xe7(X(SHOv(\xa0\x95K\xc7\xdc\x95\xdc\xed\xd2\x05\xe4\x9a!\x120UJXa\xe7\x12\x92\xe1g\x8a\x04\xab\xdd\xcag0o\xa5H\xe0\x17\xb4(#\x87i\x81=\xfb\x8b\x1d\x0f\xd6\xf6\x1e\x9a\x8eA\xa2\xaee\xc1k\xd8\xb81\x84\xce\x9b\xa7l\x06r\xf2\x81\xc2\x8f\x9a\x0e\xea~\x11\xfd\x0e\xfd\x1eb\x15\x1d\xe2\xeb6\x87IMo\x16\xf3\x1f\x84\x7f\x92\x11At\xc2\x0bQ\xf2T\x8a\xf0\xa4\xef\xd0\xa37\xf4r\xce\xe40\x84\xb3\xe3@\xb7\x87K\x94\x9cU\xdb\xecQb\xca\xee4_\xe7Os5\xb8\x0f\r\xf2\x8d\xd8\x0f\xae\x99~\x87$\x1aB\x99\xd1\x12\xbe\x07;\x82\xb5\xcf\xc0P\xd5<`\x04)S\xf7\xc5!\xd7<-\xee\xb7K\xf7^\n`\x04\x97\xbc\xa6:\xc1\xae\x1dP\x11\xe0\x12Xo\xc49D\x10\xf2\x8dGGX\xeb\x9a\xd2\x07\xb5\xa2(\xdb\xc6G\x87S\xad6\x81E\xfe\x8b\x1a\xe4\xbe\xe4i\x04\xa3Z\xb7$@|_\xb75x\x13\xdb\xe4H\x18\xe2W\xd7\xa0\x12\x85\x03JK\xf9\x06{\xea\x8f*\xa7v|*,$\xcc\xc5\x86\xad\xa6\xe6/\x9e\xd2\xfe\x84d>3\x890\x11\x90\xc2[G\xc6\x0fn\xc9\x0ct\x97\x15T\xbbO4h\xf5\xbc\x95\x08\xc5~\xbb\xca\x05\xf5\xda\xa9\xef\xd3\xd56\xf4jg\xcdp\x86L\xf1\x901\xef\xb1\xdb\x9e\xb6A\xc0\x1c\xe8\x8e<\xb5P3\xee\xd6Csj\x8db\x00\x98skC,\xd8X\xfd.S\x15\x8e\'\xccd\xcb\x1b\x90\xe1J09d\xb967\xca"\xdd\x83\x07Q\x83\xbe\xa7\r3\x8d$r}\xdfB\x17[\xc8\x06\x95\xe5\x13j\xbc\xba\x83A\x99Z\xa0C\xd8%\x8bl/\xb1\xd0\xb6E\xfbG\xd7\xfd\xe5\xdd\x88\xb1\xe0\x9f\x8e\xe2\x94Z\xf5\xe7\xa8\xb0\x857L\xf1\x05\xd0\xac\xf6!J\x18^\xef\xcd:\x8a8\xf9\xd7\xee\xde\x06SIx\xd2\x9efW\xd3`\xda\xab\x99\xcb\x17W\x1c\x8a"\x0b\xc7Y\xa2\x81\xc2\xf9\xe4s\x91QR\x92\xf9J\xa4k\\\xa0\x1a\x8e\xf9\xb1E\xdd\xae\xb9\xd0\x9eB-\x11\x8e\xaf\xc8\x8b\tcmAg\xec\xe5\x84<\xb1x\x17\x87A\x97&\xc23\xbc\xf7\x95\xe9\xb3\x91\xfc\x80\x97%bi\x83\xaf\x82fc\xd4\xed\x15\x9cRd\xad\xb8+jo\xbf G\xd3\x08T,\xc1|\xba\xb8\xee<\xf8Ngy$\x02\xff\x85\xf8\x01Z\x8d\x05\xa2\xe5ds)\x94]-T\xd8\xfaP\xdf\x1e\xc2\xdd\xc2\x9b\x03\x07\xf5\xc0&V\xca\x93\x8d\xe3#N\x9a\xc09\x8fU\xae\xa3\xb1r\x1eM]K.\x0b\x9b\x96\xcb\x17j\xab\xff\x1b\x9c[OD\x08\xf9\x1ay|Q\xd53C\xba\x16\x9eW\xa8\xd6\xa9}\xc936{\xf0\xac\x03\x86\x1e|m\xbf\xab*\x8c\x00s\x01\x17\xa4<\xedN\xd0\xf5=\xc6\xef\x05\xe1\xc0A\xf0x\xad\xe2\xa3\x01\x18i1\x00\xdajG\xc7j\xc8\x1a\x8aB\xb0w\r\x97\xd1<\xec)/z,\x13\xddq*UK\x8d\x0b\x1d\x0bxw\x85(\xc9\x85)C\xa5\xf8\xe1\x94\xb7\xa9\xed`\x9d\x96\xcd\xf7h\x11\xf5_3\xce\x03\xb3\x04\xa8C\xb4\xce\xb6\xd9S\xb5_\xb2\xcc\x1f6\x0f\xfel\x81.\x03Wp\xc4\x92\xe3;\xad\xd0D\xc4LfuN\xbe93n\xc46jqw\xecQ9\xf9;\xea\xfd"\xc6\x08\xc2\xf5\x97\xd5\xcc\x8c\xa0\xe9\xe6?\x0b\x94\xb2\x06\xcd\xbd&\xde\xe7\xf4`\xad\x06/\xd0\x16\x00\x18\xd2\xc2\xd4\x0b\xaf8\x0b\xfc\xe0\xe8\x83\xa9w\xd1\xe3jL\rW\x81\xec\xaa\xdaQX\xef+\\\x05\x16\x06\xfcQ2\xba"\xa7p\xb9a[\xe1mm\xdd\xb3\xbfl\xb1\x10g\xfb\x01q+\xd4\xff\x11\xfb\x01EwyE\xe5\x14\xbax\xdfZ\xeel\x18JL\x04\x90\xbe\x0e\r\x0b0z\x9cw\x89`~p\x88\x18\x9b.\xccz\xca&o\xfa.\x10^C\x10\xaa\x81\xc7\xbcGs_\xb7\xfa\xb1s\x16\x8c\xd1cB\x0f\x12\x16\xa2\x923ORz\x0eR\xee\x12\nN\xe8\x06\x07#\xcc8k\x10\xce\xa1\xfb\xd4pM<\xc7\xb3\xfcx\xf5^Q\'<\xa6#=$\x0c\xc05J\x05\xe6\xed\x96\xb2 \x1b1\xd9\xc2\x9c{\xa6\x8fm\xec)j\x16\xd8\x87\x94\xa8\xfbN<\xa1\x05\xb02\t\xb3X\xe3\xec\x8c\xaf\x82\xe0\xaav\x97\x90\x98\xa3nI\x03\xf0\x81?\x1bRMm\x99\xaa\x1e\xcb\xdc\x9f!\xb4\xba)7\x18\xdc\x0c\x98\xe0^\x8f\x8b\xdd0\x9f\'efHKs\xf2f\xa9\xbbs\xdckz-\xfb\xf4\x87\xfe\xb2\xea\xe9\xcc\x15\xac\xf3\xb6\xdc\xf1\xa1\xc6D\xa7\xc1}D\xf4\xaf\x0e0|\x81\r\x03(\xbc_\xb9~\xfc\xab\xf7}\x19\xfa\xc9\xceo\x8d\xf1\xf33\xd9&`\xa9A\x00@\xc8m\xfa\xcb\x85\xd0g\x1c\x07\xd1jD\x8fx\xafPh\xad/c\xfe1\x9a%\x08\xc5\x93)\x16X\x16\x11CKf\xc9\xf6\xa1\xc7\xab\x1b\x1cG\x9aFFT\x95\x17\xfa\x13\x96\xdc\xd3P\xe7m:_FWC(\xf4\xc0>\xfcl\xfd\xf6\xfc\xc0\xf4\xe7\xc0\xa6.\x9c\x07\xca\x93\x80\xd2\xde\x7f<\xe4\xf1\x03\x99%\xe7\xae\xd3\xf7m\xf4!g\xf9\xc4>\x1f\x1f\x13,\xb7r\xc6\xb2\x9c\x0fbS\xa6M\x8e.\x87\xab\xa8\xa1\xae\x00\x06\x11\xeaeQ\xc1\x87X\xd9\\h\x00:\x03\xd9\xee6\xa4^\x8c^\x8c\x98\x83\x91\xb5)\x99\x1b7%\xdc\x83-\x18$\xd56\x81\xee\xb2\x99\x15\xd5Pj\x8a\x91\xe4\xe7\x005\xa1\xac\xd2B\x0cB\xe6!L\x9d\x80?>\xc5\xa9\x85=\x10*\x13l\x16\xa77l\x8f\xb3\x99r\xc9\xf3\xcc\xb2r`\xe5\xe6\xf8f:!\xc5\xcc&XyT\xfd\xe0\xc2X\xaf\xc7I\xee\xd5\x0c8\xda\xf5\xbd\xee\xdf7\xa6\xa4\xdc4\x9d\xa6\xcc\x99\xfeZ3k\r\xdf\xeb\xe6\x86\x91\xef\x1f\xc7\xc4\x8f-%\nrw\xbb\xec\xea"\xb9\xe6@\xa2<\xf4\'T\x89\x98`\x9f\xec\x1b\x8e\xd1\xdd\xae\x82\xd0D&\xb9B\xa2A]\xd2Q=?\x8de\x18\x04\x15\x88\xe0\x06\xe3\x8f\xc6\xd4ex5\xa5F\xa7\x07\x1d\xceX\xbc\xb7\xe7\x95\xd0\xf8\x981\xf4\xf5Gi\xd6\x06\xe2\xb6\x12\x1c\xffTg\xec\x00\x18\x83\x95Yq\x9b\xb3\x8d\xe7\x1bU\xe4\xe3X\xcb\x9f\x12\xb1\xd8\x8cV\x8b\xbb\x0euT\xa2uKs\x0cEa\x04\xd0\xdfL\xc4rB\xf9\xe0\xa8\xfd\x18\xdd\xd0[\xba\xd2,\xb6;\x92\x07U\xee\x80\x1c\xd99\xd4|\xc4\x12K\xca\x1dI\xb3\x99U\x8d\x81`0I^;\x88\xa6e\'1p=@\x92\xda\xc9\xd1b\x0e\xec\xfa\xd3\x87W\xee\x03\x82\x11{~\xd1Yt\x88\xe7w#\x07\xd4\xe6\xe5\x92S\xadq df\xa5\xfa\x9e\xde\x13\xfd\xea\xe1(\xed\xb0\xb5\xef \xb6=\x8e\x86\x8b\x9b"\x8cF\xcc\xba\xb3F\xd9\\5\xff\x0euZF\x87|\xf3=~;\xfc\x89\x11.y^\x05\xbb\xd16\xb0~\x81\xfch6\x9a2\xf2\xc6\xcc9\xfc\xef\xb6E\x9e\x851\xbf,\x1f\xe1\xf2\xb7=\xcc\xd1p\xdaK\xcah\x91\xb6a\x84\xd7\xc7\xae\x1c\x89\xa7\xc6\xe2\xbe.\xb1\x19\x92\xc5\x18\xc1\x9a)3-\xbdX\xd8?\xe1\x11\xde<{\x8as\xe7B\x9eC+\x1b\n\x11"\xba\xd82\x85\x87\xd7r\xb3O\x85C\xecO\x80M\xd4\xac\xce\xa3`\x89\x08B\xeb\x81\x11\xd8\x134\xcf\xb6\xd5\x9d9\xb8D\xca\xa0\x16S\x18\xcd;\x8e\x99\x7f\x92_Y\x0bK\x99\xa6\xd6\x83\x8ac\x18\r\x83G\x8bH\x7f\xe6\xd2\xab\xdf\xd2#\xb4\x1c*\x7f\xa1\xdd\x05\x1d\xb7Z\x1e\x8fht\x05Q_\x1b\xad\xc2p\',b\xdc\x16\x86\x04\xa5\x86\xe3b\xda\xc4\xb4\xb1R\x8f\x9a\x15\xb5W\xd4q\xcc\xd6\xc5j$ \xb7F\xfd\x81\xcc\x9a\x9d\xa6\x1e\x88\xb2J\x15\xae\x12a{\x88(\x05\x9dx\x0cS+\xaf&axa\xfb\x91t\x1a\x1d\xdd\xf6,E\xfdS\x1eJ{\xa8\xc6\x02\xba\xf9\xed\xaf\x8bi3\xa3G\x03\x98$\x92\xb7\xad\x1dh.\xbc\xddc\xe8@\xfd\xa79K\xbd\xed\xd3\x7f\r\xbe\xef62\xc7\xe4:F\x05|\x80\xdb\x9b\xa3\x1c\xbfF\x01\x1fa\xccY\x90\x1d\x13\xa9\xf8\xe2\x82u\xb9\xd0\x05\x05\xc5\xc5\t\xfc\x9ah)N\x94E\xb0\x05\xd9H_\xd5\x94v\xbf\x94[\x9f\xa6\xd6J9\x17\xc4\xe9\x89\x18\xcb\x11\x0b\xe0\xa54\xfb\xd35c\x98\x87@\x87\xc1N\xf3?t\x1ay\xf8\x82\xa5,\xafAT\xaa\xd0\xca\xb1\xdfY\x18n\xd4 \xad#\x96zc\xc8\xd4\x8br\r\xcc\xa7\x9d\'\xad\x1c_nO\x01\x8a\x11\xb6=\xdfvvuv8\xefs\x9e5pO\x83ZF\xb4U)s7\xf9mo\xfbb\xe0k\xa5kK\x80&S\xa6\x8b\n\xea\x06[\x9c\xf8\xe9\xf1\x88\xe2\x07\xa8\xb9\xc0oc\x1f\n\x07F\xc8Q\xccfGR\xb9\x9a.\xb2\xb2\xbd-\x8b\x136\x92\x1d\x9ao\xf3\x14\xed\xc0U\xd8\xd5F\xb8|=*u\xea\xaf*\n\x87\x92\x8c\xdd`\xb7\x17N\xabE\xc8\xf2\xe5Y\x89\x0cS\xe5\xd2hy:\x002\x9e\xac #v\xae<bLP \n\x92\xb4m\xf9\xf7\xfeT\xd1\x12/\xdb\xb0\xffn\xd5\xb0\xfbeY\xf2\x82\r\xdc\xa0q\xfe\xbdI\x17\xcb\xcd\x95\xb0y\x94=X\x11\x14\xcc\x89\x19\xa6\xc9M\xf0\xcbhj\x85p\x8e\xb8h`FybP\x88}\xf9\x14V#\xa2)\xf6"\x08L\x80rfZ#\xba8\xc6\xc1<e\xf9\x8bET\x92\x168LB\xaa\x81\xc8r\xde\xb1-\xde\xe8\xab\xaa\x80\xcd\x91\xb0\xe9"\xc0\x16T<I\xc8\x05\x7f\xf1o \xe5i\xe9\xde\xf6\x1de\x83\xaa\x8d&\x89\xf3?e\x16\x95\x1c4\xf7\xe0\x1b\xa9g9Hy\xc2^\xa8\xe9\xa6\xe3&\xb3@D>d\x89\xfa{\xa0\xb1\xf9;\xc9\x17\xfe\xa4\x02\xa1M\xb2\xaa0\xa66OqH}E\xa0\xd1~cuS\xd5C\x9c6\xa1\x84\xc4\xef\xdb\xd2\x85\x94u\x1f"C\xe7\'?\t\x9f\x97\xbfd\xdf\x92\xb8T\x05\t"\x93b\x1a\xe5I\xf6\xd1:\t\x06nSM\xec\x9c3\xb3\xaa{\x98\xd2\xa8\x14\x9d8J(\xda\xe8\x12\xb32\x0c\xef\x87g\xd0\xa9\xe6\xa1\xd7\xaf\xdf\xeb\xb9\x92MR\xe3\xbd"\xf5\xe18\x86\xbb\xeb\xe2\x176@\x0e\x8d\x96\xb4\x02\x0b[Eu\xf2\x07t\xae\x12 u%n\xf6\x99\xfaY\xac\x0b\xca\xb6\xb7\xea\xcd\xc3\xace\xa8\xf9|\x8f\xa0\x9e\x1a\x9d\x08\x9bU\xb3\x86\x88;\xd2\xb6s\x99\xb11\x04\xaa|"\x08\xcf\xd6\xe8\xd9f\x1eh,{\xd2T\xea\x0eG\xf5\xf7\x9d\xaa\x01b\xd8\x98aU<\xff\xach\xa6\x0c\xc2p\x12D|\xc6\xb8\xe6W\x1b\x87\x81\xe8`\x7f\xb5~\x08\xdb\x8e.aZq\xd7\xa2\xa4\x04}\xde7\xff\xd4\x8c(\x17\xdc\xc3\xdbte\xfa\xb3+\xe3.\xcb3<5\xff\xed4\xb7\xe0\x9d\xb2\xb8\xba\x87e\x86\xf8\xa6\xbc\x02up\xe3OfB4\xd3p1\xce\xd0&\xce\xe2\xfc\xbd3\xb8p\xd5\x1ev\xfc\x190n@\r!\x8c\x96mD\xad\xaf\xbf\xc5\xd1\x82\xa4\xbe$\xfb\xbb\xf0fsJ\x82s\x16\xa7B\x8e\xa1V\xe0\x96\x94=5\xde\xa0\x02\x14x\xb2Kr\xec\xec\x8b\xcd!\x1f\x0c\xa8<]\xe5\x88\xc6(\xe2\x0f\xedg\xca\xf4Qi\xf4\n\x037&\x8a\x08Q\x18\x0b\xc5\x01\xd3\xc3\xeaQ')
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