hiddifypanel 10.86.0b4__py3-none-any.whl → 10.86.0b6__py3-none-any.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.
hiddifypanel/VERSION CHANGED
@@ -1 +1 @@
1
- 10.86.0b4
1
+ 10.86.0b6
hiddifypanel/VERSION.py CHANGED
@@ -1,6 +1,6 @@
1
1
  # import importlib.metadata
2
2
  from datetime import datetime
3
3
 
4
- __version__ = '10.86.0b4'
5
- __release_time__= datetime.strptime('2025-07-06T21:24:07','%Y-%m-%dT%H:%M:%S')
4
+ __version__ = '10.86.0b6'
5
+ __release_time__= datetime.strptime('2025-07-08T01:24:00','%Y-%m-%dT%H:%M:%S')
6
6
  is_released_version=True
@@ -51,7 +51,7 @@ def hurl_for(endpoint, **values):
51
51
  def get_user_agent() -> dict:
52
52
  ua = __parse_user_agent(request.user_agent.string)
53
53
 
54
- if ua.get('v', 1) < 9:
54
+ if ua.get('v', 1) < 10:
55
55
  __parse_user_agent.invalidate_all() # type:ignore
56
56
  ua = __parse_user_agent(request.user_agent.string)
57
57
  return ua
@@ -72,7 +72,7 @@ def __parse_user_agent(ua: str) -> dict:
72
72
  match = re.search(ua_version_pattern, ua)
73
73
  generic_version = list(map(int, match.group(1).split('.'))) if match else [0, 0, 0]
74
74
  res = {}
75
- res['v'] = 9
75
+ res['v'] = 10
76
76
  res["is_bot"] = uaa.is_bot
77
77
  res["is_browser"] = re.match('^Mozilla', ua, re.IGNORECASE) and True
78
78
  res['os'] = uaa.os.family
@@ -95,8 +95,10 @@ def __parse_user_agent(ua: str) -> dict:
95
95
  res['hiddify_version'] = generic_version
96
96
  if generic_version[0] == 0 and generic_version[1] <= 14:
97
97
  res['singbox_version'] = [1, 7, 0]
98
- else:
98
+ elif generic_version[0] < 3:
99
99
  res['singbox_version'] = [1, 8, 0]
100
+ else:
101
+ res['singbox_version'] = [1, 10, 0]
100
102
 
101
103
  res['is_v2ray'] = re.match('^(Hiddify|FoXray|Fair|v2rayNG|SagerNet|Shadowrocket|V2Box|Loon|Liberty)', ua, re.IGNORECASE) and True
102
104
 
@@ -29,16 +29,17 @@ def is_proxy_valid(proxy: Proxy, domain_db: Domain, port: int) -> dict | None:
29
29
  if not port:
30
30
  return {'name': name, 'msg': "port not defined", 'type': 'error', 'proto': proxy.proto}
31
31
  if "reality" not in l3 and 'reality' in domain_db.mode:
32
- return {'name': name, 'msg': "reality proxy not in reality domain", 'type': 'debug', 'proto': proxy.proto}
32
+ return {'name': name, 'msg': "1reality proxy not in reality domain", 'type': 'debug', 'proto': proxy.proto}
33
33
 
34
34
  if "reality" in l3 and 'reality' not in domain_db.mode:
35
- return {'name': name, 'msg': "reality proxy not in reality domain", 'type': 'debug', 'proto': proxy.proto}
35
+ return {'name': name, 'msg': "2reality proxy not in reality domain", 'type': 'debug', 'proto': proxy.proto}
36
36
 
37
- if "reality" in l3 and domain_db.mode in [DomainType.special_reality_grpc] and ProxyTransport.grpc != proxy.transport:
38
- return {'name': name, 'msg': "reality proxy not in reality domain", 'type': 'debug', 'proto': proxy.proto}
37
+ for p in ['tcp','grpc','xhttp']:
38
+ if "reality" in l3 and p in domain_db.mode and p not in proxy.transport:
39
+ return {'name': name, 'msg': f"reality proxy {proxy.transport} in reality {p} domain", 'type': 'debug', 'proto': proxy.proto}
40
+ if "reality" in l3 and p not in domain_db.mode and p in proxy.transport:
41
+ return {'name': name, 'msg': f"reality {p} proxy not in reality {p} domain", 'type': 'debug', 'proto': proxy.proto}
39
42
 
