From 8dd2a89e992706d8e384bbd84b3b261c33318725 Mon Sep 17 00:00:00 2001 From: v1ll4n Date: Fri, 13 Dec 2024 15:42:06 +0800 Subject: [PATCH] Deploy website - based on 51bfa0cc2b8c6625c31028d9a8cc72cfefd65614 --- 404.html | 4 ++-- assets/js/2bf1e827.5f3d0dd5.js | 1 + assets/js/2bf1e827.64587e3b.js | 1 - .../js/{main.1da0c771.js => main.adf5f106.js} | 4 ++-- ...CENSE.txt => main.adf5f106.js.LICENSE.txt} | 0 ...n.ed521b05.js => runtime~main.04749d75.js} | 2 +- codeAnalysis.html | 4 ++-- cookbook.html | 4 ++-- docs/cli_usage.html | 4 ++-- docs/code_audit.html | 4 ++-- docs/code_scan.html | 4 ++-- docs/community.html | 4 ++-- docs/intro.html | 4 ++-- en/404.html | 4 ++-- en/assets/js/2bf1e827.5c58431b.js | 1 + en/assets/js/2bf1e827.70c6589a.js | 1 - .../js/{main.6b0cdfcc.js => main.2c7d6aef.js} | 4 ++-- ...CENSE.txt => main.2c7d6aef.js.LICENSE.txt} | 0 ...n.d292205e.js => runtime~main.ce3341a3.js} | 2 +- en/codeAnalysis.html | 4 ++-- en/cookbook.html | 4 ++-- en/docs/cli_usage.html | 4 ++-- en/docs/code_audit.html | 4 ++-- en/docs/code_scan.html | 4 ++-- en/docs/community.html | 4 ++-- en/docs/intro.html | 4 ++-- en/index.html | 4 ++-- en/markdown-page.html | 4 ++-- .../compile-ssa-form.html | Bin 143872 -> 143872 bytes .../deep-dive-into-ssa-closure.html | 4 ++-- ...into-ssa-dataflow-and-cross-procedure.html | 19 ++++++++++++++---- .../deep-dive-into-ssa-oop.html | Bin 157673 -> 157673 bytes en/static-analysis-guide/intro.html | 4 ++-- .../ssa-for-advanced-language-2.html | 4 ++-- .../ssa-for-advanced-language.html | 4 ++-- .../advanced/advanced-analyzing-dataflow.html | 4 ++-- en/syntaxflow-guide/intro.html | 4 ++-- en/syntaxflow-guide/quick-start.html | 4 ++-- en/syntaxflow-guide/rule-intro.html | 4 ++-- .../statements/intro-and-desc.html | 4 ++-- en/syntaxflow-guide/statements/sf-calc.html | 4 ++-- .../statements/sf-dataflow.html | 4 ++-- .../statements/sf-dot-call-chain.html | 4 ++-- en/syntaxflow-guide/statements/sf-filter.html | 4 ++-- .../statements/sf-func-call.html | 4 ++-- .../statements/sf-nativecall.html | 4 ++-- en/syntaxflow-guide/statements/sf-sca.html | 4 ++-- en/syntaxflow-guide/statements/sf-search.html | 4 ++-- .../statements/sf-variable.html | 4 ++-- index.html | 4 ++-- markdown-page.html | 4 ++-- static-analysis-guide/compile-ssa-form.html | 4 ++-- .../deep-dive-into-ssa-closure.html | 4 ++-- ...into-ssa-dataflow-and-cross-procedure.html | 19 ++++++++++++++---- .../deep-dive-into-ssa-oop.html | 4 ++-- static-analysis-guide/intro.html | 4 ++-- .../ssa-for-advanced-language-2.html | 4 ++-- .../ssa-for-advanced-language.html | Bin 445914 -> 445914 bytes .../advanced/advanced-analyzing-dataflow.html | 4 ++-- syntaxflow-guide/intro.html | 4 ++-- syntaxflow-guide/quick-start.html | 4 ++-- syntaxflow-guide/rule-intro.html | 4 ++-- .../statements/intro-and-desc.html | 4 ++-- syntaxflow-guide/statements/sf-calc.html | 4 ++-- syntaxflow-guide/statements/sf-dataflow.html | 4 ++-- .../statements/sf-dot-call-chain.html | 4 ++-- syntaxflow-guide/statements/sf-filter.html | 4 ++-- syntaxflow-guide/statements/sf-func-call.html | 4 ++-- .../statements/sf-nativecall.html | 4 ++-- syntaxflow-guide/statements/sf-sca.html | 4 ++-- syntaxflow-guide/statements/sf-search.html | 4 ++-- syntaxflow-guide/statements/sf-variable.html | 4 ++-- 72 files changed, 152 insertions(+), 130 deletions(-) create mode 100644 assets/js/2bf1e827.5f3d0dd5.js delete mode 100644 assets/js/2bf1e827.64587e3b.js rename assets/js/{main.1da0c771.js => main.adf5f106.js} (99%) rename assets/js/{main.1da0c771.js.LICENSE.txt => main.adf5f106.js.LICENSE.txt} (100%) rename assets/js/{runtime~main.ed521b05.js => runtime~main.04749d75.js} (99%) create mode 100644 en/assets/js/2bf1e827.5c58431b.js delete mode 100644 en/assets/js/2bf1e827.70c6589a.js rename en/assets/js/{main.6b0cdfcc.js => main.2c7d6aef.js} (99%) rename en/assets/js/{main.6b0cdfcc.js.LICENSE.txt => main.2c7d6aef.js.LICENSE.txt} (100%) rename en/assets/js/{runtime~main.d292205e.js => runtime~main.ce3341a3.js} (99%) diff --git a/404.html b/404.html index 9b0a164..7f62339 100644 --- a/404.html +++ b/404.html @@ -4,8 +4,8 @@ 找不到页面 | SSA.to - - + +
跳到主要内容

找不到页面

我们找不到您要找的页面。

请联系原始链接来源网站的所有者,并告知他们链接已损坏。

