@abtnode/webapp 1.17.8-beta-20260116-080047-9fdd00d3 → 1.17.8-beta-20260119-102944-6ba93a16

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 (208) hide show
  1. package/blocklet.js +1 -1
  2. package/blocklet.yml +1 -1
  3. package/dist/assets/{AdapterDayjs-CHVRCEwB.js → AdapterDayjs-QPUTgQRV.js} +6 -6
  4. package/dist/assets/{Add-IxR__ozX.js → Add-vvp5juzF.js} +1 -1
  5. package/dist/assets/ArrowDropDown-CZ9_k8VG.js +1 -0
  6. package/dist/assets/{Autocomplete-OhxbbTq9.js → Autocomplete-BqPV4fCq.js} +1 -1
  7. package/dist/assets/{Breadcrumbs-CfkRwQNu.js → Breadcrumbs-DEV3jkdC.js} +1 -1
  8. package/dist/assets/{ButtonGroup--8rwLvQ8.js → ButtonGroup-BDg4XqiR.js} +1 -1
  9. package/dist/assets/{CSSTransition-D4fabzL2.js → CSSTransition-CoGzojVI.js} +1 -1
  10. package/dist/assets/{CallMerge-Di3dNXj5.js → CallMerge-C5DyJ6fm.js} +1 -1
  11. package/dist/assets/{CardContent-CPUlyd-R.js → CardContent-rjL6kB_r.js} +1 -1
  12. package/dist/assets/{ChevronLeft-lzYf4tao.js → ChevronLeft-DqSG9UHo.js} +1 -1
  13. package/dist/assets/{ChevronRight-CO-Fv8kP.js → ChevronRight-DxsEcvUg.js} +1 -1
  14. package/dist/assets/{Clear-DriUx9_Q.js → Clear-Bq2o3otF.js} +1 -1
  15. package/dist/assets/{Delete-DkHujAB7.js → Delete-RCnwfW1g.js} +1 -1
  16. package/dist/assets/{DeleteOutline-DUcJA7eO.js → DeleteOutline-BXoQnWFj.js} +1 -1
  17. package/dist/assets/{Done-B_L7rkHk.js → Done-DVQ_2sA2.js} +1 -1
  18. package/dist/assets/{Edit-DgzPfnB_.js → Edit-DVXYin_T.js} +1 -1
  19. package/dist/assets/{EditOutlined-yXcT-6A0.js → EditOutlined-CHgCULNs.js} +1 -1
  20. package/dist/assets/{ErrorOutline-B7jRfGmR.js → ErrorOutline-qdJUw5q6.js} +1 -1
  21. package/dist/assets/{FilterList-DMbHmf0X.js → FilterList-Dfj9GsZN.js} +1 -1
  22. package/dist/assets/{Google-DMfPhzx4.js → Google-BtG0IwAt.js} +1 -1
  23. package/dist/assets/{HelpOutline-Be59cdK1.js → HelpOutline-DaGemEcX.js} +1 -1
  24. package/dist/assets/{Launch-B8FfXmf_.js → Launch-BsxqWG7C.js} +1 -1
  25. package/dist/assets/{Link-wdDqdiCm.js → Link-BRsXeoEC.js} +1 -1
  26. package/dist/assets/{ListItemButton-BHNRxd8I.js → ListItemButton-kpGgMj08.js} +1 -1
  27. package/dist/assets/{ListSubheader-UFJcQfY_.js → ListSubheader-BTZwmxdp.js} +1 -1
  28. package/dist/assets/{LoadingButton-CUdpFc0p.js → LoadingButton-DZ6V6Qhe.js} +1 -1
  29. package/dist/assets/{LottiePlayer.modern-Jxnonfmi.js → LottiePlayer.modern-H3Pn2YNu.js} +1 -1
  30. package/dist/assets/{MoreVert-BVgcfW7V.js → MoreVert-DxM-B8xa.js} +1 -1
  31. package/dist/assets/{OpenInNew-CEBJXmxa.js → OpenInNew-BUUx7OSU.js} +1 -1
  32. package/dist/assets/{Refresh-DrflkqFW.js → Refresh-BV0ShuHj.js} +1 -1
  33. package/dist/assets/{Replay-qvum4SpI.js → Replay-DyvF6A5F.js} +1 -1
  34. package/dist/assets/{Search-CtujvL0H.js → Search-m3CMNGDm.js} +1 -1
  35. package/dist/assets/{Stepper-CJfsKFpi.js → Stepper-DR0cCC-q.js} +1 -1
  36. package/dist/assets/{TableSearch-CdKaHbVQ.js → TableSearch-okRl0dqT.js} +1 -1
  37. package/dist/assets/{ToggleButtonGroup-BP4C4KFu.js → ToggleButtonGroup-DxIvj50j.js} +1 -1
  38. package/dist/assets/{UnfoldMore-BvZuyACH.js → UnfoldMore-CZT-4-ZR.js} +1 -1
  39. package/dist/assets/Verified-C1aYOY3u.js +1 -0
  40. package/dist/assets/{VerifiedUser-D0ltmMtV.js → VerifiedUser-CS3FW2sd.js} +1 -1
  41. package/dist/assets/{ViewList--urcCqVt.js → ViewList-CXrUBR0t.js} +1 -1
  42. package/dist/assets/{_createAggregator-G6HCftPW.js → _createAggregator-BunO9xPF.js} +1 -1
  43. package/dist/assets/{actions-5RspfWE_.js → actions-CoszoXjw.js} +1 -1
  44. package/dist/assets/{actions-DjLoksgL.js → actions-DE2r6nPV.js} +1 -1
  45. package/dist/assets/{actions-CQAb6_Rz.js → actions-MiEliG9R.js} +1 -1
  46. package/dist/assets/{agreement-b4V3Z14P.js → agreement-CiVQRYD2.js} +1 -1
  47. package/dist/assets/api-CKaiYijO.js +1 -0
  48. package/dist/assets/{appearance-AiyB_V1W.js → appearance-DtyCmGdO.js} +1 -1
  49. package/dist/assets/{ar-BHqjWgUQ.js → ar-DOhYGTlW.js} +1 -1
  50. package/dist/assets/{audit-logs-C4Hps2ag.js → audit-logs-DQ3aFS2x.js} +2 -2
  51. package/dist/assets/{babel-sNEik07f.js → babel-yl1c6pTl.js} +1 -1
  52. package/dist/assets/{base-chart-BE2BHY3Y.js → base-chart-G_tNYsY8.js} +1 -1
  53. package/dist/assets/{blocklet-lDvdqhrX.js → blocklet-CzBGFesP.js} +1 -1
  54. package/dist/assets/{chain-BQMbjNUU.js → chain-z8CuvP-V.js} +1 -1
  55. package/dist/assets/{click-to-copy-C6h97nXy.js → click-to-copy-DXIfZNln.js} +1 -1
  56. package/dist/assets/cloneDeep-BDiWjxRu.js +1 -0
  57. package/dist/assets/config-navigation-BYqsSWyl.js +472 -0
  58. package/dist/assets/{connect-B1msLBDb.js → connect-64-QZQcE.js} +3 -3
  59. package/dist/assets/{connect-to-DeMt1m5c.js → connect-to-CeGdVeiX.js} +3 -3
  60. package/dist/assets/{de-QUGQFv2K.js → de-CtKPdGk6.js} +1 -1
  61. package/dist/assets/{delete-confirm-DyLbGAy5.js → delete-confirm-Dh3X0iXU.js} +1 -1
  62. package/dist/assets/{depsEqual-CM0PEscV.js → depsEqual-Bfsv3kHf.js} +1 -1
  63. package/dist/assets/{detail-C3fs8uRl.js → detail-C4nQbO7d.js} +2 -2
  64. package/dist/assets/{domains-CVE_fz_I.js → domains-7n5twKTf.js} +2 -2
  65. package/dist/assets/{download-f9_CnIWg.js → download-CFyTq_FK.js} +1 -1
  66. package/dist/assets/{edit.svg-Bdq-FCGM.js → edit.svg-DBlxe-2U.js} +1 -1
  67. package/dist/assets/emotion-cache.browser.esm-Cu824RS4.js +1 -0
  68. package/dist/assets/engine-Bbh7Mw-7.js +1 -0
  69. package/dist/assets/{es-C4w6cL07.js → es-BSYtSZPg.js} +1 -1
  70. package/dist/assets/{fr-Bq3UipEu.js → fr-C35fi7h9.js} +1 -1
  71. package/dist/assets/{get-safe-url-RPQVYlWr.js → get-safe-url-BTJDduf6.js} +1 -1
  72. package/dist/assets/getValidReactChildren-T3CvLHYr.js +1 -0
  73. package/dist/assets/{graphql-5mE8kB37.js → graphql-Cnx2YXBE.js} +1 -1
  74. package/dist/assets/{graphqlMode-BHMSwqwV.js → graphqlMode-7KCJGlgj.js} +2 -2
  75. package/dist/assets/{hi-DGZy0DLh.js → hi-5fpYJkiW.js} +1 -1
  76. package/dist/assets/{html-title-DE0TrRVC.js → html-title-CQe12Cut.js} +1 -1
  77. package/dist/assets/{id-DOzDilAf.js → id-DoVb0JYr.js} +1 -1
  78. package/dist/assets/{iframe-B7aYePTd.js → iframe-BWle7w_S.js} +1 -1
  79. package/dist/assets/{index-r58wskKh.js → index-AaVex2Te.js} +1 -1
  80. package/dist/assets/{index-B4azxfc8.js → index-B8JpxHJE.js} +1 -1
  81. package/dist/assets/{index-hG-7kift.js → index-BCrgfevn.js} +2 -2
  82. package/dist/assets/index-BHLEff7q.js +369 -0
  83. package/dist/assets/{index-DbRhfp5G.js → index-BMGgZI9D.js} +1 -1
  84. package/dist/assets/{index-CaLjm3Sr.js → index-BXpvvqAs.js} +1 -1
  85. package/dist/assets/{index-D7yowN9E.js → index-BcZYQGNY.js} +8 -8
  86. package/dist/assets/{index-CEn1Olzp.js → index-Bg6faJyI.js} +1 -1
  87. package/dist/assets/{index-B2xyyyAv.js → index-Bv6Ryg7V.js} +1 -1
  88. package/dist/assets/index-BzFgWQ5w.js +1 -0
  89. package/dist/assets/{index-DaEqVg3j.js → index-C73PGWD5.js} +1 -1
  90. package/dist/assets/{index-B29Pha71.js → index-C97bSDg2.js} +3 -3
  91. package/dist/assets/index-CBCPHvf_.js +102 -0
  92. package/dist/assets/{index-B1mmOd5b.js → index-CJ_aJ5dR.js} +1 -1
  93. package/dist/assets/{index-DmCKwIHx.js → index-CQob6fmR.js} +4 -4
  94. package/dist/assets/{index-BqqU8gwj.js → index-CTjBZAn9.js} +1 -1
  95. package/dist/assets/{index-2l_1Jppv.js → index-CUGajpSS.js} +3 -3
  96. package/dist/assets/{index-CWB_ryH-.js → index-CXEKSKL7.js} +1 -1
  97. package/dist/assets/{index-BgYMQ-SO.js → index-ChmYDkPv.js} +2 -2
  98. package/dist/assets/{index-QndNtIi-.js → index-CoHxWTi-.js} +1 -1
  99. package/dist/assets/{index-9co-KaYp.js → index-D42m9V9f.js} +9 -9
  100. package/dist/assets/{index-EzJJEvjR.js → index-D4yrNQ5O.js} +3 -3
  101. package/dist/assets/{index-CPZ5M8hw.js → index-DBtWMsht.js} +1 -1
  102. package/dist/assets/{index-DaVz8byr.js → index-DHLFobHl.js} +3 -3
  103. package/dist/assets/{index-nVFW1KOC.js → index-DJt6Q1WW.js} +1 -1
  104. package/dist/assets/{index-BtOLGXbe.js → index-DSG25x4F.js} +1 -1
  105. package/dist/assets/{index-BfetuCUm.js → index-DTVaw2Hc.js} +4 -4
  106. package/dist/assets/{index-BfQLSa8k.js → index-DUEj1V-j.js} +1 -1
  107. package/dist/assets/{index-Cmj8zxd_.js → index-DVR29wYi.js} +14 -14
  108. package/dist/assets/index-Denq1UAZ.js +20 -0
  109. package/dist/assets/{index-BcjR7La5.js → index-DfCxzzye.js} +1 -1
  110. package/dist/assets/{index-Beek8Qoq.js → index-DftYcsPB.js} +6 -6
  111. package/dist/assets/{index-B0oOTjeC.js → index-DqCVCPmC.js} +1 -1
  112. package/dist/assets/{index-BIgX2N1A.js → index-DrI_kbUr.js} +6 -6
  113. package/dist/assets/{index-ByymZrPq.js → index-DtIwM7gL.js} +2 -2
  114. package/dist/assets/{index-BBu-RTSN.js → index-DyNVa2Lx.js} +1 -1
  115. package/dist/assets/{index-DYd4YT_K.js → index-G-jrPGsm.js} +1 -1
  116. package/dist/assets/{index-BX6YpiBs.js → index-Ii4Xi_du.js} +2 -2
  117. package/dist/assets/{index-BZ5rC2Lk.js → index-P2FBSyZf.js} +1 -1
  118. package/dist/assets/{index-Ca61GFb8.js → index-dCiAdDNg.js} +1 -1
  119. package/dist/assets/{index-Bm8Rp86x.js → index-kSplQjj2.js} +1 -1
  120. package/dist/assets/{index-82LLl9rh.js → index-nmsk2vjw.js} +2 -2
  121. package/dist/assets/{index-CVpBdzTr.js → index-nsujgMc_.js} +1 -1
  122. package/dist/assets/{index-D3SOJZGy.js → index-u76kHZTc.js} +3 -3
  123. package/dist/assets/{index-gwhKA5OT.js → index-xtzr7R_I.js} +1 -1
  124. package/dist/assets/{index.esm-C5mhDUsD.js → index.esm-iaB2Jgy_.js} +1 -1
  125. package/dist/assets/{install-from-url-DPdbO0Jq.js → install-from-url-CzhDO2C0.js} +1 -1
  126. package/dist/assets/{invitation-3RtS1iUK.js → invitation-C3HrxXln.js} +2 -2
  127. package/dist/assets/is-path-prefix-equal-dPdZJpAg.js +1 -0
  128. package/dist/assets/{isEmail-apFH2MvD.js → isEmail-CmCW4Fgq.js} +1 -1
  129. package/dist/assets/item-C6yFM2Os.js +163 -0
  130. package/dist/assets/{ja-DMq-YXDX.js → ja-DZPUwZ9l.js} +1 -1
  131. package/dist/assets/{jsonMode-RjxYywbi.js → jsonMode-BRueWwe6.js} +1 -1
  132. package/dist/assets/{ko-BrYbXurh.js → ko-q4i4r9g6.js} +1 -1
  133. package/dist/assets/{list-header-BNS6BF2P.js → list-header-s21LDuvb.js} +1 -1
  134. package/dist/assets/{lite-C-Ikw2GQ.js → lite-BBz66z5Z.js} +2 -2
  135. package/dist/assets/{lock.svg-BFdqOrkF.js → lock.svg-DK1hXFWn.js} +1 -1
  136. package/dist/assets/{log-DZlkZyGX.js → log-DRaCmTGd.js} +1 -1
  137. package/dist/assets/{login-method-item-ZVrK6tB1.js → login-method-item-DwSmGt8t.js} +1 -1
  138. package/dist/assets/{lottie-react.esm-A7yQ3Nfv.js → lottie-react.esm-DqwAKW0L.js} +1 -1
  139. package/dist/assets/{memory-CoCFCBkX.js → memory-VAHG3fjG.js} +1 -1
  140. package/dist/assets/{metric-B3S53u3H.js → metric-B6TET6QI.js} +1 -1
  141. package/dist/assets/{monaco-editor-CQ6Pm7Hi.js → monaco-editor-BH4xSgKB.js} +3 -3
  142. package/dist/assets/{mouseTarget-DxlEpFaz.js → mouseTarget-txK7mk_L.js} +1 -1
  143. package/dist/assets/omit-B-qG4p98.js +1 -0
  144. package/dist/assets/{overview-z9AW_vcO.js → overview-D3hqR9Yg.js} +1 -1
  145. package/dist/assets/{permission-C_g43OOf.js → permission-DET008IY.js} +1 -1
  146. package/dist/assets/{preference-1qTmAvHN.js → preference-pxwdMSFg.js} +8 -8
  147. package/dist/assets/{provider-icon-CoJ5ERXe.js → provider-icon-CCZmjsDZ.js} +1 -1
  148. package/dist/assets/{pt-Dl6732JN.js → pt-BFCHl6F1.js} +1 -1
  149. package/dist/assets/{raf-schd.esm-CU1FaTjd.js → raf-schd.esm-BuSKwIfR.js} +1 -1
  150. package/dist/assets/{rotate-session-key-CQOBWeRr.js → rotate-session-key-DE58Q8ag.js} +1 -1
  151. package/dist/assets/{ru-CVUeN9AX.js → ru-CSTl62kK.js} +1 -1
  152. package/dist/assets/runtime-b4EXN3II.js +1 -0
  153. package/dist/assets/schema-DE6tzaXQ.js +1 -0
  154. package/dist/assets/sdk-CxXstbZm.js +1 -0
  155. package/dist/assets/{service-iJdsq1ul.js → service-BpzqSJv4.js} +1 -1
  156. package/dist/assets/{shorten-label-CCnq_MUQ.js → shorten-label-PYNmzpP_.js} +1 -1
  157. package/dist/assets/{simple-select-0S1qRvRS.js → simple-select-BiJQdJOQ.js} +1 -1
  158. package/dist/assets/{spaces-BbUa6G9F.js → spaces-MVFShLV4.js} +1 -1
  159. package/dist/assets/{status-g0Lvwqad.js → status-LmBdrnlB.js} +1 -1
  160. package/dist/assets/{status-B4gHBixJ.js → status-UZAIOWNB.js} +1 -1
  161. package/dist/assets/{switch-control-CwXplLu0.js → switch-control-CE57fLeM.js} +1 -1
  162. package/dist/assets/{table-icons-BwS2Y2wV.js → table-icons-BG66cxZv.js} +1 -1
  163. package/dist/assets/{team-DETQHkho.js → team-DgQYntrc.js} +1 -1
  164. package/dist/assets/{th-32eBNQes.js → th-D75Dlluo.js} +1 -1
  165. package/dist/assets/{toLower-oQZ3J7Wi.js → toLower-DBVF4v1M.js} +1 -1
  166. package/dist/assets/toUpper-RYfZ9dsZ.js +1 -0
  167. package/dist/assets/{traffic-Cqk5X-Ty.js → traffic-7oEMp-9f.js} +1 -1
  168. package/dist/assets/trim-Dm26Hw3f.js +1 -0
  169. package/dist/assets/{url-evaluation-DyzOKILN.js → url-evaluation-CTsNt3ve.js} +1 -1
  170. package/dist/assets/{url-join-BM9fQWnd.js → url-join-oxVMh_nl.js} +1 -1
  171. package/dist/assets/{use-mobile-23djKzeO.js → use-mobile-BS_f_Fn7.js} +1 -1
  172. package/dist/assets/{use-mobile-BmaqHxmL.js → use-mobile-Czu8FCYf.js} +1 -1
  173. package/dist/assets/{useAsync-DtsKmLYR.js → useAsync-sbHIoH6-.js} +1 -1
  174. package/dist/assets/{useAsyncRetry-bd8YRPLB.js → useAsyncRetry-CCLyjAGj.js} +1 -1
  175. package/dist/assets/{useLocalStorage-Cf0vlWCe.js → useLocalStorage-CnqCtMp_.js} +1 -1
  176. package/dist/assets/{useThemeProps-CSqQ3Rdj.js → useThemeProps-DrXM-hmA.js} +1 -1
  177. package/dist/assets/{util-w8OtW6iJ.js → util-odWrmhcv.js} +1 -1
  178. package/dist/assets/{vi-DF8IinAc.js → vi-D1mKYrmb.js} +1 -1
  179. package/dist/assets/{wait-container-CoMsFqPE.js → wait-container-D_OCwH7P.js} +1 -1
  180. package/dist/assets/{without-wallet-U-jwKDa8.js → without-wallet-suCG1vjR.js} +1 -1
  181. package/dist/assets/wrap-locale-C0daq2dx.js +1 -0
  182. package/dist/assets/{zh-ByJkLAV1.js → zh-G2I44gfs.js} +1 -1
  183. package/dist/assets/{zh-tw-34G9tsUP.js → zh-tw-C4Juvs-i.js} +1 -1
  184. package/dist/index.html +1 -1
  185. package/package.json +1 -1
  186. package/dist/assets/ArrowDropDown-BLLloj8o.js +0 -1
  187. package/dist/assets/KeyboardArrowDown-Dlq5aN05.js +0 -1
  188. package/dist/assets/Verified-BAR-FN7O.js +0 -1
  189. package/dist/assets/api-Bv3RStR2.js +0 -1
  190. package/dist/assets/cloneDeep-CheRvpcx.js +0 -1
  191. package/dist/assets/config-navigation-D55MBXAB.js +0 -472
  192. package/dist/assets/emotion-cache.browser.esm-DxLNiXj3.js +0 -1
  193. package/dist/assets/engine-DGEfu7n8.js +0 -1
  194. package/dist/assets/getValidReactChildren-CVyZy5bG.js +0 -1
  195. package/dist/assets/index-CckoDRE8.js +0 -1
  196. package/dist/assets/index-DciiOEW2.js +0 -20
  197. package/dist/assets/index-Duu5UY8_.js +0 -1
  198. package/dist/assets/index-DxkMGrHs.js +0 -358
  199. package/dist/assets/index-K5eCanEK.js +0 -102
  200. package/dist/assets/is-path-prefix-equal-Cc6vYZ8N.js +0 -1
  201. package/dist/assets/item-BinI3jhy.js +0 -163
  202. package/dist/assets/omit-Bk5eP-SH.js +0 -1
  203. package/dist/assets/runtime-CVva7EgW.js +0 -1
  204. package/dist/assets/schema-7NDYbay9.js +0 -1
  205. package/dist/assets/sdk-Dvt1785F.js +0 -1
  206. package/dist/assets/toUpper-lxerpjTR.js +0 -1
  207. package/dist/assets/trim-D7km596D.js +0 -1
  208. package/dist/assets/wrap-locale-DxhU5ODE.js +0 -1