40
- if "reality" in l3 and (not domain_db.grpc) and ProxyTransport.grpc == proxy.transport:
41
- return {'name': name, 'msg': "reality proxy not in reality domain", 'type': 'debug', 'proto': proxy.proto}
42
43
 
43
44
  is_cdn = ProxyCDN.CDN == proxy.cdn or ProxyCDN.Fake == proxy.cdn
44
45
  if is_cdn and domain_db.mode not in [DomainType.cdn, DomainType.auto_cdn_ip, DomainType.worker]:
@@ -167,7 +168,8 @@ def get_proxies(child_id: int = 0, only_enabled=False) -> list['Proxy']:
167
168
 
168
169
  if not Domain.query.filter(Domain.mode.in_([DomainType.cdn, DomainType.auto_cdn_ip]), Domain.servernames != "", Domain.servernames != Domain.domain).first():
169
170
  proxies = [c for c in proxies if 'Fake' not in c.cdn]
170
- proxies = [c for c in proxies if not ('vless' == c.proto and ProxyTransport.tcp == c.transport and c.cdn == ProxyCDN.direct)]
171
+
172
+ # proxies = [c for c in proxies if not ('vless' == c.proto and ProxyTransport.tcp == c.transport and c.cdn == ProxyCDN.direct)]
171
173
 
172
174
  if only_enabled:
173
175
  proxies = [p for p in proxies if p.enable]
@@ -185,10 +187,11 @@ def get_valid_proxies(domains: list[Domain]) -> list[dict]:
185
187
  if domain.child_id not in configsmap:
186
188
  configsmap[domain.child_id] = get_hconfigs(domain.child_id)
187
189
  proxeismap[domain.child_id] = get_proxies(domain.child_id, only_enabled=True)
190
+ # print(proxeismap[domain.child_id])
188
191
  hconfigs = configsmap[domain.child_id]
189
192
  ips = domain.get_cdn_ips_parsed()
190
193
  if not ips:
191
- ips = hutils.network.get_domain_ips(domain.domain)
194
+ ips = hutils.network.get_domain_ips_cached(domain.domain)
192
195
  for proxy in proxeismap[domain.child_id]:
193
196
  noDomainProxies = False
194
197
  if proxy.proto in [ProxyProto.ssh, ProxyProto.wireguard]:
@@ -234,6 +237,8 @@ def get_valid_proxies(domains: list[Domain]) -> list[dict]:
234
237
 
235
238
  for opt in options:
236
239
  pinfo = make_proxy(hconfigs, proxy, domain, **opt)
240
+ # if key in "vlesstcp":
241
+ # print(pinfo)
237
242
  if 'msg' not in pinfo:
238
243
  allp.append(pinfo)
239
244
  return allp