diff --git a/assets/js/2bf1e827.5f3d0dd5.js b/assets/js/2bf1e827.5f3d0dd5.js new file mode 100644 index 0000000..39eebc8 --- /dev/null +++ b/assets/js/2bf1e827.5f3d0dd5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkssa_to=self.webpackChunkssa_to||[]).push([[7418],{84846:(n,e,s)=>{s.r(e),s.d(e,{assets:()=>a,contentTitle:()=>x,default:()=>j,frontMatter:()=>t,metadata:()=>d,toc:()=>h});const d=JSON.parse('{"id":"deep-dive-into-ssa-dataflow-and-cross-procedure","title":"\u7b2c\u516d\u7ae0\uff1aSSA \u6570\u636e\u6d41\u4e0e\u8de8\u8fc7\u7a0b\u5206\u6790","description":"\u5728\u5bf9\u95ed\u5305\u548c OOP \u7684\u8ba8\u8bba\u7ed3\u675f\u540e\uff0c\u6211\u4eec\u57fa\u672c\u53ef\u4ee5\u77e5\u9053\u73b0\u4ee3\u7f16\u7a0b\u8bed\u8a00\u7684\u5927\u90e8\u5206\u8bed\u6cd5\u548c\u7279\u6027\u90fd\u662f\u53ef\u4ee5\u7528 SSA \u6765\u8868\u793a\u7684\u3002\u524d\u9762\u7684\u6240\u6709\u5185\u5bb9\u5171\u540c\u6784\u6210\u4e86\u6211\u4eec\u540e\u7eed\u8ba8\u8bba\u7684\u57fa\u7840\u3002","source":"@site/static-analysis-guide/deep-dive-into-ssa-dataflow-and-cross-procedure.mdx","sourceDirName":".","slug":"/deep-dive-into-ssa-dataflow-and-cross-procedure","permalink":"/static-analysis-guide/deep-dive-into-ssa-dataflow-and-cross-procedure","draft":false,"unlisted":false,"editUrl":"https://github.com/yaklang/ssa.to/tree/main/static-analysis-guide/static-analysis-guide/deep-dive-into-ssa-dataflow-and-cross-procedure.mdx","tags":[],"version":"current","lastUpdatedBy":"v1ll4n","lastUpdatedAt":1734075698000,"frontMatter":{},"sidebar":"staticAnalysisGuideSidebar","previous":{"title":"\u7b2c\u4e94\u7ae0\uff1aSSA \u6df1\u6c34\u533a - OOP\u4e0e\u65e0\u7c7b","permalink":"/static-analysis-guide/deep-dive-into-ssa-oop"}}');var i=s(74848),l=s(28453),r=s(14252),c=s(97015);const t={},x="\u7b2c\u516d\u7ae0\uff1aSSA \u6570\u636e\u6d41\u4e0e\u8de8\u8fc7\u7a0b\u5206\u6790",a={},h=[{value:"\u6570\u636e\u6d41\u57fa\u672c\u6982\u5ff5",id:"\u6570\u636e\u6d41\u57fa\u672c\u6982\u5ff5",level:2},{value:"\u6570\u636e\u6d41\u4e0e\u63a7\u5236\u6d41\u5206\u79bb",id:"\u6570\u636e\u6d41\u4e0e\u63a7\u5236\u6d41\u5206\u79bb",level:3},{value:"\u5b9a\u4e49",id:"\u5b9a\u4e49",level:4},{value:"\u6570\u636e\u6d41\u4e2d\u7684\u652f\u914d\u5173\u7cfb",id:"\u6570\u636e\u6d41\u4e2d\u7684\u652f\u914d\u5173\u7cfb",level:3},{value:"\u6570\u636e\u8282\u70b9\uff08\u53d8\u91cf\uff09\u652f\u914d\u8fb9\u754c",id:"\u6570\u636e\u8282\u70b9\u53d8\u91cf\u652f\u914d\u8fb9\u754c",level:3},{value:"\u6570\u636e\u6d41\u4e0e UD(DU) \u94fe",id:"\u6570\u636e\u6d41\u4e0e-uddu-\u94fe",level:3},{value:"\u5b9a\u4e49\u8de8\u8fc7\u7a0b\u5206\u6790",id:"\u5b9a\u4e49\u8de8\u8fc7\u7a0b\u5206\u6790",level:3},{value:"\u6570\u636e\u6d41\u7684\u8de8\u8fc7\u7a0b\u5206\u6790",id:"\u6570\u636e\u6d41\u7684\u8de8\u8fc7\u7a0b\u5206\u6790",level:2},{value:"\u57fa\u7840\u8bdd\u9898\uff1a\u901a\u8fc7\u51fd\u6570\u8c03\u7528\u8de8\u8fc7\u7a0b",id:"\u57fa\u7840\u8bdd\u9898\u901a\u8fc7\u51fd\u6570\u8c03\u7528\u8de8\u8fc7\u7a0b",level:3},{value:"\u8fdb\u9636\u8bdd\u9898\uff1a\u901a\u8fc7\u95ed\u5305\u8de8\u8fc7\u7a0b",id:"\u8fdb\u9636\u8bdd\u9898\u901a\u8fc7\u95ed\u5305\u8de8\u8fc7\u7a0b",level:3},{value:"\u8fdb\u9636\u8bdd\u9898\uff1a\u5e7f\u4e49\u8de8\u8fc7\u7a0b\u5b9a\u4e49",id:"\u8fdb\u9636\u8bdd\u9898\u5e7f\u4e49\u8de8\u8fc7\u7a0b\u5b9a\u4e49",level:3},{value:"\u904d\u5386\u6570\u636e\u6d41",id:"\u904d\u5386\u6570\u636e\u6d41",level:2},{value:"UD(DU) \u94fe\u4e0e\u5206\u6790\u65b9\u5411",id:"uddu-\u94fe\u4e0e\u5206\u6790\u65b9\u5411",level:3},{value:"\u81ea\u9876\u5411\u4e0b\uff1a\u4ece\u5b9a\u4e49(Def)\u5230\u4f7f\u7528(Use)",id:"\u81ea\u9876\u5411\u4e0b\u4ece\u5b9a\u4e49def\u5230\u4f7f\u7528use",level:3},{value:"\u81ea\u5e95\u5411\u4e0a\uff1a\u4ece\u4f7f\u7528(Use)\u5230\u5b9a\u4e49(Def)",id:"\u81ea\u5e95\u5411\u4e0a\u4ece\u4f7f\u7528use\u5230\u5b9a\u4e49def",level:3}];function o(n){const e={admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",hr:"hr",li:"li",mermaid:"mermaid",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,l.R)(),...n.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(e.header,{children:(0,i.jsx)(e.h1,{id:"\u7b2c\u516d\u7ae0ssa-\u6570\u636e\u6d41\u4e0e\u8de8\u8fc7\u7a0b\u5206\u6790",children:"\u7b2c\u516d\u7ae0\uff1aSSA \u6570\u636e\u6d41\u4e0e\u8de8\u8fc7\u7a0b\u5206\u6790"})}),"\n",(0,i.jsx)(e.p,{children:"\u5728\u5bf9\u95ed\u5305\u548c OOP \u7684\u8ba8\u8bba\u7ed3\u675f\u540e\uff0c\u6211\u4eec\u57fa\u672c\u53ef\u4ee5\u77e5\u9053\u73b0\u4ee3\u7f16\u7a0b\u8bed\u8a00\u7684\u5927\u90e8\u5206\u8bed\u6cd5\u548c\u7279\u6027\u90fd\u662f\u53ef\u4ee5\u7528 SSA \u6765\u8868\u793a\u7684\u3002\u524d\u9762\u7684\u6240\u6709\u5185\u5bb9\u5171\u540c\u6784\u6210\u4e86\u6211\u4eec\u540e\u7eed\u8ba8\u8bba\u7684\u57fa\u7840\u3002"}),"\n",(0,i.jsx)(e.p,{children:"\u90a3\u4e48\uff0c\u63a5\u4e0b\u6765\u6211\u4eec\u5c31\u4f1a\u8fdb\u4e00\u6b65\u8ba8\u8bba\u9759\u6001\u5206\u6790\u5728 SSA \u89c6\u89d2\u4e0b\u5c06\u4f1a\u53d8\u7684\u591a\u7b80\u5355\u3002"}),"\n",(0,i.jsxs)(e.admonition,{title:"\u672c\u7ae0\u76ee\u6807",type:"tip",children:[(0,i.jsx)(e.p,{children:"\u57fa\u672c\u4e86\u89e3 SSA \u89c6\u89d2\u4e0b\u7684\u6570\u636e\u6d41\u5206\u6790\u548c\u8de8\u8fc7\u7a0b\u5206\u6790\u3002"}),(0,i.jsx)(e.p,{children:"\u77e5\u9053 Yak SSA \u7cfb\u7edf\u662f\u5982\u4f55\u5b9e\u73b0\u6570\u636e\u6d41\u5206\u6790\u548c\u8de8\u8fc7\u7a0b\u5206\u6790\uff0c\u4ed6\u4eec\u7684\u8868\u73b0\u5982\u4f55\u3002"})]}),"\n","\n",(0,i.jsx)(r.A,{toc:h}),"\n",(0,i.jsx)(e.hr,{}),"\n",(0,i.jsx)(e.h2,{id:"\u6570\u636e\u6d41\u57fa\u672c\u6982\u5ff5",children:"\u6570\u636e\u6d41\u57fa\u672c\u6982\u5ff5"}),"\n",(0,i.jsx)(e.p,{children:"\u5728\u672c\u7ae0\u5f00\u59cb\uff0c\u6211\u4eec\u9700\u8981\u91cd\u6e29\u9759\u6001\u5206\u6790\u4e2d\u7684\u4e24\u4e2a\u91cd\u8981\u4e14\u4ee4\u4eba\u5934\u75bc\u7684\u8bdd\u9898\uff0c\u6570\u636e\u6d41\u548c\u8de8\u8fc7\u7a0b\u5206\u6790\u3002\u5e76\u4e14\u7ed3\u5408\u6211\u4eec\u524d\u9762\u8ba8\u8bba\u7684 SSA \u7cfb\u7edf\uff0c\u6765\u8ba8\u8bba\u8fd9\u4e24\u4e2a\u8bdd\u9898\u3002\u8bfb\u8005\u53ef\u4ee5\u5f88\u5bb9\u6613\u53d1\u73b0\u8fd9\u4e24\u4e2a\u8bdd\u9898\u5728 SSA \u7cfb\u7edf\u5c06\u53d8\u7684\u975e\u5e38\u5177\u8c61\u3002"}),"\n",(0,i.jsx)(e.h3,{id:"\u6570\u636e\u6d41\u4e0e\u63a7\u5236\u6d41\u5206\u79bb",children:"\u6570\u636e\u6d41\u4e0e\u63a7\u5236\u6d41\u5206\u79bb"}),"\n",(0,i.jsx)(e.h4,{id:"\u5b9a\u4e49",children:"\u5b9a\u4e49"}),"\n",(0,i.jsx)(e.p,{children:"\u9996\u5148\u662f\u6570\u636e\u6d41\u4e0e\u63a7\u5236\u6d41\u95ee\u9898\uff0c\u4e00\u822c\u6765\u8bf4\u6570\u636e\u6d41\u5b9a\u4e49\u4e3a\u53d8\u91cf\u548c\u6570\u636e\u4f9d\u8d56\u8fb9\u7684\u7ec4\u5408\u3002"}),"\n",(0,i.jsxs)(e.ul,{children:["\n",(0,i.jsxs)(e.li,{children:["\n",(0,i.jsxs)(e.p,{children:[(0,i.jsx)(e.strong,{children:"\u6570\u636e\u6d41(Data Flow)"}),": \u63cf\u8ff0\u6570\u636e\u5982\u4f55\u5728\u7a0b\u5e8f\u4e2d\u6d41\u52a8\u548c\u8f6c\u6362"]}),"\n",(0,i.jsxs)(e.ul,{children:["\n",(0,i.jsxs)(e.li,{children:["\u53ef\u4ee5\u8868\u793a\u4e3a: ",(0,i.jsx)(c.GP,{math:"DF = (V, E)"})]}),"\n",(0,i.jsxs)(e.li,{children:["\u5176\u4e2d ",(0,i.jsx)(c.GP,{math:"V"})," \u662f\u53d8\u91cf\u96c6\u5408"]}),"\n",(0,i.jsxs)(e.li,{children:[(0,i.jsx)(c.GP,{math:"E"})," \u662f\u6570\u636e\u4f9d\u8d56\u8fb9\u96c6\u5408"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(e.li,{children:["\n",(0,i.jsxs)(e.p,{children:[(0,i.jsx)(e.strong,{children:"\u63a7\u5236\u6d41(Control Flow)"}),": \u63cf\u8ff0\u7a0b\u5e8f\u6267\u884c\u7684\u8def\u5f84\u548c\u987a\u5e8f"]}),"\n",(0,i.jsxs)(e.ul,{children:["\n",(0,i.jsxs)(e.li,{children:["\u53ef\u4ee5\u8868\u793a\u4e3a: ",(0,i.jsx)(c.GP,{math:"CF = (B, T)"})]}),"\n",(0,i.jsxs)(e.li,{children:["\u5176\u4e2d ",(0,i.jsx)(c.GP,{math:"B"})," \u662f\u57fa\u672c\u5757\u96c6\u5408"]}),"\n",(0,i.jsxs)(e.li,{children:[(0,i.jsx)(c.GP,{math:"T"})," \u662f\u8f6c\u79fb\u8fb9\u96c6\u5408"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(e.p,{children:"\u4e0a\u8ff0\u6848\u4f8b\u7ed3\u5408\u4e0b\u9762\u4ee3\u7801\u5927\u5bb6\u53ef\u4ee5\u66f4\u5bb9\u6613\u7406\u89e3\u63a7\u5236\u6d41\u548c\u6570\u636e\u6d41"}),"\n",(0,i.jsx)(e.pre,{children:(0,i.jsx)(e.code,{className:"language-go",children:"a = 1;\nb = a + 1;\nc = b + 1;\nif (a > 1) {\n c = c + 1;\n}\ne = a + b;\nf = e + c;\n"})}),"\n",(0,i.jsx)(e.p,{children:"\u6211\u4eec\u628a\u4e0a\u8ff0\u4ee3\u7801\u6848\u4f8b\u5236\u4f5c\u4e00\u4e2a\u6d41\u7a0b\u56fe\uff0c\u6765\u540c\u65f6\u5305\u542b\u63a7\u5236\u6d41\u548c\u6570\u636e\u6d41\uff0c\u4e5f\u6700\u63a5\u8fd1\u4eba\u7c7b\u7406\u89e3\u7684\u4ee3\u7801\u6267\u884c\u6d41\u7a0b\u3002"}),"\n",(0,i.jsx)(e.mermaid,{value:'graph LR\n A[a = 1] --\x3e B[b = a + 1]\n B --\x3e C[c = b + 1]\n C --\x3e D{"if (a > 1)"}\n D --\x3e|true| E[c = c + 1]\n D --\x3e|false| F[e = a + b]\n E --\x3e F\n F --\x3e G[f = e + c]\n \n %% Data flow edges (using different style)\n A -.->|a| B\n A -.->|a| D\n A -.->|a| F\n B -.->|b| C\n B -.->|b| F\n C -.->|c| E\n C -.->|c| G\n E -.->|c| G\n F -.->|e| G\n \n classDef control fill:#f9f,stroke:#333,stroke-width:2px\n classDef data fill:#bbf,stroke:#333,stroke-width:2px\n class A,B,C,D,E,F,G control'}),"\n",(0,i.jsxs)(e.p,{children:["\u5728\u8fd9\u4e2a\u56fe\u4e2d\uff0c\u6211\u4eec\u53d1\u73b0\uff0c\u6570\u636e\u6d41\u548c\u63a7\u5236\u6d41\u662f\u6df7\u5408\u5728\u4e00\u8d77\u7684\uff0c\u901a\u8fc7\u68f1\u578b\u6765\u533a\u5206 ",(0,i.jsx)(e.code,{children:"IF"})," \u5206\u652f\u3002"]}),"\n",(0,i.jsxs)(e.ol,{children:["\n",(0,i.jsx)(e.li,{children:"\u5b9e\u7ebf\u8868\u793a\u63a7\u5236\u6d41"}),"\n",(0,i.jsx)(e.li,{children:"\u865a\u7ebf\u8868\u793a\u6570\u636e\u6d41\uff08\u53d8\u91cf\u4e4b\u95f4\u76f4\u63a5\u8fde\u63a5\uff09"}),"\n"]}),"\n",(0,i.jsx)(e.p,{children:"\u63a5\u4e0b\u6765\uff0c\u6211\u4eec\u5c1d\u8bd5\u5206\u79bb\u4e0a\u8ff0\u56fe\u4e2d\u7684\u6570\u636e\u6d41\u548c\u63a7\u5236\u6d41\uff0c\u628a\u5b83\u5206\u6210\u4e24\u4e2a\u56fe\u3002"}),"\n",(0,i.jsx)(e.mermaid,{value:'graph BT\n subgraph \u63a7\u5236\u6d41 Control Flow\n B1["Block1\n a = 1\n b = a + 1\n c = b + 1"] --\x3e D1{if a > 1}\n D1 --\x3e|true| E1["Block2\n c = c + 1"]\n D1 --\x3e|false| F1["Block3\n e = a + b\n f = e + c"]\n E1 --\x3e F1\n end\n \n subgraph \u6570\u636e\u6d41 Data Flow\n A2[a] --\x3e B2[b]\n B2 --\x3e C2[c]\n C2 --\x3e E2[c\']\n A2 --\x3e F2[e]\n B2 --\x3e F2\n E2 --\x3e G2[f]\n C2 --\x3e G2\n F2 --\x3e G2\n end\n \n classDef control fill:#f9f,stroke:#333,stroke-width:2px\n classDef data fill:#bbf,stroke:#333,stroke-width:2px\n class B1,D1,E1,F1 control\n class A2,B2,C2,D2,E2,F2,G2 data'}),"\n",(0,i.jsx)(e.p,{children:"\u5728\u7528\u6237\u9605\u8bfb\u5b8c\u5206\u79bb\u56fe\u4e4b\u540e\uff1a"}),"\n",(0,i.jsx)(e.admonition,{title:"\u63a7\u5236\u6d41\u4e0e\u6570\u636e\u6d41\u7684\u533a\u522b",type:"note",children:(0,i.jsx)(e.p,{children:'\u63a7\u5236\u6d41\u548c\u6570\u636e\u6d41\u662f\u7a0b\u5e8f\u5206\u6790\u4e2d\u4e24\u4e2a\u57fa\u672c\u4f46\u622a\u7136\u4e0d\u540c\u7684\u6982\u5ff5\u3002\u5b83\u4eec\u5206\u522b\u63cf\u8ff0\u4e86\u7a0b\u5e8f\u7684\u4e0d\u540c\u65b9\u9762\uff1a\u63a7\u5236\u6d41\u5173\u6ce8"\u7a0b\u5e8f\u6267\u884c\u7684\u8def\u5f84"\uff0c\u800c\u6570\u636e\u6d41\u5173\u6ce8"\u6570\u636e\u7684\u4f20\u64ad\u548c\u8f6c\u6362"\u3002'})}),"\n",(0,i.jsx)(e.p,{children:"\u8ba9\u6211\u4eec\u4ece\u5f62\u5f0f\u5316\u7684\u89d2\u5ea6\u6765\u8be6\u7ec6\u89e3\u91ca\uff1a"}),"\n",(0,i.jsxs)(e.ol,{children:["\n",(0,i.jsx)(e.li,{children:(0,i.jsx)(e.strong,{children:"\u63a7\u5236\u6d41\u56fe (Control Flow Graph, CFG)"})}),"\n"]}),"\n",(0,i.jsx)(c.OO,{math:"\nCFG = (B, T) \\\\\n\u5176\u4e2d\uff1a\\\\\nB = \\{b_1, b_2, ..., b_n\\} \\text{ \u662f\u57fa\u672c\u5757\u7684\u96c6\u5408} \\\\\nT \\subseteq B \\times B \\text{ \u662f\u57fa\u672c\u5757\u4e4b\u95f4\u7684\u8f6c\u79fb\u8fb9\u96c6\u5408}\n"}),"\n",(0,i.jsx)(e.p,{children:"\u5728\u793a\u4f8b\u4ee3\u7801\u4e2d\uff1a"}),"\n",(0,i.jsxs)(e.ul,{children:["\n",(0,i.jsxs)(e.li,{children:[(0,i.jsx)(c.GP,{math:"b_1"})," \u5305\u542b\u4e86 ",(0,i.jsx)(e.code,{children:"a = 1; b = a + 1; c = b + 1"})," \u8fd9\u4e9b\u987a\u5e8f\u6267\u884c\u7684\u8bed\u53e5"]}),"\n",(0,i.jsxs)(e.li,{children:[(0,i.jsx)(c.GP,{math:"b_2"})," \u5305\u542b\u4e86 ",(0,i.jsx)(e.code,{children:"c = c + 1"})]}),"\n",(0,i.jsxs)(e.li,{children:[(0,i.jsx)(c.GP,{math:"b_3"})," \u5305\u542b\u4e86 ",(0,i.jsx)(e.code,{children:"e = a + b; f = e + c"})]}),"\n",(0,i.jsxs)(e.li,{children:["\u8f6c\u79fb\u8fb9 ",(0,i.jsx)(c.GP,{math:"T"})," \u5305\u542b\u4e86\u6761\u4ef6\u8df3\u8f6c\u548c\u987a\u5e8f\u6267\u884c\u7684\u8fb9"]}),"\n"]}),"\n",(0,i.jsxs)(e.ol,{start:"2",children:["\n",(0,i.jsx)(e.li,{children:(0,i.jsx)(e.strong,{children:"\u6570\u636e\u6d41\u56fe (Data Flow Graph, DFG)"})}),"\n"]}),"\n",(0,i.jsx)(c.OO,{math:"\nDFG = (V, E) \\\\\n\u5176\u4e2d\uff1a\\\\\nV = \\{v_1, v_2, ..., v_m\\} \\text{ \u662f\u53d8\u91cf\u7684\u96c6\u5408} \\\\\nE \\subseteq V \\times V \\text{ \u662f\u6570\u636e\u4f9d\u8d56\u8fb9\u7684\u96c6\u5408}\n"}),"\n",(0,i.jsx)(e.p,{children:"\u5728\u793a\u4f8b\u4ee3\u7801\u4e2d\uff1a"}),"\n",(0,i.jsxs)(e.ul,{children:["\n",(0,i.jsxs)(e.li,{children:[(0,i.jsx)(c.GP,{math:"V"})," \u5305\u542b\u4e86\u53d8\u91cf ",(0,i.jsx)(e.code,{children:"{a, b, c, e, f}"})]}),"\n",(0,i.jsxs)(e.li,{children:["\u6570\u636e\u4f9d\u8d56\u8fb9 ",(0,i.jsx)(c.GP,{math:"E"})," \u8868\u793a\u53d8\u91cf\u95f4\u7684\u4f9d\u8d56\u5173\u7cfb\uff0c\u5982 ",(0,i.jsx)(e.code,{children:"a \u2192 b"})," \u8868\u793a ",(0,i.jsx)(e.code,{children:"b"})," \u7684\u8ba1\u7b97\u4f9d\u8d56\u4e8e ",(0,i.jsx)(e.code,{children:"a"})]}),"\n"]}),"\n",(0,i.jsx)(e.p,{children:"\u5728\u793a\u4f8b\u4ee3\u7801\u4e2d\uff0c\u6211\u4eec\u53ef\u4ee5\u89c2\u5bdf\u5230\uff1a"}),"\n",(0,i.jsxs)(e.ol,{children:["\n",(0,i.jsxs)(e.li,{children:["\u53d8\u91cf ",(0,i.jsx)(e.code,{children:"c"})," \u5728\u63a7\u5236\u6d41\u7684\u4e0d\u540c\u8def\u5f84\u4e0a\u6709\u4e0d\u540c\u7684\u5b9a\u503c\uff08",(0,i.jsx)(e.code,{children:"c = b + 1"})," \u548c ",(0,i.jsx)(e.code,{children:"c = c + 1"}),"\uff09"]}),"\n",(0,i.jsxs)(e.li,{children:["\u6700\u7ec8\u7684\u53d8\u91cf ",(0,i.jsx)(e.code,{children:"f"})," \u4f9d\u8d56\u4e8e\u591a\u4e2a\u53d8\u91cf\uff08",(0,i.jsx)(e.code,{children:"a"}),"\u3001",(0,i.jsx)(e.code,{children:"b"}),"\u3001",(0,i.jsx)(e.code,{children:"c"}),"\u3001",(0,i.jsx)(e.code,{children:"e"}),"\uff09\u7684\u503c"]}),"\n",(0,i.jsxs)(e.li,{children:["\u63a7\u5236\u6d41\u51b3\u5b9a\u4e86 ",(0,i.jsx)(e.code,{children:"c"})," \u7684\u5b9e\u9645\u503c\uff0c\u8fdb\u800c\u5f71\u54cd\u5230 ",(0,i.jsx)(e.code,{children:"f"})," \u7684\u8ba1\u7b97\u7ed3\u679c"]}),"\n"]}),"\n",(0,i.jsx)(e.p,{children:"\u8fd9\u79cd\u63a7\u5236\u6d41\u548c\u6570\u636e\u6d41\u7684\u4ea4\u7ec7\u5173\u7cfb\uff0c\u6b63\u662f\u540e\u7eed\u6211\u4eec\u8981\u8ba8\u8bba\u7684 SSA \u91cd\u8981\u8bdd\u9898\u3002"}),"\n",(0,i.jsxs)(e.admonition,{title:"\u91cd\u8981\u63d0\u793a",type:"danger",children:[(0,i.jsx)(e.p,{children:"\u5728\u5f88\u591a\u4e0d\u719f\u6089\u9759\u6001\u4ee3\u7801\u5206\u6790\u7684\u8bfb\u8005\u773c\u91cc\uff0c\u4ed6\u5176\u5b9e\u5e76\u4e0d\u77e5\u9053\u63a7\u5236\u6d41\u548c\u6570\u636e\u6d41\u662f\u4e24\u4e2a\u5b8c\u5168\u4e0d\u540c\u7684\u6982\u5ff5\uff0c\u800c\u662f\u4e60\u60ef\u6027\u7684\u628a\u63a7\u5236\u6d41\u548c\u6570\u636e\u6d41\u6df7\u4e3a\u4e00\u8c08\u3002"}),(0,i.jsx)(e.p,{children:"\u5f53\u7136\u4e5f\u5e76\u4e0d\u662f\u8bf4\u5fc5\u987b\u53bb\u5206\u79bb\u63a7\u5236\u6d41\u548c\u6570\u636e\u6d41\uff0c\u6bd5\u7adf\u5728 \u201c\u4ee3\u7801\u5c5e\u6027\u56fe\u201d \u6216 \u201c\u8282\u70b9\u4e4b\u6d77\u201d \u4e2d\uff0c\u63a7\u5236\u5173\u7cfb\u548c\u6570\u636e\u5173\u7cfb\u53c8\u88ab\u653e\u5728\u4e86\u4e00\u8d77\u3002"})]}),"\n",(0,i.jsx)(e.h3,{id:"\u6570\u636e\u6d41\u4e2d\u7684\u652f\u914d\u5173\u7cfb",children:"\u6570\u636e\u6d41\u4e2d\u7684\u652f\u914d\u5173\u7cfb"}),"\n",(0,i.jsx)(e.p,{children:"\u5728\u63a5\u4e0b\u6765\u7684\u5185\u5bb9\u4e2d\uff0c\u6211\u4eec\u91cd\u70b9\u5c06\u4f1a\u8ba8\u8bba\u6570\u636e\u8282\u70b9\uff08\u53d8\u91cf\uff09\u7684\u652f\u914d\u95ee\u9898\u3002"}),"\n",(0,i.jsxs)(e.p,{children:["\u6570\u636e\u6d41\u5206\u6790\u4e2d\uff0c\u53d8\u91cf\u652f\u914d\u662f\u4e00\u4e2a\u975e\u5e38\u91cd\u8981\u7684\u6982\u5ff5\uff0c\u4ed6\u63cf\u8ff0\u4e86\u53d8\u91cf\u4e4b\u95f4\u7684\u4f9d\u8d56\u5173\u7cfb\uff0c\u6211\u4eec\u4ee5 ",(0,i.jsx)(c.GP,{math:"Dom(x, y)"})," \u6765\u8868\u793a\u53d8\u91cf ",(0,i.jsx)(c.GP,{math:"x"})," \u652f\u914d\u53d8\u91cf ",(0,i.jsx)(c.GP,{math:"y"}),"\u3002"]}),"\n",(0,i.jsx)(c.OO,{math:"\n\u5bf9\u4e8e\u53d8\u91cf\\ x\\ \u548c\\ y\uff0c\u5982\u679c\uff1a\\\\\nDom(x,\\ y)\\ \\iff\\ \\text{\u6240\u6709\u5230\u8fbe\\ y\\ \u7684\u8def\u5f84\u90fd\u5fc5\u987b\u7ecf\u8fc7\\ x}\n"}),"\n",(0,i.jsx)(e.p,{children:"\u6211\u4eec\u53ef\u4ee5\u8fdb\u4e00\u6b65\u5f62\u5f0f\u5316\u5b9a\u4e49\u652f\u914d\u5173\u7cfb\uff1a"}),"\n",(0,i.jsx)(c.OO,{math:"\nDom(x,\\ y)\\ =\\ \\begin{cases}\ntrue\\ &\\ \\text{\u82e5\\ x\\ \u652f\u914d\\ y}\\ \\\\\nfalse\\ &\\ \\text{\u5176\u4ed6\u60c5\u51b5}\n\\end{cases}\n"}),"\n",(0,i.jsx)(e.p,{children:"\u5176\u4e2d\uff1a"}),"\n",(0,i.jsxs)(e.ul,{children:["\n",(0,i.jsxs)(e.li,{children:[(0,i.jsx)(c.GP,{math:"x"})," \u662f\u652f\u914d\u8005(dominator)"]}),"\n",(0,i.jsxs)(e.li,{children:[(0,i.jsx)(c.GP,{math:"y"})," \u662f\u88ab\u652f\u914d\u8005(dominee)"]}),"\n"]}),"\n",(0,i.jsx)(e.p,{children:"\u5728\u6df1\u5165\u601d\u8003\uff0c\u6211\u4eec\u8ba4\u4e3a\u652f\u914d\u5e94\u8be5\u5305\u542b\u76f4\u63a5\u652f\u914d\u548c\u95f4\u63a5\u652f\u914d\u4e24\u79cd\uff0c\u56e0\u6b64\u6211\u4eec\u5b9a\u4e49\u4e86\u4e09\u79cd\u652f\u914d\u5173\u7cfb\uff1a"}),"\n",(0,i.jsxs)(e.ol,{children:["\n",(0,i.jsx)(e.li,{children:(0,i.jsx)(e.strong,{children:"\u4e00\u822c\u652f\u914d\u5173\u7cfb"})}),"\n"]}),"\n",(0,i.jsx)(c.OO,{math:"\nDom(x, y) \\iff \\text{\u6240\u6709\u5230\u8fbe y \u7684\u8def\u5f84\u90fd\u5fc5\u987b\u7ecf\u8fc7 x}\n"}),"\n",(0,i.jsxs)(e.ol,{start:"2",children:["\n",(0,i.jsx)(e.li,{children:(0,i.jsx)(e.strong,{children:"\u76f4\u63a5\u652f\u914d\u5173\u7cfb"})}),"\n"]}),"\n",(0,i.jsx)(e.p,{children:"\u76f4\u63a5\u652f\u914d\u5173\u7cfb\u63cf\u8ff0\u4e86\u4e24\u4e2a\u53d8\u91cf\u4e4b\u95f4\u6700\u76f4\u63a5\u7684\u4f9d\u8d56\u5173\u7cfb\uff0c\u6ca1\u6709\u4efb\u4f55\u4e2d\u95f4\u53d8\u91cf\u3002\u5f62\u5f0f\u5316\u5b9a\u4e49\u5982\u4e0b\uff1a"}),"\n",(0,i.jsx)(c.OO,{math:"\niDom(x, y) \\iff \\begin{cases}\nDom(x, y) \\land \\\\\n\\neg\\exists z(Dom(x, z) \\land Dom(z, y)) \\land \\\\\nConnected(x, y)\n\\end{cases}\n"}),"\n",(0,i.jsx)(e.p,{children:"\u5176\u4e2d\uff1a"}),"\n",(0,i.jsxs)(e.ul,{children:["\n",(0,i.jsxs)(e.li,{children:[(0,i.jsx)(c.GP,{math:"Dom(x, y)"})," \u8868\u793a x \u652f\u914d y"]}),"\n",(0,i.jsxs)(e.li,{children:[(0,i.jsx)(c.GP,{math:"\\neg\\exists z(Dom(x, z) \\land Dom(z, y))"})," \u8868\u793a\u4e0d\u5b58\u5728\u4e2d\u95f4\u8282\u70b9 z \u540c\u65f6\u88ab x \u652f\u914d\u4e14\u652f\u914d y"]}),"\n",(0,i.jsxs)(e.li,{children:[(0,i.jsx)(c.GP,{math:"Connected(x, y)"})," \u8868\u793a x \u548c y \u5728\u6570\u636e\u6d41\u56fe\u4e2d\u76f4\u63a5\u76f8\u8fde"]}),"\n"]}),"\n",(0,i.jsxs)(e.ol,{start:"3",children:["\n",(0,i.jsx)(e.li,{children:(0,i.jsx)(e.strong,{children:"\u95f4\u63a5\u652f\u914d\u5173\u7cfb"})}),"\n"]}),"\n",(0,i.jsx)(c.OO,{math:"\nindirectDom(x, y) \\iff \\begin{cases}\nDom(x, y) \\land \\\\\n\\exists z(Dom(x, z) \\land Dom(z, y))\n\\end{cases}\n"}),"\n",(0,i.jsx)(e.p,{children:"\u8ba9\u6211\u4eec\u901a\u8fc7\u4e00\u4e2a\u5177\u4f53\u7684\u4ee3\u7801\u793a\u4f8b\u6765\u7406\u89e3\u4e0a\u8ff0\u7684\u5185\u5bb9\uff1a"}),"\n",(0,i.jsx)(e.pre,{children:(0,i.jsx)(e.code,{className:"language-go",children:"a = input() // 1\nb = a + 1 // 2\nif a > 0 { // 3\n c = b + 2 // 4\n} else {\n c = b - 2 // 5\n}\nd = c * 2 // 6\n"})}),"\n",(0,i.jsx)(e.p,{children:"\u6211\u4eec\u53ef\u4ee5\u7ed8\u5236\u8fd9\u6bb5\u4ee3\u7801\u7684\u6570\u636e\u6d41\u56fe\u548c\u652f\u914d\u5173\u7cfb\uff1a"}),"\n",(0,i.jsx)(e.mermaid,{value:'graph LR\n A["a (1)"] --\x3e|"\u76f4\u63a5\u652f\u914d"| B["b (2)"]\n B --\x3e C1["c (4: b + 2)"]\n B --\x3e C2["c (5: b - 2)"]\n C1 --\x3e D["d (6)"]\n C2 --\x3e D\n B -.->|"\u95f4\u63a5\u652f\u914d"| D\n A -.->|"\u95f4\u63a5\u652f\u914d"| D\n \n %% \u4f7f\u7528\u4e0d\u540c\u7684\u6837\u5f0f\u6765\u7a81\u51fa\u652f\u914d\u5173\u7cfb\n classDef default fill:#f9f,stroke:#333,stroke-width:2px;\n linkStyle default stroke:#666,stroke-width:2px;\n'}),"\n",(0,i.jsxs)(e.p,{children:["\u4e0a\u8ff0\u652f\u914d\u5173\u7cfb\u6709\u70b9\u5947\u602a\uff0c\u56e0\u4e3a IF \u5206\u652f\u7684\u5b58\u5728\uff0c\u5bfc\u81f4\u6709\u4e24\u4e2a ",(0,i.jsx)(e.code,{children:"C"})," \u8282\u70b9\u3002\u4f46\u662f\u5728 \u201c\u53d8\u91cf\u201d \u7684\u89d2\u5ea6\u6765\u8bf4\uff0c\u6211\u4eec\u5e94\u8be5\u5408\u5e76 C\uff0c\u6211\u4eec\u4f1a\u53ea\u51fa\u6765\u7684\u652f\u914d\u5173\u7cfb\u5e94\u8be5\u5982\u4e0b\uff1a"]}),"\n",(0,i.jsx)(e.mermaid,{value:'graph LR\n A["a"] --\x3e B["b"]\n B --\x3e C["c"]\n C --\x3e D["d"]\n \n classDef default fill:#bbf,stroke:#333,stroke-width:2px;'}),"\n",(0,i.jsx)(e.admonition,{title:"\u6ce8\u610f",type:"caution",children:(0,i.jsx)(e.p,{children:"\u4e0a\u8ff0\u56fe\u793a\u4e2d\uff0c\u6211\u4eec\u53ea\u4fdd\u7559\u4e86\u53d8\u91cf C\uff0c\u8fd9\u663e\u7136\u662f\u770b\u7740\u975e\u5e38\u522b\u626d\u7684\uff0c\u6211\u4eec\u4e60\u60ef\u4e86 SSA \u601d\u8def\u4e4b\u540e\uff0c\u4e0a\u8ff0\u56fe\u663e\u7136\u662f\u4e0d\u5408\u9002\u7684\uff0c\u6211\u4eec\u540e\u7eed\u5c31\u8981\u89e3\u51b3\u8fd9\u4e2a\u95ee\u9898"})}),"\n",(0,i.jsx)(e.p,{children:"\u63a5\u4e0b\u6765\uff0c\u6211\u4eec\u518d\u6765\u8ba8\u8bba\u53e6\u4e00\u4e2a\u6848\u4f8b\uff0c\u8fd9\u662f\u4e00\u4e2a\u6613\u9519\u70b9\u3002"}),"\n",(0,i.jsx)(e.pre,{children:(0,i.jsx)(e.code,{className:"language-java",children:"a = input()\nb = input()\nc = a + b\n"})}),"\n",(0,i.jsxs)(e.p,{children:["\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u53d8\u91cf ",(0,i.jsx)(e.code,{children:"c"})," \u540c\u65f6\u4f9d\u8d56\u4e8e ",(0,i.jsx)(e.code,{children:"a"})," \u548c ",(0,i.jsx)(e.code,{children:"b"}),"\uff0c\u4f46\u662f\u5e76\u4e0d\u80fd\u8bf4 ",(0,i.jsx)(e.code,{children:"a"})," \u652f\u914d ",(0,i.jsx)(e.code,{children:"c"}),"\uff0c\u6216\u8005\u4e5f\u4e0d\u80fd\u8bf4 ",(0,i.jsx)(e.code,{children:"b"})," \u652f\u914d ",(0,i.jsx)(e.code,{children:"c"}),"\u3002"]}),"\n",(0,i.jsxs)(e.p,{children:[(0,i.jsx)(e.code,{children:"a"})," \u548c ",(0,i.jsx)(e.code,{children:"b"})," \u4ec5\u4ec5\u662f ",(0,i.jsx)(e.code,{children:"c"})," \u7684\u524d\u7ee7\u8282\u70b9\u3002"]}),"\n",(0,i.jsx)(e.h3,{id:"\u6570\u636e\u8282\u70b9\u53d8\u91cf\u652f\u914d\u8fb9\u754c",children:"\u6570\u636e\u8282\u70b9\uff08\u53d8\u91cf\uff09\u652f\u914d\u8fb9\u754c"}),"\n",(0,i.jsx)(e.p,{children:"\u5728\u7528\u6237\u4e86\u89e3\u5b8c\u652f\u914d\u95ee\u9898\u4e4b\u540e\uff0c\u63a5\u4e0b\u6765\u6211\u4eec\u63d0\u51fa\u4e00\u4e2a\u95ee\u9898\uff0c\u201c\u4e00\u4e2a\u6570\u636e\u8282\u70b9\u7684\u652f\u914d\u7684\u8303\u56f4\u6709\u591a\u5927\uff1f\u201d"}),"\n",(0,i.jsx)(e.p,{children:"\u8981\u56de\u7b54\u8fd9\u4e2a\u95ee\u9898\uff0c\u6211\u4eec\u9700\u8981\u5b9a\u4e49\u4e00\u4e2a\u6982\u5ff5\u53eb\u652f\u914d\u8fb9\u754c\u3002\u8003\u8651\u4efb\u4f55\u79bb\u5f00\u5757 B \u7684\u8def\u5f84\u3002\u6700\u521d\u8def\u5f84\u4e0a\u7684\u5757\u7531 B \u652f\u914d\u3002\u6700\u7ec8\u5230\u8fbe\u4e00\u4e2a\u4e0d\u7531 B \u652f\u914d\u7684\u5757\u3002\u9664\u975e\u8def\u5f84\u8fd4\u56de\u5230 B\uff0c\u5426\u5219\u4e4b\u540e\u7684\u6240\u6709\u5757\u90fd\u4e0d\u53d7 B \u652f\u914d\u3002\u4e0d\u88ab B \u652f\u914d\u7684\u7b2c\u4e00\u4e2a\u5757\u662f\u91cd\u8981\u7684\uff0c\u56e0\u4e3a\u5b83\u6307\u793a\u4e86 B \u652f\u914d\u7684\u5757\u7684\u8303\u56f4\uff0c\u5e76\u4f7f\u7528\u6709\u5173 B \u4e2d\u7684\u8ba1\u7b97\u7684\u4fe1\u606f\u6307\u793a\u4e86\u4f18\u5316\u7684\u9650\u5236\u3002\u8003\u8651\u5230\u6240\u6709\u8def\u5f84\uff0c\u62e5\u6709\u8be5\u7279\u5f81\u7684\u5757\u7684\u96c6\u5408\u79f0\u4e3a\u652f\u914d B \u7684\u8fb9\u754c\u3002"}),"\n",(0,i.jsx)(e.p,{children:"\u8ba9\u6211\u4eec\u9996\u5148\u7ed9\u51fa\u652f\u914d\u8fb9\u754c\u7684\u5f62\u5f0f\u5316\u5b9a\u4e49\uff1a"}),"\n",(0,i.jsx)(c.OO,{math:"\nDF(X) = \\{Y | \\exists Z \\in Dom(X) \\text{ such that } Y \\text{ is an immediate successor of } Z \\text{ and } X \\not\\in Dom(Y)\\}\n"}),"\n",(0,i.jsx)(e.p,{children:"\u5176\u4e2d\uff1a"}),"\n",(0,i.jsxs)(e.ul,{children:["\n",(0,i.jsxs)(e.li,{children:[(0,i.jsx)(c.GP,{math:"DF(X)"})," \u8868\u793a\u8282\u70b9X\u7684\u652f\u914d\u8fb9\u754c"]}),"\n",(0,i.jsxs)(e.li,{children:[(0,i.jsx)(c.GP,{math:"Dom(X)"})," \u8868\u793a\u88abX\u652f\u914d\u7684\u8282\u70b9\u96c6\u5408"]}),"\n",(0,i.jsx)(e.li,{children:"Y\u662fX\u7684\u652f\u914d\u8fb9\u754c\u4e2d\u7684\u4e00\u4e2a\u8282\u70b9"}),"\n",(0,i.jsx)(e.li,{children:"Z\u662f\u88abX\u652f\u914d\u7684\u67d0\u4e2a\u8282\u70b9"}),"\n",(0,i.jsx)(e.li,{children:"Y\u662fZ\u7684\u76f4\u63a5\u540e\u7ee7\u8282\u70b9"}),"\n",(0,i.jsx)(e.li,{children:"X\u4e0d\u652f\u914dY"}),"\n"]}),"\n",(0,i.jsx)(e.p,{children:"\u8ba9\u6211\u4eec\u7528\u4e00\u4e2a\u5177\u4f53\u7684\u4f8b\u5b50\u6765\u8bf4\u660e\uff1a"}),"\n",(0,i.jsx)(e.mermaid,{value:'graph LR\n subgraph cluster [" "]\n style cluster fill:#E8E8E8,stroke:#CCCCCC\n 5 --\x3e 6\n 6 --\x3e 8\n 6 --\x3e 7\n 7 --\x3e 8\n end\n 1 --\x3e 2\n 2 --\x3e 3\n 3 --\x3e 4\n 4 --\x3e 13\n 1 --\x3e 5\n 8 --\x3e 13\n 6 --\x3e 4\n 7 --\x3e 12\n 12 --\x3e 13\n 1 --\x3e 9\n 9 --\x3e 10\n 10 --\x3e 12\n 9 --\x3e 11\n 11 --\x3e 12'}),"\n",(0,i.jsx)(e.p,{children:"\u6211\u4eec\u7ed9\u51fa\u56fe\u4e2d\u5404\u8282\u70b9\u7684\u652f\u914d\u8fb9\u754c\u5206\u6790\u8868\u683c\uff1a"}),"\n",(0,i.jsxs)(e.table,{children:[(0,i.jsx)(e.thead,{children:(0,i.jsxs)(e.tr,{children:[(0,i.jsx)(e.th,{children:"\u8282\u70b9"}),(0,i.jsx)(e.th,{children:"\u652f\u914d\u7684\u8282\u70b9\u96c6\u5408 Dom(X)"}),(0,i.jsx)(e.th,{children:"\u76f4\u63a5\u540e\u7ee7\u8282\u70b9"}),(0,i.jsx)(e.th,{children:"\u652f\u914d\u8fb9\u754c DF(X)"})]})}),(0,i.jsxs)(e.tbody,{children:[(0,i.jsxs)(e.tr,{children:[(0,i.jsx)(e.td,{children:"1"}),(0,i.jsx)(e.td,{children:"{1,2,3,4,5,6,7,8,9,10,11,12,13}"}),(0,i.jsx)(e.td,{children:"{2,5,9}"}),(0,i.jsx)(e.td,{children:"\u2205"})]}),(0,i.jsxs)(e.tr,{children:[(0,i.jsx)(e.td,{children:"2"}),(0,i.jsx)(e.td,{children:"{2,3}"}),(0,i.jsx)(e.td,{children:"{3}"}),(0,i.jsx)(e.td,{children:"{4}"})]}),(0,i.jsxs)(e.tr,{children:[(0,i.jsx)(e.td,{children:"3"}),(0,i.jsx)(e.td,{children:"{3}"}),(0,i.jsx)(e.td,{children:"{4}"}),(0,i.jsx)(e.td,{children:"{4}"})]}),(0,i.jsxs)(e.tr,{children:[(0,i.jsx)(e.td,{children:"4"}),(0,i.jsx)(e.td,{children:"{4}"}),(0,i.jsx)(e.td,{children:"{13}"}),(0,i.jsx)(e.td,{children:"{13}"})]}),(0,i.jsxs)(e.tr,{children:[(0,i.jsx)(e.td,{children:"5"}),(0,i.jsx)(e.td,{children:"{5,6,7,8}"}),(0,i.jsx)(e.td,{children:"{6}"}),(0,i.jsx)(e.td,{children:"{4,12,13}"})]}),(0,i.jsxs)(e.tr,{children:[(0,i.jsx)(e.td,{children:"6"}),(0,i.jsx)(e.td,{children:"{6,7,8}"}),(0,i.jsx)(e.td,{children:"{4,7,8}"}),(0,i.jsx)(e.td,{children:"{4,12,13}"})]}),(0,i.jsxs)(e.tr,{children:[(0,i.jsx)(e.td,{children:"7"}),(0,i.jsx)(e.td,{children:"{7}"}),(0,i.jsx)(e.td,{children:"{8,12}"}),(0,i.jsx)(e.td,{children:"{8,12}"})]}),(0,i.jsxs)(e.tr,{children:[(0,i.jsx)(e.td,{children:"8"}),(0,i.jsx)(e.td,{children:"{8}"}),(0,i.jsx)(e.td,{children:"{13}"}),(0,i.jsx)(e.td,{children:"{13}"})]}),(0,i.jsxs)(e.tr,{children:[(0,i.jsx)(e.td,{children:"9"}),(0,i.jsx)(e.td,{children:"{9,10,11}"}),(0,i.jsx)(e.td,{children:"{10,11}"}),(0,i.jsx)(e.td,{children:"{12}"})]}),(0,i.jsxs)(e.tr,{children:[(0,i.jsx)(e.td,{children:"10"}),(0,i.jsx)(e.td,{children:"{10}"}),(0,i.jsx)(e.td,{children:"{12}"}),(0,i.jsx)(e.td,{children:"{12}"})]}),(0,i.jsxs)(e.tr,{children:[(0,i.jsx)(e.td,{children:"11"}),(0,i.jsx)(e.td,{children:"{11}"}),(0,i.jsx)(e.td,{children:"{12}"}),(0,i.jsx)(e.td,{children:"{12}"})]}),(0,i.jsxs)(e.tr,{children:[(0,i.jsx)(e.td,{children:"12"}),(0,i.jsx)(e.td,{children:"{12}"}),(0,i.jsx)(e.td,{children:"{13}"}),(0,i.jsx)(e.td,{children:"{13}"})]}),(0,i.jsxs)(e.tr,{children:[(0,i.jsx)(e.td,{children:"13"}),(0,i.jsx)(e.td,{children:"{13}"}),(0,i.jsx)(e.td,{children:"\u2205"}),(0,i.jsx)(e.td,{children:"\u2205"})]})]})]}),"\n",(0,i.jsx)(e.p,{children:"\u7ed9\u51fa\u652f\u914d\u8fb9\u754c\u8ba1\u7b97\u7b97\u6cd5\u7684\u5f62\u5f0f\u5316\u8868\u793a\uff1a"}),"\n",(0,i.jsx)(c.OO,{math:"\n\\begin{aligned}\nDF_{local}(X) &= \\{Y \\in succ(X) \\mid X \\not\\in Dom(Y)\\} \\\\\nDF_{up}(X) &= \\bigcup_{Z \\in DomTree_{children}(X)} \\{Y \\in DF(Z) \\mid X \\not\\in Dom(Y)\\} \\\\\nDF(X) &= DF_{local}(X) \\cup DF_{up}(X)\n\\end{aligned}\n"}),"\n",(0,i.jsx)(e.p,{children:"\u5176\u4e2d\uff1a"}),"\n",(0,i.jsxs)(e.ul,{children:["\n",(0,i.jsxs)(e.li,{children:[(0,i.jsx)(c.GP,{math:"DF_{local}(X)"})," \u8868\u793a\u8282\u70b9X\u7684\u5c40\u90e8\u652f\u914d\u8fb9\u754c"]}),"\n",(0,i.jsxs)(e.li,{children:[(0,i.jsx)(c.GP,{math:"DF_{up}(X)"})," \u8868\u793a\u4eceX\u7684\u652f\u914d\u6811\u5b50\u8282\u70b9\u4e0a\u4f20\u9012\u6765\u7684\u652f\u914d\u8fb9\u754c"]}),"\n",(0,i.jsxs)(e.li,{children:[(0,i.jsx)(c.GP,{math:"succ(X)"})," \u8868\u793aX\u7684\u76f4\u63a5\u540e\u7ee7\u8282\u70b9\u96c6\u5408"]}),"\n",(0,i.jsxs)(e.li,{children:[(0,i.jsx)(c.GP,{math:"DomTree_{children}(X)"})," \u8868\u793aX\u5728\u652f\u914d\u6811\u4e2d\u7684\u76f4\u63a5\u5b50\u8282\u70b9\u96c6\u5408"]}),"\n"]}),"\n",(0,i.jsx)(e.p,{children:"\u4e0b\u9762\u662f\u8ba1\u7b97\u652f\u914d\u8fb9\u754c\u7684\u5b8c\u6574\u7b97\u6cd5\u4f2a\u4ee3\u7801\uff1a"}),"\n",(0,i.jsx)(e.pre,{children:(0,i.jsx)(e.code,{className:"language-javascript",children:"// \u8ba1\u7b97\u6240\u6709\u8282\u70b9\u7684\u652f\u914d\u8fb9\u754c\nfunction computeDominanceFrontiers(cfg) {\n let DF = new Map() // \u5b58\u50a8\u6bcf\u4e2a\u8282\u70b9\u7684\u652f\u914d\u8fb9\u754c\n \n // \u6309\u7167\u652f\u914d\u6811\u7684\u540e\u5e8f\u904d\u5386\u8282\u70b9\n for (let X of postorderTraversal(cfg.domTree)) {\n DF.set(X, new Set()) // \u521d\u59cb\u5316\u7a7a\u96c6\n \n // \u8ba1\u7b97\u5c40\u90e8\u652f\u914d\u8fb9\u754c\n for (let Y of X.successors) {\n if (X.immediateDominator !== Y.immediateDominator) {\n DF.get(X).add(Y)\n }\n }\n \n // \u8ba1\u7b97\u6765\u81ea\u5b50\u8282\u70b9\u7684\u652f\u914d\u8fb9\u754c\n for (let Z of X.domTreeChildren) {\n for (let Y of DF.get(Z)) {\n if (!dominates(X, Y) || X === Y) {\n DF.get(X).add(Y)\n }\n }\n }\n }\n return DF\n}\n\n// \u5224\u65adX\u662f\u5426\u652f\u914dY\nfunction dominates(X, Y) {\n return Y.dominators.has(X)\n}\n"})}),"\n",(0,i.jsx)(e.h3,{id:"\u6570\u636e\u6d41\u4e0e-uddu-\u94fe",children:"\u6570\u636e\u6d41\u4e0e UD(DU) \u94fe"}),"\n",(0,i.jsx)(e.h3,{id:"\u5b9a\u4e49\u8de8\u8fc7\u7a0b\u5206\u6790",children:"\u5b9a\u4e49\u8de8\u8fc7\u7a0b\u5206\u6790"}),"\n",(0,i.jsx)(e.h2,{id:"\u6570\u636e\u6d41\u7684\u8de8\u8fc7\u7a0b\u5206\u6790",children:"\u6570\u636e\u6d41\u7684\u8de8\u8fc7\u7a0b\u5206\u6790"}),"\n",(0,i.jsx)(e.h3,{id:"\u57fa\u7840\u8bdd\u9898\u901a\u8fc7\u51fd\u6570\u8c03\u7528\u8de8\u8fc7\u7a0b",children:"\u57fa\u7840\u8bdd\u9898\uff1a\u901a\u8fc7\u51fd\u6570\u8c03\u7528\u8de8\u8fc7\u7a0b"}),"\n",(0,i.jsx)(e.h3,{id:"\u8fdb\u9636\u8bdd\u9898\u901a\u8fc7\u95ed\u5305\u8de8\u8fc7\u7a0b",children:"\u8fdb\u9636\u8bdd\u9898\uff1a\u901a\u8fc7\u95ed\u5305\u8de8\u8fc7\u7a0b"}),"\n",(0,i.jsx)(e.h3,{id:"\u8fdb\u9636\u8bdd\u9898\u5e7f\u4e49\u8de8\u8fc7\u7a0b\u5b9a\u4e49",children:"\u8fdb\u9636\u8bdd\u9898\uff1a\u5e7f\u4e49\u8de8\u8fc7\u7a0b\u5b9a\u4e49"}),"\n",(0,i.jsx)(e.h2,{id:"\u904d\u5386\u6570\u636e\u6d41",children:"\u904d\u5386\u6570\u636e\u6d41"}),"\n",(0,i.jsx)(e.h3,{id:"uddu-\u94fe\u4e0e\u5206\u6790\u65b9\u5411",children:"UD(DU) \u94fe\u4e0e\u5206\u6790\u65b9\u5411"}),"\n",(0,i.jsx)(e.h3,{id:"\u81ea\u9876\u5411\u4e0b\u4ece\u5b9a\u4e49def\u5230\u4f7f\u7528use",children:"\u81ea\u9876\u5411\u4e0b\uff1a\u4ece\u5b9a\u4e49(Def)\u5230\u4f7f\u7528(Use)"}),"\n",(0,i.jsx)(e.h3,{id:"\u81ea\u5e95\u5411\u4e0a\u4ece\u4f7f\u7528use\u5230\u5b9a\u4e49def",children:"\u81ea\u5e95\u5411\u4e0a\uff1a\u4ece\u4f7f\u7528(Use)\u5230\u5b9a\u4e49(Def)"})]})}function j(n={}){const{wrapper:e}={...(0,l.R)(),...n.components};return e?(0,i.jsx)(e,{...n,children:(0,i.jsx)(o,{...n})}):o(n)}},97015:(n,e,s)=>{s.d(e,{Ay:()=>a,GP:()=>h,OO:()=>o});var d=s(96540),i=s(22130),l=s(20354),r=s.n(l),c=s(74848);const t={throwOnError:!1,strict:!1,trust:!1,macros:{"\\RR":"\\mathbb{R}","\\NN":"\\mathbb{N}","\\ZZ":"\\mathbb{Z}"}},x=n=>{let{math:e,inline:s=!1,onError:l,options:x={},className:a=""}=n;const h=(0,d.useRef)(null),[o,j]=(0,d.useState)(!1),[p,u]=(0,d.useState)(!1),[m,f]=(0,d.useState)(!1),[b,g]=(0,d.useState)(!1),[D,v]=(0,d.useState)({message:"",visible:!1});(0,d.useEffect)((()=>{if(h.current)try{i.default.render(e,h.current,{...t,...x,displayMode:!s})}catch(n){l?l(n):(console.error("KaTeX Error:",n),h.current&&(h.current.textContent=e))}}),[e,s,x,l]);const y=n=>{v({message:n,visible:!0}),setTimeout((()=>{v({message:"",visible:!1})}),2e3)};return(0,c.jsxs)("div",{className:"katex-wrapper "+(o?"hovered":""),onMouseEnter:()=>j(!0),onMouseLeave:()=>j(!1),style:{position:"relative",padding:"8px",border:o?"2px solid #4a90e2":"1px solid transparent",borderRadius:"4px",display:s?"inline-block":"block",transition:"all 0.3s ease",boxShadow:o?"0 0 8px rgba(74, 144, 226, 0.3)":"none"},children:[D.visible&&(0,c.jsx)("div",{style:{position:"fixed",top:"50%",left:"50%",transform:"translate(-50%, -50%)",background:"rgba(0, 0, 0, 0.7)",color:"#fff",padding:"8px 16px",borderRadius:"4px",fontSize:"14px",zIndex:1e3,pointerEvents:"none"},children:D.message}),o&&(0,c.jsxs)("div",{style:{position:"absolute",top:"4px",right:"4px",display:"flex",gap:"8px",zIndex:1},children:[(0,c.jsx)("button",{onClick:async()=>{h.current&&(g(!0),setTimeout((async()=>{try{const n=document.createElement("div");n.style.padding="12px 0";const e=h.current?.cloneNode(!0);if(!e)throw new Error("\u65e0\u6cd5\u514b\u9686\u8282\u70b9");n.appendChild(e),document.body.appendChild(n);const s=await r()(n,{backgroundColor:null,scale:2});document.body.removeChild(n),s.toBlob((async n=>{if(n)try{await navigator.clipboard.write([new ClipboardItem({"image/png":n})]),f(!0),y("\u56fe\u7247\u5df2\u590d\u5236\u5230\u526a\u8d34\u677f"),setTimeout((()=>{f(!1)}),2e3)}catch(e){console.error("\u590d\u5236\u56fe\u7247\u5931\u8d25:",e),y("\u590d\u5236\u56fe\u7247\u5931\u8d25\uff0c\u8bf7\u91cd\u8bd5")}}),"image/png")}catch(n){console.error("\u751f\u6210\u56fe\u7247\u5931\u8d25:",n),y("\u751f\u6210\u56fe\u7247\u5931\u8d25\uff0c\u8bf7\u91cd\u8bd5")}finally{g(!1)}}),500))},disabled:b,style:{padding:"4px 12px",background:m?"#52c41a":b?"#d9d9d9":"#f5f5f5",border:"1px solid "+(m?"#52c41a":b?"#d9d9d9":"#e0e0e0"),borderRadius:"4px",cursor:b?"not-allowed":"pointer",fontSize:"12px",color:m?"#fff":b?"#999":"#666",transition:"all 0.3s ease",display:"flex",alignItems:"center",gap:"4px",opacity:b?.7:1},children:m?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)("span",{style:{fontSize:"14px"},children:"\u2713"}),"\u5df2\u590d\u5236\u56fe\u7247"]}):b?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)("span",{style:{display:"inline-block",animation:"spin 1s linear infinite"},children:"\u27f3"}),"\u5bfc\u51fa\u4e2d..."]}):"\u590d\u5236\u4e3a\u56fe\u7247"}),(0,c.jsx)("button",{onClick:()=>{navigator.clipboard.writeText(e),u(!0),setTimeout((()=>{u(!1)}),2e3)},style:{padding:"4px 12px",background:p?"#52c41a":"#f5f5f5",border:"1px solid "+(p?"#52c41a":"#e0e0e0"),borderRadius:"4px",cursor:"pointer",fontSize:"12px",color:p?"#fff":"#666",transition:"all 0.3s ease",display:"flex",alignItems:"center",gap:"4px"},children:p?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)("span",{style:{fontSize:"14px"},children:"\u2713"}),"\u5df2\u590d\u5236"]}):"\u590d\u5236"})]}),(0,c.jsx)("div",{ref:h,className:`katex-container ${s?"inline":"block"} ${a}`})]})},a=x,h=n=>(0,c.jsx)(x,{...n,inline:!0}),o=n=>(0,c.jsx)(x,{...n,inline:!1})}}]); \ No newline at end of file diff --git a/assets/js/2bf1e827.64587e3b.js b/assets/js/2bf1e827.64587e3b.js deleted file mode 100644 index 41ae932..0000000 --- a/assets/js/2bf1e827.64587e3b.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkssa_to=self.webpackChunkssa_to||[]).push([[7418],{84846:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>a,contentTitle:()=>x,default:()=>j,frontMatter:()=>t,metadata:()=>d,toc:()=>h});const d=JSON.parse('{"id":"deep-dive-into-ssa-dataflow-and-cross-procedure","title":"\u7b2c\u516d\u7ae0\uff1aSSA \u6570\u636e\u6d41\u4e0e\u8de8\u8fc7\u7a0b\u5206\u6790","description":"\u5728\u5bf9\u95ed\u5305\u548c OOP \u7684\u8ba8\u8bba\u7ed3\u675f\u540e\uff0c\u6211\u4eec\u57fa\u672c\u53ef\u4ee5\u77e5\u9053\u73b0\u4ee3\u7f16\u7a0b\u8bed\u8a00\u7684\u5927\u90e8\u5206\u8bed\u6cd5\u548c\u7279\u6027\u90fd\u662f\u53ef\u4ee5\u7528 SSA \u6765\u8868\u793a\u7684\u3002\u524d\u9762\u7684\u6240\u6709\u5185\u5bb9\u5171\u540c\u6784\u6210\u4e86\u6211\u4eec\u540e\u7eed\u8ba8\u8bba\u7684\u57fa\u7840\u3002","source":"@site/static-analysis-guide/deep-dive-into-ssa-dataflow-and-cross-procedure.mdx","sourceDirName":".","slug":"/deep-dive-into-ssa-dataflow-and-cross-procedure","permalink":"/static-analysis-guide/deep-dive-into-ssa-dataflow-and-cross-procedure","draft":false,"unlisted":false,"editUrl":"https://github.com/yaklang/ssa.to/tree/main/static-analysis-guide/static-analysis-guide/deep-dive-into-ssa-dataflow-and-cross-procedure.mdx","tags":[],"version":"current","lastUpdatedBy":"v1ll4n","lastUpdatedAt":1734071536000,"frontMatter":{},"sidebar":"staticAnalysisGuideSidebar","previous":{"title":"\u7b2c\u4e94\u7ae0\uff1aSSA \u6df1\u6c34\u533a - OOP\u4e0e\u65e0\u7c7b","permalink":"/static-analysis-guide/deep-dive-into-ssa-oop"}}');var i=s(74848),l=s(28453),r=s(14252),c=s(97015);const t={},x="\u7b2c\u516d\u7ae0\uff1aSSA \u6570\u636e\u6d41\u4e0e\u8de8\u8fc7\u7a0b\u5206\u6790",a={},h=[{value:"\u6570\u636e\u6d41\u57fa\u672c\u6982\u5ff5",id:"\u6570\u636e\u6d41\u57fa\u672c\u6982\u5ff5",level:2},{value:"\u6570\u636e\u6d41\u4e0e\u63a7\u5236\u6d41\u5206\u79bb",id:"\u6570\u636e\u6d41\u4e0e\u63a7\u5236\u6d41\u5206\u79bb",level:3},{value:"\u5b9a\u4e49",id:"\u5b9a\u4e49",level:4},{value:"\u6570\u636e\u6d41\u4e2d\u7684\u652f\u914d\u5173\u7cfb",id:"\u6570\u636e\u6d41\u4e2d\u7684\u652f\u914d\u5173\u7cfb",level:3},{value:"\u6570\u636e\u8282\u70b9\uff08\u53d8\u91cf\uff09\u652f\u914d\u8fb9\u754c",id:"\u6570\u636e\u8282\u70b9\u53d8\u91cf\u652f\u914d\u8fb9\u754c",level:3},{value:"\u6570\u636e\u6d41\u4e0e UD(DU) \u94fe",id:"\u6570\u636e\u6d41\u4e0e-uddu-\u94fe",level:3},{value:"\u5b9a\u4e49\u8de8\u8fc7\u7a0b\u5206\u6790",id:"\u5b9a\u4e49\u8de8\u8fc7\u7a0b\u5206\u6790",level:3},{value:"\u6570\u636e\u6d41\u7684\u8de8\u8fc7\u7a0b\u5206\u6790",id:"\u6570\u636e\u6d41\u7684\u8de8\u8fc7\u7a0b\u5206\u6790",level:2},{value:"\u57fa\u7840\u8bdd\u9898\uff1a\u901a\u8fc7\u51fd\u6570\u8c03\u7528\u8de8\u8fc7\u7a0b",id:"\u57fa\u7840\u8bdd\u9898\u901a\u8fc7\u51fd\u6570\u8c03\u7528\u8de8\u8fc7\u7a0b",level:3},{value:"\u8fdb\u9636\u8bdd\u9898\uff1a\u901a\u8fc7\u95ed\u5305\u8de8\u8fc7\u7a0b",id:"\u8fdb\u9636\u8bdd\u9898\u901a\u8fc7\u95ed\u5305\u8de8\u8fc7\u7a0b",level:3},{value:"\u8fdb\u9636\u8bdd\u9898\uff1a\u5e7f\u4e49\u8de8\u8fc7\u7a0b\u5b9a\u4e49",id:"\u8fdb\u9636\u8bdd\u9898\u5e7f\u4e49\u8de8\u8fc7\u7a0b\u5b9a\u4e49",level:3},{value:"\u904d\u5386\u6570\u636e\u6d41",id:"\u904d\u5386\u6570\u636e\u6d41",level:2},{value:"UD(DU) \u94fe\u4e0e\u5206\u6790\u65b9\u5411",id:"uddu-\u94fe\u4e0e\u5206\u6790\u65b9\u5411",level:3},{value:"\u81ea\u9876\u5411\u4e0b\uff1a\u4ece\u5b9a\u4e49(Def)\u5230\u4f7f\u7528(Use)",id:"\u81ea\u9876\u5411\u4e0b\u4ece\u5b9a\u4e49def\u5230\u4f7f\u7528use",level:3},{value:"\u81ea\u5e95\u5411\u4e0a\uff1a\u4ece\u4f7f\u7528(Use)\u5230\u5b9a\u4e49(Def)",id:"\u81ea\u5e95\u5411\u4e0a\u4ece\u4f7f\u7528use\u5230\u5b9a\u4e49def",level:3}];function o(e){const n={admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",hr:"hr",li:"li",mermaid:"mermaid",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,l.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.header,{children:(0,i.jsx)(n.h1,{id:"\u7b2c\u516d\u7ae0ssa-\u6570\u636e\u6d41\u4e0e\u8de8\u8fc7\u7a0b\u5206\u6790",children:"\u7b2c\u516d\u7ae0\uff1aSSA \u6570\u636e\u6d41\u4e0e\u8de8\u8fc7\u7a0b\u5206\u6790"})}),"\n",(0,i.jsx)(n.p,{children:"\u5728\u5bf9\u95ed\u5305\u548c OOP \u7684\u8ba8\u8bba\u7ed3\u675f\u540e\uff0c\u6211\u4eec\u57fa\u672c\u53ef\u4ee5\u77e5\u9053\u73b0\u4ee3\u7f16\u7a0b\u8bed\u8a00\u7684\u5927\u90e8\u5206\u8bed\u6cd5\u548c\u7279\u6027\u90fd\u662f\u53ef\u4ee5\u7528 SSA \u6765\u8868\u793a\u7684\u3002\u524d\u9762\u7684\u6240\u6709\u5185\u5bb9\u5171\u540c\u6784\u6210\u4e86\u6211\u4eec\u540e\u7eed\u8ba8\u8bba\u7684\u57fa\u7840\u3002"}),"\n",(0,i.jsx)(n.p,{children:"\u90a3\u4e48\uff0c\u63a5\u4e0b\u6765\u6211\u4eec\u5c31\u4f1a\u8fdb\u4e00\u6b65\u8ba8\u8bba\u9759\u6001\u5206\u6790\u5728 SSA \u89c6\u89d2\u4e0b\u5c06\u4f1a\u53d8\u7684\u591a\u7b80\u5355\u3002"}),"\n",(0,i.jsxs)(n.admonition,{title:"\u672c\u7ae0\u76ee\u6807",type:"tip",children:[(0,i.jsx)(n.p,{children:"\u57fa\u672c\u4e86\u89e3 SSA \u89c6\u89d2\u4e0b\u7684\u6570\u636e\u6d41\u5206\u6790\u548c\u8de8\u8fc7\u7a0b\u5206\u6790\u3002"}),(0,i.jsx)(n.p,{children:"\u77e5\u9053 Yak SSA \u7cfb\u7edf\u662f\u5982\u4f55\u5b9e\u73b0\u6570\u636e\u6d41\u5206\u6790\u548c\u8de8\u8fc7\u7a0b\u5206\u6790\uff0c\u4ed6\u4eec\u7684\u8868\u73b0\u5982\u4f55\u3002"})]}),"\n","\n",(0,i.jsx)(r.A,{toc:h}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h2,{id:"\u6570\u636e\u6d41\u57fa\u672c\u6982\u5ff5",children:"\u6570\u636e\u6d41\u57fa\u672c\u6982\u5ff5"}),"\n",(0,i.jsx)(n.p,{children:"\u5728\u672c\u7ae0\u5f00\u59cb\uff0c\u6211\u4eec\u9700\u8981\u91cd\u6e29\u9759\u6001\u5206\u6790\u4e2d\u7684\u4e24\u4e2a\u91cd\u8981\u4e14\u4ee4\u4eba\u5934\u75bc\u7684\u8bdd\u9898\uff0c\u6570\u636e\u6d41\u548c\u8de8\u8fc7\u7a0b\u5206\u6790\u3002\u5e76\u4e14\u7ed3\u5408\u6211\u4eec\u524d\u9762\u8ba8\u8bba\u7684 SSA \u7cfb\u7edf\uff0c\u6765\u8ba8\u8bba\u8fd9\u4e24\u4e2a\u8bdd\u9898\u3002\u8bfb\u8005\u53ef\u4ee5\u5f88\u5bb9\u6613\u53d1\u73b0\u8fd9\u4e24\u4e2a\u8bdd\u9898\u5728 SSA \u7cfb\u7edf\u5c06\u53d8\u7684\u975e\u5e38\u5177\u8c61\u3002"}),"\n",(0,i.jsx)(n.h3,{id:"\u6570\u636e\u6d41\u4e0e\u63a7\u5236\u6d41\u5206\u79bb",children:"\u6570\u636e\u6d41\u4e0e\u63a7\u5236\u6d41\u5206\u79bb"}),"\n",(0,i.jsx)(n.h4,{id:"\u5b9a\u4e49",children:"\u5b9a\u4e49"}),"\n",(0,i.jsx)(n.p,{children:"\u9996\u5148\u662f\u6570\u636e\u6d41\u4e0e\u63a7\u5236\u6d41\u95ee\u9898\uff0c\u4e00\u822c\u6765\u8bf4\u6570\u636e\u6d41\u5b9a\u4e49\u4e3a\u53d8\u91cf\u548c\u6570\u636e\u4f9d\u8d56\u8fb9\u7684\u7ec4\u5408\u3002"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"\u6570\u636e\u6d41(Data Flow)"}),": \u63cf\u8ff0\u6570\u636e\u5982\u4f55\u5728\u7a0b\u5e8f\u4e2d\u6d41\u52a8\u548c\u8f6c\u6362"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\u53ef\u4ee5\u8868\u793a\u4e3a: ",(0,i.jsx)(c.GP,{math:"DF = (V, E)"})]}),"\n",(0,i.jsxs)(n.li,{children:["\u5176\u4e2d ",(0,i.jsx)(c.GP,{math:"V"})," \u662f\u53d8\u91cf\u96c6\u5408"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(c.GP,{math:"E"})," \u662f\u6570\u636e\u4f9d\u8d56\u8fb9\u96c6\u5408"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"\u63a7\u5236\u6d41(Control Flow)"}),": \u63cf\u8ff0\u7a0b\u5e8f\u6267\u884c\u7684\u8def\u5f84\u548c\u987a\u5e8f"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\u53ef\u4ee5\u8868\u793a\u4e3a: ",(0,i.jsx)(c.GP,{math:"CF = (B, T)"})]}),"\n",(0,i.jsxs)(n.li,{children:["\u5176\u4e2d ",(0,i.jsx)(c.GP,{math:"B"})," \u662f\u57fa\u672c\u5757\u96c6\u5408"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(c.GP,{math:"T"})," \u662f\u8f6c\u79fb\u8fb9\u96c6\u5408"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"\u4e0a\u8ff0\u6848\u4f8b\u7ed3\u5408\u4e0b\u9762\u4ee3\u7801\u5927\u5bb6\u53ef\u4ee5\u66f4\u5bb9\u6613\u7406\u89e3\u63a7\u5236\u6d41\u548c\u6570\u636e\u6d41"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-go",children:"a = 1;\nb = a + 1;\nc = b + 1;\nif (a > 1) {\n c = c + 1;\n}\ne = a + b;\nf = e + c;\n"})}),"\n",(0,i.jsx)(n.p,{children:"\u6211\u4eec\u628a\u4e0a\u8ff0\u4ee3\u7801\u6848\u4f8b\u5236\u4f5c\u4e00\u4e2a\u6d41\u7a0b\u56fe\uff0c\u6765\u540c\u65f6\u5305\u542b\u63a7\u5236\u6d41\u548c\u6570\u636e\u6d41\uff0c\u4e5f\u6700\u63a5\u8fd1\u4eba\u7c7b\u7406\u89e3\u7684\u4ee3\u7801\u6267\u884c\u6d41\u7a0b\u3002"}),"\n",(0,i.jsx)(n.mermaid,{value:'graph LR\n A[a = 1] --\x3e B[b = a + 1]\n B --\x3e C[c = b + 1]\n C --\x3e D{"if (a > 1)"}\n D --\x3e|true| E[c = c + 1]\n D --\x3e|false| F[e = a + b]\n E --\x3e F\n F --\x3e G[f = e + c]\n \n %% Data flow edges (using different style)\n A -.->|a| B\n A -.->|a| D\n A -.->|a| F\n B -.->|b| C\n B -.->|b| F\n C -.->|c| E\n C -.->|c| G\n E -.->|c| G\n F -.->|e| G\n \n classDef control fill:#f9f,stroke:#333,stroke-width:2px\n classDef data fill:#bbf,stroke:#333,stroke-width:2px\n class A,B,C,D,E,F,G control'}),"\n",(0,i.jsxs)(n.p,{children:["\u5728\u8fd9\u4e2a\u56fe\u4e2d\uff0c\u6211\u4eec\u53d1\u73b0\uff0c\u6570\u636e\u6d41\u548c\u63a7\u5236\u6d41\u662f\u6df7\u5408\u5728\u4e00\u8d77\u7684\uff0c\u901a\u8fc7\u68f1\u578b\u6765\u533a\u5206 ",(0,i.jsx)(n.code,{children:"IF"})," \u5206\u652f\u3002"]}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsx)(n.li,{children:"\u5b9e\u7ebf\u8868\u793a\u63a7\u5236\u6d41"}),"\n",(0,i.jsx)(n.li,{children:"\u865a\u7ebf\u8868\u793a\u6570\u636e\u6d41\uff08\u53d8\u91cf\u4e4b\u95f4\u76f4\u63a5\u8fde\u63a5\uff09"}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"\u63a5\u4e0b\u6765\uff0c\u6211\u4eec\u5c1d\u8bd5\u5206\u79bb\u4e0a\u8ff0\u56fe\u4e2d\u7684\u6570\u636e\u6d41\u548c\u63a7\u5236\u6d41\uff0c\u628a\u5b83\u5206\u6210\u4e24\u4e2a\u56fe\u3002"}),"\n",(0,i.jsx)(n.mermaid,{value:'graph BT\n subgraph \u63a7\u5236\u6d41 Control Flow\n B1["Block1\n a = 1\n b = a + 1\n c = b + 1"] --\x3e D1{if a > 1}\n D1 --\x3e|true| E1["Block2\n c = c + 1"]\n D1 --\x3e|false| F1["Block3\n e = a + b\n f = e + c"]\n E1 --\x3e F1\n end\n \n subgraph \u6570\u636e\u6d41 Data Flow\n A2[a] --\x3e B2[b]\n B2 --\x3e C2[c]\n C2 --\x3e E2[c\']\n A2 --\x3e F2[e]\n B2 --\x3e F2\n E2 --\x3e G2[f]\n C2 --\x3e G2\n F2 --\x3e G2\n end\n \n classDef control fill:#f9f,stroke:#333,stroke-width:2px\n classDef data fill:#bbf,stroke:#333,stroke-width:2px\n class B1,D1,E1,F1 control\n class A2,B2,C2,D2,E2,F2,G2 data'}),"\n",(0,i.jsx)(n.p,{children:"\u5728\u7528\u6237\u9605\u8bfb\u5b8c\u5206\u79bb\u56fe\u4e4b\u540e\uff1a"}),"\n",(0,i.jsx)(n.admonition,{title:"\u63a7\u5236\u6d41\u4e0e\u6570\u636e\u6d41\u7684\u533a\u522b",type:"note",children:(0,i.jsx)(n.p,{children:'\u63a7\u5236\u6d41\u548c\u6570\u636e\u6d41\u662f\u7a0b\u5e8f\u5206\u6790\u4e2d\u4e24\u4e2a\u57fa\u672c\u4f46\u622a\u7136\u4e0d\u540c\u7684\u6982\u5ff5\u3002\u5b83\u4eec\u5206\u522b\u63cf\u8ff0\u4e86\u7a0b\u5e8f\u7684\u4e0d\u540c\u65b9\u9762\uff1a\u63a7\u5236\u6d41\u5173\u6ce8"\u7a0b\u5e8f\u6267\u884c\u7684\u8def\u5f84"\uff0c\u800c\u6570\u636e\u6d41\u5173\u6ce8"\u6570\u636e\u7684\u4f20\u64ad\u548c\u8f6c\u6362"\u3002'})}),"\n",(0,i.jsx)(n.p,{children:"\u8ba9\u6211\u4eec\u4ece\u5f62\u5f0f\u5316\u7684\u89d2\u5ea6\u6765\u8be6\u7ec6\u89e3\u91ca\uff1a"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.strong,{children:"\u63a7\u5236\u6d41\u56fe (Control Flow Graph, CFG)"})}),"\n"]}),"\n",(0,i.jsx)(c.OO,{math:"\nCFG = (B, T) \\\\\n\u5176\u4e2d\uff1a\\\\\nB = \\{b_1, b_2, ..., b_n\\} \\text{ \u662f\u57fa\u672c\u5757\u7684\u96c6\u5408} \\\\\nT \\subseteq B \\times B \\text{ \u662f\u57fa\u672c\u5757\u4e4b\u95f4\u7684\u8f6c\u79fb\u8fb9\u96c6\u5408}\n"}),"\n",(0,i.jsx)(n.p,{children:"\u5728\u793a\u4f8b\u4ee3\u7801\u4e2d\uff1a"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(c.GP,{math:"b_1"})," \u5305\u542b\u4e86 ",(0,i.jsx)(n.code,{children:"a = 1; b = a + 1; c = b + 1"})," \u8fd9\u4e9b\u987a\u5e8f\u6267\u884c\u7684\u8bed\u53e5"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(c.GP,{math:"b_2"})," \u5305\u542b\u4e86 ",(0,i.jsx)(n.code,{children:"c = c + 1"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(c.GP,{math:"b_3"})," \u5305\u542b\u4e86 ",(0,i.jsx)(n.code,{children:"e = a + b; f = e + c"})]}),"\n",(0,i.jsxs)(n.li,{children:["\u8f6c\u79fb\u8fb9 ",(0,i.jsx)(c.GP,{math:"T"})," \u5305\u542b\u4e86\u6761\u4ef6\u8df3\u8f6c\u548c\u987a\u5e8f\u6267\u884c\u7684\u8fb9"]}),"\n"]}),"\n",(0,i.jsxs)(n.ol,{start:"2",children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.strong,{children:"\u6570\u636e\u6d41\u56fe (Data Flow Graph, DFG)"})}),"\n"]}),"\n",(0,i.jsx)(c.OO,{math:"\nDFG = (V, E) \\\\\n\u5176\u4e2d\uff1a\\\\\nV = \\{v_1, v_2, ..., v_m\\} \\text{ \u662f\u53d8\u91cf\u7684\u96c6\u5408} \\\\\nE \\subseteq V \\times V \\text{ \u662f\u6570\u636e\u4f9d\u8d56\u8fb9\u7684\u96c6\u5408}\n"}),"\n",(0,i.jsx)(n.p,{children:"\u5728\u793a\u4f8b\u4ee3\u7801\u4e2d\uff1a"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(c.GP,{math:"V"})," \u5305\u542b\u4e86\u53d8\u91cf ",(0,i.jsx)(n.code,{children:"{a, b, c, e, f}"})]}),"\n",(0,i.jsxs)(n.li,{children:["\u6570\u636e\u4f9d\u8d56\u8fb9 ",(0,i.jsx)(c.GP,{math:"E"})," \u8868\u793a\u53d8\u91cf\u95f4\u7684\u4f9d\u8d56\u5173\u7cfb\uff0c\u5982 ",(0,i.jsx)(n.code,{children:"a \u2192 b"})," \u8868\u793a ",(0,i.jsx)(n.code,{children:"b"})," \u7684\u8ba1\u7b97\u4f9d\u8d56\u4e8e ",(0,i.jsx)(n.code,{children:"a"})]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"\u5728\u793a\u4f8b\u4ee3\u7801\u4e2d\uff0c\u6211\u4eec\u53ef\u4ee5\u89c2\u5bdf\u5230\uff1a"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["\u53d8\u91cf ",(0,i.jsx)(n.code,{children:"c"})," \u5728\u63a7\u5236\u6d41\u7684\u4e0d\u540c\u8def\u5f84\u4e0a\u6709\u4e0d\u540c\u7684\u5b9a\u503c\uff08",(0,i.jsx)(n.code,{children:"c = b + 1"})," \u548c ",(0,i.jsx)(n.code,{children:"c = c + 1"}),"\uff09"]}),"\n",(0,i.jsxs)(n.li,{children:["\u6700\u7ec8\u7684\u53d8\u91cf ",(0,i.jsx)(n.code,{children:"f"})," \u4f9d\u8d56\u4e8e\u591a\u4e2a\u53d8\u91cf\uff08",(0,i.jsx)(n.code,{children:"a"}),"\u3001",(0,i.jsx)(n.code,{children:"b"}),"\u3001",(0,i.jsx)(n.code,{children:"c"}),"\u3001",(0,i.jsx)(n.code,{children:"e"}),"\uff09\u7684\u503c"]}),"\n",(0,i.jsxs)(n.li,{children:["\u63a7\u5236\u6d41\u51b3\u5b9a\u4e86 ",(0,i.jsx)(n.code,{children:"c"})," \u7684\u5b9e\u9645\u503c\uff0c\u8fdb\u800c\u5f71\u54cd\u5230 ",(0,i.jsx)(n.code,{children:"f"})," \u7684\u8ba1\u7b97\u7ed3\u679c"]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"\u8fd9\u79cd\u63a7\u5236\u6d41\u548c\u6570\u636e\u6d41\u7684\u4ea4\u7ec7\u5173\u7cfb\uff0c\u6b63\u662f\u540e\u7eed\u6211\u4eec\u8981\u8ba8\u8bba\u7684 SSA \u91cd\u8981\u8bdd\u9898\u3002"}),"\n",(0,i.jsxs)(n.admonition,{title:"\u91cd\u8981\u63d0\u793a",type:"danger",children:[(0,i.jsx)(n.p,{children:"\u5728\u5f88\u591a\u4e0d\u719f\u6089\u9759\u6001\u4ee3\u7801\u5206\u6790\u7684\u8bfb\u8005\u773c\u91cc\uff0c\u4ed6\u5176\u5b9e\u5e76\u4e0d\u77e5\u9053\u63a7\u5236\u6d41\u548c\u6570\u636e\u6d41\u662f\u4e24\u4e2a\u5b8c\u5168\u4e0d\u540c\u7684\u6982\u5ff5\uff0c\u800c\u662f\u4e60\u60ef\u6027\u7684\u628a\u63a7\u5236\u6d41\u548c\u6570\u636e\u6d41\u6df7\u4e3a\u4e00\u8c08\u3002"}),(0,i.jsx)(n.p,{children:"\u5f53\u7136\u4e5f\u5e76\u4e0d\u662f\u8bf4\u5fc5\u987b\u53bb\u5206\u79bb\u63a7\u5236\u6d41\u548c\u6570\u636e\u6d41\uff0c\u6bd5\u7adf\u5728 \u201c\u4ee3\u7801\u5c5e\u6027\u56fe\u201d \u6216 \u201c\u8282\u70b9\u4e4b\u6d77\u201d \u4e2d\uff0c\u63a7\u5236\u5173\u7cfb\u548c\u6570\u636e\u5173\u7cfb\u53c8\u88ab\u653e\u5728\u4e86\u4e00\u8d77\u3002"})]}),"\n",(0,i.jsx)(n.h3,{id:"\u6570\u636e\u6d41\u4e2d\u7684\u652f\u914d\u5173\u7cfb",children:"\u6570\u636e\u6d41\u4e2d\u7684\u652f\u914d\u5173\u7cfb"}),"\n",(0,i.jsx)(n.p,{children:"\u5728\u63a5\u4e0b\u6765\u7684\u5185\u5bb9\u4e2d\uff0c\u6211\u4eec\u91cd\u70b9\u5c06\u4f1a\u8ba8\u8bba\u6570\u636e\u8282\u70b9\uff08\u53d8\u91cf\uff09\u7684\u652f\u914d\u95ee\u9898\u3002"}),"\n",(0,i.jsxs)(n.p,{children:["\u6570\u636e\u6d41\u5206\u6790\u4e2d\uff0c\u53d8\u91cf\u652f\u914d\u662f\u4e00\u4e2a\u975e\u5e38\u91cd\u8981\u7684\u6982\u5ff5\uff0c\u4ed6\u63cf\u8ff0\u4e86\u53d8\u91cf\u4e4b\u95f4\u7684\u4f9d\u8d56\u5173\u7cfb\uff0c\u6211\u4eec\u4ee5 ",(0,i.jsx)(c.GP,{math:"Dom(x, y)"})," \u6765\u8868\u793a\u53d8\u91cf ",(0,i.jsx)(c.GP,{math:"x"})," \u652f\u914d\u53d8\u91cf ",(0,i.jsx)(c.GP,{math:"y"}),"\u3002"]}),"\n",(0,i.jsx)(c.OO,{math:"\n\u5bf9\u4e8e\u53d8\u91cf\\ x\\ \u548c\\ y\uff0c\u5982\u679c\uff1a\\\\\nDom(x,\\ y)\\ \\iff\\ \\text{\u6240\u6709\u5230\u8fbe\\ y\\ \u7684\u8def\u5f84\u90fd\u5fc5\u987b\u7ecf\u8fc7\\ x}\n"}),"\n",(0,i.jsx)(n.p,{children:"\u6211\u4eec\u53ef\u4ee5\u8fdb\u4e00\u6b65\u5f62\u5f0f\u5316\u5b9a\u4e49\u652f\u914d\u5173\u7cfb\uff1a"}),"\n",(0,i.jsx)(c.OO,{math:"\nDom(x,\\ y)\\ =\\ \\begin{cases}\ntrue\\ &\\ \\text{\u82e5\\ x\\ \u652f\u914d\\ y}\\ \\\\\nfalse\\ &\\ \\text{\u5176\u4ed6\u60c5\u51b5}\n\\end{cases}\n"}),"\n",(0,i.jsx)(n.p,{children:"\u5176\u4e2d\uff1a"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(c.GP,{math:"x"})," \u662f\u652f\u914d\u8005(dominator)"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(c.GP,{math:"y"})," \u662f\u88ab\u652f\u914d\u8005(dominee)"]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"\u5728\u6df1\u5165\u601d\u8003\uff0c\u6211\u4eec\u8ba4\u4e3a\u652f\u914d\u5e94\u8be5\u5305\u542b\u76f4\u63a5\u652f\u914d\u548c\u95f4\u63a5\u652f\u914d\u4e24\u79cd\uff0c\u56e0\u6b64\u6211\u4eec\u5b9a\u4e49\u4e86\u4e09\u79cd\u652f\u914d\u5173\u7cfb\uff1a"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.strong,{children:"\u4e00\u822c\u652f\u914d\u5173\u7cfb"})}),"\n"]}),"\n",(0,i.jsx)(c.OO,{math:"\nDom(x, y) \\iff \\text{\u6240\u6709\u5230\u8fbe y \u7684\u8def\u5f84\u90fd\u5fc5\u987b\u7ecf\u8fc7 x}\n"}),"\n",(0,i.jsxs)(n.ol,{start:"2",children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.strong,{children:"\u76f4\u63a5\u652f\u914d\u5173\u7cfb"})}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"\u76f4\u63a5\u652f\u914d\u5173\u7cfb\u63cf\u8ff0\u4e86\u4e24\u4e2a\u53d8\u91cf\u4e4b\u95f4\u6700\u76f4\u63a5\u7684\u4f9d\u8d56\u5173\u7cfb\uff0c\u6ca1\u6709\u4efb\u4f55\u4e2d\u95f4\u53d8\u91cf\u3002\u5f62\u5f0f\u5316\u5b9a\u4e49\u5982\u4e0b\uff1a"}),"\n",(0,i.jsx)(c.OO,{math:"\niDom(x, y) \\iff \\begin{cases}\nDom(x, y) \\land \\\\\n\\neg\\exists z(Dom(x, z) \\land Dom(z, y)) \\land \\\\\nConnected(x, y)\n\\end{cases}\n"}),"\n",(0,i.jsx)(n.p,{children:"\u5176\u4e2d\uff1a"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(c.GP,{math:"Dom(x, y)"})," \u8868\u793a x \u652f\u914d y"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(c.GP,{math:"\\neg\\exists z(Dom(x, z) \\land Dom(z, y))"})," \u8868\u793a\u4e0d\u5b58\u5728\u4e2d\u95f4\u8282\u70b9 z \u540c\u65f6\u88ab x \u652f\u914d\u4e14\u652f\u914d y"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(c.GP,{math:"Connected(x, y)"})," \u8868\u793a x \u548c y \u5728\u6570\u636e\u6d41\u56fe\u4e2d\u76f4\u63a5\u76f8\u8fde"]}),"\n"]}),"\n",(0,i.jsxs)(n.ol,{start:"3",children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.strong,{children:"\u95f4\u63a5\u652f\u914d\u5173\u7cfb"})}),"\n"]}),"\n",(0,i.jsx)(c.OO,{math:"\nindirectDom(x, y) \\iff \\begin{cases}\nDom(x, y) \\land \\\\\n\\exists z(Dom(x, z) \\land Dom(z, y))\n\\end{cases}\n"}),"\n",(0,i.jsx)(n.p,{children:"\u8ba9\u6211\u4eec\u901a\u8fc7\u4e00\u4e2a\u5177\u4f53\u7684\u4ee3\u7801\u793a\u4f8b\u6765\u7406\u89e3\u4e0a\u8ff0\u7684\u5185\u5bb9\uff1a"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-go",children:"a = input() // 1\nb = a + 1 // 2\nif a > 0 { // 3\n c = b + 2 // 4\n} else {\n c = b - 2 // 5\n}\nd = c * 2 // 6\n"})}),"\n",(0,i.jsx)(n.p,{children:"\u6211\u4eec\u53ef\u4ee5\u7ed8\u5236\u8fd9\u6bb5\u4ee3\u7801\u7684\u6570\u636e\u6d41\u56fe\u548c\u652f\u914d\u5173\u7cfb\uff1a"}),"\n",(0,i.jsx)(n.mermaid,{value:'graph LR\n A["a (1)"] --\x3e|"\u76f4\u63a5\u652f\u914d"| B["b (2)"]\n B --\x3e C1["c (4: b + 2)"]\n B --\x3e C2["c (5: b - 2)"]\n C1 --\x3e D["d (6)"]\n C2 --\x3e D\n B -.->|"\u95f4\u63a5\u652f\u914d"| D\n A -.->|"\u95f4\u63a5\u652f\u914d"| D\n \n %% \u4f7f\u7528\u4e0d\u540c\u7684\u6837\u5f0f\u6765\u7a81\u51fa\u652f\u914d\u5173\u7cfb\n classDef default fill:#f9f,stroke:#333,stroke-width:2px;\n linkStyle default stroke:#666,stroke-width:2px;\n'}),"\n",(0,i.jsxs)(n.p,{children:["\u4e0a\u8ff0\u652f\u914d\u5173\u7cfb\u6709\u70b9\u5947\u602a\uff0c\u56e0\u4e3a IF \u5206\u652f\u7684\u5b58\u5728\uff0c\u5bfc\u81f4\u6709\u4e24\u4e2a ",(0,i.jsx)(n.code,{children:"C"})," \u8282\u70b9\u3002\u4f46\u662f\u5728 \u201c\u53d8\u91cf\u201d \u7684\u89d2\u5ea6\u6765\u8bf4\uff0c\u6211\u4eec\u5e94\u8be5\u5408\u5e76 C\uff0c\u6211\u4eec\u4f1a\u53ea\u51fa\u6765\u7684\u652f\u914d\u5173\u7cfb\u5e94\u8be5\u5982\u4e0b\uff1a"]}),"\n",(0,i.jsx)(n.mermaid,{value:'graph LR\n A["a"] --\x3e B["b"]\n B --\x3e C["c"]\n C --\x3e D["d"]\n \n classDef default fill:#bbf,stroke:#333,stroke-width:2px;'}),"\n",(0,i.jsx)(n.admonition,{title:"\u6ce8\u610f",type:"caution",children:(0,i.jsx)(n.p,{children:"\u4e0a\u8ff0\u56fe\u793a\u4e2d\uff0c\u6211\u4eec\u53ea\u4fdd\u7559\u4e86\u53d8\u91cf C\uff0c\u8fd9\u663e\u7136\u662f\u770b\u7740\u975e\u5e38\u522b\u626d\u7684\uff0c\u6211\u4eec\u4e60\u60ef\u4e86 SSA \u601d\u8def\u4e4b\u540e\uff0c\u4e0a\u8ff0\u56fe\u663e\u7136\u662f\u4e0d\u5408\u9002\u7684\uff0c\u6211\u4eec\u540e\u7eed\u5c31\u8981\u89e3\u51b3\u8fd9\u4e2a\u95ee\u9898"})}),"\n",(0,i.jsx)(n.p,{children:"\u63a5\u4e0b\u6765\uff0c\u6211\u4eec\u518d\u6765\u8ba8\u8bba\u53e6\u4e00\u4e2a\u6848\u4f8b\uff0c\u8fd9\u662f\u4e00\u4e2a\u6613\u9519\u70b9\u3002"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-java",children:"a = input()\nb = input()\nc = a + b\n"})}),"\n",(0,i.jsxs)(n.p,{children:["\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u53d8\u91cf ",(0,i.jsx)(n.code,{children:"c"})," \u540c\u65f6\u4f9d\u8d56\u4e8e ",(0,i.jsx)(n.code,{children:"a"})," \u548c ",(0,i.jsx)(n.code,{children:"b"}),"\uff0c\u4f46\u662f\u5e76\u4e0d\u80fd\u8bf4 ",(0,i.jsx)(n.code,{children:"a"})," \u652f\u914d ",(0,i.jsx)(n.code,{children:"c"}),"\uff0c\u6216\u8005\u4e5f\u4e0d\u80fd\u8bf4 ",(0,i.jsx)(n.code,{children:"b"})," \u652f\u914d ",(0,i.jsx)(n.code,{children:"c"}),"\u3002"]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"a"})," \u548c ",(0,i.jsx)(n.code,{children:"b"})," \u4ec5\u4ec5\u662f ",(0,i.jsx)(n.code,{children:"c"})," \u7684\u524d\u7ee7\u8282\u70b9\u3002"]}),"\n",(0,i.jsx)(n.h3,{id:"\u6570\u636e\u8282\u70b9\u53d8\u91cf\u652f\u914d\u8fb9\u754c",children:"\u6570\u636e\u8282\u70b9\uff08\u53d8\u91cf\uff09\u652f\u914d\u8fb9\u754c"}),"\n",(0,i.jsx)(n.p,{children:"\u5728\u7528\u6237\u4e86\u89e3\u5b8c\u652f\u914d\u95ee\u9898\u4e4b\u540e\uff0c\u63a5\u4e0b\u6765\u6211\u4eec\u63d0\u51fa\u4e00\u4e2a\u95ee\u9898\uff0c\u201c\u4e00\u4e2a\u6570\u636e\u8282\u70b9\u7684\u652f\u914d\u7684\u8303\u56f4\u6709\u591a\u5927\uff1f\u201d"}),"\n",(0,i.jsx)(n.p,{children:"\u8981\u56de\u7b54\u8fd9\u4e2a\u95ee\u9898\uff0c\u6211\u4eec\u9700\u8981\u5b9a\u4e49\u4e00\u4e2a\u6982\u5ff5\u53eb\u652f\u914d\u8fb9\u754c\u3002\u8003\u8651\u4efb\u4f55\u79bb\u5f00\u5757 B \u7684\u8def\u5f84\u3002\u6700\u521d\u8def\u5f84\u4e0a\u7684\u5757\u7531 B \u652f\u914d\u3002\u6700\u7ec8\u5230\u8fbe\u4e00\u4e2a\u4e0d\u7531 B \u652f\u914d\u7684\u5757\u3002\u9664\u975e\u8def\u5f84\u8fd4\u56de\u5230 B\uff0c\u5426\u5219\u4e4b\u540e\u7684\u6240\u6709\u5757\u90fd\u4e0d\u53d7 B \u652f\u914d\u3002\u4e0d\u88ab B \u652f\u914d\u7684\u7b2c\u4e00\u4e2a\u5757\u662f\u91cd\u8981\u7684\uff0c\u56e0\u4e3a\u5b83\u6307\u793a\u4e86 B \u652f\u914d\u7684\u5757\u7684\u8303\u56f4\uff0c\u5e76\u4f7f\u7528\u6709\u5173 B \u4e2d\u7684\u8ba1\u7b97\u7684\u4fe1\u606f\u6307\u793a\u4e86\u4f18\u5316\u7684\u9650\u5236\u3002\u8003\u8651\u5230\u6240\u6709\u8def\u5f84\uff0c\u62e5\u6709\u8be5\u7279\u5f81\u7684\u5757\u7684\u96c6\u5408\u79f0\u4e3a\u652f\u914d B \u7684\u8fb9\u754c\u3002"}),"\n",(0,i.jsx)(n.p,{children:"\u8ba9\u6211\u4eec\u9996\u5148\u7ed9\u51fa\u652f\u914d\u8fb9\u754c\u7684\u5f62\u5f0f\u5316\u5b9a\u4e49\uff1a"}),"\n",(0,i.jsx)(c.OO,{math:"\nDF(X) = \\{Y | \\exists Z \\in Dom(X) \\text{ such that } Y \\text{ is an immediate successor of } Z \\text{ and } X \\not\\in Dom(Y)\\}\n"}),"\n",(0,i.jsx)(n.p,{children:"\u5176\u4e2d\uff1a"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(c.GP,{math:"DF(X)"})," \u8868\u793a\u8282\u70b9X\u7684\u652f\u914d\u8fb9\u754c"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(c.GP,{math:"Dom(X)"})," \u8868\u793a\u88abX\u652f\u914d\u7684\u8282\u70b9\u96c6\u5408"]}),"\n",(0,i.jsx)(n.li,{children:"Y\u662fX\u7684\u652f\u914d\u8fb9\u754c\u4e2d\u7684\u4e00\u4e2a\u8282\u70b9"}),"\n",(0,i.jsx)(n.li,{children:"Z\u662f\u88abX\u652f\u914d\u7684\u67d0\u4e2a\u8282\u70b9"}),"\n",(0,i.jsx)(n.li,{children:"Y\u662fZ\u7684\u76f4\u63a5\u540e\u7ee7\u8282\u70b9"}),"\n",(0,i.jsx)(n.li,{children:"X\u4e0d\u652f\u914dY"}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"\u8ba9\u6211\u4eec\u7528\u4e00\u4e2a\u5177\u4f53\u7684\u4f8b\u5b50\u6765\u8bf4\u660e\uff1a"}),"\n",(0,i.jsx)(n.mermaid,{value:'graph LR\n subgraph cluster [" "]\n style cluster fill:#E8E8E8,stroke:#CCCCCC\n 5 --\x3e 6\n 6 --\x3e 8\n 6 --\x3e 7\n 7 --\x3e 8\n end\n 1 --\x3e 2\n 2 --\x3e 3\n 3 --\x3e 4\n 4 --\x3e 13\n 1 --\x3e 5\n 8 --\x3e 13\n 6 --\x3e 4\n 7 --\x3e 12\n 12 --\x3e 13\n 1 --\x3e 9\n 9 --\x3e 10\n 10 --\x3e 12\n 9 --\x3e 11\n 11 --\x3e 12'}),"\n",(0,i.jsx)(n.p,{children:"\u6211\u4eec\u7ed9\u51fa\u56fe\u4e2d\u5404\u8282\u70b9\u7684\u652f\u914d\u8fb9\u754c\u5206\u6790\u8868\u683c\uff1a"}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"\u8282\u70b9"}),(0,i.jsx)(n.th,{children:"\u652f\u914d\u7684\u8282\u70b9\u96c6\u5408 Dom(X)"}),(0,i.jsx)(n.th,{children:"\u76f4\u63a5\u540e\u7ee7\u8282\u70b9"}),(0,i.jsx)(n.th,{children:"\u652f\u914d\u8fb9\u754c DF(X)"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"1"}),(0,i.jsx)(n.td,{children:"{1,2,3,4,5,6,7,8,9,10,11,12,13}"}),(0,i.jsx)(n.td,{children:"{2,5,9}"}),(0,i.jsx)(n.td,{children:"\u2205"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"2"}),(0,i.jsx)(n.td,{children:"{2,3}"}),(0,i.jsx)(n.td,{children:"{3}"}),(0,i.jsx)(n.td,{children:"{4}"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"3"}),(0,i.jsx)(n.td,{children:"{3}"}),(0,i.jsx)(n.td,{children:"{4}"}),(0,i.jsx)(n.td,{children:"{4}"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"4"}),(0,i.jsx)(n.td,{children:"{4}"}),(0,i.jsx)(n.td,{children:"{13}"}),(0,i.jsx)(n.td,{children:"{13}"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"5"}),(0,i.jsx)(n.td,{children:"{5,6,7,8}"}),(0,i.jsx)(n.td,{children:"{6}"}),(0,i.jsx)(n.td,{children:"{4,12,13}"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"6"}),(0,i.jsx)(n.td,{children:"{6,7,8}"}),(0,i.jsx)(n.td,{children:"{4,7,8}"}),(0,i.jsx)(n.td,{children:"{4,12,13}"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"7"}),(0,i.jsx)(n.td,{children:"{7}"}),(0,i.jsx)(n.td,{children:"{8,12}"}),(0,i.jsx)(n.td,{children:"{8,12}"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"8"}),(0,i.jsx)(n.td,{children:"{8}"}),(0,i.jsx)(n.td,{children:"{13}"}),(0,i.jsx)(n.td,{children:"{13}"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"9"}),(0,i.jsx)(n.td,{children:"{9,10,11}"}),(0,i.jsx)(n.td,{children:"{10,11}"}),(0,i.jsx)(n.td,{children:"{12}"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"10"}),(0,i.jsx)(n.td,{children:"{10}"}),(0,i.jsx)(n.td,{children:"{12}"}),(0,i.jsx)(n.td,{children:"{12}"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"11"}),(0,i.jsx)(n.td,{children:"{11}"}),(0,i.jsx)(n.td,{children:"{12}"}),(0,i.jsx)(n.td,{children:"{12}"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"12"}),(0,i.jsx)(n.td,{children:"{12}"}),(0,i.jsx)(n.td,{children:"{13}"}),(0,i.jsx)(n.td,{children:"{13}"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"13"}),(0,i.jsx)(n.td,{children:"{13}"}),(0,i.jsx)(n.td,{children:"\u2205"}),(0,i.jsx)(n.td,{children:"\u2205"})]})]})]}),"\n",(0,i.jsx)(n.h3,{id:"\u6570\u636e\u6d41\u4e0e-uddu-\u94fe",children:"\u6570\u636e\u6d41\u4e0e UD(DU) \u94fe"}),"\n",(0,i.jsx)(n.h3,{id:"\u5b9a\u4e49\u8de8\u8fc7\u7a0b\u5206\u6790",children:"\u5b9a\u4e49\u8de8\u8fc7\u7a0b\u5206\u6790"}),"\n",(0,i.jsx)(n.h2,{id:"\u6570\u636e\u6d41\u7684\u8de8\u8fc7\u7a0b\u5206\u6790",children:"\u6570\u636e\u6d41\u7684\u8de8\u8fc7\u7a0b\u5206\u6790"}),"\n",(0,i.jsx)(n.h3,{id:"\u57fa\u7840\u8bdd\u9898\u901a\u8fc7\u51fd\u6570\u8c03\u7528\u8de8\u8fc7\u7a0b",children:"\u57fa\u7840\u8bdd\u9898\uff1a\u901a\u8fc7\u51fd\u6570\u8c03\u7528\u8de8\u8fc7\u7a0b"}),"\n",(0,i.jsx)(n.h3,{id:"\u8fdb\u9636\u8bdd\u9898\u901a\u8fc7\u95ed\u5305\u8de8\u8fc7\u7a0b",children:"\u8fdb\u9636\u8bdd\u9898\uff1a\u901a\u8fc7\u95ed\u5305\u8de8\u8fc7\u7a0b"}),"\n",(0,i.jsx)(n.h3,{id:"\u8fdb\u9636\u8bdd\u9898\u5e7f\u4e49\u8de8\u8fc7\u7a0b\u5b9a\u4e49",children:"\u8fdb\u9636\u8bdd\u9898\uff1a\u5e7f\u4e49\u8de8\u8fc7\u7a0b\u5b9a\u4e49"}),"\n",(0,i.jsx)(n.h2,{id:"\u904d\u5386\u6570\u636e\u6d41",children:"\u904d\u5386\u6570\u636e\u6d41"}),"\n",(0,i.jsx)(n.h3,{id:"uddu-\u94fe\u4e0e\u5206\u6790\u65b9\u5411",children:"UD(DU) \u94fe\u4e0e\u5206\u6790\u65b9\u5411"}),"\n",(0,i.jsx)(n.h3,{id:"\u81ea\u9876\u5411\u4e0b\u4ece\u5b9a\u4e49def\u5230\u4f7f\u7528use",children:"\u81ea\u9876\u5411\u4e0b\uff1a\u4ece\u5b9a\u4e49(Def)\u5230\u4f7f\u7528(Use)"}),"\n",(0,i.jsx)(n.h3,{id:"\u81ea\u5e95\u5411\u4e0a\u4ece\u4f7f\u7528use\u5230\u5b9a\u4e49def",children:"\u81ea\u5e95\u5411\u4e0a\uff1a\u4ece\u4f7f\u7528(Use)\u5230\u5b9a\u4e49(Def)"})]})}function j(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(o,{...e})}):o(e)}},97015:(e,n,s)=>{s.d(n,{Ay:()=>a,GP:()=>h,OO:()=>o});var d=s(96540),i=s(22130),l=s(20354),r=s.n(l),c=s(74848);const t={throwOnError:!1,strict:!1,trust:!1,macros:{"\\RR":"\\mathbb{R}","\\NN":"\\mathbb{N}","\\ZZ":"\\mathbb{Z}"}},x=e=>{let{math:n,inline:s=!1,onError:l,options:x={},className:a=""}=e;const h=(0,d.useRef)(null),[o,j]=(0,d.useState)(!1),[p,u]=(0,d.useState)(!1),[m,f]=(0,d.useState)(!1),[b,g]=(0,d.useState)(!1),[y,v]=(0,d.useState)({message:"",visible:!1});(0,d.useEffect)((()=>{if(h.current)try{i.default.render(n,h.current,{...t,...x,displayMode:!s})}catch(e){l?l(e):(console.error("KaTeX Error:",e),h.current&&(h.current.textContent=n))}}),[n,s,x,l]);const D=e=>{v({message:e,visible:!0}),setTimeout((()=>{v({message:"",visible:!1})}),2e3)};return(0,c.jsxs)("div",{className:"katex-wrapper "+(o?"hovered":""),onMouseEnter:()=>j(!0),onMouseLeave:()=>j(!1),style:{position:"relative",padding:"8px",border:o?"2px solid #4a90e2":"1px solid transparent",borderRadius:"4px",display:s?"inline-block":"block",transition:"all 0.3s ease",boxShadow:o?"0 0 8px rgba(74, 144, 226, 0.3)":"none"},children:[y.visible&&(0,c.jsx)("div",{style:{position:"fixed",top:"50%",left:"50%",transform:"translate(-50%, -50%)",background:"rgba(0, 0, 0, 0.7)",color:"#fff",padding:"8px 16px",borderRadius:"4px",fontSize:"14px",zIndex:1e3,pointerEvents:"none"},children:y.message}),o&&(0,c.jsxs)("div",{style:{position:"absolute",top:"4px",right:"4px",display:"flex",gap:"8px",zIndex:1},children:[(0,c.jsx)("button",{onClick:async()=>{h.current&&(g(!0),setTimeout((async()=>{try{const e=document.createElement("div");e.style.padding="12px 0";const n=h.current?.cloneNode(!0);if(!n)throw new Error("\u65e0\u6cd5\u514b\u9686\u8282\u70b9");e.appendChild(n),document.body.appendChild(e);const s=await r()(e,{backgroundColor:null,scale:2});document.body.removeChild(e),s.toBlob((async e=>{if(e)try{await navigator.clipboard.write([new ClipboardItem({"image/png":e})]),f(!0),D("\u56fe\u7247\u5df2\u590d\u5236\u5230\u526a\u8d34\u677f"),setTimeout((()=>{f(!1)}),2e3)}catch(n){console.error("\u590d\u5236\u56fe\u7247\u5931\u8d25:",n),D("\u590d\u5236\u56fe\u7247\u5931\u8d25\uff0c\u8bf7\u91cd\u8bd5")}}),"image/png")}catch(e){console.error("\u751f\u6210\u56fe\u7247\u5931\u8d25:",e),D("\u751f\u6210\u56fe\u7247\u5931\u8d25\uff0c\u8bf7\u91cd\u8bd5")}finally{g(!1)}}),500))},disabled:b,style:{padding:"4px 12px",background:m?"#52c41a":b?"#d9d9d9":"#f5f5f5",border:"1px solid "+(m?"#52c41a":b?"#d9d9d9":"#e0e0e0"),borderRadius:"4px",cursor:b?"not-allowed":"pointer",fontSize:"12px",color:m?"#fff":b?"#999":"#666",transition:"all 0.3s ease",display:"flex",alignItems:"center",gap:"4px",opacity:b?.7:1},children:m?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)("span",{style:{fontSize:"14px"},children:"\u2713"}),"\u5df2\u590d\u5236\u56fe\u7247"]}):b?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)("span",{style:{display:"inline-block",animation:"spin 1s linear infinite"},children:"\u27f3"}),"\u5bfc\u51fa\u4e2d..."]}):"\u590d\u5236\u4e3a\u56fe\u7247"}),(0,c.jsx)("button",{onClick:()=>{navigator.clipboard.writeText(n),u(!0),setTimeout((()=>{u(!1)}),2e3)},style:{padding:"4px 12px",background:p?"#52c41a":"#f5f5f5",border:"1px solid "+(p?"#52c41a":"#e0e0e0"),borderRadius:"4px",cursor:"pointer",fontSize:"12px",color:p?"#fff":"#666",transition:"all 0.3s ease",display:"flex",alignItems:"center",gap:"4px"},children:p?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)("span",{style:{fontSize:"14px"},children:"\u2713"}),"\u5df2\u590d\u5236"]}):"\u590d\u5236"})]}),(0,c.jsx)("div",{ref:h,className:`katex-container ${s?"inline":"block"} ${a}`})]})},a=x,h=e=>(0,c.jsx)(x,{...e,inline:!0}),o=e=>(0,c.jsx)(x,{...e,inline:!1})}}]); \ No newline at end of file diff --git a/assets/js/main.1da0c771.js b/assets/js/main.adf5f106.js similarity index 99% rename from assets/js/main.1da0c771.js rename to assets/js/main.adf5f106.js index dfe258c..62acf72 100644 --- a/assets/js/main.1da0c771.js +++ b/assets/js/main.adf5f106.js @@ -1,2 +1,2 @@ -/*! For license information please see main.1da0c771.js.LICENSE.txt */ -(self.webpackChunkssa_to=self.webpackChunkssa_to||[]).push([[8792],{35947:(e,t,n)=>{"use strict";n.d(t,{A:()=>p});n(96540);var r=n(53259),a=n.n(r),o=n(84054);const i={"0058b4c6":[()=>n.e(849).then(n.t.bind(n,86164,19)),"@generated/docusaurus-plugin-content-docs/default/p/docs-175.json",86164],"0565ef90":[()=>Promise.all([n.e(1869),n.e(2076),n.e(1315)]).then(n.bind(n,19569)),"@site/syntaxflow-guide/intro.mdx",19569],"091c61a8":[()=>Promise.all([n.e(1869),n.e(2076),n.e(6998)]).then(n.bind(n,15461)),"@site/static-analysis-guide/compile-ssa-form.mdx",15461],"0e384e19":[()=>Promise.all([n.e(2076),n.e(3976)]).then(n.bind(n,2053)),"@site/docs/intro.md",2053],"0ea66383":[()=>Promise.all([n.e(2076),n.e(5061)]).then(n.bind(n,69470)),"@site/syntaxflow-guide/quick-start.mdx",69470],17896441:[()=>Promise.all([n.e(1869),n.e(2076),n.e(2066),n.e(814),n.e(8401)]).then(n.bind(n,26795)),"@theme/DocItem",26795],"1da00c5d":[()=>Promise.all([n.e(1869),n.e(2076),n.e(2130),n.e(354),n.e(2547)]).then(n.bind(n,30722)),"@site/static-analysis-guide/deep-dive-into-ssa-oop.mdx",30722],"1f391b9e":[()=>Promise.all([n.e(1869),n.e(2076),n.e(2066),n.e(814),n.e(6061)]).then(n.bind(n,67973)),"@theme/MDXPage",67973],27587362:[()=>Promise.all([n.e(1869),n.e(2076),n.e(7851)]).then(n.bind(n,77455)),"@site/syntaxflow-guide/statements/sf-dot-call-chain.mdx",77455],"2bf1e827":[()=>Promise.all([n.e(1869),n.e(2076),n.e(2130),n.e(354),n.e(7418)]).then(n.bind(n,84846)),"@site/static-analysis-guide/deep-dive-into-ssa-dataflow-and-cross-procedure.mdx",84846],"393be207":[()=>Promise.all([n.e(2076),n.e(4134)]).then(n.bind(n,10591)),"@site/src/pages/markdown-page.md",10591],"3a2266ea":[()=>Promise.all([n.e(1869),n.e(2076),n.e(7669)]).then(n.bind(n,43909)),"@site/syntaxflow-guide/statements/sf-dataflow.mdx",43909],"3bd0f189":[()=>Promise.all([n.e(1869),n.e(2076),n.e(7742)]).then(n.bind(n,32645)),"@site/syntaxflow-guide/statements/intro-and-desc.mdx",32645],"41fbb581":[()=>n.e(6424).then(n.t.bind(n,85465,19)),"@generated/docusaurus-plugin-content-docs/static-analysis-guide/p/static-analysis-guide-0b8.json",85465],"434a79c7":[()=>Promise.all([n.e(1869),n.e(2076),n.e(2130),n.e(354),n.e(7015)]).then(n.bind(n,57504)),"@site/static-analysis-guide/ssa-for-advanced-language.mdx",57504],"4f83b4ce":[()=>Promise.all([n.e(2076),n.e(3992)]).then(n.bind(n,35244)),"@site/docs/cli_usage.md",35244],"56e50167":[()=>Promise.all([n.e(1869),n.e(2076),n.e(7960)]).then(n.bind(n,57369)),"@site/syntaxflow-guide/statements/sf-func-call.mdx",57369],"5e95c892":[()=>n.e(9647).then(n.bind(n,7121)),"@theme/DocsRoot",7121],"5e9f5e1a":[()=>Promise.resolve().then(n.bind(n,4784)),"@generated/docusaurus.config",4784],"5ef0e9d6":[()=>Promise.all([n.e(2076),n.e(911)]).then(n.bind(n,82530)),"@site/docs/community.md",82530],"6bf31485":[()=>Promise.all([n.e(1869),n.e(2076),n.e(3384)]).then(n.bind(n,15078)),"@site/syntaxflow-guide/rule-intro.mdx",15078],"7d86b833":[()=>Promise.all([n.e(1869),n.e(2076),n.e(1956)]).then(n.bind(n,64612)),"@site/syntaxflow-guide/statements/sf-variable.mdx",64612],"978c97e7":[()=>n.e(7188).then(n.t.bind(n,38376,19)),"@generated/docusaurus-plugin-content-docs/syntaxflow-guide/__plugin.json",38376],"9c6ad876":[()=>Promise.all([n.e(2076),n.e(2327)]).then(n.bind(n,25013)),"@site/docs/code_audit.md",25013],"9dd8a0d2":[()=>Promise.all([n.e(1869),n.e(3699),n.e(8617)]).then(n.bind(n,11135)),"@site/src/pages/index.jsx",11135],a7456010:[()=>n.e(1235).then(n.t.bind(n,88552,19)),"@generated/docusaurus-plugin-content-pages/default/__plugin.json",88552],a7bd4aaa:[()=>n.e(7098).then(n.bind(n,31723)),"@theme/DocVersionRoot",31723],a94703ab:[()=>Promise.all([n.e(1869),n.e(9048)]).then(n.bind(n,11377)),"@theme/DocRoot",11377],aba21aa0:[()=>n.e(5742).then(n.t.bind(n,27093,19)),"@generated/docusaurus-plugin-content-docs/default/__plugin.json",27093],ad9e0264:[()=>Promise.all([n.e(1869),n.e(2076),n.e(2130),n.e(354),n.e(2010)]).then(n.bind(n,48124)),"@site/syntaxflow-guide/advanced/advanced-analyzing-dataflow.mdx",48124],b27b82bc:[()=>n.e(2131).then(n.t.bind(n,756,19)),"@generated/docusaurus-plugin-content-docs/static-analysis-guide/__plugin.json",756],c85b6cd1:[()=>n.e(3187).then(n.t.bind(n,12834,19)),"@generated/docusaurus-plugin-content-docs/syntaxflow-guide/p/syntaxflow-guide-b0a.json",12834],d00f7347:[()=>Promise.all([n.e(1869),n.e(2076),n.e(8896)]).then(n.bind(n,72254)),"@site/syntaxflow-guide/statements/sf-search.mdx",72254],d7eb97b6:[()=>Promise.all([n.e(1869),n.e(2076),n.e(8941)]).then(n.bind(n,27439)),"@site/syntaxflow-guide/statements/sf-nativecall.mdx",27439],dbea956c:[()=>n.e(6776).then(n.bind(n,45553)),"@site/src/pages/cookbook.jsx",45553],df0aa888:[()=>Promise.all([n.e(1869),n.e(2130),n.e(2066),n.e(3699),n.e(580),n.e(6375)]).then(n.bind(n,40073)),"@site/src/pages/codeAnalysis/index.tsx",40073],e0219ff4:[()=>Promise.all([n.e(1869),n.e(2076),n.e(8804)]).then(n.bind(n,86539)),"@site/syntaxflow-guide/statements/sf-sca.mdx",86539],e15485fb:[()=>Promise.all([n.e(1869),n.e(2076),n.e(2130),n.e(354),n.e(1167)]).then(n.bind(n,84312)),"@site/static-analysis-guide/ssa-for-advanced-language-2.mdx",84312],e6a44593:[()=>Promise.all([n.e(1869),n.e(2076),n.e(3092)]).then(n.bind(n,21468)),"@site/syntaxflow-guide/statements/sf-calc.mdx",21468],e8171acc:[()=>Promise.all([n.e(1869),n.e(2076),n.e(2936)]).then(n.bind(n,88305)),"@site/syntaxflow-guide/statements/sf-filter.mdx",88305],eb498698:[()=>Promise.all([n.e(1869),n.e(2076),n.e(2130),n.e(354),n.e(1758)]).then(n.bind(n,74065)),"@site/static-analysis-guide/intro.mdx",74065],f0423c82:[()=>Promise.all([n.e(1869),n.e(2076),n.e(2130),n.e(354),n.e(4931)]).then(n.bind(n,67087)),"@site/static-analysis-guide/deep-dive-into-ssa-closure.mdx",67087],f94e4379:[()=>Promise.all([n.e(2076),n.e(5214)]).then(n.bind(n,59835)),"@site/docs/code_scan.md",59835]};var l=n(74848);function s(e){let{error:t,retry:n,pastDelay:r}=e;return t?(0,l.jsxs)("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"},children:[(0,l.jsx)("p",{children:String(t)}),(0,l.jsx)("div",{children:(0,l.jsx)("button",{type:"button",onClick:n,children:"Retry"})})]}):r?(0,l.jsx)("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"},children:(0,l.jsx)("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb",children:(0,l.jsxs)("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2",children:[(0,l.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,l.jsx)("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,l.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,l.jsx)("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,l.jsx)("circle",{cx:"22",cy:"22",r:"8",children:(0,l.jsx)("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"})})]})})}):null}var u=n(86921),c=n(53102);function d(e,t){if("*"===e)return a()({loading:s,loader:()=>n.e(2237).then(n.bind(n,82237)),modules:["@theme/NotFound"],webpack:()=>[82237],render(e,t){const n=e.default;return(0,l.jsx)(c.W,{value:{plugin:{name:"native",id:"default"}},children:(0,l.jsx)(n,{...t})})}});const r=o[`${e}-${t}`],d={},p=[],f=[],m=(0,u.A)(r);return Object.entries(m).forEach((e=>{let[t,n]=e;const r=i[n];r&&(d[t]=r[0],p.push(r[1]),f.push(r[2]))})),a().Map({loading:s,loader:d,modules:p,webpack:()=>f,render(t,n){const a=JSON.parse(JSON.stringify(r));Object.entries(t).forEach((t=>{let[n,r]=t;const o=r.default;if(!o)throw new Error(`The page component at ${e} doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.`);"object"!=typeof o&&"function"!=typeof o||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{o[e]=r[e]}));let i=a;const l=n.split(".");l.slice(0,-1).forEach((e=>{i=i[e]})),i[l[l.length-1]]=o}));const o=a.__comp;delete a.__comp;const i=a.__context;delete a.__context;const s=a.__props;return delete a.__props,(0,l.jsx)(c.W,{value:i,children:(0,l.jsx)(o,{...a,...s,...n})})}})}const p=[{path:"/codeAnalysis",component:d("/codeAnalysis","7bc"),exact:!0},{path:"/cookbook",component:d("/cookbook","afe"),exact:!0},{path:"/markdown-page",component:d("/markdown-page","3d7"),exact:!0},{path:"/docs",component:d("/docs","4e4"),routes:[{path:"/docs",component:d("/docs","80b"),routes:[{path:"/docs",component:d("/docs","8dc"),routes:[{path:"/docs/cli_usage",component:d("/docs/cli_usage","85c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/code_audit",component:d("/docs/code_audit","678"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/code_scan",component:d("/docs/code_scan","34e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/community",component:d("/docs/community","0af"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/intro",component:d("/docs/intro","874"),exact:!0,sidebar:"tutorialSidebar"}]}]}]},{path:"/static-analysis-guide",component:d("/static-analysis-guide","941"),routes:[{path:"/static-analysis-guide",component:d("/static-analysis-guide","5b8"),routes:[{path:"/static-analysis-guide",component:d("/static-analysis-guide","204"),routes:[{path:"/static-analysis-guide/compile-ssa-form",component:d("/static-analysis-guide/compile-ssa-form","dac"),exact:!0,sidebar:"staticAnalysisGuideSidebar"},{path:"/static-analysis-guide/deep-dive-into-ssa-closure",component:d("/static-analysis-guide/deep-dive-into-ssa-closure","bb9"),exact:!0,sidebar:"staticAnalysisGuideSidebar"},{path:"/static-analysis-guide/deep-dive-into-ssa-dataflow-and-cross-procedure",component:d("/static-analysis-guide/deep-dive-into-ssa-dataflow-and-cross-procedure","b1f"),exact:!0,sidebar:"staticAnalysisGuideSidebar"},{path:"/static-analysis-guide/deep-dive-into-ssa-oop",component:d("/static-analysis-guide/deep-dive-into-ssa-oop","538"),exact:!0,sidebar:"staticAnalysisGuideSidebar"},{path:"/static-analysis-guide/intro",component:d("/static-analysis-guide/intro","bcd"),exact:!0,sidebar:"staticAnalysisGuideSidebar"},{path:"/static-analysis-guide/ssa-for-advanced-language",component:d("/static-analysis-guide/ssa-for-advanced-language","f6e"),exact:!0,sidebar:"staticAnalysisGuideSidebar"},{path:"/static-analysis-guide/ssa-for-advanced-language-2",component:d("/static-analysis-guide/ssa-for-advanced-language-2","db8"),exact:!0,sidebar:"staticAnalysisGuideSidebar"}]}]}]},{path:"/syntaxflow-guide",component:d("/syntaxflow-guide","e6b"),routes:[{path:"/syntaxflow-guide",component:d("/syntaxflow-guide","5c1"),routes:[{path:"/syntaxflow-guide",component:d("/syntaxflow-guide","8e2"),routes:[{path:"/syntaxflow-guide/advanced/advanced-analyzing-dataflow",component:d("/syntaxflow-guide/advanced/advanced-analyzing-dataflow","133"),exact:!0,sidebar:"syntaxflowGuideSidebar"},{path:"/syntaxflow-guide/intro",component:d("/syntaxflow-guide/intro","adb"),exact:!0,sidebar:"syntaxflowGuideSidebar"},{path:"/syntaxflow-guide/quick-start",component:d("/syntaxflow-guide/quick-start","848"),exact:!0,sidebar:"syntaxflowGuideSidebar"},{path:"/syntaxflow-guide/rule-intro",component:d("/syntaxflow-guide/rule-intro","b51"),exact:!0,sidebar:"syntaxflowGuideSidebar"},{path:"/syntaxflow-guide/statements/intro-and-desc",component:d("/syntaxflow-guide/statements/intro-and-desc","f9a"),exact:!0,sidebar:"syntaxflowGuideSidebar"},{path:"/syntaxflow-guide/statements/sf-calc",component:d("/syntaxflow-guide/statements/sf-calc","5aa"),exact:!0,sidebar:"syntaxflowGuideSidebar"},{path:"/syntaxflow-guide/statements/sf-dataflow",component:d("/syntaxflow-guide/statements/sf-dataflow","9d3"),exact:!0,sidebar:"syntaxflowGuideSidebar"},{path:"/syntaxflow-guide/statements/sf-dot-call-chain",component:d("/syntaxflow-guide/statements/sf-dot-call-chain","73e"),exact:!0,sidebar:"syntaxflowGuideSidebar"},{path:"/syntaxflow-guide/statements/sf-filter",component:d("/syntaxflow-guide/statements/sf-filter","0fb"),exact:!0,sidebar:"syntaxflowGuideSidebar"},{path:"/syntaxflow-guide/statements/sf-func-call",component:d("/syntaxflow-guide/statements/sf-func-call","239"),exact:!0,sidebar:"syntaxflowGuideSidebar"},{path:"/syntaxflow-guide/statements/sf-nativecall",component:d("/syntaxflow-guide/statements/sf-nativecall","2bc"),exact:!0,sidebar:"syntaxflowGuideSidebar"},{path:"/syntaxflow-guide/statements/sf-sca",component:d("/syntaxflow-guide/statements/sf-sca","a7e"),exact:!0,sidebar:"syntaxflowGuideSidebar"},{path:"/syntaxflow-guide/statements/sf-search",component:d("/syntaxflow-guide/statements/sf-search","21f"),exact:!0,sidebar:"syntaxflowGuideSidebar"},{path:"/syntaxflow-guide/statements/sf-variable",component:d("/syntaxflow-guide/statements/sf-variable","730"),exact:!0,sidebar:"syntaxflowGuideSidebar"}]}]}]},{path:"/",component:d("/","070"),exact:!0},{path:"*",component:d("*")}]},6125:(e,t,n)=>{"use strict";n.d(t,{o:()=>o,x:()=>i});var r=n(96540),a=n(74848);const o=r.createContext(!1);function i(e){let{children:t}=e;const[n,i]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{i(!0)}),[]),(0,a.jsx)(o.Provider,{value:n,children:t})}},77815:(e,t,n)=>{"use strict";var r=n(96540),a=n(5338),o=n(80545),i=n(68273),l=n(4784),s=n(38193);const u=[n(10119),n(26134),n(76294),n(89888)];var c=n(35947),d=n(22195),p=n(68060),f=n(74848);function m(e){let{children:t}=e;return(0,f.jsx)(f.Fragment,{children:t})}var g=n(5260),h=n(44586),y=n(86025),b=n(6342),v=n(1003),w=n(32131),k=n(14090);var x=n(70440),S=n(41463);function _(){const{i18n:{currentLocale:e,defaultLocale:t,localeConfigs:n}}=(0,h.A)(),r=(0,w.o)(),a=n[e].htmlLang,o=e=>e.replace("-","_");return(0,f.jsxs)(g.A,{children:[Object.entries(n).map((e=>{let[t,{htmlLang:n}]=e;return(0,f.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:n},t)})),(0,f.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:"x-default"}),(0,f.jsx)("meta",{property:"og:locale",content:o(a)}),Object.values(n).filter((e=>a!==e.htmlLang)).map((e=>(0,f.jsx)("meta",{property:"og:locale:alternate",content:o(e.htmlLang)},`meta-og-${e.htmlLang}`)))]})}function E(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,h.A)(),r=function(){const{siteConfig:{url:e,baseUrl:t,trailingSlash:n}}=(0,h.A)(),{pathname:r}=(0,d.zy)();return e+(0,x.Ks)((0,y.Ay)(r),{trailingSlash:n,baseUrl:t})}(),a=t?`${n}${t}`:r;return(0,f.jsxs)(g.A,{children:[(0,f.jsx)("meta",{property:"og:url",content:a}),(0,f.jsx)("link",{rel:"canonical",href:a})]})}function C(){const{i18n:{currentLocale:e}}=(0,h.A)(),{metadata:t,image:n}=(0,b.p)();return(0,f.jsxs)(f.Fragment,{children:[(0,f.jsxs)(g.A,{children:[(0,f.jsx)("meta",{name:"twitter:card",content:"summary_large_image"}),(0,f.jsx)("body",{className:k.w})]}),n&&(0,f.jsx)(v.be,{image:n}),(0,f.jsx)(E,{}),(0,f.jsx)(_,{}),(0,f.jsx)(S.A,{tag:"default",locale:e}),(0,f.jsx)(g.A,{children:t.map(((e,t)=>(0,f.jsx)("meta",{...e},t)))})]})}const A=new Map;var T=n(6125),j=n(26988),P=n(205);function L(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r{const r=t.default?.[e]??t[e];return r?.(...n)}));return()=>a.forEach((e=>e?.()))}const N=function(e){let{children:t,location:n,previousLocation:r}=e;return(0,P.A)((()=>{r!==n&&(!function(e){let{location:t,previousLocation:n}=e;if(!n)return;const r=t.pathname===n.pathname,a=t.hash===n.hash,o=t.search===n.search;if(r&&a&&!o)return;const{hash:i}=t;if(i){const e=decodeURIComponent(i.substring(1)),t=document.getElementById(e);t?.scrollIntoView()}else window.scrollTo(0,0)}({location:n,previousLocation:r}),L("onRouteDidUpdate",{previousLocation:r,location:n}))}),[r,n]),t};function O(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,p.u)(c.A,e))).flat();return Promise.all(t.map((e=>e.route.component.preload?.())))}class R extends r.Component{previousLocation;routeUpdateCleanupCb;constructor(e){super(e),this.previousLocation=null,this.routeUpdateCleanupCb=s.A.canUseDOM?L("onRouteUpdate",{previousLocation:null,location:this.props.location}):()=>{},this.state={nextRouteHasLoaded:!0}}shouldComponentUpdate(e,t){if(e.location===this.props.location)return t.nextRouteHasLoaded;const n=e.location;return this.previousLocation=this.props.location,this.setState({nextRouteHasLoaded:!1}),this.routeUpdateCleanupCb=L("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),O(n.pathname).then((()=>{this.routeUpdateCleanupCb(),this.setState({nextRouteHasLoaded:!0})})).catch((e=>{console.warn(e),window.location.reload()})),!1}render(){const{children:e,location:t}=this.props;return(0,f.jsx)(N,{previousLocation:this.previousLocation,location:t,children:(0,f.jsx)(d.qh,{location:t,render:()=>e})})}}const D=R,I="__docusaurus-base-url-issue-banner-suggestion-container";function F(e){return`\ndocument.addEventListener('DOMContentLoaded', function maybeInsertBanner() {\n var shouldInsert = typeof window['docusaurus'] === 'undefined';\n shouldInsert && insertBanner();\n});\n\nfunction insertBanner() {\n var bannerContainer = document.createElement('div');\n bannerContainer.id = '__docusaurus-base-url-issue-banner-container';\n var bannerHtml = ${JSON.stringify(function(e){return`\n
\n

Your Docusaurus site did not load properly.

\n

A very common reason is a wrong site baseUrl configuration.

\n

Current configured baseUrl = ${e} ${"/"===e?" (default value)":""}

\n

We suggest trying baseUrl =

\n
\n`}(e)).replace(/{let{route:t}=e;return!0===t.exact})))return A.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return A.set(e.pathname,t),{...e,pathname:t}}((0,d.zy)());return(0,f.jsx)(D,{location:e,children:G})}function V(){return(0,f.jsx)(U.A,{children:(0,f.jsx)(j.l,{children:(0,f.jsxs)(T.x,{children:[(0,f.jsxs)(m,{children:[(0,f.jsx)(B,{}),(0,f.jsx)(C,{}),(0,f.jsx)(z,{}),(0,f.jsx)(H,{})]}),(0,f.jsx)(q,{})]})})})}var W=n(84054);const Q=function(e){try{return document.createElement("link").relList.supports(e)}catch{return!1}}("prefetch")?function(e){return new Promise(((t,n)=>{if("undefined"==typeof document)return void n();const r=document.createElement("link");r.setAttribute("rel","prefetch"),r.setAttribute("href",e),r.onload=()=>t(),r.onerror=()=>n();const a=document.getElementsByTagName("head")[0]??document.getElementsByName("script")[0]?.parentNode;a?.appendChild(r)}))}:function(e){return new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.withCredentials=!0,r.onload=()=>{200===r.status?t():n()},r.send(null)}))};var K=n(86921);const Y=new Set,Z=new Set,X=()=>navigator.connection?.effectiveType.includes("2g")||navigator.connection?.saveData,J={prefetch:e=>{if(!(e=>!X()&&!Z.has(e)&&!Y.has(e))(e))return!1;Y.add(e);const t=(0,p.u)(c.A,e).flatMap((e=>{return t=e.route.path,Object.entries(W).filter((e=>{let[n]=e;return n.replace(/-[^-]+$/,"")===t})).flatMap((e=>{let[,t]=e;return Object.values((0,K.A)(t))}));var t}));return Promise.all(t.map((e=>{const t=n.gca(e);return t&&!t.includes("undefined")?Q(t).catch((()=>{})):Promise.resolve()})))},preload:e=>!!(e=>!X()&&!Z.has(e))(e)&&(Z.add(e),O(e))},ee=Object.freeze(J);function te(e){let{children:t}=e;return"hash"===l.default.future.experimental_router?(0,f.jsx)(i.I9,{children:t}):(0,f.jsx)(i.Kd,{children:t})}const ne=Boolean(!0);if(s.A.canUseDOM){window.docusaurus=ee;const e=document.getElementById("__docusaurus"),t=(0,f.jsx)(o.vd,{children:(0,f.jsx)(te,{children:(0,f.jsx)(V,{})})}),n=(e,t)=>{console.error("Docusaurus React Root onRecoverableError:",e,t)},i=()=>{if(window.docusaurusRoot)window.docusaurusRoot.render(t);else if(ne)window.docusaurusRoot=a.hydrateRoot(e,t,{onRecoverableError:n});else{const r=a.createRoot(e,{onRecoverableError:n});r.render(t),window.docusaurusRoot=r}};O(window.location.pathname).then((()=>{(0,r.startTransition)(i)}))}},26988:(e,t,n)=>{"use strict";n.d(t,{o:()=>d,l:()=>p});var r=n(96540),a=n(4784);const o=JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"path":"/docs","versions":[{"name":"current","label":"Next","isLast":true,"path":"/docs","mainDocId":"intro","docs":[{"id":"cli_usage","path":"/docs/cli_usage","sidebar":"tutorialSidebar"},{"id":"code_audit","path":"/docs/code_audit","sidebar":"tutorialSidebar"},{"id":"code_scan","path":"/docs/code_scan","sidebar":"tutorialSidebar"},{"id":"community","path":"/docs/community","sidebar":"tutorialSidebar"},{"id":"intro","path":"/docs/intro","sidebar":"tutorialSidebar"}],"draftIds":[],"sidebars":{"tutorialSidebar":{"link":{"path":"/docs/intro","label":"intro"}}}}],"breadcrumbs":true},"syntaxflow-guide":{"path":"/syntaxflow-guide","versions":[{"name":"current","label":"Next","isLast":true,"path":"/syntaxflow-guide","mainDocId":"intro","docs":[{"id":"advanced/advanced-analyzing-dataflow","path":"/syntaxflow-guide/advanced/advanced-analyzing-dataflow","sidebar":"syntaxflowGuideSidebar"},{"id":"intro","path":"/syntaxflow-guide/intro","sidebar":"syntaxflowGuideSidebar"},{"id":"quick-start","path":"/syntaxflow-guide/quick-start","sidebar":"syntaxflowGuideSidebar"},{"id":"rule-intro","path":"/syntaxflow-guide/rule-intro","sidebar":"syntaxflowGuideSidebar"},{"id":"statements/intro-and-desc","path":"/syntaxflow-guide/statements/intro-and-desc","sidebar":"syntaxflowGuideSidebar"},{"id":"statements/sf-calc","path":"/syntaxflow-guide/statements/sf-calc","sidebar":"syntaxflowGuideSidebar"},{"id":"statements/sf-dataflow","path":"/syntaxflow-guide/statements/sf-dataflow","sidebar":"syntaxflowGuideSidebar"},{"id":"statements/sf-dot-call-chain","path":"/syntaxflow-guide/statements/sf-dot-call-chain","sidebar":"syntaxflowGuideSidebar"},{"id":"statements/sf-filter","path":"/syntaxflow-guide/statements/sf-filter","sidebar":"syntaxflowGuideSidebar"},{"id":"statements/sf-func-call","path":"/syntaxflow-guide/statements/sf-func-call","sidebar":"syntaxflowGuideSidebar"},{"id":"statements/sf-nativecall","path":"/syntaxflow-guide/statements/sf-nativecall","sidebar":"syntaxflowGuideSidebar"},{"id":"statements/sf-sca","path":"/syntaxflow-guide/statements/sf-sca","sidebar":"syntaxflowGuideSidebar"},{"id":"statements/sf-search","path":"/syntaxflow-guide/statements/sf-search","sidebar":"syntaxflowGuideSidebar"},{"id":"statements/sf-variable","path":"/syntaxflow-guide/statements/sf-variable","sidebar":"syntaxflowGuideSidebar"}],"draftIds":[],"sidebars":{"syntaxflowGuideSidebar":{"link":{"path":"/syntaxflow-guide/intro","label":"intro"}}}}],"breadcrumbs":true},"static-analysis-guide":{"path":"/static-analysis-guide","versions":[{"name":"current","label":"Next","isLast":true,"path":"/static-analysis-guide","mainDocId":"intro","docs":[{"id":"compile-ssa-form","path":"/static-analysis-guide/compile-ssa-form","sidebar":"staticAnalysisGuideSidebar"},{"id":"deep-dive-into-ssa-closure","path":"/static-analysis-guide/deep-dive-into-ssa-closure","sidebar":"staticAnalysisGuideSidebar"},{"id":"deep-dive-into-ssa-dataflow-and-cross-procedure","path":"/static-analysis-guide/deep-dive-into-ssa-dataflow-and-cross-procedure","sidebar":"staticAnalysisGuideSidebar"},{"id":"deep-dive-into-ssa-oop","path":"/static-analysis-guide/deep-dive-into-ssa-oop","sidebar":"staticAnalysisGuideSidebar"},{"id":"intro","path":"/static-analysis-guide/intro","sidebar":"staticAnalysisGuideSidebar"},{"id":"ssa-for-advanced-language","path":"/static-analysis-guide/ssa-for-advanced-language","sidebar":"staticAnalysisGuideSidebar"},{"id":"ssa-for-advanced-language-2","path":"/static-analysis-guide/ssa-for-advanced-language-2","sidebar":"staticAnalysisGuideSidebar"}],"draftIds":[],"sidebars":{"staticAnalysisGuideSidebar":{"link":{"path":"/static-analysis-guide/intro","label":"intro"}}}}],"breadcrumbs":true}}}'),i=JSON.parse('{"defaultLocale":"zh","locales":["zh","en"],"path":"i18n","currentLocale":"zh","localeConfigs":{"zh":{"label":"\u4e2d\u6587","direction":"ltr","htmlLang":"zh","calendar":"gregory","path":"zh"},"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en"}}}');var l=n(22654);const s=JSON.parse('{"docusaurusVersion":"3.6.1","siteVersion":"0.0.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"3.6.1"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"3.6.1"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"3.6.1"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"3.6.1"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"3.6.1"},"docusaurus-plugin-sass":{"type":"package","name":"docusaurus-plugin-sass","version":"0.2.5"},"docusaurus-plugin-proxy":{"type":"package","name":"docusaurus-plugin-proxy","version":"0.7.5"},"docusaurus-plugin-client-redirects":{"type":"package","name":"@docusaurus/plugin-client-redirects","version":"3.6.1"},"docusaurus-theme-mermaid":{"type":"package","name":"@docusaurus/theme-mermaid","version":"3.6.1"}}}');var u=n(74848);const c={siteConfig:a.default,siteMetadata:s,globalData:o,i18n:i,codeTranslations:l},d=r.createContext(c);function p(e){let{children:t}=e;return(0,u.jsx)(d.Provider,{value:c,children:t})}},67489:(e,t,n)=>{"use strict";n.d(t,{A:()=>g});var r=n(96540),a=n(38193),o=n(5260),i=n(70440),l=n(67259),s=n(53102),u=n(74848);function c(e){let{error:t,tryAgain:n}=e;return(0,u.jsxs)("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"},children:[(0,u.jsx)("h1",{style:{fontSize:"3rem"},children:"This page crashed"}),(0,u.jsx)("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"},children:"Try again"}),(0,u.jsx)(d,{error:t})]})}function d(e){let{error:t}=e;const n=(0,i.rA)(t).map((e=>e.message)).join("\n\nCause:\n");return(0,u.jsx)("p",{style:{whiteSpace:"pre-wrap"},children:n})}function p(e){let{children:t}=e;return(0,u.jsx)(s.W,{value:{plugin:{name:"docusaurus-core-error-boundary",id:"default"}},children:t})}function f(e){let{error:t,tryAgain:n}=e;return(0,u.jsx)(p,{children:(0,u.jsxs)(g,{fallback:()=>(0,u.jsx)(c,{error:t,tryAgain:n}),children:[(0,u.jsx)(o.A,{children:(0,u.jsx)("title",{children:"Page Error"})}),(0,u.jsx)(l.A,{children:(0,u.jsx)(c,{error:t,tryAgain:n})})]})})}const m=e=>(0,u.jsx)(f,{...e});class g extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){a.A.canUseDOM&&this.setState({error:e})}render(){const{children:e}=this.props,{error:t}=this.state;if(t){const e={error:t,tryAgain:()=>this.setState({error:null})};return(this.props.fallback??m)(e)}return e??null}}},38193:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});const r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,a={canUseDOM:r,canUseEventListeners:r&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&"screen"in window}},5260:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});n(96540);var r=n(80545),a=n(74848);function o(e){return(0,a.jsx)(r.mg,{...e})}},28774:(e,t,n)=>{"use strict";n.d(t,{A:()=>f});var r=n(96540),a=n(68273),o=n(70440),i=n(44586),l=n(16654),s=n(38193),u=n(63427),c=n(86025),d=n(74848);function p(e,t){let{isNavLink:n,to:p,href:f,activeClassName:m,isActive:g,"data-noBrokenLinkCheck":h,autoAddBaseUrl:y=!0,...b}=e;const{siteConfig:v}=(0,i.A)(),{trailingSlash:w,baseUrl:k}=v,x=v.future.experimental_router,{withBaseUrl:S}=(0,c.hH)(),_=(0,u.A)(),E=(0,r.useRef)(null);(0,r.useImperativeHandle)(t,(()=>E.current));const C=p||f;const A=(0,l.A)(C),T=C?.replace("pathname://","");let j=void 0!==T?(P=T,y&&(e=>e.startsWith("/"))(P)?S(P):P):void 0;var P;"hash"===x&&j?.startsWith("./")&&(j=j?.slice(1)),j&&A&&(j=(0,o.Ks)(j,{trailingSlash:w,baseUrl:k}));const L=(0,r.useRef)(!1),N=n?a.k2:a.N_,O=s.A.canUseIntersectionObserver,R=(0,r.useRef)(),D=()=>{L.current||null==j||(window.docusaurus.preload(j),L.current=!0)};(0,r.useEffect)((()=>(!O&&A&&s.A.canUseDOM&&null!=j&&window.docusaurus.prefetch(j),()=>{O&&R.current&&R.current.disconnect()})),[R,j,O,A]);const I=j?.startsWith("#")??!1,F=!b.target||"_self"===b.target,M=!j||!A||!F||I&&"hash"!==x;h||!I&&M||_.collectLink(j),b.id&&_.collectAnchor(b.id);const z={};return M?(0,d.jsx)("a",{ref:E,href:j,...C&&!A&&{target:"_blank",rel:"noopener noreferrer"},...b,...z}):(0,d.jsx)(N,{...b,onMouseEnter:D,onTouchStart:D,innerRef:e=>{E.current=e,O&&e&&A&&(R.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(R.current.unobserve(e),R.current.disconnect(),null!=j&&window.docusaurus.prefetch(j))}))})),R.current.observe(e))},to:j,...n&&{isActive:g,activeClassName:m},...z})}const f=r.forwardRef(p)},21312:(e,t,n)=>{"use strict";n.d(t,{A:()=>u,T:()=>s});var r=n(96540),a=n(74848);function o(e,t){const n=e.split(/(\{\w+\})/).map(((e,n)=>{if(n%2==1){const n=t?.[e.slice(1,-1)];if(void 0!==n)return n}return e}));return n.some((e=>(0,r.isValidElement)(e)))?n.map(((e,t)=>(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e)).filter((e=>""!==e)):n.join("")}var i=n(22654);function l(e){let{id:t,message:n}=e;if(void 0===t&&void 0===n)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return i[t??n]??n??t}function s(e,t){let{message:n,id:r}=e;return o(l({message:n,id:r}),t)}function u(e){let{children:t,id:n,values:r}=e;if(t&&"string"!=typeof t)throw console.warn("Illegal children",t),new Error("The Docusaurus component only accept simple string values");const i=l({message:t,id:n});return(0,a.jsx)(a.Fragment,{children:o(i,r)})}},17065:(e,t,n)=>{"use strict";n.d(t,{W:()=>r});const r="default"},16654:(e,t,n)=>{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function a(e){return void 0!==e&&!r(e)}n.d(t,{A:()=>a,z:()=>r})},86025:(e,t,n)=>{"use strict";n.d(t,{Ay:()=>l,hH:()=>i});var r=n(96540),a=n(44586),o=n(16654);function i(){const{siteConfig:e}=(0,a.A)(),{baseUrl:t,url:n}=e,i=e.future.experimental_router,l=(0,r.useCallback)(((e,r)=>function(e){let{siteUrl:t,baseUrl:n,url:r,options:{forcePrependBaseUrl:a=!1,absolute:i=!1}={},router:l}=e;if(!r||r.startsWith("#")||(0,o.z)(r))return r;if("hash"===l)return r.startsWith("/")?`.${r}`:`./${r}`;if(a)return n+r.replace(/^\//,"");if(r===n.replace(/\/$/,""))return n;const s=r.startsWith(n)?r:n+r.replace(/^\//,"");return i?t+s:s}({siteUrl:n,baseUrl:t,url:e,options:r,router:i})),[n,t,i]);return{withBaseUrl:l}}function l(e,t){void 0===t&&(t={});const{withBaseUrl:n}=i();return n(e,t)}},63427:(e,t,n)=>{"use strict";n.d(t,{A:()=>i});var r=n(96540);n(74848);const a=r.createContext({collectAnchor:()=>{},collectLink:()=>{}}),o=()=>(0,r.useContext)(a);function i(){return o()}},44586:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});var r=n(96540),a=n(26988);function o(){return(0,r.useContext)(a.o)}},92303:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});var r=n(96540),a=n(6125);function o(){return(0,r.useContext)(a.o)}},205:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var r=n(96540);const a=n(38193).A.canUseDOM?r.useLayoutEffect:r.useEffect},86921:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});const r=e=>"object"==typeof e&&!!e&&Object.keys(e).length>0;function a(e){const t={};return function e(n,a){Object.entries(n).forEach((n=>{let[o,i]=n;const l=a?`${a}.${o}`:o;r(i)?e(i,l):t[l]=i}))}(e),t}},53102:(e,t,n)=>{"use strict";n.d(t,{W:()=>i,o:()=>o});var r=n(96540),a=n(74848);const o=r.createContext(null);function i(e){let{children:t,value:n}=e;const i=r.useContext(o),l=(0,r.useMemo)((()=>function(e){let{parent:t,value:n}=e;if(!t){if(!n)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in n))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return n}const r={...t.data,...n?.data};return{plugin:t.plugin,data:r}}({parent:i,value:n})),[i,n]);return(0,a.jsx)(o.Provider,{value:l,children:t})}},53886:(e,t,n)=>{"use strict";n.d(t,{VQ:()=>h,g1:()=>b});var r=n(96540),a=n(44070),o=n(17065),i=n(6342),l=n(70679),s=n(89532),u=n(74848);const c=e=>`docs-preferred-version-${e}`,d={save:(e,t,n)=>{(0,l.Wf)(c(e),{persistence:t}).set(n)},read:(e,t)=>(0,l.Wf)(c(e),{persistence:t}).get(),clear:(e,t)=>{(0,l.Wf)(c(e),{persistence:t}).del()}},p=e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}])));const f=r.createContext(null);function m(){const e=(0,a.Gy)(),t=(0,i.p)().docs.versionPersistence,n=(0,r.useMemo)((()=>Object.keys(e)),[e]),[o,l]=(0,r.useState)((()=>p(n)));(0,r.useEffect)((()=>{l(function(e){let{pluginIds:t,versionPersistence:n,allDocsData:r}=e;function a(e){const t=d.read(e,n);return r[e].versions.some((e=>e.name===t))?{preferredVersionName:t}:(d.clear(e,n),{preferredVersionName:null})}return Object.fromEntries(t.map((e=>[e,a(e)])))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[o,(0,r.useMemo)((()=>({savePreferredVersion:function(e,n){d.save(e,t,n),l((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}function g(e){let{children:t}=e;const n=m();return(0,u.jsx)(f.Provider,{value:n,children:t})}function h(e){let{children:t}=e;return(0,u.jsx)(g,{children:t})}function y(){const e=(0,r.useContext)(f);if(!e)throw new s.dV("DocsPreferredVersionContextProvider");return e}function b(e){void 0===e&&(e=o.W);const t=(0,a.ht)(e),[n,i]=y(),{preferredVersionName:l}=n[e];return{preferredVersion:t.versions.find((e=>e.name===l))??null,savePreferredVersionName:(0,r.useCallback)((t=>{i.savePreferredVersion(e,t)}),[i,e])}}},60609:(e,t,n)=>{"use strict";n.d(t,{V:()=>s,t:()=>u});var r=n(96540),a=n(89532),o=n(74848);const i=Symbol("EmptyContext"),l=r.createContext(i);function s(e){let{children:t,name:n,items:a}=e;const i=(0,r.useMemo)((()=>n&&a?{name:n,items:a}:null),[n,a]);return(0,o.jsx)(l.Provider,{value:i,children:t})}function u(){const e=(0,r.useContext)(l);if(e===i)throw new a.dV("DocsSidebarProvider");return e}},44718:(e,t,n)=>{"use strict";n.d(t,{Nr:()=>p,w8:()=>g,B5:()=>S,Vd:()=>w,QB:()=>x,fW:()=>k,OF:()=>v,Y:()=>y});var r=n(96540),a=n(22195),o=n(68060),i=n(44070),l=n(99169);function s(e){return Array.from(new Set(e))}var u=n(53886),c=n(23025),d=n(60609);function p(e){return"link"!==e.type||e.unlisted?"category"===e.type?function(e){if(e.href&&!e.linkUnlisted)return e.href;for(const t of e.items){const e=p(t);if(e)return e}}(e):void 0:e.href}const f=(e,t)=>void 0!==e&&(0,l.ys)(e,t),m=(e,t)=>e.some((e=>g(e,t)));function g(e,t){return"link"===e.type?f(e.href,t):"category"===e.type&&(f(e.href,t)||m(e.items,t))}function h(e,t){switch(e.type){case"category":return g(e,t)||e.items.some((e=>h(e,t)));case"link":return!e.unlisted||g(e,t);default:return!0}}function y(e,t){return(0,r.useMemo)((()=>e.filter((e=>h(e,t)))),[e,t])}function b(e){let{sidebarItems:t,pathname:n,onlyCategories:r=!1}=e;const a=[];return function e(t){for(const o of t)if("category"===o.type&&((0,l.ys)(o.href,n)||e(o.items))||"link"===o.type&&(0,l.ys)(o.href,n)){return r&&"category"!==o.type||a.unshift(o),!0}return!1}(t),a}function v(){const e=(0,d.t)(),{pathname:t}=(0,a.zy)(),n=(0,i.vT)()?.pluginData.breadcrumbs;return!1!==n&&e?b({sidebarItems:e.items,pathname:t}):null}function w(e){const{activeVersion:t}=(0,i.zK)(e),{preferredVersion:n}=(0,u.g1)(e),a=(0,i.r7)(e);return(0,r.useMemo)((()=>s([t,n,a].filter(Boolean))),[t,n,a])}function k(e,t){const n=w(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.sidebars?Object.entries(e.sidebars):[])),r=t.find((t=>t[0]===e));if(!r)throw new Error(`Can't find any sidebar with id "${e}" in version${n.length>1?"s":""} ${n.map((e=>e.name)).join(", ")}".\nAvailable sidebar ids are:\n- ${t.map((e=>e[0])).join("\n- ")}`);return r[1]}),[e,n])}function x(e,t){const n=w(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.docs)),r=t.find((t=>t.id===e));if(!r){if(n.flatMap((e=>e.draftIds)).includes(e))return null;throw new Error(`Couldn't find any doc with id "${e}" in version${n.length>1?"s":""} "${n.map((e=>e.name)).join(", ")}".\nAvailable doc ids are:\n- ${s(t.map((e=>e.id))).join("\n- ")}`)}return r}),[e,n])}function S(e){let{route:t}=e;const n=(0,a.zy)(),r=(0,c.r)(),i=t.routes,l=i.find((e=>(0,a.B6)(n.pathname,e)));if(!l)return null;const s=l.sidebar,u=s?r.docsSidebars[s]:void 0;return{docElement:(0,o.v)(i),sidebarName:s,sidebarItems:u}}},23025:(e,t,n)=>{"use strict";n.d(t,{n:()=>l,r:()=>s});var r=n(96540),a=n(89532),o=n(74848);const i=r.createContext(null);function l(e){let{children:t,version:n}=e;return(0,o.jsx)(i.Provider,{value:n,children:t})}function s(){const e=(0,r.useContext)(i);if(null===e)throw new a.dV("DocsVersionProvider");return e}},44070:(e,t,n)=>{"use strict";n.d(t,{zK:()=>g,vT:()=>p,Gy:()=>c,HW:()=>h,ht:()=>d,r7:()=>m,jh:()=>f});var r=n(22195),a=n(44586),o=n(17065);function i(e,t){void 0===t&&(t={});const n=function(){const{globalData:e}=(0,a.A)();return e}()[e];if(!n&&t.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin.`);return n}const l=e=>e.versions.find((e=>e.isLast));function s(e,t){const n=function(e,t){return[...e.versions].sort(((e,t)=>e.path===t.path?0:e.path.includes(t.path)?-1:t.path.includes(e.path)?1:0)).find((e=>!!(0,r.B6)(t,{path:e.path,exact:!1,strict:!1})))}(e,t),a=n?.docs.find((e=>!!(0,r.B6)(t,{path:e.path,exact:!0,strict:!1})));return{activeVersion:n,activeDoc:a,alternateDocVersions:a?function(t){const n={};return e.versions.forEach((e=>{e.docs.forEach((r=>{r.id===t&&(n[e.name]=r)}))})),n}(a.id):{}}}const u={},c=()=>i("docusaurus-plugin-content-docs")??u,d=e=>{try{return function(e,t,n){void 0===t&&(t=o.W),void 0===n&&(n={});const r=i(e),a=r?.[t];if(!a&&n.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return a}("docusaurus-plugin-content-docs",e,{failfast:!0})}catch(t){throw new Error("You are using a feature of the Docusaurus docs plugin, but this plugin does not seem to be enabled"+("Default"===e?"":` (pluginId=${e}`),{cause:t})}};function p(e){void 0===e&&(e={});const t=c(),{pathname:n}=(0,r.zy)();return function(e,t,n){void 0===n&&(n={});const a=Object.entries(e).sort(((e,t)=>t[1].path.localeCompare(e[1].path))).find((e=>{let[,n]=e;return!!(0,r.B6)(t,{path:n.path,exact:!1,strict:!1})})),o=a?{pluginId:a[0],pluginData:a[1]}:void 0;if(!o&&n.failfast)throw new Error(`Can't find active docs plugin for "${t}" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: ${Object.values(e).map((e=>e.path)).join(", ")}`);return o}(t,n,e)}function f(e){return d(e).versions}function m(e){const t=d(e);return l(t)}function g(e){const t=d(e),{pathname:n}=(0,r.zy)();return s(t,n)}function h(e){const t=d(e),{pathname:n}=(0,r.zy)();return function(e,t){const n=l(e);return{latestDocSuggestion:s(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},76294:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(5947),a=n.n(r);a().configure({showSpinner:!1});const o={onRouteUpdate(e){let{location:t,previousLocation:n}=e;if(n&&t.pathname!==n.pathname){const e=window.setTimeout((()=>{a().start()}),200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){a().done()}}},26134:(e,t,n)=>{"use strict";var r=n(71765),a=n(4784);!function(e){const{themeConfig:{prism:t}}=a.default,{additionalLanguages:r}=t,o=globalThis.Prism;globalThis.Prism=e,r.forEach((e=>{"php"===e&&n(19700),n(18692)(`./prism-${e}`)})),delete globalThis.Prism,void 0!==o&&(globalThis.Prism=e)}(r.My)},51107:(e,t,n)=>{"use strict";n.d(t,{A:()=>c});n(96540);var r=n(34164),a=n(21312),o=n(6342),i=n(28774),l=n(63427);const s={anchorWithStickyNavbar:"anchorWithStickyNavbar_LWe7",anchorWithHideOnScrollNavbar:"anchorWithHideOnScrollNavbar_WYt5"};var u=n(74848);function c(e){let{as:t,id:n,...c}=e;const d=(0,l.A)(),{navbar:{hideOnScroll:p}}=(0,o.p)();if("h1"===t||!n)return(0,u.jsx)(t,{...c,id:void 0});d.collectAnchor(n);const f=(0,a.T)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof c.children?c.children:n});return(0,u.jsxs)(t,{...c,className:(0,r.A)("anchor",p?s.anchorWithHideOnScrollNavbar:s.anchorWithStickyNavbar,c.className),id:n,children:[c.children,(0,u.jsx)(i.A,{className:"hash-link",to:`#${n}`,"aria-label":f,title:f,children:"\u200b"})]})}},43186:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});n(96540);const r={iconExternalLink:"iconExternalLink_nPIU"};var a=n(74848);function o(e){let{width:t=13.5,height:n=13.5}=e;return(0,a.jsx)("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:r.iconExternalLink,children:(0,a.jsx)("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"})})}},23465:(e,t,n)=>{"use strict";n.d(t,{A:()=>c});n(96540);var r=n(28774),a=n(86025),o=n(44586),i=n(6342),l=n(21122),s=n(74848);function u(e){let{logo:t,alt:n,imageClassName:r}=e;const o={light:(0,a.Ay)(t.src),dark:(0,a.Ay)(t.srcDark||t.src)},i=(0,s.jsx)(l.A,{className:t.className,sources:o,height:t.height,width:t.width,alt:n,style:t.style});return r?(0,s.jsx)("div",{className:r,children:i}):i}function c(e){const{siteConfig:{title:t}}=(0,o.A)(),{navbar:{title:n,logo:l}}=(0,i.p)(),{imageClassName:c,titleClassName:d,...p}=e,f=(0,a.Ay)(l?.href||"/"),m=n?"":t,g=l?.alt??m;return(0,s.jsxs)(r.A,{to:f,...p,...l?.target&&{target:l.target},children:[l&&(0,s.jsx)(u,{logo:l,alt:g,imageClassName:c}),null!=n&&(0,s.jsx)("b",{className:d,children:n})]})}},41463:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});n(96540);var r=n(5260),a=n(74848);function o(e){let{locale:t,version:n,tag:o}=e;const i=t;return(0,a.jsxs)(r.A,{children:[t&&(0,a.jsx)("meta",{name:"docusaurus_locale",content:t}),n&&(0,a.jsx)("meta",{name:"docusaurus_version",content:n}),o&&(0,a.jsx)("meta",{name:"docusaurus_tag",content:o}),i&&(0,a.jsx)("meta",{name:"docsearch:language",content:i}),n&&(0,a.jsx)("meta",{name:"docsearch:version",content:n}),o&&(0,a.jsx)("meta",{name:"docsearch:docusaurus_tag",content:o})]})}},21122:(e,t,n)=>{"use strict";n.d(t,{A:()=>c});var r=n(96540),a=n(34164),o=n(92303),i=n(95293);const l={themedComponent:"themedComponent_mlkZ","themedComponent--light":"themedComponent--light_NVdE","themedComponent--dark":"themedComponent--dark_xIcU"};var s=n(74848);function u(e){let{className:t,children:n}=e;const u=(0,o.A)(),{colorMode:c}=(0,i.G)();return(0,s.jsx)(s.Fragment,{children:(u?"dark"===c?["dark"]:["light"]:["light","dark"]).map((e=>{const o=n({theme:e,className:(0,a.A)(t,l.themedComponent,l[`themedComponent--${e}`])});return(0,s.jsx)(r.Fragment,{children:o},e)}))})}function c(e){const{sources:t,className:n,alt:r,...a}=e;return(0,s.jsx)(u,{className:n,children:e=>{let{theme:n,className:o}=e;return(0,s.jsx)("img",{src:t[n],alt:r,className:o,...a})}})}},41422:(e,t,n)=>{"use strict";n.d(t,{N:()=>y,u:()=>u});var r=n(96540),a=n(38193),o=n(205),i=n(53109),l=n(74848);const s="ease-in-out";function u(e){let{initialState:t}=e;const[n,a]=(0,r.useState)(t??!1),o=(0,r.useCallback)((()=>{a((e=>!e))}),[]);return{collapsed:n,setCollapsed:a,toggleCollapsed:o}}const c={display:"none",overflow:"hidden",height:"0px"},d={display:"block",overflow:"visible",height:"auto"};function p(e,t){const n=t?c:d;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function f(e){let{collapsibleRef:t,collapsed:n,animation:a}=e;const o=(0,r.useRef)(!1);(0,r.useEffect)((()=>{const e=t.current;function r(){const t=e.scrollHeight,n=a?.duration??function(e){if((0,i.O)())return 1;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(t);return{transition:`height ${n}ms ${a?.easing??s}`,height:`${t}px`}}function l(){const t=r();e.style.transition=t.transition,e.style.height=t.height}if(!o.current)return p(e,n),void(o.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(l(),requestAnimationFrame((()=>{e.style.height=c.height,e.style.overflow=c.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{l()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,a])}function m(e){if(!a.A.canUseDOM)return e?c:d}function g(e){let{as:t="div",collapsed:n,children:a,animation:o,onCollapseTransitionEnd:i,className:s,disableSSRStyle:u}=e;const c=(0,r.useRef)(null);return f({collapsibleRef:c,collapsed:n,animation:o}),(0,l.jsx)(t,{ref:c,style:u?void 0:m(n),onTransitionEnd:e=>{"height"===e.propertyName&&(p(c.current,n),i?.(n))},className:s,children:a})}function h(e){let{collapsed:t,...n}=e;const[a,i]=(0,r.useState)(!t),[s,u]=(0,r.useState)(t);return(0,o.A)((()=>{t||i(!0)}),[t]),(0,o.A)((()=>{a&&u(t)}),[a,t]),a?(0,l.jsx)(g,{...n,collapsed:s}):null}function y(e){let{lazy:t,...n}=e;const r=t?h:g;return(0,l.jsx)(r,{...n})}},65041:(e,t,n)=>{"use strict";n.d(t,{M:()=>g,o:()=>m});var r=n(96540),a=n(92303),o=n(70679),i=n(89532),l=n(6342),s=n(74848);const u=(0,o.Wf)("docusaurus.announcement.dismiss"),c=(0,o.Wf)("docusaurus.announcement.id"),d=()=>"true"===u.get(),p=e=>u.set(String(e)),f=r.createContext(null);function m(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,l.p)(),t=(0,a.A)(),[n,o]=(0,r.useState)((()=>!!t&&d()));(0,r.useEffect)((()=>{o(d())}),[]);const i=(0,r.useCallback)((()=>{p(!0),o(!0)}),[]);return(0,r.useEffect)((()=>{if(!e)return;const{id:t}=e;let n=c.get();"annoucement-bar"===n&&(n="announcement-bar");const r=t!==n;c.set(t),r&&p(!1),!r&&d()||o(!1)}),[e]),(0,r.useMemo)((()=>({isActive:!!e&&!n,close:i})),[e,n,i])}();return(0,s.jsx)(f.Provider,{value:n,children:t})}function g(){const e=(0,r.useContext)(f);if(!e)throw new i.dV("AnnouncementBarProvider");return e}},95293:(e,t,n)=>{"use strict";n.d(t,{G:()=>y,a:()=>h});var r=n(96540),a=n(38193),o=n(89532),i=n(70679),l=n(6342),s=n(74848);const u=r.createContext(void 0),c="theme",d=(0,i.Wf)(c),p={light:"light",dark:"dark"},f=e=>e===p.dark?p.dark:p.light,m=e=>a.A.canUseDOM?f(document.documentElement.getAttribute("data-theme")):f(e),g=e=>{d.set(f(e))};function h(e){let{children:t}=e;const n=function(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,l.p)(),[a,o]=(0,r.useState)(m(e));(0,r.useEffect)((()=>{t&&d.del()}),[t]);const i=(0,r.useCallback)((function(t,r){void 0===r&&(r={});const{persist:a=!0}=r;t?(o(t),a&&g(t)):(o(n?window.matchMedia("(prefers-color-scheme: dark)").matches?p.dark:p.light:e),d.del())}),[n,e]);(0,r.useEffect)((()=>{document.documentElement.setAttribute("data-theme",f(a))}),[a]),(0,r.useEffect)((()=>{if(t)return;const e=e=>{if(e.key!==c)return;const t=d.get();null!==t&&i(f(t))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)}),[t,i]);const s=(0,r.useRef)(!1);return(0,r.useEffect)((()=>{if(t&&!n)return;const e=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>{window.matchMedia("print").matches||s.current?s.current=window.matchMedia("print").matches:i(null)};return e.addListener(r),()=>e.removeListener(r)}),[i,t,n]),(0,r.useMemo)((()=>({colorMode:a,setColorMode:i,get isDarkTheme(){return a===p.dark},setLightTheme(){i(p.light)},setDarkTheme(){i(p.dark)}})),[a,i])}();return(0,s.jsx)(u.Provider,{value:n,children:t})}function y(){const e=(0,r.useContext)(u);if(null==e)throw new o.dV("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},89876:(e,t,n)=>{"use strict";n.d(t,{e:()=>f,M:()=>m});var r=n(96540),a=n(75600),o=n(24581),i=n(22195),l=n(89532);function s(e){!function(e){const t=(0,i.W6)(),n=(0,l._q)(e);(0,r.useEffect)((()=>t.block(((e,t)=>n(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}var u=n(6342),c=n(74848);const d=r.createContext(void 0);function p(){const e=function(){const e=(0,a.YL)(),{items:t}=(0,u.p)().navbar;return 0===t.length&&!e.component}(),t=(0,o.l)(),n=!e&&"mobile"===t,[i,l]=(0,r.useState)(!1);s((()=>{if(i)return l(!1),!1}));const c=(0,r.useCallback)((()=>{l((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===t&&l(!1)}),[t]),(0,r.useMemo)((()=>({disabled:e,shouldRender:n,toggle:c,shown:i})),[e,n,c,i])}function f(e){let{children:t}=e;const n=p();return(0,c.jsx)(d.Provider,{value:n,children:t})}function m(){const e=r.useContext(d);if(void 0===e)throw new l.dV("NavbarMobileSidebarProvider");return e}},75600:(e,t,n)=>{"use strict";n.d(t,{GX:()=>u,YL:()=>s,y_:()=>l});var r=n(96540),a=n(89532),o=n(74848);const i=r.createContext(null);function l(e){let{children:t}=e;const n=(0,r.useState)({component:null,props:null});return(0,o.jsx)(i.Provider,{value:n,children:t})}function s(){const e=(0,r.useContext)(i);if(!e)throw new a.dV("NavbarSecondaryMenuContentProvider");return e[0]}function u(e){let{component:t,props:n}=e;const o=(0,r.useContext)(i);if(!o)throw new a.dV("NavbarSecondaryMenuContentProvider");const[,l]=o,s=(0,a.Be)(n);return(0,r.useEffect)((()=>{l({component:t,props:s})}),[l,t,s]),(0,r.useEffect)((()=>()=>l({component:null,props:null})),[l]),null}},14090:(e,t,n)=>{"use strict";n.d(t,{w:()=>a,J:()=>o});var r=n(96540);const a="navigation-with-keyboard";function o(){(0,r.useEffect)((()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(a),"mousedown"===e.type&&document.body.classList.remove(a)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(a),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},24581:(e,t,n)=>{"use strict";n.d(t,{l:()=>l});var r=n(96540),a=n(38193);const o={desktop:"desktop",mobile:"mobile",ssr:"ssr"},i=996;function l(e){let{desktopBreakpoint:t=i}=void 0===e?{}:e;const[n,l]=(0,r.useState)((()=>"ssr"));return(0,r.useEffect)((()=>{function e(){l(function(e){if(!a.A.canUseDOM)throw new Error("getWindowSize() should only be called after React hydration");return window.innerWidth>e?o.desktop:o.mobile}(t))}return e(),window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e)}}),[t]),n}},17559:(e,t,n)=>{"use strict";n.d(t,{G:()=>r});const r={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",blogAuthorsListPage:"blog-authors-list-page",blogAuthorsPostsPage:"blog-authors-posts-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block",admonition:"theme-admonition",unlistedBanner:"theme-unlisted-banner",draftBanner:"theme-draft-banner",admonitionType:e=>`theme-admonition-${e}`},layout:{},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docBreadcrumbs:"theme-doc-breadcrumbs",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarContainer:"theme-doc-sidebar-container",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:e=>`theme-doc-sidebar-item-category-level-${e}`,docSidebarItemLinkLevel:e=>`theme-doc-sidebar-item-link-level-${e}`},blog:{blogFooterTagsRow:"theme-blog-footer-tags-row",blogFooterEditMetaRow:"theme-blog-footer-edit-meta-row"},pages:{pageFooterEditMetaRow:"theme-pages-footer-edit-meta-row"}}},53109:(e,t,n)=>{"use strict";function r(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}n.d(t,{O:()=>r})},12181:(e,t,n)=>{"use strict";n.d(t,{bq:()=>c,MN:()=>u,a2:()=>s,k2:()=>d});var r=n(96540),a=n(21312),o=n(70440);const i={errorBoundaryError:"errorBoundaryError_a6uf",errorBoundaryFallback:"errorBoundaryFallback_VBag"};var l=n(74848);function s(e){return(0,l.jsx)("button",{type:"button",...e,children:(0,l.jsx)(a.A,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error",children:"Try again"})})}function u(e){let{error:t,tryAgain:n}=e;return(0,l.jsxs)("div",{className:i.errorBoundaryFallback,children:[(0,l.jsx)("p",{children:t.message}),(0,l.jsx)(s,{onClick:n})]})}function c(e){let{error:t}=e;const n=(0,o.rA)(t).map((e=>e.message)).join("\n\nCause:\n");return(0,l.jsx)("p",{className:i.errorBoundaryError,children:n})}class d extends r.Component{componentDidCatch(e,t){throw this.props.onError(e,t)}render(){return this.props.children}}},1003:(e,t,n)=>{"use strict";n.d(t,{e3:()=>f,be:()=>d,Jx:()=>m});var r=n(96540),a=n(34164),o=n(5260),i=n(53102);function l(){const e=r.useContext(i.o);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var s=n(86025),u=n(44586);var c=n(74848);function d(e){let{title:t,description:n,keywords:r,image:a,children:i}=e;const l=function(e){const{siteConfig:t}=(0,u.A)(),{title:n,titleDelimiter:r}=t;return e?.trim().length?`${e.trim()} ${r} ${n}`:n}(t),{withBaseUrl:d}=(0,s.hH)(),p=a?d(a,{absolute:!0}):void 0;return(0,c.jsxs)(o.A,{children:[t&&(0,c.jsx)("title",{children:l}),t&&(0,c.jsx)("meta",{property:"og:title",content:l}),n&&(0,c.jsx)("meta",{name:"description",content:n}),n&&(0,c.jsx)("meta",{property:"og:description",content:n}),r&&(0,c.jsx)("meta",{name:"keywords",content:Array.isArray(r)?r.join(","):r}),p&&(0,c.jsx)("meta",{property:"og:image",content:p}),p&&(0,c.jsx)("meta",{name:"twitter:image",content:p}),i]})}const p=r.createContext(void 0);function f(e){let{className:t,children:n}=e;const i=r.useContext(p),l=(0,a.A)(i,t);return(0,c.jsxs)(p.Provider,{value:l,children:[(0,c.jsx)(o.A,{children:(0,c.jsx)("html",{className:l})}),n]})}function m(e){let{children:t}=e;const n=l(),r=`plugin-${n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const o=`plugin-id-${n.plugin.id}`;return(0,c.jsx)(f,{className:(0,a.A)(r,o),children:t})}},89532:(e,t,n)=>{"use strict";n.d(t,{Be:()=>u,ZC:()=>l,_q:()=>i,dV:()=>s,fM:()=>c});var r=n(96540),a=n(205),o=n(74848);function i(e){const t=(0,r.useRef)(e);return(0,a.A)((()=>{t.current=e}),[e]),(0,r.useCallback)((function(){return t.current(...arguments)}),[])}function l(e){const t=(0,r.useRef)();return(0,a.A)((()=>{t.current=e})),t.current}class s extends Error{constructor(e,t){super(),this.name="ReactContextError",this.message=`Hook ${this.stack?.split("\n")[1]?.match(/at (?:\w+\.)?(?\w+)/)?.groups.name??""} is called outside the <${e}>. ${t??""}`}}function u(e){const t=Object.entries(e);return t.sort(((e,t)=>e[0].localeCompare(t[0]))),(0,r.useMemo)((()=>e),t.flat())}function c(e){return t=>{let{children:n}=t;return(0,o.jsx)(o.Fragment,{children:e.reduceRight(((e,t)=>(0,o.jsx)(t,{children:e})),n)})}}},99169:(e,t,n)=>{"use strict";n.d(t,{Dt:()=>l,ys:()=>i});var r=n(96540),a=n(35947),o=n(44586);function i(e,t){const n=e=>(!e||e.endsWith("/")?e:`${e}/`)?.toLowerCase();return n(e)===n(t)}function l(){const{baseUrl:e}=(0,o.A)().siteConfig;return(0,r.useMemo)((()=>function(e){let{baseUrl:t,routes:n}=e;function r(e){return e.path===t&&!0===e.exact}function a(e){return e.path===t&&!e.exact}return function e(t){if(0===t.length)return;return t.find(r)||e(t.filter(a).flatMap((e=>e.routes??[])))}(n)}({routes:a.A,baseUrl:e})),[e])}},23104:(e,t,n)=>{"use strict";n.d(t,{Mq:()=>p,Tv:()=>u,gk:()=>f});var r=n(96540),a=n(38193),o=n(92303),i=(n(205),n(89532)),l=n(74848);const s=r.createContext(void 0);function u(e){let{children:t}=e;const n=function(){const e=(0,r.useRef)(!0);return(0,r.useMemo)((()=>({scrollEventsEnabledRef:e,enableScrollEvents:()=>{e.current=!0},disableScrollEvents:()=>{e.current=!1}})),[])}();return(0,l.jsx)(s.Provider,{value:n,children:t})}function c(){const e=(0,r.useContext)(s);if(null==e)throw new i.dV("ScrollControllerProvider");return e}const d=()=>a.A.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function p(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=c(),a=(0,r.useRef)(d()),o=(0,i._q)(e);(0,r.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=d();o(e,a.current),a.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)}),[o,n,...t])}function f(){const e=(0,r.useRef)(null),t=(0,o.A)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:n=>{e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),()=>{}}(n):function(e){let t=null;const n=document.documentElement.scrollTop>e;return function r(){const a=document.documentElement.scrollTop;(n&&a>e||!n&&at&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>e.current?.()}}},70679:(e,t,n)=>{"use strict";n.d(t,{Wf:()=>u});n(96540);const r=JSON.parse('{"N":"localStorage","M":""}'),a=r.N;function o(e){let{key:t,oldValue:n,newValue:r,storage:a}=e;if(n===r)return;const o=document.createEvent("StorageEvent");o.initStorageEvent("storage",!1,!1,t,n,r,window.location.href,a),window.dispatchEvent(o)}function i(e){if(void 0===e&&(e=a),"undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(n){return t=n,l||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",t),l=!0),null}var t}let l=!1;const s={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function u(e,t){const n=`${e}${r.M}`;if("undefined"==typeof window)return function(e){function t(){throw new Error(`Illegal storage API usage for storage key "${e}".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.`)}return{get:t,set:t,del:t,listen:t}}(n);const a=i(t?.persistence);return null===a?s:{get:()=>{try{return a.getItem(n)}catch(e){return console.error(`Docusaurus storage error, can't get key=${n}`,e),null}},set:e=>{try{const t=a.getItem(n);a.setItem(n,e),o({key:n,oldValue:t,newValue:e,storage:a})}catch(t){console.error(`Docusaurus storage error, can't set ${n}=${e}`,t)}},del:()=>{try{const e=a.getItem(n);a.removeItem(n),o({key:n,oldValue:e,newValue:null,storage:a})}catch(e){console.error(`Docusaurus storage error, can't delete key=${n}`,e)}},listen:e=>{try{const t=t=>{t.storageArea===a&&t.key===n&&e(t)};return window.addEventListener("storage",t),()=>window.removeEventListener("storage",t)}catch(t){return console.error(`Docusaurus storage error, can't listen for changes of key=${n}`,t),()=>{}}}}}},32131:(e,t,n)=>{"use strict";n.d(t,{o:()=>i});var r=n(44586),a=n(22195),o=n(70440);function i(){const{siteConfig:{baseUrl:e,url:t,trailingSlash:n},i18n:{defaultLocale:i,currentLocale:l}}=(0,r.A)(),{pathname:s}=(0,a.zy)(),u=(0,o.Ks)(s,{trailingSlash:n,baseUrl:e}),c=l===i?e:e.replace(`/${l}/`,"/"),d=u.replace(e,"");return{createUrl:function(e){let{locale:n,fullyQualified:r}=e;return`${r?t:""}${function(e){return e===i?`${c}`:`${c}${e}/`}(n)}${d}`}}}},75062:(e,t,n)=>{"use strict";n.d(t,{$:()=>i});var r=n(96540),a=n(22195),o=n(89532);function i(e){const t=(0,a.zy)(),n=(0,o.ZC)(t),i=(0,o._q)(e);(0,r.useEffect)((()=>{n&&t!==n&&i({location:t,previousLocation:n})}),[i,t,n])}},6342:(e,t,n)=>{"use strict";n.d(t,{p:()=>a});var r=n(44586);function a(){return(0,r.A)().siteConfig.themeConfig}},12983:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.addTrailingSlash=a,t.default=function(e,t){const{trailingSlash:n,baseUrl:r}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[i]=e.split(/[#?]/),l="/"===i||i===r?i:(s=i,u=n,u?a(s):o(s));var s,u;return e.replace(i,l)},t.addLeadingSlash=function(e){return(0,r.addPrefix)(e,"/")},t.removeTrailingSlash=o;const r=n(42566);function a(e){return e.endsWith("/")?e:`${e}/`}function o(e){return(0,r.removeSuffix)(e,"/")}},80253:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=function e(t){if(t.cause)return[t,...e(t.cause)];return[t]}},70440:(e,t,n)=>{"use strict";t.rA=t.Ks=void 0;const r=n(31635);var a=n(12983);Object.defineProperty(t,"Ks",{enumerable:!0,get:function(){return r.__importDefault(a).default}});var o=n(42566);var i=n(80253);Object.defineProperty(t,"rA",{enumerable:!0,get:function(){return i.getErrorCausalChain}})},42566:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.addPrefix=function(e,t){return e.startsWith(t)?e:`${t}${e}`},t.removeSuffix=function(e,t){if(""===t)return e;return e.endsWith(t)?e.slice(0,-t.length):e},t.addSuffix=function(e,t){return e.endsWith(t)?e:`${e}${t}`},t.removePrefix=function(e,t){return e.startsWith(t)?e.slice(t.length):e}},67259:(e,t,n)=>{"use strict";n.d(t,{A:()=>dt});var r=n(96540),a=n(34164),o=n(67489),i=n(1003),l=n(22195),s=n(21312),u=n(75062),c=n(74848);const d="__docusaurus_skipToContent_fallback";function p(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function f(){const e=(0,r.useRef)(null),{action:t}=(0,l.W6)(),n=(0,r.useCallback)((e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.getElementById(d);t&&p(t)}),[]);return(0,u.$)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&p(e.current)})),{containerRef:e,onClick:n}}const m=(0,s.T)({id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation",message:"Skip to main content"});function g(e){const t=e.children??m,{containerRef:n,onClick:r}=f();return(0,c.jsx)("div",{ref:n,role:"region","aria-label":m,children:(0,c.jsx)("a",{...e,href:`#${d}`,onClick:r,children:t})})}var h=n(17559),y=n(14090);const b={skipToContent:"skipToContent_fXgn"};function v(){return(0,c.jsx)(g,{className:b.skipToContent})}var w=n(6342),k=n(65041);function x(e){let{width:t=21,height:n=21,color:r="currentColor",strokeWidth:a=1.2,className:o,...i}=e;return(0,c.jsx)("svg",{viewBox:"0 0 15 15",width:t,height:n,...i,children:(0,c.jsx)("g",{stroke:r,strokeWidth:a,children:(0,c.jsx)("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})})})}const S={closeButton:"closeButton_CVFx"};function _(e){return(0,c.jsx)("button",{type:"button","aria-label":(0,s.T)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"}),...e,className:(0,a.A)("clean-btn close",S.closeButton,e.className),children:(0,c.jsx)(x,{width:14,height:14,strokeWidth:3.1})})}const E={content:"content_knG7"};function C(e){const{announcementBar:t}=(0,w.p)(),{content:n}=t;return(0,c.jsx)("div",{...e,className:(0,a.A)(E.content,e.className),dangerouslySetInnerHTML:{__html:n}})}const A={announcementBar:"announcementBar_mb4j",announcementBarPlaceholder:"announcementBarPlaceholder_vyr4",announcementBarClose:"announcementBarClose_gvF7",announcementBarContent:"announcementBarContent_xLdY"};function T(){const{announcementBar:e}=(0,w.p)(),{isActive:t,close:n}=(0,k.M)();if(!t)return null;const{backgroundColor:r,textColor:a,isCloseable:o}=e;return(0,c.jsxs)("div",{className:A.announcementBar,style:{backgroundColor:r,color:a},role:"banner",children:[o&&(0,c.jsx)("div",{className:A.announcementBarPlaceholder}),(0,c.jsx)(C,{className:A.announcementBarContent}),o&&(0,c.jsx)(_,{onClick:n,className:A.announcementBarClose})]})}var j=n(89876),P=n(23104);var L=n(89532),N=n(75600);const O=r.createContext(null);function R(e){let{children:t}=e;const n=function(){const e=(0,j.M)(),t=(0,N.YL)(),[n,a]=(0,r.useState)(!1),o=null!==t.component,i=(0,L.ZC)(o);return(0,r.useEffect)((()=>{o&&!i&&a(!0)}),[o,i]),(0,r.useEffect)((()=>{o?e.shown||a(!0):a(!1)}),[e.shown,o]),(0,r.useMemo)((()=>[n,a]),[n])}();return(0,c.jsx)(O.Provider,{value:n,children:t})}function D(e){if(e.component){const t=e.component;return(0,c.jsx)(t,{...e.props})}}function I(){const e=(0,r.useContext)(O);if(!e)throw new L.dV("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,a=(0,r.useCallback)((()=>n(!1)),[n]),o=(0,N.YL)();return(0,r.useMemo)((()=>({shown:t,hide:a,content:D(o)})),[a,o,t])}function F(e){let{header:t,primaryMenu:n,secondaryMenu:r}=e;const{shown:o}=I();return(0,c.jsxs)("div",{className:"navbar-sidebar",children:[t,(0,c.jsxs)("div",{className:(0,a.A)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":o}),children:[(0,c.jsx)("div",{className:"navbar-sidebar__item menu",children:n}),(0,c.jsx)("div",{className:"navbar-sidebar__item menu",children:r})]})]})}var M=n(95293),z=n(92303);function B(e){return(0,c.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,c.jsx)("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"})})}function U(e){return(0,c.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,c.jsx)("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"})})}const $={toggle:"toggle_vylO",toggleButton:"toggleButton_gllP",darkToggleIcon:"darkToggleIcon_wfgR",lightToggleIcon:"lightToggleIcon_pyhR",toggleButtonDisabled:"toggleButtonDisabled_aARS"};function q(e){let{className:t,buttonClassName:n,value:r,onChange:o}=e;const i=(0,z.A)(),l=(0,s.T)({message:"Switch between dark and light mode (currently {mode})",id:"theme.colorToggle.ariaLabel",description:"The ARIA label for the navbar color mode toggle"},{mode:"dark"===r?(0,s.T)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,s.T)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return(0,c.jsx)("div",{className:(0,a.A)($.toggle,t),children:(0,c.jsxs)("button",{className:(0,a.A)("clean-btn",$.toggleButton,!i&&$.toggleButtonDisabled,n),type:"button",onClick:()=>o("dark"===r?"light":"dark"),disabled:!i,title:l,"aria-label":l,"aria-live":"polite","aria-pressed":"dark"===r?"true":"false",children:[(0,c.jsx)(B,{className:(0,a.A)($.toggleIcon,$.lightToggleIcon)}),(0,c.jsx)(U,{className:(0,a.A)($.toggleIcon,$.darkToggleIcon)})]})})}const G=r.memo(q),H={darkNavbarColorModeToggle:"darkNavbarColorModeToggle_Q0Zn"};function V(e){let{className:t}=e;const n=(0,w.p)().navbar.style,r=(0,w.p)().colorMode.disableSwitch,{colorMode:a,setColorMode:o}=(0,M.G)();return r?null:(0,c.jsx)(G,{className:t,buttonClassName:"dark"===n?H.darkNavbarColorModeToggle:void 0,value:a,onChange:o})}var W=n(23465);function Q(){return(0,c.jsx)(W.A,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function K(){const e=(0,j.M)();return(0,c.jsx)("button",{type:"button","aria-label":(0,s.T)({id:"theme.docs.sidebar.closeSidebarButtonAriaLabel",message:"Close navigation bar",description:"The ARIA label for close button of mobile sidebar"}),className:"clean-btn navbar-sidebar__close",onClick:()=>e.toggle(),children:(0,c.jsx)(x,{color:"var(--ifm-color-emphasis-600)"})})}function Y(){return(0,c.jsxs)("div",{className:"navbar-sidebar__brand",children:[(0,c.jsx)(Q,{}),(0,c.jsx)(V,{className:"margin-right--md"}),(0,c.jsx)(K,{})]})}var Z=n(28774),X=n(86025),J=n(16654);function ee(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}var te=n(43186);function ne(e){let{activeBasePath:t,activeBaseRegex:n,to:r,href:a,label:o,html:i,isDropdownLink:l,prependBaseUrlToHref:s,...u}=e;const d=(0,X.Ay)(r),p=(0,X.Ay)(t),f=(0,X.Ay)(a,{forcePrependBaseUrl:!0}),m=o&&a&&!(0,J.A)(a),g=i?{dangerouslySetInnerHTML:{__html:i}}:{children:(0,c.jsxs)(c.Fragment,{children:[o,m&&(0,c.jsx)(te.A,{...l&&{width:12,height:12}})]})};return a?(0,c.jsx)(Z.A,{href:s?f:a,...u,...g}):(0,c.jsx)(Z.A,{to:d,isNavLink:!0,...(t||n)&&{isActive:(e,t)=>n?ee(n,t.pathname):t.pathname.startsWith(p)},...u,...g})}function re(e){let{className:t,isDropdownItem:n=!1,...r}=e;const o=(0,c.jsx)(ne,{className:(0,a.A)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n,...r});return n?(0,c.jsx)("li",{children:o}):o}function ae(e){let{className:t,isDropdownItem:n,...r}=e;return(0,c.jsx)("li",{className:"menu__list-item",children:(0,c.jsx)(ne,{className:(0,a.A)("menu__link",t),...r})})}function oe(e){let{mobile:t=!1,position:n,...r}=e;const a=t?ae:re;return(0,c.jsx)(a,{...r,activeClassName:r.activeClassName??(t?"menu__link--active":"navbar__link--active")})}var ie=n(41422),le=n(99169),se=n(44586);const ue="dropdownNavbarItemMobile_S0Fm";function ce(e,t){return e.some((e=>function(e,t){return!!(0,le.ys)(e.to,t)||!!ee(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function de(e){let{items:t,position:n,className:o,onClick:i,...l}=e;const s=(0,r.useRef)(null),[u,d]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{const e=e=>{s.current&&!s.current.contains(e.target)&&d(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),document.addEventListener("focusin",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e),document.removeEventListener("focusin",e)}}),[s]),(0,c.jsxs)("div",{ref:s,className:(0,a.A)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===n,"dropdown--show":u}),children:[(0,c.jsx)(ne,{"aria-haspopup":"true","aria-expanded":u,role:"button",href:l.to?void 0:"#",className:(0,a.A)("navbar__link",o),...l,onClick:l.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),d(!u))},children:l.children??l.label}),(0,c.jsx)("ul",{className:"dropdown__menu",children:t.map(((e,t)=>(0,r.createElement)(Ee,{isDropdownItem:!0,activeClassName:"dropdown__link--active",...e,key:t})))})]})}function pe(e){let{items:t,className:n,position:o,onClick:i,...s}=e;const u=function(){const{siteConfig:{baseUrl:e}}=(0,se.A)(),{pathname:t}=(0,l.zy)();return t.replace(e,"/")}(),d=ce(t,u),{collapsed:p,toggleCollapsed:f,setCollapsed:m}=(0,ie.u)({initialState:()=>!d});return(0,r.useEffect)((()=>{d&&m(!d)}),[u,d,m]),(0,c.jsxs)("li",{className:(0,a.A)("menu__list-item",{"menu__list-item--collapsed":p}),children:[(0,c.jsx)(ne,{role:"button",className:(0,a.A)(ue,"menu__link menu__link--sublist menu__link--sublist-caret",n),...s,onClick:e=>{e.preventDefault(),f()},children:s.children??s.label}),(0,c.jsx)(ie.N,{lazy:!0,as:"ul",className:"menu__list",collapsed:p,children:t.map(((e,t)=>(0,r.createElement)(Ee,{mobile:!0,isDropdownItem:!0,onClick:i,activeClassName:"menu__link--active",...e,key:t})))})]})}function fe(e){let{mobile:t=!1,...n}=e;const r=t?pe:de;return(0,c.jsx)(r,{...n})}var me=n(32131);function ge(e){let{width:t=20,height:n=20,...r}=e;return(0,c.jsx)("svg",{viewBox:"0 0 24 24",width:t,height:n,"aria-hidden":!0,...r,children:(0,c.jsx)("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"})})}const he="iconLanguage_nlXk";const ye=()=>null,be={navbarSearchContainer:"navbarSearchContainer_dCNk"};function ve(e){let{children:t,className:n}=e;return(0,c.jsx)("div",{className:(0,a.A)(n,be.navbarSearchContainer),children:t})}var we=n(44070),ke=n(44718);var xe=n(53886);function Se(e,t){return t.alternateDocVersions[e.name]??function(e){return e.docs.find((t=>t.id===e.mainDocId))}(e)}const _e={default:oe,localeDropdown:function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:r,queryString:a="",...o}=e;const{i18n:{currentLocale:i,locales:u,localeConfigs:d}}=(0,se.A)(),p=(0,me.o)(),{search:f,hash:m}=(0,l.zy)(),g=[...n,...u.map((e=>{const n=`${`pathname://${p.createUrl({locale:e,fullyQualified:!1})}`}${f}${m}${a}`;return{label:d[e].label,lang:d[e].htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===i?t?"menu__link--active":"dropdown__link--active":""}})),...r],h=t?(0,s.T)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):d[i].label;return(0,c.jsx)(fe,{...o,mobile:t,label:(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(ge,{className:he}),h]}),items:g})},search:function(e){let{mobile:t,className:n}=e;return t?null:(0,c.jsx)(ve,{className:n,children:(0,c.jsx)(ye,{})})},dropdown:fe,html:function(e){let{value:t,className:n,mobile:r=!1,isDropdownItem:o=!1}=e;const i=o?"li":"div";return(0,c.jsx)(i,{className:(0,a.A)({navbar__item:!r&&!o,"menu__list-item":r},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:r,...a}=e;const{activeDoc:o}=(0,we.zK)(r),i=(0,ke.QB)(t,r),l=o?.path===i?.path;return null===i||i.unlisted&&!l?null:(0,c.jsx)(oe,{exact:!0,...a,isActive:()=>l||!!o?.sidebar&&o.sidebar===i.sidebar,label:n??i.id,to:i.path})},docSidebar:function(e){let{sidebarId:t,label:n,docsPluginId:r,...a}=e;const{activeDoc:o}=(0,we.zK)(r),i=(0,ke.fW)(t,r).link;if(!i)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${t}" doesn't have anything to be linked to.`);return(0,c.jsx)(oe,{exact:!0,...a,isActive:()=>o?.sidebar===t,label:n??i.label,to:i.path})},docsVersion:function(e){let{label:t,to:n,docsPluginId:r,...a}=e;const o=(0,ke.Vd)(r)[0],i=t??o.label,l=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(o).path;return(0,c.jsx)(oe,{...a,label:i,to:l})},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:r,dropdownItemsBefore:a,dropdownItemsAfter:o,...i}=e;const{search:u,hash:d}=(0,l.zy)(),p=(0,we.zK)(n),f=(0,we.jh)(n),{savePreferredVersionName:m}=(0,xe.g1)(n),g=[...a,...f.map((function(e){const t=Se(e,p);return{label:e.label,to:`${t.path}${u}${d}`,isActive:()=>e===p.activeVersion,onClick:()=>m(e.name)}})),...o],h=(0,ke.Vd)(n)[0],y=t&&g.length>1?(0,s.T)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):h.label,b=t&&g.length>1?void 0:Se(h,p).path;return g.length<=1?(0,c.jsx)(oe,{...i,mobile:t,label:y,to:b,isActive:r?()=>!1:void 0}):(0,c.jsx)(fe,{...i,mobile:t,label:y,to:b,items:g,isActive:r?()=>!1:void 0})}};function Ee(e){let{type:t,...n}=e;const r=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),a=_e[r];if(!a)throw new Error(`No NavbarItem component found for type "${t}".`);return(0,c.jsx)(a,{...n})}function Ce(){const e=(0,j.M)(),t=(0,w.p)().navbar.items;return(0,c.jsx)("ul",{className:"menu__list",children:t.map(((t,n)=>(0,r.createElement)(Ee,{mobile:!0,...t,onClick:()=>e.toggle(),key:n})))})}function Ae(e){return(0,c.jsx)("button",{...e,type:"button",className:"clean-btn navbar-sidebar__back",children:(0,c.jsx)(s.A,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)",children:"\u2190 Back to main menu"})})}function Te(){const e=0===(0,w.p)().navbar.items.length,t=I();return(0,c.jsxs)(c.Fragment,{children:[!e&&(0,c.jsx)(Ae,{onClick:()=>t.hide()}),t.content]})}function je(){const e=(0,j.M)();var t;return void 0===(t=e.shown)&&(t=!0),(0,r.useEffect)((()=>(document.body.style.overflow=t?"hidden":"visible",()=>{document.body.style.overflow="visible"})),[t]),e.shouldRender?(0,c.jsx)(F,{header:(0,c.jsx)(Y,{}),primaryMenu:(0,c.jsx)(Ce,{}),secondaryMenu:(0,c.jsx)(Te,{})}):null}const Pe={navbarHideable:"navbarHideable_jvwV",navbarHidden:"navbarHidden_nLSi"};function Le(e){return(0,c.jsx)("div",{role:"presentation",...e,className:(0,a.A)("navbar-sidebar__backdrop",e.className)})}function Ne(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:o}}=(0,w.p)(),i=(0,j.M)(),{navbarRef:l,isNavbarVisible:d}=function(e){const[t,n]=(0,r.useState)(e),a=(0,r.useRef)(!1),o=(0,r.useRef)(0),i=(0,r.useCallback)((e=>{null!==e&&(o.current=e.getBoundingClientRect().height)}),[]);return(0,P.Mq)(((t,r)=>{let{scrollY:i}=t;if(!e)return;if(i=l?n(!1):i+u{if(!e)return;const r=t.location.hash;if(r?document.getElementById(r.substring(1)):void 0)return a.current=!0,void n(!1);n(!0)})),{navbarRef:i,isNavbarVisible:t}}(n);return(0,c.jsxs)("nav",{ref:l,"aria-label":(0,s.T)({id:"theme.NavBar.navAriaLabel",message:"Main",description:"The ARIA label for the main navigation"}),className:(0,a.A)("navbar","navbar--fixed-top",n&&[Pe.navbarHideable,!d&&Pe.navbarHidden],{"navbar--dark":"dark"===o,"navbar--primary":"primary"===o,"navbar-sidebar--show":i.shown}),children:[t,(0,c.jsx)(Le,{onClick:i.toggle}),(0,c.jsx)(je,{})]})}var Oe=n(12181);const Re="right";function De(e){let{width:t=30,height:n=30,className:r,...a}=e;return(0,c.jsx)("svg",{className:r,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true",...a,children:(0,c.jsx)("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"})})}function Ie(){const{toggle:e,shown:t}=(0,j.M)();return(0,c.jsx)("button",{onClick:e,"aria-label":(0,s.T)({id:"theme.docs.sidebar.toggleSidebarButtonAriaLabel",message:"Toggle navigation bar",description:"The ARIA label for hamburger menu button of mobile navigation"}),"aria-expanded":t,className:"navbar__toggle clean-btn",type:"button",children:(0,c.jsx)(De,{})})}const Fe={colorModeToggle:"colorModeToggle_x44X"};function Me(e){let{items:t}=e;return(0,c.jsx)(c.Fragment,{children:t.map(((e,t)=>(0,c.jsx)(Oe.k2,{onError:t=>new Error(`A theme navbar item failed to render.\nPlease double-check the following navbar item (themeConfig.navbar.items) of your Docusaurus config:\n${JSON.stringify(e,null,2)}`,{cause:t}),children:(0,c.jsx)(Ee,{...e})},t)))})}function ze(e){let{left:t,right:n}=e;return(0,c.jsxs)("div",{className:"navbar__inner",children:[(0,c.jsx)("div",{className:"navbar__items",children:t}),(0,c.jsx)("div",{className:"navbar__items navbar__items--right",children:n})]})}function Be(){const e=(0,j.M)(),t=(0,w.p)().navbar.items,[n,r]=function(e){function t(e){return"left"===(e.position??Re)}return[e.filter(t),e.filter((e=>!t(e)))]}(t),a=t.find((e=>"search"===e.type));return(0,c.jsx)(ze,{left:(0,c.jsxs)(c.Fragment,{children:[!e.disabled&&(0,c.jsx)(Ie,{}),(0,c.jsx)(Q,{}),(0,c.jsx)(Me,{items:n})]}),right:(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(Me,{items:r}),(0,c.jsx)(V,{className:Fe.colorModeToggle}),!a&&(0,c.jsx)(ve,{children:(0,c.jsx)(ye,{})})]})})}function Ue(){return(0,c.jsx)(Ne,{children:(0,c.jsx)(Be,{})})}function $e(e){let{item:t}=e;const{to:n,href:r,label:a,prependBaseUrlToHref:o,...i}=t,l=(0,X.Ay)(n),s=(0,X.Ay)(r,{forcePrependBaseUrl:!0});return(0,c.jsxs)(Z.A,{className:"footer__link-item",...r?{href:o?s:r}:{to:l},...i,children:[a,r&&!(0,J.A)(r)&&(0,c.jsx)(te.A,{})]})}function qe(e){let{item:t}=e;return t.html?(0,c.jsx)("li",{className:"footer__item",dangerouslySetInnerHTML:{__html:t.html}}):(0,c.jsx)("li",{className:"footer__item",children:(0,c.jsx)($e,{item:t})},t.href??t.to)}function Ge(e){let{column:t}=e;return(0,c.jsxs)("div",{className:"col footer__col",children:[(0,c.jsx)("div",{className:"footer__title",children:t.title}),(0,c.jsx)("ul",{className:"footer__items clean-list",children:t.items.map(((e,t)=>(0,c.jsx)(qe,{item:e},t)))})]})}function He(e){let{columns:t}=e;return(0,c.jsx)("div",{className:"row footer__links",children:t.map(((e,t)=>(0,c.jsx)(Ge,{column:e},t)))})}function Ve(){return(0,c.jsx)("span",{className:"footer__link-separator",children:"\xb7"})}function We(e){let{item:t}=e;return t.html?(0,c.jsx)("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):(0,c.jsx)($e,{item:t})}function Qe(e){let{links:t}=e;return(0,c.jsx)("div",{className:"footer__links text--center",children:(0,c.jsx)("div",{className:"footer__links",children:t.map(((e,n)=>(0,c.jsxs)(r.Fragment,{children:[(0,c.jsx)(We,{item:e}),t.length!==n+1&&(0,c.jsx)(Ve,{})]},n)))})})}function Ke(e){let{links:t}=e;return function(e){return"title"in e[0]}(t)?(0,c.jsx)(He,{columns:t}):(0,c.jsx)(Qe,{links:t})}var Ye=n(21122);const Ze="footerLogoLink_DDai";function Xe(e){let{logo:t}=e;const{withBaseUrl:n}=(0,X.hH)(),r={light:n(t.src),dark:n(t.srcDark??t.src)};return(0,c.jsx)(Ye.A,{className:(0,a.A)("footer__logo",t.className),alt:t.alt,sources:r,width:t.width,height:t.height,style:t.style})}function Je(e){let{logo:t}=e;return t.href?(0,c.jsx)(Z.A,{href:t.href,className:Ze,target:t.target,children:(0,c.jsx)(Xe,{logo:t})}):(0,c.jsx)(Xe,{logo:t})}const et="copyright_C_OK";function tt(e){let{copyright:t}=e;return(0,c.jsx)("div",{className:(0,a.A)("footer__copyright",et),dangerouslySetInnerHTML:{__html:t}})}const nt="footer_jryj";function rt(e){let{style:t,links:n,logo:r,copyright:o}=e;return(0,c.jsxs)("footer",{className:(0,a.A)("footer",{"footer--dark":"dark"===t},nt),children:[(0,c.jsxs)("div",{className:"container container-fluid",children:[n,(r||o)&&(0,c.jsx)("div",{className:"footer__bottom text--center",children:r&&(0,c.jsx)("div",{className:"margin-bottom--sm",children:r})})]}),o]})}function at(){const{footer:e}=(0,w.p)();if(!e)return null;const{copyright:t,links:n,logo:r,style:a}=e;return(0,c.jsx)(rt,{style:a,links:n&&n.length>0&&(0,c.jsx)(Ke,{links:n}),logo:r&&(0,c.jsx)(Je,{logo:r}),copyright:t&&(0,c.jsx)(tt,{copyright:t})})}const ot=r.memo(at),it=(0,L.fM)([M.a,k.o,P.Tv,i.Jx,xe.VQ,function(e){let{children:t}=e;return(0,c.jsx)(N.y_,{children:(0,c.jsx)(j.e,{children:(0,c.jsx)(R,{children:t})})})}].filter(Boolean));function lt(e){let{children:t}=e;return(0,c.jsx)(it,{children:t})}var st=n(51107);function ut(e){let{error:t,tryAgain:n}=e;return(0,c.jsx)("main",{className:"container margin-vert--xl",children:(0,c.jsx)("div",{className:"row",children:(0,c.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,c.jsx)(st.A,{as:"h1",className:"hero__title",children:(0,c.jsx)(s.A,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed",children:"This page crashed."})}),(0,c.jsx)("div",{className:"margin-vert--lg",children:(0,c.jsx)(Oe.a2,{onClick:n,className:"button button--primary shadow--lw"})}),(0,c.jsx)("hr",{}),(0,c.jsx)("div",{className:"margin-vert--md",children:(0,c.jsx)(Oe.bq,{error:t})})]})})})}const ct={mainWrapper:"mainWrapper_eExm"};function dt(e){const{children:t,noFooter:n,wrapperClassName:r,title:l,description:s}=e;return(0,y.J)(),(0,c.jsxs)(lt,{children:[(0,c.jsx)(i.be,{title:l,description:s}),(0,c.jsx)(v,{}),(0,c.jsx)(T,{}),(0,c.jsx)(Ue,{}),(0,c.jsx)("div",{id:d,className:(0,a.A)(h.G.wrapper.main,ct.mainWrapper,r),children:(0,c.jsx)(o.A,{fallback:e=>(0,c.jsx)(ut,{...e}),children:t})}),!n&&(0,c.jsx)(ot,{})]})}},73910:(e,t,n)=>{"use strict";function r(){return r=Object.assign?Object.assign.bind():function(e){for(var t=1;tw,TM:()=>C,yJ:()=>f,sC:()=>T,AO:()=>p});const i=function(e,t){void 0===t&&(t="");var n,r=e&&e.split("/")||[],i=t&&t.split("/")||[],l=e&&a(e),s=t&&a(t),u=l||s;if(e&&a(e)?i=r:r.length&&(i.pop(),i=i.concat(r)),!i.length)return"/";if(i.length){var c=i[i.length-1];n="."===c||".."===c||""===c}else n=!1;for(var d=0,p=i.length;p>=0;p--){var f=i[p];"."===f?o(i,p):".."===f?(o(i,p),d++):d&&(o(i,p),d--)}if(!u)for(;d--;d)i.unshift("..");!u||""===i[0]||i[0]&&a(i[0])||i.unshift("");var m=i.join("/");return n&&"/"!==m.substr(-1)&&(m+="/"),m};var l=n(11561);function s(e){return"/"===e.charAt(0)?e:"/"+e}function u(e){return"/"===e.charAt(0)?e.substr(1):e}function c(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function d(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function p(e){var t=e.pathname,n=e.search,r=e.hash,a=t||"/";return n&&"?"!==n&&(a+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(a+="#"===r.charAt(0)?r:"#"+r),a}function f(e,t,n,a){var o;"string"==typeof e?(o=function(e){var t=e||"/",n="",r="",a=t.indexOf("#");-1!==a&&(r=t.substr(a),t=t.substr(0,a));var o=t.indexOf("?");return-1!==o&&(n=t.substr(o),t=t.substr(0,o)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),o.state=t):(void 0===(o=r({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(l){throw l instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):l}return n&&(o.key=n),a?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=i(o.pathname,a.pathname)):o.pathname=a.pathname:o.pathname||(o.pathname="/"),o}function m(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,a){if(null!=e){var o="function"==typeof e?e(t,n):e;"string"==typeof o?"function"==typeof r?r(o,a):a(!0):a(!1!==o)}else a(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;rt?n.splice(t,n.length-t,a):n.push(a),d({action:r,location:a,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",a=f(e,t,g(),w.location);c.confirmTransitionTo(a,r,n,(function(e){e&&(w.entries[w.index]=a,d({action:r,location:a}))}))},go:v,goBack:function(){v(-1)},goForward:function(){v(1)},canGo:function(e){var t=w.index+e;return t>=0&&t{"use strict";var r=n(44363),a={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},l={};function s(e){return r.isMemo(e)?i:l[e.$$typeof]||a}l[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},l[r.Memo]=i;var u=Object.defineProperty,c=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,p=Object.getOwnPropertyDescriptor,f=Object.getPrototypeOf,m=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(m){var a=f(n);a&&a!==m&&e(t,a,r)}var i=c(n);d&&(i=i.concat(d(n)));for(var l=s(t),g=s(n),h=0;h{"use strict";e.exports=function(e,t,n,r,a,o,i,l){if(!e){var s;if(void 0===t)s=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var u=[n,r,a,o,i,l],c=0;(s=new Error(t.replace(/%s/g,(function(){return u[c++]})))).name="Invariant Violation"}throw s.framesToPop=1,s}}},64634:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},89888:(e,t,n)=>{"use strict";n.r(t)},10119:(e,t,n)=>{"use strict";n.r(t)},5947:function(e,t,n){var r,a;r=function(){var e,t,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'
'};function a(e,t,n){return en?n:e}function o(e){return 100*(-1+e)}function i(e,t,n){var a;return(a="translate3d"===r.positionUsing?{transform:"translate3d("+o(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+o(e)+"%,0)"}:{"margin-left":o(e)+"%"}).transition="all "+t+"ms "+n,a}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=a(e,r.minimum,1),n.status=1===e?null:e;var o=n.render(!t),u=o.querySelector(r.barSelector),c=r.speed,d=r.easing;return o.offsetWidth,l((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(u,i(e,c,d)),1===e?(s(o,{transition:"none",opacity:1}),o.offsetWidth,setTimeout((function(){s(o,{transition:"all "+c+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),c)}),c)):setTimeout(t,c)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*a(Math.random()*t,.1,.95)),t=a(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");c(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var a,i=t.querySelector(r.barSelector),l=e?"-100":o(n.status||0),u=document.querySelector(r.parent);return s(i,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),r.showSpinner||(a=t.querySelector(r.spinnerSelector))&&f(a),u!=document.body&&c(u,"nprogress-custom-parent"),u.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&f(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var l=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),s=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()}))}function r(t){var n=document.body.style;if(t in n)return t;for(var r,a=e.length,o=t.charAt(0).toUpperCase()+t.slice(1);a--;)if((r=e[a]+o)in n)return r;return t}function a(e){return e=n(e),t[e]||(t[e]=r(e))}function o(e,t,n){t=a(t),e.style[t]=n}return function(e,t){var n,r,a=arguments;if(2==a.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&o(e,n,r);else o(e,a[1],a[2])}}();function u(e,t){return("string"==typeof e?e:p(e)).indexOf(" "+t+" ")>=0}function c(e,t){var n=p(e),r=n+t;u(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=p(e);u(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function p(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function f(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(a="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=a)},6969:e=>{e.exports&&(e.exports={core:{meta:{path:"components/prism-core.js",option:"mandatory"},core:"Core"},themes:{meta:{path:"themes/{id}.css",link:"index.html?theme={id}",exclusive:!0},prism:{title:"Default",option:"default"},"prism-dark":"Dark","prism-funky":"Funky","prism-okaidia":{title:"Okaidia",owner:"ocodia"},"prism-twilight":{title:"Twilight",owner:"remybach"},"prism-coy":{title:"Coy",owner:"tshedor"},"prism-solarizedlight":{title:"Solarized Light",owner:"hectormatos2011 "},"prism-tomorrow":{title:"Tomorrow Night",owner:"Rosey"}},languages:{meta:{path:"components/prism-{id}",noCSS:!0,examplesPath:"examples/prism-{id}",addCheckAll:!0},markup:{title:"Markup",alias:["html","xml","svg","mathml","ssml","atom","rss"],aliasTitles:{html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",ssml:"SSML",atom:"Atom",rss:"RSS"},option:"default"},css:{title:"CSS",option:"default",modify:"markup"},clike:{title:"C-like",option:"default"},javascript:{title:"JavaScript",require:"clike",modify:"markup",optional:"regex",alias:"js",option:"default"},abap:{title:"ABAP",owner:"dellagustin"},abnf:{title:"ABNF",owner:"RunDevelopment"},actionscript:{title:"ActionScript",require:"javascript",modify:"markup",owner:"Golmote"},ada:{title:"Ada",owner:"Lucretia"},agda:{title:"Agda",owner:"xy-ren"},al:{title:"AL",owner:"RunDevelopment"},antlr4:{title:"ANTLR4",alias:"g4",owner:"RunDevelopment"},apacheconf:{title:"Apache Configuration",owner:"GuiTeK"},apex:{title:"Apex",require:["clike","sql"],owner:"RunDevelopment"},apl:{title:"APL",owner:"ngn"},applescript:{title:"AppleScript",owner:"Golmote"},aql:{title:"AQL",owner:"RunDevelopment"},arduino:{title:"Arduino",require:"cpp",alias:"ino",owner:"dkern"},arff:{title:"ARFF",owner:"Golmote"},armasm:{title:"ARM Assembly",alias:"arm-asm",owner:"RunDevelopment"},arturo:{title:"Arturo",alias:"art",optional:["bash","css","javascript","markup","markdown","sql"],owner:"drkameleon"},asciidoc:{alias:"adoc",title:"AsciiDoc",owner:"Golmote"},aspnet:{title:"ASP.NET (C#)",require:["markup","csharp"],owner:"nauzilus"},asm6502:{title:"6502 Assembly",owner:"kzurawel"},asmatmel:{title:"Atmel AVR Assembly",owner:"cerkit"},autohotkey:{title:"AutoHotkey",owner:"aviaryan"},autoit:{title:"AutoIt",owner:"Golmote"},avisynth:{title:"AviSynth",alias:"avs",owner:"Zinfidel"},"avro-idl":{title:"Avro IDL",alias:"avdl",owner:"RunDevelopment"},awk:{title:"AWK",alias:"gawk",aliasTitles:{gawk:"GAWK"},owner:"RunDevelopment"},bash:{title:"Bash",alias:["sh","shell"],aliasTitles:{sh:"Shell",shell:"Shell"},owner:"zeitgeist87"},basic:{title:"BASIC",owner:"Golmote"},batch:{title:"Batch",owner:"Golmote"},bbcode:{title:"BBcode",alias:"shortcode",aliasTitles:{shortcode:"Shortcode"},owner:"RunDevelopment"},bbj:{title:"BBj",owner:"hyyan"},bicep:{title:"Bicep",owner:"johnnyreilly"},birb:{title:"Birb",require:"clike",owner:"Calamity210"},bison:{title:"Bison",require:"c",owner:"Golmote"},bnf:{title:"BNF",alias:"rbnf",aliasTitles:{rbnf:"RBNF"},owner:"RunDevelopment"},bqn:{title:"BQN",owner:"yewscion"},brainfuck:{title:"Brainfuck",owner:"Golmote"},brightscript:{title:"BrightScript",owner:"RunDevelopment"},bro:{title:"Bro",owner:"wayward710"},bsl:{title:"BSL (1C:Enterprise)",alias:"oscript",aliasTitles:{oscript:"OneScript"},owner:"Diversus23"},c:{title:"C",require:"clike",owner:"zeitgeist87"},csharp:{title:"C#",require:"clike",alias:["cs","dotnet"],owner:"mvalipour"},cpp:{title:"C++",require:"c",owner:"zeitgeist87"},cfscript:{title:"CFScript",require:"clike",alias:"cfc",owner:"mjclemente"},chaiscript:{title:"ChaiScript",require:["clike","cpp"],owner:"RunDevelopment"},cil:{title:"CIL",owner:"sbrl"},cilkc:{title:"Cilk/C",require:"c",alias:"cilk-c",owner:"OpenCilk"},cilkcpp:{title:"Cilk/C++",require:"cpp",alias:["cilk-cpp","cilk"],owner:"OpenCilk"},clojure:{title:"Clojure",owner:"troglotit"},cmake:{title:"CMake",owner:"mjrogozinski"},cobol:{title:"COBOL",owner:"RunDevelopment"},coffeescript:{title:"CoffeeScript",require:"javascript",alias:"coffee",owner:"R-osey"},concurnas:{title:"Concurnas",alias:"conc",owner:"jasontatton"},csp:{title:"Content-Security-Policy",owner:"ScottHelme"},cooklang:{title:"Cooklang",owner:"ahue"},coq:{title:"Coq",owner:"RunDevelopment"},crystal:{title:"Crystal",require:"ruby",owner:"MakeNowJust"},"css-extras":{title:"CSS Extras",require:"css",modify:"css",owner:"milesj"},csv:{title:"CSV",owner:"RunDevelopment"},cue:{title:"CUE",owner:"RunDevelopment"},cypher:{title:"Cypher",owner:"RunDevelopment"},d:{title:"D",require:"clike",owner:"Golmote"},dart:{title:"Dart",require:"clike",owner:"Golmote"},dataweave:{title:"DataWeave",owner:"machaval"},dax:{title:"DAX",owner:"peterbud"},dhall:{title:"Dhall",owner:"RunDevelopment"},diff:{title:"Diff",owner:"uranusjr"},django:{title:"Django/Jinja2",require:"markup-templating",alias:"jinja2",owner:"romanvm"},"dns-zone-file":{title:"DNS zone file",owner:"RunDevelopment",alias:"dns-zone"},docker:{title:"Docker",alias:"dockerfile",owner:"JustinBeckwith"},dot:{title:"DOT (Graphviz)",alias:"gv",optional:"markup",owner:"RunDevelopment"},ebnf:{title:"EBNF",owner:"RunDevelopment"},editorconfig:{title:"EditorConfig",owner:"osipxd"},eiffel:{title:"Eiffel",owner:"Conaclos"},ejs:{title:"EJS",require:["javascript","markup-templating"],owner:"RunDevelopment",alias:"eta",aliasTitles:{eta:"Eta"}},elixir:{title:"Elixir",owner:"Golmote"},elm:{title:"Elm",owner:"zwilias"},etlua:{title:"Embedded Lua templating",require:["lua","markup-templating"],owner:"RunDevelopment"},erb:{title:"ERB",require:["ruby","markup-templating"],owner:"Golmote"},erlang:{title:"Erlang",owner:"Golmote"},"excel-formula":{title:"Excel Formula",alias:["xlsx","xls"],owner:"RunDevelopment"},fsharp:{title:"F#",require:"clike",owner:"simonreynolds7"},factor:{title:"Factor",owner:"catb0t"},false:{title:"False",owner:"edukisto"},"firestore-security-rules":{title:"Firestore security rules",require:"clike",owner:"RunDevelopment"},flow:{title:"Flow",require:"javascript",owner:"Golmote"},fortran:{title:"Fortran",owner:"Golmote"},ftl:{title:"FreeMarker Template Language",require:"markup-templating",owner:"RunDevelopment"},gml:{title:"GameMaker Language",alias:"gamemakerlanguage",require:"clike",owner:"LiarOnce"},gap:{title:"GAP (CAS)",owner:"RunDevelopment"},gcode:{title:"G-code",owner:"RunDevelopment"},gdscript:{title:"GDScript",owner:"RunDevelopment"},gedcom:{title:"GEDCOM",owner:"Golmote"},gettext:{title:"gettext",alias:"po",owner:"RunDevelopment"},gherkin:{title:"Gherkin",owner:"hason"},git:{title:"Git",owner:"lgiraudel"},glsl:{title:"GLSL",require:"c",owner:"Golmote"},gn:{title:"GN",alias:"gni",owner:"RunDevelopment"},"linker-script":{title:"GNU Linker Script",alias:"ld",owner:"RunDevelopment"},go:{title:"Go",require:"clike",owner:"arnehormann"},"go-module":{title:"Go module",alias:"go-mod",owner:"RunDevelopment"},gradle:{title:"Gradle",require:"clike",owner:"zeabdelkhalek-badido18"},graphql:{title:"GraphQL",optional:"markdown",owner:"Golmote"},groovy:{title:"Groovy",require:"clike",owner:"robfletcher"},haml:{title:"Haml",require:"ruby",optional:["css","css-extras","coffeescript","erb","javascript","less","markdown","scss","textile"],owner:"Golmote"},handlebars:{title:"Handlebars",require:"markup-templating",alias:["hbs","mustache"],aliasTitles:{mustache:"Mustache"},owner:"Golmote"},haskell:{title:"Haskell",alias:"hs",owner:"bholst"},haxe:{title:"Haxe",require:"clike",optional:"regex",owner:"Golmote"},hcl:{title:"HCL",owner:"outsideris"},hlsl:{title:"HLSL",require:"c",owner:"RunDevelopment"},hoon:{title:"Hoon",owner:"matildepark"},http:{title:"HTTP",optional:["csp","css","hpkp","hsts","javascript","json","markup","uri"],owner:"danielgtaylor"},hpkp:{title:"HTTP Public-Key-Pins",owner:"ScottHelme"},hsts:{title:"HTTP Strict-Transport-Security",owner:"ScottHelme"},ichigojam:{title:"IchigoJam",owner:"BlueCocoa"},icon:{title:"Icon",owner:"Golmote"},"icu-message-format":{title:"ICU Message Format",owner:"RunDevelopment"},idris:{title:"Idris",alias:"idr",owner:"KeenS",require:"haskell"},ignore:{title:".ignore",owner:"osipxd",alias:["gitignore","hgignore","npmignore"],aliasTitles:{gitignore:".gitignore",hgignore:".hgignore",npmignore:".npmignore"}},inform7:{title:"Inform 7",owner:"Golmote"},ini:{title:"Ini",owner:"aviaryan"},io:{title:"Io",owner:"AlesTsurko"},j:{title:"J",owner:"Golmote"},java:{title:"Java",require:"clike",owner:"sherblot"},javadoc:{title:"JavaDoc",require:["markup","java","javadoclike"],modify:"java",optional:"scala",owner:"RunDevelopment"},javadoclike:{title:"JavaDoc-like",modify:["java","javascript","php"],owner:"RunDevelopment"},javastacktrace:{title:"Java stack trace",owner:"RunDevelopment"},jexl:{title:"Jexl",owner:"czosel"},jolie:{title:"Jolie",require:"clike",owner:"thesave"},jq:{title:"JQ",owner:"RunDevelopment"},jsdoc:{title:"JSDoc",require:["javascript","javadoclike","typescript"],modify:"javascript",optional:["actionscript","coffeescript"],owner:"RunDevelopment"},"js-extras":{title:"JS Extras",require:"javascript",modify:"javascript",optional:["actionscript","coffeescript","flow","n4js","typescript"],owner:"RunDevelopment"},json:{title:"JSON",alias:"webmanifest",aliasTitles:{webmanifest:"Web App Manifest"},owner:"CupOfTea696"},json5:{title:"JSON5",require:"json",owner:"RunDevelopment"},jsonp:{title:"JSONP",require:"json",owner:"RunDevelopment"},jsstacktrace:{title:"JS stack trace",owner:"sbrl"},"js-templates":{title:"JS Templates",require:"javascript",modify:"javascript",optional:["css","css-extras","graphql","markdown","markup","sql"],owner:"RunDevelopment"},julia:{title:"Julia",owner:"cdagnino"},keepalived:{title:"Keepalived Configure",owner:"dev-itsheng"},keyman:{title:"Keyman",owner:"mcdurdin"},kotlin:{title:"Kotlin",alias:["kt","kts"],aliasTitles:{kts:"Kotlin Script"},require:"clike",owner:"Golmote"},kumir:{title:"KuMir (\u041a\u0443\u041c\u0438\u0440)",alias:"kum",owner:"edukisto"},kusto:{title:"Kusto",owner:"RunDevelopment"},latex:{title:"LaTeX",alias:["tex","context"],aliasTitles:{tex:"TeX",context:"ConTeXt"},owner:"japborst"},latte:{title:"Latte",require:["clike","markup-templating","php"],owner:"nette"},less:{title:"Less",require:"css",optional:"css-extras",owner:"Golmote"},lilypond:{title:"LilyPond",require:"scheme",alias:"ly",owner:"RunDevelopment"},liquid:{title:"Liquid",require:"markup-templating",owner:"cinhtau"},lisp:{title:"Lisp",alias:["emacs","elisp","emacs-lisp"],owner:"JuanCaicedo"},livescript:{title:"LiveScript",owner:"Golmote"},llvm:{title:"LLVM IR",owner:"porglezomp"},log:{title:"Log file",optional:"javastacktrace",owner:"RunDevelopment"},lolcode:{title:"LOLCODE",owner:"Golmote"},lua:{title:"Lua",owner:"Golmote"},magma:{title:"Magma (CAS)",owner:"RunDevelopment"},makefile:{title:"Makefile",owner:"Golmote"},markdown:{title:"Markdown",require:"markup",optional:"yaml",alias:"md",owner:"Golmote"},"markup-templating":{title:"Markup templating",require:"markup",owner:"Golmote"},mata:{title:"Mata",owner:"RunDevelopment"},matlab:{title:"MATLAB",owner:"Golmote"},maxscript:{title:"MAXScript",owner:"RunDevelopment"},mel:{title:"MEL",owner:"Golmote"},mermaid:{title:"Mermaid",owner:"RunDevelopment"},metafont:{title:"METAFONT",owner:"LaeriExNihilo"},mizar:{title:"Mizar",owner:"Golmote"},mongodb:{title:"MongoDB",owner:"airs0urce",require:"javascript"},monkey:{title:"Monkey",owner:"Golmote"},moonscript:{title:"MoonScript",alias:"moon",owner:"RunDevelopment"},n1ql:{title:"N1QL",owner:"TMWilds"},n4js:{title:"N4JS",require:"javascript",optional:"jsdoc",alias:"n4jsd",owner:"bsmith-n4"},"nand2tetris-hdl":{title:"Nand To Tetris HDL",owner:"stephanmax"},naniscript:{title:"Naninovel Script",owner:"Elringus",alias:"nani"},nasm:{title:"NASM",owner:"rbmj"},neon:{title:"NEON",owner:"nette"},nevod:{title:"Nevod",owner:"nezaboodka"},nginx:{title:"nginx",owner:"volado"},nim:{title:"Nim",owner:"Golmote"},nix:{title:"Nix",owner:"Golmote"},nsis:{title:"NSIS",owner:"idleberg"},objectivec:{title:"Objective-C",require:"c",alias:"objc",owner:"uranusjr"},ocaml:{title:"OCaml",owner:"Golmote"},odin:{title:"Odin",owner:"edukisto"},opencl:{title:"OpenCL",require:"c",modify:["c","cpp"],owner:"Milania1"},openqasm:{title:"OpenQasm",alias:"qasm",owner:"RunDevelopment"},oz:{title:"Oz",owner:"Golmote"},parigp:{title:"PARI/GP",owner:"Golmote"},parser:{title:"Parser",require:"markup",owner:"Golmote"},pascal:{title:"Pascal",alias:"objectpascal",aliasTitles:{objectpascal:"Object Pascal"},owner:"Golmote"},pascaligo:{title:"Pascaligo",owner:"DefinitelyNotAGoat"},psl:{title:"PATROL Scripting Language",owner:"bertysentry"},pcaxis:{title:"PC-Axis",alias:"px",owner:"RunDevelopment"},peoplecode:{title:"PeopleCode",alias:"pcode",owner:"RunDevelopment"},perl:{title:"Perl",owner:"Golmote"},php:{title:"PHP",require:"markup-templating",owner:"milesj"},phpdoc:{title:"PHPDoc",require:["php","javadoclike"],modify:"php",owner:"RunDevelopment"},"php-extras":{title:"PHP Extras",require:"php",modify:"php",owner:"milesj"},"plant-uml":{title:"PlantUML",alias:"plantuml",owner:"RunDevelopment"},plsql:{title:"PL/SQL",require:"sql",owner:"Golmote"},powerquery:{title:"PowerQuery",alias:["pq","mscript"],owner:"peterbud"},powershell:{title:"PowerShell",owner:"nauzilus"},processing:{title:"Processing",require:"clike",owner:"Golmote"},prolog:{title:"Prolog",owner:"Golmote"},promql:{title:"PromQL",owner:"arendjr"},properties:{title:".properties",owner:"Golmote"},protobuf:{title:"Protocol Buffers",require:"clike",owner:"just-boris"},pug:{title:"Pug",require:["markup","javascript"],optional:["coffeescript","ejs","handlebars","less","livescript","markdown","scss","stylus","twig"],owner:"Golmote"},puppet:{title:"Puppet",owner:"Golmote"},pure:{title:"Pure",optional:["c","cpp","fortran"],owner:"Golmote"},purebasic:{title:"PureBasic",require:"clike",alias:"pbfasm",owner:"HeX0R101"},purescript:{title:"PureScript",require:"haskell",alias:"purs",owner:"sriharshachilakapati"},python:{title:"Python",alias:"py",owner:"multipetros"},qsharp:{title:"Q#",require:"clike",alias:"qs",owner:"fedonman"},q:{title:"Q (kdb+ database)",owner:"Golmote"},qml:{title:"QML",require:"javascript",owner:"RunDevelopment"},qore:{title:"Qore",require:"clike",owner:"temnroegg"},r:{title:"R",owner:"Golmote"},racket:{title:"Racket",require:"scheme",alias:"rkt",owner:"RunDevelopment"},cshtml:{title:"Razor C#",alias:"razor",require:["markup","csharp"],optional:["css","css-extras","javascript","js-extras"],owner:"RunDevelopment"},jsx:{title:"React JSX",require:["markup","javascript"],optional:["jsdoc","js-extras","js-templates"],owner:"vkbansal"},tsx:{title:"React TSX",require:["jsx","typescript"]},reason:{title:"Reason",require:"clike",owner:"Golmote"},regex:{title:"Regex",owner:"RunDevelopment"},rego:{title:"Rego",owner:"JordanSh"},renpy:{title:"Ren'py",alias:"rpy",owner:"HyuchiaDiego"},rescript:{title:"ReScript",alias:"res",owner:"vmarcosp"},rest:{title:"reST (reStructuredText)",owner:"Golmote"},rip:{title:"Rip",owner:"ravinggenius"},roboconf:{title:"Roboconf",owner:"Golmote"},robotframework:{title:"Robot Framework",alias:"robot",owner:"RunDevelopment"},ruby:{title:"Ruby",require:"clike",alias:"rb",owner:"samflores"},rust:{title:"Rust",owner:"Golmote"},sas:{title:"SAS",optional:["groovy","lua","sql"],owner:"Golmote"},sass:{title:"Sass (Sass)",require:"css",optional:"css-extras",owner:"Golmote"},scss:{title:"Sass (SCSS)",require:"css",optional:"css-extras",owner:"MoOx"},scala:{title:"Scala",require:"java",owner:"jozic"},scheme:{title:"Scheme",owner:"bacchus123"},"shell-session":{title:"Shell session",require:"bash",alias:["sh-session","shellsession"],owner:"RunDevelopment"},smali:{title:"Smali",owner:"RunDevelopment"},smalltalk:{title:"Smalltalk",owner:"Golmote"},smarty:{title:"Smarty",require:"markup-templating",optional:"php",owner:"Golmote"},sml:{title:"SML",alias:"smlnj",aliasTitles:{smlnj:"SML/NJ"},owner:"RunDevelopment"},solidity:{title:"Solidity (Ethereum)",alias:"sol",require:"clike",owner:"glachaud"},"solution-file":{title:"Solution file",alias:"sln",owner:"RunDevelopment"},soy:{title:"Soy (Closure Template)",require:"markup-templating",owner:"Golmote"},sparql:{title:"SPARQL",require:"turtle",owner:"Triply-Dev",alias:"rq"},"splunk-spl":{title:"Splunk SPL",owner:"RunDevelopment"},sqf:{title:"SQF: Status Quo Function (Arma 3)",require:"clike",owner:"RunDevelopment"},sql:{title:"SQL",owner:"multipetros"},squirrel:{title:"Squirrel",require:"clike",owner:"RunDevelopment"},stan:{title:"Stan",owner:"RunDevelopment"},stata:{title:"Stata Ado",require:["mata","java","python"],owner:"RunDevelopment"},iecst:{title:"Structured Text (IEC 61131-3)",owner:"serhioromano"},stylus:{title:"Stylus",owner:"vkbansal"},supercollider:{title:"SuperCollider",alias:"sclang",owner:"RunDevelopment"},swift:{title:"Swift",owner:"chrischares"},systemd:{title:"Systemd configuration file",owner:"RunDevelopment"},"t4-templating":{title:"T4 templating",owner:"RunDevelopment"},"t4-cs":{title:"T4 Text Templates (C#)",require:["t4-templating","csharp"],alias:"t4",owner:"RunDevelopment"},"t4-vb":{title:"T4 Text Templates (VB)",require:["t4-templating","vbnet"],owner:"RunDevelopment"},tap:{title:"TAP",owner:"isaacs",require:"yaml"},tcl:{title:"Tcl",owner:"PeterChaplin"},tt2:{title:"Template Toolkit 2",require:["clike","markup-templating"],owner:"gflohr"},textile:{title:"Textile",require:"markup",optional:"css",owner:"Golmote"},toml:{title:"TOML",owner:"RunDevelopment"},tremor:{title:"Tremor",alias:["trickle","troy"],owner:"darach",aliasTitles:{trickle:"trickle",troy:"troy"}},turtle:{title:"Turtle",alias:"trig",aliasTitles:{trig:"TriG"},owner:"jakubklimek"},twig:{title:"Twig",require:"markup-templating",owner:"brandonkelly"},typescript:{title:"TypeScript",require:"javascript",optional:"js-templates",alias:"ts",owner:"vkbansal"},typoscript:{title:"TypoScript",alias:"tsconfig",aliasTitles:{tsconfig:"TSConfig"},owner:"dkern"},unrealscript:{title:"UnrealScript",alias:["uscript","uc"],owner:"RunDevelopment"},uorazor:{title:"UO Razor Script",owner:"jaseowns"},uri:{title:"URI",alias:"url",aliasTitles:{url:"URL"},owner:"RunDevelopment"},v:{title:"V",require:"clike",owner:"taggon"},vala:{title:"Vala",require:"clike",optional:"regex",owner:"TemplarVolk"},vbnet:{title:"VB.Net",require:"basic",owner:"Bigsby"},velocity:{title:"Velocity",require:"markup",owner:"Golmote"},verilog:{title:"Verilog",owner:"a-rey"},vhdl:{title:"VHDL",owner:"a-rey"},vim:{title:"vim",owner:"westonganger"},"visual-basic":{title:"Visual Basic",alias:["vb","vba"],aliasTitles:{vba:"VBA"},owner:"Golmote"},warpscript:{title:"WarpScript",owner:"RunDevelopment"},wasm:{title:"WebAssembly",owner:"Golmote"},"web-idl":{title:"Web IDL",alias:"webidl",owner:"RunDevelopment"},wgsl:{title:"WGSL",owner:"Dr4gonthree"},wiki:{title:"Wiki markup",require:"markup",owner:"Golmote"},wolfram:{title:"Wolfram language",alias:["mathematica","nb","wl"],aliasTitles:{mathematica:"Mathematica",nb:"Mathematica Notebook"},owner:"msollami"},wren:{title:"Wren",owner:"clsource"},xeora:{title:"Xeora",require:"markup",alias:"xeoracube",aliasTitles:{xeoracube:"XeoraCube"},owner:"freakmaxi"},"xml-doc":{title:"XML doc (.net)",require:"markup",modify:["csharp","fsharp","vbnet"],owner:"RunDevelopment"},xojo:{title:"Xojo (REALbasic)",owner:"Golmote"},xquery:{title:"XQuery",require:"markup",owner:"Golmote"},yaml:{title:"YAML",alias:"yml",owner:"hason"},yang:{title:"YANG",owner:"RunDevelopment"},zig:{title:"Zig",owner:"RunDevelopment"}},plugins:{meta:{path:"plugins/{id}/prism-{id}",link:"plugins/{id}/"},"line-highlight":{title:"Line Highlight",description:"Highlights specific lines and/or line ranges."},"line-numbers":{title:"Line Numbers",description:"Line number at the beginning of code lines.",owner:"kuba-kubula"},"show-invisibles":{title:"Show Invisibles",description:"Show hidden characters such as tabs and line breaks.",optional:["autolinker","data-uri-highlight"]},autolinker:{title:"Autolinker",description:"Converts URLs and emails in code to clickable links. Parses Markdown links in comments."},wpd:{title:"WebPlatform Docs",description:'Makes tokens link to WebPlatform.org documentation. The links open in a new tab.'},"custom-class":{title:"Custom Class",description:"This plugin allows you to prefix Prism's default classes (.comment can become .namespace--comment) or replace them with your defined ones (like .editor__comment). You can even add new classes.",owner:"dvkndn",noCSS:!0},"file-highlight":{title:"File Highlight",description:"Fetch external files and highlight them with Prism. Used on the Prism website itself.",noCSS:!0},"show-language":{title:"Show Language",description:"Display the highlighted language in code blocks (inline code does not show the label).",owner:"nauzilus",noCSS:!0,require:"toolbar"},"jsonp-highlight":{title:"JSONP Highlight",description:"Fetch content with JSONP and highlight some interesting content (e.g. GitHub/Gists or Bitbucket API).",noCSS:!0,owner:"nauzilus"},"highlight-keywords":{title:"Highlight Keywords",description:"Adds special CSS classes for each keyword for fine-grained highlighting.",owner:"vkbansal",noCSS:!0},"remove-initial-line-feed":{title:"Remove initial line feed",description:"Removes the initial line feed in code blocks.",owner:"Golmote",noCSS:!0},"inline-color":{title:"Inline color",description:"Adds a small inline preview for colors in style sheets.",require:"css-extras",owner:"RunDevelopment"},previewers:{title:"Previewers",description:"Previewers for angles, colors, gradients, easing and time.",require:"css-extras",owner:"Golmote"},autoloader:{title:"Autoloader",description:"Automatically loads the needed languages to highlight the code blocks.",owner:"Golmote",noCSS:!0},"keep-markup":{title:"Keep Markup",description:"Prevents custom markup from being dropped out during highlighting.",owner:"Golmote",optional:"normalize-whitespace",noCSS:!0},"command-line":{title:"Command Line",description:"Display a command line with a prompt and, optionally, the output/response from the commands.",owner:"chriswells0"},"unescaped-markup":{title:"Unescaped Markup",description:"Write markup without having to escape anything."},"normalize-whitespace":{title:"Normalize Whitespace",description:"Supports multiple operations to normalize whitespace in code blocks.",owner:"zeitgeist87",optional:"unescaped-markup",noCSS:!0},"data-uri-highlight":{title:"Data-URI Highlight",description:"Highlights data-URI contents.",owner:"Golmote",noCSS:!0},toolbar:{title:"Toolbar",description:"Attach a toolbar for plugins to easily register buttons on the top of a code block.",owner:"mAAdhaTTah"},"copy-to-clipboard":{title:"Copy to Clipboard Button",description:"Add a button that copies the code block to the clipboard when clicked.",owner:"mAAdhaTTah",require:"toolbar",noCSS:!0},"download-button":{title:"Download Button",description:"A button in the toolbar of a code block adding a convenient way to download a code file.",owner:"Golmote",require:"toolbar",noCSS:!0},"match-braces":{title:"Match braces",description:"Highlights matching braces.",owner:"RunDevelopment"},"diff-highlight":{title:"Diff Highlight",description:"Highlights the code inside diff blocks.",owner:"RunDevelopment",require:"diff"},"filter-highlight-all":{title:"Filter highlightAll",description:"Filters the elements the highlightAll and highlightAllUnder methods actually highlight.",owner:"RunDevelopment",noCSS:!0},treeview:{title:"Treeview",description:"A language with special styles to highlight file system tree structures.",owner:"Golmote"}}})},8722:(e,t,n)=>{const r=n(6969),a=n(98380),o=new Set;function i(e){void 0===e?e=Object.keys(r.languages).filter((e=>"meta"!=e)):Array.isArray(e)||(e=[e]);const t=[...o,...Object.keys(Prism.languages)];a(r,e,t).load((e=>{if(!(e in r.languages))return void(i.silent||console.warn("Language does not exist: "+e));const t="./prism-"+e;delete n.c[n(63157).resolve(t)],delete Prism.languages[e],n(63157)(t),o.add(e)}))}i.silent=!1,e.exports=i},19700:()=>{!function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,a,o){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(a,(function(e){if("function"==typeof o&&!o(e))return e;for(var a,l=i.length;-1!==n.code.indexOf(a=t(r,l));)++l;return i[l]=e,a})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var a=0,o=Object.keys(n.tokenStack);!function i(l){for(var s=0;s=o.length);s++){var u=l[s];if("string"==typeof u||u.content&&"string"==typeof u.content){var c=o[a],d=n.tokenStack[c],p="string"==typeof u?u:u.content,f=t(r,c),m=p.indexOf(f);if(m>-1){++a;var g=p.substring(0,m),h=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),y=p.substring(m+f.length),b=[];g&&b.push.apply(b,i([g])),b.push(h),y&&b.push.apply(b,i([y])),"string"==typeof u?l.splice.apply(l,[s,1].concat(b)):u.content=b}}else u.content&&i(u.content)}return l}(n.tokens)}}}})}(Prism)},18692:(e,t,n)=>{var r={"./":8722};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=18692},63157:(e,t,n)=>{var r={"./":8722};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=63157},98380:e=>{"use strict";var t=function(){var e=function(){};function t(e,t){Array.isArray(e)?e.forEach(t):null!=e&&t(e,0)}function n(e){for(var t={},n=0,r=e.length;n "));var l={},s=e[r];if(s){function u(t){if(!(t in e))throw new Error(r+" depends on an unknown component "+t);if(!(t in l))for(var i in a(t,o),l[t]=!0,n[t])l[i]=!0}t(s.require,u),t(s.optional,u),t(s.modify,u)}n[r]=l,o.pop()}}return function(e){var t=n[e];return t||(a(e,r),t=n[e]),t}}function a(e){for(var t in e)return!0;return!1}return function(o,i,l){var s=function(e){var t={};for(var n in e){var r=e[n];for(var a in r)if("meta"!=a){var o=r[a];t[a]="string"==typeof o?{title:o}:o}}return t}(o),u=function(e){var n;return function(r){if(r in e)return r;if(!n)for(var a in n={},e){var o=e[a];t(o&&o.alias,(function(t){if(t in n)throw new Error(t+" cannot be alias for both "+a+" and "+n[t]);if(t in e)throw new Error(t+" cannot be alias of "+a+" because it is a component.");n[t]=a}))}return n[r]||r}}(s);i=i.map(u),l=(l||[]).map(u);var c=n(i),d=n(l);i.forEach((function e(n){var r=s[n];t(r&&r.require,(function(t){t in d||(c[t]=!0,e(t))}))}));for(var p,f=r(s),m=c;a(m);){for(var g in p={},m){var h=s[g];t(h&&h.modify,(function(e){e in d&&(p[e]=!0)}))}for(var y in d)if(!(y in c))for(var b in f(y))if(b in c){p[y]=!0;break}for(var v in m=p)c[v]=!0}var w={getIds:function(){var e=[];return w.load((function(t){e.push(t)})),e},load:function(t,n){return function(t,n,r,a){var o=a?a.series:void 0,i=a?a.parallel:e,l={},s={};function u(e){if(e in l)return l[e];s[e]=!0;var a,c=[];for(var d in t(e))d in n&&c.push(d);if(0===c.length)a=r(e);else{var p=i(c.map((function(e){var t=u(e);return delete s[e],t})));o?a=o(p,(function(){return r(e)})):r(e)}return l[e]=a}for(var c in n)u(c);var d=[];for(var p in s)d.push(l[p]);return i(d)}(f,c,t,n)}};return w}}();e.exports=t},2694:(e,t,n)=>{"use strict";var r=n(6925);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,o,i){if(i!==r){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:a};return n.PropTypes=n,n}},5556:(e,t,n)=>{e.exports=n(2694)()},6925:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},22551:(e,t,n)=>{"use strict";var r=n(96540),a=n(69982);function o(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n