@@ -1 +1 @@
1
- import{aY as bt,aZ as pt,r as u,$ as ft,a4 as W,j as p,a3 as N,b0 as At,a5 as ht,a7 as Ft,a9 as St,a1 as fe,e9 as Ot,ea as Dt,dI as Xt,eb as he,ec as Se,c6 as lt,ab as ve,bT as dt,bX as D,ed as me,dE as xe,P as ye,b as ge,bH as Ce,ee as we,ef as Be}from"./index-BIgX2N1A.js";function Te(e){return pt("MuiTab",e)}const x=bt("MuiTab",["root","labelIcon","textColorInherit","textColorPrimary","textColorSecondary","selected","disabled","fullWidth","wrapped","iconWrapper","icon"]),Ie=e=>{const{classes:t,textColor:l,fullWidth:s,wrapped:n,icon:a,label:i,selected:b,disabled:f}=e,v={root:["root",a&&i&&"labelIcon",`textColor${At(l)}`,s&&"fullWidth",n&&"wrapped",b&&"selected",f&&"disabled"],icon:["iconWrapper","icon"]};return ht(v,Te,t)},Me=N(Ft,{name:"MuiTab",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:l}=e;return[t.root,l.label&&l.icon&&t.labelIcon,t[`textColor${At(l.textColor)}`],l.fullWidth&&t.fullWidth,l.wrapped&&t.wrapped,{[`& .${x.iconWrapper}`]:t.iconWrapper},{[`& .${x.icon}`]:t.icon}]}})(St(({theme:e})=>({...e.typography.button,maxWidth:360,minWidth:90,position:"relative",minHeight:48,flexShrink:0,padding:"12px 16px",overflow:"hidden",whiteSpace:"normal",textAlign:"center",lineHeight:1.25,variants:[{props:({ownerState:t})=>t.label&&(t.iconPosition==="top"||t.iconPosition==="bottom"),style:{flexDirection:"column"}},{props:({ownerState:t})=>t.label&&t.iconPosition!=="top"&&t.iconPosition!=="bottom",style:{flexDirection:"row"}},{props:({ownerState:t})=>t.icon&&t.label,style:{minHeight:72,paddingTop:9,paddingBottom:9}},{props:({ownerState:t,iconPosition:l})=>t.icon&&t.label&&l==="top",style:{[`& > .${x.icon}`]:{marginBottom:6}}},{props:({ownerState:t,iconPosition:l})=>t.icon&&t.label&&l==="bottom",style:{[`& > .${x.icon}`]:{marginTop:6}}},{props:({ownerState:t,iconPosition:l})=>t.icon&&t.label&&l==="start",style:{[`& > .${x.icon}`]:{marginRight:e.spacing(1)}}},{props:({ownerState:t,iconPosition:l})=>t.icon&&t.label&&l==="end",style:{[`& > .${x.icon}`]:{marginLeft:e.spacing(1)}}},{props:{textColor:"inherit"},style:{color:"inherit",opacity:.6,[`&.${x.selected}`]:{opacity:1},[`&.${x.disabled}`]:{opacity:(e.vars||e).palette.action.disabledOpacity}}},{props:{textColor:"primary"},style:{color:(e.vars||e).palette.text.secondary,[`&.${x.selected}`]:{color:(e.vars||e).palette.primary.main},[`&.${x.disabled}`]:{color:(e.vars||e).palette.text.disabled}}},{props:{textColor:"secondary"},style:{color:(e.vars||e).palette.text.secondary,[`&.${x.selected}`]:{color:(e.vars||e).palette.secondary.main},[`&.${x.disabled}`]:{color:(e.vars||e).palette.text.disabled}}},{props:({ownerState:t})=>t.fullWidth,style:{flexShrink:1,flexGrow:1,flexBasis:0,maxWidth:"none"}},{props:({ownerState:t})=>t.wrapped,style:{fontSize:e.typography.pxToRem(12)}}]}))),vt=u.forwardRef(function(t,l){const s=ft({props:t,name:"MuiTab"}),{className:n,disabled:a=!1,disableFocusRipple:i=!1,fullWidth:b,icon:f,iconPosition:v="top",indicator:C,label:m,onChange:S,onClick:w,onFocus:j,selected:B,selectionFollowsFocus:y,textColor:Z="inherit",value:M,wrapped:rt=!1,...E}=s,A={...s,disabled:a,disableFocusRipple:i,selected:B,icon:!!f,iconPosition:v,label:!!m,fullWidth:b,textColor:Z,wrapped:rt},K=Ie(A),Y=f&&m&&u.isValidElement(f)?u.cloneElement(f,{className:W(K.icon,f.props.className)}):f,J=P=>{!B&&S&&S(P,M),w&&w(P)},F=P=>{y&&!B&&S&&S(P,M),j&&j(P)};return p.jsxs(Me,{focusRipple:!i,className:W(K.root,n),ref:l,role:"tab","aria-selected":B,disabled:a,onClick:J,onFocus:F,ownerState:A,tabIndex:B?0:-1,...E,children:[v==="top"||v==="start"?p.jsxs(u.Fragment,{children:[Y,m]}):p.jsxs(u.Fragment,{children:[m,Y]}),C]})});function Ee(e){return(1+Math.sin(Math.PI*e-Math.PI/2))/2}function Pe(e,t,l,s={},n=()=>{}){const{ease:a=Ee,duration:i=300}=s;let b=null;const f=t[e];let v=!1;const C=()=>{v=!0},m=S=>{if(v){n(new Error("Animation cancelled"));return}b===null&&(b=S);const w=Math.min(1,(S-b)/i);if(t[e]=a(w)*(l-f)+f,w>=1){requestAnimationFrame(()=>{n(null)});return}requestAnimationFrame(m)};return f===l?(n(new Error("Element already at target position")),C):(requestAnimationFrame(m),C)}const Re={width:99,height:99,position:"absolute",top:-9999,overflow:"scroll"};function ke(e){const{onChange:t,...l}=e,s=u.useRef(),n=u.useRef(null),a=()=>{s.current=n.current.offsetHeight-n.current.clientHeight};return fe(()=>{const i=Ot(()=>{const f=s.current;a(),f!==s.current&&t(s.current)}),b=Dt(n.current);return b.addEventListener("resize",i),()=>{i.clear(),b.removeEventListener("resize",i)}},[t]),u.useEffect(()=>{a(),t(s.current)},[t]),p.jsx("div",{style:Re,...l,ref:n})}function ze(e){return pt("MuiTabScrollButton",e)}const We=bt("MuiTabScrollButton",["root","vertical","horizontal","disabled"]),je=e=>{const{classes:t,orientation:l,disabled:s}=e;return ht({root:["root",l,s&&"disabled"]},ze,t)},He=N(Ft,{name:"MuiTabScrollButton",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:l}=e;return[t.root,l.orientation&&t[l.orientation]]}})({width:40,flexShrink:0,opacity:.8,[`&.${We.disabled}`]:{opacity:0},variants:[{props:{orientation:"vertical"},style:{width:"100%",height:40,"& svg":{transform:"var(--TabScrollButton-svgRotate)"}}}]}),$e=u.forwardRef(function(t,l){const s=ft({props:t,name:"MuiTabScrollButton"}),{className:n,slots:a={},slotProps:i={},direction:b,orientation:f,disabled:v,...C}=s,m=Xt(),S={isRtl:m,...s},w=je(S),j=a.StartScrollButtonIcon??he,B=a.EndScrollButtonIcon??Se,y=lt({elementType:j,externalSlotProps:i.startScrollButtonIcon,additionalProps:{fontSize:"small"},ownerState:S}),Z=lt({elementType:B,externalSlotProps:i.endScrollButtonIcon,additionalProps:{fontSize:"small"},ownerState:S});return p.jsx(He,{component:"div",className:W(w.root,n),ref:l,role:null,ownerState:S,tabIndex:null,...C,style:{...C.style,...f==="vertical"&&{"--TabScrollButton-svgRotate":`rotate(${m?-90:90}deg)`}},children:b==="left"?p.jsx(j,{...y}):p.jsx(B,{...Z})})});function Le(e){return pt("MuiTabs",e)}const ut=bt("MuiTabs",["root","vertical","list","flexContainer","flexContainerVertical","centered","scroller","fixed","scrollableX","scrollableY","hideScrollbar","scrollButtons","scrollButtonsHideMobile","indicator"]),Ht=(e,t)=>e===t?e.firstChild:t&&t.nextElementSibling?t.nextElementSibling:e.firstChild,$t=(e,t)=>e===t?e.lastChild:t&&t.previousElementSibling?t.previousElementSibling:e.lastChild,ot=(e,t,l)=>{let s=!1,n=l(e,t);for(;n;){if(n===e.firstChild){if(s)return;s=!0}const a=n.disabled||n.getAttribute("aria-disabled")==="true";if(!n.hasAttribute("tabindex")||a)n=l(e,n);else{n.focus();return}}},Ne=e=>{const{vertical:t,fixed:l,hideScrollbar:s,scrollableX:n,scrollableY:a,centered:i,scrollButtonsHideMobile:b,classes:f}=e;return ht({root:["root",t&&"vertical"],scroller:["scroller",l&&"fixed",s&&"hideScrollbar",n&&"scrollableX",a&&"scrollableY"],list:["list","flexContainer",t&&"flexContainerVertical",t&&"vertical",i&&"centered"],indicator:["indicator"],scrollButtons:["scrollButtons",b&&"scrollButtonsHideMobile"],scrollableX:[n&&"scrollableX"],hideScrollbar:[s&&"hideScrollbar"]},Le,f)},Ae=N("div",{name:"MuiTabs",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:l}=e;return[{[`& .${ut.scrollButtons}`]:t.scrollButtons},{[`& .${ut.scrollButtons}`]:l.scrollButtonsHideMobile&&t.scrollButtonsHideMobile},t.root,l.vertical&&t.vertical]}})(St(({theme:e})=>({overflow:"hidden",minHeight:48,WebkitOverflowScrolling:"touch",display:"flex",variants:[{props:({ownerState:t})=>t.vertical,style:{flexDirection:"column"}},{props:({ownerState:t})=>t.scrollButtonsHideMobile,style:{[`& .${ut.scrollButtons}`]:{[e.breakpoints.down("sm")]:{display:"none"}}}}]}))),Fe=N("div",{name:"MuiTabs",slot:"Scroller",overridesResolver:(e,t)=>{const{ownerState:l}=e;return[t.scroller,l.fixed&&t.fixed,l.hideScrollbar&&t.hideScrollbar,l.scrollableX&&t.scrollableX,l.scrollableY&&t.scrollableY]}})({position:"relative",display:"inline-block",flex:"1 1 auto",whiteSpace:"nowrap",variants:[{props:({ownerState:e})=>e.fixed,style:{overflowX:"hidden",width:"100%"}},{props:({ownerState:e})=>e.hideScrollbar,style:{scrollbarWidth:"none","&::-webkit-scrollbar":{display:"none"}}},{props:({ownerState:e})=>e.scrollableX,style:{overflowX:"auto",overflowY:"hidden"}},{props:({ownerState:e})=>e.scrollableY,style:{overflowY:"auto",overflowX:"hidden"}}]}),Oe=N("div",{name:"MuiTabs",slot:"List",overridesResolver:(e,t)=>{const{ownerState:l}=e;return[t.list,t.flexContainer,l.vertical&&t.flexContainerVertical,l.centered&&t.centered]}})({display:"flex",variants:[{props:({ownerState:e})=>e.vertical,style:{flexDirection:"column"}},{props:({ownerState:e})=>e.centered,style:{justifyContent:"center"}}]}),De=N("span",{name:"MuiTabs",slot:"Indicator"})(St(({theme:e})=>({position:"absolute",height:2,bottom:0,width:"100%",transition:e.transitions.create(),variants:[{props:{indicatorColor:"primary"},style:{backgroundColor:(e.vars||e).palette.primary.main}},{props:{indicatorColor:"secondary"},style:{backgroundColor:(e.vars||e).palette.secondary.main}},{props:({ownerState:t})=>t.vertical,style:{height:"100%",width:2,right:0}}]}))),Xe=N(ke)({overflowX:"auto",overflowY:"hidden",scrollbarWidth:"none","&::-webkit-scrollbar":{display:"none"}}),Lt={},mt=u.forwardRef(function(t,l){const s=ft({props:t,name:"MuiTabs"}),n=ve(),a=Xt(),{"aria-label":i,"aria-labelledby":b,action:f,centered:v=!1,children:C,className:m,component:S="div",allowScrollButtonsMobile:w=!1,indicatorColor:j="primary",onChange:B,orientation:y="horizontal",ScrollButtonComponent:Z,scrollButtons:M="auto",selectionFollowsFocus:rt,slots:E={},slotProps:A={},TabIndicatorProps:K={},TabScrollButtonProps:Y={},textColor:J="primary",value:F,variant:P="standard",visibleScrollbar:nt=!1,...Kt}=s,T=P==="scrollable",g=y==="vertical",U=g?"scrollTop":"scrollLeft",Q=g?"top":"left",_=g?"bottom":"right",st=g?"clientHeight":"clientWidth",V=g?"height":"width",R={...s,component:S,allowScrollButtonsMobile:w,indicatorColor:j,orientation:y,vertical:g,scrollButtons:M,textColor:J,variant:P,visibleScrollbar:nt,fixed:!T,hideScrollbar:T&&!nt,scrollableX:T&&!g,scrollableY:T&&g,centered:v&&!T,scrollButtonsHideMobile:!w},z=Ne(R),Yt=lt({elementType:E.StartScrollButtonIcon,externalSlotProps:A.startScrollButtonIcon,ownerState:R}),Ut=lt({elementType:E.EndScrollButtonIcon,externalSlotProps:A.endScrollButtonIcon,ownerState:R}),[xt,Vt]=u.useState(!1),[H,yt]=u.useState(Lt),[gt,qt]=u.useState(!1),[Ct,Gt]=u.useState(!1),[wt,Zt]=u.useState(!1),[Bt,Jt]=u.useState({overflow:"hidden",scrollbarWidth:0}),Tt=new Map,k=u.useRef(null),$=u.useRef(null),O={slots:E,slotProps:{indicator:K,scrollButtons:Y,...A}},It=()=>{const o=k.current;let r;if(o){const c=o.getBoundingClientRect();r={clientWidth:o.clientWidth,scrollLeft:o.scrollLeft,scrollTop:o.scrollTop,scrollWidth:o.scrollWidth,top:c.top,bottom:c.bottom,left:c.left,right:c.right}}let d;if(o&&F!==!1){const c=$.current.children;if(c.length>0){const h=c[Tt.get(F)];d=h?h.getBoundingClientRect():null}}return{tabsMeta:r,tabMeta:d}},q=dt(()=>{const{tabsMeta:o,tabMeta:r}=It();let d=0,c;g?(c="top",r&&o&&(d=r.top-o.top+o.scrollTop)):(c=a?"right":"left",r&&o&&(d=(a?-1:1)*(r[c]-o[c]+o.scrollLeft)));const h={[c]:d,[V]:r?r[V]:0};if(typeof H[c]!="number"||typeof H[V]!="number")yt(h);else{const I=Math.abs(H[c]-h[c]),L=Math.abs(H[V]-h[V]);(I>=1||L>=1)&&yt(h)}}),at=(o,{animation:r=!0}={})=>{r?Pe(U,k.current,o,{duration:n.transitions.duration.standard}):k.current[U]=o},Mt=o=>{let r=k.current[U];g?r+=o:r+=o*(a?-1:1),at(r)},Et=()=>{const o=k.current[st];let r=0;const d=Array.from($.current.children);for(let c=0;c<d.length;c+=1){const h=d[c];if(r+h[st]>o){c===0&&(r=o);break}r+=h[st]}return r},Qt=()=>{Mt(-1*Et())},_t=()=>{Mt(Et())},[te,{onChange:Pt,...ee}]=D("scrollbar",{className:W(z.scrollableX,z.hideScrollbar),elementType:Xe,shouldForwardComponentProp:!0,externalForwardedProps:O,ownerState:R}),oe=u.useCallback(o=>{Pt?.(o),Jt({overflow:null,scrollbarWidth:o})},[Pt]),[Rt,kt]=D("scrollButtons",{className:W(z.scrollButtons,Y.className),elementType:$e,externalForwardedProps:O,ownerState:R,additionalProps:{orientation:y,slots:{StartScrollButtonIcon:E.startScrollButtonIcon||E.StartScrollButtonIcon,EndScrollButtonIcon:E.endScrollButtonIcon||E.EndScrollButtonIcon},slotProps:{startScrollButtonIcon:Yt,endScrollButtonIcon:Ut}}}),le=()=>{const o={};o.scrollbarSizeListener=T?p.jsx(te,{...ee,onChange:oe}):null;const d=T&&(M==="auto"&&(gt||Ct)||M===!0);return o.scrollButtonStart=d?p.jsx(Rt,{direction:a?"right":"left",onClick:Qt,disabled:!gt,...kt}):null,o.scrollButtonEnd=d?p.jsx(Rt,{direction:a?"left":"right",onClick:_t,disabled:!Ct,...kt}):null,o},zt=dt(o=>{const{tabsMeta:r,tabMeta:d}=It();if(!(!d||!r)){if(d[Q]<r[Q]){const c=r[U]+(d[Q]-r[Q]);at(c,{animation:o})}else if(d[_]>r[_]){const c=r[U]+(d[_]-r[_]);at(c,{animation:o})}}}),tt=dt(()=>{T&&M!==!1&&Zt(!wt)});u.useEffect(()=>{const o=Ot(()=>{k.current&&q()});let r;const d=I=>{I.forEach(L=>{L.removedNodes.forEach(G=>{r?.unobserve(G)}),L.addedNodes.forEach(G=>{r?.observe(G)})}),o(),tt()},c=Dt(k.current);c.addEventListener("resize",o);let h;return typeof ResizeObserver<"u"&&(r=new ResizeObserver(o),Array.from($.current.children).forEach(I=>{r.observe(I)})),typeof MutationObserver<"u"&&(h=new MutationObserver(d),h.observe($.current,{childList:!0})),()=>{o.clear(),c.removeEventListener("resize",o),h?.disconnect(),r?.disconnect()}},[q,tt]),u.useEffect(()=>{const o=Array.from($.current.children),r=o.length;if(typeof IntersectionObserver<"u"&&r>0&&T&&M!==!1){const d=o[0],c=o[r-1],h={root:k.current,threshold:.99},I=ct=>{qt(!ct[0].isIntersecting)},L=new IntersectionObserver(I,h);L.observe(d);const G=ct=>{Gt(!ct[0].isIntersecting)},jt=new IntersectionObserver(G,h);return jt.observe(c),()=>{L.disconnect(),jt.disconnect()}}},[T,M,wt,C?.length]),u.useEffect(()=>{Vt(!0)},[]),u.useEffect(()=>{q()}),u.useEffect(()=>{zt(Lt!==H)},[zt,H]),u.useImperativeHandle(f,()=>({updateIndicator:q,updateScrollButtons:tt}),[q,tt]);const[re,ne]=D("indicator",{className:W(z.indicator,K.className),elementType:De,externalForwardedProps:O,ownerState:R,additionalProps:{style:H}}),Wt=p.jsx(re,{...ne});let et=0;const se=u.Children.map(C,o=>{if(!u.isValidElement(o))return null;const r=o.props.value===void 0?et:o.props.value;Tt.set(r,et);const d=r===F;return et+=1,u.cloneElement(o,{fullWidth:P==="fullWidth",indicator:d&&!xt&&Wt,selected:d,selectionFollowsFocus:rt,onChange:B,textColor:J,value:r,...et===1&&F===!1&&!o.props.tabIndex?{tabIndex:0}:{}})}),ae=o=>{if(o.altKey||o.shiftKey||o.ctrlKey||o.metaKey)return;const r=$.current,d=me(xe(r));if(d?.getAttribute("role")!=="tab")return;let h=y==="horizontal"?"ArrowLeft":"ArrowUp",I=y==="horizontal"?"ArrowRight":"ArrowDown";switch(y==="horizontal"&&a&&(h="ArrowRight",I="ArrowLeft"),o.key){case h:o.preventDefault(),ot(r,d,$t);break;case I:o.preventDefault(),ot(r,d,Ht);break;case"Home":o.preventDefault(),ot(r,null,Ht);break;case"End":o.preventDefault(),ot(r,null,$t);break}},it=le(),[ie,ce]=D("root",{ref:l,className:W(z.root,m),elementType:Ae,externalForwardedProps:{...O,...Kt,component:S},ownerState:R}),[de,ue]=D("scroller",{ref:k,className:z.scroller,elementType:Fe,externalForwardedProps:O,ownerState:R,additionalProps:{style:{overflow:Bt.overflow,[g?`margin${a?"Left":"Right"}`:"marginBottom"]:nt?void 0:-Bt.scrollbarWidth}}}),[be,pe]=D("list",{ref:$,className:W(z.list,z.flexContainer),elementType:Oe,externalForwardedProps:O,ownerState:R,getSlotProps:o=>({...o,onKeyDown:r=>{ae(r),o.onKeyDown?.(r)}})});return p.jsxs(ie,{...ce,children:[it.scrollButtonStart,it.scrollbarSizeListener,p.jsxs(de,{...ue,children:[p.jsx(be,{"aria-label":i,"aria-labelledby":b,"aria-orientation":y==="vertical"?"vertical":null,role:"tablist",...pe,children:se}),xt&&Wt]}),it.scrollButtonEnd]})}),Nt="index",X={tabs:`${Nt}-tabs`,tab:`${Nt}-tab`},Ke=ye(mt)(({theme:e})=>({[`& .${X.tabs}`]:{},[`& .${X.tab}`]:{fontSize:"0.875rem",[e.breakpoints.up("md")]:{fontSize:"1rem"}}}));function Ye({tabs:e,current:t,onChange:l,iconPosition:s=void 0,enableTabClick:n=!1,...a}){return p.jsx(mt,{scrollButtons:"auto",value:t,onChange:(i,b)=>!n&&l(b),...a,variant:"scrollable",sx:{minHeight:"auto",".MuiTabs-scrollButtons.Mui-disabled":{opacity:.3,cursor:"not-allowed",pointerEvents:"auto"},".MuiTabs-scroller":{borderRadius:"100vw"},".MuiTabs-flexContainer":{borderRadius:"100vw",backgroundColor:"grey.100",padding:.5,display:"inline-flex",columnGap:.25,maxWidth:"100%",overflowX:"auto"},".MuiTab-root":{borderRadius:"100vw",border:"1px solid transparent",minHeight:"auto",lineHeight:1,py:1,color:"text.secondary",fontSize:"13px",fontWeight:"normal",textTransform:"capitalize",transition:"background-color 0.2s ease","&.Mui-selected, &:hover":{backgroundColor:"action.selected",borderColor:"grey.100",color:"grey.A700"}},".MuiTabs-indicator":{display:"none"},...a.sx},children:e.map(i=>p.jsx(vt,{className:X.tab,value:i.value,label:i.label,icon:i.icon,iconPosition:s,onClick:()=>n&&l(i.value)},i.value))})}function Ue({tabs:e,current:t,onChange:l,iconPosition:s=void 0,enableTabClick:n=!1,...a}){return p.jsx(mt,{scrollButtons:"auto",value:t,onChange:(i,b)=>!n&&l(b),...a,variant:"scrollable",sx:{minHeight:"auto",".MuiTabs-scrollButtons.Mui-disabled":{opacity:.3,cursor:"not-allowed",pointerEvents:"auto"},".MuiTabs-scroller":a.orientation!=="vertical"?{"&::after":{content:'""',display:"block",position:"sticky",left:0,zIndex:-1,width:"100%",height:"1px",backgroundColor:"grey.300"}}:{},".MuiTabs-flexContainer":{display:"inline-flex",columnGap:2.5,px:0,pb:.5},".MuiTab-root":{border:"1px solid transparent",minHeight:"auto",lineHeight:1,py:1,px:0,color:"text.secondary",fontSize:"14px",fontWeight:500,textTransform:"capitalize",minWidth:"auto","&.Mui-selected, &:hover":{color:"primary.main"}},".MuiTabs-indicator":{height:"1px",backgroundColor:"primary.main"},...a.sx},children:e.map(i=>p.jsx(vt,{className:X.tab,value:i.value,label:i.label,icon:i.icon,iconPosition:s,onClick:()=>n&&l(i.value)},i.value))})}function qe({tabs:e,current:t,onChange:l,variant:s=void 0,iconPosition:n=void 0,enableTabClick:a=!1,...i}){return s==="card"?p.jsx(Ye,{...i,tabs:e,current:t,enableTabClick:a,onChange:l,iconPosition:n}):s==="line"?p.jsx(Ue,{...i,tabs:e,current:t,enableTabClick:a,onChange:l,iconPosition:n}):p.jsx(Ke,{scrollButtons:"auto",variant:"scrollable",value:t,onChange:(b,f)=>!a&&l(f),indicatorColor:"primary",...i,className:[X.tabs,i.className||""].join(" "),children:e.map(b=>p.jsx(vt,{className:X.tab,value:b.value,label:b.label,icon:b.icon,iconPosition:n,onClick:()=>a&&l(b.value)},b.value))})}function Ge(e,t=""){const{info:l}=ge(),s=Ce(()=>{const n=e?.breadcrumbsLabel||e?.label||"";return we(n,t,l)},[e,t,l]);return s?p.jsx(Be,{children:p.jsx("title",{children:s})}):null}export{qe as T,mt as a,vt as b,ut as t,Ge as u};
1
+ import{aY as bt,aZ as pt,r as u,$ as ft,a4 as W,j as p,a3 as L,b0 as At,a5 as ht,a7 as Ft,a9 as St,a1 as fe,e9 as Ot,ea as Dt,dI as Xt,eb as he,ec as Se,c6 as lt,ab as ve,bN as dt,bR as D,ed as me,dE as xe,P as ye,b as ge,bB as Ce,ee as we,ef as Be}from"./index-DrI_kbUr.js";function Te(e){return pt("MuiTab",e)}const x=bt("MuiTab",["root","labelIcon","textColorInherit","textColorPrimary","textColorSecondary","selected","disabled","fullWidth","wrapped","iconWrapper","icon"]),Ie=e=>{const{classes:t,textColor:l,fullWidth:s,wrapped:n,icon:a,label:i,selected:b,disabled:f}=e,v={root:["root",a&&i&&"labelIcon",`textColor${At(l)}`,s&&"fullWidth",n&&"wrapped",b&&"selected",f&&"disabled"],icon:["iconWrapper","icon"]};return ht(v,Te,t)},Me=L(Ft,{name:"MuiTab",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:l}=e;return[t.root,l.label&&l.icon&&t.labelIcon,t[`textColor${At(l.textColor)}`],l.fullWidth&&t.fullWidth,l.wrapped&&t.wrapped,{[`& .${x.iconWrapper}`]:t.iconWrapper},{[`& .${x.icon}`]:t.icon}]}})(St(({theme:e})=>({...e.typography.button,maxWidth:360,minWidth:90,position:"relative",minHeight:48,flexShrink:0,padding:"12px 16px",overflow:"hidden",whiteSpace:"normal",textAlign:"center",lineHeight:1.25,variants:[{props:({ownerState:t})=>t.label&&(t.iconPosition==="top"||t.iconPosition==="bottom"),style:{flexDirection:"column"}},{props:({ownerState:t})=>t.label&&t.iconPosition!=="top"&&t.iconPosition!=="bottom",style:{flexDirection:"row"}},{props:({ownerState:t})=>t.icon&&t.label,style:{minHeight:72,paddingTop:9,paddingBottom:9}},{props:({ownerState:t,iconPosition:l})=>t.icon&&t.label&&l==="top",style:{[`& > .${x.icon}`]:{marginBottom:6}}},{props:({ownerState:t,iconPosition:l})=>t.icon&&t.label&&l==="bottom",style:{[`& > .${x.icon}`]:{marginTop:6}}},{props:({ownerState:t,iconPosition:l})=>t.icon&&t.label&&l==="start",style:{[`& > .${x.icon}`]:{marginRight:e.spacing(1)}}},{props:({ownerState:t,iconPosition:l})=>t.icon&&t.label&&l==="end",style:{[`& > .${x.icon}`]:{marginLeft:e.spacing(1)}}},{props:{textColor:"inherit"},style:{color:"inherit",opacity:.6,[`&.${x.selected}`]:{opacity:1},[`&.${x.disabled}`]:{opacity:(e.vars||e).palette.action.disabledOpacity}}},{props:{textColor:"primary"},style:{color:(e.vars||e).palette.text.secondary,[`&.${x.selected}`]:{color:(e.vars||e).palette.primary.main},[`&.${x.disabled}`]:{color:(e.vars||e).palette.text.disabled}}},{props:{textColor:"secondary"},style:{color:(e.vars||e).palette.text.secondary,[`&.${x.selected}`]:{color:(e.vars||e).palette.secondary.main},[`&.${x.disabled}`]:{color:(e.vars||e).palette.text.disabled}}},{props:({ownerState:t})=>t.fullWidth,style:{flexShrink:1,flexGrow:1,flexBasis:0,maxWidth:"none"}},{props:({ownerState:t})=>t.wrapped,style:{fontSize:e.typography.pxToRem(12)}}]}))),vt=u.forwardRef(function(t,l){const s=ft({props:t,name:"MuiTab"}),{className:n,disabled:a=!1,disableFocusRipple:i=!1,fullWidth:b,icon:f,iconPosition:v="top",indicator:C,label:m,onChange:S,onClick:w,onFocus:j,selected:B,selectionFollowsFocus:y,textColor:Z="inherit",value:M,wrapped:rt=!1,...E}=s,A={...s,disabled:a,disableFocusRipple:i,selected:B,icon:!!f,iconPosition:v,label:!!m,fullWidth:b,textColor:Z,wrapped:rt},K=Ie(A),Y=f&&m&&u.isValidElement(f)?u.cloneElement(f,{className:W(K.icon,f.props.className)}):f,J=P=>{!B&&S&&S(P,M),w&&w(P)},F=P=>{y&&!B&&S&&S(P,M),j&&j(P)};return p.jsxs(Me,{focusRipple:!i,className:W(K.root,n),ref:l,role:"tab","aria-selected":B,disabled:a,onClick:J,onFocus:F,ownerState:A,tabIndex:B?0:-1,...E,children:[v==="top"||v==="start"?p.jsxs(u.Fragment,{children:[Y,m]}):p.jsxs(u.Fragment,{children:[m,Y]}),C]})});function Ee(e){return(1+Math.sin(Math.PI*e-Math.PI/2))/2}function Pe(e,t,l,s={},n=()=>{}){const{ease:a=Ee,duration:i=300}=s;let b=null;const f=t[e];let v=!1;const C=()=>{v=!0},m=S=>{if(v){n(new Error("Animation cancelled"));return}b===null&&(b=S);const w=Math.min(1,(S-b)/i);if(t[e]=a(w)*(l-f)+f,w>=1){requestAnimationFrame(()=>{n(null)});return}requestAnimationFrame(m)};return f===l?(n(new Error("Element already at target position")),C):(requestAnimationFrame(m),C)}const Re={width:99,height:99,position:"absolute",top:-9999,overflow:"scroll"};function ke(e){const{onChange:t,...l}=e,s=u.useRef(),n=u.useRef(null),a=()=>{s.current=n.current.offsetHeight-n.current.clientHeight};return fe(()=>{const i=Ot(()=>{const f=s.current;a(),f!==s.current&&t(s.current)}),b=Dt(n.current);return b.addEventListener("resize",i),()=>{i.clear(),b.removeEventListener("resize",i)}},[t]),u.useEffect(()=>{a(),t(s.current)},[t]),p.jsx("div",{style:Re,...l,ref:n})}function ze(e){return pt("MuiTabScrollButton",e)}const We=bt("MuiTabScrollButton",["root","vertical","horizontal","disabled"]),je=e=>{const{classes:t,orientation:l,disabled:s}=e;return ht({root:["root",l,s&&"disabled"]},ze,t)},He=L(Ft,{name:"MuiTabScrollButton",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:l}=e;return[t.root,l.orientation&&t[l.orientation]]}})({width:40,flexShrink:0,opacity:.8,[`&.${We.disabled}`]:{opacity:0},variants:[{props:{orientation:"vertical"},style:{width:"100%",height:40,"& svg":{transform:"var(--TabScrollButton-svgRotate)"}}}]}),$e=u.forwardRef(function(t,l){const s=ft({props:t,name:"MuiTabScrollButton"}),{className:n,slots:a={},slotProps:i={},direction:b,orientation:f,disabled:v,...C}=s,m=Xt(),S={isRtl:m,...s},w=je(S),j=a.StartScrollButtonIcon??he,B=a.EndScrollButtonIcon??Se,y=lt({elementType:j,externalSlotProps:i.startScrollButtonIcon,additionalProps:{fontSize:"small"},ownerState:S}),Z=lt({elementType:B,externalSlotProps:i.endScrollButtonIcon,additionalProps:{fontSize:"small"},ownerState:S});return p.jsx(He,{component:"div",className:W(w.root,n),ref:l,role:null,ownerState:S,tabIndex:null,...C,style:{...C.style,...f==="vertical"&&{"--TabScrollButton-svgRotate":`rotate(${m?-90:90}deg)`}},children:b==="left"?p.jsx(j,{...y}):p.jsx(B,{...Z})})});function Ne(e){return pt("MuiTabs",e)}const ut=bt("MuiTabs",["root","vertical","list","flexContainer","flexContainerVertical","centered","scroller","fixed","scrollableX","scrollableY","hideScrollbar","scrollButtons","scrollButtonsHideMobile","indicator"]),Ht=(e,t)=>e===t?e.firstChild:t&&t.nextElementSibling?t.nextElementSibling:e.firstChild,$t=(e,t)=>e===t?e.lastChild:t&&t.previousElementSibling?t.previousElementSibling:e.lastChild,ot=(e,t,l)=>{let s=!1,n=l(e,t);for(;n;){if(n===e.firstChild){if(s)return;s=!0}const a=n.disabled||n.getAttribute("aria-disabled")==="true";if(!n.hasAttribute("tabindex")||a)n=l(e,n);else{n.focus();return}}},Le=e=>{const{vertical:t,fixed:l,hideScrollbar:s,scrollableX:n,scrollableY:a,centered:i,scrollButtonsHideMobile:b,classes:f}=e;return ht({root:["root",t&&"vertical"],scroller:["scroller",l&&"fixed",s&&"hideScrollbar",n&&"scrollableX",a&&"scrollableY"],list:["list","flexContainer",t&&"flexContainerVertical",t&&"vertical",i&&"centered"],indicator:["indicator"],scrollButtons:["scrollButtons",b&&"scrollButtonsHideMobile"],scrollableX:[n&&"scrollableX"],hideScrollbar:[s&&"hideScrollbar"]},Ne,f)},Ae=L("div",{name:"MuiTabs",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:l}=e;return[{[`& .${ut.scrollButtons}`]:t.scrollButtons},{[`& .${ut.scrollButtons}`]:l.scrollButtonsHideMobile&&t.scrollButtonsHideMobile},t.root,l.vertical&&t.vertical]}})(St(({theme:e})=>({overflow:"hidden",minHeight:48,WebkitOverflowScrolling:"touch",display:"flex",variants:[{props:({ownerState:t})=>t.vertical,style:{flexDirection:"column"}},{props:({ownerState:t})=>t.scrollButtonsHideMobile,style:{[`& .${ut.scrollButtons}`]:{[e.breakpoints.down("sm")]:{display:"none"}}}}]}))),Fe=L("div",{name:"MuiTabs",slot:"Scroller",overridesResolver:(e,t)=>{const{ownerState:l}=e;return[t.scroller,l.fixed&&t.fixed,l.hideScrollbar&&t.hideScrollbar,l.scrollableX&&t.scrollableX,l.scrollableY&&t.scrollableY]}})({position:"relative",display:"inline-block",flex:"1 1 auto",whiteSpace:"nowrap",variants:[{props:({ownerState:e})=>e.fixed,style:{overflowX:"hidden",width:"100%"}},{props:({ownerState:e})=>e.hideScrollbar,style:{scrollbarWidth:"none","&::-webkit-scrollbar":{display:"none"}}},{props:({ownerState:e})=>e.scrollableX,style:{overflowX:"auto",overflowY:"hidden"}},{props:({ownerState:e})=>e.scrollableY,style:{overflowY:"auto",overflowX:"hidden"}}]}),Oe=L("div",{name:"MuiTabs",slot:"List",overridesResolver:(e,t)=>{const{ownerState:l}=e;return[t.list,t.flexContainer,l.vertical&&t.flexContainerVertical,l.centered&&t.centered]}})({display:"flex",variants:[{props:({ownerState:e})=>e.vertical,style:{flexDirection:"column"}},{props:({ownerState:e})=>e.centered,style:{justifyContent:"center"}}]}),De=L("span",{name:"MuiTabs",slot:"Indicator"})(St(({theme:e})=>({position:"absolute",height:2,bottom:0,width:"100%",transition:e.transitions.create(),variants:[{props:{indicatorColor:"primary"},style:{backgroundColor:(e.vars||e).palette.primary.main}},{props:{indicatorColor:"secondary"},style:{backgroundColor:(e.vars||e).palette.secondary.main}},{props:({ownerState:t})=>t.vertical,style:{height:"100%",width:2,right:0}}]}))),Xe=L(ke)({overflowX:"auto",overflowY:"hidden",scrollbarWidth:"none","&::-webkit-scrollbar":{display:"none"}}),Nt={},mt=u.forwardRef(function(t,l){const s=ft({props:t,name:"MuiTabs"}),n=ve(),a=Xt(),{"aria-label":i,"aria-labelledby":b,action:f,centered:v=!1,children:C,className:m,component:S="div",allowScrollButtonsMobile:w=!1,indicatorColor:j="primary",onChange:B,orientation:y="horizontal",ScrollButtonComponent:Z,scrollButtons:M="auto",selectionFollowsFocus:rt,slots:E={},slotProps:A={},TabIndicatorProps:K={},TabScrollButtonProps:Y={},textColor:J="primary",value:F,variant:P="standard",visibleScrollbar:nt=!1,...Kt}=s,T=P==="scrollable",g=y==="vertical",U=g?"scrollTop":"scrollLeft",Q=g?"top":"left",_=g?"bottom":"right",st=g?"clientHeight":"clientWidth",V=g?"height":"width",R={...s,component:S,allowScrollButtonsMobile:w,indicatorColor:j,orientation:y,vertical:g,scrollButtons:M,textColor:J,variant:P,visibleScrollbar:nt,fixed:!T,hideScrollbar:T&&!nt,scrollableX:T&&!g,scrollableY:T&&g,centered:v&&!T,scrollButtonsHideMobile:!w},z=Le(R),Yt=lt({elementType:E.StartScrollButtonIcon,externalSlotProps:A.startScrollButtonIcon,ownerState:R}),Ut=lt({elementType:E.EndScrollButtonIcon,externalSlotProps:A.endScrollButtonIcon,ownerState:R}),[xt,Vt]=u.useState(!1),[H,yt]=u.useState(Nt),[gt,qt]=u.useState(!1),[Ct,Gt]=u.useState(!1),[wt,Zt]=u.useState(!1),[Bt,Jt]=u.useState({overflow:"hidden",scrollbarWidth:0}),Tt=new Map,k=u.useRef(null),$=u.useRef(null),O={slots:E,slotProps:{indicator:K,scrollButtons:Y,...A}},It=()=>{const o=k.current;let r;if(o){const c=o.getBoundingClientRect();r={clientWidth:o.clientWidth,scrollLeft:o.scrollLeft,scrollTop:o.scrollTop,scrollWidth:o.scrollWidth,top:c.top,bottom:c.bottom,left:c.left,right:c.right}}let d;if(o&&F!==!1){const c=$.current.children;if(c.length>0){const h=c[Tt.get(F)];d=h?h.getBoundingClientRect():null}}return{tabsMeta:r,tabMeta:d}},q=dt(()=>{const{tabsMeta:o,tabMeta:r}=It();let d=0,c;g?(c="top",r&&o&&(d=r.top-o.top+o.scrollTop)):(c=a?"right":"left",r&&o&&(d=(a?-1:1)*(r[c]-o[c]+o.scrollLeft)));const h={[c]:d,[V]:r?r[V]:0};if(typeof H[c]!="number"||typeof H[V]!="number")yt(h);else{const I=Math.abs(H[c]-h[c]),N=Math.abs(H[V]-h[V]);(I>=1||N>=1)&&yt(h)}}),at=(o,{animation:r=!0}={})=>{r?Pe(U,k.current,o,{duration:n.transitions.duration.standard}):k.current[U]=o},Mt=o=>{let r=k.current[U];g?r+=o:r+=o*(a?-1:1),at(r)},Et=()=>{const o=k.current[st];let r=0;const d=Array.from($.current.children);for(let c=0;c<d.length;c+=1){const h=d[c];if(r+h[st]>o){c===0&&(r=o);break}r+=h[st]}return r},Qt=()=>{Mt(-1*Et())},_t=()=>{Mt(Et())},[te,{onChange:Pt,...ee}]=D("scrollbar",{className:W(z.scrollableX,z.hideScrollbar),elementType:Xe,shouldForwardComponentProp:!0,externalForwardedProps:O,ownerState:R}),oe=u.useCallback(o=>{Pt?.(o),Jt({overflow:null,scrollbarWidth:o})},[Pt]),[Rt,kt]=D("scrollButtons",{className:W(z.scrollButtons,Y.className),elementType:$e,externalForwardedProps:O,ownerState:R,additionalProps:{orientation:y,slots:{StartScrollButtonIcon:E.startScrollButtonIcon||E.StartScrollButtonIcon,EndScrollButtonIcon:E.endScrollButtonIcon||E.EndScrollButtonIcon},slotProps:{startScrollButtonIcon:Yt,endScrollButtonIcon:Ut}}}),le=()=>{const o={};o.scrollbarSizeListener=T?p.jsx(te,{...ee,onChange:oe}):null;const d=T&&(M==="auto"&&(gt||Ct)||M===!0);return o.scrollButtonStart=d?p.jsx(Rt,{direction:a?"right":"left",onClick:Qt,disabled:!gt,...kt}):null,o.scrollButtonEnd=d?p.jsx(Rt,{direction:a?"left":"right",onClick:_t,disabled:!Ct,...kt}):null,o},zt=dt(o=>{const{tabsMeta:r,tabMeta:d}=It();if(!(!d||!r)){if(d[Q]<r[Q]){const c=r[U]+(d[Q]-r[Q]);at(c,{animation:o})}else if(d[_]>r[_]){const c=r[U]+(d[_]-r[_]);at(c,{animation:o})}}}),tt=dt(()=>{T&&M!==!1&&Zt(!wt)});u.useEffect(()=>{const o=Ot(()=>{k.current&&q()});let r;const d=I=>{I.forEach(N=>{N.removedNodes.forEach(G=>{r?.unobserve(G)}),N.addedNodes.forEach(G=>{r?.observe(G)})}),o(),tt()},c=Dt(k.current);c.addEventListener("resize",o);let h;return typeof ResizeObserver<"u"&&(r=new ResizeObserver(o),Array.from($.current.children).forEach(I=>{r.observe(I)})),typeof MutationObserver<"u"&&(h=new MutationObserver(d),h.observe($.current,{childList:!0})),()=>{o.clear(),c.removeEventListener("resize",o),h?.disconnect(),r?.disconnect()}},[q,tt]),u.useEffect(()=>{const o=Array.from($.current.children),r=o.length;if(typeof IntersectionObserver<"u"&&r>0&&T&&M!==!1){const d=o[0],c=o[r-1],h={root:k.current,threshold:.99},I=ct=>{qt(!ct[0].isIntersecting)},N=new IntersectionObserver(I,h);N.observe(d);const G=ct=>{Gt(!ct[0].isIntersecting)},jt=new IntersectionObserver(G,h);return jt.observe(c),()=>{N.disconnect(),jt.disconnect()}}},[T,M,wt,C?.length]),u.useEffect(()=>{Vt(!0)},[]),u.useEffect(()=>{q()}),u.useEffect(()=>{zt(Nt!==H)},[zt,H]),u.useImperativeHandle(f,()=>({updateIndicator:q,updateScrollButtons:tt}),[q,tt]);const[re,ne]=D("indicator",{className:W(z.indicator,K.className),elementType:De,externalForwardedProps:O,ownerState:R,additionalProps:{style:H}}),Wt=p.jsx(re,{...ne});let et=0;const se=u.Children.map(C,o=>{if(!u.isValidElement(o))return null;const r=o.props.value===void 0?et:o.props.value;Tt.set(r,et);const d=r===F;return et+=1,u.cloneElement(o,{fullWidth:P==="fullWidth",indicator:d&&!xt&&Wt,selected:d,selectionFollowsFocus:rt,onChange:B,textColor:J,value:r,...et===1&&F===!1&&!o.props.tabIndex?{tabIndex:0}:{}})}),ae=o=>{if(o.altKey||o.shiftKey||o.ctrlKey||o.metaKey)return;const r=$.current,d=me(xe(r));if(d?.getAttribute("role")!=="tab")return;let h=y==="horizontal"?"ArrowLeft":"ArrowUp",I=y==="horizontal"?"ArrowRight":"ArrowDown";switch(y==="horizontal"&&a&&(h="ArrowRight",I="ArrowLeft"),o.key){case h:o.preventDefault(),ot(r,d,$t);break;case I:o.preventDefault(),ot(r,d,Ht);break;case"Home":o.preventDefault(),ot(r,null,Ht);break;case"End":o.preventDefault(),ot(r,null,$t);break}},it=le(),[ie,ce]=D("root",{ref:l,className:W(z.root,m),elementType:Ae,externalForwardedProps:{...O,...Kt,component:S},ownerState:R}),[de,ue]=D("scroller",{ref:k,className:z.scroller,elementType:Fe,externalForwardedProps:O,ownerState:R,additionalProps:{style:{overflow:Bt.overflow,[g?`margin${a?"Left":"Right"}`:"marginBottom"]:nt?void 0:-Bt.scrollbarWidth}}}),[be,pe]=D("list",{ref:$,className:W(z.list,z.flexContainer),elementType:Oe,externalForwardedProps:O,ownerState:R,getSlotProps:o=>({...o,onKeyDown:r=>{ae(r),o.onKeyDown?.(r)}})});return p.jsxs(ie,{...ce,children:[it.scrollButtonStart,it.scrollbarSizeListener,p.jsxs(de,{...ue,children:[p.jsx(be,{"aria-label":i,"aria-labelledby":b,"aria-orientation":y==="vertical"?"vertical":null,role:"tablist",...pe,children:se}),xt&&Wt]}),it.scrollButtonEnd]})}),Lt="index",X={tabs:`${Lt}-tabs`,tab:`${Lt}-tab`},Ke=ye(mt)(({theme:e})=>({[`& .${X.tabs}`]:{},[`& .${X.tab}`]:{fontSize:"0.875rem",[e.breakpoints.up("md")]:{fontSize:"1rem"}}}));function Ye({tabs:e,current:t,onChange:l,iconPosition:s=void 0,enableTabClick:n=!1,...a}){return p.jsx(mt,{scrollButtons:"auto",value:t,onChange:(i,b)=>!n&&l(b),...a,variant:"scrollable",sx:{minHeight:"auto",".MuiTabs-scrollButtons.Mui-disabled":{opacity:.3,cursor:"not-allowed",pointerEvents:"auto"},".MuiTabs-scroller":{borderRadius:"100vw"},".MuiTabs-flexContainer":{borderRadius:"100vw",backgroundColor:"grey.100",padding:.5,display:"inline-flex",columnGap:.25,maxWidth:"100%",overflowX:"auto"},".MuiTab-root":{borderRadius:"100vw",border:"1px solid transparent",minHeight:"auto",lineHeight:1,py:1,color:"text.secondary",fontSize:"13px",fontWeight:"normal",textTransform:"capitalize",transition:"background-color 0.2s ease","&.Mui-selected, &:hover":{backgroundColor:"action.selected",borderColor:"grey.100",color:"grey.A700"}},".MuiTabs-indicator":{display:"none"},...a.sx},children:e.map(i=>p.jsx(vt,{className:X.tab,value:i.value,label:i.label,icon:i.icon,iconPosition:s,onClick:()=>n&&l(i.value)},i.value))})}function Ue({tabs:e,current:t,onChange:l,iconPosition:s=void 0,enableTabClick:n=!1,...a}){return p.jsx(mt,{scrollButtons:"auto",value:t,onChange:(i,b)=>!n&&l(b),...a,variant:"scrollable",sx:{minHeight:"auto",".MuiTabs-scrollButtons.Mui-disabled":{opacity:.3,cursor:"not-allowed",pointerEvents:"auto"},".MuiTabs-scroller":a.orientation!=="vertical"?{"&::after":{content:'""',display:"block",position:"sticky",left:0,zIndex:-1,width:"100%",height:"1px",backgroundColor:"grey.300"}}:{},".MuiTabs-flexContainer":{display:"inline-flex",columnGap:2.5,px:0,pb:.5},".MuiTab-root":{border:"1px solid transparent",minHeight:"auto",lineHeight:1,py:1,px:0,color:"text.secondary",fontSize:"14px",fontWeight:500,textTransform:"capitalize",minWidth:"auto","&.Mui-selected, &:hover":{color:"primary.main"}},".MuiTabs-indicator":{height:"1px",backgroundColor:"primary.main"},...a.sx},children:e.map(i=>p.jsx(vt,{className:X.tab,value:i.value,label:i.label,icon:i.icon,iconPosition:s,onClick:()=>n&&l(i.value)},i.value))})}function qe({tabs:e,current:t,onChange:l,variant:s=void 0,iconPosition:n=void 0,enableTabClick:a=!1,...i}){return s==="card"?p.jsx(Ye,{...i,tabs:e,current:t,enableTabClick:a,onChange:l,iconPosition:n}):s==="line"?p.jsx(Ue,{...i,tabs:e,current:t,enableTabClick:a,onChange:l,iconPosition:n}):p.jsx(Ke,{scrollButtons:"auto",variant:"scrollable",value:t,onChange:(b,f)=>!a&&l(f),indicatorColor:"primary",...i,className:[X.tabs,i.className||""].join(" "),children:e.map(b=>p.jsx(vt,{className:X.tab,value:b.value,label:b.label,icon:b.icon,iconPosition:n,onClick:()=>a&&l(b.value)},b.value))})}function Ge(e,t=""){const{info:l}=ge(),s=Ce(()=>{const n=e?.breadcrumbsLabel||e?.label||"";return we(n,t,l)},[e,t,l]);return s?p.jsx(Be,{children:p.jsx("title",{children:s})}):null}export{qe as T,mt as a,vt as b,ut as t,Ge as u};
@@ -2,6 +2,6 @@ const a={setup:{connect:{title:"Pengaturan Server Blocklet",scan:"Gunakan metode
2
2
  Mode Potret:
3
3
  Rasio: 9:16
4
4
  Mode Lanskap:
5
- Rasio: 16:9`,copyrightDesc:"Digunakan di: footer situs web",appUrlDesc:"Digunakan di: peta situs dan berbagi sosial",advanced:"Konfigurasi Lanjutan",errorReason:"Gagal memulai Blocklet, tetapi anda masih bisa mengaksesnya dengan mengklik tombol di bawah.",nameValidateError:"Tidak valid: mulai dengan huruf/angka, 3–129 karakter, hanya a–z, 0–9, - dan _."},overview:{source:"Sumber",deployedFrom:"Dipindahkan Dari",accessControl:"Kontrol Akses",viewInStore:"Lihat di toko"},diskInfo:{empty:"Informasi disk tidak tersedia saat ini!",appDir:"Direktori Aplikasi",dataDir:"Direktori Data",logDir:"Direktori Log",cacheDir:"Direktori Cache"},runtimeInfo:{noRunning:"Informasi waktu proses akan tersedia ketika blocklet berjalan!",memoryUsage:"Pemakaian Memori",cpuUsage:"Pemakaian CPU",uptime:"Waktu aktif",port:"Pelabuhan",processId:"ID Proses",dataStorage:"Penyimpanan Data"},dist:{downloadLink:"Tautan Unduh",verify:"Memverifikasi"},status:{added:"Ditambahkan",waiting:"Menunggu",downloading:"Mengunduh",extracting:"Mengekstrak",installing:"Menginstal",upgrading:"Meningkatkan",installed:"Terpasang",created:"Dibuat",starting:"Mulai",running:"Berlari",stopping:"Berhenti",stopped:"Berhenti",error:"Kesalahan",deleting:"Menghapus",corrupted:"Rusak",purchasing:"Menunggu pembelian",purchased:"Dibeli",verifying:"Memverifikasi pembelian",resource:"Sumber daya",failWithOldVersion:"Versi baru gagal memulai, Blocklet berjalan pada versi lama.",hasSomeErrors:"{blocklets} belum berjalan sepenuhnya, mungkin karena masalah atau inisialisasi yang tertunda."},list:{download:"Unduh",star:"Bintang",searchPlaceholder:"Cari nama Bloklet atau DID"},component:{container:"Konfigurasi Global",showContainer:"Tampilkan Konfigurasi Global",didSpaceConfig:"Konfigurasi DID Spaces",didSpaceConfigTip:"Lengkapi proses otorisasi berikut untuk menyimpan data aplikasi di DID Spaces",didSpaceConnected:"Penyimpanan diotorisasi untuk: {endpoint}",checkUpdateTitle:"Periksa Pembaruan",updateTitle:"Perbarui Komponen",noUpdate:"Tidak ada komponen yang perlu diperbarui",add:"Tambahkan Komponen",selectComponent:"Pilih Blocklet",selectRegistry:"Pilih Blocklet Store",selectRegistryTip:"Anda dapat mengganti toko blok untuk melihat lebih banyak komponen",selectInstance:"Pilih Instansi",selectInstanceTip:"Anda dapat memilih instansi yang ada atau membuat instansi baru. Instansi yang ada akan menggunakan konfigurasi dan data yang sudah disimpan sebelumnya.",newInstance:"Buat Instansi Baru",noComponent:"Tidak ada komponen",mountPoint:"Apa titik lempengnya?",mountPointTip:"Jika Anda mengatur titik mount menjadi '/my-prefix', maka semua permintaan yang dimulai dengan titik mount tersebut akan diarahkan ke komponen yang dipilih",delete:"Hapus Komponen",deleteDescription:"Komponen ini tidak akan dapat diakses setelah dihapus. Konfirmasi hapus?",purchase:"Pembayaran Diperlukan",tip:{stopBlocklet:"Tolong hentikan terlebih dahulu eksekusi Blocklet",requiredBy:"Komponen ini diperlukan oleh {name}"},choose:"Pilih",addWithName:"Tambahkan Blocklet ke {name}",installingCanCloseWindowTip:"Menginstal komponen di latar belakang, Anda dapat menutup jendela ini dengan aman",installSuccessTip:"Selamat, komponen berhasil dipasang!",missDownloadTokenTip:"Tidak dapat menambahkan komponen berbayar tanpa token unduhan yang valid",purchaseComponentSecondCheckTip:"Harap tampilkan pembelian blocklet NFT Anda untuk melanjutkan",installComponentError:"Terjadi kesalahan saat menginstal komponen, silakan coba lagi",downloadComponentError:"Terjadi kesalahan saat mengunduh komponen, silakan coba lagi",addComponentTip:{introduction:"Selamat datang di Pengaturan Komponen Tambah",isPurchase:"Anda perlu memverifikasi NFT sebelum menggunakan <b>{name}</b> sebagai komponen",belowInformation:"Berikut adalah informasi untuk komponen:",verifyNFT:"Silakan pilih metode Verifikasi NFT",config:"Silakan isi konfigurasi komponen",environment:"Silakan isi lingkungan komponen",fromUrl:"Menambahkan Bloklet Dari URL",fromUpload:"Tambahkan Blocklet dari Unggahan",uploadFailed:"Unggahan gagal",allowedFileTypes:"Jenis berkas yang diizinkan untuk diunggah: {types}"},addNext:"Tambahkan {name}",upgradeNext:"Tingkatkan {name}",setting:"Pengaturan",noDependencies:"{name} tidak memiliki dependensi apa pun",relatedComponents:"Blocklet Terkait",required:"Dibutuhkan",installed:"Terpasang",installingTip:"Sedang menginstal komponen, harap tunggu...",upgrade:"Tingkatkan",upgradeAvailable:"Pembaruan Tersedia",needBuy:"Perlu Pembelian",isOfficial:"Secara Resmi Bersertifikat"},router:{urlPath:"URL Path",noRunning:"Blocklet saat ini tidak dimulai. Tidak dapat diakses melalui alamat berikut!",securitySetting:"Pengaturan Keamanan",checkUrlAccessible:"Periksa aksesibilitas alamat",urlInaccessible:"Ini mungkin disebabkan oleh masalah jaringan, alamatnya sementara tidak dapat diakses",noAccessibleUrl:"URL tidak dapat diakses",domainLockTooltip:"Domain yang dihasilkan oleh sistem tidak dapat diedit.",urlLockTooltip:"Path URL yang dihasilkan sistem tidak dapat diedit.",showAllDomains:"Tampilkan semua domain",showAllDIDs:"Tampilkan semua DIDs",currentDomainTip:"Anda mengakses halaman ini melalui domain ini"},export:{title:"Ekspor Blocklet",name:"Nama Bundle",nameTip:"misalnya 'my-blocklet-name' atau '@my-scope/blocklet-name'",result:"Apa yang akan terjadi selanjutnya",exportSource:"Ekspor Sumber",success:"Blocklet berhasil diekspor",resultTipStart:"Dengan",resultTipEnd:"Anda dapat membangun dan menerbitkan blok ini dalam hitungan menit",uploadedComponentTip:"Komponen yang diunggah secara langsung tidak dapat diekspor:"},migrate:{title:"Migrasi Aplikasi",scan:"Hubungkan Dompet DID Anda untuk menghasilkan pasangan kunci untuk aplikasi ini",confirm:"Periksa operasi ini di dompet DID Anda",success:"Aplikasi Anda berhasil dimigrasi, halaman akan diperbarui dalam {sec} detik",intro:{l1:"Klik di sini",l2:"Untuk bermigrasi ke versi baru aplikasi Anda (perubahan dinonaktifkan sebelum migrasi selesai)",l3:"Aplikasi DID akan sepenuhnya dikontrol dari Dompet DID Anda.",l4:"Data aplikasi akan dipindahkan, dan tidak ada perubahan tambahan yang diperlukan.",l5:"Struktur aplikasi baru akan memberikan fleksibilitas lebih saat mengubah komponen.",l6:"4. Tolong jangan mengubah titik pemasangan komponen sebelum versi komponen baru keluar."},tip:{duplicate:"Temukan komponen duplikat {name}, harap hapus komponen yang tidak berguna dan lakukan migrasi kembali",running:"Tolong hentikan blokir sebelum migrasi"}},error:{isRunning:"Blocklet sedang berjalan, silakan hentikan terlebih dahulu",isInProgress:"Blocklet sedang berlangsung, harap tunggu hingga selesai"},publish:{createResource:"Buat Sumber Daya",addResource:"Tambahkan Rilis",productTitle:"Produk",versionTitle:"Pembaruan versi",imgTitle:"Gambar",resourceTitle:"Konten",blockletEmptyTip:"Tidak ada Blocklets di sini",createBlockletTip:"Anda dapat membuat blocklet baru melalui sumber daya, komponen, dan konfigurasi yang ada dalam aplikasi ini",createBlocklet:"Blok baru",componentNotRunning:"Blocklet {name} tidak berjalan, harap mulai terlebih dahulu",releaseEmptyTip:"Tidak ada rilis di sini",createReleaseTip:"Anda dapat membuat rilis dari blocklet, bersama dengan catatan rilis dan sumber daya, agar orang lain dapat menggunakannya",createRelease:"Membuat rilis",deleteReleaseTip:"Rilis tidak dapat dikembalikan setelah dihapus",createBlockletDid:"Buat dari Dompet DID",createReleaseSuccess:"Rilis berhasil dibuat",saveDraftSuccess:"Draf berhasil disimpan",connect:{title:"Membuat DID Blocklet",scan:"Gunakan metode berikut untuk menghasilkan Blocklet DID",confirm:"Konfirmasi menggunakan Dompet DID",success:"DID Blocklet telah dihasilkan, silakan lanjutkan operasi Anda"},saveDraft:"Simpan Draf",releaseNote:"Catatan Rilis",errorTip:{noDid:"Blocklet DID diperlukan",noTitle:"Judul blok diperlukan",noVersion:"Versi Blocklet diperlukan",noDescription:"Deskripsi Blocklet diperlukan",noNote:"Catatan Rilis diperlukan",inValidVersion:"Versi Blok Tidak Valid",noResource:"Silahkan pilihunggah sumber daya untuk disertakan dalam blocklet",noFirstDid:"Silakan buat DID Blocklet terlebih dahulu",invalidUrl:"Silakan masukkan URL yang valid",invalidUrlOrEmail:"Harap masukkan URL atau email yang valid"},packTip:"Saat ini, blok dapat diinstal langsung sebagai aplikasi. Komponen dan konfigurasi aplikasi akan secara otomatis disertakan dalam Blocklet.",resourceChangedWarning:"Anda telah mengubah sumber daya, harap simpan tepat waktu",installResourceTip:"URL Pemasangan:",installResourceTip2:"Jika Anda ingin melihat lebih banyak tips, silakan kunjungi",installResourceHelp:"Dokumen Bantuan",componentIncluded:"Termasuk",componentForceRequired:"Diperlukan",download:"Unduh {name}",delete:"Hapus {name}",copyInstallUrl:"Salin URL Instalasi",install:"Pasang {name}",publishToStoreSuccess:"Blocklet berhasil diterbitkan ke Toko",connectStoreSuccess:"Penyimpanan Blocklet berhasil terhubung",uploadToStoreSuccess:"Blocklet berhasil diunggah ke Store, Anda perlu mempublikasikannya di Store",viewLastRelease:"Tampilkan rilis terakhir",reconnectStoreTip:"Setelah terhubung kembali, pengembang baru akan terikat. Apakah Anda yakin ingin terhubung kembali?",deleteProject:{title:"Hapus {name}",scan:"Gunakan metode berikut untuk menghapus {name}",confirm:"Konfirmasi menggunakan Dompet DID",success:"Proyek Blocklet telah dihapus, silakan lanjutkan operasi anda",tip1:"Proyek Blocklet tidak akan dapat dipulihkan setelah dihapus",tip2:"Anda tidak akan lagi dapat menerbitkan versi baru ke Blocklet yang dihapus, yang berarti bahwa Blocklet tidak akan diperbarui lagi di Toko.",tip3:"Menghapus Blocklet tidak akan mempengaruhi versi yang saat ini dipublikasikan di Toko.",description:"Setelah menghapus Blocklet, Anda akan menghadapi masalah berikut, apakah Anda yakin ingin menghapusnya?"},resourceTip:"Saat ini, sebagai Blok Sumber Daya, tidak dapat diinstal langsung dari Toko.",whyCantSeeInStore:"Anda dapat menerbitkan Blocklet saat ini di toko, dan dapat digunakan di seluruh dunia",whyCantSeeResourceBlockletInStore:"Anda dapat menerbitkan Blocklet saat ini di toko, dan dapat digunakan di seluruh dunia. Blocklets disembunyikan dari halaman daftar toko secara default.",tenantScope:"Penyewa",blockletStudio:"Blocklet Studio",allComponentsNotRunning:"Blocklets tidak sedang berjalan, harap mulai terlebih dahulu",resourceEmptyTip:"Tidak ada sumber daya yang tersedia",steps:{resources:"Silakan pilih sumber daya yang perlu dikaitkan dengan Blocklet saat ini, karena sumber daya ini akan diinstal bersama dengan Blocklet.",blocklets:"Pilih blocklet yang ingin dikaitkan.",version:"Atur versi rilis dan catatan perubahan.",introduction:"Pengenalan yang jelas dapat efektif dalam menyoroti Blocklet Anda. Anda dapat menggunakan sintaks Markdown untuk menulis dan melihat pratinjau.",branding:"Deskripsikan informasi dasar tentang Blocklet Anda. Informasi ini akan ditampilkan kepada pengguna di toko."},branding:"Branding",brandingHelp:"Informasi lebih lanjut tentang blocklet akan ditampilkan di Toko",resourceSelect:"Pilih sumber dari blocklets",resourceUpload:"Unggah sumber daya dari disk Anda (index.html diperlukan dalam arsip)",deleteStoreTip:"Apakah Anda yakin ingin menghapus {name} dari daftar Toko Koneksi?",disconnectStoreTip:"Setelah terputus, blocklet akan dihapus dari toko. Apa Anda yakin untuk memutuskan?",connectOrUpload:"Hubungkan atau Unggah",developerInfo:"Informasi Pengembang",autoUploadTip:"Mengunggah blocklet ke Store secara otomatis setelah rilis penciptaan",possibleSameStoreTip:"Coba selesaikan blocklet dependensi ke Toko Blocklet yang sama sebelum mengunggah setiap kali memungkinkan",needProjectId:"Silakan membuat proyek terlebih dahulu",projectSettings:"Pengaturan Proyek",noStoreSelected:"Silakan pilih salah satu toko yang ada atau tambahkan toko baru untuk melanjutkan",installToThisServer:"Pasang ke server ini",forceResourceBlocklet:"Gaya didefinisikan sebagai bloklet berbasis sumber daya",resourceDocker:"Bangun Blocklet dari Docker",resourceSelectTitle:"Sumber Daya",resourceUploadTitle:"Unggah",resourceDockerTitle:"Docker",resourceDockerInputTip:"Silakan masukkan perintah docker run",docker:{pleaseInputDockerCommand:"Silakan masukkan perintah docker run",volumeTip:"Volume harus dimulai dengan $BLOCKLET_DATA_DIR atau $BLOCKLET_APP_DIR",volumeTip2:'Volume tidak boleh mengandung ".."',noAllowTheArg:"Argumen tidak diizinkan digunakan dalam perintah docker run",needCustomInput:"Atur nilai saat menginstal blocklet",dockerParams:"Parameter Docker",dockerCommand:"Perintah Docker",dockerImageName:"Nama Docker Image",addItem:"Tambahkan parameter menjalankan Docker",envKey:"Kunci variabel lingkungan",publishTips:"Port eksternal terakhir akan otomatis ditetapkan oleh blocklet",volumeTips:"Volume perlu dimulai dengan $BLOCKLET_DATA_DIR atau $BLOCKLET_APP_DIR",modifyParam:"Ubah parameter menjalankan Docker",modifyEnv:"Ubah Variabel Lingkungan",paramDetail:"Detail Param",description:"Deskripsi",secure:"Aman",shared:"Dibagikan",required:"Diperlukan",prefix:"Prefiks",path:"Jalur",name:"Nama",portType:"Tipe Port",dockerImageNameError:"Nama gambar Docker tidak boleh mengandung spasi",autoGenerated:"Dihasilkan otomatis",dockerCMDError:"Docker CMD hanya mendukung karakter sederhana",proxyBehavior:"Perilaku Proxy",serviceProxy:"Layanan",directProxy:"Langsung",nextTab:"Parse Perintah"},storeRule:{maxImageCount:"Toko ini mengizinkan paling banyak {max} tangkapan layar.",minImageCount:"Toko membutuhkan setidaknya {min} {unit}.",minImageSize:"Ukuran gambar tangkapan layar {name} harus setidaknya {width}x{height}.",logoFormat:"Format gambar logo hanya mendukung [{format}].",warning:"Peringatan",screenshot:"Tangkapan layar",screenshots:"Tangkapan layar",first:"1",second:"Ke-2",third:"Ke-3"},store:"Toko Blocklet",endpoint:{tab:"Blocklet Jarak Jauh",uploadToEndpoint:"Anda dapat mengunggah Blocklet saat ini ke Blocklet yang ditentukan.",addEndpoint:"Tambahkan Endpoint Blocklet",urlEmpty:"URL Endpoint tidak boleh kosong",addFailed:"Gagal menambahkan endpoint Blocklet:",deleteEndpoint:"Hapus Endpoint Blocklet",deleteDesc:'Konfirmasi penghapusan endpoint Blocklet {name}? <br/><span style="color: {color}">*Setelah menghapus endpoint Blocklet ini, Anda tidak dapat memperbarui aplikasi yang diinstal dari endpoint Blocklet ini kecuali Anda menambahkannya lagi.</span>',confirmDesc:"Silakan masukkan {name} untuk menghapus",visitEndpoint:"Kunjungi Blocklet",disconnectEndpointTip:"Apakah Anda yakin ingin memutuskan sambungan {url}? Setelah memutuskan sambungan, Blocklet tidak akan diunggah ke endpoint ini.",deleteFailed:"Gagal menghapus endpoint Blocklet",publishToEndpointSuccess:"Blocklet berhasil dipublikasikan ke Endpoint",uploadToEndpointSuccess:"Blocklet berhasil diunggah ke Endpoint"},autoPublishErrorTip:"Publikasi otomatis ke {storeName} gagal: {error}",singleton:"Hanya satu instance",singletonTip:"Saat mode singleton diaktifkan, aplikasi tidak dapat menjalankan beberapa instansi pada saat bersamaan. Karena aplikasi Anda menggunakan mode singleton, penyebaran blue-green tidak dapat digunakan untuk pembaruan atau restart."},titleValidationError:"Panjang judul harus antara 3 dan 20 karakter",descriptionValidationError:"Panjang deskripsi harus antara 3 dan 80 karakter",whyNeedAppPid:"Jika aplikasi Anda telah dimigrasikan, DID permanen adalah DID yang dihasilkan saat Blocklet ini pertama kali dipasang",usingDocker:"Blocklet ini akan berjalan menggunakan docker",gotoVisitError:"Tidak dapat mengakses URL Blocklet, silakan coba lagi nanti",usingIsolation:"Blocklet ini akan berjalan menggunakan isolasi jaringan",dockerImage:"Dukungan Docker",mountPoint:{description1:"Perubahan ini mungkin akan memecah URL yang berisi titik pemasangan lama, yang dapat menyebabkan:",case1:"Referensi sumber yang rusak antar Blocklets di dalam aplikasi ini",case2:"URL rusak jika Anda telah membagikannya secara publik",description2:"Anda dapat mengatur pengalihan dari titik pemasangan lama ke yang baru untuk meminimalkan kemungkinan perubahan yang mengganggu."},skSourceMigratedTip:"Aplikasi ini diluncurkan dengan dompet yang dikelola server, dan telah bermigrasi ke DID Wallet untuk keamanan yang lebih baik.",skSourceManagedTip:"Aplikasi ini berjalan dengan dompet yang dikelola server, harap migrasi ke DID Wallet sesegera mungkin untuk keamanan yang lebih baik.",zeroDowntime:"Tanpa waktu henti"},dashboard:{nodeDid:"Node",ownerDid:"Pemilik",routingEngine:"Routing Engine",ownerNftURL:"Pemilik NFT",expirationLeft:"Kadaluarsa Sisa",startFromCrashTip:"Server Blocklet tidak keluar secara normal terakhir kali, harap mulai secara manual blocklets yang perlu dijalankan.",runtimeConfig:{blockletMaxMemoryLimit:"Batas Memori Maksimal Blocklet",daemonMaxMemoryLimit:"Batas Maksimal Memori Server"},document:"Pelajari lebih lanjut di dokumentasi kami",database:"Basis data"},store:{nameSort:"Nama",popularSort:"Kepopuleran",headerDescription:"Temukan dan Pasang Blocklets Anda",detail:{purchase:"Membeli {name}",open:"Buka {name}",install:"Pasang {name}",upgrade:"Tingkatkan {name}",empty:"Tanpa perkenalan"},blockletRegistry:{changeFailed:"Gagal Mengubah Toko Blok:",addFailed:"Gagal menambahkan Toko Blocklet: {name}",editFailed:"Gagal mengedit Toko Blocklet",switchRegistry:"Beralih Blok Toko",addRegistry:"Tambahkan Toko Bloklet",editRegistry:"Edit Blocklet Store",deleteRegistry:"Hapus Blocklet Store",haveSameRegistry:"Toko blok yang sama ada",registryName:"Nama Toko Blocklet",registryUrl:"URL Toko Blocklet",registryNameEmpty:"Nama Toko Blocklet tidak boleh kosong",registryUrlEmpty:"URL toko Blocklet tidak boleh kosong",deleteDesc:"Konfirmasi Hapus toko blocklet {name} ?",confirmDesc:"Silakan masukkan {name} untuk menghapus"},purchase:{title:"Beli {name}",confirmed:"Pembelian blok NFT Anda telah diverifikasi",declined:"Anda tidak menyediakan pembelian blocklet NFT yang valid",waiting:"Menunggu pembelian selesai...",purchase:{title:"Pembelian NFT",description:"Bayarlah beberapa token sebelum menginstal blok ini jika Anda belum membeli blok ini"},verify:{title:"Memverifikasi NFT",description:"NFT Anda akan diverifikasi sebelum menginstal blocklet ini jika Anda telah membeli dan memiliki NFT pembelian di Dompet DID Anda",auth:{title:"Pembelian Kredensial Diperlukan",scan:"Hubungkan DID Wallet untuk menyediakan pembelian blocklet NFT",confirm:"Harap tinjau operasi ini di Dompet DID Anda",success:"Pembelian NFT Anda diverifikasi, dan pemasangan telah dimulai"}},auth:{title:"Membeli {name}",scan:"Pindai kode QR berikut dengan Dompet DID Anda",confirm:"Konfirmasi di akun Anda",success:"Pembelian NFT dikirim ke dompet DID Anda"},launch:"Meluncurkan {name}",autoLaunch:"{name} berhasil membeli, mengalihkan ke halaman peluncuran..."},tooltip:{upgradeServer:"Blocklet memerlukan Blocklet Server versi {version}, Versi Blocklet Server saat ini adalah {serverVersion}"}},setting:{saveSuccess:"Pengaturan berhasil disimpan",unSavedTip:'Ada perubahan yang belum disimpan, klik "Simpan Perubahan" untuk menyimpannya.',unSavedLeaveTip:"Terdapat perubahan yang belum disimpan, apakah Anda yakin ingin meninggalkan halaman ini?",form:{name:"Nama Server Anda",nameRequired:"Deskripsi server diperlukan",namePlaceholder:"Nama server",description:"Deskripsikan server Anda",descriptionHolder:"Deskripsi server",descriptionRequired:"Deskripsi server diperlukan",domain:"Nama Domain Server Anda",domainPlaceholder:"Nama Domain Server",domainRequired:"Domain server diperlukan",ipPlaceholder:"IP",ipRequired:"IP diperlukan",registry:"Toko Blocklet",registryPlaceholder:"Toko Blocklet untuk mengambil blocklet",registryRequired:"Toko Blocklet diperlukan",registerUrl:"URL Blocklet Launcher",registerUrlPlaceholder:"Masukkan URL Blocklet Launcher pilihan Anda, Anda dapat menggunakannya dengan aman",webWalletUrl:"URL Dompet DID",webWalletUrlPlaceholder:'Silakan masukkan URL dompet "DID" yang dihosting Anda, Anda bisa menggunakannya dengan aman',nftDomainUrl:"URL Domain NFT",nftDomainUrlPlaceholder:'Silakan masukkan URL "NFT Domain" yang Anda host, Anda dapat menggunakannya dengan aman',enableWelcomePage:"Aktifkan halaman selamat datang",welcome:{switchLabel:"Halaman Selamat Datang"},upgrade:{title:"Tingkatkan Server Blocklet menjadi versi {version}",description:"Selama peningkatan, server Blocklet Anda akan masuk ke mode perawatan selama beberapa menit saat pembaruan selesai.",dialog:'Klik "konfirmasi" untuk menginstal pembaruan. Blocklet Server akan masuk ke mode pemeliharaan hingga pembaruan selesai dan secara otomatis kembali ke mode produksi.',confirm:"Upgrade",switchLabel:"Periksa Pembaruan Otomatis",enableBetaRelease:"Aktifkan Rilis Beta",setup:"Menyiapkan peningkatan",installing:"Memasang server Blocklet v{version}",restarting:"Memulai Ulang Server Blocklet",cleanup:"Migrasi data Blocklet Server",verifying:"Memverifikasi server Blocklet v{version}",rollback:"Server Blocklet Rollback",complete:"Pembaruan selesai!",progress:"Mengupgrade {name}",check:"Periksa Pembaruan",latest:"Anda menggunakan versi terbaru."},restart:{title:"Mulai ulang server Blocklet",description:"Selama proses restart, server Blocklet akan masuk ke mode pemeliharaan sampai restart selesai.",dialog:'Klik "konfirmasi" untuk me-restart. Server Blocklet akan masuk ke dalam mode perawatan hingga restart selesai dan kembali ke mode produksi secara otomatis.',confirm:"Mulai Ulang",setup:"Mempersiapkan restart",verifying:"Memverifikasi Server Blocklet",restarting:"Memulai Ulang Server Blocklet",cleanup:"Pastikan semuanya baik-baik saja",rollback:"Bersihkan keadaan kotor",complete:"Pertahankan lengkap!",progress:"Memulai ulang {name}"},register:{title:"Daftar di Blocklet Launcher",description:"Setelah ditambahkan, Anda dapat meluncurkan blocklets ke server blocklet ini dari {url}.",button:"Daftar"},monitor:{diskThreshold:"Kirim peringatan ketika penggunaan disk melebihi (%)",diskThresholdPlaceholder:"Tolong atur ambang batas peringatan penggunaan disk"},security:{switchLabel:"Pengasingan Sistem File",switchTips:"Setelah menonaktifkan opsi ini, sistem file dari Blocklet tidak akan lagi dalam isolasi, yang dapat menimbulkan risiko perangkat lunak berbahaya merusak sistem file.",warningTips:"Fitur isolasi sistem file tidak dapat diterapkan. Silakan tingkatkan versi node.js (versi saat ini adalah {version}) ke v21.6.0 atau yang lebih tinggi."},docker:{switchLabel:"Menjalankan Blocklets di dalam Kontainer",switchTips:"Setelah mengaktifkan opsi ini, blocklets akan dijalankan menggunakan kontainer, yang dapat meningkatkan keamanan keseluruhan server.",notInstalled:"Tidak dapat mengaktifkan jalankan kontainer karena Docker tidak terinstal atau tidak memiliki izin yang diperlukan untuk mengeksekusi.",needCloseFileSystemIsolation:"Isolasi sistem file dan mode kontainer docker tidak dapat diaktifkan secara bersamaan"},dockerNetwork:{switchLabel:"Isolasi Jaringan Kontainer",switchTips:"Setelah mengaktifkan opsi ini, blocklet berjalan dengan cara yang lebih aman: blocklet tidak dapat mengakses server blocklet atau blocklet lain di seluruh aplikasi.",needEnableDocker:"Mode kontainer harus diaktifkan untuk mengaktifkan isolasi jaringan"},restartAllContainers:{title:"Mulai Ulang Semua Kontainer",description:"Mulai ulang semua container dan pertahankan blocklets berjalan.",dialog:'Klik "konfirmasi" untuk memulai ulang semua blocklets kontainer dan mempertahankan status blocklets berjalan.',confirm:"Mulai ulang",setup:"Mempersiapkan untuk memulai ulang",verifying:"Memverifikasi Server Blocklet",restarting:"Memulai ulang semua kontainer di latar belakang",cleanup:"Pastikan semuanya OK",rollback:"Bersihkan keadaan kotor",complete:"Pemeliharaan selesai!",progress:"Memulai ulang semua kontainer di latar belakang"},restartAllBlocklet:{title:"Mulai ulang semua Blocklets",description:"Mulai ulang semua Blocklets yang sedang berjalan atau error di server ini.",dialog:'Klik "konfirmasi" untuk memulai ulang semua blocklets di latar belakang.',confirm:"Mulai ulang",setup:"Menyiapkan restart",verifying:"Memverifikasi Blocklet Server",restarting:"Memulai ulang semua Blocklets yang berjalan atau error di latar belakang",cleanup:"Pastikan semuanya OK",rollback:"Bersihkan state yang kotor",complete:"Pemeliharaan selesai!",progress:"Memulai ulang semua Blocklets yang sedang berjalan atau mengalami error di latar belakang"},enableSessionHardening:{switchLabel:"Aktifkan Pengerasan Sesi",switchTips:"Setelah mengaktifkan opsi ini, operasi mutasi akan memerlukan verifikasi ketat, yang dapat meningkatkan keamanan server secara keseluruhan."}},accessKey:{accessKeyId:"ID Kunci Akses",lastUsed:"Terakhir digunakan pada",tip:"Masukkan nama untuk kunci akses ini",saveSecretTip:"Ini adalah satu-satunya waktu di mana kunci rahasia Akses Anda dapat dilihat dan tidak dapat dipulihkan. Namun, Anda dapat membuat kunci akses baru kapan saja.",iKnow:"Saya telah menyalin dan menyimpan Kunci Akses Rahasia",showSecret:"Tampilkan Kunci Akses Rahasia",hideSecret:"Sembunyikan Rahasia",title:"Hapus Kunci Akses",descriptionNoTime:"Ini akan menghapus secara permanen kunci akses {key} dengan nama {name}, yang belum pernah digunakan sebelumnya",description:"Ini akan menghapus kunci akses {key} dengan nama {name} secara permanen, yang terakhir digunakan pada {time}, {timeAge}",confirm_desc:"Silakan masukkan {name} untuk menghapus",remark:"Nama Kunci Akses",remarkInvalid:"Nama Kunci Akses diperlukan",passport:"Pilih paspor untuk kunci akses untuk memberikan atau membatasi izin",expireTime:"Tetapkan tanggal kedaluwarsa untuk kunci akses demi keamanan yang lebih baik",authType:"Jenis Autentikasi",resourceType:"Jenis Sumber Daya",resourceId:"ID Sumber Daya",component:"Komponen",expired:"{time} berakhir",accessKeySecret:"Kunci Akses Rahasia",simple:"Sederhana",signature:"Tanda tangan",signatureDesc:"Standar keamanan tingkat perusahaan menggunakan kriptografi. Membutuhkan integrasi kode dengan SDK (@blocklet/server-js), ideal untuk skenario dengan persyaratan keamanan tinggi dan transmisi data kritis",simpleDesc:"Mekanisme Token Bearer yang ringan, mirip dengan OpenAPI Key, mendukung panggilan API RESTful dan integrasi layanan pihak ketiga. Tidak perlu pengkodean, integrasi cepat melalui Header HTTP, sempurna untuk pengembangan cepat",viewSecret:"Anda dapat mengakses kunci rahasia nanti di halaman detail kunci akses",usage:"Penggunaan",listTitle:"Kelola akses API yang aman dengan Kunci Akses",tooltipTitle:"Buat dan kelola kredensial yang memungkinkan sistem tepercaya untuk berinteraksi dengan aplikasi Anda secara terprogram. Kunci akses memungkinkan otomatisasi yang aman dan integrasi yang lancar di seluruh alat dan layanan Anda."},webhook:{add:"Tambahkan Integrasi",delTitle:"Hapus Integrasi",requiredError:"Silakan berikan {type} yang valid",confirm_desc:"Silakan masukkan {name} untuk menghapus",test:"Tes",description:"Ini akan menghapus integrasi dengan ID {id} secara permanen",columns:{description:"Halo, ID",params:"Parameter",createdAt:"Dibuat pada"},testSuccess:"Pesan uji berhasil dikirim",duplicateError:"URL sudah ada",updateSuccess:"Status berhasil diperbarui"},dns:{step1Title:"Masuk ke registrar domain Anda",step1Desc1:"Masuk ke registrar domain Anda, temukan halaman manajemen domain, dan temukan halaman pengaturan nama server. Anda dapat mencari registrar domain Anda di",step2Title:"2. Temukan pengaturan DNS untuk {url}",step2Desc:'Ini mungkin disebut "Manajemen DNS", "Pengaturan lanjutan", atau yang serupa.',step3Title:"3. Tambahkan catatan DNS berikut",step3Desc:'Nama mungkin disebut "host", "hostname", atau "alias"'},domain:{addingDomain:"Menambahkan domain...",checkingResolvable:"Memeriksa status domain...",cannotResolve:"{domain} tidak dapat diurai, periksa konfigurasi DNS Anda",resolvedAddressError:"{domain} belum dikonfigurasi dengan benar dengan catatan CNAME yang menunjuk ke {curDomain}",invalidDNSReminder:"{error}. Namun, Anda dapat terus menambahkan domain, tetapi pembuatan sertifikat otomatis tidak tersedia.",continueAdd:"Lanjutkan Menambahkan",conflictTitle:"{domain} sudah digunakan",conflictDescription:'{domain} sudah digunakan oleh "{title}". Dengan mengklik konfirmasi, domain akan dihapus dari "{from}" dan ditambahkan ke "{to}".'},aigne:{modelAdapter:"Penyedia Model",modelName:"Nama Model",desc:{modelAdapter:"Platform yang menyediakan layanan model AI",modelName:"Versi model spesifik atau nama model",key:"Kunci API {provider} digunakan untuk autentikasi",baseUrl:"Masukkan URL instance AIGNE Hub Anda (misal, https://hub.aigne.io). Gunakan milik Anda jika self-hosting.",accessKeyId:"ID kunci unik untuk mengakses model",secretAccessKey:"Kunci rahasia yang dipasangkan dengan ID kunci akses",docLink:"Lihat dokumentasi resmi untuk detail lebih lanjut dan referensi API"},failed:"Gagal menyimpan konfigurasi AIGNE",authorizeAigneHub:"Terhubung ke {name}",baseUrl:"URL Hub AIGNE",disconnect:"Putuskan",disconnectConfirm:"Apakah Anda yakin ingin memutuskan koneksi dari AIGNE Hub? Ini akan menghapus konfigurasi AI saat ini.",disconnectSuccess:"Berhasil terputus dari AIGNE Hub",disconnectFailed:"Gagal memutuskan koneksi dari AIGNE Hub",testConnection:"Uji koneksi {provider}",invalidUrl:"URL {provider} tidak valid",description:"Konfigurasi saat ini akan berlaku saat {name} berjalan. Perlu menyimpan dan memulai ulang Blocklet agar berlaku.",revokeUrlAuthTitle:"Konfirmasi perubahan {url}?",revokeUrlAuth:"Anda yakin ingin mengubah {url}? Setelah diubah, otorisasi Anda akan tidak berlaku dan perlu diotorisasi ulang!",testSuccess:"Terhubung dengan sukses ke AIGNE Hub",check:"Periksa",apiKeyNotAuthorized:"Kunci API tidak diizinkan. Silakan klik tombol hubungkan ke AIGNE Hub untuk mengizinkannya",switchUser:"Ganti Pengguna",connectTimeOut:"Koneksi ke {provider} habis waktu, silakan coba lagi nanti",restart:{title:"Mulai ulang Blocklet",connectedContent:"Blocklet Anda saat ini terhubung ke {provider}. Konfigurasi akan berlaku setelah restart. Ingin restart sekarang?",notConnectedContent:"Blocklet Anda saat ini terputus dari {provider}. Konfigurasi akan berlaku setelah restart. Ingin restart sekarang?",confirm:"Mulai Ulang Sekarang",cancel:"Mulai Ulang Nanti"},testFailed:"Tidak dapat terhubung ke AIGNE Hub. Periksa URL atau jaringan Anda.",addCredits:"Beli Kredit",transaction:"Transaksi",connected:"Berhasil terhubung",account:"Informasi Akun",pendingCredit:"Tagihan Tertunggak",infinite:"Tidak Terbatas",config:"Konfig AIGNE Hub"}},notification:{title:"Pemberitahuan",history:"Riwayat",channelSettings:"Pengaturan saluran",empty:"Belum ada kegiatan",viewAll:"Lihat Semua",showRead:"Tampilkan Baca",markAllAsRead:"Tandai Semua sebagai Sudah Dibaca",markAsRead:"Tandai sebagai Sudah Dibaca",proceed:"Lanjutkan",checkingForUpdates:"Memeriksa pembaruan...",email:{enable:"Aktifkan notifikasi",from:"Pengirim Email",host:"Host Server SMTP",port:"Port Server SMTP",user:"Nama pengguna SMTP",secure:"Koneksi Aman",password:"Kata Sandi SMTP",fromRequired:"Pengirim email diperlukan",fromInvalid:"Pengirim email tidak valid",receiverRequired:"Penerima email diperlukan",receiverInvalid:"Penerima email tidak valid",hostRequired:"Host server SMTP diperlukan",hostInvalid:"Host server SMTP tidak valid",portRequired:"Port server SMTP diperlukan",portInvalid:"Port server SMTP tidak valid, port harus antara 1 dan 65535",userRequired:"Nama pengguna server SMTP diperlukan",passwordRequired:"Password pengguna server SMTP diperlukan",testSuccess:"Pengiriman email uji berhasil",testFailed:"Gagal mengirim email percobaan",testReceiver:"Penerima Email",testSendEmail:"Test kirim email",inputTestReceiver:"Silakan masukkan email penerima pengujian",disable:"Berhenti langganan pemberitahuan email",disableDescription:"Setelah berhenti berlangganan, Anda tidak akan menerima pemberitahuan melalui email lagi. Untuk menerima pemberitahuan melalui email, Anda dapat berlangganan kembali di halaman ini.",unsubscribe:"Batalkan pemberitahuan melalui email",unsubscribeDescription:"Setelah berhenti langganan, Anda tidak akan lagi menerima pemberitahuan melalui email.",subscribe:"Berlangganan",subscribeDescription:"Untuk menerima pemberitahuan melalui email, Anda dapat mengikuti langkah-langkahnya kembali di halaman pengaturan.",companyName:"Nama Perusahaan",companyLink:"Tautan Perusahaan",companyAddress:"Alamat Perusahaan",supportEmail:"Email Dukungan",emailInvalid:"Email tidak valid",linkInvalid:"Tautan tidak valid, harus dimulai dengan http atau https",signature:"Tanda tangan",signatureTooltip:"Tanda tangan email digunakan di bagian bawah untuk memberikan informasi penting kepada penerima tentang pengirim."},wallet:{description:"Notifikasi Wallet DID selalu diaktifkan untuk semua pengguna."},webhooks:{description:"Notifikasi yang dikirim melalui webhooks selalu diaktifkan untuk semua pengguna."},comingSoon:"Lebih banyak saluran pemberitahuan sedang dalam konstruksi",unsubscribe:"Berhenti berlangganan",unsubscribeSucceed:"Berhenti berhasil",unsubscribeFailed:"Berhenti berlangganan gagal",unsubscribeTokenRequired:"Token berhenti berlangganan diperlukan",unsubscribeTokenExpired:"Token berhenti langganan telah kedaluwarsa",unsubscribeTokenInvalid:"Token berhenti berlangganan tidak valid",installComponentError:"Komponen {name} yang telah dihapus tidak ditemukan",installingComponent:"Menginstal komponen {name}",pushKit:{enable:"Aktifkan notifikasi",endpoint:"PushKit endpoint",endpointInvalid:"Endpoint PushKit adalah URL yang tidak valid",testSuccess:"Uji Coba PushKit terkirim dengan sukses",testFailed:"Uji coba PushKit kirim gagal",testReceiver:"Penerima PushKit",testSend:"Uji coba kiriman push-kit",inputTestReceiver:"Masukkan penerima uji",receiverRequired:"Diperlukan penerima PushKit",pushPath:"Jalur api untuk push-kit (default /api/push)",did:"PushKit Blocklet DID",customOptions:"Opsi Kustom"},notificationDetails:"Detail Notifikasi",receiver:"Penerima",sendStatus:{success:"Terkirim",failed:"Gagal",sentTime:"Dikirim pada: {date}",pending:"Tertunda",reason:{enabled:"Pengguna telah mengaktifkan notifikasi {channel}",disabled:"Pengguna belum mengaktifkan notifikasi {channel}",unavailable:"Blocklet saat ini belum mengonfigurasi notifikasi {channel}",available:"Blocklet saat ini telah mengonfigurasi notifikasi {channel}",notSent:"Pesan saat ini belum dikirim ke {channel}",offline:"Pengguna sedang offline"},count:"{count}",total:"Total"},filter:"Saring",notificationPreview:"Pratinjau Notifikasi",resend:"Kirim ulang",resendLimit:"Anda dapat mengirim ulang notifikasi hingga tiga kali sehari.",from:"Dari",to:"Ke",body:"Tubuh",notificationTitle:"Judul",createdAt:"Dibuat pada",status:"Status",system:"Sistem",severity:"Keparahan",config:"Configs",selectChannels:"Pilih Saluran",selectChannelsTip:"Pilih saluran untuk mengirim ulang",resendFailedOnly:"Kirim ulang hanya ke saluran yang gagal",statistics:"Statistik",allSender:"Semua Pengirim",allSeverity:"Semua Tingkat Keparahan",severityType:{info:"Info",success:"Sukses",warning:"Peringatan",error:"Kesalahan"},clear:"Bersihkan",allDone:"Selesai",filterType:{all:"Semua",unread:"Belum dibaca"},viewMore:"Lihat Lagi"},router:{routerSetting:"Domain dan URL",certSetting:"Sertifikat SSL",defaultSite:"Default",urlHelperText:"URL yang tidak dimulai dengan HTTP/HTTPS dianggap sebagai jalur relatif",empty:"Klik pada Aksi untuk mengatur Pemetaan URL",healthy:{ok:"Blocklet atau layanan sedang berjalan",error:"Blocklet atau layanan tidak berjalan atau tidak terpasang"},service:{select:"Pilih Layanan Blocklet (Opsional)",what:"Layanan Blocklet adalah pipa yang dieksekusi terhadap permintaan sebelum dialihkan ke blocklet hulu"},nonProvider:{title:"Peringatan Penggantian Mesin",description:"Jika Anda mengubah mesin menjadi tidak ada, halaman Anda saat ini mungkin tidak berfungsi dengan baik karena mesin sebelumnya akan berhenti, apakah Anda yakin ingin melanjutkan?",confirm:"Saya mengerti, lanjutkan"},validation:{urlRequired:"URL diperlukan",redirectCodeRequired:"Kode pengalihan diperlukan",didRequired:"Blocklet diperlukan",pathPrefixTooLong:"Awalan URL tidak boleh melebihi {length} karakter",pathPrefixCannotBeEmpty:"Awalan URL tidak boleh kosong",domainRequired:"Domain server diperlukan",invalidUrl:"Silakan berikan URL yang valid",pathPrefixRequired:"Awalan URL diperlukan",redirectUrlRequired:"URL Redirect diperlukan",rewriteUrlRequired:"Rewrite URL diperlukan"},domain:{addSite:"Tambahkan Situs",validate:{emptyTip:"Domain situs tidak boleh kosong",suffixTip:"Domain situs tidak bisa mengandung {suffix}"},add:{title:"Tambahkan Nama Domain",description:"Silakan berikan nama domain yang valid",confirm:"Tambahkan",cancel:"Batal",blocklet:"Pilih Blocklet",redirect:"Kemana harus mengalihkan lalu lintas?",port:"Di pintu apa yang handler permintaan Anda perlu mendengarkan?",portTip:"Ini mengembalikan port utama dari pengelola permintaan, Anda dapat menyesuaikan ini",type:"Penangan Lalu Lintas",component:"Pilih Komponen",pageGroup:"Grup Halaman",pageGroupTip:"Komponen ini dapat merender kelompok halaman apa pun yang terdaftar di atas, kosongkan untuk merender semua halaman"},update:{title:"Perbarui Domain Situs",label:"Domain Situs",description:"Harap berikan domain situs yang valid"},setup:{tipStart:"Tambahkan catatan DNS untuk domain",tipEnd:"Menurut panduan berikut",recordType:"Jenis Rekaman",recordValue:"Nilai Rekaman"},verify:{ok:"Resolusi domain normal",notResolved:"Domain ini tidak bisa terjangkau maupun diakses, silakan periksa konfigurasi DNS Anda."},https:{ok:"Domain ini memiliki https diaktifkan",bad:"Domain ini belum mengaktifkan https"},delete:{title:"Hapus Situs",description:'Dengan mengkonfirmasi, Anda akan menghapus situs "{name}" yang sudah ada. Ketikkan "{name}" di bawah ini dan pilih Hapus untuk menyelesaikan perubahan, atau pilih Batal jika Anda ingin meninggalkan situs Anda.',confirm_desc:"Tolong masukkan {name} untuk mengkonfirmasi"}},domainAlias:{nftDomain:"Konfigurasi otomatis dengan Nama DID",showTipHint:"Bagaimana cara mengkonfigurasi resolusi nama domain?",add:{title:"Tambahkan Domain Tambahan",domainDescription:"Silakan berikan nama domain yang valid",forceTip:"Mengeksekusi tambahan jika nama domain sudah ada",helperText:"Jika URL HTTP atau HTTPS dimasukkan, itu akan secara otomatis dikonversi menjadi nama domain.",isDidDomainError:"Domain ini adalah Domain DID. Silakan tambahkan menggunakan metode konfigurasi domain otomatis.",tips:"Anda dapat memasukkan nama domain yang dibeli dari DID Names atau domain lainnya. Jika itu adalah Domain DID, Anda harus menunjukkan NFT Domain DID untuk melanjutkan."},addCustomDomain:{name:"Domain khusus"},addDomainNFT:{showNFT:"Konfigurasi domain secara otomatis",tips:"Anda dapat memasukkan domain yang dibeli dari DID Names. Jika Domain DID terdeteksi, Anda harus menunjukkan NFT Domain DID untuk melanjutkan.",connect:{scan:"Gunakan salah satu metode berikut untuk menghubungkan {domain} ke {appName}",confirm:"Konfirmasi di akun Anda",success:"Otorisasi berhasil",title:"Hubungkan Nama DID ke {appName}"},buyTip:"Nama DID akan melakukan resolusi nama domain secara otomatis, tidak perlu mengkonfigurasi secara manual, dan blocklet akan memperbarui catatan resolusi nama domain secara otomatis bila diperlukan. Jika Anda belum memiliki DID Domain NFT, ",buy:"Beli Domain DID",topLevelDidDomainHint:"Untuk Domain DID, jika Anda memasukkan domain tingkat atas (misalnya example.com), domain tersebut akan secara otomatis dikonfigurasi sebagai www.example.com",authorizeFailed:"Gagal mendapatkan info NFT domain, silakan coba lagi!"},delete:{title:"Hapus",description:'Setelah menghapus "{domain}", akses ke alias tersebut mungkin tidak berfungsi dengan baik.',confirmPlaceholder:'Masukkan "{domain}" untuk menghapus'},custom:"Domain kustom",noCustom:"Tidak ada domain khusus",noCustomTip:"Tidak ada domain khusus yang dikonfigurasi dengan situs web Anda. Untuk keamanan yang lebih baik dan pengalaman pengguna yang lebih baik, kami sarankan untuk mengkonfigurasi domain khusus Anda sendiri. Klik di bawah ini untuk memulai."},domainSecurity:{title:"Keamanan Domain",cors:{title:"Domain CORS yang diperbolehkan",description:'Daftar domain yang dapat mengirimkan permintaan asal lintas ke {name}, dipisahkan dengan koma, gunakan "*" untuk mengizinkan siapa pun, yang tidak disarankan',domainInvalid:"Silakan masukkan daftar nama domain yang valid"}},rule:{add:{title:"Tambahkan Pemetaan URL",confirm:"Tambah",pathPrefix:"Apa Awalan URL?",pathPrefixTip:"Jika Anda mengatur awalan menjadi '/awalan-saya', maka semua permintaan yang dimulai dengan awalan tersebut akan diarahkan ke blok yang dikonfigurasi",blocklet:"Blocklet mana yang akan menangani permintaan tersebut?",port:"Port mana dari blocklet yang akan menangani permintaan?",portTip:"Ini menjadi port utama blocklet, jika blocklet Anda mendengarkan di beberapa port, Anda dapat menyesuaikannya",responseType:"Tipe Respons",responseBody:"Konten Tanggapan",responseBodyTip:"Tempelkan konten respon Anda di sini, tidak boleh melebihi 4096 karakter",responseBodyRequired:"Konten respons tidak boleh kosong"},delete:{title:"Hapus Pemetaan URL",description:'Dengan mengkonfirmasi, Anda akan menghapus Pemetaan URL "{name}" yang ada. Ketik "{name}" di bawah ini dan pilih Hapus untuk menyelesaikan perubahan, atau pilih Batal jika Anda ingin meninggalkan Pemetaan URL Anda.',confirm_desc:"Silakan masukkan {name} untuk menghapus",cancel:"Batalkan"},update:{title:"Perbarui Pemetaan URL",confirm:"Ya, Perbarui",cancel:"Batal"}},cert:{name:"Nama Sertifikat",domain:"Nama Domain",action:"Aksi",commonName:"Nama Umum",boundDomains:"Domain",source:"Sumber",expired:"Kedaluwarsa",leftDays:"hari tersisa",issuedOn:"Dikeluarkan pada",expiryOn:"Berlaku hingga",fingerprintAlg:"Algoritma Sidik Jari",validityPeriod:"Periode Validitas",matchedSites:"Situs yang Cocok",upload:"Unggah Manual",publicCertHelperText:"Sertifikat publik dapat diunduh",nonPublicCertHelperText:"Sertifikat non-publik tidak dapat diunduh",protectedCertHelperText:"Sertifikat yang dilindungi tidak dapat diedit",unprotectedCertHelperText:"Sertifikat yang tidak terlindungi dapat diedit",issuing:"Sertifikat sedang dibuat",sourceTypes:{upload:"Unggah Manual",lets_encrypt:"Mari Enkripsi"},table:{nodata:"Tidak ada data"},delete:{title:"Hapus Sertifikat",description:"Konfirmasi untuk menghapus sertifikat domain {domain}? Penghapusan bisa memengaruhi layanan terkait. Konfirmasikan bahwa itu aman sebelum melanjutkan penghapusan.",confirm:"Konfirmasi"},nginx:{title:"Perbarui Sertifikat",titleAdd:"Tambahkan Sertifikat",pem:"Berkas Sertifikat SSL",pemTip:'Silakan tinggalkan file sertifikat server Anda di sini, harus diakhiri dengan ".pem" atau ".crt"',key:"File Kunci Privat",keyTip:"Silakan seret file kunci pribadi server Anda di sini, harus berakhir dengan '.pem' atau '.key'",confirm:"Simpan",cancel:"Membatalkan",invalidFile:"Anda telah memilih file yang tidak valid",empty:"Belum ada file yang dipilih",source:"Sumber",sourceTypes:{upload:"Upload Manual",lets_encrypt:"Mari Enkripsi"}},detail:{title:"Rincian Sertifikat"},genLetsEncryptCert:{title:"Menghasilkan sertifikat Let's Encrypt",dnsTip:"Mohon pastikan nama domain telah mengarah ke server Blocklet saat ini.",description:"Menambahkan sertifikat akan menjadikan layanan lebih aman, dan Blocklet Server akan memperbaharui sertifikat secara otomatis sebelum masa berlakunya habis."}},gateway:{reqLimit:{switchLabel:"Aktifkan pembatasan permintaan konkuren untuk kinerja yang andal",rate:"Batasi permintaan bersamaan per IP hingga {rate} per detik (batas per IP)",title:"Pembatasan permintaan",global:"Batasi permintaan bersamaan yang ditangani oleh gateway hingga {global} per detik (batas global)",burstFactor:"Faktor ledakan untuk pembatasan laju, diterapkan pada batas global dan per-IP (global: {global}, per-IP: {rate})",methods:"Batasi permintaan bersamaan per IP untuk metode berikut",burstDelay:"Keterlambatan ketika permintaan membludak dan melebihi batas per-IP ({delay} detik)"},cacheEnabled:{switchLabel:"Aktifkan cache gateway untuk meningkatkan performa",title:"Cache Gateway"},blockPolicy:{switchLabel:"Pemblokiran Permintaan",addItem:"Tambah Item",blacklistDesc:"Permintaan dari IP ini akan diblokir dari mengakses Server ini dan semua Blocklets",inputPlaceholder:"Masukkan alamat IP, rentang CIDR, atau URL",invalidItem:"Alamat IP, rentang CIDR, atau URL tidak valid",title:"Pemblokiran Permintaan",autoBlocking:{switchLabel:"Blokir permintaan buruk dengan deteksi secara real-time",windowSize:"Ukuran jendela waktu untuk menghitung permintaan (detik)",windowQuota:"Jumlah permintaan maksimum (per IP) yang diizinkan dalam jendela",blockDuration:"Durasi untuk memblokir pengguna berdasarkan IP ketika kuota terlampaui dalam jendela (detik)",statusCodes:"Kode status untuk diperiksa"}},proxyPolicy:{switchLabel:"Menjalankan di belakang proxy",trustRecursive:"Percayakan proksi secara rekursif",trustRecursiveDesc:"Gunakan IP paling kiri dalam rantai X-Forwarded-For",trustedProxies:"Proxy Terpercaya",trustedProxiesDesc:"Permintaan dari IP ini akan dipercaya untuk mendapatkan IP asli klien",realIpHeaderLabel:"Header IP Klien",realIpHeaderDesc:"Jika Server Blocklet berjalan di belakang proxy seperti CloudFront, Anda dapat mengatur header IP asli klien di sini.",addItem:"Tambah item",inputPlaceholder:"Masukkan alamat IP, rentang CIDR",invalidItem:"Alamat IP tidak valid, rentang CIDR",title:"Kebijakan Proxy"},wafPolicy:{switchLabel:"Deteksi dan blokir permintaan buruk dengan ModSecurity",modeDesc:"Mode modsecurity (modul modsecurity diperlukan)",mode:{detectOnly:"Deteksi saja (tidak akan memblokir permintaan)",on:"Aktif (akan memblokir permintaan)"},logLevelDesc:"Tingkat log untuk ModSecurity (0-9), 0 berarti menonaktifkan audit log",inboundAnomalyScoreThresholdDesc:"Ambang batas skor anomali masuk (1-100), nilai lebih rendah berarti lebih ketat",outboundAnomalyScoreThresholdDesc:"Ambang batas skor anomali keluar (1-100), nilai lebih rendah berarti lebih ketat",docDesc:"Periksa dokumentasi untuk cara mengatur modsecurity",title:"Firewall Aplikasi Web"}}},noMatch:{desc:"Kami tidak dapat menemukan halaman yang Anda cari"},health:{connectionErrorTip:"Blocklet Server tidak dapat terhubung ke jaringan, harap periksa apakah Blocklet Server sudah berhenti atau ada masalah jaringan",connectionRecoveryTip:"Koneksi Server Blocklet telah pulih",connectionStoppedTip:"Server Blocklet telah dihentikan",wrongAccessUrlTip:"Alamat akses Server Blocklet salah, harap gunakan alamat akses yang benar"},debug:{title:"Server Blocklet Anda sedang berjalan!"},team:{invite:{action:"Undang Baru",setting:"Pengaturan Undangan",enabled:"Nonaktifkan pengaturan ini untuk membatasi undangan pengguna baru hanya untuk pemilik/admin",disabled:"Aktifkan pengaturan ini untuk mengizinkan pengguna mana pun mengundang pengguna baru",inviter:"Diundang Oleh"},add:"Tambah Baru",member:{name:"Nama",passport:"Paspor",passports:"Paspor",lastLogin:"Login terakhir",lastLoginIp:"IP login terakhir",source:"Daftar Sumber",source_derived:"Berasal dari OAuth",source_wallet:"Dompet DID",filter:"Filter berdasarkan",blockAccess:"Melarang masuk",blockAccessDescription:"Pengguna tidak akan dapat terhubung ke aplikasi ini",allowAccess:"Izinkan Login",allowAccessDescription:"Pengguna akan dapat terhubung ke aplikasi ini",updateRole:"Perbarui Peran",removeUser:"Hapus Pengguna",removeUserDescription:'Konfirmasi menghapus pengguna "{name}"?',revokePassport:"Mencabut Paspor",revokePassportDescription:"Setelah paspor dicabut, pemegang paspor tidak dapat menggunakannya lagi untuk masuk, apakah Anda yakin untuk melanjutkan?",enablePassport:"Aktifkan Paspor",enablePassportDescription:"Setelah paspor yang dicabut diaktifkan kembali, pemegang paspor dapat menggunakannya untuk masuk kembali, apakah Anda yakin ingin melanjutkan?",passportPermissionTitle:"Paspor memiliki izin berikut:",search:"Cari Anggota",onlyApprovedMember:"Tampilkan Hanya yang Disetujui",inviteDialog:{createInviteLink:"Buat tautan undangan",createSuccessTip:"Link undangan berhasil dibuat, klik untuk menyalin dan kirimkan link kepada anggota yang diundang. Harap perhatikan bahwa link undangan ini tidak dapat digunakan ulang dan akan kedaluwarsa pada {expireDate}."},error:{passportEmpty:"Kolom paspor tidak boleh kosong"},connectedAccounts:"Akun yang Terhubung",connections:"Koneksi",federated:"Federasi",switch:{did:"Ganti DID",profile:"Ganti Profil",passport:"Ganti Paspor"},settings:{notification:"Pemberitahuan",email:"Kirim email kepada saya ketika ada beberapa peristiwa terjadi",wallet:"Kirim pemberitahuan ke dompet saya ketika beberapa peristiwa terjadi",phone:"Kirim pesan teks kepada saya saat beberapa peristiwa terjadi",webhook:"Webhooks",add:"Tambah webhook baru",url:"URL kustom",slack:"Slack Webhook",tested:"Pesan uji terkirim"},activeUserSessions:"Sesi Pengguna Aktif",forceLogout:"Keluar paksa",forceLogoutDescription:"Konfirmasi untuk logout paksa pengguna ini?",openProfile:"Lihat Profil",removeUserSuccess:"Pengguna berhasil dihapus",forceLogoutRemoveDescription:"Konfirmasi untuk memaksa logout pengguna ini (Juga hapus semua sesi pengguna)?"},transferNode:{name:"Pindahkan Kepemilikan",inviteDialog:{title:"Transfer Server Blocklet",tips:{progress:"Pemindahan server harus diterima oleh penerima untuk menyelesaikan operasi pemindahan, dan setelah penerima menerimanya, Anda tidak dapat masuk ke server dengan paspor saat ini lagi.",newOwnerPermissions:"Pemilik baru akan memiliki hak untuk mengelola semua operasi seperti anggota, paspor, dan Blocklets.",revoke:'Jika Anda ingin menarik undangan transfer, Anda dapat menghapus tautan undangan di halaman "Tim -> Anggota -> Mengundang".'},createInviteLink:"Buat Tautan Undangan",createSuccessTip:"Tautan undangan telah berhasil dibuat, klik untuk menyalin dan mengirimkan tautan ke anggota yang diundang, harap perhatikan bahwa tautan undangan ini tidak dapat digunakan kembali dan akan berakhir pada {expireDate}."},delegateDialog:{title:"Otorisasi Diperlukan",scan:"Gunakan metode berikut untuk mengotorisasi server untuk mentransfer NFT kepemilikan server.",confirm:"Konfirmasi di akun Anda",success:"Otorisasi berhasil"}},transferApp:{name:"Transfer Milik",transferDialog:{title:"Aplikasi Transfer",tips:{progress:"Aplikasi transfer harus diterima oleh penerima untuk menyelesaikan operasi transfer, dan setelah penerima menerimanya, Anda tidak dapat masuk ke aplikasi dengan paspor saat ini.",newOwnerPermissions:"Pemilik baru akan memiliki hak untuk mengelola semua operasi seperti anggota, paspor, dan pengaturan."},createTransferLink:"Buat Tautan Transfer",createSuccessTip1:'Tautan transfer berhasil dibuat, tamu harus menggunakan <a style="color: rgb(29, 193, 199)" target="_blank" href="https://www.didwallet.io/">DID Wallet</a> untuk menerima kepemilikan aplikasi',createSuccessTip2:"Silakan klik untuk menyalin dan mengirimkan tautan ke anggota yang diundang, harap perhatikan bahwa tautan transfer ini tidak dapat digunakan kembali dan akan kadaluarsa pada {expireDate}. Tautan transfer Anda hanya akan ditampilkan sekali dan tidak akan dapat dilihat lagi setelah menutup dialog ini.",createSuccessTip3:"Setelah transfer berhasil, aplikasi akan secara otomatis restart untuk memastikan perubahan berlaku.",link:"Transfer Link",iKnow:"Saya telah menyalin dan menyimpan tautan tersebut"},connectDialog:{title:"Otorisasi Diperlukan",scan:"Gunakan metode berikut untuk mengotorisasi aplikasi untuk mentransfer kepemilikan.",confirm:"Konfirmasi di akun Anda",success:"Otorisasi berhasil"},receiveDialog:{title:"Menerima Kepemilikan Aplikasi",scan:"Gunakan metode berikut untuk menerima kepemilikan aplikasi.",confirm:"Konfirmasi di akun Anda",success:"Menerima Kepemilikan Berhasil"},successTitle:"Anda telah menjadi pemilik baru aplikasi ini",visitDashboard:"Kunjungi Dasbor Aplikasi",description:"Anda dapat mentransfer kepemilikan aplikasi Anda ke dompet atau orang lain."},permission:{create:{title:"Buat Izin",description:"Format: <aksi>_<sumber daya>"},delete:{title:"Hapus Izin",description:"Konfirmasi menghapus {name}?"},error:{actionEmpty:"Tindakan tidak boleh kosong",resourceEmpty:"Sumber tidak boleh kosong",permissionTooLong:"Izin tidak boleh melebihi {length} karakter",descriptionTooLong:"Deskripsi tidak boleh melebihi {length} karakter"}},passport:{create:{title:"Buat Paspor",titleTip:"Judul tidak dapat diubah setelah dibuat, disarankan maksimal 14 huruf"},bind:{title:"Ikatan Izin",roleTip:"Anda akan mendapatkan semua izin dari paspor yang dipilih setelah mengikat",permissionTip:"Anda akan mendapatkan izin yang dipilih setelah melakukan pengikatan",transferLeftTitle:"Semua izin",transferRightTitle:"Izin diberikan"},delete:{title:"Hapus Paspor",description:"Paspor yang dipegang oleh pengguna akan kehilangan semua izin setelah dihapus. Apakah Anda yakin ingin melanjutkan?"},error:{titleEmpty:"Judul tidak boleh kosong",titleTooLong:"Judul tidak boleh melebihi {length} karakter",descriptionEmpty:"Deskripsi tidak bisa kosong"},issuance:{pending:"Tertunda",create:{title:"Buat Link"},delete:{title:"Hapus Tautan Diterima",description:"Konfirmasi hapus {link}?"}},issue:"Menerbitkan paspor",disableIssuance:"Nonaktifkan Penerbitan Paspor",enableIssuance:"Aktifkan Penerbitan Paspor",disableIssuanceTip:'Operasi "Mengeluarkan Paspor", "Undang Anggota", dan operasi lainnya akan dinonaktifkan',enableIssuanceTip:"Mengeluarkan Paspor",trustedPassportIssuers:"Penerbit Paspor Terpercaya",trustedIssuers:"Penerbit Terpercaya",trustedFactories:"Koleksi NFT Terpercaya",trustedFactoriesTip:"Kelola Koleksi NFT terpercaya yang dapat digunakan untuk ditukar dengan paspor",searchFactoryAddress:"Cari Koleksi DID",configFactories:"Konfigurasi Koleksi NFT Terpercaya",configFactoriesTip:"Memungkinkan pengguna menukar NFT untuk paspor",factoryAddress:"Alamat Koleksi NFT",factory404:"Koleksi NFT tidak ditemukan",factoryAddressTip:"Alamat Koleksi NFT harus ada di Chain Utama ArcBlock",role:"Jenis Paspor",ttl:"Kebijakan Berakhirnya Paspor",ttlNever:"Tidak pernah kedaluwarsa",ttlMint:"Sejak pembelian NFT",ttlExchange:"Sejak Pertukaran Paspor",ttlNeverTip:"Paspor akan berlaku sampai dicabut",ttlMintTip:"Paspor akan berlaku sejak pembelian NFT sampai Anda menentukan waktu ttl atau mencabut",ttlExchangeTip:"Paspor akan berlaku dari saat pengguna berhasil ditukar hingga Anda menentukan ttl atau mencabut",ttlTip:'365d berarti 365 hari, Anda juga bisa menggunakan "30 hari" atau "24 jam"',validUntil:"Berlaku hingga: {date}",externalPassport:"Paspor Eksternal",notTrustedIssuerTip:"Paspor tidak dapat digunakan karena penerbit tidak ada dalam daftar penerbit tepercaya",issuerDid:"ID PEMBERI",addNodeToTrustedIssuers:"Tambahkan server saat ini sebagai penerbit paspor terpercaya",revoked:"Ditarik",noPermission:"Tidak ada izin untuk melakukan operasi ini",shouldNotDeleteCurrent:"Anda tidak dapat mencabut paspor yang sedang digunakan saat ini",mappingRule:"Aturan pemetaan",defaultRule:"Aturan default",search:"Cari Paspor",searchIssuerDid:"Cari Penerbit DID",issueBy:"Isu oleh {name}",configColor:"Konfigurasi Warna Paspor",configColorTip:"Sesuaikan warna paspor",color:"Warna Paspor",description:"Gunakan paspor ini untuk menghubungkan {teamName} sebagai {title}",displayBuiltin:"Builtin",displayCustom:"Kustom",typesTip:"Sesuaikan jenis paspor, pisahkan dengan koma",issuanceDate:"Tanggal penerbitan: {date}",sourceMaps:{recover:"Terpulihkan",issue:"Diterbitkan",invite:"Diundang",trusted:"Tepercaya"},related:"Paspor Terkait",operationLogs:"Log Operasi",owner:"Pemilik",status:"Status",statusMap:{valid:"Valid",revoked:"Dicabut",expired:"Kedaluwarsa"},view:"Kelola Paspor",trustedPassportIssuersTip:"Kelola penerbit paspor tepercaya yang dapat digunakan untuk menerbitkan paspor",issuanceTime:"Waktu Penerbitan",relatedDescription:"Paspor saat ini diturunkan dari paspor berikut",passportExpireTime:"Tetapkan tanggal kedaluwarsa untuk Passport",customExpireTime:"Waktu Kedaluwarsa Kustom",customExpireTimeIsInvalid:"Waktu Kedaluwarsa Kustom tidak valid"},inviting:{link:"Tautan Undangan",inviter:"Pemanggil",delete:{title:"Hapus Tautan Undangan",description:"Konfirmasi hapus {link}?"},disabledTip:"Undangan tidak diaktifkan"},whoCanAccess:{all:{title:"Tersedia untuk semua"},owner:{title:"Hanya pemilik"},invited:{title:"Hanya pengguna yang diundang"}},userFollowers:{follow:"Ikuti",unfollow:"Berhenti Mengikuti",followersOnly:"Hanya terlihat oleh pengikut",followers:"Pengikut",following:"Berikut",emptyFollowing:"Belum ada pengguna yang Anda ikuti.",emptyFollowers:"Belum ada pengikut.",title:"Ikuti",invitees:"Undangan",emptyInvitees:"Anda belum mengundang siapa pun."},orgs:{explain:"Memungkinkan pengguna membuat dan bergabung dengan organisasi, menetapkan peran, dan mengelola sumber daya.",description:"Deskripsi",deleteConfirm:"Konfirmasi hapus {name}?",members:"Anggota",myCreated:"Buatan Saya",myJoined:"Bergabung Dengan Saya",myCreatedEmpty:"Anda belum membuat organisasi.",myJoinedEmpty:"Anda belum bergabung dengan organisasi apa pun.",deleteConfirmDescription:"Menghapus organisasi ini akan menghapus semua peran dan sumber daya yang terhubung dengannya. Pengguna akan tetap berada di sistem tetapi kehilangan peran mereka di organisasi ini. Tindakan ini tidak dapat dibatalkan.",active:"Aktif",deleteOrg:"Hapus Organisasi Saat Ini",invitedAt:"Diundang pada: {time}",joinedAt:"Bergabung pada: {time}",createNew:"Buat Organisasi Baru",viewAll:"Lihat Semua Organisasi",validate:{nameEmpty:"Nama tidak boleh kosong",nameTooLong:"Nama tidak boleh melebihi {length} karakter",descriptionTooLong:"Deskripsi tidak boleh melebihi {length} karakter"},mutate:{title:"{mode} Organisasi",name:"Nama Organisasi",createSuccess:"Organisasi berhasil dibuat",updateSuccess:"Organisasi berhasil diperbarui",orgNotEnabled:"Organisasi belum diaktifkan",maxMemberPerOrg:"Organisasi dapat mengundang hingga {maxMemberPerOrg} anggota",maxOrgPerUser:"Anda dapat membuat hingga {maxOrgPerUser} organisasi"},invite:{chooseUsersToInvite:"Pilih pengguna untuk diundang",success:"Undangan terkirim ke pengguna",pleaseSelectUsers:"Silakan pilih pengguna",pleaseSelectRole:"Silakan pilih peran",inviteExternalUsers:"Undang pengguna eksternal",failed:"{count} undangan pengguna gagal, coba lagi nanti",remove:"Hapus pengguna",removeSuccess:"Pengguna berhasil dihapus",limit:"Batas",limitTip:"Batasi anggota organisasi dan organisasi per pengguna",maxMembers:"Maks anggota per org",maxOrgs:"Jumlah maksimal organisasi per pengguna",maxMembersTip:"Jumlah maksimum pengguna yang dapat diundang untuk organisasi ini",inviteLinkSendToEmail:"Tautan undangan telah dikirim ke email ({email}), harap periksa",enterEmailAddress:"Silakan masukkan alamat email",inviteTitle:"Undang pengguna untuk bergabung ke {orgName}"},member:{removeMemberConfirm:"Konfirmasi hapus {name}?",removeMemberConfirmDescription:"Setelah penghapusan, pengguna akan kehilangan peran dan izin di organisasi. Tindakan ini tidak dapat dibatalkan.",removeInvitingMember:"Konfirmasi batalkan undangan {name}?",removeInvitingMemberDescription:"Setelah dihapus, pengguna tidak akan bisa bergabung dengan organisasi dan perlu diundang kembali. Tindakan ini tidak dapat dibatalkan."}}},launcher:{provider:"Penyedia",adminUrl:"URL"},session:{blockAccess:"Anda telah diblokir dari mengakses server ini"},launchBlocklet:{appInfo:"Informasi Aplikasi",appInfoDesc:"Konfirmasi informasi aplikasi",author:"Penulis Aplikasi: {author}",setup:"Setup Blocklet",redirect:"Mengalihkan",alreadyRunning:"Aplikasi {name} sudah berjalan di server Blocklet ini",alreadyInstalled:"Aplikasi {name} sudah terpasang di server Blocklet ini",alreadyExists:"Aplikasi ini sudah ada, mengalihkan...",purchased:"Sudah Dibeli",purchase:"Pembelian",nextStep:"Langkah Berikutnya",agreement:"Perjanjian Lisensi",agreeAll:"Setuju & Lanjutkan",installing:"Menginstal {appName} di {serverName}, ini mungkin memakan waktu beberapa menit untuk selesai, harap menunggu...",redirecting:"{appName} berhasil diinstal, sekarang memulai...",start:"Meluncurkan",launch:"Pasang Blocklet ke Server",launchSuccess:"{appName} telah diluncurkan dengan sukses!",installSuccess:"Blocklet berhasil diinstal dan diluncurkan di {serverName}",openInRegistry:"Lihat di Blocklet Store",subTitle:"Siap untuk menginstal Blocklet {appName} di {serverName}",installingSubTitle:"{appName} sedang menginstal",access:"Buka aplikasinya",viewApplication:"Lihat Aplikasi",newVersion:"Versi Baru",newVersionDesc:"Aplikasi sudah ada, tetapi versi saat ini dapat ditingkatkan",upgradeNow:"Tingkatkan Sekarang",later:"Nanti",introduction:"Pengantar",welcome:"Selamat datang di Wizard Peluncuran Blocklet",accept:"Saya setuju dengan EULA Blocklet",license:"Lisensi Aplikasi",next:"Setujui EULA dan lanjutkan",purchaseApp:"Beli Blocklet",setupAppDesc:"Inisialisasi Blocklet Anda",launched:"Lengkap",confirmInstall:"Konfirmasi Pemasangan",dialog:{title:"Menjadi pemilik aplikasi",nftFreeDescription:"Silakan tampilkan ruang NFT aplikasi dan buat akun aplikasi untuk melanjutkan",nftPaidDescription:"Tolong tampilkan ruang aplikasi NFT dan beli aplikasi NFT untuk melanjutkan",freeDescription:"Silakan buat akun aplikasi untuk melanjutkan",paidDescription:"Silakan tampilkan pembelian NFT aplikasi dan buat akun aplikasi untuk melanjutkan",confirm:"Konfirmasi di akun Anda",success:"Otorisasi berhasil",authorizationTimeout:"Waktu otorisasi habis"},waiting:{verifying:"Memverifikasi meta aplikasi...",downloading:"Mengunduh paket aplikasi...",downloadingComponent:"Mengunduh {name}",extractingComponent:"Mengekstrak {name}",extracting:"Mengekstrak bundel aplikasi...",installing:"Menginstal komponen aplikasi...",installed:"Terpasang",starting:"Memulai aplikasi...",done:"Aplikasi Anda sedang diluncurkan...",parsing:"Menganalisis meta aplikasi...",initializing:"Memulai konfigurasi aplikasi...",initializingOwner:"Menginisialisasi pemilik aplikasi...",creatingSecurityRules:"Membuat aturan keamanan default...",assigningDomain:"Menugaskan domain default...",waitingForDomain:"Menunggu domain default untuk berlaku..."},error:{loadMetaFailed:"Gagal memuat informasi aplikasi",appMetaNotFound:"Tidak ada informasi ditemukan untuk aplikasi ini",downloadFailed:"Gagal mengunduh aplikasi, silakan coba lagi",installFailed:"Gagal menginstal aplikasi, silakan coba lagi",startFailed:"Gagal memulai aplikasi, silakan coba lagi",launchFailed:"Gagal meluncurkan aplikasi, silakan coba lagi",installedButStopped:"Aplikasi berhasil diinstal, tetapi tidak dapat dijalankan. Anda dapat menjalankannya secara manual setelah memecahkan masalah pemblokiran",installedButError:"Aplikasi berhasil diinstal, tetapi gagal untuk memulai",restoreFailed:"Gagal mengembalikan aplikasi, silakan coba lagi",resourceBlocklet:"Blocklet ini tidak dapat diluncurkan secara langsung, tetapi Anda dapat menambahkannya ke aplikasi yang sudah ada."},steps:{introduction:"Pengenalan",installApp:"Pasang Aplikasi",purchaseSpace:"Membeli Ruang",prepareSpace:"Menyiapkan Ruang"},installRelatedComponents:"Pasang Blocklets terkait",canNotInstall:"Tidak dapat menginstal",dockerBlockletCantInstall:"Tidak dapat menginstal Blocklet, karena Server Blocklet belum mengaktifkan Docker atau Docker Network",nav:{myApps:"Aplikasi Saya",viewMyApps:"Lihat Aplikasi Saya"},withoutWallet:"Lewati koneksi Dompet DID",nwFailed:"Gagal mengambil alur kerja.",alreadyConsumed:"Sesi peluncuran telah digunakan",redirectToLauncherBlocklet:"Mengalihkan ke Launcher Blocklet"},issuePassport:{title:"Menerima Paspor",description:"Gunakan metode berikut untuk menerima paspor yang dikeluarkan oleh {name}",dialog:{scan:"Gunakan metode berikut untuk mengklaim paspor",confirm:"Konfirmasi di akun Anda",success:"Paspor telah berhasil ditambahkan di dompet Anda",loginWithPassport:"Hubungkan dengan paspor ini",autoClose:"Halaman akan ditutup otomatis dalam {seconds}s",autoJump:"Halaman akan otomatis loncat dalam {seconds}s"}},lostPassport:{title:"Paspor Hilang",description:"Pemilik {name} dapat menggunakan metode berikut untuk mengambil paspor, anggota silakan hubungi pemilik untuk menerbitkan ulang paspor.",return:"Batalkan operasi pengambilan, kembali ke halaman utama",receivePassport:"Menerima paspor",recoverDialog:{title:"Memulihkan paspor",scan:"Gunakan metode berikut untuk mengambil paspor Anda",confirm:"Konfirmasi di dompet DID Anda",success:"Berhasil diambil"},receiveDialog:{title:"Menerima paspor",scan:"Gunakan metode berikut untuk menerima paspor",confirm:"Konfirmasi di dompet DID Anda",success:"Diterima dengan sukses"},recoverPassport:"Memulihkan paspor"},invite:{message:"{name} mengundang Anda untuk menjadi {role} dari {dapp}",success:"Anda berhasil bergabung dengan {dapp}",receive:"Terima dengan",validUntil:"Berlaku hingga:",viewPermission:"Izin Lihat",emptyPermission:"Izin Kosong",open:"Buka",description:{step1:"Unduh dan konfigurasikan {wallet} Anda",step2:"Klik tombol di atas untuk menerima paspor",step3:"Masuk ke {dapp} dengan paspor yang diterima"},transferNFTDialog:{title:"Terima Server Blocklet {name}",scan:"Hubungkan Launcher untuk menyelesaikan penerimaan Server Blocklet.",confirm:"Periksa operasi ini di Dompet DID Anda",success:"Berhasil terhubung, menunggu konfirmasi penerimaan dari Server"}},receive:{dialog:{title:"Menerima paspor",scan:"Setelah menerima paspor, Anda dapat menggunakan paspor untuk masuk ke aplikasi",confirm:"Konfirmasi di akun Anda",success:"Anda berhasil terhubung",scanWithDid:"Silakan gunakan akun {did} untuk menerima paspor ini. Setelah menerima paspor, Anda dapat menggunakannya untuk masuk ke aplikasi."}},navigation:{navigation:"Navigasi",actionFailed:"Aksi Gagal",form:{themeConfig:"Konfigurasi Tema",contentConfig:"Konfigurasi Konten",title:"Judul",titlePlaceholder:"Silakan masukkan judul navigasi",titleTooLong:"Panjang judul harus lebih kecil dari {len}",description:"Deskripsi",descriptionPlaceholder:"Silakan masukkan deskripsi navigasi",descriptionTooLong:"Panjang deskripsi harus lebih kecil dari {len}",icon:"Ikon Default",iconPlaceholder:"Pilih ikon",invalidIcon:"Ikon tidak valid",findMoreIcon:"Temukan lebih banyak ikon",link:"Link",linkPlaceholder:"Silakan masukkan tautan navigasi",invalidLink:"Link tidak valid",component:"Komponen",componentPlaceholder:"Silakan pilih komponen navigasi",role:"Peran",rolePlaceholder:"Silakan pilih peran navigasi",locale:"Lokal",localePlaceholder:"Silakan masukkan lokasi yang perlu ditambahkan",localeExists:"{value} sudah ada",activeIcon:"Ikon Aktif",activeColor:"Warna Aktif",color:"Warna Default",colorPlaceholder:"e.g., #FF0000",invalidColor:"Warna tidak valid",searchIcons:"Cari ikon",searchIconsPlaceholder:"Contoh: mdi:home"},action:{add:"Tambahkan navigasi",addSub:"Tambahkan navigasi sub",edit:"Edit navigasi",hide:"Sembunyikan navigasi",show:"Tampilkan navigasi",del:"Hapus navigasi",new:"Baru",noAddSub:"Komponen yang tidak terpasang tidak dapat menambahkan sub navigasi",noEdit:"Komponen yang dihapus tidak dapat diedit",noDel:"Tidak diizinkan menghapus navigasi bawaan",reset:"Reset",restConfirmTitle:"Setel ulang navigasi {section} ke bawaan?",restConfirmDesc:"Navigasi khusus Anda akan dibersihkan dan dikembalikan ke item bawaan.",resetSuccessful:"Reset berhasil",delTabBarTitle:"Apakah Anda ingin menghapus tab ini?",delTabBarDesc:"Setelah menghapus, tab akan dihapus dari bar navigasi."},system:"Sistem",services:"Layanan",access:"Akses",members:"Anggota",passport:"Paspor",analytics:"Analitik",dashboard:"Dasbor",studio:"Blocklet Studio",aigne:"Koneksi AI",blockletService:"Layanan Blocklet",didConnect:"Identitas & Akses",didSpaces:"Penyimpanan & Cadangan",website:"Website Studio",notification:"Pusat Pemberitahuan",operations:"Observabilitas",integration:"Integrasi",developer:"Pengembang",overviewDesc:"Pantau kesehatan dan detail aplikasi, dan instal, jalankan, atau hapus Blocklets dengan mudah di satu tempat.",didConnectDesc:"Tambahkan anggota tim, atur opsi masuk, dan kelola akses aman untuk kolaborasi yang lancar.",aigneDesc:'Konfigurasi koneksi terkait AI untuk blocklet Anda, termasuk <a href="{aigneHubUrl}" target="_blank">AIGNE Hub</a> dan <a href="{mcpUrl}" target="_blank">server yang kompatibel dengan MCP</a>.',websiteDesc:"Kelola domain, sesuaikan tema, sempurnakan branding, dan kustomisasi navigasi untuk tampilan situs yang unik.",operationsDesc:"Lihat analitik, periksa log aktivitas, dapatkan peringatan, dan sesuaikan pengaturan lanjutan sesuai kebutuhan.",integrationsDesc:"Tautkan layanan eksternal melalui Webhooks, kunci akses, dan server MCP untuk memperluas kemampuan aplikasi.",developersDesc:"Gunakan log, pelacakan kinerja, dan dokumentasi untuk membangun, men-debug, dan mengoptimalkan aplikasi Anda.",didSpacesDesc:"Simpan dan cadangkan data aplikasi Blocklet Anda dengan aman untuk memastikan perlindungan yang andal dan pemulihan yang mudah.",publishDesc:"Terbitkan aplikasi Anda ke toko atau bagikan melalui tautan agar lebih banyak orang dapat menggunakannya."},storage:{spaces:{title:"DID Spaces",tips:"Tips",label:"Masukkan Gateway DID Spaces",connected:{title:"Ruang DID Terhubung",tag:"Terhubung"},connectedWithName:"Anda berhasil terhubung ke {name}",addedWithName:"Anda berhasil menambahkan {name}",connects:"Hubungkan",reconnect:"Menghubungkan kembali",addressCannotEmpty:"Alamat tidak boleh kosong",addressNotValid:"{url} bukan alamat yang valid",authorize:{title:"Sambungkan {appName} ke DID Spaces",scan:"Gunakan metode berikut agar aplikasi {appName} dapat terhubung ke DID Spaces",success:"Berhasil terhubung"},provideNFT:{title:"Tolong tampilkan DID Spaces NFT untuk {appName}",scan:"Gunakan metode berikut agar aplikasi {appName} dapat menampilkan NFT Space DID",success:"Terhubung berhasil"},backup:{title:"Backup",records:"Cadangan catatan",without:"Tanpa backup",succeeded:"Cadangan berhasil",failed:"Cadangan gagal",lastBackup:"Cadangan terakhir",lastBackupTip:'Sudah {time} sejak cadangan terakhir Anda berhasil, silakan periksa pengaturan cadangan Anda di tab "DID Spaces".',noBackup:"Tidak ada backup",noBackupTip:"Belum ada backup yang dibuat. Kami sarankan untuk mengatur backup secara berkala untuk melindungi data dan pengaturan Anda",pending:"Backup sedang berlangsung",timeout:"Batas waktu pencadangan"},autoBackup:{title:"Cadangan otomatis",enabled:"Pencadangan otomatis sudah aktif",disabled:"Pencadangan otomatis mati"},autoCheckUpdate:{title:"Periksa otomatis pemberitahuan versi baru",enabled:"Pemeriksaan otomatis untuk versi baru sedang aktif",disabled:"Pengecekan otomatis untuk versi baru dimatikan"},backupSuccessfully:"Pencadangan berhasil",restore:"Memulihkan",restoreSuccessfully:"Pemulihan berhasil",gateway:{title:"Gerbang",select:"Pilih Ruang DID",add:{title:"Tambahkan Ruang DID",label:"Masukkan URL Ruang DID",failed:"Gagal menambahkan DID Spaces",invalidUrl:"URL gateway ruang DID tidak valid",duplicate:"{name} sudah terhubung dengan Blocklet ini"},delete:{title:"Hapus",succeeded:"Berhasil menghapus DID Spaces {name}",failed:"Gagal menghapus gerbang",failedForSelected:"Tidak dapat menghapus DID Spaces yang dipilih",descForBackup:`Setelah menghapus {name}, Anda tidak akan dapat membuat cadangan dari Blocklet ke DID Space ini. Apakah Anda yakin ingin menghapus?
5
+ Rasio: 16:9`,copyrightDesc:"Digunakan di: footer situs web",appUrlDesc:"Digunakan di: peta situs dan berbagi sosial",advanced:"Konfigurasi Lanjutan",errorReason:"Gagal memulai Blocklet, tetapi anda masih bisa mengaksesnya dengan mengklik tombol di bawah.",nameValidateError:"Tidak valid: mulai dengan huruf/angka, 3–129 karakter, hanya a–z, 0–9, - dan _."},overview:{source:"Sumber",deployedFrom:"Dipindahkan Dari",accessControl:"Kontrol Akses",viewInStore:"Lihat di toko"},diskInfo:{empty:"Informasi disk tidak tersedia saat ini!",appDir:"Direktori Aplikasi",dataDir:"Direktori Data",logDir:"Direktori Log",cacheDir:"Direktori Cache"},runtimeInfo:{noRunning:"Informasi waktu proses akan tersedia ketika blocklet berjalan!",memoryUsage:"Pemakaian Memori",cpuUsage:"Pemakaian CPU",uptime:"Waktu aktif",port:"Pelabuhan",processId:"ID Proses",dataStorage:"Penyimpanan Data"},dist:{downloadLink:"Tautan Unduh",verify:"Memverifikasi"},status:{added:"Ditambahkan",waiting:"Menunggu",downloading:"Mengunduh",extracting:"Mengekstrak",installing:"Menginstal",upgrading:"Meningkatkan",installed:"Terpasang",created:"Dibuat",starting:"Mulai",running:"Berlari",stopping:"Berhenti",stopped:"Berhenti",error:"Kesalahan",deleting:"Menghapus",corrupted:"Rusak",purchasing:"Menunggu pembelian",purchased:"Dibeli",verifying:"Memverifikasi pembelian",resource:"Sumber daya",failWithOldVersion:"Versi baru gagal memulai, Blocklet berjalan pada versi lama.",hasSomeErrors:"{blocklets} belum berjalan sepenuhnya, mungkin karena masalah atau inisialisasi yang tertunda."},list:{download:"Unduh",star:"Bintang",searchPlaceholder:"Cari nama Bloklet atau DID"},component:{container:"Konfigurasi Global",showContainer:"Tampilkan Konfigurasi Global",didSpaceConfig:"Konfigurasi DID Spaces",didSpaceConfigTip:"Lengkapi proses otorisasi berikut untuk menyimpan data aplikasi di DID Spaces",didSpaceConnected:"Penyimpanan diotorisasi untuk: {endpoint}",checkUpdateTitle:"Periksa Pembaruan",updateTitle:"Perbarui Komponen",noUpdate:"Tidak ada komponen yang perlu diperbarui",add:"Tambahkan Komponen",selectComponent:"Pilih Blocklet",selectRegistry:"Pilih Blocklet Store",selectRegistryTip:"Anda dapat mengganti toko blok untuk melihat lebih banyak komponen",selectInstance:"Pilih Instansi",selectInstanceTip:"Anda dapat memilih instansi yang ada atau membuat instansi baru. Instansi yang ada akan menggunakan konfigurasi dan data yang sudah disimpan sebelumnya.",newInstance:"Buat Instansi Baru",noComponent:"Tidak ada komponen",mountPoint:"Apa titik lempengnya?",mountPointTip:"Jika Anda mengatur titik mount menjadi '/my-prefix', maka semua permintaan yang dimulai dengan titik mount tersebut akan diarahkan ke komponen yang dipilih",delete:"Hapus Komponen",deleteDescription:"Komponen ini tidak akan dapat diakses setelah dihapus. Konfirmasi hapus?",purchase:"Pembayaran Diperlukan",tip:{stopBlocklet:"Tolong hentikan terlebih dahulu eksekusi Blocklet",requiredBy:"Komponen ini diperlukan oleh {name}"},choose:"Pilih",addWithName:"Tambahkan Blocklet ke {name}",installingCanCloseWindowTip:"Menginstal komponen di latar belakang, Anda dapat menutup jendela ini dengan aman",installSuccessTip:"Selamat, komponen berhasil dipasang!",missDownloadTokenTip:"Tidak dapat menambahkan komponen berbayar tanpa token unduhan yang valid",purchaseComponentSecondCheckTip:"Harap tampilkan pembelian blocklet NFT Anda untuk melanjutkan",installComponentError:"Terjadi kesalahan saat menginstal komponen, silakan coba lagi",downloadComponentError:"Terjadi kesalahan saat mengunduh komponen, silakan coba lagi",addComponentTip:{introduction:"Selamat datang di Pengaturan Komponen Tambah",isPurchase:"Anda perlu memverifikasi NFT sebelum menggunakan <b>{name}</b> sebagai komponen",belowInformation:"Berikut adalah informasi untuk komponen:",verifyNFT:"Silakan pilih metode Verifikasi NFT",config:"Silakan isi konfigurasi komponen",environment:"Silakan isi lingkungan komponen",fromUrl:"Menambahkan Bloklet Dari URL",fromUpload:"Tambahkan Blocklet dari Unggahan",uploadFailed:"Unggahan gagal",allowedFileTypes:"Jenis berkas yang diizinkan untuk diunggah: {types}"},addNext:"Tambahkan {name}",upgradeNext:"Tingkatkan {name}",setting:"Pengaturan",noDependencies:"{name} tidak memiliki dependensi apa pun",relatedComponents:"Blocklet Terkait",required:"Dibutuhkan",installed:"Terpasang",installingTip:"Sedang menginstal komponen, harap tunggu...",upgrade:"Tingkatkan",upgradeAvailable:"Pembaruan Tersedia",needBuy:"Perlu Pembelian",isOfficial:"Secara Resmi Bersertifikat"},router:{urlPath:"URL Path",noRunning:"Blocklet saat ini tidak dimulai. Tidak dapat diakses melalui alamat berikut!",securitySetting:"Pengaturan Keamanan",checkUrlAccessible:"Periksa aksesibilitas alamat",urlInaccessible:"Ini mungkin disebabkan oleh masalah jaringan, alamatnya sementara tidak dapat diakses",noAccessibleUrl:"URL tidak dapat diakses",domainLockTooltip:"Domain yang dihasilkan oleh sistem tidak dapat diedit.",urlLockTooltip:"Path URL yang dihasilkan sistem tidak dapat diedit.",showAllDomains:"Tampilkan semua domain",showAllDIDs:"Tampilkan semua DIDs",currentDomainTip:"Anda mengakses halaman ini melalui domain ini"},export:{title:"Ekspor Blocklet",name:"Nama Bundle",nameTip:"misalnya 'my-blocklet-name' atau '@my-scope/blocklet-name'",result:"Apa yang akan terjadi selanjutnya",exportSource:"Ekspor Sumber",success:"Blocklet berhasil diekspor",resultTipStart:"Dengan",resultTipEnd:"Anda dapat membangun dan menerbitkan blok ini dalam hitungan menit",uploadedComponentTip:"Komponen yang diunggah secara langsung tidak dapat diekspor:"},migrate:{title:"Migrasi Aplikasi",scan:"Hubungkan Dompet DID Anda untuk menghasilkan pasangan kunci untuk aplikasi ini",confirm:"Periksa operasi ini di dompet DID Anda",success:"Aplikasi Anda berhasil dimigrasi, halaman akan diperbarui dalam {sec} detik",intro:{l1:"Klik di sini",l2:"Untuk bermigrasi ke versi baru aplikasi Anda (perubahan dinonaktifkan sebelum migrasi selesai)",l3:"Aplikasi DID akan sepenuhnya dikontrol dari Dompet DID Anda.",l4:"Data aplikasi akan dipindahkan, dan tidak ada perubahan tambahan yang diperlukan.",l5:"Struktur aplikasi baru akan memberikan fleksibilitas lebih saat mengubah komponen.",l6:"4. Tolong jangan mengubah titik pemasangan komponen sebelum versi komponen baru keluar."},tip:{duplicate:"Temukan komponen duplikat {name}, harap hapus komponen yang tidak berguna dan lakukan migrasi kembali",running:"Tolong hentikan blokir sebelum migrasi"}},error:{isRunning:"Blocklet sedang berjalan, silakan hentikan terlebih dahulu",isInProgress:"Blocklet sedang berlangsung, harap tunggu hingga selesai"},publish:{createResource:"Buat Sumber Daya",addResource:"Tambahkan Rilis",productTitle:"Produk",versionTitle:"Pembaruan versi",imgTitle:"Gambar",resourceTitle:"Konten",blockletEmptyTip:"Tidak ada Blocklets di sini",createBlockletTip:"Anda dapat membuat blocklet baru melalui sumber daya, komponen, dan konfigurasi yang ada dalam aplikasi ini",createBlocklet:"Blok baru",componentNotRunning:"Blocklet {name} tidak berjalan, harap mulai terlebih dahulu",releaseEmptyTip:"Tidak ada rilis di sini",createReleaseTip:"Anda dapat membuat rilis dari blocklet, bersama dengan catatan rilis dan sumber daya, agar orang lain dapat menggunakannya",createRelease:"Membuat rilis",deleteReleaseTip:"Rilis tidak dapat dikembalikan setelah dihapus",createBlockletDid:"Buat dari Dompet DID",createReleaseSuccess:"Rilis berhasil dibuat",saveDraftSuccess:"Draf berhasil disimpan",connect:{title:"Membuat DID Blocklet",scan:"Gunakan metode berikut untuk menghasilkan Blocklet DID",confirm:"Konfirmasi menggunakan Dompet DID",success:"DID Blocklet telah dihasilkan, silakan lanjutkan operasi Anda"},saveDraft:"Simpan Draf",releaseNote:"Catatan Rilis",errorTip:{noDid:"Blocklet DID diperlukan",noTitle:"Judul blok diperlukan",noVersion:"Versi Blocklet diperlukan",noDescription:"Deskripsi Blocklet diperlukan",noNote:"Catatan Rilis diperlukan",inValidVersion:"Versi Blok Tidak Valid",noResource:"Silahkan pilihunggah sumber daya untuk disertakan dalam blocklet",noFirstDid:"Silakan buat DID Blocklet terlebih dahulu",invalidUrl:"Silakan masukkan URL yang valid",invalidUrlOrEmail:"Harap masukkan URL atau email yang valid"},packTip:"Saat ini, blok dapat diinstal langsung sebagai aplikasi. Komponen dan konfigurasi aplikasi akan secara otomatis disertakan dalam Blocklet.",resourceChangedWarning:"Anda telah mengubah sumber daya, harap simpan tepat waktu",installResourceTip:"URL Pemasangan:",installResourceTip2:"Jika Anda ingin melihat lebih banyak tips, silakan kunjungi",installResourceHelp:"Dokumen Bantuan",componentIncluded:"Termasuk",componentForceRequired:"Diperlukan",download:"Unduh {name}",delete:"Hapus {name}",copyInstallUrl:"Salin URL Instalasi",install:"Pasang {name}",publishToStoreSuccess:"Blocklet berhasil diterbitkan ke Toko",connectStoreSuccess:"Penyimpanan Blocklet berhasil terhubung",uploadToStoreSuccess:"Blocklet berhasil diunggah ke Store, Anda perlu mempublikasikannya di Store",viewLastRelease:"Tampilkan rilis terakhir",reconnectStoreTip:"Setelah terhubung kembali, pengembang baru akan terikat. Apakah Anda yakin ingin terhubung kembali?",deleteProject:{title:"Hapus {name}",scan:"Gunakan metode berikut untuk menghapus {name}",confirm:"Konfirmasi menggunakan Dompet DID",success:"Proyek Blocklet telah dihapus, silakan lanjutkan operasi anda",tip1:"Proyek Blocklet tidak akan dapat dipulihkan setelah dihapus",tip2:"Anda tidak akan lagi dapat menerbitkan versi baru ke Blocklet yang dihapus, yang berarti bahwa Blocklet tidak akan diperbarui lagi di Toko.",tip3:"Menghapus Blocklet tidak akan mempengaruhi versi yang saat ini dipublikasikan di Toko.",description:"Setelah menghapus Blocklet, Anda akan menghadapi masalah berikut, apakah Anda yakin ingin menghapusnya?"},resourceTip:"Saat ini, sebagai Blok Sumber Daya, tidak dapat diinstal langsung dari Toko.",whyCantSeeInStore:"Anda dapat menerbitkan Blocklet saat ini di toko, dan dapat digunakan di seluruh dunia",whyCantSeeResourceBlockletInStore:"Anda dapat menerbitkan Blocklet saat ini di toko, dan dapat digunakan di seluruh dunia. Blocklets disembunyikan dari halaman daftar toko secara default.",tenantScope:"Penyewa",blockletStudio:"Blocklet Studio",allComponentsNotRunning:"Blocklets tidak sedang berjalan, harap mulai terlebih dahulu",resourceEmptyTip:"Tidak ada sumber daya yang tersedia",steps:{resources:"Silakan pilih sumber daya yang perlu dikaitkan dengan Blocklet saat ini, karena sumber daya ini akan diinstal bersama dengan Blocklet.",blocklets:"Pilih blocklet yang ingin dikaitkan.",version:"Atur versi rilis dan catatan perubahan.",introduction:"Pengenalan yang jelas dapat efektif dalam menyoroti Blocklet Anda. Anda dapat menggunakan sintaks Markdown untuk menulis dan melihat pratinjau.",branding:"Deskripsikan informasi dasar tentang Blocklet Anda. Informasi ini akan ditampilkan kepada pengguna di toko."},branding:"Branding",brandingHelp:"Informasi lebih lanjut tentang blocklet akan ditampilkan di Toko",resourceSelect:"Pilih sumber dari blocklets",resourceUpload:"Unggah sumber daya dari disk Anda (index.html diperlukan dalam arsip)",deleteStoreTip:"Apakah Anda yakin ingin menghapus {name} dari daftar Toko Koneksi?",disconnectStoreTip:"Setelah terputus, blocklet akan dihapus dari toko. Apa Anda yakin untuk memutuskan?",connectOrUpload:"Hubungkan atau Unggah",developerInfo:"Informasi Pengembang",autoUploadTip:"Mengunggah blocklet ke Store secara otomatis setelah rilis penciptaan",possibleSameStoreTip:"Coba selesaikan blocklet dependensi ke Toko Blocklet yang sama sebelum mengunggah setiap kali memungkinkan",needProjectId:"Silakan membuat proyek terlebih dahulu",projectSettings:"Pengaturan Proyek",noStoreSelected:"Silakan pilih salah satu toko yang ada atau tambahkan toko baru untuk melanjutkan",installToThisServer:"Pasang ke server ini",forceResourceBlocklet:"Gaya didefinisikan sebagai bloklet berbasis sumber daya",resourceDocker:"Bangun Blocklet dari Docker",resourceSelectTitle:"Sumber Daya",resourceUploadTitle:"Unggah",resourceDockerTitle:"Docker",resourceDockerInputTip:"Silakan masukkan perintah docker run",docker:{pleaseInputDockerCommand:"Silakan masukkan perintah docker run",volumeTip:"Volume harus dimulai dengan $BLOCKLET_DATA_DIR atau $BLOCKLET_APP_DIR",volumeTip2:'Volume tidak boleh mengandung ".."',noAllowTheArg:"Argumen tidak diizinkan digunakan dalam perintah docker run",needCustomInput:"Atur nilai saat menginstal blocklet",dockerParams:"Parameter Docker",dockerCommand:"Perintah Docker",dockerImageName:"Nama Docker Image",addItem:"Tambahkan parameter menjalankan Docker",envKey:"Kunci variabel lingkungan",publishTips:"Port eksternal terakhir akan otomatis ditetapkan oleh blocklet",volumeTips:"Volume perlu dimulai dengan $BLOCKLET_DATA_DIR atau $BLOCKLET_APP_DIR",modifyParam:"Ubah parameter menjalankan Docker",modifyEnv:"Ubah Variabel Lingkungan",paramDetail:"Detail Param",description:"Deskripsi",secure:"Aman",shared:"Dibagikan",required:"Diperlukan",prefix:"Prefiks",path:"Jalur",name:"Nama",portType:"Tipe Port",dockerImageNameError:"Nama gambar Docker tidak boleh mengandung spasi",autoGenerated:"Dihasilkan otomatis",dockerCMDError:"Docker CMD hanya mendukung karakter sederhana",proxyBehavior:"Perilaku Proxy",serviceProxy:"Layanan",directProxy:"Langsung",nextTab:"Parse Perintah"},storeRule:{maxImageCount:"Toko ini mengizinkan paling banyak {max} tangkapan layar.",minImageCount:"Toko membutuhkan setidaknya {min} {unit}.",minImageSize:"Ukuran gambar tangkapan layar {name} harus setidaknya {width}x{height}.",logoFormat:"Format gambar logo hanya mendukung [{format}].",warning:"Peringatan",screenshot:"Tangkapan layar",screenshots:"Tangkapan layar",first:"1",second:"Ke-2",third:"Ke-3"},store:"Toko Blocklet",endpoint:{tab:"Blocklet Jarak Jauh",uploadToEndpoint:"Anda dapat mengunggah Blocklet saat ini ke Blocklet yang ditentukan.",addEndpoint:"Tambahkan Endpoint Blocklet",urlEmpty:"URL Endpoint tidak boleh kosong",addFailed:"Gagal menambahkan endpoint Blocklet:",deleteEndpoint:"Hapus Endpoint Blocklet",deleteDesc:'Konfirmasi penghapusan endpoint Blocklet {name}? <br/><span style="color: {color}">*Setelah menghapus endpoint Blocklet ini, Anda tidak dapat memperbarui aplikasi yang diinstal dari endpoint Blocklet ini kecuali Anda menambahkannya lagi.</span>',confirmDesc:"Silakan masukkan {name} untuk menghapus",visitEndpoint:"Kunjungi Blocklet",disconnectEndpointTip:"Apakah Anda yakin ingin memutuskan sambungan {url}? Setelah memutuskan sambungan, Blocklet tidak akan diunggah ke endpoint ini.",deleteFailed:"Gagal menghapus endpoint Blocklet",publishToEndpointSuccess:"Blocklet berhasil dipublikasikan ke Endpoint",uploadToEndpointSuccess:"Blocklet berhasil diunggah ke Endpoint"},autoPublishErrorTip:"Publikasi otomatis ke {storeName} gagal: {error}",singleton:"Hanya satu instance",singletonTip:"Saat mode singleton diaktifkan, aplikasi tidak dapat menjalankan beberapa instansi pada saat bersamaan. Karena aplikasi Anda menggunakan mode singleton, penyebaran blue-green tidak dapat digunakan untuk pembaruan atau restart."},titleValidationError:"Panjang judul harus antara 3 dan 20 karakter",descriptionValidationError:"Panjang deskripsi harus antara 3 dan 80 karakter",whyNeedAppPid:"Jika aplikasi Anda telah dimigrasikan, DID permanen adalah DID yang dihasilkan saat Blocklet ini pertama kali dipasang",usingDocker:"Blocklet ini akan berjalan menggunakan docker",gotoVisitError:"Tidak dapat mengakses URL Blocklet, silakan coba lagi nanti",usingIsolation:"Blocklet ini akan berjalan menggunakan isolasi jaringan",dockerImage:"Dukungan Docker",mountPoint:{description1:"Perubahan ini mungkin akan memecah URL yang berisi titik pemasangan lama, yang dapat menyebabkan:",case1:"Referensi sumber yang rusak antar Blocklets di dalam aplikasi ini",case2:"URL rusak jika Anda telah membagikannya secara publik",description2:"Anda dapat mengatur pengalihan dari titik pemasangan lama ke yang baru untuk meminimalkan kemungkinan perubahan yang mengganggu."},skSourceMigratedTip:"Aplikasi ini diluncurkan dengan dompet yang dikelola server, dan telah bermigrasi ke DID Wallet untuk keamanan yang lebih baik.",skSourceManagedTip:"Aplikasi ini berjalan dengan dompet yang dikelola server, harap migrasi ke DID Wallet sesegera mungkin untuk keamanan yang lebih baik.",zeroDowntime:"Tanpa waktu henti"},dashboard:{nodeDid:"Node",ownerDid:"Pemilik",routingEngine:"Routing Engine",ownerNftURL:"Pemilik NFT",expirationLeft:"Kadaluarsa Sisa",startFromCrashTip:"Server Blocklet tidak keluar secara normal terakhir kali, harap mulai secara manual blocklets yang perlu dijalankan.",runtimeConfig:{blockletMaxMemoryLimit:"Batas Memori Maksimal Blocklet",daemonMaxMemoryLimit:"Batas Maksimal Memori Server"},document:"Pelajari lebih lanjut di dokumentasi kami",database:"Basis data"},store:{nameSort:"Nama",popularSort:"Kepopuleran",headerDescription:"Temukan dan Pasang Blocklets Anda",detail:{purchase:"Membeli {name}",open:"Buka {name}",install:"Pasang {name}",upgrade:"Tingkatkan {name}",empty:"Tanpa perkenalan"},blockletRegistry:{changeFailed:"Gagal Mengubah Toko Blok:",addFailed:"Gagal menambahkan Toko Blocklet: {name}",editFailed:"Gagal mengedit Toko Blocklet",switchRegistry:"Beralih Blok Toko",addRegistry:"Tambahkan Toko Bloklet",editRegistry:"Edit Blocklet Store",deleteRegistry:"Hapus Blocklet Store",haveSameRegistry:"Toko blok yang sama ada",registryName:"Nama Toko Blocklet",registryUrl:"URL Toko Blocklet",registryNameEmpty:"Nama Toko Blocklet tidak boleh kosong",registryUrlEmpty:"URL toko Blocklet tidak boleh kosong",deleteDesc:"Konfirmasi Hapus toko blocklet {name} ?",confirmDesc:"Silakan masukkan {name} untuk menghapus"},purchase:{title:"Beli {name}",confirmed:"Pembelian blok NFT Anda telah diverifikasi",declined:"Anda tidak menyediakan pembelian blocklet NFT yang valid",waiting:"Menunggu pembelian selesai...",purchase:{title:"Pembelian NFT",description:"Bayarlah beberapa token sebelum menginstal blok ini jika Anda belum membeli blok ini"},verify:{title:"Memverifikasi NFT",description:"NFT Anda akan diverifikasi sebelum menginstal blocklet ini jika Anda telah membeli dan memiliki NFT pembelian di Dompet DID Anda",auth:{title:"Pembelian Kredensial Diperlukan",scan:"Hubungkan DID Wallet untuk menyediakan pembelian blocklet NFT",confirm:"Harap tinjau operasi ini di Dompet DID Anda",success:"Pembelian NFT Anda diverifikasi, dan pemasangan telah dimulai"}},auth:{title:"Membeli {name}",scan:"Pindai kode QR berikut dengan Dompet DID Anda",confirm:"Konfirmasi di akun Anda",success:"Pembelian NFT dikirim ke dompet DID Anda"},launch:"Meluncurkan {name}",autoLaunch:"{name} berhasil membeli, mengalihkan ke halaman peluncuran..."},tooltip:{upgradeServer:"Blocklet memerlukan Blocklet Server versi {version}, Versi Blocklet Server saat ini adalah {serverVersion}"}},setting:{saveSuccess:"Pengaturan berhasil disimpan",unSavedTip:'Ada perubahan yang belum disimpan, klik "Simpan Perubahan" untuk menyimpannya.',unSavedLeaveTip:"Terdapat perubahan yang belum disimpan, apakah Anda yakin ingin meninggalkan halaman ini?",form:{name:"Nama Server Anda",nameRequired:"Deskripsi server diperlukan",namePlaceholder:"Nama server",description:"Deskripsikan server Anda",descriptionHolder:"Deskripsi server",descriptionRequired:"Deskripsi server diperlukan",domain:"Nama Domain Server Anda",domainPlaceholder:"Nama Domain Server",domainRequired:"Domain server diperlukan",ipPlaceholder:"IP",ipRequired:"IP diperlukan",registry:"Toko Blocklet",registryPlaceholder:"Toko Blocklet untuk mengambil blocklet",registryRequired:"Toko Blocklet diperlukan",registerUrl:"URL Blocklet Launcher",registerUrlPlaceholder:"Masukkan URL Blocklet Launcher pilihan Anda, Anda dapat menggunakannya dengan aman",webWalletUrl:"URL Dompet DID",webWalletUrlPlaceholder:'Silakan masukkan URL dompet "DID" yang dihosting Anda, Anda bisa menggunakannya dengan aman',nftDomainUrl:"URL Domain NFT",nftDomainUrlPlaceholder:'Silakan masukkan URL "NFT Domain" yang Anda host, Anda dapat menggunakannya dengan aman',enableWelcomePage:"Aktifkan halaman selamat datang",welcome:{switchLabel:"Halaman Selamat Datang"},upgrade:{title:"Tingkatkan Server Blocklet menjadi versi {version}",description:"Selama peningkatan, server Blocklet Anda akan masuk ke mode perawatan selama beberapa menit saat pembaruan selesai.",dialog:'Klik "konfirmasi" untuk menginstal pembaruan. Blocklet Server akan masuk ke mode pemeliharaan hingga pembaruan selesai dan secara otomatis kembali ke mode produksi.',confirm:"Upgrade",switchLabel:"Periksa Pembaruan Otomatis",enableBetaRelease:"Aktifkan Rilis Beta",setup:"Menyiapkan peningkatan",installing:"Memasang server Blocklet v{version}",restarting:"Memulai Ulang Server Blocklet",cleanup:"Migrasi data Blocklet Server",verifying:"Memverifikasi server Blocklet v{version}",rollback:"Server Blocklet Rollback",complete:"Pembaruan selesai!",progress:"Mengupgrade {name}",check:"Periksa Pembaruan",latest:"Anda menggunakan versi terbaru."},restart:{title:"Mulai ulang server Blocklet",description:"Selama proses restart, server Blocklet akan masuk ke mode pemeliharaan sampai restart selesai.",dialog:'Klik "konfirmasi" untuk me-restart. Server Blocklet akan masuk ke dalam mode perawatan hingga restart selesai dan kembali ke mode produksi secara otomatis.',confirm:"Mulai Ulang",setup:"Mempersiapkan restart",verifying:"Memverifikasi Server Blocklet",restarting:"Memulai Ulang Server Blocklet",cleanup:"Pastikan semuanya baik-baik saja",rollback:"Bersihkan keadaan kotor",complete:"Pertahankan lengkap!",progress:"Memulai ulang {name}"},register:{title:"Daftar di Blocklet Launcher",description:"Setelah ditambahkan, Anda dapat meluncurkan blocklets ke server blocklet ini dari {url}.",button:"Daftar"},monitor:{diskThreshold:"Kirim peringatan ketika penggunaan disk melebihi (%)",diskThresholdPlaceholder:"Tolong atur ambang batas peringatan penggunaan disk"},security:{switchLabel:"Pengasingan Sistem File",switchTips:"Setelah menonaktifkan opsi ini, sistem file dari Blocklet tidak akan lagi dalam isolasi, yang dapat menimbulkan risiko perangkat lunak berbahaya merusak sistem file.",warningTips:"Fitur isolasi sistem file tidak dapat diterapkan. Silakan tingkatkan versi node.js (versi saat ini adalah {version}) ke v21.6.0 atau yang lebih tinggi."},docker:{switchLabel:"Menjalankan Blocklets di dalam Kontainer",switchTips:"Setelah mengaktifkan opsi ini, blocklets akan dijalankan menggunakan kontainer, yang dapat meningkatkan keamanan keseluruhan server.",notInstalled:"Tidak dapat mengaktifkan jalankan kontainer karena Docker tidak terinstal atau tidak memiliki izin yang diperlukan untuk mengeksekusi.",needCloseFileSystemIsolation:"Isolasi sistem file dan mode kontainer docker tidak dapat diaktifkan secara bersamaan"},dockerNetwork:{switchLabel:"Isolasi Jaringan Kontainer",switchTips:"Setelah mengaktifkan opsi ini, blocklet berjalan dengan cara yang lebih aman: blocklet tidak dapat mengakses server blocklet atau blocklet lain di seluruh aplikasi.",needEnableDocker:"Mode kontainer harus diaktifkan untuk mengaktifkan isolasi jaringan"},restartAllContainers:{title:"Mulai Ulang Semua Kontainer",description:"Mulai ulang semua container dan pertahankan blocklets berjalan.",dialog:'Klik "konfirmasi" untuk memulai ulang semua blocklets kontainer dan mempertahankan status blocklets berjalan.',confirm:"Mulai ulang",setup:"Mempersiapkan untuk memulai ulang",verifying:"Memverifikasi Server Blocklet",restarting:"Memulai ulang semua kontainer di latar belakang",cleanup:"Pastikan semuanya OK",rollback:"Bersihkan keadaan kotor",complete:"Pemeliharaan selesai!",progress:"Memulai ulang semua kontainer di latar belakang"},restartAllBlocklet:{title:"Mulai ulang semua Blocklets",description:"Mulai ulang semua Blocklets yang sedang berjalan atau error di server ini.",dialog:'Klik "konfirmasi" untuk memulai ulang semua blocklets di latar belakang.',confirm:"Mulai ulang",setup:"Menyiapkan restart",verifying:"Memverifikasi Blocklet Server",restarting:"Memulai ulang semua Blocklets yang berjalan atau error di latar belakang",cleanup:"Pastikan semuanya OK",rollback:"Bersihkan state yang kotor",complete:"Pemeliharaan selesai!",progress:"Memulai ulang semua Blocklets yang sedang berjalan atau mengalami error di latar belakang"},enableSessionHardening:{switchLabel:"Aktifkan Pengerasan Sesi",switchTips:"Setelah mengaktifkan opsi ini, operasi mutasi akan memerlukan verifikasi ketat, yang dapat meningkatkan keamanan server secara keseluruhan."}},accessKey:{accessKeyId:"ID Kunci Akses",lastUsed:"Terakhir digunakan pada",tip:"Masukkan nama untuk kunci akses ini",saveSecretTip:"Ini adalah satu-satunya waktu di mana kunci rahasia Akses Anda dapat dilihat dan tidak dapat dipulihkan. Namun, Anda dapat membuat kunci akses baru kapan saja.",iKnow:"Saya telah menyalin dan menyimpan Kunci Akses Rahasia",showSecret:"Tampilkan Kunci Akses Rahasia",hideSecret:"Sembunyikan Rahasia",title:"Hapus Kunci Akses",descriptionNoTime:"Ini akan menghapus secara permanen kunci akses {key} dengan nama {name}, yang belum pernah digunakan sebelumnya",description:"Ini akan menghapus kunci akses {key} dengan nama {name} secara permanen, yang terakhir digunakan pada {time}, {timeAge}",confirm_desc:"Silakan masukkan {name} untuk menghapus",remark:"Nama Kunci Akses",remarkInvalid:"Nama Kunci Akses diperlukan",passport:"Pilih paspor untuk kunci akses untuk memberikan atau membatasi izin",expireTime:"Tetapkan tanggal kedaluwarsa untuk kunci akses demi keamanan yang lebih baik",authType:"Jenis Autentikasi",resourceType:"Jenis Sumber Daya",resourceId:"ID Sumber Daya",component:"Komponen",expired:"{time} berakhir",accessKeySecret:"Kunci Akses Rahasia",simple:"Sederhana",signature:"Tanda tangan",signatureDesc:"Standar keamanan tingkat perusahaan menggunakan kriptografi. Membutuhkan integrasi kode dengan SDK (@blocklet/server-js), ideal untuk skenario dengan persyaratan keamanan tinggi dan transmisi data kritis",simpleDesc:"Mekanisme Token Bearer yang ringan, mirip dengan OpenAPI Key, mendukung panggilan API RESTful dan integrasi layanan pihak ketiga. Tidak perlu pengkodean, integrasi cepat melalui Header HTTP, sempurna untuk pengembangan cepat",viewSecret:"Anda dapat mengakses kunci rahasia nanti di halaman detail kunci akses",usage:"Penggunaan",listTitle:"Kelola akses API yang aman dengan Kunci Akses",tooltipTitle:"Buat dan kelola kredensial yang memungkinkan sistem tepercaya untuk berinteraksi dengan aplikasi Anda secara terprogram. Kunci akses memungkinkan otomatisasi yang aman dan integrasi yang lancar di seluruh alat dan layanan Anda."},webhook:{add:"Tambahkan Integrasi",delTitle:"Hapus Integrasi",requiredError:"Silakan berikan {type} yang valid",confirm_desc:"Silakan masukkan {name} untuk menghapus",test:"Tes",description:"Ini akan menghapus integrasi dengan ID {id} secara permanen",columns:{description:"Halo, ID",params:"Parameter",createdAt:"Dibuat pada"},testSuccess:"Pesan uji berhasil dikirim",duplicateError:"URL sudah ada",updateSuccess:"Status berhasil diperbarui"},dns:{step1Title:"Masuk ke registrar domain Anda",step1Desc1:"Masuk ke registrar domain Anda, temukan halaman manajemen domain, dan temukan halaman pengaturan nama server. Anda dapat mencari registrar domain Anda di",step2Title:"2. Temukan pengaturan DNS untuk {url}",step2Desc:'Ini mungkin disebut "Manajemen DNS", "Pengaturan lanjutan", atau yang serupa.',step3Title:"3. Tambahkan catatan DNS berikut",step3Desc:'Nama mungkin disebut "host", "hostname", atau "alias"'},domain:{addingDomain:"Menambahkan domain...",checkingResolvable:"Memeriksa status domain...",cannotResolve:"{domain} tidak dapat diurai, periksa konfigurasi DNS Anda",resolvedAddressError:"{domain} belum dikonfigurasi dengan benar dengan catatan CNAME yang menunjuk ke {curDomain}",invalidDNSReminder:"{error}. Namun, Anda dapat terus menambahkan domain, tetapi pembuatan sertifikat otomatis tidak tersedia.",continueAdd:"Lanjutkan Menambahkan",conflictTitle:"{domain} sudah digunakan",conflictDescription:'{domain} sudah digunakan oleh "{title}". Dengan mengklik konfirmasi, domain akan dihapus dari "{from}" dan ditambahkan ke "{to}".'},aigne:{modelAdapter:"Penyedia Model",modelName:"Nama Model",desc:{modelAdapter:"Platform yang menyediakan layanan model AI",modelName:"Versi model spesifik atau nama model",key:"Kunci API {provider} digunakan untuk autentikasi",baseUrl:"Masukkan URL instance AIGNE Hub Anda (misal, https://hub.aigne.io). Gunakan milik Anda jika self-hosting.",accessKeyId:"ID kunci unik untuk mengakses model",secretAccessKey:"Kunci rahasia yang dipasangkan dengan ID kunci akses",docLink:"Lihat dokumentasi resmi untuk detail lebih lanjut dan referensi API"},failed:"Gagal menyimpan konfigurasi AIGNE",authorizeAigneHub:"Terhubung ke {name}",baseUrl:"URL Hub AIGNE",disconnect:"Putuskan",disconnectConfirm:"Apakah Anda yakin ingin memutuskan koneksi dari AIGNE Hub? Ini akan menghapus konfigurasi AI saat ini.",disconnectSuccess:"Berhasil terputus dari AIGNE Hub",disconnectFailed:"Gagal memutuskan koneksi dari AIGNE Hub",testConnection:"Uji koneksi {provider}",invalidUrl:"URL {provider} tidak valid",description:"Konfigurasi saat ini akan berlaku saat {name} berjalan. Perlu menyimpan dan memulai ulang Blocklet agar berlaku.",revokeUrlAuthTitle:"Konfirmasi perubahan {url}?",revokeUrlAuth:"Anda yakin ingin mengubah {url}? Setelah diubah, otorisasi Anda akan tidak berlaku dan perlu diotorisasi ulang!",testSuccess:"Terhubung dengan sukses ke AIGNE Hub",check:"Periksa",apiKeyNotAuthorized:"Kunci API tidak diizinkan. Silakan klik tombol hubungkan ke AIGNE Hub untuk mengizinkannya",switchUser:"Ganti Pengguna",connectTimeOut:"Koneksi ke {provider} habis waktu, silakan coba lagi nanti",restart:{title:"Mulai ulang Blocklet",connectedContent:"Blocklet Anda saat ini terhubung ke {provider}. Konfigurasi akan berlaku setelah restart. Ingin restart sekarang?",notConnectedContent:"Blocklet Anda saat ini terputus dari {provider}. Konfigurasi akan berlaku setelah restart. Ingin restart sekarang?",confirm:"Mulai Ulang Sekarang",cancel:"Mulai Ulang Nanti"},testFailed:"Tidak dapat terhubung ke AIGNE Hub. Periksa URL atau jaringan Anda.",addCredits:"Beli Kredit",transaction:"Transaksi",connected:"Berhasil terhubung",account:"Informasi Akun",pendingCredit:"Tagihan Tertunggak",infinite:"Tidak Terbatas",config:"Konfig AIGNE Hub"}},notification:{title:"Pemberitahuan",history:"Riwayat",channelSettings:"Pengaturan saluran",empty:"Belum ada kegiatan",viewAll:"Lihat Semua",showRead:"Tampilkan Baca",markAllAsRead:"Tandai Semua sebagai Sudah Dibaca",markAsRead:"Tandai sebagai Sudah Dibaca",proceed:"Lanjutkan",checkingForUpdates:"Memeriksa pembaruan...",email:{enable:"Aktifkan notifikasi",from:"Pengirim Email",host:"Host Server SMTP",port:"Port Server SMTP",user:"Nama pengguna SMTP",secure:"Koneksi Aman",password:"Kata Sandi SMTP",fromRequired:"Pengirim email diperlukan",fromInvalid:"Pengirim email tidak valid",receiverRequired:"Penerima email diperlukan",receiverInvalid:"Penerima email tidak valid",hostRequired:"Host server SMTP diperlukan",hostInvalid:"Host server SMTP tidak valid",portRequired:"Port server SMTP diperlukan",portInvalid:"Port server SMTP tidak valid, port harus antara 1 dan 65535",userRequired:"Nama pengguna server SMTP diperlukan",passwordRequired:"Password pengguna server SMTP diperlukan",testSuccess:"Pengiriman email uji berhasil",testFailed:"Gagal mengirim email percobaan",testReceiver:"Penerima Email",testSendEmail:"Test kirim email",inputTestReceiver:"Silakan masukkan email penerima pengujian",disable:"Berhenti langganan pemberitahuan email",disableDescription:"Setelah berhenti berlangganan, Anda tidak akan menerima pemberitahuan melalui email lagi. Untuk menerima pemberitahuan melalui email, Anda dapat berlangganan kembali di halaman ini.",unsubscribe:"Batalkan pemberitahuan melalui email",unsubscribeDescription:"Setelah berhenti langganan, Anda tidak akan lagi menerima pemberitahuan melalui email.",subscribe:"Berlangganan",subscribeDescription:"Untuk menerima pemberitahuan melalui email, Anda dapat mengikuti langkah-langkahnya kembali di halaman pengaturan.",companyName:"Nama Perusahaan",companyLink:"Tautan Perusahaan",companyAddress:"Alamat Perusahaan",supportEmail:"Email Dukungan",emailInvalid:"Email tidak valid",linkInvalid:"Tautan tidak valid, harus dimulai dengan http atau https",signature:"Tanda tangan",signatureTooltip:"Tanda tangan email digunakan di bagian bawah untuk memberikan informasi penting kepada penerima tentang pengirim."},wallet:{description:"Notifikasi Wallet DID selalu diaktifkan untuk semua pengguna."},webhooks:{description:"Notifikasi yang dikirim melalui webhooks selalu diaktifkan untuk semua pengguna."},comingSoon:"Lebih banyak saluran pemberitahuan sedang dalam konstruksi",unsubscribe:"Berhenti berlangganan",unsubscribeSucceed:"Berhenti berhasil",unsubscribeFailed:"Berhenti berlangganan gagal",unsubscribeTokenRequired:"Token berhenti berlangganan diperlukan",unsubscribeTokenExpired:"Token berhenti langganan telah kedaluwarsa",unsubscribeTokenInvalid:"Token berhenti berlangganan tidak valid",installComponentError:"Komponen {name} yang telah dihapus tidak ditemukan",installingComponent:"Menginstal komponen {name}",pushKit:{enable:"Aktifkan notifikasi",endpoint:"PushKit endpoint",endpointInvalid:"Endpoint PushKit adalah URL yang tidak valid",testSuccess:"Uji Coba PushKit terkirim dengan sukses",testFailed:"Uji coba PushKit kirim gagal",testReceiver:"Penerima PushKit",testSend:"Uji coba kiriman push-kit",inputTestReceiver:"Masukkan penerima uji",receiverRequired:"Diperlukan penerima PushKit",pushPath:"Jalur api untuk push-kit (default /api/push)",did:"PushKit Blocklet DID",customOptions:"Opsi Kustom"},notificationDetails:"Detail Notifikasi",receiver:"Penerima",sendStatus:{success:"Terkirim",failed:"Gagal",sentTime:"Dikirim pada: {date}",pending:"Tertunda",reason:{enabled:"Pengguna telah mengaktifkan notifikasi {channel}",disabled:"Pengguna belum mengaktifkan notifikasi {channel}",unavailable:"Blocklet saat ini belum mengonfigurasi notifikasi {channel}",available:"Blocklet saat ini telah mengonfigurasi notifikasi {channel}",notSent:"Pesan saat ini belum dikirim ke {channel}",offline:"Pengguna sedang offline"},count:"{count}",total:"Total"},filter:"Saring",notificationPreview:"Pratinjau Notifikasi",resend:"Kirim ulang",resendLimit:"Anda dapat mengirim ulang notifikasi hingga tiga kali sehari.",from:"Dari",to:"Ke",body:"Tubuh",notificationTitle:"Judul",createdAt:"Dibuat pada",status:"Status",system:"Sistem",severity:"Keparahan",config:"Configs",selectChannels:"Pilih Saluran",selectChannelsTip:"Pilih saluran untuk mengirim ulang",resendFailedOnly:"Kirim ulang hanya ke saluran yang gagal",statistics:"Statistik",allSender:"Semua Pengirim",allSeverity:"Semua Tingkat Keparahan",severityType:{info:"Info",success:"Sukses",warning:"Peringatan",error:"Kesalahan"},clear:"Bersihkan",allDone:"Selesai",filterType:{all:"Semua",unread:"Belum dibaca"},viewMore:"Lihat Lagi"},router:{routerSetting:"Domain dan URL",certSetting:"Sertifikat SSL",defaultSite:"Default",urlHelperText:"URL yang tidak dimulai dengan HTTP/HTTPS dianggap sebagai jalur relatif",empty:"Klik pada Aksi untuk mengatur Pemetaan URL",healthy:{ok:"Blocklet atau layanan sedang berjalan",error:"Blocklet atau layanan tidak berjalan atau tidak terpasang"},service:{select:"Pilih Layanan Blocklet (Opsional)",what:"Layanan Blocklet adalah pipa yang dieksekusi terhadap permintaan sebelum dialihkan ke blocklet hulu"},nonProvider:{title:"Peringatan Penggantian Mesin",description:"Jika Anda mengubah mesin menjadi tidak ada, halaman Anda saat ini mungkin tidak berfungsi dengan baik karena mesin sebelumnya akan berhenti, apakah Anda yakin ingin melanjutkan?",confirm:"Saya mengerti, lanjutkan"},validation:{urlRequired:"URL diperlukan",redirectCodeRequired:"Kode pengalihan diperlukan",didRequired:"Blocklet diperlukan",pathPrefixTooLong:"Awalan URL tidak boleh melebihi {length} karakter",pathPrefixCannotBeEmpty:"Awalan URL tidak boleh kosong",domainRequired:"Domain server diperlukan",invalidUrl:"Silakan berikan URL yang valid",pathPrefixRequired:"Awalan URL diperlukan",redirectUrlRequired:"URL Redirect diperlukan",rewriteUrlRequired:"Rewrite URL diperlukan"},domain:{addSite:"Tambahkan Situs",validate:{emptyTip:"Domain situs tidak boleh kosong",suffixTip:"Domain situs tidak bisa mengandung {suffix}"},add:{title:"Tambahkan Nama Domain",description:"Silakan berikan nama domain yang valid",confirm:"Tambahkan",cancel:"Batal",blocklet:"Pilih Blocklet",redirect:"Kemana harus mengalihkan lalu lintas?",port:"Di pintu apa yang handler permintaan Anda perlu mendengarkan?",portTip:"Ini mengembalikan port utama dari pengelola permintaan, Anda dapat menyesuaikan ini",type:"Penangan Lalu Lintas",component:"Pilih Komponen",pageGroup:"Grup Halaman",pageGroupTip:"Komponen ini dapat merender kelompok halaman apa pun yang terdaftar di atas, kosongkan untuk merender semua halaman"},update:{title:"Perbarui Domain Situs",label:"Domain Situs",description:"Harap berikan domain situs yang valid"},setup:{tipStart:"Tambahkan catatan DNS untuk domain",tipEnd:"Menurut panduan berikut",recordType:"Jenis Rekaman",recordValue:"Nilai Rekaman"},verify:{ok:"Resolusi domain normal",notResolved:"Domain ini tidak bisa terjangkau maupun diakses, silakan periksa konfigurasi DNS Anda."},https:{ok:"Domain ini memiliki https diaktifkan",bad:"Domain ini belum mengaktifkan https"},delete:{title:"Hapus Situs",description:'Dengan mengkonfirmasi, Anda akan menghapus situs "{name}" yang sudah ada. Ketikkan "{name}" di bawah ini dan pilih Hapus untuk menyelesaikan perubahan, atau pilih Batal jika Anda ingin meninggalkan situs Anda.',confirm_desc:"Tolong masukkan {name} untuk mengkonfirmasi"}},domainAlias:{nftDomain:"Konfigurasi otomatis dengan Nama DID",showTipHint:"Bagaimana cara mengkonfigurasi resolusi nama domain?",add:{title:"Tambahkan Domain Tambahan",domainDescription:"Silakan berikan nama domain yang valid",forceTip:"Mengeksekusi tambahan jika nama domain sudah ada",helperText:"Jika URL HTTP atau HTTPS dimasukkan, itu akan secara otomatis dikonversi menjadi nama domain.",isDidDomainError:"Domain ini adalah Domain DID. Silakan tambahkan menggunakan metode konfigurasi domain otomatis.",tips:"Anda dapat memasukkan nama domain yang dibeli dari DID Names atau domain lainnya. Jika itu adalah Domain DID, Anda harus menunjukkan NFT Domain DID untuk melanjutkan."},addCustomDomain:{name:"Domain khusus"},addDomainNFT:{showNFT:"Konfigurasi domain secara otomatis",tips:"Anda dapat memasukkan domain yang dibeli dari DID Names. Jika Domain DID terdeteksi, Anda harus menunjukkan NFT Domain DID untuk melanjutkan.",connect:{scan:"Gunakan salah satu metode berikut untuk menghubungkan {domain} ke {appName}",confirm:"Konfirmasi di akun Anda",success:"Otorisasi berhasil",title:"Hubungkan Nama DID ke {appName}"},buyTip:"Nama DID akan melakukan resolusi nama domain secara otomatis, tidak perlu mengkonfigurasi secara manual, dan blocklet akan memperbarui catatan resolusi nama domain secara otomatis bila diperlukan. Jika Anda belum memiliki DID Domain NFT, ",buy:"Beli Domain DID",topLevelDidDomainHint:"Untuk Domain DID, jika Anda memasukkan domain tingkat atas (misalnya example.com), domain tersebut akan secara otomatis dikonfigurasi sebagai www.example.com",authorizeFailed:"Gagal mendapatkan info NFT domain, silakan coba lagi!"},delete:{title:"Hapus",description:'Setelah menghapus "{domain}", akses ke alias tersebut mungkin tidak berfungsi dengan baik.',confirmPlaceholder:'Masukkan "{domain}" untuk menghapus'},custom:"Domain kustom",noCustom:"Tidak ada domain khusus",noCustomTip:"Tidak ada domain khusus yang dikonfigurasi dengan situs web Anda. Untuk keamanan yang lebih baik dan pengalaman pengguna yang lebih baik, kami sarankan untuk mengkonfigurasi domain khusus Anda sendiri. Klik di bawah ini untuk memulai."},domainSecurity:{title:"Keamanan Domain",cors:{title:"Domain CORS yang diperbolehkan",description:'Daftar domain yang dapat mengirimkan permintaan asal lintas ke {name}, dipisahkan dengan koma, gunakan "*" untuk mengizinkan siapa pun, yang tidak disarankan',domainInvalid:"Silakan masukkan daftar nama domain yang valid"}},rule:{add:{title:"Tambahkan Pemetaan URL",confirm:"Tambah",pathPrefix:"Apa Awalan URL?",pathPrefixTip:"Jika Anda mengatur awalan menjadi '/awalan-saya', maka semua permintaan yang dimulai dengan awalan tersebut akan diarahkan ke blok yang dikonfigurasi",blocklet:"Blocklet mana yang akan menangani permintaan tersebut?",port:"Port mana dari blocklet yang akan menangani permintaan?",portTip:"Ini menjadi port utama blocklet, jika blocklet Anda mendengarkan di beberapa port, Anda dapat menyesuaikannya",responseType:"Tipe Respons",responseBody:"Konten Tanggapan",responseBodyTip:"Tempelkan konten respon Anda di sini, tidak boleh melebihi 4096 karakter",responseBodyRequired:"Konten respons tidak boleh kosong"},delete:{title:"Hapus Pemetaan URL",description:'Dengan mengkonfirmasi, Anda akan menghapus Pemetaan URL "{name}" yang ada. Ketik "{name}" di bawah ini dan pilih Hapus untuk menyelesaikan perubahan, atau pilih Batal jika Anda ingin meninggalkan Pemetaan URL Anda.',confirm_desc:"Silakan masukkan {name} untuk menghapus",cancel:"Batalkan"},update:{title:"Perbarui Pemetaan URL",confirm:"Ya, Perbarui",cancel:"Batal"}},cert:{name:"Nama Sertifikat",domain:"Nama Domain",action:"Aksi",commonName:"Nama Umum",boundDomains:"Domain",source:"Sumber",expired:"Kedaluwarsa",leftDays:"hari tersisa",issuedOn:"Dikeluarkan pada",expiryOn:"Berlaku hingga",fingerprintAlg:"Algoritma Sidik Jari",validityPeriod:"Periode Validitas",matchedSites:"Situs yang Cocok",upload:"Unggah Manual",publicCertHelperText:"Sertifikat publik dapat diunduh",nonPublicCertHelperText:"Sertifikat non-publik tidak dapat diunduh",protectedCertHelperText:"Sertifikat yang dilindungi tidak dapat diedit",unprotectedCertHelperText:"Sertifikat yang tidak terlindungi dapat diedit",issuing:"Sertifikat sedang dibuat",sourceTypes:{upload:"Unggah Manual",lets_encrypt:"Mari Enkripsi"},table:{nodata:"Tidak ada data"},delete:{title:"Hapus Sertifikat",description:"Konfirmasi untuk menghapus sertifikat domain {domain}? Penghapusan bisa memengaruhi layanan terkait. Konfirmasikan bahwa itu aman sebelum melanjutkan penghapusan.",confirm:"Konfirmasi"},nginx:{title:"Perbarui Sertifikat",titleAdd:"Tambahkan Sertifikat",pem:"Berkas Sertifikat SSL",pemTip:'Silakan tinggalkan file sertifikat server Anda di sini, harus diakhiri dengan ".pem" atau ".crt"',key:"File Kunci Privat",keyTip:"Silakan seret file kunci pribadi server Anda di sini, harus berakhir dengan '.pem' atau '.key'",confirm:"Simpan",cancel:"Membatalkan",invalidFile:"Anda telah memilih file yang tidak valid",empty:"Belum ada file yang dipilih",source:"Sumber",sourceTypes:{upload:"Upload Manual",lets_encrypt:"Mari Enkripsi"}},detail:{title:"Rincian Sertifikat"},genLetsEncryptCert:{title:"Menghasilkan sertifikat Let's Encrypt",dnsTip:"Mohon pastikan nama domain telah mengarah ke server Blocklet saat ini.",description:"Menambahkan sertifikat akan menjadikan layanan lebih aman, dan Blocklet Server akan memperbaharui sertifikat secara otomatis sebelum masa berlakunya habis."}},gateway:{reqLimit:{switchLabel:"Aktifkan pembatasan permintaan konkuren untuk kinerja yang andal",rate:"Batasi permintaan bersamaan per IP hingga {rate} per detik (batas per IP)",title:"Pembatasan permintaan",global:"Batasi permintaan bersamaan yang ditangani oleh gateway hingga {global} per detik (batas global)",burstFactor:"Faktor ledakan untuk pembatasan laju, diterapkan pada batas global dan per-IP (global: {global}, per-IP: {rate})",methods:"Batasi permintaan bersamaan per IP untuk metode berikut",burstDelay:"Keterlambatan ketika permintaan membludak dan melebihi batas per-IP ({delay} detik)"},cacheEnabled:{switchLabel:"Aktifkan cache gateway untuk meningkatkan performa",title:"Cache Gateway"},blockPolicy:{switchLabel:"Pemblokiran Permintaan",addItem:"Tambah Item",blacklistDesc:"Permintaan dari IP ini akan diblokir dari mengakses Server ini dan semua Blocklets",inputPlaceholder:"Masukkan alamat IP, rentang CIDR, atau URL",invalidItem:"Alamat IP, rentang CIDR, atau URL tidak valid",title:"Pemblokiran Permintaan",autoBlocking:{switchLabel:"Blokir permintaan buruk dengan deteksi secara real-time",windowSize:"Ukuran jendela waktu untuk menghitung permintaan (detik)",windowQuota:"Jumlah permintaan maksimum (per IP) yang diizinkan dalam jendela",blockDuration:"Durasi untuk memblokir pengguna berdasarkan IP ketika kuota terlampaui dalam jendela (detik)",statusCodes:"Kode status untuk diperiksa"}},proxyPolicy:{switchLabel:"Menjalankan di belakang proxy",trustRecursive:"Percayakan proksi secara rekursif",trustRecursiveDesc:"Gunakan IP paling kiri dalam rantai X-Forwarded-For",trustedProxies:"Proxy Terpercaya",trustedProxiesDesc:"Permintaan dari IP ini akan dipercaya untuk mendapatkan IP asli klien",realIpHeaderLabel:"Header IP Klien",realIpHeaderDesc:"Jika Server Blocklet berjalan di belakang proxy seperti CloudFront, Anda dapat mengatur header IP asli klien di sini.",addItem:"Tambah item",inputPlaceholder:"Masukkan alamat IP, rentang CIDR",invalidItem:"Alamat IP tidak valid, rentang CIDR",title:"Kebijakan Proxy"},wafPolicy:{switchLabel:"Deteksi dan blokir permintaan buruk dengan ModSecurity",modeDesc:"Mode modsecurity (modul modsecurity diperlukan)",mode:{detectOnly:"Deteksi saja (tidak akan memblokir permintaan)",on:"Aktif (akan memblokir permintaan)"},logLevelDesc:"Tingkat log untuk ModSecurity (0-9), 0 berarti menonaktifkan audit log",inboundAnomalyScoreThresholdDesc:"Ambang batas skor anomali masuk (1-100), nilai lebih rendah berarti lebih ketat",outboundAnomalyScoreThresholdDesc:"Ambang batas skor anomali keluar (1-100), nilai lebih rendah berarti lebih ketat",docDesc:"Periksa dokumentasi untuk cara mengatur modsecurity",title:"Firewall Aplikasi Web"}}},noMatch:{desc:"Kami tidak dapat menemukan halaman yang Anda cari"},health:{connectionErrorTip:"Blocklet Server tidak dapat terhubung ke jaringan, harap periksa apakah Blocklet Server sudah berhenti atau ada masalah jaringan",connectionRecoveryTip:"Koneksi Server Blocklet telah pulih",connectionStoppedTip:"Server Blocklet telah dihentikan",wrongAccessUrlTip:"Alamat akses Server Blocklet salah, harap gunakan alamat akses yang benar"},debug:{title:"Server Blocklet Anda sedang berjalan!"},team:{invite:{action:"Undang Baru",setting:"Pengaturan Undangan",enabled:"Nonaktifkan pengaturan ini untuk membatasi undangan pengguna baru hanya untuk pemilik/admin",disabled:"Aktifkan pengaturan ini untuk mengizinkan pengguna mana pun mengundang pengguna baru",inviter:"Diundang Oleh"},add:"Tambah Baru",member:{name:"Nama",passport:"Paspor",passports:"Paspor",lastLogin:"Login terakhir",lastLoginIp:"IP login terakhir",source:"Daftar Sumber",source_derived:"Berasal dari OAuth",source_wallet:"Dompet DID",filter:"Filter berdasarkan",blockAccess:"Melarang masuk",blockAccessDescription:"Pengguna tidak akan dapat terhubung ke aplikasi ini",allowAccess:"Izinkan Login",allowAccessDescription:"Pengguna akan dapat terhubung ke aplikasi ini",updateRole:"Perbarui Peran",removeUser:"Hapus Pengguna",removeUserDescription:'Konfirmasi menghapus pengguna "{name}"?',revokePassport:"Mencabut Paspor",revokePassportDescription:"Setelah paspor dicabut, pemegang paspor tidak dapat menggunakannya lagi untuk masuk, apakah Anda yakin untuk melanjutkan?",enablePassport:"Aktifkan Paspor",enablePassportDescription:"Setelah paspor yang dicabut diaktifkan kembali, pemegang paspor dapat menggunakannya untuk masuk kembali, apakah Anda yakin ingin melanjutkan?",passportPermissionTitle:"Paspor memiliki izin berikut:",search:"Cari Anggota",onlyApprovedMember:"Tampilkan Hanya yang Disetujui",inviteDialog:{createInviteLink:"Buat tautan undangan",createSuccessTip:"Link undangan berhasil dibuat, klik untuk menyalin dan kirimkan link kepada anggota yang diundang. Harap perhatikan bahwa link undangan ini tidak dapat digunakan ulang dan akan kedaluwarsa pada {expireDate}."},error:{passportEmpty:"Kolom paspor tidak boleh kosong"},connectedAccounts:"Akun yang Terhubung",connections:"Koneksi",federated:"Federasi",switch:{did:"Ganti DID",profile:"Ganti Profil",passport:"Ganti Paspor"},settings:{notification:"Pemberitahuan",email:"Kirim email kepada saya ketika ada beberapa peristiwa terjadi",wallet:"Kirim pemberitahuan ke dompet saya ketika beberapa peristiwa terjadi",phone:"Kirim pesan teks kepada saya saat beberapa peristiwa terjadi",webhook:"Webhooks",add:"Tambah webhook baru",url:"URL kustom",slack:"Slack Webhook",tested:"Pesan uji terkirim"},activeUserSessions:"Sesi Pengguna Aktif",forceLogout:"Keluar paksa",forceLogoutDescription:"Konfirmasi untuk logout paksa pengguna ini?",openProfile:"Lihat Profil",removeUserSuccess:"Pengguna berhasil dihapus",forceLogoutRemoveDescription:"Konfirmasi untuk memaksa logout pengguna ini (Juga hapus semua sesi pengguna)?",currentOwner:"Pemilik Saat Ini"},transferNode:{name:"Pindahkan Kepemilikan",inviteDialog:{title:"Transfer Server Blocklet",tips:{progress:"Pemindahan server harus diterima oleh penerima untuk menyelesaikan operasi pemindahan, dan setelah penerima menerimanya, Anda tidak dapat masuk ke server dengan paspor saat ini lagi.",newOwnerPermissions:"Pemilik baru akan memiliki hak untuk mengelola semua operasi seperti anggota, paspor, dan Blocklets.",revoke:'Jika Anda ingin menarik undangan transfer, Anda dapat menghapus tautan undangan di halaman "Tim -> Anggota -> Mengundang".'},createInviteLink:"Buat Tautan Undangan",createSuccessTip:"Tautan undangan telah berhasil dibuat, klik untuk menyalin dan mengirimkan tautan ke anggota yang diundang, harap perhatikan bahwa tautan undangan ini tidak dapat digunakan kembali dan akan berakhir pada {expireDate}."},delegateDialog:{title:"Otorisasi Diperlukan",scan:"Gunakan metode berikut untuk mengotorisasi server untuk mentransfer NFT kepemilikan server.",confirm:"Konfirmasi di akun Anda",success:"Otorisasi berhasil"}},transferApp:{name:"Transfer Milik",transferDialog:{title:"Aplikasi Transfer",tips:{progress:"Aplikasi transfer harus diterima oleh penerima untuk menyelesaikan operasi transfer, dan setelah penerima menerimanya, Anda tidak dapat masuk ke aplikasi dengan paspor saat ini.",newOwnerPermissions:"Pemilik baru akan memiliki hak untuk mengelola semua operasi seperti anggota, paspor, dan pengaturan."},createTransferLink:"Buat Tautan Transfer",createSuccessTip1:'Tautan transfer berhasil dibuat, tamu harus menggunakan <a style="color: rgb(29, 193, 199)" target="_blank" href="https://www.didwallet.io/">DID Wallet</a> untuk menerima kepemilikan aplikasi',createSuccessTip2:"Silakan klik untuk menyalin dan mengirimkan tautan ke anggota yang diundang, harap perhatikan bahwa tautan transfer ini tidak dapat digunakan kembali dan akan kadaluarsa pada {expireDate}. Tautan transfer Anda hanya akan ditampilkan sekali dan tidak akan dapat dilihat lagi setelah menutup dialog ini.",createSuccessTip3:"Setelah transfer berhasil, aplikasi akan secara otomatis restart untuk memastikan perubahan berlaku.",link:"Transfer Link",iKnow:"Saya telah menyalin dan menyimpan tautan tersebut"},connectDialog:{title:"Otorisasi Diperlukan",scan:"Gunakan metode berikut untuk mengotorisasi aplikasi untuk mentransfer kepemilikan.",confirm:"Konfirmasi di akun Anda",success:"Otorisasi berhasil"},receiveDialog:{title:"Menerima Kepemilikan Aplikasi",scan:"Gunakan metode berikut untuk menerima kepemilikan aplikasi.",confirm:"Konfirmasi di akun Anda",success:"Menerima Kepemilikan Berhasil"},successTitle:"Anda telah menjadi pemilik baru aplikasi ini",visitDashboard:"Kunjungi Dasbor Aplikasi",description:"Anda dapat mentransfer kepemilikan aplikasi Anda ke dompet atau orang lain."},permission:{create:{title:"Buat Izin",description:"Format: <aksi>_<sumber daya>"},delete:{title:"Hapus Izin",description:"Konfirmasi menghapus {name}?"},error:{actionEmpty:"Tindakan tidak boleh kosong",resourceEmpty:"Sumber tidak boleh kosong",permissionTooLong:"Izin tidak boleh melebihi {length} karakter",descriptionTooLong:"Deskripsi tidak boleh melebihi {length} karakter"}},passport:{create:{title:"Buat Paspor",titleTip:"Judul tidak dapat diubah setelah dibuat, disarankan maksimal 14 huruf"},bind:{title:"Ikatan Izin",roleTip:"Anda akan mendapatkan semua izin dari paspor yang dipilih setelah mengikat",permissionTip:"Anda akan mendapatkan izin yang dipilih setelah melakukan pengikatan",transferLeftTitle:"Semua izin",transferRightTitle:"Izin diberikan"},delete:{title:"Hapus Paspor",description:"Paspor yang dipegang oleh pengguna akan kehilangan semua izin setelah dihapus. Apakah Anda yakin ingin melanjutkan?"},error:{titleEmpty:"Judul tidak boleh kosong",titleTooLong:"Judul tidak boleh melebihi {length} karakter",descriptionEmpty:"Deskripsi tidak bisa kosong"},issuance:{pending:"Tertunda",create:{title:"Buat Link"},delete:{title:"Hapus Tautan Diterima",description:"Konfirmasi hapus {link}?"}},issue:"Menerbitkan paspor",disableIssuance:"Nonaktifkan Penerbitan Paspor",enableIssuance:"Aktifkan Penerbitan Paspor",disableIssuanceTip:'Operasi "Mengeluarkan Paspor", "Undang Anggota", dan operasi lainnya akan dinonaktifkan',enableIssuanceTip:"Mengeluarkan Paspor",trustedPassportIssuers:"Penerbit Paspor Terpercaya",trustedIssuers:"Penerbit Terpercaya",trustedFactories:"Koleksi NFT Terpercaya",trustedFactoriesTip:"Kelola Koleksi NFT terpercaya yang dapat digunakan untuk ditukar dengan paspor",searchFactoryAddress:"Cari Koleksi DID",configFactories:"Konfigurasi Koleksi NFT Terpercaya",configFactoriesTip:"Memungkinkan pengguna menukar NFT untuk paspor",factoryAddress:"Alamat Koleksi NFT",factory404:"Koleksi NFT tidak ditemukan",factoryAddressTip:"Alamat Koleksi NFT harus ada di Chain Utama ArcBlock",role:"Jenis Paspor",ttl:"Kebijakan Berakhirnya Paspor",ttlNever:"Tidak pernah kedaluwarsa",ttlMint:"Sejak pembelian NFT",ttlExchange:"Sejak Pertukaran Paspor",ttlNeverTip:"Paspor akan berlaku sampai dicabut",ttlMintTip:"Paspor akan berlaku sejak pembelian NFT sampai Anda menentukan waktu ttl atau mencabut",ttlExchangeTip:"Paspor akan berlaku dari saat pengguna berhasil ditukar hingga Anda menentukan ttl atau mencabut",ttlTip:'365d berarti 365 hari, Anda juga bisa menggunakan "30 hari" atau "24 jam"',validUntil:"Berlaku hingga: {date}",externalPassport:"Paspor Eksternal",notTrustedIssuerTip:"Paspor tidak dapat digunakan karena penerbit tidak ada dalam daftar penerbit tepercaya",issuerDid:"ID PEMBERI",addNodeToTrustedIssuers:"Tambahkan server saat ini sebagai penerbit paspor terpercaya",revoked:"Ditarik",noPermission:"Tidak ada izin untuk melakukan operasi ini",shouldNotDeleteCurrent:"Anda tidak dapat mencabut paspor yang sedang digunakan saat ini",mappingRule:"Aturan pemetaan",defaultRule:"Aturan default",search:"Cari Paspor",searchIssuerDid:"Cari Penerbit DID",issueBy:"Isu oleh {name}",configColor:"Konfigurasi Warna Paspor",configColorTip:"Sesuaikan warna paspor",color:"Warna Paspor",description:"Gunakan paspor ini untuk menghubungkan {teamName} sebagai {title}",displayBuiltin:"Builtin",displayCustom:"Kustom",typesTip:"Sesuaikan jenis paspor, pisahkan dengan koma",issuanceDate:"Tanggal penerbitan: {date}",sourceMaps:{recover:"Terpulihkan",issue:"Diterbitkan",invite:"Diundang",trusted:"Tepercaya"},related:"Paspor Terkait",operationLogs:"Log Operasi",owner:"Pemilik",status:"Status",statusMap:{valid:"Valid",revoked:"Dicabut",expired:"Kedaluwarsa"},view:"Kelola Paspor",trustedPassportIssuersTip:"Kelola penerbit paspor tepercaya yang dapat digunakan untuk menerbitkan paspor",issuanceTime:"Waktu Penerbitan",relatedDescription:"Paspor saat ini diturunkan dari paspor berikut",passportExpireTime:"Tetapkan tanggal kedaluwarsa untuk Passport",customExpireTime:"Waktu Kedaluwarsa Kustom",customExpireTimeIsInvalid:"Waktu Kedaluwarsa Kustom tidak valid"},inviting:{link:"Tautan Undangan",inviter:"Pemanggil",delete:{title:"Hapus Tautan Undangan",description:"Konfirmasi hapus {link}?"},disabledTip:"Undangan tidak diaktifkan"},whoCanAccess:{all:{title:"Tersedia untuk semua"},owner:{title:"Hanya pemilik"},invited:{title:"Hanya pengguna yang diundang"}},userFollowers:{follow:"Ikuti",unfollow:"Berhenti Mengikuti",followersOnly:"Hanya terlihat oleh pengikut",followers:"Pengikut",following:"Berikut",emptyFollowing:"Belum ada pengguna yang Anda ikuti.",emptyFollowers:"Belum ada pengikut.",title:"Ikuti",invitees:"Undangan",emptyInvitees:"Anda belum mengundang siapa pun."},orgs:{explain:"Memungkinkan pengguna membuat dan bergabung dengan organisasi, menetapkan peran, dan mengelola sumber daya.",description:"Deskripsi",deleteConfirm:"Konfirmasi hapus {name}?",members:"Anggota",myCreated:"Buatan Saya",myJoined:"Bergabung Dengan Saya",myCreatedEmpty:"Anda belum membuat organisasi.",myJoinedEmpty:"Anda belum bergabung dengan organisasi apa pun.",deleteConfirmDescription:"Menghapus organisasi ini akan menghapus semua peran dan sumber daya yang terhubung dengannya. Pengguna akan tetap berada di sistem tetapi kehilangan peran mereka di organisasi ini. Tindakan ini tidak dapat dibatalkan.",active:"Aktif",deleteOrg:"Hapus Organisasi Saat Ini",invitedAt:"Diundang pada: {time}",joinedAt:"Bergabung pada: {time}",createNew:"Buat Organisasi Baru",viewAll:"Lihat Semua Organisasi",validate:{nameEmpty:"Nama tidak boleh kosong",nameTooLong:"Nama tidak boleh melebihi {length} karakter",descriptionTooLong:"Deskripsi tidak boleh melebihi {length} karakter"},mutate:{title:"{mode} Organisasi",name:"Nama Organisasi",createSuccess:"Organisasi berhasil dibuat",updateSuccess:"Organisasi berhasil diperbarui",orgNotEnabled:"Organisasi belum diaktifkan",maxMemberPerOrg:"Organisasi dapat mengundang hingga {maxMemberPerOrg} anggota",maxOrgPerUser:"Anda dapat membuat hingga {maxOrgPerUser} organisasi"},invite:{chooseUsersToInvite:"Pilih pengguna untuk diundang",success:"Undangan terkirim ke pengguna",pleaseSelectUsers:"Silakan pilih pengguna",pleaseSelectRole:"Silakan pilih peran",inviteExternalUsers:"Undang pengguna eksternal",failed:"{count} undangan pengguna gagal, coba lagi nanti",remove:"Hapus pengguna",removeSuccess:"Pengguna berhasil dihapus",limit:"Batas",limitTip:"Batasi anggota organisasi dan organisasi per pengguna",maxMembers:"Maks anggota per org",maxOrgs:"Jumlah maksimal organisasi per pengguna",maxMembersTip:"Jumlah maksimum pengguna yang dapat diundang untuk organisasi ini",inviteLinkSendToEmail:"Tautan undangan telah dikirim ke email ({email}), harap periksa",enterEmailAddress:"Silakan masukkan alamat email",inviteTitle:"Undang pengguna untuk bergabung ke {orgName}"},member:{removeMemberConfirm:"Konfirmasi hapus {name}?",removeMemberConfirmDescription:"Setelah penghapusan, pengguna akan kehilangan peran dan izin di organisasi. Tindakan ini tidak dapat dibatalkan.",removeInvitingMember:"Konfirmasi batalkan undangan {name}?",removeInvitingMemberDescription:"Setelah dihapus, pengguna tidak akan bisa bergabung dengan organisasi dan perlu diundang kembali. Tindakan ini tidak dapat dibatalkan."}}},launcher:{provider:"Penyedia",adminUrl:"URL"},session:{blockAccess:"Anda telah diblokir dari mengakses server ini"},launchBlocklet:{appInfo:"Informasi Aplikasi",appInfoDesc:"Konfirmasi informasi aplikasi",author:"Penulis Aplikasi: {author}",setup:"Setup Blocklet",redirect:"Mengalihkan",alreadyRunning:"Aplikasi {name} sudah berjalan di server Blocklet ini",alreadyInstalled:"Aplikasi {name} sudah terpasang di server Blocklet ini",alreadyExists:"Aplikasi ini sudah ada, mengalihkan...",purchased:"Sudah Dibeli",purchase:"Pembelian",nextStep:"Langkah Berikutnya",agreement:"Perjanjian Lisensi",agreeAll:"Setuju & Lanjutkan",installing:"Menginstal {appName} di {serverName}, ini mungkin memakan waktu beberapa menit untuk selesai, harap menunggu...",redirecting:"{appName} berhasil diinstal, sekarang memulai...",start:"Meluncurkan",launch:"Pasang Blocklet ke Server",launchSuccess:"{appName} telah diluncurkan dengan sukses!",installSuccess:"Blocklet berhasil diinstal dan diluncurkan di {serverName}",openInRegistry:"Lihat di Blocklet Store",subTitle:"Siap untuk menginstal Blocklet {appName} di {serverName}",installingSubTitle:"{appName} sedang menginstal",access:"Buka aplikasinya",viewApplication:"Lihat Aplikasi",newVersion:"Versi Baru",newVersionDesc:"Aplikasi sudah ada, tetapi versi saat ini dapat ditingkatkan",upgradeNow:"Tingkatkan Sekarang",later:"Nanti",introduction:"Pengantar",welcome:"Selamat datang di Wizard Peluncuran Blocklet",accept:"Saya setuju dengan EULA Blocklet",license:"Lisensi Aplikasi",next:"Setujui EULA dan lanjutkan",purchaseApp:"Beli Blocklet",setupAppDesc:"Inisialisasi Blocklet Anda",launched:"Lengkap",confirmInstall:"Konfirmasi Pemasangan",dialog:{title:"Menjadi pemilik aplikasi",nftFreeDescription:"Silakan tampilkan ruang NFT aplikasi dan buat akun aplikasi untuk melanjutkan",nftPaidDescription:"Tolong tampilkan ruang aplikasi NFT dan beli aplikasi NFT untuk melanjutkan",freeDescription:"Silakan buat akun aplikasi untuk melanjutkan",paidDescription:"Silakan tampilkan pembelian NFT aplikasi dan buat akun aplikasi untuk melanjutkan",confirm:"Konfirmasi di akun Anda",success:"Otorisasi berhasil",authorizationTimeout:"Waktu otorisasi habis"},waiting:{verifying:"Memverifikasi meta aplikasi...",downloading:"Mengunduh paket aplikasi...",downloadingComponent:"Mengunduh {name}",extractingComponent:"Mengekstrak {name}",extracting:"Mengekstrak bundel aplikasi...",installing:"Menginstal komponen aplikasi...",installed:"Terpasang",starting:"Memulai aplikasi...",done:"Aplikasi Anda sedang diluncurkan...",parsing:"Menganalisis meta aplikasi...",initializing:"Memulai konfigurasi aplikasi...",initializingOwner:"Menginisialisasi pemilik aplikasi...",creatingSecurityRules:"Membuat aturan keamanan default...",assigningDomain:"Menugaskan domain default...",waitingForDomain:"Menunggu domain default untuk berlaku..."},error:{loadMetaFailed:"Gagal memuat informasi aplikasi",appMetaNotFound:"Tidak ada informasi ditemukan untuk aplikasi ini",downloadFailed:"Gagal mengunduh aplikasi, silakan coba lagi",installFailed:"Gagal menginstal aplikasi, silakan coba lagi",startFailed:"Gagal memulai aplikasi, silakan coba lagi",launchFailed:"Gagal meluncurkan aplikasi, silakan coba lagi",installedButStopped:"Aplikasi berhasil diinstal, tetapi tidak dapat dijalankan. Anda dapat menjalankannya secara manual setelah memecahkan masalah pemblokiran",installedButError:"Aplikasi berhasil diinstal, tetapi gagal untuk memulai",restoreFailed:"Gagal mengembalikan aplikasi, silakan coba lagi",resourceBlocklet:"Blocklet ini tidak dapat diluncurkan secara langsung, tetapi Anda dapat menambahkannya ke aplikasi yang sudah ada."},steps:{introduction:"Pengenalan",installApp:"Pasang Aplikasi",purchaseSpace:"Membeli Ruang",prepareSpace:"Menyiapkan Ruang"},installRelatedComponents:"Pasang Blocklets terkait",canNotInstall:"Tidak dapat menginstal",dockerBlockletCantInstall:"Tidak dapat menginstal Blocklet, karena Server Blocklet belum mengaktifkan Docker atau Docker Network",nav:{myApps:"Aplikasi Saya",viewMyApps:"Lihat Aplikasi Saya"},withoutWallet:"Lewati koneksi Dompet DID",nwFailed:"Gagal mengambil alur kerja.",alreadyConsumed:"Sesi peluncuran telah digunakan",redirectToLauncherBlocklet:"Mengalihkan ke Launcher Blocklet"},issuePassport:{title:"Menerima Paspor",description:"Gunakan metode berikut untuk menerima paspor yang dikeluarkan oleh {name}",dialog:{scan:"Gunakan metode berikut untuk mengklaim paspor",confirm:"Konfirmasi di akun Anda",success:"Paspor telah berhasil ditambahkan di dompet Anda",loginWithPassport:"Hubungkan dengan paspor ini",autoClose:"Halaman akan ditutup otomatis dalam {seconds}s",autoJump:"Halaman akan otomatis loncat dalam {seconds}s"}},lostPassport:{title:"Paspor Hilang",description:"Pemilik {name} dapat menggunakan metode berikut untuk mengambil paspor, anggota silakan hubungi pemilik untuk menerbitkan ulang paspor.",return:"Batalkan operasi pengambilan, kembali ke halaman utama",receivePassport:"Menerima paspor",recoverDialog:{title:"Memulihkan paspor",scan:"Gunakan metode berikut untuk mengambil paspor Anda",confirm:"Konfirmasi di dompet DID Anda",success:"Berhasil diambil"},receiveDialog:{title:"Menerima paspor",scan:"Gunakan metode berikut untuk menerima paspor",confirm:"Konfirmasi di dompet DID Anda",success:"Diterima dengan sukses"},recoverPassport:"Memulihkan paspor"},invite:{message:"{name} mengundang Anda untuk menjadi {role} dari {dapp}",success:"Anda berhasil bergabung dengan {dapp}",receive:"Terima dengan",validUntil:"Berlaku hingga:",viewPermission:"Izin Lihat",emptyPermission:"Izin Kosong",open:"Buka",description:{step1:"Unduh dan konfigurasikan {wallet} Anda",step2:"Klik tombol di atas untuk menerima paspor",step3:"Masuk ke {dapp} dengan paspor yang diterima"},transferNFTDialog:{title:"Terima Server Blocklet {name}",scan:"Hubungkan Launcher untuk menyelesaikan penerimaan Server Blocklet.",confirm:"Periksa operasi ini di Dompet DID Anda",success:"Berhasil terhubung, menunggu konfirmasi penerimaan dari Server"}},receive:{dialog:{title:"Menerima paspor",scan:"Setelah menerima paspor, Anda dapat menggunakan paspor untuk masuk ke aplikasi",confirm:"Konfirmasi di akun Anda",success:"Anda berhasil terhubung",scanWithDid:"Silakan gunakan akun {did} untuk menerima paspor ini. Setelah menerima paspor, Anda dapat menggunakannya untuk masuk ke aplikasi."}},navigation:{navigation:"Navigasi",actionFailed:"Aksi Gagal",form:{themeConfig:"Konfigurasi Tema",contentConfig:"Konfigurasi Konten",title:"Judul",titlePlaceholder:"Silakan masukkan judul navigasi",titleTooLong:"Panjang judul harus lebih kecil dari {len}",description:"Deskripsi",descriptionPlaceholder:"Silakan masukkan deskripsi navigasi",descriptionTooLong:"Panjang deskripsi harus lebih kecil dari {len}",icon:"Ikon Default",iconPlaceholder:"Pilih ikon",invalidIcon:"Ikon tidak valid",findMoreIcon:"Temukan lebih banyak ikon",link:"Link",linkPlaceholder:"Silakan masukkan tautan navigasi",invalidLink:"Link tidak valid",component:"Komponen",componentPlaceholder:"Silakan pilih komponen navigasi",role:"Peran",rolePlaceholder:"Silakan pilih peran navigasi",locale:"Lokal",localePlaceholder:"Silakan masukkan lokasi yang perlu ditambahkan",localeExists:"{value} sudah ada",activeIcon:"Ikon Aktif",activeColor:"Warna Aktif",color:"Warna Default",colorPlaceholder:"e.g., #FF0000",invalidColor:"Warna tidak valid",searchIcons:"Cari ikon",searchIconsPlaceholder:"Contoh: mdi:home"},action:{add:"Tambahkan navigasi",addSub:"Tambahkan navigasi sub",edit:"Edit navigasi",hide:"Sembunyikan navigasi",show:"Tampilkan navigasi",del:"Hapus navigasi",new:"Baru",noAddSub:"Komponen yang tidak terpasang tidak dapat menambahkan sub navigasi",noEdit:"Komponen yang dihapus tidak dapat diedit",noDel:"Tidak diizinkan menghapus navigasi bawaan",reset:"Reset",restConfirmTitle:"Setel ulang navigasi {section} ke bawaan?",restConfirmDesc:"Navigasi khusus Anda akan dibersihkan dan dikembalikan ke item bawaan.",resetSuccessful:"Reset berhasil",delTabBarTitle:"Apakah Anda ingin menghapus tab ini?",delTabBarDesc:"Setelah menghapus, tab akan dihapus dari bar navigasi."},system:"Sistem",services:"Layanan",access:"Akses",members:"Anggota",passport:"Paspor",analytics:"Analitik",dashboard:"Dasbor",studio:"Blocklet Studio",aigne:"Koneksi AI",blockletService:"Layanan Blocklet",didConnect:"Identitas & Akses",didSpaces:"Penyimpanan & Cadangan",website:"Website Studio",notification:"Pusat Pemberitahuan",operations:"Observabilitas",integration:"Integrasi",developer:"Pengembang",overviewDesc:"Pantau kesehatan dan detail aplikasi, dan instal, jalankan, atau hapus Blocklets dengan mudah di satu tempat.",didConnectDesc:"Tambahkan anggota tim, atur opsi masuk, dan kelola akses aman untuk kolaborasi yang lancar.",aigneDesc:'Konfigurasi koneksi terkait AI untuk blocklet Anda, termasuk <a href="{aigneHubUrl}" target="_blank">AIGNE Hub</a> dan <a href="{mcpUrl}" target="_blank">server yang kompatibel dengan MCP</a>.',websiteDesc:"Kelola domain, sesuaikan tema, sempurnakan branding, dan kustomisasi navigasi untuk tampilan situs yang unik.",operationsDesc:"Lihat analitik, periksa log aktivitas, dapatkan peringatan, dan sesuaikan pengaturan lanjutan sesuai kebutuhan.",integrationsDesc:"Tautkan layanan eksternal melalui Webhooks, kunci akses, dan server MCP untuk memperluas kemampuan aplikasi.",developersDesc:"Gunakan log, pelacakan kinerja, dan dokumentasi untuk membangun, men-debug, dan mengoptimalkan aplikasi Anda.",didSpacesDesc:"Simpan dan cadangkan data aplikasi Blocklet Anda dengan aman untuk memastikan perlindungan yang andal dan pemulihan yang mudah.",publishDesc:"Terbitkan aplikasi Anda ke toko atau bagikan melalui tautan agar lebih banyak orang dapat menggunakannya."},storage:{spaces:{title:"DID Spaces",tips:"Tips",label:"Masukkan Gateway DID Spaces",connected:{title:"Ruang DID Terhubung",tag:"Terhubung"},connectedWithName:"Anda berhasil terhubung ke {name}",addedWithName:"Anda berhasil menambahkan {name}",connects:"Hubungkan",reconnect:"Menghubungkan kembali",addressCannotEmpty:"Alamat tidak boleh kosong",addressNotValid:"{url} bukan alamat yang valid",authorize:{title:"Sambungkan {appName} ke DID Spaces",scan:"Gunakan metode berikut agar aplikasi {appName} dapat terhubung ke DID Spaces",success:"Berhasil terhubung"},provideNFT:{title:"Tolong tampilkan DID Spaces NFT untuk {appName}",scan:"Gunakan metode berikut agar aplikasi {appName} dapat menampilkan NFT Space DID",success:"Terhubung berhasil"},backup:{title:"Backup",records:"Cadangan catatan",without:"Tanpa backup",succeeded:"Cadangan berhasil",failed:"Cadangan gagal",lastBackup:"Cadangan terakhir",lastBackupTip:'Sudah {time} sejak cadangan terakhir Anda berhasil, silakan periksa pengaturan cadangan Anda di tab "DID Spaces".',noBackup:"Tidak ada backup",noBackupTip:"Belum ada backup yang dibuat. Kami sarankan untuk mengatur backup secara berkala untuk melindungi data dan pengaturan Anda",pending:"Backup sedang berlangsung",timeout:"Batas waktu pencadangan"},autoBackup:{title:"Cadangan otomatis",enabled:"Pencadangan otomatis sudah aktif",disabled:"Pencadangan otomatis mati"},autoCheckUpdate:{title:"Periksa otomatis pemberitahuan versi baru",enabled:"Pemeriksaan otomatis untuk versi baru sedang aktif",disabled:"Pengecekan otomatis untuk versi baru dimatikan"},backupSuccessfully:"Pencadangan berhasil",restore:"Memulihkan",restoreSuccessfully:"Pemulihan berhasil",gateway:{title:"Gerbang",select:"Pilih Ruang DID",add:{title:"Tambahkan Ruang DID",label:"Masukkan URL Ruang DID",failed:"Gagal menambahkan DID Spaces",invalidUrl:"URL gateway ruang DID tidak valid",duplicate:"{name} sudah terhubung dengan Blocklet ini"},delete:{title:"Hapus",succeeded:"Berhasil menghapus DID Spaces {name}",failed:"Gagal menghapus gerbang",failedForSelected:"Tidak dapat menghapus DID Spaces yang dipilih",descForBackup:`Setelah menghapus {name}, Anda tidak akan dapat membuat cadangan dari Blocklet ke DID Space ini. Apakah Anda yakin ingin menghapus?
6
6
  Anda dapat memulihkan operasi pencadangan dengan menghubungkan kembali ke {name}.`,descForStorage:`Setelah menghapus {name}, Anda tidak akan dapat menyimpan data dari Blocklet ke DID Space ini. Apakah Anda yakin ingin menghapus?
7
7
  Anda dapat memulihkan operasi penyimpanan dengan menghubungkan kembali ke {name}.`},connect:{title:"Hubungkan Ruang DID",add:"Hubungkan ke Ruang DID sekarang",addTips:"Anda belum terhubung ke ruang DID mana pun",switch:"Beralih Ruang DID",switchTips:"Anda terhubung dengan {name}",connected:"Terhubung"},switch:{failedForMismatchSpace:"Silakan sambungkan ke DID Space {name} yang benar"},connectTo:"Terhubung ke Ruang DID"},strategy:{title:"Strategi Cadangan",autoBackup:"Auto backup",backupNow:"Cadangkan sekarang",viewBackupFiles:"Lihat file cadangan"},progress:{title:"Progres backup"},record:{title:"Cadangkan catatan",emptyData:"Tidak ada catatan"},notYet:"Anda tidak memiliki cadangan yang sedang berjalan...",connect:{now:"Hubungkan sekarang",title:"Hubungkan DID Spaces",provider:"Sediakan DID Space Anda untuk memulai pencadangan",providerForStorage:"Berikan DID Space Anda untuk penyimpanan data",useWallet:"Hubungkan dengan Dompet DID",useWalletReconnect:"Hubungkan kembali dengan Dompet DID",useSpaceGateway:"Hubungkan menggunakan gateway DID Spaces",useSpaceGatewayReconnect:"Hubungkan kembali menggunakan gateway DID Spaces",switchToSpace:"Beralih ke DID Space",switchToSpaceSucceeded:"Beralih ke ruang DID {name}",succeeded:"Anda telah berhasil terhubung dengan DID Space",disconnect:"Putuskan koneksi",abortBlockletBackup:"Batalkan cadangan"},disconnected:{tag:"Terputus",reconnectNow:"Menghubungkan kembali sekarang"}},appLevel:{title:"Penyimpanan Tingkat Aplikasi",description:"Semua data yang dihasilkan oleh aplikasi disimpan di DID Space ini"}},log:{lastDays:{1:"1 Hari Terakhir",7:"Minggu Terakhir"}},oauth:{authorize:"Otorisasi OAuth",client:{tab:"Aplikasi OAuth",name:"Nama Aplikasi",clientId:"ID Klien",clientSecret:"Rahasia Klien",scope:"Lingkup",redirectUris:"URL Pengalihan",grantTypes:"Jenis Grant",responseTypes:"Jenis Respons",tokenEndpointAuthMethod:"Metode Autentikasi Endpoint Token",actions:"Aksi",grantResponse:"Izin dan Tanggapan",metaContact:"Meta & Kontak",clientUri:"URI Klien",logoUri:"URI Logo",contacts:"Kontak",tosUri:"URL Syarat Layanan",policyUri:"URI Kebijakan",jwksSoftware:"JWKS & Software",jwksUri:"URI JWKS",jwks:"JWKS",softwareId:"ID Perangkat Lunak",softwareVersion:"Versi Perangkat Lunak",clientSecretExpiresAt:"Rahasia Klien Kedaluwarsa Pada",clientIdIssuedAt:"ID Klien Diterbitkan Pada",oauthAppDetails:"Detail Aplikasi OAuth",oauthEndpoints:"Endpoints OAuth",authorizationEndpoint:"Endpoint Otorisasi",tokenEndpoint:"Endpoint Token",userinfoEndpoint:"Endpoint Informasi Pengguna",registrationEndpoint:"Endpoint Pendaftaran",endSessionEndpoint:"Titik Akhir Sesi",validate:{clientName:"Nama aplikasi wajib diisi",clientNameMinLength:"Nama aplikasi minimal 3 karakter",clientUri:"URL beranda diperlukan",clientUriInvalid:"Masukkan URL yang valid dimulai dengan http:// atau https://",redirectUris:"URL panggilan balik otorisasi diperlukan",redirectUrisInvalid:"Masukkan URL yang valid, dimulai dengan http:// atau https://",contacts:"Masukkan alamat email yang valid, dipisahkan dengan koma",tosUri:"URL Syarat dan Ketentuan Layanan wajib diisi",tosUriInvalid:"Masukkan URL yang valid",policyUri:"URL Kebijakan diperlukan",policyUriInvalid:"Masukkan URL yang valid",jwksUri:"URI JWKS diperlukan",jwksUriInvalid:"Masukkan URL yang valid",jwks:"JWKS diperlukan",jwksInvalid:"Masukkan JWKS yang valid"},input:{clientName:"Nama aplikasi",clientNamePlaceholder:"Sesuatu yang akan dikenali dan dipercaya pengguna",clientUri:"URL beranda",clientUriPlaceholder:"https://your-app.com",redirectUris:"URL panggilan balik otorisasi",redirectUrisPlaceholder:"https://your-app.com/callback",contacts:"Email Kontak",contactsPlaceholder:"admin@your-app.com, support@your-app.com",permissions:"Pilih izin yang Anda perlukan",tosUri:"URL Syarat dan Ketentuan Layanan",tosUriPlaceholder:"https://your-app.com/terms",policyUri:"URL Kebijakan",policyUriPlaceholder:"https://your-app.com/policy",jwksUri:"URI JWKS",jwksUriPlaceholder:"https://your-app.com/jwks",jwks:"JWKS",jwksPlaceholder:"Himpunan Kunci Web JSON",expireTime:"Tetapkan tanggal kedaluwarsa untuk rahasia klien demi keamanan yang lebih baik"},helperText:{clientName:"Sesuatu yang akan dikenali dan dipercaya pengguna.",clientUri:"URL lengkap beranda aplikasi Anda.",redirectUris:"URL panggilan balik aplikasi Anda.",contacts:"Alamat email orang yang bertanggung jawab atas aplikasi.",tosUri:"URL syarat layanan aplikasi Anda.",policyUri:"URL kebijakan privasi aplikasi Anda.",read:"Baca",document:"Dokumentasi OAuth",more:"Untuk informasi lebih lanjut."},delete:{title:"Hapus Klien OAuth",description:"Apakah Anda yakin ingin menghapus klien OAuth {clientName} ini?"},register:"Buat aplikasi OAuth baru",requiredInformation:"Informasi yang dibutuhkan",optionalInformation:"Informasi Opsional",registerButton:"Buat",logo:"Logo",openRegistration:"Pendaftaran Dibuka",openidConfiguration:"Konfigurasi OpenID",createUser:"Dibuat oleh",update:"Perbarui Aplikasi OAuth",listTitle:"Aktifkan akses pihak ketiga yang aman dengan Aplikasi OAuth",tooltipTitle:"Gunakan server OAuth bawaan aplikasi Anda untuk mengotorisasi aplikasi eksternal dengan protokol standar industri. Berdayakan pengguna dengan autentikasi yang aman dan lancar serta kontrol akses delegasi.",empty:"Tidak ada data yang ditambahkan"}},expiration:{mobile:{tips:{success:"{validity}",warning:"{validity}",error:"Kedaluwarsa"},loadFailed:"Coba lagi!"},desktop:{tips:{success:"Langganan akan berakhir setelah {validity}",warning:"Langganan akan berakhir setelah {validity}",error:"Langganan Telah Kadaluarsa"},loading:"Memuat langganan...",loadFailed:"Gagal memuat info langganan, silakan coba lagi!",nextInvoice:"Faktur berikutnya: {date}"}},analytics:{trend:"Tren",detail:"Kerusakan",traffic:{totalRequests:"Total Permintaan",validRequests:"Permintaan Sukses",failedRequests:"Permintaan Gagal",uniqueVisitors:"Pengunjung unik",uniqueFiles:"URL Unik",uniqueReferrers:"Referensi Unik",uniqueNotFound:"404 Tunggal",uniqueStaticFiles:"File Statis Unik",logSize:"Ukuran Log",bandwidth:"Lebar pita"},runtime:"Runtime"},federated:{inviteJoinFederatedLogin:"Undangan untuk bergabung dengan login federasi",inviteJoinFederatedLoginDescription:"Salin alamat berikut dan isi di aplikasi di mana Anda perlu bergabung untuk mendaftar login federasi.",federatedLogin:"Login federasi",joinFederatedLogin:"Gabung dengan login federasi",joinFederatedLoginDescription:"Silakan masukkan alamat login federasi yang disediakan oleh Master Blocklet untuk bergabung dengan login federasi",quitFederatedLogin:"Keluar dari login federasi",quitFederatedLoginDescription:"Setelah keluar dari login federasi, login normal selalu tersedia",federatedJoinAppUrl:"Masuk dengan login federasi di appUrl",federatedJoinAppUrlRequired:"Silakan masukkan login federasi untuk bergabung dengan {appUrl}",failedToGetFederatedLoginAppUrl:"Gagal untuk mendapatkan gabungan login, bergabunglah dengan appUrl",federatedJoinAppUrlInvalid:"AppUrl login federasi tidak valid",siteDetail:"Rincian Situs",approveToJoinLogin:"Setuju untuk bergabung dengan login federasi",approve:"Aktifkan login",revoke:"Nonaktifkan login",enableFederatedLogin:"Aktifkan login federasi",disableFederatedLogin:"Nonaktifkan login federasi",enableFederatedLoginDescription:"Setelah mengaktifkan login federasi, situs ini akan masuk secara otomatis",disableFederatedLoginDescription:"Setelah nonaktifkan login terfederasi, situs ini tidak akan login otomatis",enableFederatedAutoLogin:"Aktifkan login otomatis",enableFederatedAutoLoginDescription:"Setelah mengaktifkan login otomatis, jika saat ini ada status login yang terpadu, situs akan secara otomatis masuk dengan identitas login yang terfederasi",disableFederatedAutoLogin:"Nonaktifkan login otomatis",disableFederatedAutoLoginDescription:"Setelah login otomatis dinonaktifkan, situs tidak akan secara otomatis masuk ke informasi login pengguna dengan login seragam, dan Anda masih dapat memilih untuk masuk secara manual dengan identitas login serbaguna.",info:{appId:"APP SELESAI",appPid:"ID Permanen",migratedFrom:"Dikenal juga sebagai",appName:"Nama Blocklet",appDescription:"Deskripsi Blocklet",appUrl:"URL Blocklet",appLogo:"Logo Blocklet",did:"Blocklet DID",serverId:"ID Server Blocklet",serverVersion:"Versi Blocklet Server",version:"Versi Blocklet",appliedAt:"Daftar di",status:"Status"},status:{pending:"Tertunda",approved:"Disetujui",rejected:"Ditolak",revoked:"Ditarik"},disbandFederatedLogin:"Putus login federasi",disbandFederatedLoginDescription:"Setelah pembubaran login federasi, semua situs anggota akan otomatis keluar dari login federasi",syncConfig:"Sinkronisasi konfigurasi situs federasi",quitMember:"Hapus",quitMemberDescription:"Hapus anggota yang ditentukan dari grup situs",removeFederatedLogin:"Hapus anggota",removeFederatedLoginDescription:"Setelah menghapus anggota yang ditentukan dari grup situs, anggota hanya dapat menggunakan login normal",title:"Apa itu Federated Login?",description:"Login federasi dapat dicapai melalui single sign-on di berbagai sistem. Anda dapat mengundang tim lain untuk bergabung dengan login federasi, atau proaktif bergabung dengan platform login federasi organisasi lain.",link:"Lihat Dokumen"},optionsOrder:{1:"Opsi Satu",2:"Opsi Dua"},securityRule:{title:"Aturan Keamanan",sortByDescription:"Urutkan berdasarkan prioritas pencocokan",add:"Tambahkan Aturan Keamanan",edit:"Sunting Aturan Keamanan",view:"Lihat aturan keamanan",form:{precede:"Sebelumnya",pathPattern:"Pola Jalur",pathPatternPlaceholder:"Masukkan pola jalan",pathPatternErrorText:"Pola path tidak valid",accessPolicyOrResponseHeaderPolicyRequired:"Kebijakan Akses atau Kebijakan Header Respons diperlukan",accessPolicy:"Kebijakan Akses",accessPolicyPlaceholder:"Silakan pilih kebijakan akses",accessPolicyHelperText:"Pilih akses kebijakan",responseHeaderPolicy:"Kebijakan Header Respons",responseHeaderPolicyPlaceholder:"Pilih kebijakan header respons",responseHeaderPolicyHelperText:"Silahkan pilih kebijakan header respon",remark:"Catatan",remarkPlaceholder:"Masukkan catatan",component:"Komponen",componentPlaceholder:"Silakan pilih komponen"},delete:{title:"Hapus Aturan Keamanan?",description:"Setelah menghapus aturan keamanan, aturan tersebut tidak akan berlaku lagi"},useless:"Aturan Keamanan yang Tidak Berguna"},responseHeaderPolicy:{title:"Kebijakan Header Respons",add:"Tambahkan Kebijakan Header Respons",edit:"Edit Respons Header Policy",view:"Lihat Kebijakan Header Respons",form:{name:"Nama",namePlaceholder:"Masukkan nama",description:"Keterangan",descriptionPlaceholder:"Masukkan deskripsi",cors:{origin:"Asal",originPlaceholder:"Dukung format domain berikut: http://www.example.com, http://*.example.com, http://www.example.com:8080, * (tidak direkomendasikan menggunakan wildcard)",originHelperText:"Nama domain dimulai dengan http:// atau https://, satu per baris, satu wildcard * per baris",methods:"Metode",allowedHeaders:"Header yang diizinkan",allowedHeadersPlaceholder:"Disarankan untuk mengisi *, dukung masukan multi-baris",allowedHeadersHelperText:"Beri tahu server header permintaan HTTP kustom mana yang dapat digunakan pada permintaan berikutnya ketika mengirim permintaan OPTIONS, seperti: x-blocklet-version",exposedHeaders:"Header Terbuka",exposedHeadersPlaceholder:"Mendukung masukan multi-baris",exposedHeadersHelperText:"Konfigurasikan Expose-Headers, misalnya: X-Content-Range",maxAge:"Max-Age (detik)",maxAgeHelperText:"Periode validitas hasil yang diperoleh dari permintaan OPTIONS, yang harus berupa bilangan bulat positif",optionsSuccessStatus:"Status keberhasilan opsi",preflightContinue:"Lanjut Pratinjau",credentials:"Kredensial",smartModeHelperText:"Secara otomatis menambahkan semua nama domain aplikasi saat ini, serta semua nama domain dari grup situs log masuk terfederasi",smartMode:"Mode Cerdas"},originOverride:"Origin Override",originOverrideHelperText:"Izinkan logika di aplikasi untuk menimpa tajuk respons ini"},delete:{title:"Hapus Kebijakan Header Respons?",description:"Setelah menghapus kebijakan header respons, kebijakan tersebut tidak akan berlaku lagi"}},accessPolicy:{title:"Kebijakan Akses",add:"Tambahkan kebijakan akses",edit:"Edit Kebijakan Akses",view:"Lihat akses kebijakan",form:{name:"Nama",namePlaceholder:"Silakan masukkan nama",description:"Deskripsi",descriptionPlaceholder:"Silakan masukkan deskripsi",roles:"Peran Akses",accessType:"Tipe akses"},delete:{title:"Hapus Kebijakan Akses?",description:"Setelah menghapus kebijakan akses, kebijakan tersebut tidak akan berlaku lagi"}},didConnect:{genKeyPair:{title:"Buat DID Blocklet",scan:"Gunakan metode berikut untuk menghasilkan Blocklet DID",success:"DID Blocklet berhasil dibuat",successDesc:"Blocklet DID telah berhasil dihasilkan (Publikasi berikutnya memerlukan dompet yang menghasilkan DID untuk beroperasi)"},common:{invalidSession:"Sesi tidak valid",invalidSessionDesc:"Sesi tidak ada atau telah berakhir",connectionError:"Gagal terhubung"}},pagination:{next:"Halaman Berikutnya",previous:"Halaman Sebelumnya",rowsPerPage:"Per halaman:",displayRows:"dari",jumpToPage:"Lompat ke Halaman:"},webhookEndpoint:{createWebhook:"Buat Webhook",createWebhookTitle:"Buat Webhook",selectAllEvents:"Pilih Semua Peristiwa",selectAllEventsTooltip:"Pilih semua acara yang tersedia",selectedEventsCount:"{count} acara terpilih",selectedCount:"{count} terpilih",eventsCount:"{count} acara",saveWebhook:"Buat Webhook",noAvailableEvents:"Tidak ada acara yang tersedia",loadingEvents:"Memuat acara...",loadingError:"Gagal memuat acara: {message}",title:"Webhooks",noWebhooksAdded:"Tidak ada webhook yang ditambahkan",validation:{urlRequired:"URL diperlukan",urlInvalid:"Masukkan URL yang valid",descriptionRequired:"Deskripsi diperlukan",eventRequired:"Pilih setidaknya satu acara"},hosted:"Endpoint yang dihosting",add:"Buat Webhook",addTip:"Atur endpoint webhook Anda untuk menerima event secara langsung",listen:"Mendengarkan untuk",version:"Versi API",attempts:"Percobaan Webhook",url:{label:"URL",description:"URL Endpoint Webhook"},description:{label:"Deskripsi",description:"Deskripsi opsional untuk kegunaan endpoint ini"},events:{label:"Pilih peristiwa untuk didengarkan",description:"Halo, {name}."},disabled:"Dinonaktifkan",enabled:"Aktif",disable:"Nonaktifkan",enable:"Aktifkan",editWebhookTitle:"Perbarui Webhook",updateWebhook:"Perbarui Webhook",waitingForEvents:"Menunggu event...",loadingMore:"Sedang memuat...",loadMore:"Muat lagi",response:"Respons",request:"Permintaan",eventData:"Data Acara",deleteWebhook:{title:"Hapus Webhook?",description:"Setelah menghapus webhook, webhook tersebut tidak akan lagi menerima event"},success:"Sukses",listTitle:"Kirim data peristiwa real-time dengan Webhooks",tooltipTitle:"Hubungkan aplikasi Anda ke sistem eksternal dengan lancar melalui pengiriman notifikasi kejadian secara real-time. Webhook memungkinkan integrasi yang ampuh dan alur kerja otomatis di seluruh alat dan layanan Anda.",triggeredFrom:"Webhook ini dipicu dari upaya"},description:{environment:"Variabel saat ini akan berlaku ketika {name} berjalan. Perlu memulai ulang aplikasi agar berlaku.",preferences:"Variabel saat ini akan berlaku ketika {name} berjalan. Perubahan akan diterapkan setelah disimpan, tidak perlu memulai ulang aplikasi."},preferencesFor:"Preferensi untuk {name}",environmentFor:"Lingkungan untuk {name}",accessKey:"Kunci Akses",embed:{iconTip:"Klik untuk melihat detail langganan"},command:"Perintah",mcp:{listTitle:"Akses Blocklet Anda dari klien MCP",tooltipTitle:"Jelajahi daftar server MCP yang didukung oleh Blocklet ini, pilih server untuk langsung melihat perintah koneksi yang Anda perlukan untuk bergabung dari klien Anda.",endpoint:"Titik akhir MCP",available:"Server MCP tersedia",noServer:"Tidak ada server MCP yang tersedia"},installCommand:"Perintah Instalasi",label:{add:"Tambah",apply:"Terapkan label",manage:"Kelola label",title:"Label",description:"Deskripsi",systemLabel:"Label Sistem",create:"Buat label",edit:"Edit label",name:"Nama",slug:"Slug",parentLabel:"Label induk",color:"Warna",search:"Cari label",saveSuccess:"Label berhasil disimpan",delete:"Hapus",deleteTip:'Hapus "{name}"?',deleteSuccess:"Label berhasil dihapus",reassignTip:"Jika label ini sedang digunakan, tetapkan ulang item-itemnya ke label lain.",reassignTo:"Pilih label baru",recently:"Terbaru",noMatching:"Tidak ada label ditemukan",noLabels:"Belum ada label yang dibuat",filter:"Saring label",createNewLabel:'Buat label baru "{name}"',actionLabel:"Tetapkan label secara massal",selectLabels:"Pilih label",deleteDesc:'Setelah menghapus label, label tidak akan lagi digunakan. Apakah Anda yakin ingin menghapus "{name}"?',nameRequired:"Judul wajib.",nameMinLength:"Judul harus memiliki setidaknya 1 karakter.",nameMaxLength:"Judul harus kurang dari 64 karakter.",slugRequired:"Slug wajib diisi",slugMinLength:"Slug harus setidaknya 1 karakter",slugMaxLength:"Slug harus kurang dari 128 karakter",descriptionMaxLength:"Deskripsi harus kurang dari 255 karakter",colorRequired:"Warna wajib",colorInvalid:"Warna tidak valid"},environmentTips:{delete:"Apakah Anda yakin ingin menghapus baris ini?",deleteForbidden:"Hanya kunci variabel lingkungan kustom yang dapat diubah."},authentication:{emailLoginDescription:"Login email akan menggunakan Pengaturan Notifikasi untuk mengirim tautan login atau kode login kepada pengguna.",emailNotificationRequired:"Pastikan Anda telah mengaktifkan Notifikasi Email.",chooseProvider:"Metode Masuk",chooseProviderPlaceholder:"Pilih metode login untuk dikonfigurasi",addLoginProvider:"Tambahkan Metode Login",updateLoginProvider:"Perbarui Metode Masuk: {provider}",alreadyBindOAuth:"Sudah mengikat login pihak ketiga",alreadyBindWallet:"Sudah mengikat Dompet DID",didConnectSettings:"Tampilan & Merek",commonSettings:"Pengaturan Umum",sessionSettings:"Keamanan Sesi",federated:"Login Terfederasi",loginProviders:"Metode Login",oauth:"Masuk Pihak Ketiga",save:"Simpan",thirdPartyLogin:"Login pihak ketiga",viewDocument:"Lihat Dokumentasi",oauthCallbackUrl:"URL Callback",gotoEmailNotification:"Buka pengaturan notifikasi email",deleteLoginProvider:"Hapus Penyedia Login {provider}",deleteLoginProviderDescription:"Setelah menghapus penyedia login, pengguna tidak akan dapat masuk menggunakan {provider}. Apakah Anda yakin ingin melanjutkan?",auth0:{title:"Auth0",enable:"Aktifkan login Auth0",domain:"Domain",domainDescription:"Domain Auth0 diperlukan",clientId:"ID Klien",clientIdDescription:"ID klien aplikasi Auth0 OAuth diperlukan",clientSecret:"Rahasia Klien",clientSecretDescription:"Kunci rahasia klien aplikasi Auth0 OAuth diperlukan"},github:{title:"Github",enable:"Aktifkan login Github",clientId:"ID Klien",clientIdDescription:"ID Klien aplikasi Github OAuth diperlukan",clientSecret:"Rahasia Klien",clientSecretDescription:"Kunci rahasia klien aplikasi Github OAuth diperlukan"},twitter:{title:"X",enable:"Aktifkan login X",clientId:"ID Klien",clientIdDescription:"ID Klien aplikasi OAuth diperlukan",clientSecret:"Rahasia Klien",clientSecretDescription:"Client Secret aplikasi X OAuth diperlukan"},google:{title:"Google",enable:"Aktifkan login Google",clientId:"ID Klien",clientIdDescription:"ID klien aplikasi Google OAuth diperlukan",clientSecret:"Rahasia Klien",clientSecretDescription:"Client Secret aplikasi Google OAuth diperlukan"},apple:{title:"Apel",enable:"Aktifkan login dengan Apple",teamId:"ID tim",teamIdDescription:"ID tim aplikasi Apple OAuth diperlukan",serviceId:"ID Layanan",serviceIdDescription:"ID layanan aplikasi Apple OAuth diperlukan",keyId:"ID Kunci",keyIdDescription:"Key ID aplikasi Apple OAuth diperlukan",authKey:"Kunci otentikasi",authKeyDescription:"Kunci otentikasi aplikasi Apple OAuth diperlukan",bundleId:"ID bundel",bundleIdDescription:"ID paket aplikasi Apple OAuth diperlukan"},wallet:{showQrcode:"Tampilkan kode QR"},didConnect:{showDidColor:"Tampilkan warna DID Connect",showAppInfo:"Tampilkan informasi Blocklet",basicSettings:"Pengaturan dasar",customSettings:"Pengaturan Kustom",configDialogTitle:"Konfigurasi teks popup autentikasi",addNewAction:"Tambahkan Tindakan",addLanguage:"Tambahkan bahasa",selectLanguage:"Pilih bahasa...",actionNameError:"Hanya huruf kecil dan tanda hubung yang diperbolehkan, tidak boleh memulai dengan tanda hubung",actionNameDuplicate:"Nama aksi sudah ada"}}};export{a as default};
@@ -1 +1 @@
1
- import{aJ as E,W as G}from"./index-BIgX2N1A.js";const L=({url:r,allowFullScreen:o,position:a,display:u,height:i,width:y,overflow:c,styles:f,onLoad:p,onMouseOver:w,onMouseOut:b,scrolling:d,id:m,frameBorder:t,ariaHidden:O,sandbox:s,allow:j,className:g,title:h,ariaLabel:k,ariaLabelledby:P,name:v,target:A,loading:F,importance:I,referrerpolicy:M,allowpaymentrequest:S,src:q,key:x})=>{const n=E({src:q||r,target:A||null,style:{position:a||null,display:u||"initial",overflow:c||null},scrolling:d||null,allowpaymentrequest:S||null,importance:I||null,sandbox:s&&[...s].join(" ")||null,loading:F||null,styles:f||null,name:v||null,className:g||null,allowFullScreen:"allowFullScreen",referrerpolicy:M||null,title:h||null,allow:j||null,id:m||null,"aria-labelledby":P||null,"aria-hidden":O||null,"aria-label":k||null,width:y||null,height:i||null,onLoad:p||null,onMouseOver:w||null,onMouseOut:b||null,key:x||"iframe"});let l=Object.create(null);for(let e of Object.keys(n))n[e]!=null&&(l[e]=n[e]);for(let e of Object.keys(l.style))l.style[e]==null&&delete l.style[e];if(l.styles)for(let e of Object.keys(l.styles))l.styles.hasOwnProperty(e)&&(l.style[e]=l.styles[e]),Object.keys(l.styles).pop()==e&&delete l.styles;if(o)if("allow"in l){const e=l.allow.replace("fullscreen","");l.allow=`fullscreen ${e.trim()}`.trim()}else l.allow="fullscreen";return t>=0&&(l.style.hasOwnProperty("border")||(l.style.border=t)),G.createElement("iframe",Object.assign({},l))};export{L as I};
1
+ import{aJ as E,W as G}from"./index-DrI_kbUr.js";const L=({url:r,allowFullScreen:o,position:a,display:u,height:i,width:y,overflow:c,styles:f,onLoad:p,onMouseOver:w,onMouseOut:b,scrolling:d,id:m,frameBorder:t,ariaHidden:O,sandbox:s,allow:j,className:g,title:h,ariaLabel:k,ariaLabelledby:P,name:v,target:A,loading:F,importance:I,referrerpolicy:M,allowpaymentrequest:S,src:q,key:x})=>{const n=E({src:q||r,target:A||null,style:{position:a||null,display:u||"initial",overflow:c||null},scrolling:d||null,allowpaymentrequest:S||null,importance:I||null,sandbox:s&&[...s].join(" ")||null,loading:F||null,styles:f||null,name:v||null,className:g||null,allowFullScreen:"allowFullScreen",referrerpolicy:M||null,title:h||null,allow:j||null,id:m||null,"aria-labelledby":P||null,"aria-hidden":O||null,"aria-label":k||null,width:y||null,height:i||null,onLoad:p||null,onMouseOver:w||null,onMouseOut:b||null,key:x||"iframe"});let l=Object.create(null);for(let e of Object.keys(n))n[e]!=null&&(l[e]=n[e]);for(let e of Object.keys(l.style))l.style[e]==null&&delete l.style[e];if(l.styles)for(let e of Object.keys(l.styles))l.styles.hasOwnProperty(e)&&(l.style[e]=l.styles[e]),Object.keys(l.styles).pop()==e&&delete l.styles;if(o)if("allow"in l){const e=l.allow.replace("fullscreen","");l.allow=`fullscreen ${e.trim()}`.trim()}else l.allow="fullscreen";return t>=0&&(l.style.hasOwnProperty("border")||(l.style.border=t)),G.createElement("iframe",Object.assign({},l))};export{L as I};
@@ -1 +1 @@
1
- import{bo as x}from"./index-BIgX2N1A.js";function D(a,i){for(var r=0;r<i.length;r++){const e=i[r];if(typeof e!="string"&&!Array.isArray(e)){for(const s in e)if(s!=="default"&&!(s in a)){const t=Object.getOwnPropertyDescriptor(e,s);t&&Object.defineProperty(a,s,t.get?t:{enumerable:!0,get:()=>e[s]})}}}return Object.freeze(Object.defineProperty(a,Symbol.toStringTag,{value:"Module"}))}var l,w;function J(){if(w)return l;w=1;var a={default:l,call:function(i,r,e){var s="";typeof r=="function"&&(e=r,r={});var t={data:r===void 0?null:r};if(typeof e=="function"){var n="dscb"+window.dscb++;window[n]=e,t._dscbstub=n}return t=JSON.stringify(t),window._dsbridge?s=_dsbridge.call(i,t):(window._dswk||navigator.userAgent.indexOf("_dsbridge")!=-1)&&(s=prompt("_dsbridge="+i,t)),JSON.parse(s||"{}").data},register:function(i,r,e){var s=e?window._dsaf:window._dsf;window._dsInit||(window._dsInit=!0,setTimeout(function(){a.call("_dsb.dsinit")},0)),typeof r=="object"?s._obs[i]=r:s[i]=r},registerAsyn:function(i,r){this.register(i,r,!0)},hasNativeMethod:function(i,r){return this.call("_dsb.hasNativeMethod",{name:i,type:r||"all"})},disableJavascriptDialogBlock:function(i){this.call("_dsb.disableJavascriptDialogBlock",{disable:i!==!1})}};return(function(){if(!window._dsf){var i={_dsf:{_obs:{}},_dsaf:{_obs:{}},dscb:0,dsBridge:a,close:function(){a.call("_dsb.closePage")},_handleMessageFromNative:function(e){var s=JSON.parse(e.data),t={id:e.callbackId,complete:!0},n=this._dsf[e.method],o=this._dsaf[e.method],v=function(_,p){t.data=_.apply(p,s),a.call("_dsb.returnValue",t)},g=function(_,p){s.push(function(O,j){t.data=O,t.complete=j!==!1,a.call("_dsb.returnValue",t)}),_.apply(p,s)};if(n)v(n,this._dsf);else if(o)g(o,this._dsaf);else{var u=e.method.split(".");if(u.length<2)return;var b=u.pop(),h=u.join("."),c=this._dsf._obs,f=c[h]||{},d=f[b];if(d&&typeof d=="function"){v(d,f);return}if(c=this._dsaf._obs,f=c[h]||{},d=f[b],d&&typeof d=="function"){g(d,f);return}}}};for(var r in i)window[r]=i[r];a.register("_hasJavascriptMethod",function(e,s){var t=e.split(".");if(t.length<2)return!!(_dsf[t]||_dsaf[t]);var e=t.pop(),n=t.join("."),o=_dsf._obs[n]||_dsaf._obs[n];return o&&!!o[e]})}})(),l=a,l}var y=J();const N=x(y),k=D({__proto__:null,default:N},[y]);export{k as i};
1
+ import{bi as x}from"./index-DrI_kbUr.js";function D(a,i){for(var r=0;r<i.length;r++){const e=i[r];if(typeof e!="string"&&!Array.isArray(e)){for(const s in e)if(s!=="default"&&!(s in a)){const t=Object.getOwnPropertyDescriptor(e,s);t&&Object.defineProperty(a,s,t.get?t:{enumerable:!0,get:()=>e[s]})}}}return Object.freeze(Object.defineProperty(a,Symbol.toStringTag,{value:"Module"}))}var l,w;function J(){if(w)return l;w=1;var a={default:l,call:function(i,r,e){var s="";typeof r=="function"&&(e=r,r={});var t={data:r===void 0?null:r};if(typeof e=="function"){var n="dscb"+window.dscb++;window[n]=e,t._dscbstub=n}return t=JSON.stringify(t),window._dsbridge?s=_dsbridge.call(i,t):(window._dswk||navigator.userAgent.indexOf("_dsbridge")!=-1)&&(s=prompt("_dsbridge="+i,t)),JSON.parse(s||"{}").data},register:function(i,r,e){var s=e?window._dsaf:window._dsf;window._dsInit||(window._dsInit=!0,setTimeout(function(){a.call("_dsb.dsinit")},0)),typeof r=="object"?s._obs[i]=r:s[i]=r},registerAsyn:function(i,r){this.register(i,r,!0)},hasNativeMethod:function(i,r){return this.call("_dsb.hasNativeMethod",{name:i,type:r||"all"})},disableJavascriptDialogBlock:function(i){this.call("_dsb.disableJavascriptDialogBlock",{disable:i!==!1})}};return(function(){if(!window._dsf){var i={_dsf:{_obs:{}},_dsaf:{_obs:{}},dscb:0,dsBridge:a,close:function(){a.call("_dsb.closePage")},_handleMessageFromNative:function(e){var s=JSON.parse(e.data),t={id:e.callbackId,complete:!0},n=this._dsf[e.method],o=this._dsaf[e.method],v=function(_,p){t.data=_.apply(p,s),a.call("_dsb.returnValue",t)},g=function(_,p){s.push(function(O,j){t.data=O,t.complete=j!==!1,a.call("_dsb.returnValue",t)}),_.apply(p,s)};if(n)v(n,this._dsf);else if(o)g(o,this._dsaf);else{var u=e.method.split(".");if(u.length<2)return;var b=u.pop(),h=u.join("."),c=this._dsf._obs,f=c[h]||{},d=f[b];if(d&&typeof d=="function"){v(d,f);return}if(c=this._dsaf._obs,f=c[h]||{},d=f[b],d&&typeof d=="function"){g(d,f);return}}}};for(var r in i)window[r]=i[r];a.register("_hasJavascriptMethod",function(e,s){var t=e.split(".");if(t.length<2)return!!(_dsf[t]||_dsaf[t]);var e=t.pop(),n=t.join("."),o=_dsf._obs[n]||_dsaf._obs[n];return o&&!!o[e]})}})(),l=a,l}var y=J();const N=x(y),k=D({__proto__:null,default:N},[y]);export{k as i};