@@ -312,7 +317,7 @@ def make_proxy(hconfigs: dict, proxy: Proxy, domain_db: Domain, phttp=80, ptls=4
312
317
  port = hutils.proxy.get_port(proxy, hconfigs, domain_db, ptls, phttp, pport)
313
318
 
314
319
  if val_res := hutils.proxy.is_proxy_valid(proxy, domain_db, port):
315
- # print(val_res)
320
+ # print(f'{name}:{domain}->{val_res}')
316
321
  return val_res
317
322
 
318
323
  if 'reality' in proxy.l3:
@@ -483,6 +488,9 @@ def make_proxy(hconfigs: dict, proxy: Proxy, domain_db: Domain, phttp=80, ptls=4
483
488
  if dl:=base.get('download'):
484
489
  dl['path']=base['path']
485
490
  dl['xhttp_mode']=dl['params'].get('mode',"auto")
491
+
492
+ if all_element_in_first_dict_is_exist_in_second(dl,base):
493
+ del base['download']
486
494
  return base
487
495
 
488
496
  if proxy.transport == "grpc":
@@ -504,6 +512,17 @@ def make_proxy(hconfigs: dict, proxy: Proxy, domain_db: Domain, phttp=80, ptls=4
504
512
  return base
505
513
  return {'name': name, 'msg': 'not valid', 'type': 'error', 'proto': proxy.proto}
506
514
 
515
+ def all_element_in_first_dict_is_exist_in_second(fdict,sdict):
516
+ for k,v in fdict.items():
517
+ if k=="params":
518
+ continue
519
+ if isinstance(v,dict):
520
+ if not all_element_in_first_dict_is_exist_in_second(v,sdict.get(k,{})):
521
+ return False
522
+ if sdict.get(k,v)!=v:
523
+ return False
524
+
525
+ return True
507
526
 
508
527
  class ProxyJsonEncoder(json.JSONEncoder):
509
528
  def default(self, obj):
@@ -165,10 +165,10 @@ def to_link(proxy: dict) -> str | dict:
165
165
 
166
166
  elif proxy['l3'] == 'http':
167
167
  q['security']='none'
168
-
169
- for k,v in proxy.get('params',{}).items():
170
- if k not in q:
171
- q[k]=v
168
+ if proxy.get('transport') not in {ProxyTransport.xhttp}:
169
+ for k,v in proxy.get('params',{}).items():
170
+ if k not in q and k!="download":
171
+ q[k]=v
172
172
  return f"{baseurl}?{urlencode(q,quote_via=quote)}#{name_link}"
173
173
 
174
174
 
@@ -388,13 +388,15 @@ def _add_xhttp_details(ss: dict, proxy: dict):
388
388
  }
389
389
  }
390
390
  if proxy.get("download"):
391
- ss['xhttpSettings']['extra']['downloadSettings'] = {
392
- "address": proxy['download'].get("server"),
393
- "port": proxy['port'],
391
+
392
+ dlsettings = {
393
+ "address":proxy['download'].get("server"),
394
+ "port":proxy['port']
394
395
  }
395
-
396
- _add_xhttp_details(ss['xhttpSettings']['extra']['downloadSettings'], proxy['download'])
397
- _add_security(ss['xhttpSettings']['extra']['downloadSettings'], proxy, proxy['download'])
396
+ _add_xhttp_details(dlsettings, proxy['download'])
397
+ _add_security(dlsettings, proxy, proxy['download'])
398
+
399
+ ss['xhttpSettings']['extra']['downloadSettings']=dlsettings
398
400
 
399
401
 
400
402
  def add_kcp_stream(ss: dict, proxy: dict):
@@ -251,8 +251,8 @@ class ConfigEnum(metaclass=FastEnum):
251
251
  reality_enable = _BoolConfigDscr(ConfigCategory.proxies, ApplyMode.apply_config)
252
252
  tcp_enable = _BoolConfigDscr(ConfigCategory.proxies, ApplyMode.apply_config)
253
253
  quic_enable = _BoolConfigDscr(ConfigCategory.proxies, ApplyMode.apply_config)
254
- xtls_enable = _BoolConfigDscr(ConfigCategory.hidden, ApplyMode.apply_config)
255
- h2_enable = _BoolConfigDscr(ConfigCategory.proxies, ApplyMode.apply_config)
254
+ xtls_enable = _BoolConfigDscr(ConfigCategory.hidden, ApplyMode.apply_config)#deprecated
255
+ h2_enable = _BoolConfigDscr(ConfigCategory.hidden, ApplyMode.apply_config)#deprecated
256
256
 
257
257
  db_version = _StrConfigDscr(ConfigCategory.hidden)
258
258
  last_priodic_usage_check = _IntConfigDscr(ConfigCategory.hidden)
@@ -148,7 +148,7 @@ class DomainAdmin(AdminLTEModelView):
148
148
  def on_model_change(self, form, model, is_created):
149
149
  # Sanitize domain input
150
150
  model.domain = (model.domain or '').lower().strip()
151
- if model.domain==model.download_domain.domain:
151
+ if model.download_domain and model.domain==model.download_domain.domain:
152
152
  model.download_domain_id=None
153
153
  model.download_domain=None
154
154
  # Basic validation
@@ -262,7 +262,7 @@ class DomainAdmin(AdminLTEModelView):
262
262
  if model.domain == configs[c]:
263
263
  raise ValidationError(_("You have used this domain in: ") + _(f"config.{c}.label"))
264
264
 
265
- for td in Domain.query.filter(Domain.mode._in([DomainType.reality,DomainType.special_reality_xhttp,DomainType.special_reality_grpc,DomainType.special_reality_tcp]) == DomainType.reality, Domain.domain != model.domain).all():
265
+ for td in Domain.query.filter(Domain.mode.in_([DomainType.reality,DomainType.special_reality_xhttp,DomainType.special_reality_grpc,DomainType.special_reality_tcp]), Domain.domain != model.domain).all():
266
266
  # print(td)
267
267
  if td.servernames and (model.domain in td.servernames.split(",")):
268
268
  raise ValidationError(_("You have used this domain in: ") + _(f"config.reality_server_names.label") + td.domain)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hiddifypanel
3
- Version: 10.86.0b4
3
+ Version: 10.86.0b6
4
4
  Summary: hiddifypanel multi proxy panel
5
5
  Author: hiddify
6
6
  License:
@@ -1,6 +1,6 @@
1
1
  hiddifypanel/Events.py,sha256=AlnRdjVul0jP-NCT4-zoaQgowoOo-JhdQB4ytetAFKA,723
2
- hiddifypanel/VERSION,sha256=_U7uM7wYY6-1gQgLJZGSZgZwEo6zi-qoFTP3SqUa8bs,10
3
- hiddifypanel/VERSION.py,sha256=rbmwEzOPZExMk19nkkNKorvJBa_CPWvzRhuPeQDBSzA,189
2
+ hiddifypanel/VERSION,sha256=16kJyuRiEADJYRRX5Tizt_QyCRfeYLYOHKB2fDJ-1e0,10
3
+ hiddifypanel/VERSION.py,sha256=F6yE7-TcND0un7ol3R0ufUC5oIndOv2NJ-gksPfzX1s,189
4
4
  hiddifypanel/__init__.py,sha256=kigwDO8d9jXyPZLvJAWd6zo-GX3pG_xWf-q2aStz80Y,377
5
5
  hiddifypanel/__main__.py,sha256=IVchnXpK6bm8T3N--mN17HBQNLMeLAjyP7iwzULexB4,218
6
6
  hiddifypanel/auth.py,sha256=LJmH4ROqZv5ej_4m1b0xvbEw2meJTzDR1mFCDm523kE,8041
@@ -25,7 +25,7 @@ hiddifypanel/hutils/auth.py,sha256=Ci3_lBfLXx1yi2M6HvYX3ceHYtOf-cfX092evcs8528,3
25
25
  hiddifypanel/hutils/convert.py,sha256=mPEDzR64hKeQ4B_tZRk2Ci8-Ybod0bjX0BbxLHOmLZA,2075
26
26
  hiddifypanel/hutils/crypto.py,sha256=C32Wj-SpjOSycmmnWD0q8g_ZG4puzJNX9T9hSkTut08,2591
27
27
  hiddifypanel/hutils/encode.py,sha256=-A1VknNmtsw-YfV-h8mz6QLtlYjg2MB_ZWbUj6MSil4,837
28
- hiddifypanel/hutils/flask.py,sha256=QE-u0FJpRdxVtg4u9hYkFafEvvL3-EwmqB46LfAKoX8,11949
28
+ hiddifypanel/hutils/flask.py,sha256=tUWtHNko5E3mymkvogFo9zZIyc6e5TMuCcbyiQaaKrk,12036
29
29
  hiddifypanel/hutils/github_issue.py,sha256=LSJCDVC_UEFDIXG4JdQReLDUnF_WmfhH7eFB-iZKwdg,6609
30
30
  hiddifypanel/hutils/model.py,sha256=ajlJ-Tx0Mq68S9y5qEj0lwlDbF2xj0niZBQyw7UU670,1320
31
31
  hiddifypanel/hutils/random.py,sha256=KrsarmRNL05PYzwMxDaDyv-_QcKS0YsZR2z7BnllAqI,1789
@@ -44,17 +44,17 @@ hiddifypanel/hutils/node/parent.py,sha256=UbyfvfP4fTSn6HN9oZDjYsKYIejiqW6eApKIfP
44
44
  hiddifypanel/hutils/node/shared.py,sha256=FDSj3e-i3pb3mEv5vcUeX0Km1nxYg1CeAruIq7RwFmU,2540
45
45
  hiddifypanel/hutils/proxy/__init__.py,sha256=V2dGkYT3tji__5YOSmKOMChFYXtlENe1fX6eHqK70Pc,129
46
46
  hiddifypanel/hutils/proxy/clash.py,sha256=JiT3wj48b9ezCGxZoEp5FrhvwfmNKslcF5GMoH9-8OU,7061
47
- hiddifypanel/hutils/proxy/shared.py,sha256=pfZUSSEhaewgj_p1uIGornMUjwHemSpoOp6e7kEM_NQ,23589
47
+ hiddifypanel/hutils/proxy/shared.py,sha256=50HONZ8zxSW0_QNCA6ZRG8yp5KXXZYE4JcD82Ba1vJ4,24239
48
48
  hiddifypanel/hutils/proxy/singbox.py,sha256=Fmmzoake-gpnRB5yfTyQvd1dB-10WKwhJt4vhiKzJZQ,11722
49
49
  hiddifypanel/hutils/proxy/wireguard.py,sha256=gij01BYXII-RxAh3Yky0o3yce20HJKeHtu1KNwb0Uzk,934
50
- hiddifypanel/hutils/proxy/xray.py,sha256=dX3a4E4qQHDL5EcmxTmc0oHViibEZfATyzVm0SyijAk,11220
51
- hiddifypanel/hutils/proxy/xrayjson.py,sha256=2VmZBrS0yS-uUOc5YkIXs9HhWczESegx2Uuo1k4HjYU,16644
50
+ hiddifypanel/hutils/proxy/xray.py,sha256=ze9EiXLaTlMHp9q7fkOmJ7_NwogRnewcWj1Ui9Ofi4c,11306
51
+ hiddifypanel/hutils/proxy/xrayjson.py,sha256=wcZs4laKO-aASWsHd36vozHXaGRcTiQZQVN9BvzBIBs,16612
52
52
  hiddifypanel/models/__init__.py,sha256=PngFjQL9WvQP4EioNHRz1tTeyIgLoNvZ7WpmAhwKHnU,677
53
53
  hiddifypanel/models/admin.py,sha256=bbvpbquyPTmRjqwVT4zVC3bIF39zZYv8snlOR5XIF90,7517
54
54
  hiddifypanel/models/base_account.py,sha256=jVO4haLwTsiE7u4fWoDhhRZ_NjbO7hVJhry8k-Vnrzk,3507
55
55
  hiddifypanel/models/child.py,sha256=IhmCszhUgi1QXbWgji4UDjHV7_OyzLSLsW86BQWFys4,3009
56
56
  hiddifypanel/models/config.py,sha256=Ny3MXiPC-CrF8-xAEmRth6d_lfpDiWZHbCctyJNyWgg,6382
57
- hiddifypanel/models/config_enum.py,sha256=kC2LIqFQERySIqn8jZcm3uV5ppWjzRVWJahTr0GtjzA,17078
57
+ hiddifypanel/models/config_enum.py,sha256=7Q8MZUwiKGGe1Tz7qmIsFhiKZcx8ZW0sGTxviYT98F8,17100
58
58
  hiddifypanel/models/domain.py,sha256=ftfHbdLeiUmzBCQisrAZ2geHX8KovEFXCTwq8OtOs8k,9523
59
59
  hiddifypanel/models/parent_domain.py,sha256=bs5F1neOAQu9XHEk3QQTBM4p2iuebM4cnAQqwfNjCtg,2291
60
60
  hiddifypanel/models/proxy.py,sha256=Bjagdx7IPMlOLBDZ5KPJvwiWQo-oYtjuJEUs_DhhQU0,3487
@@ -80,7 +80,7 @@ hiddifypanel/panel/admin/AdminstratorAdmin.py,sha256=X8MI3DtW62vJqFRp97M_CxSdB-N
80
80
  hiddifypanel/panel/admin/Backup.py,sha256=BKSoAZgw1j16P1Jh9vMqGj7ZfB2m-WafDK0C5vil5FY,3634
81
81
  hiddifypanel/panel/admin/ConfigAdmin.py,sha256=0hnLY-8BxrpVnrAcQaedWjHnRUq1X_Styi_ZCZ2ivds,2876
82
82
  hiddifypanel/panel/admin/Dashboard.py,sha256=JOqZLHxPOYKQYQVJ7AtHAkilH-anJZQyK1rQrgCJUeA,3798
83
- hiddifypanel/panel/admin/DomainAdmin.py,sha256=TUCK9HGoFruOl2206tESRQ1iPD4LTCMvLlTQtXexQrQ,16528
83
+ hiddifypanel/panel/admin/DomainAdmin.py,sha256=NJFmgbBMWmS8dGIhjK9BZG9nPH0jOhb54c9McrfRAB0,16532
84
84
  hiddifypanel/panel/admin/NodeAdmin.py,sha256=QAHQjF7e7F4KqsWNWpMt7SoLANlFEborVtWQV9OXJ2E,3102
85
85
  hiddifypanel/panel/admin/ProxyAdmin.py,sha256=HtuYHkZ8LCrYtjF2xO2i7lyw_KtOTBYCPu0bNWR4fOs,5364
86
86
  hiddifypanel/panel/admin/QuickSetup.py,sha256=7ysSAlS7yJerstTDWhuhEwGyoTqpkry2-SfEbuP1VuY,12689
@@ -842,17 +842,17 @@ hiddifypanel/templates/redirect.html,sha256=K9x_O4P96vEkqBhOXIhoGrWw1KIqd2bL0BjI
842
842
  hiddifypanel/templates/static.html,sha256=jp6q4wtx-k2A_cjqJoNiMS7Ee30arE45qI3ev4d5ky4,165
843
843
  hiddifypanel/templates/hiddify-flask-admin/actions.html,sha256=2NeITe2e-lPKCk_o511tCIqVtrPu8LYHE1wTCtrFUrI,1331
844
844
  hiddifypanel/templates/hiddify-flask-admin/list.html,sha256=MBGrTqZpzNLe4sZy0RozvXNr8seFUQc2C6v88BJtNWc,11095
845
- hiddifypanel/translations/en/LC_MESSAGES/messages.mo,sha256=YC0F2JUWQPP-JxCScAWEKJXy-w-E6e3PGBqe2qpPbFA,81218
845
+ hiddifypanel/translations/en/LC_MESSAGES/messages.mo,sha256=lXyNRLtAH6ePK5a1AS7s746_mDOxrzJwxNIF2s1IOys,81218
846
846
  hiddifypanel/translations/en/LC_MESSAGES/messages.po,sha256=HxKCOjnn66CP4Q7iJpQ2nkV7heHiCo3hR364urYKpRY,84567
847
- hiddifypanel/translations/fa/LC_MESSAGES/messages.mo,sha256=ZMJ3H8l8K_tHGvlrjp2QwI2f7Pm21zxVH54N3qzGpms,103271
847
+ hiddifypanel/translations/fa/LC_MESSAGES/messages.mo,sha256=n5LdnOKQ7q8fUex4RJEiawWJ5DVov-9AVo9iaCziwXY,103271
848
848
  hiddifypanel/translations/fa/LC_MESSAGES/messages.po,sha256=2h4MNaTUOxHl8B3C17983aPh72YG5gm9d3SLKrgKcms,108504
849
- hiddifypanel/translations/my/LC_MESSAGES/messages.mo,sha256=v5E04Uo82TnlzWUAYW3WweZ7saY77Tt55XRN_HwpxMI,139090
849
+ hiddifypanel/translations/my/LC_MESSAGES/messages.mo,sha256=8GFGvLx0z0ARIEclnCvbNyCXbqkfeOKBoIl1qgmty-A,139090
850
850
  hiddifypanel/translations/my/LC_MESSAGES/messages.po,sha256=PvYBwQWXaUpAoqy90oow-sH-ZyPE7Fm_l-3FrXT_vEA,141985
851
- hiddifypanel/translations/pt/LC_MESSAGES/messages.mo,sha256=nc2ioUZQPZ0pVIG8b2NCw5xl4l3FcyAtHEWbhQx46UA,80947
851
+ hiddifypanel/translations/pt/LC_MESSAGES/messages.mo,sha256=O3qsDymfQOENZzXz6ANo-X6J38tXDP1jJ1fQMifhp3g,80947
852
852
  hiddifypanel/translations/pt/LC_MESSAGES/messages.po,sha256=L_On4NoKVP6hXcWBwnLNjOXPGgevYvO-ttcMdHfzqK0,86067
853
- hiddifypanel/translations/ru/LC_MESSAGES/messages.mo,sha256=rBWU8pJ7iKjsiydPzAzlmE3WuBhd3QghnV2FiJ9QaCY,108744
853
+ hiddifypanel/translations/ru/LC_MESSAGES/messages.mo,sha256=463r0z9HUpRUti1OPpcTyPVsNTOsCDnXE_9eoGtYONw,108744
854
854
  hiddifypanel/translations/ru/LC_MESSAGES/messages.po,sha256=yRc8bKXu_SQBKpCKWGTiV4H_0IgserCY3_1cvLED5-s,114070
855
- hiddifypanel/translations/zh/LC_MESSAGES/messages.mo,sha256=hlZ9HkdorhkbyJ_eAjXMrFS7hzNcNW01_e3tJIIgaBQ,75446
855
+ hiddifypanel/translations/zh/LC_MESSAGES/messages.mo,sha256=Wv5hvGVY9F92w4-w0YWPLxlH3eNReqG5NtP_QcJYTLo,75446
856
856
  hiddifypanel/translations/zh/LC_MESSAGES/messages.po,sha256=ySV8tjRzhEjbJx6JQbLMhWnoMb6CTJqEVIKuYwJI0dA,80177
857
857
  hiddifypanel/translations.i18n/en.json,sha256=70eyfU2b7NFuig6Yrql39dFs0JPuthe4dVbb5gTWDtw,73450
858
858
  hiddifypanel/translations.i18n/fa.json,sha256=tClb4Oo8bLejitKUPz_s2Dlu43dRp6PCqa2cvPOtGd4,97413
@@ -861,9 +861,9 @@ hiddifypanel/translations.i18n/my.json,sha256=1jSy8S2bP681KV9MT5Mq4lFzrh6a982bTj
861
861
  hiddifypanel/translations.i18n/pt.json,sha256=r_8xflnQBbooU9jNMaZ8QjLqvKegIyGUKMSFGj4F6HE,75096
862
862
  hiddifypanel/translations.i18n/ru.json,sha256=wNMbGlKMMFfxShxYPO7wknmuEKjXHCfNqGH2HiA0zRU,102883
863
863
  hiddifypanel/translations.i18n/zh.json,sha256=d8Jtgm1GMGFAiEXzcRmHLmbDo7YtJynUvpHGpzt3CMw,69629
864
- hiddifypanel-10.86.0b4.dist-info/licenses/LICENSE.md,sha256=oDrt-cUsyiDGnRPjEJh-3dH2ddAuK_bIVBD8ntkOtZw,19807
865
- hiddifypanel-10.86.0b4.dist-info/METADATA,sha256=xmTV-MDn4zkfoHeVNtg0Kdh35RadlGGiNadvpuLPx_Q,25627
866
- hiddifypanel-10.86.0b4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
867
- hiddifypanel-10.86.0b4.dist-info/entry_points.txt,sha256=Xzpqlh3nwBtZhoV9AANJykano056VJvYzaujxPztJaM,60
868
- hiddifypanel-10.86.0b4.dist-info/top_level.txt,sha256=rv-b3qFWUZQTBy0kyBfsr7L6tPpeO7AaQlLHXn-HI5M,13
869
- hiddifypanel-10.86.0b4.dist-info/RECORD,,
864
+ hiddifypanel-10.86.0b6.dist-info/licenses/LICENSE.md,sha256=oDrt-cUsyiDGnRPjEJh-3dH2ddAuK_bIVBD8ntkOtZw,19807
865
+ hiddifypanel-10.86.0b6.dist-info/METADATA,sha256=XtoTBusuDR9GZzQnmww6ALMasswT6QnRQ-GFGy1AVhs,25627
866
+ hiddifypanel-10.86.0b6.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
867
+ hiddifypanel-10.86.0b6.dist-info/entry_points.txt,sha256=Xzpqlh3nwBtZhoV9AANJykano056VJvYzaujxPztJaM,60
868
+ hiddifypanel-10.86.0b6.dist-info/top_level.txt,sha256=rv-b3qFWUZQTBy0kyBfsr7L6tPpeO7AaQlLHXn-HI5M,13
869
+ hiddifypanel-10.86.0b6.dist-info/RECORD,,